@charset "UTF-8";
/**
 *  Do not remove the comments below. It's the markers used by wiredep to inject
 *  sass dependencies when defined in the bower.json of your dependencies
 */
@import url("https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic");
@import url("https://fonts.googleapis.com/icon?family=Material+Icons");
body {
  background-color: #fafafa !important; }

html body, input, button, h1, h2, h3, h4, h5, h6, textarea {
  font-family: 'PT Sans', sans-serif !important; }

.success-message-sent p {
  color: #999;
  text-align: center; }

.success-message-sent h3 {
  color: #777;
  text-align: center; }

.notification-fsense {
  position: fixed;
  height: auto;
  padding: 4px 16px;
  box-sizing: border-box;
  min-width: 450px;
  text-align: center;
  left: 50%;
  line-height: 30px;
  font-size: 14px;
  font-weight: 400;
  border-radius: 0 0 4px 4px;
  top: 0;
  box-shadow: 0 0 3px grey;
  animation-name: notification-enter;
  animation-timing-function: ease-out;
  animation-duration: 0.3s;
  animation-iteration-count: 1; }

.notification-leave {
  top: -40px;
  animation-name: notification-leave;
  animation-timing-function: ease-out;
  animation-duration: 0.3s;
  animation-iteration-count: 1; }

.notification-default {
  background-color: grey; }

.notification-primary {
  background-color: grey; }

.notification-success {
  background-color: #58ce58;
  color: white; }

.notification-warning {
  background-color: grey; }

.notification-error {
  color: white;
  background-color: #dc6464; }

@keyframes notification-enter {
  from {
    top: -30px; }
  to {
    top: 0; } }

@keyframes notification-leave {
  from {
    top: 0px; }
  to {
    top: -40px; } }

/* Rules for sizing the icon. */
.material-icons.md-18 {
  font-size: 18px; }

.material-icons.md-24 {
  font-size: 24px; }

.material-icons.md-36 {
  font-size: 36px; }

.material-icons.md-48 {
  font-size: 48px; }

/* Rules for using icons as black on a light background. */
.material-icons.md-dark {
  color: rgba(0, 0, 0, 0.54); }

.material-icons.md-dark.md-inactive {
  color: rgba(0, 0, 0, 0.26); }

/* Rules for using icons as white on a dark background. */
.material-icons.md-light {
  color: white; }

.material-icons.md-light.md-inactive {
  color: rgba(255, 255, 255, 0.3); }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Material Design Lite */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/*
 * What follows is the result of much research on cross-browser styling.
 * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
 * Kroc Camen, and the H5BP dev community and team.
 */
/* ==========================================================================
   Base styles: opinionated defaults
   ========================================================================== */
html {
  color: rgba(0,0,0, 0.87);
  font-size: 1em;
  line-height: 1.4; }

/*
 * Remove text-shadow in selection highlight:
 * https://twitter.com/miketaylr/status/12228805301
 *
 * These selection rule sets have to be separate.
 * Customize the background color to match your design.
 */
::-moz-selection {
  background: #b3d4fc;
  text-shadow: none; }
::selection {
  background: #b3d4fc;
  text-shadow: none; }

/*
 * A better looking default horizontal rule
 */
hr {
  display: block;
  height: 1px;
  border: 0;
  border-top: 1px solid #ccc;
  margin: 1em 0;
  padding: 0; }

/*
 * Remove the gap between audio, canvas, iframes,
 * images, videos and the bottom of their containers:
 * https://github.com/h5bp/html5-boilerplate/issues/440
 */
audio,
canvas,
iframe,
img,
svg,
video {
  vertical-align: middle; }

/*
 * Remove default fieldset styles.
 */
fieldset {
  border: 0;
  margin: 0;
  padding: 0; }

/*
 * Allow only vertical resizing of textareas.
 */
textarea {
  resize: vertical; }

/* ==========================================================================
   Browser Upgrade Prompt
   ========================================================================== */
.browserupgrade {
  margin: 0.2em 0;
  background: #ccc;
  color: #000;
  padding: 0.2em 0; }

/* ==========================================================================
   Author's custom styles
   ========================================================================== */
/* ==========================================================================
   Helper classes
   ========================================================================== */
/*
 * Hide visually and from screen readers:
 */
.hidden {
  display: none !important; }

/*
 * Hide only visually, but have it available for screen readers:
 * http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
 */
.visuallyhidden {
  border: 0;
  clip: rect(0 0 0 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px; }

/*
 * Extends the .visuallyhidden class to allow the element
 * to be focusable when navigated to via the keyboard:
 * https://www.drupal.org/node/897638
 */
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto; }

/*
 * Hide visually and from screen readers, but maintain layout
 */
.invisible {
  visibility: hidden; }

/*
 * Clearfix: contain floats
 *
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    `contenteditable` attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that receive the `clearfix` class.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 */
.clearfix:before,
.clearfix:after {
  content: " ";
  /* 1 */
  display: table;
  /* 2 */ }

.clearfix:after {
  clear: both; }

/* ==========================================================================
   EXAMPLE Media Queries for Responsive Design.
   These examples override the primary ('mobile first') styles.
   Modify as content requires.
   ========================================================================== */
@media only screen and (min-width: 35em) {
  /* Style adjustments for viewports that meet the condition */ }

@media print, (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 1.25dppx), (min-resolution: 120dpi) {
  /* Style adjustments for high resolution devices */ }

/* ==========================================================================
   Print styles.
   Inlined to avoid the additional HTTP request:
   http://www.phpied.com/delay-loading-your-print-css/
   ========================================================================== */
@media print {
  *,
  *:before,
  *:after,
  *:first-letter,
  *:first-line {
    background: transparent !important;
    color: #000 !important;
    /* Black prints faster: http://www.sanbeiji.com/archives/953 */
    box-shadow: none !important;
    text-shadow: none !important; }
  a,
  a:visited {
    text-decoration: underline; }
  a[href]:after {
    content: " (" attr(href) ")"; }
  abbr[title]:after {
    content: " (" attr(title) ")"; }
  /*
     * Don't show links that are fragment identifiers,
     * or use the `javascript:` pseudo protocol
     */
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: ""; }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid; }
  /*
     * Printing Tables:
     * http://css-discuss.incutio.com/wiki/Printing_Tables
     */
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; } }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Remove the unwanted box around FAB buttons */
/* More info: http://goo.gl/IPwKi */
a, .mdl-accordion, .mdl-button, .mdl-card, .mdl-checkbox, .mdl-dropdown-menu,
.mdl-icon-toggle, .mdl-item, .mdl-radio, .mdl-slider, .mdl-switch, .mdl-tabs__tab {
  -webkit-tap-highlight-color: transparent;
  -webkit-tap-highlight-color: rgba(255, 255, 255, 0); }

/*
 * Make html take up the entire screen
 * Then set touch-action to avoid touch delay on mobile IE
 */
html {
  width: 100%;
  height: 100%;
  touch-action: manipulation; }

/*
* Make body take up the entire screen
* Remove body margin so layout containers don't cause extra overflow.
*/
body {
  width: 100%;
  min-height: 100%;
  margin: 0; }

/*
 * Main display reset for IE support.
 * Source: http://weblog.west-wind.com/posts/2015/Jan/12/main-HTML5-Tag-not-working-in-Internet-Explorer-91011
 */
main {
  display: block; }

/*
* Apply no display to elements with the hidden attribute.
* IE 9 and 10 support.
*/
*[hidden] {
  display: none !important; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
html, body {
  font-family: "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 400;
  line-height: 20px; }

h1, h2, h3, h4, h5, h6, p {
  margin: 0;
  padding: 0; }

/**
  * Styles for HTML elements
  */
h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 56px;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em;
  opacity: 0.54;
  font-size: 0.6em; }

h1 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 56px;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em;
  margin-top: 24px;
  margin-bottom: 24px; }

h2 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 45px;
  font-weight: 400;
  line-height: 48px;
  margin-top: 24px;
  margin-bottom: 24px; }

h3 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 34px;
  font-weight: 400;
  line-height: 40px;
  margin-top: 24px;
  margin-bottom: 24px; }

h4 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 24px;
  font-weight: 400;
  line-height: 32px;
  -moz-osx-font-smoothing: grayscale;
  margin-top: 24px;
  margin-bottom: 16px; }

h5 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.02em;
  margin-top: 24px;
  margin-bottom: 16px; }

h6 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0.04em;
  margin-top: 24px;
  margin-bottom: 16px; }

p {
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0;
  margin-bottom: 16px; }

a {
  color: rgb(255,64,129);
  font-weight: 500; }

blockquote {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  position: relative;
  font-size: 24px;
  font-weight: 300;
  font-style: italic;
  line-height: 1.35;
  letter-spacing: 0.08em; }
  blockquote:before {
    position: absolute;
    left: -0.5em;
    content: '“'; }
  blockquote:after {
    content: '”';
    margin-left: -0.05em; }

mark {
  background-color: #f4ff81; }

dt {
  font-weight: 700; }

address {
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0;
  font-style: normal; }

ul, ol {
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0; }

/**
 * Class Name Styles
 */
.mdl-typography--display-4 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 112px;
  font-weight: 300;
  line-height: 1;
  letter-spacing: -0.04em; }

.mdl-typography--display-4-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 112px;
  font-weight: 300;
  line-height: 1;
  letter-spacing: -0.04em;
  opacity: 0.54; }

.mdl-typography--display-3 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 56px;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em; }

.mdl-typography--display-3-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 56px;
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -0.02em;
  opacity: 0.54; }

.mdl-typography--display-2 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 45px;
  font-weight: 400;
  line-height: 48px; }

.mdl-typography--display-2-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 45px;
  font-weight: 400;
  line-height: 48px;
  opacity: 0.54; }

.mdl-typography--display-1 {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 34px;
  font-weight: 400;
  line-height: 40px; }

.mdl-typography--display-1-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 34px;
  font-weight: 400;
  line-height: 40px;
  opacity: 0.54; }

.mdl-typography--headline {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 24px;
  font-weight: 400;
  line-height: 32px;
  -moz-osx-font-smoothing: grayscale; }

.mdl-typography--headline-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 24px;
  font-weight: 400;
  line-height: 32px;
  -moz-osx-font-smoothing: grayscale;
  opacity: 0.87; }

.mdl-typography--title {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.02em; }

.mdl-typography--title-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.02em;
  opacity: 0.87; }

.mdl-typography--subhead {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0.04em; }

.mdl-typography--subhead-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 16px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0.04em;
  opacity: 0.87; }

.mdl-typography--body-2 {
  font-size: 14px;
  font-weight: bold;
  line-height: 24px;
  letter-spacing: 0; }

.mdl-typography--body-2-color-contrast {
  font-size: 14px;
  font-weight: bold;
  line-height: 24px;
  letter-spacing: 0;
  opacity: 0.87; }

.mdl-typography--body-1 {
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0; }

.mdl-typography--body-1-color-contrast {
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0;
  opacity: 0.87; }

.mdl-typography--body-2-force-preferred-font {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 24px;
  letter-spacing: 0; }

.mdl-typography--body-2-force-preferred-font-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 24px;
  letter-spacing: 0;
  opacity: 0.87; }

.mdl-typography--body-1-force-preferred-font {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0; }

.mdl-typography--body-1-force-preferred-font-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0;
  opacity: 0.87; }

.mdl-typography--caption {
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0; }

.mdl-typography--caption-force-preferred-font {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0; }

.mdl-typography--caption-color-contrast {
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0;
  opacity: 0.54; }

.mdl-typography--caption-force-preferred-font-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0;
  opacity: 0.54; }

.mdl-typography--menu {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0; }

.mdl-typography--menu-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0;
  opacity: 0.87; }

.mdl-typography--button {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 500;
  text-transform: uppercase;
  line-height: 1;
  letter-spacing: 0; }

.mdl-typography--button-color-contrast {
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 500;
  text-transform: uppercase;
  line-height: 1;
  letter-spacing: 0;
  opacity: 0.87; }

.mdl-typography--text-left {
  text-align: left; }

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

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

.mdl-typography--text-justify {
  text-align: justify; }

.mdl-typography--text-nowrap {
  white-space: nowrap; }

.mdl-typography--text-lowercase {
  text-transform: lowercase; }

.mdl-typography--text-uppercase {
  text-transform: uppercase; }

.mdl-typography--text-capitalize {
  text-transform: capitalize; }

.mdl-typography--font-thin {
  font-weight: 200 !important; }

.mdl-typography--font-light {
  font-weight: 300 !important; }

.mdl-typography--font-regular {
  font-weight: 400 !important; }

.mdl-typography--font-medium {
  font-weight: 500 !important; }

.mdl-typography--font-bold {
  font-weight: 700 !important; }

.mdl-typography--font-black {
  font-weight: 900 !important; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-color-text--red {
  color: rgb(244,67,54) !important; }

.mdl-color--red {
  background-color: rgb(244,67,54) !important; }

.mdl-color-text--red-50 {
  color: rgb(255,235,238) !important; }

.mdl-color--red-50 {
  background-color: rgb(255,235,238) !important; }

.mdl-color-text--red-100 {
  color: rgb(255,205,210) !important; }

.mdl-color--red-100 {
  background-color: rgb(255,205,210) !important; }

.mdl-color-text--red-200 {
  color: rgb(239,154,154) !important; }

.mdl-color--red-200 {
  background-color: rgb(239,154,154) !important; }

.mdl-color-text--red-300 {
  color: rgb(229,115,115) !important; }

.mdl-color--red-300 {
  background-color: rgb(229,115,115) !important; }

.mdl-color-text--red-400 {
  color: rgb(239,83,80) !important; }

.mdl-color--red-400 {
  background-color: rgb(239,83,80) !important; }

.mdl-color-text--red-500 {
  color: rgb(244,67,54) !important; }

.mdl-color--red-500 {
  background-color: rgb(244,67,54) !important; }

.mdl-color-text--red-600 {
  color: rgb(229,57,53) !important; }

.mdl-color--red-600 {
  background-color: rgb(229,57,53) !important; }

.mdl-color-text--red-700 {
  color: rgb(211,47,47) !important; }

.mdl-color--red-700 {
  background-color: rgb(211,47,47) !important; }

.mdl-color-text--red-800 {
  color: rgb(198,40,40) !important; }

.mdl-color--red-800 {
  background-color: rgb(198,40,40) !important; }

.mdl-color-text--red-900 {
  color: rgb(183,28,28) !important; }

.mdl-color--red-900 {
  background-color: rgb(183,28,28) !important; }

.mdl-color-text--red-A100 {
  color: rgb(255,138,128) !important; }

.mdl-color--red-A100 {
  background-color: rgb(255,138,128) !important; }

.mdl-color-text--red-A200 {
  color: rgb(255,82,82) !important; }

.mdl-color--red-A200 {
  background-color: rgb(255,82,82) !important; }

.mdl-color-text--red-A400 {
  color: rgb(255,23,68) !important; }

.mdl-color--red-A400 {
  background-color: rgb(255,23,68) !important; }

.mdl-color-text--red-A700 {
  color: rgb(213,0,0) !important; }

.mdl-color--red-A700 {
  background-color: rgb(213,0,0) !important; }

.mdl-color-text--pink {
  color: rgb(233,30,99) !important; }

.mdl-color--pink {
  background-color: rgb(233,30,99) !important; }

.mdl-color-text--pink-50 {
  color: rgb(252,228,236) !important; }

.mdl-color--pink-50 {
  background-color: rgb(252,228,236) !important; }

.mdl-color-text--pink-100 {
  color: rgb(248,187,208) !important; }

.mdl-color--pink-100 {
  background-color: rgb(248,187,208) !important; }

.mdl-color-text--pink-200 {
  color: rgb(244,143,177) !important; }

.mdl-color--pink-200 {
  background-color: rgb(244,143,177) !important; }

.mdl-color-text--pink-300 {
  color: rgb(240,98,146) !important; }

.mdl-color--pink-300 {
  background-color: rgb(240,98,146) !important; }

.mdl-color-text--pink-400 {
  color: rgb(236,64,122) !important; }

.mdl-color--pink-400 {
  background-color: rgb(236,64,122) !important; }

.mdl-color-text--pink-500 {
  color: rgb(233,30,99) !important; }

.mdl-color--pink-500 {
  background-color: rgb(233,30,99) !important; }

.mdl-color-text--pink-600 {
  color: rgb(216,27,96) !important; }

.mdl-color--pink-600 {
  background-color: rgb(216,27,96) !important; }

.mdl-color-text--pink-700 {
  color: rgb(194,24,91) !important; }

.mdl-color--pink-700 {
  background-color: rgb(194,24,91) !important; }

.mdl-color-text--pink-800 {
  color: rgb(173,20,87) !important; }

.mdl-color--pink-800 {
  background-color: rgb(173,20,87) !important; }

.mdl-color-text--pink-900 {
  color: rgb(136,14,79) !important; }

.mdl-color--pink-900 {
  background-color: rgb(136,14,79) !important; }

.mdl-color-text--pink-A100 {
  color: rgb(255,128,171) !important; }

.mdl-color--pink-A100 {
  background-color: rgb(255,128,171) !important; }

.mdl-color-text--pink-A200 {
  color: rgb(255,64,129) !important; }

.mdl-color--pink-A200 {
  background-color: rgb(255,64,129) !important; }

.mdl-color-text--pink-A400 {
  color: rgb(245,0,87) !important; }

.mdl-color--pink-A400 {
  background-color: rgb(245,0,87) !important; }

.mdl-color-text--pink-A700 {
  color: rgb(197,17,98) !important; }

.mdl-color--pink-A700 {
  background-color: rgb(197,17,98) !important; }

.mdl-color-text--purple {
  color: rgb(156,39,176) !important; }

.mdl-color--purple {
  background-color: rgb(156,39,176) !important; }

.mdl-color-text--purple-50 {
  color: rgb(243,229,245) !important; }

.mdl-color--purple-50 {
  background-color: rgb(243,229,245) !important; }

.mdl-color-text--purple-100 {
  color: rgb(225,190,231) !important; }

.mdl-color--purple-100 {
  background-color: rgb(225,190,231) !important; }

.mdl-color-text--purple-200 {
  color: rgb(206,147,216) !important; }

.mdl-color--purple-200 {
  background-color: rgb(206,147,216) !important; }

.mdl-color-text--purple-300 {
  color: rgb(186,104,200) !important; }

.mdl-color--purple-300 {
  background-color: rgb(186,104,200) !important; }

.mdl-color-text--purple-400 {
  color: rgb(171,71,188) !important; }

.mdl-color--purple-400 {
  background-color: rgb(171,71,188) !important; }

.mdl-color-text--purple-500 {
  color: rgb(156,39,176) !important; }

.mdl-color--purple-500 {
  background-color: rgb(156,39,176) !important; }

.mdl-color-text--purple-600 {
  color: rgb(142,36,170) !important; }

.mdl-color--purple-600 {
  background-color: rgb(142,36,170) !important; }

.mdl-color-text--purple-700 {
  color: rgb(123,31,162) !important; }

.mdl-color--purple-700 {
  background-color: rgb(123,31,162) !important; }

.mdl-color-text--purple-800 {
  color: rgb(106,27,154) !important; }

.mdl-color--purple-800 {
  background-color: rgb(106,27,154) !important; }

.mdl-color-text--purple-900 {
  color: rgb(74,20,140) !important; }

.mdl-color--purple-900 {
  background-color: rgb(74,20,140) !important; }

.mdl-color-text--purple-A100 {
  color: rgb(234,128,252) !important; }

.mdl-color--purple-A100 {
  background-color: rgb(234,128,252) !important; }

.mdl-color-text--purple-A200 {
  color: rgb(224,64,251) !important; }

.mdl-color--purple-A200 {
  background-color: rgb(224,64,251) !important; }

.mdl-color-text--purple-A400 {
  color: rgb(213,0,249) !important; }

.mdl-color--purple-A400 {
  background-color: rgb(213,0,249) !important; }

.mdl-color-text--purple-A700 {
  color: rgb(170,0,255) !important; }

.mdl-color--purple-A700 {
  background-color: rgb(170,0,255) !important; }

.mdl-color-text--deep-purple {
  color: rgb(103,58,183) !important; }

.mdl-color--deep-purple {
  background-color: rgb(103,58,183) !important; }

.mdl-color-text--deep-purple-50 {
  color: rgb(237,231,246) !important; }

.mdl-color--deep-purple-50 {
  background-color: rgb(237,231,246) !important; }

.mdl-color-text--deep-purple-100 {
  color: rgb(209,196,233) !important; }

.mdl-color--deep-purple-100 {
  background-color: rgb(209,196,233) !important; }

.mdl-color-text--deep-purple-200 {
  color: rgb(179,157,219) !important; }

.mdl-color--deep-purple-200 {
  background-color: rgb(179,157,219) !important; }

.mdl-color-text--deep-purple-300 {
  color: rgb(149,117,205) !important; }

.mdl-color--deep-purple-300 {
  background-color: rgb(149,117,205) !important; }

.mdl-color-text--deep-purple-400 {
  color: rgb(126,87,194) !important; }

.mdl-color--deep-purple-400 {
  background-color: rgb(126,87,194) !important; }

.mdl-color-text--deep-purple-500 {
  color: rgb(103,58,183) !important; }

.mdl-color--deep-purple-500 {
  background-color: rgb(103,58,183) !important; }

.mdl-color-text--deep-purple-600 {
  color: rgb(94,53,177) !important; }

.mdl-color--deep-purple-600 {
  background-color: rgb(94,53,177) !important; }

.mdl-color-text--deep-purple-700 {
  color: rgb(81,45,168) !important; }

.mdl-color--deep-purple-700 {
  background-color: rgb(81,45,168) !important; }

.mdl-color-text--deep-purple-800 {
  color: rgb(69,39,160) !important; }

.mdl-color--deep-purple-800 {
  background-color: rgb(69,39,160) !important; }

.mdl-color-text--deep-purple-900 {
  color: rgb(49,27,146) !important; }

.mdl-color--deep-purple-900 {
  background-color: rgb(49,27,146) !important; }

.mdl-color-text--deep-purple-A100 {
  color: rgb(179,136,255) !important; }

.mdl-color--deep-purple-A100 {
  background-color: rgb(179,136,255) !important; }

.mdl-color-text--deep-purple-A200 {
  color: rgb(124,77,255) !important; }

.mdl-color--deep-purple-A200 {
  background-color: rgb(124,77,255) !important; }

.mdl-color-text--deep-purple-A400 {
  color: rgb(101,31,255) !important; }

.mdl-color--deep-purple-A400 {
  background-color: rgb(101,31,255) !important; }

.mdl-color-text--deep-purple-A700 {
  color: rgb(98,0,234) !important; }

.mdl-color--deep-purple-A700 {
  background-color: rgb(98,0,234) !important; }

.mdl-color-text--indigo {
  color: rgb(63,81,181) !important; }

.mdl-color--indigo {
  background-color: rgb(63,81,181) !important; }

.mdl-color-text--indigo-50 {
  color: rgb(232,234,246) !important; }

.mdl-color--indigo-50 {
  background-color: rgb(232,234,246) !important; }

.mdl-color-text--indigo-100 {
  color: rgb(197,202,233) !important; }

.mdl-color--indigo-100 {
  background-color: rgb(197,202,233) !important; }

.mdl-color-text--indigo-200 {
  color: rgb(159,168,218) !important; }

.mdl-color--indigo-200 {
  background-color: rgb(159,168,218) !important; }

.mdl-color-text--indigo-300 {
  color: rgb(121,134,203) !important; }

.mdl-color--indigo-300 {
  background-color: rgb(121,134,203) !important; }

.mdl-color-text--indigo-400 {
  color: rgb(92,107,192) !important; }

.mdl-color--indigo-400 {
  background-color: rgb(92,107,192) !important; }

.mdl-color-text--indigo-500 {
  color: rgb(63,81,181) !important; }

.mdl-color--indigo-500 {
  background-color: rgb(63,81,181) !important; }

.mdl-color-text--indigo-600 {
  color: rgb(57,73,171) !important; }

.mdl-color--indigo-600 {
  background-color: rgb(57,73,171) !important; }

.mdl-color-text--indigo-700 {
  color: rgb(48,63,159) !important; }

.mdl-color--indigo-700 {
  background-color: rgb(48,63,159) !important; }

.mdl-color-text--indigo-800 {
  color: rgb(40,53,147) !important; }

.mdl-color--indigo-800 {
  background-color: rgb(40,53,147) !important; }

.mdl-color-text--indigo-900 {
  color: rgb(26,35,126) !important; }

.mdl-color--indigo-900 {
  background-color: rgb(26,35,126) !important; }

.mdl-color-text--indigo-A100 {
  color: rgb(140,158,255) !important; }

.mdl-color--indigo-A100 {
  background-color: rgb(140,158,255) !important; }

.mdl-color-text--indigo-A200 {
  color: rgb(83,109,254) !important; }

.mdl-color--indigo-A200 {
  background-color: rgb(83,109,254) !important; }

.mdl-color-text--indigo-A400 {
  color: rgb(61,90,254) !important; }

.mdl-color--indigo-A400 {
  background-color: rgb(61,90,254) !important; }

.mdl-color-text--indigo-A700 {
  color: rgb(48,79,254) !important; }

.mdl-color--indigo-A700 {
  background-color: rgb(48,79,254) !important; }

.mdl-color-text--blue {
  color: rgb(33,150,243) !important; }

.mdl-color--blue {
  background-color: rgb(33,150,243) !important; }

.mdl-color-text--blue-50 {
  color: rgb(227,242,253) !important; }

.mdl-color--blue-50 {
  background-color: rgb(227,242,253) !important; }

.mdl-color-text--blue-100 {
  color: rgb(187,222,251) !important; }

.mdl-color--blue-100 {
  background-color: rgb(187,222,251) !important; }

.mdl-color-text--blue-200 {
  color: rgb(144,202,249) !important; }

.mdl-color--blue-200 {
  background-color: rgb(144,202,249) !important; }

.mdl-color-text--blue-300 {
  color: rgb(100,181,246) !important; }

.mdl-color--blue-300 {
  background-color: rgb(100,181,246) !important; }

.mdl-color-text--blue-400 {
  color: rgb(66,165,245) !important; }

.mdl-color--blue-400 {
  background-color: rgb(66,165,245) !important; }

.mdl-color-text--blue-500 {
  color: rgb(33,150,243) !important; }

.mdl-color--blue-500 {
  background-color: rgb(33,150,243) !important; }

.mdl-color-text--blue-600 {
  color: rgb(30,136,229) !important; }

.mdl-color--blue-600 {
  background-color: rgb(30,136,229) !important; }

.mdl-color-text--blue-700 {
  color: rgb(25,118,210) !important; }

.mdl-color--blue-700 {
  background-color: rgb(25,118,210) !important; }

.mdl-color-text--blue-800 {
  color: rgb(21,101,192) !important; }

.mdl-color--blue-800 {
  background-color: rgb(21,101,192) !important; }

.mdl-color-text--blue-900 {
  color: rgb(13,71,161) !important; }

.mdl-color--blue-900 {
  background-color: rgb(13,71,161) !important; }

.mdl-color-text--blue-A100 {
  color: rgb(130,177,255) !important; }

.mdl-color--blue-A100 {
  background-color: rgb(130,177,255) !important; }

.mdl-color-text--blue-A200 {
  color: rgb(68,138,255) !important; }

.mdl-color--blue-A200 {
  background-color: rgb(68,138,255) !important; }

.mdl-color-text--blue-A400 {
  color: rgb(41,121,255) !important; }

.mdl-color--blue-A400 {
  background-color: rgb(41,121,255) !important; }

.mdl-color-text--blue-A700 {
  color: rgb(41,98,255) !important; }

.mdl-color--blue-A700 {
  background-color: rgb(41,98,255) !important; }

.mdl-color-text--light-blue {
  color: rgb(3,169,244) !important; }

.mdl-color--light-blue {
  background-color: rgb(3,169,244) !important; }

.mdl-color-text--light-blue-50 {
  color: rgb(225,245,254) !important; }

.mdl-color--light-blue-50 {
  background-color: rgb(225,245,254) !important; }

.mdl-color-text--light-blue-100 {
  color: rgb(179,229,252) !important; }

.mdl-color--light-blue-100 {
  background-color: rgb(179,229,252) !important; }

.mdl-color-text--light-blue-200 {
  color: rgb(129,212,250) !important; }

.mdl-color--light-blue-200 {
  background-color: rgb(129,212,250) !important; }

.mdl-color-text--light-blue-300 {
  color: rgb(79,195,247) !important; }

.mdl-color--light-blue-300 {
  background-color: rgb(79,195,247) !important; }

.mdl-color-text--light-blue-400 {
  color: rgb(41,182,246) !important; }

.mdl-color--light-blue-400 {
  background-color: rgb(41,182,246) !important; }

.mdl-color-text--light-blue-500 {
  color: rgb(3,169,244) !important; }

.mdl-color--light-blue-500 {
  background-color: rgb(3,169,244) !important; }

.mdl-color-text--light-blue-600 {
  color: rgb(3,155,229) !important; }

.mdl-color--light-blue-600 {
  background-color: rgb(3,155,229) !important; }

.mdl-color-text--light-blue-700 {
  color: rgb(2,136,209) !important; }

.mdl-color--light-blue-700 {
  background-color: rgb(2,136,209) !important; }

.mdl-color-text--light-blue-800 {
  color: rgb(2,119,189) !important; }

.mdl-color--light-blue-800 {
  background-color: rgb(2,119,189) !important; }

.mdl-color-text--light-blue-900 {
  color: rgb(1,87,155) !important; }

.mdl-color--light-blue-900 {
  background-color: rgb(1,87,155) !important; }

.mdl-color-text--light-blue-A100 {
  color: rgb(128,216,255) !important; }

.mdl-color--light-blue-A100 {
  background-color: rgb(128,216,255) !important; }

.mdl-color-text--light-blue-A200 {
  color: rgb(64,196,255) !important; }

.mdl-color--light-blue-A200 {
  background-color: rgb(64,196,255) !important; }

.mdl-color-text--light-blue-A400 {
  color: rgb(0,176,255) !important; }

.mdl-color--light-blue-A400 {
  background-color: rgb(0,176,255) !important; }

.mdl-color-text--light-blue-A700 {
  color: rgb(0,145,234) !important; }

.mdl-color--light-blue-A700 {
  background-color: rgb(0,145,234) !important; }

.mdl-color-text--cyan {
  color: rgb(0,188,212) !important; }

.mdl-color--cyan {
  background-color: rgb(0,188,212) !important; }

.mdl-color-text--cyan-50 {
  color: rgb(224,247,250) !important; }

.mdl-color--cyan-50 {
  background-color: rgb(224,247,250) !important; }

.mdl-color-text--cyan-100 {
  color: rgb(178,235,242) !important; }

.mdl-color--cyan-100 {
  background-color: rgb(178,235,242) !important; }

.mdl-color-text--cyan-200 {
  color: rgb(128,222,234) !important; }

.mdl-color--cyan-200 {
  background-color: rgb(128,222,234) !important; }

.mdl-color-text--cyan-300 {
  color: rgb(77,208,225) !important; }

.mdl-color--cyan-300 {
  background-color: rgb(77,208,225) !important; }

.mdl-color-text--cyan-400 {
  color: rgb(38,198,218) !important; }

.mdl-color--cyan-400 {
  background-color: rgb(38,198,218) !important; }

.mdl-color-text--cyan-500 {
  color: rgb(0,188,212) !important; }

.mdl-color--cyan-500 {
  background-color: rgb(0,188,212) !important; }

.mdl-color-text--cyan-600 {
  color: rgb(0,172,193) !important; }

.mdl-color--cyan-600 {
  background-color: rgb(0,172,193) !important; }

.mdl-color-text--cyan-700 {
  color: rgb(0,151,167) !important; }

.mdl-color--cyan-700 {
  background-color: rgb(0,151,167) !important; }

.mdl-color-text--cyan-800 {
  color: rgb(0,131,143) !important; }

.mdl-color--cyan-800 {
  background-color: rgb(0,131,143) !important; }

.mdl-color-text--cyan-900 {
  color: rgb(0,96,100) !important; }

.mdl-color--cyan-900 {
  background-color: rgb(0,96,100) !important; }

.mdl-color-text--cyan-A100 {
  color: rgb(132,255,255) !important; }

.mdl-color--cyan-A100 {
  background-color: rgb(132,255,255) !important; }

.mdl-color-text--cyan-A200 {
  color: rgb(24,255,255) !important; }

.mdl-color--cyan-A200 {
  background-color: rgb(24,255,255) !important; }

.mdl-color-text--cyan-A400 {
  color: rgb(0,229,255) !important; }

.mdl-color--cyan-A400 {
  background-color: rgb(0,229,255) !important; }

.mdl-color-text--cyan-A700 {
  color: rgb(0,184,212) !important; }

.mdl-color--cyan-A700 {
  background-color: rgb(0,184,212) !important; }

.mdl-color-text--teal {
  color: rgb(0,150,136) !important; }

.mdl-color--teal {
  background-color: rgb(0,150,136) !important; }

.mdl-color-text--teal-50 {
  color: rgb(224,242,241) !important; }

.mdl-color--teal-50 {
  background-color: rgb(224,242,241) !important; }

.mdl-color-text--teal-100 {
  color: rgb(178,223,219) !important; }

.mdl-color--teal-100 {
  background-color: rgb(178,223,219) !important; }

.mdl-color-text--teal-200 {
  color: rgb(128,203,196) !important; }

.mdl-color--teal-200 {
  background-color: rgb(128,203,196) !important; }

.mdl-color-text--teal-300 {
  color: rgb(77,182,172) !important; }

.mdl-color--teal-300 {
  background-color: rgb(77,182,172) !important; }

.mdl-color-text--teal-400 {
  color: rgb(38,166,154) !important; }

.mdl-color--teal-400 {
  background-color: rgb(38,166,154) !important; }

.mdl-color-text--teal-500 {
  color: rgb(0,150,136) !important; }

.mdl-color--teal-500 {
  background-color: rgb(0,150,136) !important; }

.mdl-color-text--teal-600 {
  color: rgb(0,137,123) !important; }

.mdl-color--teal-600 {
  background-color: rgb(0,137,123) !important; }

.mdl-color-text--teal-700 {
  color: rgb(0,121,107) !important; }

.mdl-color--teal-700 {
  background-color: rgb(0,121,107) !important; }

.mdl-color-text--teal-800 {
  color: rgb(0,105,92) !important; }

.mdl-color--teal-800 {
  background-color: rgb(0,105,92) !important; }

.mdl-color-text--teal-900 {
  color: rgb(0,77,64) !important; }

.mdl-color--teal-900 {
  background-color: rgb(0,77,64) !important; }

.mdl-color-text--teal-A100 {
  color: rgb(167,255,235) !important; }

.mdl-color--teal-A100 {
  background-color: rgb(167,255,235) !important; }

.mdl-color-text--teal-A200 {
  color: rgb(100,255,218) !important; }

.mdl-color--teal-A200 {
  background-color: rgb(100,255,218) !important; }

.mdl-color-text--teal-A400 {
  color: rgb(29,233,182) !important; }

.mdl-color--teal-A400 {
  background-color: rgb(29,233,182) !important; }

.mdl-color-text--teal-A700 {
  color: rgb(0,191,165) !important; }

.mdl-color--teal-A700 {
  background-color: rgb(0,191,165) !important; }

.mdl-color-text--green {
  color: rgb(76,175,80) !important; }

.mdl-color--green {
  background-color: rgb(76,175,80) !important; }

.mdl-color-text--green-50 {
  color: rgb(232,245,233) !important; }

.mdl-color--green-50 {
  background-color: rgb(232,245,233) !important; }

.mdl-color-text--green-100 {
  color: rgb(200,230,201) !important; }

.mdl-color--green-100 {
  background-color: rgb(200,230,201) !important; }

.mdl-color-text--green-200 {
  color: rgb(165,214,167) !important; }

.mdl-color--green-200 {
  background-color: rgb(165,214,167) !important; }

.mdl-color-text--green-300 {
  color: rgb(129,199,132) !important; }

.mdl-color--green-300 {
  background-color: rgb(129,199,132) !important; }

.mdl-color-text--green-400 {
  color: rgb(102,187,106) !important; }

.mdl-color--green-400 {
  background-color: rgb(102,187,106) !important; }

.mdl-color-text--green-500 {
  color: rgb(76,175,80) !important; }

.mdl-color--green-500 {
  background-color: rgb(76,175,80) !important; }

.mdl-color-text--green-600 {
  color: rgb(67,160,71) !important; }

.mdl-color--green-600 {
  background-color: rgb(67,160,71) !important; }

.mdl-color-text--green-700 {
  color: rgb(56,142,60) !important; }

.mdl-color--green-700 {
  background-color: rgb(56,142,60) !important; }

.mdl-color-text--green-800 {
  color: rgb(46,125,50) !important; }

.mdl-color--green-800 {
  background-color: rgb(46,125,50) !important; }

.mdl-color-text--green-900 {
  color: rgb(27,94,32) !important; }

.mdl-color--green-900 {
  background-color: rgb(27,94,32) !important; }

.mdl-color-text--green-A100 {
  color: rgb(185,246,202) !important; }

.mdl-color--green-A100 {
  background-color: rgb(185,246,202) !important; }

.mdl-color-text--green-A200 {
  color: rgb(105,240,174) !important; }

.mdl-color--green-A200 {
  background-color: rgb(105,240,174) !important; }

.mdl-color-text--green-A400 {
  color: rgb(0,230,118) !important; }

.mdl-color--green-A400 {
  background-color: rgb(0,230,118) !important; }

.mdl-color-text--green-A700 {
  color: rgb(0,200,83) !important; }

.mdl-color--green-A700 {
  background-color: rgb(0,200,83) !important; }

.mdl-color-text--light-green {
  color: rgb(139,195,74) !important; }

.mdl-color--light-green {
  background-color: rgb(139,195,74) !important; }

.mdl-color-text--light-green-50 {
  color: rgb(241,248,233) !important; }

.mdl-color--light-green-50 {
  background-color: rgb(241,248,233) !important; }

.mdl-color-text--light-green-100 {
  color: rgb(220,237,200) !important; }

.mdl-color--light-green-100 {
  background-color: rgb(220,237,200) !important; }

.mdl-color-text--light-green-200 {
  color: rgb(197,225,165) !important; }

.mdl-color--light-green-200 {
  background-color: rgb(197,225,165) !important; }

.mdl-color-text--light-green-300 {
  color: rgb(174,213,129) !important; }

.mdl-color--light-green-300 {
  background-color: rgb(174,213,129) !important; }

.mdl-color-text--light-green-400 {
  color: rgb(156,204,101) !important; }

.mdl-color--light-green-400 {
  background-color: rgb(156,204,101) !important; }

.mdl-color-text--light-green-500 {
  color: rgb(139,195,74) !important; }

.mdl-color--light-green-500 {
  background-color: rgb(139,195,74) !important; }

.mdl-color-text--light-green-600 {
  color: rgb(124,179,66) !important; }

.mdl-color--light-green-600 {
  background-color: rgb(124,179,66) !important; }

.mdl-color-text--light-green-700 {
  color: rgb(104,159,56) !important; }

.mdl-color--light-green-700 {
  background-color: rgb(104,159,56) !important; }

.mdl-color-text--light-green-800 {
  color: rgb(85,139,47) !important; }

.mdl-color--light-green-800 {
  background-color: rgb(85,139,47) !important; }

.mdl-color-text--light-green-900 {
  color: rgb(51,105,30) !important; }

.mdl-color--light-green-900 {
  background-color: rgb(51,105,30) !important; }

.mdl-color-text--light-green-A100 {
  color: rgb(204,255,144) !important; }

.mdl-color--light-green-A100 {
  background-color: rgb(204,255,144) !important; }

.mdl-color-text--light-green-A200 {
  color: rgb(178,255,89) !important; }

.mdl-color--light-green-A200 {
  background-color: rgb(178,255,89) !important; }

.mdl-color-text--light-green-A400 {
  color: rgb(118,255,3) !important; }

.mdl-color--light-green-A400 {
  background-color: rgb(118,255,3) !important; }

.mdl-color-text--light-green-A700 {
  color: rgb(100,221,23) !important; }

.mdl-color--light-green-A700 {
  background-color: rgb(100,221,23) !important; }

.mdl-color-text--lime {
  color: rgb(205,220,57) !important; }

.mdl-color--lime {
  background-color: rgb(205,220,57) !important; }

.mdl-color-text--lime-50 {
  color: rgb(249,251,231) !important; }

.mdl-color--lime-50 {
  background-color: rgb(249,251,231) !important; }

.mdl-color-text--lime-100 {
  color: rgb(240,244,195) !important; }

.mdl-color--lime-100 {
  background-color: rgb(240,244,195) !important; }

.mdl-color-text--lime-200 {
  color: rgb(230,238,156) !important; }

.mdl-color--lime-200 {
  background-color: rgb(230,238,156) !important; }

.mdl-color-text--lime-300 {
  color: rgb(220,231,117) !important; }

.mdl-color--lime-300 {
  background-color: rgb(220,231,117) !important; }

.mdl-color-text--lime-400 {
  color: rgb(212,225,87) !important; }

.mdl-color--lime-400 {
  background-color: rgb(212,225,87) !important; }

.mdl-color-text--lime-500 {
  color: rgb(205,220,57) !important; }

.mdl-color--lime-500 {
  background-color: rgb(205,220,57) !important; }

.mdl-color-text--lime-600 {
  color: rgb(192,202,51) !important; }

.mdl-color--lime-600 {
  background-color: rgb(192,202,51) !important; }

.mdl-color-text--lime-700 {
  color: rgb(175,180,43) !important; }

.mdl-color--lime-700 {
  background-color: rgb(175,180,43) !important; }

.mdl-color-text--lime-800 {
  color: rgb(158,157,36) !important; }

.mdl-color--lime-800 {
  background-color: rgb(158,157,36) !important; }

.mdl-color-text--lime-900 {
  color: rgb(130,119,23) !important; }

.mdl-color--lime-900 {
  background-color: rgb(130,119,23) !important; }

.mdl-color-text--lime-A100 {
  color: rgb(244,255,129) !important; }

.mdl-color--lime-A100 {
  background-color: rgb(244,255,129) !important; }

.mdl-color-text--lime-A200 {
  color: rgb(238,255,65) !important; }

.mdl-color--lime-A200 {
  background-color: rgb(238,255,65) !important; }

.mdl-color-text--lime-A400 {
  color: rgb(198,255,0) !important; }

.mdl-color--lime-A400 {
  background-color: rgb(198,255,0) !important; }

.mdl-color-text--lime-A700 {
  color: rgb(174,234,0) !important; }

.mdl-color--lime-A700 {
  background-color: rgb(174,234,0) !important; }

.mdl-color-text--yellow {
  color: rgb(255,235,59) !important; }

.mdl-color--yellow {
  background-color: rgb(255,235,59) !important; }

.mdl-color-text--yellow-50 {
  color: rgb(255,253,231) !important; }

.mdl-color--yellow-50 {
  background-color: rgb(255,253,231) !important; }

.mdl-color-text--yellow-100 {
  color: rgb(255,249,196) !important; }

.mdl-color--yellow-100 {
  background-color: rgb(255,249,196) !important; }

.mdl-color-text--yellow-200 {
  color: rgb(255,245,157) !important; }

.mdl-color--yellow-200 {
  background-color: rgb(255,245,157) !important; }

.mdl-color-text--yellow-300 {
  color: rgb(255,241,118) !important; }

.mdl-color--yellow-300 {
  background-color: rgb(255,241,118) !important; }

.mdl-color-text--yellow-400 {
  color: rgb(255,238,88) !important; }

.mdl-color--yellow-400 {
  background-color: rgb(255,238,88) !important; }

.mdl-color-text--yellow-500 {
  color: rgb(255,235,59) !important; }

.mdl-color--yellow-500 {
  background-color: rgb(255,235,59) !important; }

.mdl-color-text--yellow-600 {
  color: rgb(253,216,53) !important; }

.mdl-color--yellow-600 {
  background-color: rgb(253,216,53) !important; }

.mdl-color-text--yellow-700 {
  color: rgb(251,192,45) !important; }

.mdl-color--yellow-700 {
  background-color: rgb(251,192,45) !important; }

.mdl-color-text--yellow-800 {
  color: rgb(249,168,37) !important; }

.mdl-color--yellow-800 {
  background-color: rgb(249,168,37) !important; }

.mdl-color-text--yellow-900 {
  color: rgb(245,127,23) !important; }

.mdl-color--yellow-900 {
  background-color: rgb(245,127,23) !important; }

.mdl-color-text--yellow-A100 {
  color: rgb(255,255,141) !important; }

.mdl-color--yellow-A100 {
  background-color: rgb(255,255,141) !important; }

.mdl-color-text--yellow-A200 {
  color: rgb(255,255,0) !important; }

.mdl-color--yellow-A200 {
  background-color: rgb(255,255,0) !important; }

.mdl-color-text--yellow-A400 {
  color: rgb(255,234,0) !important; }

.mdl-color--yellow-A400 {
  background-color: rgb(255,234,0) !important; }

.mdl-color-text--yellow-A700 {
  color: rgb(255,214,0) !important; }

.mdl-color--yellow-A700 {
  background-color: rgb(255,214,0) !important; }

.mdl-color-text--amber {
  color: rgb(255,193,7) !important; }

.mdl-color--amber {
  background-color: rgb(255,193,7) !important; }

.mdl-color-text--amber-50 {
  color: rgb(255,248,225) !important; }

.mdl-color--amber-50 {
  background-color: rgb(255,248,225) !important; }

.mdl-color-text--amber-100 {
  color: rgb(255,236,179) !important; }

.mdl-color--amber-100 {
  background-color: rgb(255,236,179) !important; }

.mdl-color-text--amber-200 {
  color: rgb(255,224,130) !important; }

.mdl-color--amber-200 {
  background-color: rgb(255,224,130) !important; }

.mdl-color-text--amber-300 {
  color: rgb(255,213,79) !important; }

.mdl-color--amber-300 {
  background-color: rgb(255,213,79) !important; }

.mdl-color-text--amber-400 {
  color: rgb(255,202,40) !important; }

.mdl-color--amber-400 {
  background-color: rgb(255,202,40) !important; }

.mdl-color-text--amber-500 {
  color: rgb(255,193,7) !important; }

.mdl-color--amber-500 {
  background-color: rgb(255,193,7) !important; }

.mdl-color-text--amber-600 {
  color: rgb(255,179,0) !important; }

.mdl-color--amber-600 {
  background-color: rgb(255,179,0) !important; }

.mdl-color-text--amber-700 {
  color: rgb(255,160,0) !important; }

.mdl-color--amber-700 {
  background-color: rgb(255,160,0) !important; }

.mdl-color-text--amber-800 {
  color: rgb(255,143,0) !important; }

.mdl-color--amber-800 {
  background-color: rgb(255,143,0) !important; }

.mdl-color-text--amber-900 {
  color: rgb(255,111,0) !important; }

.mdl-color--amber-900 {
  background-color: rgb(255,111,0) !important; }

.mdl-color-text--amber-A100 {
  color: rgb(255,229,127) !important; }

.mdl-color--amber-A100 {
  background-color: rgb(255,229,127) !important; }

.mdl-color-text--amber-A200 {
  color: rgb(255,215,64) !important; }

.mdl-color--amber-A200 {
  background-color: rgb(255,215,64) !important; }

.mdl-color-text--amber-A400 {
  color: rgb(255,196,0) !important; }

.mdl-color--amber-A400 {
  background-color: rgb(255,196,0) !important; }

.mdl-color-text--amber-A700 {
  color: rgb(255,171,0) !important; }

.mdl-color--amber-A700 {
  background-color: rgb(255,171,0) !important; }

.mdl-color-text--orange {
  color: rgb(255,152,0) !important; }

.mdl-color--orange {
  background-color: rgb(255,152,0) !important; }

.mdl-color-text--orange-50 {
  color: rgb(255,243,224) !important; }

.mdl-color--orange-50 {
  background-color: rgb(255,243,224) !important; }

.mdl-color-text--orange-100 {
  color: rgb(255,224,178) !important; }

.mdl-color--orange-100 {
  background-color: rgb(255,224,178) !important; }

.mdl-color-text--orange-200 {
  color: rgb(255,204,128) !important; }

.mdl-color--orange-200 {
  background-color: rgb(255,204,128) !important; }

.mdl-color-text--orange-300 {
  color: rgb(255,183,77) !important; }

.mdl-color--orange-300 {
  background-color: rgb(255,183,77) !important; }

.mdl-color-text--orange-400 {
  color: rgb(255,167,38) !important; }

.mdl-color--orange-400 {
  background-color: rgb(255,167,38) !important; }

.mdl-color-text--orange-500 {
  color: rgb(255,152,0) !important; }

.mdl-color--orange-500 {
  background-color: rgb(255,152,0) !important; }

.mdl-color-text--orange-600 {
  color: rgb(251,140,0) !important; }

.mdl-color--orange-600 {
  background-color: rgb(251,140,0) !important; }

.mdl-color-text--orange-700 {
  color: rgb(245,124,0) !important; }

.mdl-color--orange-700 {
  background-color: rgb(245,124,0) !important; }

.mdl-color-text--orange-800 {
  color: rgb(239,108,0) !important; }

.mdl-color--orange-800 {
  background-color: rgb(239,108,0) !important; }

.mdl-color-text--orange-900 {
  color: rgb(230,81,0) !important; }

.mdl-color--orange-900 {
  background-color: rgb(230,81,0) !important; }

.mdl-color-text--orange-A100 {
  color: rgb(255,209,128) !important; }

.mdl-color--orange-A100 {
  background-color: rgb(255,209,128) !important; }

.mdl-color-text--orange-A200 {
  color: rgb(255,171,64) !important; }

.mdl-color--orange-A200 {
  background-color: rgb(255,171,64) !important; }

.mdl-color-text--orange-A400 {
  color: rgb(255,145,0) !important; }

.mdl-color--orange-A400 {
  background-color: rgb(255,145,0) !important; }

.mdl-color-text--orange-A700 {
  color: rgb(255,109,0) !important; }

.mdl-color--orange-A700 {
  background-color: rgb(255,109,0) !important; }

.mdl-color-text--deep-orange {
  color: rgb(255,87,34) !important; }

.mdl-color--deep-orange {
  background-color: rgb(255,87,34) !important; }

.mdl-color-text--deep-orange-50 {
  color: rgb(251,233,231) !important; }

.mdl-color--deep-orange-50 {
  background-color: rgb(251,233,231) !important; }

.mdl-color-text--deep-orange-100 {
  color: rgb(255,204,188) !important; }

.mdl-color--deep-orange-100 {
  background-color: rgb(255,204,188) !important; }

.mdl-color-text--deep-orange-200 {
  color: rgb(255,171,145) !important; }

.mdl-color--deep-orange-200 {
  background-color: rgb(255,171,145) !important; }

.mdl-color-text--deep-orange-300 {
  color: rgb(255,138,101) !important; }

.mdl-color--deep-orange-300 {
  background-color: rgb(255,138,101) !important; }

.mdl-color-text--deep-orange-400 {
  color: rgb(255,112,67) !important; }

.mdl-color--deep-orange-400 {
  background-color: rgb(255,112,67) !important; }

.mdl-color-text--deep-orange-500 {
  color: rgb(255,87,34) !important; }

.mdl-color--deep-orange-500 {
  background-color: rgb(255,87,34) !important; }

.mdl-color-text--deep-orange-600 {
  color: rgb(244,81,30) !important; }

.mdl-color--deep-orange-600 {
  background-color: rgb(244,81,30) !important; }

.mdl-color-text--deep-orange-700 {
  color: rgb(230,74,25) !important; }

.mdl-color--deep-orange-700 {
  background-color: rgb(230,74,25) !important; }

.mdl-color-text--deep-orange-800 {
  color: rgb(216,67,21) !important; }

.mdl-color--deep-orange-800 {
  background-color: rgb(216,67,21) !important; }

.mdl-color-text--deep-orange-900 {
  color: rgb(191,54,12) !important; }

.mdl-color--deep-orange-900 {
  background-color: rgb(191,54,12) !important; }

.mdl-color-text--deep-orange-A100 {
  color: rgb(255,158,128) !important; }

.mdl-color--deep-orange-A100 {
  background-color: rgb(255,158,128) !important; }

.mdl-color-text--deep-orange-A200 {
  color: rgb(255,110,64) !important; }

.mdl-color--deep-orange-A200 {
  background-color: rgb(255,110,64) !important; }

.mdl-color-text--deep-orange-A400 {
  color: rgb(255,61,0) !important; }

.mdl-color--deep-orange-A400 {
  background-color: rgb(255,61,0) !important; }

.mdl-color-text--deep-orange-A700 {
  color: rgb(221,44,0) !important; }

.mdl-color--deep-orange-A700 {
  background-color: rgb(221,44,0) !important; }

.mdl-color-text--brown {
  color: rgb(121,85,72) !important; }

.mdl-color--brown {
  background-color: rgb(121,85,72) !important; }

.mdl-color-text--brown-50 {
  color: rgb(239,235,233) !important; }

.mdl-color--brown-50 {
  background-color: rgb(239,235,233) !important; }

.mdl-color-text--brown-100 {
  color: rgb(215,204,200) !important; }

.mdl-color--brown-100 {
  background-color: rgb(215,204,200) !important; }

.mdl-color-text--brown-200 {
  color: rgb(188,170,164) !important; }

.mdl-color--brown-200 {
  background-color: rgb(188,170,164) !important; }

.mdl-color-text--brown-300 {
  color: rgb(161,136,127) !important; }

.mdl-color--brown-300 {
  background-color: rgb(161,136,127) !important; }

.mdl-color-text--brown-400 {
  color: rgb(141,110,99) !important; }

.mdl-color--brown-400 {
  background-color: rgb(141,110,99) !important; }

.mdl-color-text--brown-500 {
  color: rgb(121,85,72) !important; }

.mdl-color--brown-500 {
  background-color: rgb(121,85,72) !important; }

.mdl-color-text--brown-600 {
  color: rgb(109,76,65) !important; }

.mdl-color--brown-600 {
  background-color: rgb(109,76,65) !important; }

.mdl-color-text--brown-700 {
  color: rgb(93,64,55) !important; }

.mdl-color--brown-700 {
  background-color: rgb(93,64,55) !important; }

.mdl-color-text--brown-800 {
  color: rgb(78,52,46) !important; }

.mdl-color--brown-800 {
  background-color: rgb(78,52,46) !important; }

.mdl-color-text--brown-900 {
  color: rgb(62,39,35) !important; }

.mdl-color--brown-900 {
  background-color: rgb(62,39,35) !important; }

.mdl-color-text--grey {
  color: rgb(158,158,158) !important; }

.mdl-color--grey {
  background-color: rgb(158,158,158) !important; }

.mdl-color-text--grey-50 {
  color: rgb(250,250,250) !important; }

.mdl-color--grey-50 {
  background-color: rgb(250,250,250) !important; }

.mdl-color-text--grey-100 {
  color: rgb(245,245,245) !important; }

.mdl-color--grey-100 {
  background-color: rgb(245,245,245) !important; }

.mdl-color-text--grey-200 {
  color: rgb(238,238,238) !important; }

.mdl-color--grey-200 {
  background-color: rgb(238,238,238) !important; }

.mdl-color-text--grey-300 {
  color: rgb(224,224,224) !important; }

.mdl-color--grey-300 {
  background-color: rgb(224,224,224) !important; }

.mdl-color-text--grey-400 {
  color: rgb(189,189,189) !important; }

.mdl-color--grey-400 {
  background-color: rgb(189,189,189) !important; }

.mdl-color-text--grey-500 {
  color: rgb(158,158,158) !important; }

.mdl-color--grey-500 {
  background-color: rgb(158,158,158) !important; }

.mdl-color-text--grey-600 {
  color: rgb(117,117,117) !important; }

.mdl-color--grey-600 {
  background-color: rgb(117,117,117) !important; }

.mdl-color-text--grey-700 {
  color: rgb(97,97,97) !important; }

.mdl-color--grey-700 {
  background-color: rgb(97,97,97) !important; }

.mdl-color-text--grey-800 {
  color: rgb(66,66,66) !important; }

.mdl-color--grey-800 {
  background-color: rgb(66,66,66) !important; }

.mdl-color-text--grey-900 {
  color: rgb(33,33,33) !important; }

.mdl-color--grey-900 {
  background-color: rgb(33,33,33) !important; }

.mdl-color-text--blue-grey {
  color: rgb(96,125,139) !important; }

.mdl-color--blue-grey {
  background-color: rgb(96,125,139) !important; }

.mdl-color-text--blue-grey-50 {
  color: rgb(236,239,241) !important; }

.mdl-color--blue-grey-50 {
  background-color: rgb(236,239,241) !important; }

.mdl-color-text--blue-grey-100 {
  color: rgb(207,216,220) !important; }

.mdl-color--blue-grey-100 {
  background-color: rgb(207,216,220) !important; }

.mdl-color-text--blue-grey-200 {
  color: rgb(176,190,197) !important; }

.mdl-color--blue-grey-200 {
  background-color: rgb(176,190,197) !important; }

.mdl-color-text--blue-grey-300 {
  color: rgb(144,164,174) !important; }

.mdl-color--blue-grey-300 {
  background-color: rgb(144,164,174) !important; }

.mdl-color-text--blue-grey-400 {
  color: rgb(120,144,156) !important; }

.mdl-color--blue-grey-400 {
  background-color: rgb(120,144,156) !important; }

.mdl-color-text--blue-grey-500 {
  color: rgb(96,125,139) !important; }

.mdl-color--blue-grey-500 {
  background-color: rgb(96,125,139) !important; }

.mdl-color-text--blue-grey-600 {
  color: rgb(84,110,122) !important; }

.mdl-color--blue-grey-600 {
  background-color: rgb(84,110,122) !important; }

.mdl-color-text--blue-grey-700 {
  color: rgb(69,90,100) !important; }

.mdl-color--blue-grey-700 {
  background-color: rgb(69,90,100) !important; }

.mdl-color-text--blue-grey-800 {
  color: rgb(55,71,79) !important; }

.mdl-color--blue-grey-800 {
  background-color: rgb(55,71,79) !important; }

.mdl-color-text--blue-grey-900 {
  color: rgb(38,50,56) !important; }

.mdl-color--blue-grey-900 {
  background-color: rgb(38,50,56) !important; }

.mdl-color--black {
  background-color: rgb(0,0,0) !important; }

.mdl-color-text--black {
  color: rgb(0,0,0) !important; }

.mdl-color--white {
  background-color: rgb(255,255,255) !important; }

.mdl-color-text--white {
  color: rgb(255,255,255) !important; }

.mdl-color--primary {
  background-color: rgb(63,81,181) !important; }

.mdl-color--primary-contrast {
  background-color: rgb(255,255,255) !important; }

.mdl-color--primary-dark {
  background-color: rgb(48,63,159) !important; }

.mdl-color--accent {
  background-color: rgb(255,64,129) !important; }

.mdl-color--accent-contrast {
  background-color: rgb(255,255,255) !important; }

.mdl-color-text--primary {
  color: rgb(63,81,181) !important; }

.mdl-color-text--primary-contrast {
  color: rgb(255,255,255) !important; }

.mdl-color-text--primary-dark {
  color: rgb(48,63,159) !important; }

.mdl-color-text--accent {
  color: rgb(255,64,129) !important; }

.mdl-color-text--accent-contrast {
  color: rgb(255,255,255) !important; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-ripple {
  background: rgb(0,0,0);
  border-radius: 50%;
  height: 50px;
  left: 0;
  opacity: 0;
  pointer-events: none;
  position: absolute;
  top: 0;
  transform: translate(-50%, -50%);
  width: 50px;
  overflow: hidden; }
  .mdl-ripple.is-animating {
    transition: transform 0.3s cubic-bezier(0, 0, 0.2, 1), width 0.3s cubic-bezier(0, 0, 0.2, 1), height 0.3s cubic-bezier(0, 0, 0.2, 1), opacity 0.6s cubic-bezier(0, 0, 0.2, 1); }
  .mdl-ripple.is-visible {
    opacity: 0.3; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-animation--default {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }

.mdl-animation--fast-out-slow-in {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }

.mdl-animation--linear-out-slow-in {
  transition-timing-function: cubic-bezier(0, 0, 0.2, 1); }

.mdl-animation--fast-out-linear-in {
  transition-timing-function: cubic-bezier(0.4, 0, 1, 1); }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-badge {
  position: relative;
  white-space: nowrap;
  margin-right: 24px; }
  .mdl-badge:not([data-badge]) {
    margin-right: auto; }
  .mdl-badge[data-badge]:after {
    content: attr(data-badge);
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-content: center;
    align-items: center;
    position: absolute;
    top: -11px;
    right: -24px;
    font-family: "Roboto", "Helvetica", "Arial", sans-serif;
    font-weight: 600;
    font-size: 12px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: rgb(255,64,129);
    color: rgb(255,255,255); }
    .mdl-button .mdl-badge[data-badge]:after {
      top: -10px;
      right: -5px; }
  .mdl-badge.mdl-badge--no-background[data-badge]:after {
    color: rgb(255,64,129);
    background: rgb(255,255,255);
    box-shadow: 0 0 1px gray; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-button {
  background: transparent;
  border: none;
  border-radius: 2px;
  color: rgb(0,0,0);
  position: relative;
  height: 36px;
  min-width: 64px;
  padding: 0 16px;
  display: inline-block;
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 14px;
  font-weight: 500;
  text-transform: uppercase;
  line-height: 1;
  letter-spacing: 0;
  overflow: hidden;
  will-change: box-shadow, transform;
  transition: box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  outline: none;
  cursor: pointer;
  text-decoration: none;
  text-align: center;
  line-height: 36px;
  vertical-align: middle; }
  .mdl-button::-moz-focus-inner {
    border: 0; }
  .mdl-button:hover {
    background-color: rgba(158,158,158, 0.20); }
  .mdl-button:focus:not(:active) {
    background-color: rgba(0,0,0, 0.12); }
  .mdl-button:active {
    background-color: rgba(158,158,158, 0.40); }
  .mdl-button.mdl-button--colored {
    color: rgb(63,81,181); }
    .mdl-button.mdl-button--colored:focus:not(:active) {
      background-color: rgba(0,0,0, 0.12); }

input.mdl-button[type="submit"] {
  -webkit-appearance: none; }

.mdl-button--raised {
  background: rgba(158,158,158, 0.20);
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }
  .mdl-button--raised:active {
    box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2);
    background-color: rgba(158,158,158, 0.40); }
  .mdl-button--raised:focus:not(:active) {
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36);
    background-color: rgba(158,158,158, 0.40); }
  .mdl-button--raised.mdl-button--colored {
    background: rgb(63,81,181);
    color: rgb(255,255,255); }
    .mdl-button--raised.mdl-button--colored:hover {
      background-color: rgb(63,81,181); }
    .mdl-button--raised.mdl-button--colored:active {
      background-color: rgb(63,81,181); }
    .mdl-button--raised.mdl-button--colored:focus:not(:active) {
      background-color: rgb(63,81,181); }
    .mdl-button--raised.mdl-button--colored .mdl-ripple {
      background: rgb(255,255,255); }

.mdl-button--fab {
  border-radius: 50%;
  font-size: 24px;
  height: 56px;
  margin: auto;
  min-width: 56px;
  width: 56px;
  padding: 0;
  overflow: hidden;
  background: rgba(158,158,158, 0.20);
  box-shadow: 0 1px 1.5px 0 rgba(0, 0, 0, 0.12), 0 1px 1px 0 rgba(0, 0, 0, 0.24);
  position: relative;
  line-height: normal; }
  .mdl-button--fab .material-icons {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-12px, -12px);
    line-height: 24px;
    width: 24px; }
  .mdl-button--fab.mdl-button--mini-fab {
    height: 40px;
    min-width: 40px;
    width: 40px; }
  .mdl-button--fab .mdl-button__ripple-container {
    border-radius: 50%;
    -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }
  .mdl-button--fab:active {
    box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2);
    background-color: rgba(158,158,158, 0.40); }
  .mdl-button--fab:focus:not(:active) {
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.18), 0 8px 16px rgba(0, 0, 0, 0.36);
    background-color: rgba(158,158,158, 0.40); }
  .mdl-button--fab.mdl-button--colored {
    background: rgb(255,64,129);
    color: rgb(255,255,255); }
    .mdl-button--fab.mdl-button--colored:hover {
      background-color: rgb(255,64,129); }
    .mdl-button--fab.mdl-button--colored:focus:not(:active) {
      background-color: rgb(255,64,129); }
    .mdl-button--fab.mdl-button--colored:active {
      background-color: rgb(255,64,129); }
    .mdl-button--fab.mdl-button--colored .mdl-ripple {
      background: rgb(255,255,255); }

.mdl-button--icon {
  border-radius: 50%;
  font-size: 24px;
  height: 32px;
  margin-left: 0;
  margin-right: 0;
  min-width: 32px;
  width: 32px;
  padding: 0;
  overflow: hidden;
  color: inherit;
  line-height: normal; }
  .mdl-button--icon .material-icons {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-12px, -12px);
    line-height: 24px;
    width: 24px; }
  .mdl-button--icon.mdl-button--mini-icon {
    height: 24px;
    min-width: 24px;
    width: 24px; }
    .mdl-button--icon.mdl-button--mini-icon .material-icons {
      top: 0px;
      left: 0px; }
  .mdl-button--icon .mdl-button__ripple-container {
    border-radius: 50%;
    -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }

.mdl-button__ripple-container {
  display: block;
  height: 100%;
  left: 0px;
  position: absolute;
  top: 0px;
  width: 100%;
  z-index: 0;
  overflow: hidden; }
  .mdl-button[disabled] .mdl-button__ripple-container .mdl-ripple,
  .mdl-button.mdl-button--disabled .mdl-button__ripple-container .mdl-ripple {
    background-color: transparent; }

.mdl-button--primary.mdl-button--primary {
  color: rgb(63,81,181); }
  .mdl-button--primary.mdl-button--primary .mdl-ripple {
    background: rgb(255,255,255); }
  .mdl-button--primary.mdl-button--primary.mdl-button--raised, .mdl-button--primary.mdl-button--primary.mdl-button--fab {
    color: rgb(255,255,255);
    background-color: rgb(63,81,181); }

.mdl-button--accent.mdl-button--accent {
  color: rgb(255,64,129); }
  .mdl-button--accent.mdl-button--accent .mdl-ripple {
    background: rgb(255,255,255); }
  .mdl-button--accent.mdl-button--accent.mdl-button--raised, .mdl-button--accent.mdl-button--accent.mdl-button--fab {
    color: rgb(255,255,255);
    background-color: rgb(255,64,129); }

.mdl-button[disabled][disabled], .mdl-button.mdl-button--disabled.mdl-button--disabled {
  color: rgba(0,0,0, 0.26);
  cursor: default;
  background-color: transparent; }

.mdl-button--fab[disabled][disabled], .mdl-button--fab.mdl-button--disabled.mdl-button--disabled {
  background-color: rgba(0,0,0, 0.12);
  color: rgba(0,0,0, 0.26);
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }

.mdl-button--raised[disabled][disabled], .mdl-button--raised.mdl-button--disabled.mdl-button--disabled {
  background-color: rgba(0,0,0, 0.12);
  color: rgba(0,0,0, 0.26);
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }

.mdl-button--colored[disabled][disabled], .mdl-button--colored.mdl-button--disabled.mdl-button--disabled {
  color: rgba(0,0,0, 0.26); }

.mdl-button .material-icons {
  vertical-align: middle; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-card {
  display: flex;
  flex-direction: column;
  font-size: 16px;
  font-weight: 400;
  min-height: 200px;
  overflow: hidden;
  width: 330px;
  z-index: 1;
  position: relative;
  background: rgb(255,255,255);
  border-radius: 2px;
  box-sizing: border-box; }

.mdl-card__media {
  background-color: rgb(255,64,129);
  background-repeat: repeat;
  background-position: 50% 50%;
  background-size: cover;
  background-origin: padding-box;
  background-attachment: scroll;
  box-sizing: border-box; }

.mdl-card__title {
  align-items: center;
  color: rgb(0,0,0);
  display: block;
  display: flex;
  justify-content: stretch;
  line-height: normal;
  padding: 16px 16px;
  perspective-origin: 165px 56px;
  transform-origin: 165px 56px;
  box-sizing: border-box; }
  .mdl-card__title.mdl-card--border {
    border-bottom: 1px solid rgba(0, 0, 0, 0.1); }

.mdl-card__title-text {
  align-self: flex-end;
  color: inherit;
  display: block;
  display: flex;
  font-size: 24px;
  font-weight: 300;
  line-height: normal;
  overflow: hidden;
  transform-origin: 149px 48px;
  margin: 0; }

.mdl-card__subtitle-text {
  font-size: 14px;
  color: rgba(0,0,0, 0.54);
  margin: 0; }

.mdl-card__supporting-text {
  color: rgba(0,0,0, 0.54);
  font-size: 13px;
  line-height: 18px;
  overflow: hidden;
  padding: 16px 16px;
  width: 90%; }

.mdl-card__actions {
  font-size: 16px;
  line-height: normal;
  width: 100%;
  background-color: rgba(0, 0, 0, 0);
  padding: 8px;
  box-sizing: border-box; }
  .mdl-card__actions.mdl-card--border {
    border-top: 1px solid rgba(0, 0, 0, 0.1); }

.mdl-card--expand {
  flex-grow: 1; }

.mdl-card__menu {
  position: absolute;
  right: 16px;
  top: 16px; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-checkbox {
  position: relative;
  z-index: 1;
  vertical-align: middle;
  display: inline-block;
  box-sizing: border-box;
  width: 100%;
  height: 24px;
  margin: 0;
  padding: 0; }
  .mdl-checkbox.is-upgraded {
    padding-left: 24px; }

.mdl-checkbox__input {
  line-height: 24px; }
  .mdl-checkbox.is-upgraded .mdl-checkbox__input {
    position: absolute;
    width: 0;
    height: 0;
    margin: 0;
    padding: 0;
    opacity: 0;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    border: none; }

.mdl-checkbox__box-outline {
  position: absolute;
  top: 3px;
  left: 0;
  display: inline-block;
  box-sizing: border-box;
  width: 16px;
  height: 16px;
  margin: 0;
  cursor: pointer;
  overflow: hidden;
  border: 2px solid rgba(0,0,0, 0.54);
  border-radius: 2px;
  z-index: 2; }
  .mdl-checkbox.is-checked .mdl-checkbox__box-outline {
    border: 2px solid rgb(63,81,181); }
  .mdl-checkbox.is-disabled .mdl-checkbox__box-outline {
    border: 2px solid rgba(0,0,0, 0.26);
    cursor: auto; }

.mdl-checkbox__focus-helper {
  position: absolute;
  top: 3px;
  left: 0;
  display: inline-block;
  box-sizing: border-box;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background-color: transparent; }
  .mdl-checkbox.is-focused .mdl-checkbox__focus-helper {
    box-shadow: 0 0 0px 8px rgba(0, 0, 0, 0.1);
    background-color: rgba(0, 0, 0, 0.1); }
  .mdl-checkbox.is-focused.is-checked .mdl-checkbox__focus-helper {
    box-shadow: 0 0 0px 8px rgba(63,81,181, 0.26);
    background-color: rgba(63,81,181, 0.26); }

.mdl-checkbox__tick-outline {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  -webkit-mask: url("/images/tick-mask.svg?embed");
          mask: url("/images/tick-mask.svg?embed");
  background: transparent;
  transition-duration: 0.28s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-property: background; }
  .mdl-checkbox.is-checked .mdl-checkbox__tick-outline {
    background: rgb(63,81,181) url("/images/tick.svg?embed"); }
  .mdl-checkbox.is-checked.is-disabled .mdl-checkbox__tick-outline {
    background: rgba(0,0,0, 0.26) url("/images/tick.svg?embed"); }

.mdl-checkbox__label {
  position: relative;
  cursor: pointer;
  font-size: 16px;
  line-height: 24px;
  margin: 0; }
  .mdl-checkbox.is-disabled .mdl-checkbox__label {
    color: rgba(0,0,0, 0.26);
    cursor: auto; }

.mdl-checkbox__ripple-container {
  position: absolute;
  z-index: 2;
  top: -6px;
  left: -10px;
  box-sizing: border-box;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  cursor: pointer;
  overflow: hidden;
  -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }
  .mdl-checkbox__ripple-container .mdl-ripple {
    background: rgb(63,81,181); }
  .mdl-checkbox.is-disabled .mdl-checkbox__ripple-container {
    cursor: auto; }
  .mdl-checkbox.is-disabled .mdl-checkbox__ripple-container .mdl-ripple {
    background: transparent; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-data-table {
  position: relative;
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-collapse: collapse;
  white-space: nowrap;
  font-size: 13px;
  background-color: rgb(255,255,255); }
  .mdl-data-table thead {
    padding-bottom: 3px; }
    .mdl-data-table thead .mdl-data-table__select {
      margin-top: 0; }
  .mdl-data-table tbody tr {
    position: relative;
    height: 48px;
    transition-duration: 0.28s;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-property: background-color; }
    .mdl-data-table tbody tr.is-selected {
      background-color: #e0e0e0; }
    .mdl-data-table tbody tr:hover {
      background-color: #eeeeee; }
  .mdl-data-table td, .mdl-data-table th {
    padding: 0 18px 0 18px;
    text-align: right; }
    .mdl-data-table td:first-of-type, .mdl-data-table th:first-of-type {
      padding-left: 24px; }
    .mdl-data-table td:last-of-type, .mdl-data-table th:last-of-type {
      padding-right: 24px; }
  .mdl-data-table td {
    position: relative;
    vertical-align: top;
    height: 48px;
    border-top: 1px solid rgba(0, 0, 0, 0.12);
    border-bottom: 1px solid rgba(0, 0, 0, 0.12);
    padding-top: 12px;
    box-sizing: border-box; }
    .mdl-data-table td .mdl-data-table__select {
      vertical-align: top;
      position: absolute;
      left: 24px; }
  .mdl-data-table th {
    position: relative;
    vertical-align: bottom;
    text-overflow: ellipsis;
    font-size: 14px;
    font-weight: bold;
    line-height: 24px;
    letter-spacing: 0;
    height: 48px;
    font-size: 12px;
    color: rgba(0, 0, 0, 0.54);
    padding-bottom: 8px;
    box-sizing: border-box; }
    .mdl-data-table th .mdl-data-table__select {
      position: absolute;
      bottom: 8px;
      left: 24px; }

.mdl-data-table__select {
  width: 16px; }

.mdl-data-table__cell--non-numeric.mdl-data-table__cell--non-numeric {
  text-align: left; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-mega-footer {
  padding: 16px 40px;
  color: rgb(158,158,158);
  background-color: rgb(66,66,66); }

.mdl-mega-footer--top-section:after,
.mdl-mega-footer--middle-section:after,
.mdl-mega-footer--bottom-section:after,
.mdl-mega-footer__top-section:after,
.mdl-mega-footer__middle-section:after,
.mdl-mega-footer__bottom-section:after {
  content: '';
  display: block;
  clear: both; }

.mdl-mega-footer--left-section,
.mdl-mega-footer__left-section {
  margin-bottom: 16px; }

.mdl-mega-footer--right-section,
.mdl-mega-footer__right-section {
  margin-bottom: 16px; }

.mdl-mega-footer--right-section a,
.mdl-mega-footer__right-section a {
  display: block;
  margin-bottom: 16px;
  color: inherit;
  text-decoration: none; }

@media screen and (min-width: 760px) {
  .mdl-mega-footer--left-section,
  .mdl-mega-footer__left-section {
    float: left; }
  .mdl-mega-footer--right-section,
  .mdl-mega-footer__right-section {
    float: right; }
  .mdl-mega-footer--right-section a,
  .mdl-mega-footer__right-section a {
    display: inline-block;
    margin-left: 16px;
    line-height: 36px;
    vertical-align: middle; } }

.mdl-mega-footer--social-btn,
.mdl-mega-footer__social-btn {
  width: 36px;
  height: 36px;
  padding: 0;
  margin: 0;
  background-color: rgb(158,158,158);
  border: none; }

.mdl-mega-footer--drop-down-section,
.mdl-mega-footer__drop-down-section {
  display: block;
  position: relative; }

@media screen and (min-width: 760px) {
  .mdl-mega-footer--drop-down-section,
  .mdl-mega-footer__drop-down-section {
    width: 33%; }
  .mdl-mega-footer--drop-down-section:nth-child(1),
  .mdl-mega-footer--drop-down-section:nth-child(2),
  .mdl-mega-footer__drop-down-section:nth-child(1),
  .mdl-mega-footer__drop-down-section:nth-child(2) {
    float: left; }
  .mdl-mega-footer--drop-down-section:nth-child(3),
  .mdl-mega-footer__drop-down-section:nth-child(3) {
    float: right; }
    .mdl-mega-footer--drop-down-section:nth-child(3):after,
    .mdl-mega-footer__drop-down-section:nth-child(3):after {
      clear: right; }
  .mdl-mega-footer--drop-down-section:nth-child(4),
  .mdl-mega-footer__drop-down-section:nth-child(4) {
    clear: right;
    float: right; }
  .mdl-mega-footer--middle-section:after,
  .mdl-mega-footer__middle-section:after {
    content: '';
    display: block;
    clear: both; }
  .mdl-mega-footer--bottom-section,
  .mdl-mega-footer__bottom-section {
    padding-top: 0; } }

@media screen and (min-width: 1024px) {
  .mdl-mega-footer--drop-down-section,
  .mdl-mega-footer--drop-down-section:nth-child(3),
  .mdl-mega-footer--drop-down-section:nth-child(4),
  .mdl-mega-footer__drop-down-section,
  .mdl-mega-footer__drop-down-section:nth-child(3),
  .mdl-mega-footer__drop-down-section:nth-child(4) {
    width: 24%;
    float: left; } }

.mdl-mega-footer--heading-checkbox,
.mdl-mega-footer__heading-checkbox {
  position: absolute;
  width: 100%;
  height: 55.8px;
  padding: 32px;
  margin: 0;
  margin-top: -16px;
  cursor: pointer;
  z-index: 1;
  opacity: 0; }
  .mdl-mega-footer--heading-checkbox + .mdl-mega-footer--heading:after,
  .mdl-mega-footer--heading-checkbox + .mdl-mega-footer__heading:after,
  .mdl-mega-footer__heading-checkbox + .mdl-mega-footer--heading:after,
  .mdl-mega-footer__heading-checkbox + .mdl-mega-footer__heading:after {
    font-family: 'Material Icons';
    content: '\E5CE'; }

.mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer--link-list,
.mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer__link-list,
.mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer--heading + .mdl-mega-footer--link-list,
.mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer__heading + .mdl-mega-footer__link-list,
.mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer--link-list,
.mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer__link-list,
.mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer--heading + .mdl-mega-footer--link-list,
.mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer__heading + .mdl-mega-footer__link-list {
  display: none; }

.mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer--heading:after,
.mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer__heading:after,
.mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer--heading:after,
.mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer__heading:after {
  font-family: 'Material Icons';
  content: '\E5CF'; }

.mdl-mega-footer--heading,
.mdl-mega-footer__heading {
  position: relative;
  width: 100%;
  padding-right: 39.8px;
  margin-bottom: 16px;
  box-sizing: border-box;
  font-size: 14px;
  line-height: 23.8px;
  font-weight: 500;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  color: rgb(224,224,224); }

.mdl-mega-footer--heading:after,
.mdl-mega-footer__heading:after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  display: block;
  width: 23.8px;
  height: 23.8px;
  background-size: cover; }

.mdl-mega-footer--link-list,
.mdl-mega-footer__link-list {
  list-style: none;
  margin: 0;
  padding: 0;
  margin-bottom: 32px; }
  .mdl-mega-footer--link-list:after,
  .mdl-mega-footer__link-list:after {
    clear: both;
    display: block;
    content: ''; }

.mdl-mega-footer--link-list li,
.mdl-mega-footer__link-list li {
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0;
  line-height: 20px; }

.mdl-mega-footer--link-list a,
.mdl-mega-footer__link-list a {
  color: inherit;
  text-decoration: none;
  white-space: nowrap; }

@media screen and (min-width: 760px) {
  .mdl-mega-footer--heading-checkbox,
  .mdl-mega-footer__heading-checkbox {
    display: none; }
    .mdl-mega-footer--heading-checkbox + .mdl-mega-footer--heading:after,
    .mdl-mega-footer--heading-checkbox + .mdl-mega-footer__heading:after,
    .mdl-mega-footer__heading-checkbox + .mdl-mega-footer--heading:after,
    .mdl-mega-footer__heading-checkbox + .mdl-mega-footer__heading:after {
      background-image: none; }
  .mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer--link-list,
  .mdl-mega-footer--heading-checkbox:checked ~ .mdl-mega-footer__link-list,
  .mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer__heading + .mdl-mega-footer__link-list,
  .mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer--heading + .mdl-mega-footer--link-list,
  .mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer--link-list,
  .mdl-mega-footer__heading-checkbox:checked ~ .mdl-mega-footer__link-list,
  .mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer__heading + .mdl-mega-footer__link-list,
  .mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer--heading + .mdl-mega-footer--link-list {
    display: block; }
  .mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer--heading:after,
  .mdl-mega-footer--heading-checkbox:checked + .mdl-mega-footer__heading:after,
  .mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer--heading:after,
  .mdl-mega-footer__heading-checkbox:checked + .mdl-mega-footer__heading:after {
    content: ''; } }

.mdl-mega-footer--bottom-section,
.mdl-mega-footer__bottom-section {
  padding-top: 16px;
  margin-bottom: 16px; }

.mdl-logo {
  margin-bottom: 16px;
  color: white; }

.mdl-mega-footer--bottom-section .mdl-mega-footer--link-list li,
.mdl-mega-footer__bottom-section .mdl-mega-footer__link-list li {
  float: left;
  margin-bottom: 0;
  margin-right: 16px; }

@media screen and (min-width: 760px) {
  .mdl-logo {
    float: left;
    margin-bottom: 0;
    margin-right: 16px; } }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-mini-footer {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
  padding: 32px 16px;
  color: rgb(158,158,158);
  background-color: rgb(66,66,66); }
  .mdl-mini-footer:after {
    content: '';
    display: block; }
  .mdl-mini-footer .mdl-logo {
    line-height: 36px; }

.mdl-mini-footer--link-list,
.mdl-mini-footer__link-list {
  display: flex;
  flex-flow: row nowrap;
  list-style: none;
  margin: 0;
  padding: 0; }
  .mdl-mini-footer--link-list li,
  .mdl-mini-footer__link-list li {
    margin-bottom: 0;
    margin-right: 16px; }
    @media screen and (min-width: 760px) {
      .mdl-mini-footer--link-list li,
      .mdl-mini-footer__link-list li {
        line-height: 36px; } }
  .mdl-mini-footer--link-list a,
  .mdl-mini-footer__link-list a {
    color: inherit;
    text-decoration: none;
    white-space: nowrap; }

.mdl-mini-footer--left-section,
.mdl-mini-footer__left-section {
  display: inline-block;
  order: 0; }

.mdl-mini-footer--right-section,
.mdl-mini-footer__right-section {
  display: inline-block;
  order: 1; }

.mdl-mini-footer--social-btn,
.mdl-mini-footer__social-btn {
  width: 36px;
  height: 36px;
  padding: 0;
  margin: 0;
  background-color: rgb(158,158,158);
  border: none; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-icon-toggle {
  position: relative;
  z-index: 1;
  vertical-align: middle;
  display: inline-block;
  height: 32px;
  margin: 0;
  padding: 0; }

.mdl-icon-toggle__input {
  line-height: 32px; }
  .mdl-icon-toggle.is-upgraded .mdl-icon-toggle__input {
    position: absolute;
    width: 0;
    height: 0;
    margin: 0;
    padding: 0;
    opacity: 0;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    border: none; }

.mdl-icon-toggle__label {
  display: inline-block;
  position: relative;
  cursor: pointer;
  height: 32px;
  width: 32px;
  min-width: 32px;
  color: rgb(97,97,97);
  border-radius: 50%;
  padding: 0;
  margin-left: 0;
  margin-right: 0;
  text-align: center;
  background-color: transparent;
  will-change: background-color;
  transition: background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1); }
  .mdl-icon-toggle__label.material-icons {
    line-height: 32px;
    font-size: 24px; }
  .mdl-icon-toggle.is-checked .mdl-icon-toggle__label {
    color: rgb(63,81,181); }
  .mdl-icon-toggle.is-disabled .mdl-icon-toggle__label {
    color: rgba(0,0,0, 0.26);
    cursor: auto;
    transition: none; }
  .mdl-icon-toggle.is-focused .mdl-icon-toggle__label {
    background-color: rgba(0,0,0, 0.12); }
  .mdl-icon-toggle.is-focused.is-checked .mdl-icon-toggle__label {
    background-color: rgba(63,81,181, 0.26); }

.mdl-icon-toggle__ripple-container {
  position: absolute;
  z-index: 2;
  top: -2px;
  left: -2px;
  box-sizing: border-box;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  cursor: pointer;
  overflow: hidden;
  -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }
  .mdl-icon-toggle__ripple-container .mdl-ripple {
    background: rgb(97,97,97); }
  .mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container {
    cursor: auto; }
  .mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container .mdl-ripple {
    background: transparent; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-menu__container {
  display: block;
  margin: 0;
  padding: 0;
  border: none;
  position: absolute;
  overflow: visible;
  height: 0;
  width: 0;
  visibility: hidden;
  z-index: -1; }
  .mdl-menu__container.is-visible, .mdl-menu__container.is-animating {
    z-index: 999;
    visibility: visible; }

.mdl-menu__outline {
  display: block;
  background: rgb(255,255,255);
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 2px;
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden;
  opacity: 0;
  transform: scale(0);
  transform-origin: 0 0;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
  will-change: transform;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: -1; }
  .mdl-menu__container.is-visible .mdl-menu__outline {
    opacity: 1;
    transform: scale(1);
    z-index: 999; }
  .mdl-menu__outline.mdl-menu--bottom-right {
    transform-origin: 100% 0; }
  .mdl-menu__outline.mdl-menu--top-left {
    transform-origin: 0 100%; }
  .mdl-menu__outline.mdl-menu--top-right {
    transform-origin: 100% 100%; }

.mdl-menu {
  position: absolute;
  list-style: none;
  top: 0;
  left: 0;
  height: auto;
  width: auto;
  min-width: 124px;
  padding: 8px 0;
  margin: 0;
  opacity: 0;
  clip: rect(0 0 0 0);
  z-index: -1; }
  .mdl-menu__container.is-visible .mdl-menu {
    opacity: 1;
    z-index: 999; }
  .mdl-menu.is-animating {
    transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1), clip 0.3s cubic-bezier(0.4, 0, 0.2, 1); }
  .mdl-menu.mdl-menu--bottom-right {
    left: auto;
    right: 0; }
  .mdl-menu.mdl-menu--top-left {
    top: auto;
    bottom: 0; }
  .mdl-menu.mdl-menu--top-right {
    top: auto;
    left: auto;
    bottom: 0;
    right: 0; }
  .mdl-menu.mdl-menu--unaligned {
    top: auto;
    left: auto; }

.mdl-menu__item {
  display: block;
  border: none;
  color: rgba(0,0,0, 0.87);
  background-color: transparent;
  text-align: left;
  margin: 0;
  padding: 0 16px;
  outline-color: rgb(189,189,189);
  position: relative;
  overflow: hidden;
  font-size: 14px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0;
  text-decoration: none;
  cursor: pointer;
  height: 48px;
  line-height: 48px;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none; }
  .mdl-menu__container.is-visible .mdl-menu__item {
    opacity: 1; }
  .mdl-menu__item::-moz-focus-inner {
    border: 0; }
  .mdl-menu__item[disabled] {
    color: rgb(189,189,189);
    background-color: transparent;
    cursor: auto; }
    .mdl-menu__item[disabled]:hover {
      background-color: transparent; }
    .mdl-menu__item[disabled]:focus {
      background-color: transparent; }
    .mdl-menu__item[disabled] .mdl-ripple {
      background: transparent; }
  .mdl-menu__item:hover {
    background-color: rgb(238,238,238); }
  .mdl-menu__item:focus {
    outline: none;
    background-color: rgb(238,238,238); }
  .mdl-menu__item:active {
    background-color: rgb(224,224,224); }

.mdl-menu__item--ripple-container {
  display: block;
  height: 100%;
  left: 0px;
  position: absolute;
  top: 0px;
  width: 100%;
  z-index: 0;
  overflow: hidden; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-progress {
  display: block;
  position: relative;
  height: 4px;
  width: 500px; }

.mdl-progress > .bar {
  display: block;
  position: absolute;
  top: 0;
  bottom: 0;
  width: 0%;
  transition: width 0.2s cubic-bezier(0.4, 0, 0.2, 1); }

.mdl-progress > .progressbar {
  background-color: rgb(63,81,181);
  z-index: 1;
  left: 0; }

.mdl-progress > .bufferbar {
  background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181));
  z-index: 0;
  left: 0; }

.mdl-progress > .auxbar {
  right: 0; }

@supports (-webkit-appearance: none) {
  .mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate) > .auxbar {
    background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181));
    -webkit-mask: url("/images/buffer.svg?embed");
            mask: url("/images/buffer.svg?embed"); } }

.mdl-progress:not(.mdl-progress__indeterminate) > .auxbar {
  background-image: linear-gradient(to right, rgba(255,255,255, 0.9), rgba(255,255,255, 0.9)), linear-gradient(to right, rgb(63,81,181), rgb(63,81,181)); }

.mdl-progress.mdl-progress__indeterminate > .bar1 {
  background-color: rgb(63,81,181);
  animation-name: indeterminate1;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-timing-function: linear; }

.mdl-progress.mdl-progress__indeterminate > .bar3 {
  background-image: none;
  background-color: rgb(63,81,181);
  animation-name: indeterminate2;
  animation-duration: 2s;
  animation-iteration-count: infinite;
  animation-timing-function: linear; }

@keyframes indeterminate1 {
  0% {
    left: 0%;
    width: 0%; }
  50% {
    left: 25%;
    width: 75%; }
  75% {
    left: 100%;
    width: 0%; } }

@keyframes indeterminate2 {
  0% {
    left: 0%;
    width: 0%; }
  50% {
    left: 0%;
    width: 0%; }
  75% {
    left: 0%;
    width: 25%; }
  100% {
    left: 100%;
    width: 0%; } }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-navigation {
  display: flex;
  flex-wrap: nowrap;
  box-sizing: border-box; }

.mdl-navigation__link {
  color: rgb(66,66,66);
  text-decoration: none;
  font-weight: 500;
  font-size: 13px;
  margin: 0; }

.mdl-layout {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overflow-x: hidden;
  position: relative;
  -webkit-overflow-scrolling: touch; }

.mdl-layout.is-small-screen .mdl-layout--large-screen-only {
  display: none; }

.mdl-layout:not(.is-small-screen) .mdl-layout--small-screen-only {
  display: none; }

.mdl-layout__container {
  position: absolute;
  width: 100%;
  height: 100%; }

.mdl-layout__title,
.mdl-layout-title {
  display: block;
  position: relative;
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-size: 20px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0.02em;
  font-weight: 400;
  box-sizing: border-box; }

.mdl-layout-spacer {
  flex-grow: 1; }

.mdl-layout__drawer {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  width: 240px;
  height: 100%;
  max-height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
  box-sizing: border-box;
  border-right: 1px solid rgb(224,224,224);
  background: rgb(250,250,250);
  transform: translateX(-250px);
  transform-style: preserve-3d;
  will-change: transform;
  transition-duration: 0.2s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-property: transform;
  color: rgb(66,66,66);
  overflow: visible;
  overflow-y: auto;
  z-index: 5; }
  .mdl-layout__drawer.is-visible {
    transform: translateX(0); }
    .mdl-layout__drawer.is-visible ~ .mdl-layout__content.mdl-layout__content {
      overflow: hidden; }
  .mdl-layout__drawer > * {
    flex-shrink: 0; }
  .mdl-layout__drawer > .mdl-layout__title,
  .mdl-layout__drawer > .mdl-layout-title {
    line-height: 64px;
    padding-left: 40px; }
    @media screen and (max-width: 1024px) {
      .mdl-layout__drawer > .mdl-layout__title,
      .mdl-layout__drawer > .mdl-layout-title {
        line-height: 56px;
        padding-left: 16px; } }
  .mdl-layout__drawer .mdl-navigation {
    flex-direction: column;
    align-items: stretch;
    padding-top: 16px; }
    .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
      display: block;
      flex-shrink: 0;
      padding: 16px 40px;
      margin: 0;
      color: #757575; }
      @media screen and (max-width: 1024px) {
        .mdl-layout__drawer .mdl-navigation .mdl-navigation__link {
          padding: 16px 16px; } }
      .mdl-layout__drawer .mdl-navigation .mdl-navigation__link:hover {
        background-color: rgb(224,224,224); }
      .mdl-layout__drawer .mdl-navigation .mdl-navigation__link--current {
        background-color: rgb(0,0,0);
        color: rgb(224,224,224); }
  @media screen and (min-width: 1025px) {
    .mdl-layout--fixed-drawer > .mdl-layout__drawer {
      transform: translateX(0); } }

.mdl-layout__drawer-button {
  display: block;
  position: absolute;
  height: 48px;
  width: 48px;
  border: 0;
  flex-shrink: 0;
  overflow: hidden;
  text-align: center;
  cursor: pointer;
  font-size: 26px;
  line-height: 50px;
  font-family: Helvetica, Arial, sans-serif;
  margin: 10px 12px;
  top: 0;
  left: 0;
  color: rgb(255,255,255);
  z-index: 4; }
  .mdl-layout__header .mdl-layout__drawer-button {
    position: absolute;
    color: rgb(255,255,255);
    background-color: inherit; }
    @media screen and (max-width: 1024px) {
      .mdl-layout__header .mdl-layout__drawer-button {
        margin: 4px; } }
  @media screen and (max-width: 1024px) {
    .mdl-layout__drawer-button {
      margin: 4px;
      color: rgba(0, 0, 0, 0.5); } }
  @media screen and (min-width: 1025px) {
    .mdl-layout--fixed-drawer > .mdl-layout__drawer-button {
      display: none; } }

.mdl-layout__header {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: flex-start;
  box-sizing: border-box;
  flex-shrink: 0;
  width: 100%;
  margin: 0;
  padding: 0;
  border: none;
  min-height: 64px;
  max-height: 1000px;
  z-index: 3;
  background-color: rgb(63,81,181);
  color: rgb(255,255,255);
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
  transition-duration: 0.2s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-property: max-height, box-shadow; }
  @media screen and (max-width: 1024px) {
    .mdl-layout__header {
      min-height: 56px; } }
  .mdl-layout--fixed-drawer.is-upgraded:not(.is-small-screen) > .mdl-layout__header {
    margin-left: 240px;
    width: calc(100% - 240px); }
  @media screen and (min-width: 1025px) {
    .mdl-layout--fixed-drawer > .mdl-layout__header .mdl-layout__header-row {
      padding-left: 40px; } }
  .mdl-layout__header > .mdl-layout-icon {
    position: absolute;
    left: 40px;
    top: 16px;
    height: 32px;
    width: 32px;
    overflow: hidden;
    z-index: 3;
    display: block; }
    @media screen and (max-width: 1024px) {
      .mdl-layout__header > .mdl-layout-icon {
        left: 16px;
        top: 12px; } }
  .mdl-layout.has-drawer .mdl-layout__header > .mdl-layout-icon {
    display: none; }
  .mdl-layout__header.is-compact {
    max-height: 64px; }
    @media screen and (max-width: 1024px) {
      .mdl-layout__header.is-compact {
        max-height: 56px; } }
  .mdl-layout__header.is-compact.has-tabs {
    height: 112px; }
    @media screen and (max-width: 1024px) {
      .mdl-layout__header.is-compact.has-tabs {
        min-height: 104px; } }
  @media screen and (max-width: 1024px) {
    .mdl-layout__header {
      display: none; }
    .mdl-layout--fixed-header > .mdl-layout__header {
      display: flex; } }

.mdl-layout__header--transparent.mdl-layout__header--transparent {
  background-color: transparent;
  box-shadow: none; }

.mdl-layout__header--seamed {
  box-shadow: none; }

.mdl-layout__header--scroll {
  box-shadow: none; }

.mdl-layout__header--waterfall {
  box-shadow: none;
  overflow: hidden; }
  .mdl-layout__header--waterfall.is-casting-shadow {
    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }

.mdl-layout__header-row {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  flex-shrink: 0;
  box-sizing: border-box;
  align-self: stretch;
  align-items: center;
  height: 64px;
  margin: 0;
  padding: 0 40px 0 80px; }
  @media screen and (max-width: 1024px) {
    .mdl-layout__header-row {
      height: 56px;
      padding: 0 16px 0 72px; } }
  .mdl-layout__header-row > * {
    flex-shrink: 0; }
  .mdl-layout__header--scroll .mdl-layout__header-row {
    width: 100%; }
  .mdl-layout__header-row .mdl-navigation {
    margin: 0;
    padding: 0;
    height: 64px;
    flex-direction: row;
    align-items: center; }
    @media screen and (max-width: 1024px) {
      .mdl-layout__header-row .mdl-navigation {
        height: 56px; } }
  .mdl-layout__header-row .mdl-navigation__link {
    display: block;
    color: rgb(255,255,255);
    line-height: 64px;
    padding: 0 24px; }
    @media screen and (max-width: 1024px) {
      .mdl-layout__header-row .mdl-navigation__link {
        line-height: 56px;
        padding: 0 16px; } }

.mdl-layout__obfuscator {
  background-color: transparent;
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  z-index: 4;
  visibility: hidden;
  transition-property: background-color;
  transition-duration: 0.2s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
  .mdl-layout__obfuscator.is-visible {
    background-color: rgba(0, 0, 0, 0.5);
    visibility: visible; }

.mdl-layout__content {
  -ms-flex: 0 1 auto;
  display: inline-block;
  overflow-y: auto;
  overflow-x: hidden;
  flex-grow: 1;
  z-index: 1;
  -webkit-overflow-scrolling: touch; }
  .mdl-layout--fixed-drawer > .mdl-layout__content {
    margin-left: 240px; }
  .mdl-layout__container.has-scrolling-header .mdl-layout__content {
    overflow: visible; }
  @media screen and (max-width: 1024px) {
    .mdl-layout--fixed-drawer > .mdl-layout__content {
      margin-left: 0; }
    .mdl-layout__container.has-scrolling-header .mdl-layout__content {
      overflow-y: auto;
      overflow-x: hidden; } }

.mdl-layout__tab-bar {
  height: 96px;
  margin: 0;
  width: calc(100% - 112px);
  padding: 0 0 0 56px;
  display: flex;
  background-color: rgb(63,81,181);
  overflow-y: hidden;
  overflow-x: scroll; }
  .mdl-layout__tab-bar::-webkit-scrollbar {
    display: none; }
  @media screen and (max-width: 1024px) {
    .mdl-layout__tab-bar {
      width: calc(100% - 60px);
      padding: 0 0 0 60px; } }
  .mdl-layout--fixed-tabs .mdl-layout__tab-bar {
    padding: 0;
    overflow: hidden;
    width: 100%; }

.mdl-layout__tab-bar-container {
  position: relative;
  height: 48px;
  width: 100%;
  border: none;
  margin: 0;
  z-index: 2;
  flex-grow: 0;
  flex-shrink: 0;
  overflow: hidden; }
  .mdl-layout__container > .mdl-layout__tab-bar-container {
    position: absolute;
    top: 0;
    left: 0; }

.mdl-layout__tab-bar-button {
  display: inline-block;
  position: absolute;
  top: 0;
  height: 48px;
  width: 56px;
  z-index: 4;
  text-align: center;
  background-color: rgb(63,81,181);
  color: transparent;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none; }
  @media screen and (max-width: 1024px) {
    .mdl-layout__tab-bar-button {
      display: none;
      width: 60px; } }
  .mdl-layout--fixed-tabs .mdl-layout__tab-bar-button {
    display: none; }
  .mdl-layout__tab-bar-button .material-icons {
    line-height: 48px; }
  .mdl-layout__tab-bar-button.is-active {
    color: rgb(255,255,255); }

.mdl-layout__tab-bar-left-button {
  left: 0; }

.mdl-layout__tab-bar-right-button {
  right: 0; }

.mdl-layout__tab {
  margin: 0;
  border: none;
  padding: 0 24px 0 24px;
  float: left;
  position: relative;
  display: block;
  flex-grow: 0;
  flex-shrink: 0;
  text-decoration: none;
  height: 48px;
  line-height: 48px;
  text-align: center;
  font-weight: 500;
  font-size: 14px;
  text-transform: uppercase;
  color: rgba(255,255,255, 0.6);
  overflow: hidden; }
  @media screen and (max-width: 1024px) {
    .mdl-layout__tab {
      padding: 0 12px 0 12px; } }
  .mdl-layout--fixed-tabs .mdl-layout__tab {
    float: none;
    flex-grow: 1;
    padding: 0; }
  .mdl-layout.is-upgraded .mdl-layout__tab.is-active {
    color: rgb(255,255,255); }
  .mdl-layout.is-upgraded .mdl-layout__tab.is-active::after {
    height: 2px;
    width: 100%;
    display: block;
    content: " ";
    bottom: 0;
    left: 0;
    position: absolute;
    background: rgb(255,64,129);
    animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards;
    transition: all 1s cubic-bezier(0.4, 0, 1, 1); }
  .mdl-layout__tab .mdl-layout__tab-ripple-container {
    display: block;
    position: absolute;
    height: 100%;
    width: 100%;
    left: 0;
    top: 0;
    z-index: 1;
    overflow: hidden; }
    .mdl-layout__tab .mdl-layout__tab-ripple-container .mdl-ripple {
      background-color: rgb(255,255,255); }

.mdl-layout__tab-panel {
  display: block; }
  .mdl-layout.is-upgraded .mdl-layout__tab-panel {
    display: none; }
  .mdl-layout.is-upgraded .mdl-layout__tab-panel.is-active {
    display: block; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-radio {
  position: relative;
  font-size: 16px;
  line-height: 24px;
  display: inline-block;
  box-sizing: border-box;
  margin: 0;
  padding-left: 0; }
  .mdl-radio.is-upgraded {
    padding-left: 24px; }

.mdl-radio__button {
  line-height: 24px; }
  .mdl-radio.is-upgraded .mdl-radio__button {
    position: absolute;
    width: 0;
    height: 0;
    margin: 0;
    padding: 0;
    opacity: 0;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    border: none; }

.mdl-radio__outer-circle {
  position: absolute;
  top: 4px;
  left: 0;
  display: inline-block;
  box-sizing: border-box;
  width: 16px;
  height: 16px;
  margin: 0;
  cursor: pointer;
  border: 2px solid rgba(0,0,0, 0.54);
  border-radius: 50%;
  z-index: 2; }
  .mdl-radio.is-checked .mdl-radio__outer-circle {
    border: 2px solid rgb(63,81,181); }
  .mdl-radio.is-disabled .mdl-radio__outer-circle {
    border: 2px solid rgba(0,0,0, 0.26);
    cursor: auto; }

.mdl-radio__inner-circle {
  position: absolute;
  z-index: 1;
  margin: 0;
  top: 8px;
  left: 4px;
  box-sizing: border-box;
  width: 8px;
  height: 8px;
  cursor: pointer;
  transition-duration: 0.28s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-property: transform;
  transform: scale3d(0, 0, 0);
  border-radius: 50%;
  background: rgb(63,81,181); }
  .mdl-radio.is-checked .mdl-radio__inner-circle {
    transform: scale3d(1, 1, 1); }
  .mdl-radio.is-disabled .mdl-radio__inner-circle {
    background: rgba(0,0,0, 0.26);
    cursor: auto; }
  .mdl-radio.is-focused .mdl-radio__inner-circle {
    box-shadow: 0 0 0px 10px rgba(0, 0, 0, 0.1); }

.mdl-radio__label {
  cursor: pointer; }
  .mdl-radio.is-disabled .mdl-radio__label {
    color: rgba(0,0,0, 0.26);
    cursor: auto; }

.mdl-radio__ripple-container {
  position: absolute;
  z-index: 2;
  top: -9px;
  left: -13px;
  box-sizing: border-box;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  cursor: pointer;
  overflow: hidden;
  -webkit-mask-image: -webkit-radial-gradient(circle, white, black); }
  .mdl-radio__ripple-container .mdl-ripple {
    background: rgb(63,81,181); }
  .mdl-radio.is-disabled .mdl-radio__ripple-container {
    cursor: auto; }
  .mdl-radio.is-disabled .mdl-radio__ripple-container .mdl-ripple {
    background: transparent; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
_:-ms-input-placeholder, :root .mdl-slider.mdl-slider.is-upgraded {
  -ms-appearance: none;
  height: 32px;
  margin: 0; }

.mdl-slider {
  width: calc(100% - 40px);
  margin: 0 20px; }
  .mdl-slider.is-upgraded {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    height: 2px;
    background: transparent;
    -webkit-user-select: none;
    -moz-user-select: none;
    user-select: none;
    outline: 0;
    padding: 0;
    color: rgb(63,81,181);
    align-self: center;
    z-index: 1;
    cursor: pointer;
    /**************************** Tracks ****************************/
    /**************************** Thumbs ****************************/
    /**************************** 0-value ****************************/
    /**************************** Disabled ****************************/ }
    .mdl-slider.is-upgraded::-moz-focus-outer {
      border: 0; }
    .mdl-slider.is-upgraded::-ms-tooltip {
      display: none; }
    .mdl-slider.is-upgraded::-webkit-slider-runnable-track {
      background: transparent; }
    .mdl-slider.is-upgraded::-moz-range-track {
      background: transparent;
      border: none; }
    .mdl-slider.is-upgraded::-ms-track {
      background: none;
      color: transparent;
      height: 2px;
      width: 100%;
      border: none; }
    .mdl-slider.is-upgraded::-ms-fill-lower {
      padding: 0;
      background: linear-gradient(to right, transparent, transparent 16px, rgb(63,81,181) 16px, rgb(63,81,181) 0); }
    .mdl-slider.is-upgraded::-ms-fill-upper {
      padding: 0;
      background: linear-gradient(to left, transparent, transparent 16px, rgba(0,0,0, 0.26) 16px, rgba(0,0,0, 0.26) 0); }
    .mdl-slider.is-upgraded::-webkit-slider-thumb {
      -webkit-appearance: none;
      width: 12px;
      height: 12px;
      box-sizing: border-box;
      border-radius: 50%;
      background: rgb(63,81,181);
      border: none;
      -webkit-transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1);
      transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), border 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); }
    .mdl-slider.is-upgraded::-moz-range-thumb {
      -moz-appearance: none;
      width: 12px;
      height: 12px;
      box-sizing: border-box;
      border-radius: 50%;
      background-image: none;
      background: rgb(63,81,181);
      border: none; }
    .mdl-slider.is-upgraded:focus:not(:active)::-webkit-slider-thumb {
      box-shadow: 0 0 0 10px rgba(63,81,181, 0.26); }
    .mdl-slider.is-upgraded:focus:not(:active)::-moz-range-thumb {
      box-shadow: 0 0 0 10px rgba(63,81,181, 0.26); }
    .mdl-slider.is-upgraded:active::-webkit-slider-thumb {
      background-image: none;
      background: rgb(63,81,181);
      transform: scale(1.5); }
    .mdl-slider.is-upgraded:active::-moz-range-thumb {
      background-image: none;
      background: rgb(63,81,181);
      transform: scale(1.5); }
    .mdl-slider.is-upgraded::-ms-thumb {
      width: 32px;
      height: 32px;
      border: none;
      border-radius: 50%;
      background: rgb(63,81,181);
      transform: scale(0.375);
      -ms-transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1);
      transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), background 0.28s cubic-bezier(0.4, 0, 0.2, 1); }
    .mdl-slider.is-upgraded:focus:not(:active)::-ms-thumb {
      background: radial-gradient(circle closest-side, rgb(63,81,181) 0%, rgb(63,81,181) 37.5%, rgba(63,81,181, 0.26) 37.5%, rgba(63,81,181, 0.26) 100%);
      transform: scale(1); }
    .mdl-slider.is-upgraded:active::-ms-thumb {
      background: rgb(63,81,181);
      transform: scale(0.5625); }
    .mdl-slider.is-upgraded.is-lowest-value::-webkit-slider-thumb {
      border: 2px solid rgba(0,0,0, 0.26);
      background: transparent; }
    .mdl-slider.is-upgraded.is-lowest-value::-moz-range-thumb {
      border: 2px solid rgba(0,0,0, 0.26);
      background: transparent; }
    .mdl-slider.is-upgraded.is-lowest-value +
.mdl-slider__background-flex > .mdl-slider__background-upper {
      left: 6px; }
    .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-webkit-slider-thumb {
      box-shadow: 0 0 0 10px rgba(0,0,0, 0.12);
      background: rgba(0,0,0, 0.12); }
    .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-moz-range-thumb {
      box-shadow: 0 0 0 10px rgba(0,0,0, 0.12);
      background: rgba(0,0,0, 0.12); }
    .mdl-slider.is-upgraded.is-lowest-value:active::-webkit-slider-thumb {
      border: 1.6px solid rgba(0,0,0, 0.26);
      transform: scale(1.5); }
    .mdl-slider.is-upgraded.is-lowest-value:active +
.mdl-slider__background-flex > .mdl-slider__background-upper {
      left: 9px; }
    .mdl-slider.is-upgraded.is-lowest-value:active::-moz-range-thumb {
      border: 1.5px solid rgba(0,0,0, 0.26);
      transform: scale(1.5); }
    .mdl-slider.is-upgraded.is-lowest-value::-ms-thumb {
      background: radial-gradient(circle closest-side, transparent 0%, transparent 66.67%, rgba(0,0,0, 0.26) 66.67%, rgba(0,0,0, 0.26) 100%); }
    .mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-ms-thumb {
      background: radial-gradient(circle closest-side, rgba(0,0,0, 0.12) 0%, rgba(0,0,0, 0.12) 25%, rgba(0,0,0, 0.26) 25%, rgba(0,0,0, 0.26) 37.5%, rgba(0,0,0, 0.12) 37.5%, rgba(0,0,0, 0.12) 100%);
      transform: scale(1); }
    .mdl-slider.is-upgraded.is-lowest-value:active::-ms-thumb {
      transform: scale(0.5625);
      background: radial-gradient(circle closest-side, transparent 0%, transparent 77.78%, rgba(0,0,0, 0.26) 77.78%, rgba(0,0,0, 0.26) 100%); }
    .mdl-slider.is-upgraded.is-lowest-value::-ms-fill-lower {
      background: transparent; }
    .mdl-slider.is-upgraded.is-lowest-value::-ms-fill-upper {
      margin-left: 6px; }
    .mdl-slider.is-upgraded.is-lowest-value:active::-ms-fill-upper {
      margin-left: 9px; }
    .mdl-slider.is-upgraded:disabled:focus::-webkit-slider-thumb, .mdl-slider.is-upgraded:disabled:active::-webkit-slider-thumb, .mdl-slider.is-upgraded:disabled::-webkit-slider-thumb {
      transform: scale(0.667);
      background: rgba(0,0,0, 0.26); }
    .mdl-slider.is-upgraded:disabled:focus::-moz-range-thumb, .mdl-slider.is-upgraded:disabled:active::-moz-range-thumb, .mdl-slider.is-upgraded:disabled::-moz-range-thumb {
      transform: scale(0.667);
      background: rgba(0,0,0, 0.26); }
    .mdl-slider.is-upgraded:disabled +
.mdl-slider__background-flex > .mdl-slider__background-lower {
      background-color: rgba(0,0,0, 0.26);
      left: -6px; }
    .mdl-slider.is-upgraded:disabled +
.mdl-slider__background-flex > .mdl-slider__background-upper {
      left: 6px; }
    .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-webkit-slider-thumb, .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-webkit-slider-thumb, .mdl-slider.is-upgraded.is-lowest-value:disabled::-webkit-slider-thumb {
      border: 3px solid rgba(0,0,0, 0.26);
      background: transparent;
      transform: scale(0.667); }
    .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-moz-range-thumb, .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-moz-range-thumb, .mdl-slider.is-upgraded.is-lowest-value:disabled::-moz-range-thumb {
      border: 3px solid rgba(0,0,0, 0.26);
      background: transparent;
      transform: scale(0.667); }
    .mdl-slider.is-upgraded.is-lowest-value:disabled:active +
.mdl-slider__background-flex > .mdl-slider__background-upper {
      left: 6px; }
    .mdl-slider.is-upgraded:disabled:focus::-ms-thumb, .mdl-slider.is-upgraded:disabled:active::-ms-thumb, .mdl-slider.is-upgraded:disabled::-ms-thumb {
      transform: scale(0.25);
      background: rgba(0,0,0, 0.26); }
    .mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-ms-thumb, .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-thumb, .mdl-slider.is-upgraded.is-lowest-value:disabled::-ms-thumb {
      transform: scale(0.25);
      background: radial-gradient(circle closest-side, transparent 0%, transparent 50%, rgba(0,0,0, 0.26) 50%, rgba(0,0,0, 0.26) 100%); }
    .mdl-slider.is-upgraded:disabled::-ms-fill-lower {
      margin-right: 6px;
      background: linear-gradient(to right, transparent, transparent 25px, rgba(0,0,0, 0.26) 25px, rgba(0,0,0, 0.26) 0); }
    .mdl-slider.is-upgraded:disabled::-ms-fill-upper {
      margin-left: 6px; }
    .mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-fill-upper {
      margin-left: 6px; }

.mdl-slider__ie-container {
  height: 18px;
  overflow: visible;
  border: none;
  margin: none;
  padding: none; }

.mdl-slider__container {
  height: 18px;
  position: relative;
  background: none;
  display: flex;
  flex-direction: row; }

.mdl-slider__background-flex {
  background: transparent;
  position: absolute;
  height: 2px;
  width: calc(100% - 52px);
  top: 50%;
  left: 0;
  margin: 0 26px;
  display: flex;
  overflow: hidden;
  border: 0;
  padding: 0;
  transform: translate(0, -1px); }

.mdl-slider__background-lower {
  background: rgb(63,81,181);
  flex: 0;
  position: relative;
  border: 0;
  padding: 0; }

.mdl-slider__background-upper {
  background: rgba(0,0,0, 0.26);
  flex: 0;
  position: relative;
  border: 0;
  padding: 0;
  transition: left 0.18s cubic-bezier(0.4, 0, 0.2, 1); }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-spinner {
  display: inline-block;
  position: relative;
  width: 28px;
  height: 28px; }
  .mdl-spinner:not(.is-upgraded).is-active:after {
    content: "Loading..."; }
  .mdl-spinner.is-upgraded.is-active {
    animation: mdl-spinner__container-rotate 1568.23529ms linear infinite; }

@keyframes mdl-spinner__container-rotate {
  to {
    transform: rotate(360deg); } }

.mdl-spinner__layer {
  position: absolute;
  width: 100%;
  height: 100%;
  opacity: 0; }

.mdl-spinner__layer-1 {
  border-color: rgb(66,165,245); }
  .mdl-spinner--single-color .mdl-spinner__layer-1 {
    border-color: rgb(63,81,181); }
  .mdl-spinner.is-active .mdl-spinner__layer-1 {
    animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }

.mdl-spinner__layer-2 {
  border-color: rgb(244,67,54); }
  .mdl-spinner--single-color .mdl-spinner__layer-2 {
    border-color: rgb(63,81,181); }
  .mdl-spinner.is-active .mdl-spinner__layer-2 {
    animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }

.mdl-spinner__layer-3 {
  border-color: rgb(253,216,53); }
  .mdl-spinner--single-color .mdl-spinner__layer-3 {
    border-color: rgb(63,81,181); }
  .mdl-spinner.is-active .mdl-spinner__layer-3 {
    animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }

.mdl-spinner__layer-4 {
  border-color: rgb(76,175,80); }
  .mdl-spinner--single-color .mdl-spinner__layer-4 {
    border-color: rgb(63,81,181); }
  .mdl-spinner.is-active .mdl-spinner__layer-4 {
    animation: mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }

@keyframes mdl-spinner__fill-unfill-rotate {
  12.5% {
    transform: rotate(135deg); }
  25% {
    transform: rotate(270deg); }
  37.5% {
    transform: rotate(405deg); }
  50% {
    transform: rotate(540deg); }
  62.5% {
    transform: rotate(675deg); }
  75% {
    transform: rotate(810deg); }
  87.5% {
    transform: rotate(945deg); }
  to {
    transform: rotate(1080deg); } }

/**
* HACK: Even though the intention is to have the current .mdl-spinner__layer-N
* at `opacity: 1`, we set it to `opacity: 0.99` instead since this forces Chrome
* to do proper subpixel rendering for the elements being animated. This is
* especially visible in Chrome 39 on Ubuntu 14.04. See:
*
* - https://github.com/Polymer/paper-spinner/issues/9
* - https://code.google.com/p/chromium/issues/detail?id=436255
*/
@keyframes mdl-spinner__layer-1-fade-in-out {
  from {
    opacity: 0.99; }
  25% {
    opacity: 0.99; }
  26% {
    opacity: 0; }
  89% {
    opacity: 0; }
  90% {
    opacity: 0.99; }
  100% {
    opacity: 0.99; } }

@keyframes mdl-spinner__layer-2-fade-in-out {
  from {
    opacity: 0; }
  15% {
    opacity: 0; }
  25% {
    opacity: 0.99; }
  50% {
    opacity: 0.99; }
  51% {
    opacity: 0; } }

@keyframes mdl-spinner__layer-3-fade-in-out {
  from {
    opacity: 0; }
  40% {
    opacity: 0; }
  50% {
    opacity: 0.99; }
  75% {
    opacity: 0.99; }
  76% {
    opacity: 0; } }

@keyframes mdl-spinner__layer-4-fade-in-out {
  from {
    opacity: 0; }
  65% {
    opacity: 0; }
  75% {
    opacity: 0.99; }
  90% {
    opacity: 0.99; }
  100% {
    opacity: 0; } }

/**
* Patch the gap that appear between the two adjacent
* div.mdl-spinner__circle-clipper while the spinner is rotating
* (appears on Chrome 38, Safari 7.1, and IE 11).
*
* Update: the gap no longer appears on Chrome when .mdl-spinner__layer-N's
* opacity is 0.99, but still does on Safari and IE.
*/
.mdl-spinner__gap-patch {
  position: absolute;
  box-sizing: border-box;
  top: 0;
  left: 45%;
  width: 10%;
  height: 100%;
  overflow: hidden;
  border-color: inherit; }
  .mdl-spinner__gap-patch .mdl-spinner__circle {
    width: 1000%;
    left: -450%; }

.mdl-spinner__circle-clipper {
  display: inline-block;
  position: relative;
  width: 50%;
  height: 100%;
  overflow: hidden;
  border-color: inherit; }
  .mdl-spinner__circle-clipper .mdl-spinner__circle {
    width: 200%; }

.mdl-spinner__circle {
  box-sizing: border-box;
  height: 100%;
  border-width: 3px;
  border-style: solid;
  border-color: inherit;
  border-bottom-color: transparent !important;
  border-radius: 50%;
  animation: none;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0; }
  .mdl-spinner__left .mdl-spinner__circle {
    border-right-color: transparent !important;
    transform: rotate(129deg); }
    .mdl-spinner.is-active .mdl-spinner__left .mdl-spinner__circle {
      animation: mdl-spinner__left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }
  .mdl-spinner__right .mdl-spinner__circle {
    left: -100%;
    border-left-color: transparent !important;
    transform: rotate(-129deg); }
    .mdl-spinner.is-active .mdl-spinner__right .mdl-spinner__circle {
      animation: mdl-spinner__right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; }

@keyframes mdl-spinner__left-spin {
  from {
    transform: rotate(130deg); }
  50% {
    transform: rotate(-5deg); }
  to {
    transform: rotate(130deg); } }

@keyframes mdl-spinner__right-spin {
  from {
    transform: rotate(-130deg); }
  50% {
    transform: rotate(5deg); }
  to {
    transform: rotate(-130deg); } }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-switch {
  position: relative;
  z-index: 1;
  vertical-align: middle;
  display: inline-block;
  box-sizing: border-box;
  width: 100%;
  height: 24px;
  margin: 0;
  padding: 0;
  overflow: visible;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none; }
  .mdl-switch.is-upgraded {
    padding-left: 28px; }

.mdl-switch__input {
  line-height: 24px; }
  .mdl-switch.is-upgraded .mdl-switch__input {
    position: absolute;
    width: 0;
    height: 0;
    margin: 0;
    padding: 0;
    opacity: 0;
    -moz-appearance: none;
    -webkit-appearance: none;
    appearance: none;
    border: none; }

.mdl-switch__track {
  background: rgba(0,0,0, 0.26);
  position: absolute;
  left: 0;
  top: 5px;
  height: 14px;
  width: 36px;
  border-radius: 14px;
  cursor: pointer; }
  .mdl-switch.is-checked .mdl-switch__track {
    background: rgba(63,81,181, 0.5); }
  .mdl-switch.is-disabled .mdl-switch__track {
    background: rgba(0,0,0, 0.12);
    cursor: auto; }

.mdl-switch__thumb {
  background: rgb(250,250,250);
  position: absolute;
  left: 0;
  top: 2px;
  height: 20px;
  width: 20px;
  border-radius: 50%;
  cursor: pointer;
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
  transition-duration: 0.28s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-property: left; }
  .mdl-switch.is-checked .mdl-switch__thumb {
    background: rgb(63,81,181);
    left: 16px;
    box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); }
  .mdl-switch.is-disabled .mdl-switch__thumb {
    background: rgb(189,189,189);
    cursor: auto; }

.mdl-switch__focus-helper {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-4px, -4px);
  display: inline-block;
  box-sizing: border-box;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background-color: transparent; }
  .mdl-switch.is-focused .mdl-switch__focus-helper {
    box-shadow: 0 0 0px 20px rgba(0, 0, 0, 0.1);
    background-color: rgba(0, 0, 0, 0.1); }
  .mdl-switch.is-focused.is-checked .mdl-switch__focus-helper {
    box-shadow: 0 0 0px 20px rgba(63,81,181, 0.26);
    background-color: rgba(63,81,181, 0.26); }

.mdl-switch__label {
  position: relative;
  cursor: pointer;
  font-size: 16px;
  line-height: 24px;
  margin: 0;
  left: 24px; }
  .mdl-switch.is-disabled .mdl-switch__label {
    color: rgb(189,189,189);
    cursor: auto; }

.mdl-switch__ripple-container {
  position: absolute;
  z-index: 2;
  top: -12px;
  left: -14px;
  box-sizing: border-box;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  cursor: pointer;
  overflow: hidden;
  -webkit-mask-image: -webkit-radial-gradient(circle, white, black);
  transition-duration: 0.40s;
  transition-timing-function: step-end;
  transition-property: left; }
  .mdl-switch__ripple-container .mdl-ripple {
    background: rgb(63,81,181); }
  .mdl-switch.is-disabled .mdl-switch__ripple-container {
    cursor: auto; }
  .mdl-switch.is-disabled .mdl-switch__ripple-container .mdl-ripple {
    background: transparent; }
  .mdl-switch.is-checked .mdl-switch__ripple-container {
    cursor: auto;
    left: 2px; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-tabs {
  display: block;
  width: 100%; }

.mdl-tabs__tab-bar {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-content: space-between;
  align-items: flex-start;
  height: 48px;
  padding: 0 0 0 0;
  margin: 0;
  border-bottom: 1px solid rgb(224,224,224); }

.mdl-tabs__tab {
  margin: 0;
  border: none;
  padding: 0 24px 0 24px;
  float: left;
  position: relative;
  display: block;
  color: red;
  text-decoration: none;
  height: 48px;
  line-height: 48px;
  text-align: center;
  font-weight: 500;
  font-size: 14px;
  text-transform: uppercase;
  color: rgba(0,0,0, 0.54);
  overflow: hidden; }
  .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active {
    color: rgba(0,0,0, 0.87); }
  .mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after {
    height: 2px;
    width: 100%;
    display: block;
    content: " ";
    bottom: 0px;
    left: 0px;
    position: absolute;
    background: rgb(63,81,181);
    animation: border-expand 0.2s cubic-bezier(0.4, 0, 0.4, 1) 0.01s alternate forwards;
    transition: all 1s cubic-bezier(0.4, 0, 1, 1); }
  .mdl-tabs__tab .mdl-tabs__ripple-container {
    display: block;
    position: absolute;
    height: 100%;
    width: 100%;
    left: 0px;
    top: 0px;
    z-index: 1;
    overflow: hidden; }
    .mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple {
      background: rgb(63,81,181); }

.mdl-tabs__panel {
  display: block; }
  .mdl-tabs.is-upgraded .mdl-tabs__panel {
    display: none; }
  .mdl-tabs.is-upgraded .mdl-tabs__panel.is-active {
    display: block; }

@keyframes border-expand {
  0% {
    opacity: 0;
    width: 0; }
  100% {
    opacity: 1;
    width: 100%; } }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-textfield {
  position: relative;
  font-size: 16px;
  display: inline-block;
  box-sizing: border-box;
  width: 300px;
  max-width: 100%;
  margin: 0;
  padding: 20px 0; }
  .mdl-textfield .mdl-button {
    position: absolute;
    bottom: 20px; }

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

.mdl-textfield--full-width {
  width: 100%; }

.mdl-textfield--expandable {
  min-width: 32px;
  width: auto;
  min-height: 32px; }

.mdl-textfield__input {
  border: none;
  border-bottom: 1px solid rgba(0,0,0, 0.12);
  display: block;
  font-size: 16px;
  margin: 0;
  padding: 4px 0;
  width: 100%;
  background: none;
  text-align: left;
  color: inherit; }
  .mdl-textfield.is-focused .mdl-textfield__input {
    outline: none; }
  .mdl-textfield.is-invalid .mdl-textfield__input {
    border-color: rgb(222, 50, 38);
    box-shadow: none; }
  .mdl-textfield.is-disabled .mdl-textfield__input {
    background-color: transparent;
    border-bottom: 1px dotted rgba(0,0,0, 0.12);
    color: rgba(0,0,0, 0.26); }

.mdl-textfield textarea.mdl-textfield__input {
  display: block; }

.mdl-textfield__label {
  bottom: 0;
  color: rgba(0,0,0, 0.26);
  font-size: 16px;
  left: 0;
  right: 0;
  pointer-events: none;
  position: absolute;
  display: block;
  top: 24px;
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
  text-align: left; }
  .mdl-textfield.is-dirty .mdl-textfield__label {
    visibility: hidden; }
  .mdl-textfield--floating-label .mdl-textfield__label {
    transition-duration: 0.2s;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
  .mdl-textfield.is-disabled.is-disabled .mdl-textfield__label {
    color: rgba(0,0,0, 0.26); }
  .mdl-textfield--floating-label.is-focused .mdl-textfield__label,
  .mdl-textfield--floating-label.is-dirty .mdl-textfield__label {
    color: rgb(63,81,181);
    font-size: 12px;
    top: 4px;
    visibility: visible; }
  .mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder .mdl-textfield__label,
  .mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder .mdl-textfield__label {
    top: -16px; }
  .mdl-textfield--floating-label.is-invalid .mdl-textfield__label {
    color: rgb(222, 50, 38);
    font-size: 12px; }
  .mdl-textfield__label:after {
    background-color: rgb(63,81,181);
    bottom: 20px;
    content: '';
    height: 2px;
    left: 45%;
    position: absolute;
    transition-duration: 0.2s;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    visibility: hidden;
    width: 10px; }
  .mdl-textfield.is-focused .mdl-textfield__label:after {
    left: 0;
    visibility: visible;
    width: 100%; }
  .mdl-textfield.is-invalid .mdl-textfield__label:after {
    background-color: rgb(222, 50, 38); }

.mdl-textfield__error {
  color: rgb(222, 50, 38);
  position: absolute;
  font-size: 12px;
  margin-top: 3px;
  visibility: hidden;
  display: block; }
  .mdl-textfield.is-invalid .mdl-textfield__error {
    visibility: visible; }

.mdl-textfield__expandable-holder {
  display: inline-block;
  position: relative;
  margin-left: 32px;
  transition-duration: 0.2s;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  display: inline-block;
  max-width: 0.1px; }
  .mdl-textfield.is-focused .mdl-textfield__expandable-holder, .mdl-textfield.is-dirty .mdl-textfield__expandable-holder {
    max-width: 600px; }
  .mdl-textfield__expandable-holder .mdl-textfield__label:after {
    bottom: 0; }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-tooltip {
  transform: scale(0);
  transform-origin: top center;
  will-change: transform;
  z-index: 999;
  background: rgba(97,97,97, 0.9);
  border-radius: 2px;
  color: rgb(255,255,255);
  display: inline-block;
  font-size: 10px;
  font-weight: 500;
  line-height: 14px;
  max-width: 170px;
  position: fixed;
  top: -500px;
  left: -500px;
  padding: 8px;
  text-align: center; }

.mdl-tooltip.is-active {
  animation: pulse 200ms cubic-bezier(0, 0, 0.2, 1) forwards; }

.mdl-tooltip--large {
  line-height: 14px;
  font-size: 14px;
  padding: 16px; }

@keyframes pulse {
  0% {
    transform: scale(0);
    opacity: 0; }
  50% {
    transform: scale(0.99); }
  100% {
    transform: scale(1);
    opacity: 1;
    visibility: visible; } }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* Typography */
/* Shadows */
/* Animations */
.mdl-shadow--2dp {
  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); }

.mdl-shadow--3dp {
  box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), 0 3px 3px -2px rgba(0, 0, 0, 0.2), 0 1px 8px 0 rgba(0, 0, 0, 0.12); }

.mdl-shadow--4dp {
  box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.2); }

.mdl-shadow--6dp {
  box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.2); }

.mdl-shadow--8dp {
  box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2); }

.mdl-shadow--16dp {
  box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2); }

/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*
* NOTE: Some rules here are applied using duplicate selectors.
* This is on purpose to increase their specificity when applied.
* For example: `.mdl-cell--1-col-phone.mdl-cell--1-col-phone`
*/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/*------------------------------------*\
    $CONTENTS
\*------------------------------------*/
/**
 * STYLE GUIDE VARIABLES------------------Declarations of Sass variables
 * -----Typography
 * -----Colors
 * -----Textfield
 * -----Switch
 * -----Spinner
 * -----Radio
 * -----Menu
 * -----List
 * -----Layout
 * -----Icon toggles
 * -----Footer
 * -----Column
 * -----Checkbox
 * -----Card
 * -----Button
 * -----Animation
 * -----Progress
 * -----Badge
 * -----Shadows
 * -----Grid
 * -----Data table
 */
/* ==========  TYPOGRAPHY  ========== */
/* We're splitting fonts into "preferred" and "performance" in order to optimize
   page loading. For important text, such as the body, we want it to load
   immediately and not wait for the web font load, whereas for other sections,
   such as headers and titles, we're OK with things taking a bit longer to load.
   We do have some optional classes and parameters in the mixins, in case you
   definitely want to make sure you're using the preferred font and don't mind
   the performance hit.
   We should be able to improve on this once CSS Font Loading L3 becomes more
   widely available.
*/
/* ==========  COLORS  ========== */
/**
*
* Material design color palettes.
* @see http://www.google.com/design/spec/style/color.html
*
**/
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  Color Palettes  ========== */
/* colors.scss */
/**
 * Copyright 2015 Google Inc. All Rights Reserved.
 *
 * 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://www.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.
 */
/* ==========  IMAGES  ========== */
/* ==========  Color & Themes  ========== */
/* ==========  Typography  ========== */
/* ==========  Components  ========== */
/* ==========  Standard Buttons  ========== */
/* ==========  Icon Toggles  ========== */
/* ==========  Radio Buttons  ========== */
/* ==========  Ripple effect  ========== */
/* ==========  Layout  ========== */
/* ==========  Content Tabs  ========== */
/* ==========  Checkboxes  ========== */
/* ==========  Switches  ========== */
/* ==========  Spinner  ========== */
/* ==========  Text fields  ========== */
/* ==========  Card  ========== */
/* ==========  Sliders ========== */
/* ========== Progress ========== */
/* ==========  List ========== */
/* ==========  Item ========== */
/* ==========  Dropdown menu ========== */
/* ==========  Tooltips  ========== */
/* ==========  Footer  ========== */
/* TEXTFIELD */
/* SWITCH */
/* SPINNER */
/* RADIO */
/* MENU */
/* LIST */
/* LAYOUT */
/* ICON TOGGLE */
/* FOOTER */
/*mega-footer*/
/*mini-footer*/
/* CHECKBOX */
/* CARD */
/* Card dimensions */
/* Cover image */
/* BUTTON */
/**
 *
 * Dimensions
 *
 */
/* ANIMATION */
/* PROGRESS */
/* BADGE */
/* SHADOWS */
/* GRID */
/* DATA TABLE */
/* TOOLTIP */
.mdl-grid {
  display: flex;
  flex-flow: row wrap;
  margin: 0 auto 0 auto;
  align-items: stretch; }
  .mdl-grid.mdl-grid--no-spacing {
    padding: 0; }

.mdl-cell {
  box-sizing: border-box; }

.mdl-cell--top {
  align-self: flex-start; }

.mdl-cell--middle {
  align-self: center; }

.mdl-cell--bottom {
  align-self: flex-end; }

.mdl-cell--stretch {
  align-self: stretch; }

.mdl-grid.mdl-grid--no-spacing > .mdl-cell {
  margin: 0; }

@media (max-width: 479px) {
  .mdl-grid {
    padding: 8px; }
  .mdl-cell {
    margin: 8px;
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell {
      width: 100%; }
  .mdl-cell--hide-phone {
    display: none !important; }
  .mdl-cell--1-col,
  .mdl-cell--1-col-phone.mdl-cell--1-col-phone {
    width: calc(25% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--1-col, .mdl-grid--no-spacing >
    .mdl-cell--1-col-phone.mdl-cell--1-col-phone {
      width: 25%; }
  .mdl-cell--2-col,
  .mdl-cell--2-col-phone.mdl-cell--2-col-phone {
    width: calc(50% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--2-col, .mdl-grid--no-spacing >
    .mdl-cell--2-col-phone.mdl-cell--2-col-phone {
      width: 50%; }
  .mdl-cell--3-col,
  .mdl-cell--3-col-phone.mdl-cell--3-col-phone {
    width: calc(75% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--3-col, .mdl-grid--no-spacing >
    .mdl-cell--3-col-phone.mdl-cell--3-col-phone {
      width: 75%; }
  .mdl-cell--4-col,
  .mdl-cell--4-col-phone.mdl-cell--4-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--4-col, .mdl-grid--no-spacing >
    .mdl-cell--4-col-phone.mdl-cell--4-col-phone {
      width: 100%; }
  .mdl-cell--5-col,
  .mdl-cell--5-col-phone.mdl-cell--5-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--5-col, .mdl-grid--no-spacing >
    .mdl-cell--5-col-phone.mdl-cell--5-col-phone {
      width: 100%; }
  .mdl-cell--6-col,
  .mdl-cell--6-col-phone.mdl-cell--6-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--6-col, .mdl-grid--no-spacing >
    .mdl-cell--6-col-phone.mdl-cell--6-col-phone {
      width: 100%; }
  .mdl-cell--7-col,
  .mdl-cell--7-col-phone.mdl-cell--7-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--7-col, .mdl-grid--no-spacing >
    .mdl-cell--7-col-phone.mdl-cell--7-col-phone {
      width: 100%; }
  .mdl-cell--8-col,
  .mdl-cell--8-col-phone.mdl-cell--8-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--8-col, .mdl-grid--no-spacing >
    .mdl-cell--8-col-phone.mdl-cell--8-col-phone {
      width: 100%; }
  .mdl-cell--9-col,
  .mdl-cell--9-col-phone.mdl-cell--9-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--9-col, .mdl-grid--no-spacing >
    .mdl-cell--9-col-phone.mdl-cell--9-col-phone {
      width: 100%; }
  .mdl-cell--10-col,
  .mdl-cell--10-col-phone.mdl-cell--10-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--10-col, .mdl-grid--no-spacing >
    .mdl-cell--10-col-phone.mdl-cell--10-col-phone {
      width: 100%; }
  .mdl-cell--11-col,
  .mdl-cell--11-col-phone.mdl-cell--11-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--11-col, .mdl-grid--no-spacing >
    .mdl-cell--11-col-phone.mdl-cell--11-col-phone {
      width: 100%; }
  .mdl-cell--12-col,
  .mdl-cell--12-col-phone.mdl-cell--12-col-phone {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--12-col, .mdl-grid--no-spacing >
    .mdl-cell--12-col-phone.mdl-cell--12-col-phone {
      width: 100%; } }

@media (min-width: 480px) and (max-width: 839px) {
  .mdl-grid {
    padding: 8px; }
  .mdl-cell {
    margin: 8px;
    width: calc(50% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell {
      width: 50%; }
  .mdl-cell--hide-tablet {
    display: none !important; }
  .mdl-cell--1-col,
  .mdl-cell--1-col-tablet.mdl-cell--1-col-tablet {
    width: calc(12.5% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--1-col, .mdl-grid--no-spacing >
    .mdl-cell--1-col-tablet.mdl-cell--1-col-tablet {
      width: 12.5%; }
  .mdl-cell--2-col,
  .mdl-cell--2-col-tablet.mdl-cell--2-col-tablet {
    width: calc(25% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--2-col, .mdl-grid--no-spacing >
    .mdl-cell--2-col-tablet.mdl-cell--2-col-tablet {
      width: 25%; }
  .mdl-cell--3-col,
  .mdl-cell--3-col-tablet.mdl-cell--3-col-tablet {
    width: calc(37.5% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--3-col, .mdl-grid--no-spacing >
    .mdl-cell--3-col-tablet.mdl-cell--3-col-tablet {
      width: 37.5%; }
  .mdl-cell--4-col,
  .mdl-cell--4-col-tablet.mdl-cell--4-col-tablet {
    width: calc(50% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--4-col, .mdl-grid--no-spacing >
    .mdl-cell--4-col-tablet.mdl-cell--4-col-tablet {
      width: 50%; }
  .mdl-cell--5-col,
  .mdl-cell--5-col-tablet.mdl-cell--5-col-tablet {
    width: calc(62.5% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--5-col, .mdl-grid--no-spacing >
    .mdl-cell--5-col-tablet.mdl-cell--5-col-tablet {
      width: 62.5%; }
  .mdl-cell--6-col,
  .mdl-cell--6-col-tablet.mdl-cell--6-col-tablet {
    width: calc(75% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--6-col, .mdl-grid--no-spacing >
    .mdl-cell--6-col-tablet.mdl-cell--6-col-tablet {
      width: 75%; }
  .mdl-cell--7-col,
  .mdl-cell--7-col-tablet.mdl-cell--7-col-tablet {
    width: calc(87.5% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--7-col, .mdl-grid--no-spacing >
    .mdl-cell--7-col-tablet.mdl-cell--7-col-tablet {
      width: 87.5%; }
  .mdl-cell--8-col,
  .mdl-cell--8-col-tablet.mdl-cell--8-col-tablet {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--8-col, .mdl-grid--no-spacing >
    .mdl-cell--8-col-tablet.mdl-cell--8-col-tablet {
      width: 100%; }
  .mdl-cell--9-col,
  .mdl-cell--9-col-tablet.mdl-cell--9-col-tablet {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--9-col, .mdl-grid--no-spacing >
    .mdl-cell--9-col-tablet.mdl-cell--9-col-tablet {
      width: 100%; }
  .mdl-cell--10-col,
  .mdl-cell--10-col-tablet.mdl-cell--10-col-tablet {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--10-col, .mdl-grid--no-spacing >
    .mdl-cell--10-col-tablet.mdl-cell--10-col-tablet {
      width: 100%; }
  .mdl-cell--11-col,
  .mdl-cell--11-col-tablet.mdl-cell--11-col-tablet {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--11-col, .mdl-grid--no-spacing >
    .mdl-cell--11-col-tablet.mdl-cell--11-col-tablet {
      width: 100%; }
  .mdl-cell--12-col,
  .mdl-cell--12-col-tablet.mdl-cell--12-col-tablet {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--12-col, .mdl-grid--no-spacing >
    .mdl-cell--12-col-tablet.mdl-cell--12-col-tablet {
      width: 100%; } }

@media (min-width: 840px) {
  .mdl-grid {
    padding: 8px; }
  .mdl-cell {
    margin: 8px;
    width: calc(33.33333% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell {
      width: 33.33333%; }
  .mdl-cell--hide-desktop {
    display: none !important; }
  .mdl-cell--1-col,
  .mdl-cell--1-col-desktop.mdl-cell--1-col-desktop {
    width: calc(8.33333% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--1-col, .mdl-grid--no-spacing >
    .mdl-cell--1-col-desktop.mdl-cell--1-col-desktop {
      width: 8.33333%; }
  .mdl-cell--2-col,
  .mdl-cell--2-col-desktop.mdl-cell--2-col-desktop {
    width: calc(16.66667% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--2-col, .mdl-grid--no-spacing >
    .mdl-cell--2-col-desktop.mdl-cell--2-col-desktop {
      width: 16.66667%; }
  .mdl-cell--3-col,
  .mdl-cell--3-col-desktop.mdl-cell--3-col-desktop {
    width: calc(25% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--3-col, .mdl-grid--no-spacing >
    .mdl-cell--3-col-desktop.mdl-cell--3-col-desktop {
      width: 25%; }
  .mdl-cell--4-col,
  .mdl-cell--4-col-desktop.mdl-cell--4-col-desktop {
    width: calc(33.33333% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--4-col, .mdl-grid--no-spacing >
    .mdl-cell--4-col-desktop.mdl-cell--4-col-desktop {
      width: 33.33333%; }
  .mdl-cell--5-col,
  .mdl-cell--5-col-desktop.mdl-cell--5-col-desktop {
    width: calc(41.66667% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--5-col, .mdl-grid--no-spacing >
    .mdl-cell--5-col-desktop.mdl-cell--5-col-desktop {
      width: 41.66667%; }
  .mdl-cell--6-col,
  .mdl-cell--6-col-desktop.mdl-cell--6-col-desktop {
    width: calc(50% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--6-col, .mdl-grid--no-spacing >
    .mdl-cell--6-col-desktop.mdl-cell--6-col-desktop {
      width: 50%; }
  .mdl-cell--7-col,
  .mdl-cell--7-col-desktop.mdl-cell--7-col-desktop {
    width: calc(58.33333% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--7-col, .mdl-grid--no-spacing >
    .mdl-cell--7-col-desktop.mdl-cell--7-col-desktop {
      width: 58.33333%; }
  .mdl-cell--8-col,
  .mdl-cell--8-col-desktop.mdl-cell--8-col-desktop {
    width: calc(66.66667% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--8-col, .mdl-grid--no-spacing >
    .mdl-cell--8-col-desktop.mdl-cell--8-col-desktop {
      width: 66.66667%; }
  .mdl-cell--9-col,
  .mdl-cell--9-col-desktop.mdl-cell--9-col-desktop {
    width: calc(75% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--9-col, .mdl-grid--no-spacing >
    .mdl-cell--9-col-desktop.mdl-cell--9-col-desktop {
      width: 75%; }
  .mdl-cell--10-col,
  .mdl-cell--10-col-desktop.mdl-cell--10-col-desktop {
    width: calc(83.33333% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--10-col, .mdl-grid--no-spacing >
    .mdl-cell--10-col-desktop.mdl-cell--10-col-desktop {
      width: 83.33333%; }
  .mdl-cell--11-col,
  .mdl-cell--11-col-desktop.mdl-cell--11-col-desktop {
    width: calc(91.66667% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--11-col, .mdl-grid--no-spacing >
    .mdl-cell--11-col-desktop.mdl-cell--11-col-desktop {
      width: 91.66667%; }
  .mdl-cell--12-col,
  .mdl-cell--12-col-desktop.mdl-cell--12-col-desktop {
    width: calc(100% - 16px); }
    .mdl-grid--no-spacing > .mdl-cell--12-col, .mdl-grid--no-spacing >
    .mdl-cell--12-col-desktop.mdl-cell--12-col-desktop {
      width: 100%; } }

.md-fab-bottom-right {
  position: absolute;
  bottom: 20px;
  right: 20px;
  z-index: 49; }

md-card h1, md-card h2, md-card h3, md-card h4, md-card h5, md-card h6 {
  margin-top: 0;
  margin-bottom: 0; }

md-card md-toolbar {
  min-height: 56px;
  background-color: #ffffff !important;
  z-index: 0; }
  md-card md-toolbar .md-toolbar-tools {
    height: 56px;
    max-height: 56px;
    border-bottom: 1px solid #ddd;
    font-weight: 500;
    font-size: 16px; }
  md-card md-toolbar .md-toolbar-tools, md-card md-toolbar md-icon {
    color: #3d4653 !important; }

.card {
  background-color: #ffffff !important; }
  .card-icon {
    max-width: 96px; }
    .card-icon md-icon {
      float: right;
      height: 36px;
      width: 36px;
      padding: 12px;
      background-color: #646b75;
      color: #ffffff;
      border: 8px double;
      border-radius: 50%; }
  .card-info__value {
    color: #273140 !important;
    font-weight: 700; }
  .card-info__name {
    color: #3d4653 !important;
    text-transform: uppercase;
    font-weight: 500;
    font-size: 14px; }

@media (max-width: 599px) {
  .card-info {
    text-align: center; } }

.dtp > .dtp-content > .dtp-date-view > header.dtp-header {
  background-color: #273140; }

.dtp div.dtp-date,
.dtp div.dtp-time,
.dtp .dtp-actual-meridien a.selected,
.dtp .dtp-picker-time > a.dtp-select-hour.selected {
  background-color: #3d4653; }

.dtp .p10 > a,
.dtp .dtp-hand.on,
.dtp table.dtp-picker-days tr > td > a.selected,
.dtp .dtp-picker-time > a.dtp-select-minute.selected {
  background-color: #3d4653; }

.dtp div.dtp-actual-year,
.dtp div.dtp-year-btn {
  color: #bdbdbd; }

.dtp .dtp-picker-month {
  margin-top: 8px;
  padding-top: 8px;
  padding-bottom: 8px;
  background-color: #ecedee;
  color: #3d4653; }

md-input-container.md-default-theme .md-input[disabled],
md-input-container .md-input[disabled],
md-input-container.md-default-theme .md-input [disabled],
md-input-container .md-input [disabled] {
  color: rgba(0, 0, 0, 0.6); }

header {
  z-index: 60; }

@media (max-width: 599px) {
  header md-toolbar .md-button.md-icon-button {
    margin: 0; } }

md-content {
  overflow-x: hidden;
  background-color: #ecedee; }

md-select-menu md-content {
  background-color: #ffffff; }
  md-select-menu md-content md-option:hover, md-select-menu md-content md-option:focus {
    color: #3d4653 !important;
    background-color: #dfe0e3 !important; }

md-toolbar {
  background-color: #273140 !important; }

.md-content-subheader {
  padding: 4px 8px;
  background-color: #f2f2f3;
  color: #424242;
  font-weight: 400;
  font-size: 14px; }

md-checkbox.md-checked .md-icon {
  background-color: #1080f2; }
  md-checkbox.md-checked .md-icon::after {
    border-color: #ffffff; }

md-tooltip {
  font-size: 14px; }

.fab-closed-icon, .fab-open-icon {
  position: absolute;
  top: 17px;
  left: 16px;
  transition: all .3s ease-in-out;
  opacity: 1;
  transform: scale(1); }

.fab-open-icon {
  opacity: 0;
  transform: scale(0); }

.md-is-open .fab-closed-icon {
  opacity: 0;
  transform: scale(0); }

.md-is-open .fab-open-icon {
  opacity: 1;
  transform: scale(1); }

md-menu-content .md-button {
  margin: 0;
  padding: 4px 0; }
  md-menu-content .md-button:hover, md-menu-content .md-button:focus {
    color: #3d4653 !important;
    background-color: #dfe0e3 !important; }
  md-menu-content .md-button:active {
    color: #3d4653 !important;
    background-color: #c4c6cb; }

md-tabs {
  padding-right: 8px;
  padding-left: 8px;
  background-color: #ffffff;
  border-bottom: 1px solid #bdbdbd;
  border-radius: 0; }
  md-tabs:not(.md-no-tab-content):not(.md-dynamic-height) {
    min-height: 0 !important; }
  md-tabs md-ink-bar {
    color: #1080f2 !important;
    background: #1080f2 !important; }
  md-tabs md-tab-content {
    background-color: #ecedee;
    border-top: 1px solid #bdbdbd; }
  md-tabs md-icon {
    color: #757575; }
  md-tabs .md-tab {
    color: #757575 !important; }
    md-tabs .md-tab.md-active {
      color: #1080f2 !important;
      font-weight: 700; }

@media (min-width: 600px) {
  md-tabs {
    padding-right: 24px;
    padding-left: 24px; } }

.md-tab-interval {
  background-color: #ecedee;
  border-bottom: 1px solid #bdbdbd; }
  .md-tab-interval div > * {
    margin-right: 32px; }
    .md-tab-interval div > *:last-of-type {
      margin-right: 8px; }
  .md-tab-interval #quickInterval {
    min-width: 120px; }
  .md-tab-interval #periodInterval {
    min-width: 160px; }
  .md-tab-interval .md-content-title {
    padding-bottom: 16px;
    text-transform: uppercase;
    font-weight: 700; }
  .md-tab-interval md-input-container {
    margin-bottom: 0; }
    .md-tab-interval md-input-container .md-errors-spacer {
      min-height: 8px; }
  .md-tab-interval ol, .md-tab-interval ul {
    margin-left: 0;
    padding-left: 0;
    list-style-type: none;
    text-transform: uppercase; }
    .md-tab-interval ol li, .md-tab-interval ul li {
      padding: 2px 8px;
      margin-bottom: 4px;
      color: #424242;
      font-weight: 500; }
      .md-tab-interval ol li:hover, .md-tab-interval ul li:hover {
        cursor: pointer; }
      .md-tab-interval ol li:hover, .md-tab-interval ol li:active, .md-tab-interval ol li:focus, .md-tab-interval ul li:hover, .md-tab-interval ul li:active, .md-tab-interval ul li:focus {
        color: #ffffff;
        background-color: #1080f2;
        border-radius: 2px; }

.subheader-period {
  background-color: #f2f2f3;
  border-bottom: 1px solid #bdbdbd; }
  .subheader-period .md-subheader-inner {
    padding: 0 32px 0 16px; }
  .subheader-period .subheader-title {
    color: #757575;
    font-weight: 500;
    font-size: 16px; }
  .subheader-period button:last-of-type {
    margin-right: 0; }
  .subheader-period md-input-container {
    margin-top: 4px;
    margin-bottom: 4px; }
    .subheader-period md-input-container .md-errors-spacer {
      min-height: 0; }

#seekerSummary md-pagination-wrapper {
  width: auto !important; }

#seekerComparative md-pagination-wrapper {
  width: auto !important; }

md-sidenav md-content, md-sidenav md-content .md-subheader {
  background-color: transparent; }

md-sidenav md-divider {
  margin-top: 4px;
  margin-bottom: 4px; }

md-sidenav md-list-item md-icon {
  margin: 0 8px 0 0; }

md-sidenav md-list-item .md-list-item-inner {
  margin-top: 0 !important;
  margin-bottom: 0 !important; }
  md-sidenav md-list-item .md-list-item-inner md-icon {
    margin-top: 0 !important;
    margin-bottom: 0 !important; }

md-sidenav md-list-item:active, md-sidenav md-list-item:focus, md-sidenav md-list-item:hover {
  background-color: #dfe0e3;
  color: #3d4653; }
  md-sidenav md-list-item:active md-icon, md-sidenav md-list-item:focus md-icon, md-sidenav md-list-item:hover md-icon {
    color: #3d4653 !important; }

md-sidenav .md-avatar {
  height: 64px;
  width: 64px; }
  md-sidenav .md-avatar img {
    height: 64px;
    width: 64px;
    border-radius: 50%; }

md-sidenav .toolbar-header {
  background-image: url("../../assets/images/bg-header.png");
  background-blend-mode: multiply;
  background-repeat: no-repeat; }

#sidenavMenu {
  width: 240px;
  max-width: 240px;
  height: inherit; }
  #sidenavMenu md-toolbar {
    padding: 16px;
    height: 160px;
    min-height: 160px;
    max-height: 160px; }
  #sidenavMenu md-content {
    height: inherit; }

@media (min-width: 1280px) {
  #sidenavMenu {
    z-index: 58;
    border-left: 1px solid #bdbdbd; } }

#sidenavFilter {
  width: 320px;
  max-width: 320px;
  position: fixed;
  top: 0; }
  #sidenavFilter md-tabs md-tab-content {
    background-color: #ffffff; }
  #sidenavFilter md-list-item {
    border-bottom: 1px solid #f1f2f2; }
    #sidenavFilter md-list-item:last-of-type {
      border-bottom: none; }

thead {
  text-transform: uppercase; }

.td-colored {
  max-width: 100px; }

h1,
h2,
h3,
h4,
h5,
h6 {
  color: #3d4653;
  margin: 0;
  padding: 0; }

small {
  opacity: .6; }

a {
  color: #3d4653; }
  a:focus, a:hover, a:active {
    color: #273140; }

html, body {
  height: 100%;
  width: 100%;
  font-family: "Roboto", "Helvetica", sans-serif;
  background-color: #ecedee;
  text-rendering: optimizeLegibility;
  overflow: hidden; }

.display-flex {
  display: flex; }

.no-padding {
  padding: 0; }

.no-margin {
  margin: 0; }

.padding-sm {
  padding: 8px; }
  .padding-sm__tb {
    padding-top: 8px;
    padding-bottom: 8px; }
  .padding-sm__rl {
    padding-right: 8px;
    padding-left: 8px; }

.padding-md {
  padding: 16px; }
  .padding-md__tb {
    padding-top: 16px;
    padding-bottom: 16px; }
  .padding-md__rl {
    padding-right: 16px;
    padding-left: 16px; }

.padding-lg {
  padding: 32px; }
  .padding-lg__tb {
    padding-top: 32px;
    padding-bottom: 32px; }
  .padding-lg__rl {
    padding-right: 32px;
    padding-left: 32px; }

.margin-sm {
  margin: 8px; }
  .margin-sm__tb {
    margin-top: 8px;
    margin-bottom: 8px; }
  .margin-sm__rl {
    margin-right: 8px;
    margin-left: 8px; }

.margin-md {
  margin: 16px; }
  .margin-md__tb {
    margin-top: 16px;
    margin-bottom: 16px; }
  .margin-md__rl {
    margin-right: 16px;
    margin-left: 16px; }

.margin-lg {
  margin: 32px; }
  .margin-lg__tb {
    margin-top: 32px;
    margin-bottom: 32px; }
  .margin-lg__rl {
    margin-right: 32px;
    margin-left: 32px; }

.margin-auto {
  margin-right: auto;
  margin-left: auto; }

.float__left {
  float: left; }

.float__right {
  float: right; }

.text__left {
  text-align: left; }

.text__center {
  text-align: center; }

.text__right {
  text-align: right; }

.text__lowercase {
  text-transform: lowercase; }

.text__uppercase {
  text-transform: uppercase; }

.text__capitalize {
  text-transform: capitalize; }

.text__thin {
  font-weight: 100; }

.text__light {
  font-weight: 300; }

.text__regular {
  font-weight: 400; }

.text__medium {
  font-weight: 500; }

.text__bold {
  font-weight: 700; }

.text__black {
  font-weight: 900; }

.bg__light-primary {
  background-color: #ecedee; }

.bg__light-secondary {
  background-color: #ecedee; }

.bg__dark-primary {
  background-color: #273140; }

.bg__dark-secondary {
  background-color: #ffffff; }

.ribbon {
  flex-shrink: 0;
  -ms-flex-negative: 0;
  height: 50vh;
  width: 100%;
  background-color: #cfd8dc; }

.main {
  flex-shrink: 0;
  -ms-flex-negative: 0;
  margin-top: -50vh; }

.logo {
  max-height: 36px;
  margin-right: 8px; }

.login {
  width: 400px; }

.my-chart {
  height: auto;
  display: inline-block;
  width: calc(50% - 4px);
  border-sizing: border-box; }

.container-chart {
  display: block; }

@media screen and (max-width: 960px) {
  .my-chart {
    width: 100%;
    display: block; } }

.fs-input {
  margin: 4px 0 20px 0;
  padding: 12px;
  color: #444;
  border-radius: 6px;
  border: solid 1px #ccc;
  background: white; }

.fs-label {
  color: #6751a2;
  font-size: 12px;
  font-family: Roboto; }

/**
 *  Do not remove the comment below. It's the markers used by gulp-inject to inject
 *  all your sass files automatically
 */
.f-box {
  width: 317px;
  height: 431px;
  background-color: #FFFFFF;
  border: 1px solid #D9D9D9;
  border-radius: 5px;
  background-color: white; }

.f-button {
  height: 48px;
  padding: 0 32px;
  font-size: 1em;
  text-align: center;
  color: #fafafa;
  background-color: #6A489B;
  border: 3px solid #6A489B;
  border-radius: 5px;
  text-transform: uppercase;
  outline: none;
  transition: all 0.2s ease; }
  .f-button:hover, .f-button:focus {
    background-color: #7E5DAF; }
  .f-button:active {
    background-color: #8f67ca; }

f-button.f-block button {
  width: 100%; }

.f-button[disabled] {
  color: rgba(230, 230, 230, 0.79);
  background-color: rgba(151, 140, 166, 0.67);
  border: 3px solid transparent; }

.f-button-light {
  color: #999;
  border: 3px solid #D9D9D9;
  background-color: transparent; }
  .f-button-light:hover, .f-button-light:focus {
    background-color: #f0f0f0; }

.f-separator {
  display: inline-block;
  position: relative;
  overflow: hidden;
  width: 275px;
  height: 4px; }
  .f-separator .f-separator-blue-1 {
    display: inline-block;
    position: absolute;
    left: 0;
    width: 164px;
    height: 0px;
    border-top: 4px solid #59C5D5; }
  .f-separator .f-separator-blue-2 {
    display: inline-block;
    position: absolute;
    left: 100px;
    width: 128px;
    height: 0px;
    border-top: 4px solid #398BC2; }
  .f-separator .f-separator-purple {
    display: inline-block;
    position: absolute;
    left: 200px;
    width: 122px;
    height: 0px;
    border-top: 4px solid #6A489B; }

.f-input {
  height: 46px;
  box-sizing: border-box;
  font-size: 12pt;
  line-height: 17px;
  color: #888888;
  background-color: #ffffff;
  border: 1px solid #d9d9d9;
  border-radius: 3px;
  padding-right: 20px;
  padding-left: 20px;
  outline: none;
  transition: all 0.2s ease;
  min-width: 0 .f-input; }
  .f-input :focus {
    border-color: #59c5d5; }
  .f-input::-webkit-input-placeholder {
    color: #c9c9c9; }

f-input.f-block .f-input {
  display: block;
  width: 100%; }

.f-input-borderless .f-input {
  border: 0px; }

.f-input-no-padding .f-input {
  padding-right: 0;
  padding-left: 0; }

.f-input-no-left-padding .f-input {
  padding-left: 0; }

a.md-button.md-default-theme.md-primary.md-raised, a.md-button.md-primary.md-raised, a.md-button.md-default-theme.md-primary.md-fab, a.md-button.md-primary.md-fab, .md-button.md-default-theme.md-primary.md-raised, .md-button.md-primary.md-raised, .md-button.md-default-theme.md-primary.md-fab, .md-button.md-primary.md-fab {
  color: rgba(255, 255, 255, 0.87);
  background-color: #273140 !important; }

.reset-errors ul li {
  color: #f97575; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmNzcyIsImluZGV4LnNjc3MiLCIuLi9zdHlsZS9zdHlsZXMuc2NzcyIsIi4uL3N0eWxlL2xvZ2luLXBhZ2Utc3R5bGUvbG9naW4tcGFnZS1zdHlsZS5zY3NzIiwiLi4vc3R5bGUvbW9kdWxlcy9faWNvbnMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL21hdGVyaWFsLWRlc2lnbi1saXRlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9fdmFyaWFibGVzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9fY29sb3ItZGVmaW5pdGlvbnMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL19mdW5jdGlvbnMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL19taXhpbnMuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL3Jlc2V0cy9fcmVzZXRzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9yZXNldHMvX2g1YnAuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL3Jlc2V0cy9fbW9iaWxlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy90eXBvZ3JhcGh5L190eXBvZ3JhcGh5LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9wYWxldHRlL19wYWxldHRlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9yaXBwbGUvX3JpcHBsZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvYW5pbWF0aW9uL19hbmltYXRpb24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL2JhZGdlL19iYWRnZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvYnV0dG9uL19idXR0b24uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL2NhcmQvX2NhcmQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL2NoZWNrYm94L19jaGVja2JveC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvZGF0YS10YWJsZS9fZGF0YS10YWJsZS5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvZm9vdGVyL19tZWdhX2Zvb3Rlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvZm9vdGVyL19taW5pX2Zvb3Rlci5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvaWNvbi10b2dnbGUvX2ljb24tdG9nZ2xlLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9tZW51L19tZW51LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9wcm9ncmVzcy9fcHJvZ3Jlc3Muc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL2xheW91dC9fbGF5b3V0LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9yYWRpby9fcmFkaW8uc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL3NsaWRlci9fc2xpZGVyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9zcGlubmVyL19zcGlubmVyLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9zd2l0Y2gvX3N3aXRjaC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvdGFicy9fdGFicy5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24tbGl0ZS9zcmMvdGV4dGZpZWxkL190ZXh0ZmllbGQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL3Rvb2x0aXAvX3Rvb2x0aXAuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL3NoYWRvdy9fc2hhZG93LnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1saXRlL3NyYy9ncmlkL19ncmlkLnNjc3MiLCIuLi9zdHlsZS9wYXJ0aWFscy9fYnV0dG9ucy5zY3NzIiwiLi4vc3R5bGUvcGFydGlhbHMvX2NhcmQuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2RpcmVjdGlvbmFsLXZhbHVlcy5zY3NzIiwiLi4vc3R5bGUvbW9kdWxlcy9fdmFyaWFibGVzLnNjc3MiLCIuLi8uLi9ib3dlcl9jb21wb25lbnRzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3NpemUuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdGludC5zY3NzIiwiLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1jb2xvcnMvZGlzdC9jb2xvcnMuc2NzcyIsIi4uL3N0eWxlL3BhcnRpYWxzL19kYXRldGltZXBpY2tlci5zY3NzIiwiLi4vc3R5bGUvcGFydGlhbHMvX2hlYWRlci5zY3NzIiwiLi4vc3R5bGUvcGFydGlhbHMvX2xheW91dC5zY3NzIiwiLi4vc3R5bGUvcGFydGlhbHMvX21lbnUuc2NzcyIsIi4uL3N0eWxlL3BhcnRpYWxzL19zZWVrZXIuc2NzcyIsIi4uL3N0eWxlL3BhcnRpYWxzL19zaWRlbmF2LnNjc3MiLCIuLi9zdHlsZS9wYXJ0aWFscy9fdGFibGUuc2NzcyIsIi4uL3N0eWxlL3BhcnRpYWxzL190eXBvZ3JhcGh5LnNjc3MiLCIuLi9zdHlsZS9sYXlvdXQvX2Jhc2Uuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsIi4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZsZXgtYm94LnNjc3MiLCIuLi9zdHlsZS9sYXlvdXQvX2hpZ2hjaGFydF9maWxsX3BhcmVudF9pc3N1ZV9oYWNrLnNjc3MiLCJjb21wb25lbnRzL0ZCb3gvRmJveC5zY3NzIiwiY29tcG9uZW50cy9GQnV0dG9uL0ZCdXR0b24uc2NzcyIsImNvbXBvbmVudHMvRlNlcGFyYXRvci9GU2VwYXJhdG9yLnNjc3MiLCJjb21wb25lbnRzL0ZJbnB1dC9GSW5wdXQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQkFBZ0I7QUNBaEI7OztFRElFO0FDR0YsdUZBQVk7QUFDWixzRUFBWTtBQ1JaO0VBQ00sb0NBQW9DLEVBQUE7O0FBRTFDO0VBQ00sNkNBQTZDLEVBQUE7O0FBR25EO0VB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QUd2RDtFQUNFLDJDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGdDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDJDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGdDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDJDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLDhCQUFzRCxFQUFBOztBQUd4RDtFQUNFLHlDQUFpRSxFQUFBOztBQUtuRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDZDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLCtCQUF1RCxFQUFBOztBQUd6RDtFQUNFLDBDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUtwRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF5RCxFQUFBOztBQUczRDtFQUNFLDZDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGlDQUF5RCxFQUFBOztBQUczRDtFQUNFLDRDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUt0RTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDZDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDZDQUF5RSxFQUFBOztBQUczRTtFQUNFLGlDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDRDQUF5RSxFQUFBOztBQUczRTtFQUNFLGlDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDRDQUF5RSxFQUFBOztBQUczRTtFQUNFLCtCQUE4RCxFQUFBOztBQUdoRTtFQUNFLDBDQUF5RSxFQUFBOztBQUszRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF5RCxFQUFBOztBQUczRDtFQUNFLDZDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGlDQUF5RCxFQUFBOztBQUczRDtFQUNFLDRDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUt0RTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDZDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUtwRTtFQUNFLGdDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDJDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGtDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDZDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGtDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDZDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGtDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDZDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGlDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDRDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGlDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDRDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGdDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDJDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGdDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDJDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGdDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDJDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGdDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDJDQUF1RSxFQUFBOztBQUd6RTtFQUNFLCtCQUE0RCxFQUFBOztBQUc5RDtFQUNFLDBDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUsxRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDZDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLCtCQUFzRCxFQUFBOztBQUd4RDtFQUNFLDBDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUtwRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDZDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLGdDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDJDQUFpRSxFQUFBOztBQUduRTtFQUNFLCtCQUFzRCxFQUFBOztBQUd4RDtFQUNFLDBDQUFpRSxFQUFBOztBQUduRTtFQUNFLDhCQUFzRCxFQUFBOztBQUd4RDtFQUNFLHlDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUtwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLCtCQUF1RCxFQUFBOztBQUd6RDtFQUNFLDBDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLCtCQUF3RCxFQUFBOztBQUcxRDtFQUNFLDBDQUFtRSxFQUFBOztBQUtyRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDZDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDZDQUF5RSxFQUFBOztBQUczRTtFQUNFLGlDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDRDQUF5RSxFQUFBOztBQUczRTtFQUNFLGdDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDJDQUF5RSxFQUFBOztBQUczRTtFQUNFLGlDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDRDQUF5RSxFQUFBOztBQUszRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDZDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGlDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDRDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUtwRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF5RCxFQUFBOztBQUczRDtFQUNFLDZDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUt0RTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUtyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDZDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGlDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDRDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGdDQUF3RCxFQUFBOztBQUcxRDtFQUNFLDJDQUFtRSxFQUFBOztBQUdyRTtFQUNFLCtCQUF3RCxFQUFBOztBQUcxRDtFQUNFLDBDQUFtRSxFQUFBOztBQUdyRTtFQUNFLGtDQUF5RCxFQUFBOztBQUczRDtFQUNFLDZDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGlDQUF5RCxFQUFBOztBQUczRDtFQUNFLDRDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUd0RTtFQUNFLGdDQUF5RCxFQUFBOztBQUczRDtFQUNFLDJDQUFvRSxFQUFBOztBQUt0RTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE0RCxFQUFBOztBQUc5RDtFQUNFLDZDQUF1RSxFQUFBOztBQUd6RTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDZDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGlDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDRDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGdDQUE2RCxFQUFBOztBQUcvRDtFQUNFLDJDQUF3RSxFQUFBOztBQUcxRTtFQUNFLGtDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDZDQUF5RSxFQUFBOztBQUczRTtFQUNFLGlDQUE4RCxFQUFBOztBQUdoRTtFQUNFLDRDQUF5RSxFQUFBOztBQUczRTtFQUNFLCtCQUE4RCxFQUFBOztBQUdoRTtFQUNFLDBDQUF5RSxFQUFBOztBQUczRTtFQUNFLCtCQUE4RCxFQUFBOztBQUdoRTtFQUNFLDBDQUF5RSxFQUFBOztBQUszRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGtDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDZDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGlDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDRDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLGdDQUF1RCxFQUFBOztBQUd6RDtFQUNFLDJDQUFrRSxFQUFBOztBQUdwRTtFQUNFLCtCQUF1RCxFQUFBOztBQUd6RDtFQUNFLDBDQUFrRSxFQUFBOztBQUdwRTtFQUNFLCtCQUF1RCxFQUFBOztBQUd6RDtFQUNFLDBDQUFrRSxFQUFBOztBQUdwRTtFQUNFLCtCQUF1RCxFQUFBOztBQUd6RDtFQUNFLDBDQUFrRSxFQUFBOztBQUtwRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFxRCxFQUFBOztBQUd2RDtFQUNFLDZDQUFnRSxFQUFBOztBQUdsRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLGtDQUFzRCxFQUFBOztBQUd4RDtFQUNFLDZDQUFpRSxFQUFBOztBQUduRTtFQUNFLCtCQUFzRCxFQUFBOztBQUd4RDtFQUNFLDBDQUFpRSxFQUFBOztBQUduRTtFQUNFLCtCQUFzRCxFQUFBOztBQUd4RDtFQUNFLDBDQUFpRSxFQUFBOztBQUduRTtFQUNFLCtCQUFzRCxFQUFBOztBQUd4RDtFQUNFLDBDQUFpRSxFQUFBOztBQUtuRTtFQUNFLGlDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDRDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGtDQUEwRCxFQUFBOztBQUc1RDtFQUNFLDZDQUFxRSxFQUFBOztBQUd2RTtFQUNFLGtDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDZDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGtDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDZDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGtDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDZDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGtDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDZDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGlDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDRDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGlDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDRDQUFzRSxFQUFBOztBQUd4RTtFQUNFLGdDQUEyRCxFQUFBOztBQUc3RDtFQUNFLDJDQUFzRSxFQUFBOztB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RUFBQTtJTzREckM7TUFnQk0sbUJBQW1CLEVBQUE7O0FDbEd6QjtFQUNFLHlCQUF5QixFQUFBOztBQUczQjtFQUNFLGdCQUFnQixFQUFBOztBQ0xsQjs7Ozs7O0VBTUUsY1RnQm1DO0VTZm5DLFNBQVM7RUFDVCxVQUFVLEVBQUE7O0FBR1o7RUFDRSxXQUFXLEVBQUE7O0FBR2I7RUFDRSxjVE1tQyxFQUFBO0VTUHJDO0lBTUksY1hIeUIsRUFBQTs7QVlsQjdCO0VYd0NJLFlXdkNnQjtFWDZDaEIsV1c3Q2dCO0VBQ2xCLDhDWk9zRDtFWU50RCx5QlZtQm1DO0VVbEJuQyxrQ0FBa0M7RUFDbEMsZ0JBQWdCLEVBQUE7O0FBR2xCO0VBQWdCLGFBQWEsRUFBQTs7QUFFN0I7RWJtRkksVUF6RGlCLEVBQUE7O0FhekJyQjtFYmtGSSxTQXpEaUIsRUFBQTs7QWF0Qm5CO0ViK0VFLFlhOUVvQixFQUFBO0VBQ3BCO0liMERvQixnQmExRFE7SWJtRU4sbUJhbkVNLEVBQUE7RUFDNUI7SWI4RHNCLGtCYTlEVztJYm1FWCxpQmFuRVcsRUFBQTs7QUFFbkM7RWIwRUUsYWF6RXFCLEVBQUE7RUFDckI7SWJxRG9CLGlCYXJEUztJYjhEUCxvQmE5RE8sRUFBQTtFQUM3QjtJYnlEc0IsbUJhekRZO0liOERaLGtCYTlEWSxFQUFBOztBQUVwQztFYnFFRSxhYXBFcUIsRUFBQTtFQUNyQjtJYmdEb0IsaUJhaERTO0lieURQLG9CYXpETyxFQUFBO0VBQzdCO0lib0RzQixtQmFwRFk7SWJ5RFosa0JhekRZLEVBQUE7O0FBS3BDO0ViNkRFLFdhNURtQixFQUFBO0VBQ25CO0lid0NvQixlYXhDTztJYmlETCxrQmFqREssRUFBQTtFQUMzQjtJYjRDc0IsaUJhNUNVO0liaURWLGdCYWpEVSxFQUFBOztBQUVsQztFYndERSxZYXZEb0IsRUFBQTtFQUNwQjtJYm1Db0IsZ0JhbkNRO0liNENOLG1CYTVDTSxFQUFBO0VBQzVCO0lidUNzQixrQmF2Q1c7SWI0Q1gsaUJhNUNXLEVBQUE7O0FBRW5DO0VibURFLFlhbERvQixFQUFBO0VBQ3BCO0li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QUNkLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsYUFBYTtFQUNiLHlCQUF5QjtFQUN6QixxQkFiTSxFQUFBO0VBQVI7SUFnQkkscUJBQXFCLEVBQUE7RUFoQnpCO0lBb0JJLGNBQWMsRUFBQTs7QUFHbEI7RUFDRSxjQUFjO0VBQ2QsV0FBVyxFQUFBOztBQUliO0VBRUksV0FBVyxFQUFBOztBQUlmO0VBRUksZ0JBQWdCO0VBQ2hCLGVBQWUsRUFBQTs7QUFHbkI7RUFFSSxlQUFlLEVBQUE7O0ExRG5CbkI7RUFDSSxnQ0FBNkI7RUFDN0Isb0NBQTZDLEVBQUE7O0FBR2pEO0VBRVksY0FBYyxFQUFBIiwiZmlsZSI6ImluZGV4LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8qKlxuICogIERvIG5vdCByZW1vdmUgdGhlIGNvbW1lbnRzIGJlbG93LiBJdCdzIHRoZSBtYXJrZXJzIHVzZWQgYnkgd2lyZWRlcCB0byBpbmplY3RcbiAqICBzYXNzIGRlcGVuZGVuY2llcyB3aGVuIGRlZmluZWQgaW4gdGhlIGJvd2VyLmpzb24gb2YgeW91ciBkZXBlbmRlbmNpZXNcbiAqL1xuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvOjMwMCw0MDAsNTAwLDcwMCw0MDBpdGFsaWNcIik7XG5AaW1wb3J0IHVybChcImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnNcIik7XG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50OyB9XG5cbmh0bWwgYm9keSwgaW5wdXQsIGJ1dHRvbiwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgdGV4dGFyZWEge1xuICBmb250LWZhbWlseTogJ1BUIFNhbnMnLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7IH1cblxuLnN1Y2Nlc3MtbWVzc2FnZS1zZW50IHAge1xuICBjb2xvcjogIzk5OTtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5zdWNjZXNzLW1lc3NhZ2Utc2VudCBoMyB7XG4gIGNvbG9yOiAjNzc3O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cblxuLm5vdGlmaWNhdGlvbi1mc2Vuc2Uge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGhlaWdodDogYXV0bztcbiAgcGFkZGluZzogNHB4IDE2cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi13aWR0aDogNDUwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGVmdDogNTAlO1xuICBsaW5lLWhlaWdodDogMzBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDtcbiAgdG9wOiAwO1xuICBib3gtc2hhZG93OiAwIDAgM3B4IGdyZXk7XG4gIGFuaW1hdGlvbi1uYW1lOiBub3RpZmljYXRpb24tZW50ZXI7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xuICBhbmltYXRpb24tZHVyYXRpb246IDAuM3M7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7IH1cblxuLm5vdGlmaWNhdGlvbi1sZWF2ZSB7XG4gIHRvcDogLTQwcHg7XG4gIGFuaW1hdGlvbi1uYW1lOiBub3RpZmljYXRpb24tbGVhdmU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xuICBhbmltYXRpb24tZHVyYXRpb246IDAuM3M7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7IH1cblxuLm5vdGlmaWNhdGlvbi1kZWZhdWx0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgfVxuXG4ubm90aWZpY2F0aW9uLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB9XG5cbi5ub3RpZmljYXRpb24tc3VjY2VzcyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1OGNlNTg7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuXG4ubm90aWZpY2F0aW9uLXdhcm5pbmcge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB9XG5cbi5ub3RpZmljYXRpb24tZXJyb3Ige1xuICBjb2xvcjogd2hpdGU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYzY0NjQ7IH1cblxuQGtleWZyYW1lcyBub3RpZmljYXRpb24tZW50ZXIge1xuICBmcm9tIHtcbiAgICB0b3A6IC0zMHB4OyB9XG4gIHRvIHtcbiAgICB0b3A6IDA7IH0gfVxuXG5Aa2V5ZnJhbWVzIG5vdGlmaWNhdGlvbi1sZWF2ZSB7XG4gIGZyb20ge1xuICAgIHRvcDogMHB4OyB9XG4gIHRvIHtcbiAgICB0b3A6IC00MHB4OyB9IH1cblxuLyogUnVsZXMgZm9yIHNpemluZyB0aGUgaWNvbi4gKi9cbi5tYXRlcmlhbC1pY29ucy5tZC0xOCB7XG4gIGZvbnQtc2l6ZTogMThweDsgfVxuXG4ubWF0ZXJpYWwtaWNvbnMubWQtMjQge1xuICBmb250LXNpemU6IDI0cHg7IH1cblxuLm1hdGVyaWFsLWljb25zLm1kLTM2IHtcbiAgZm9udC1zaXplOiAzNnB4OyB9XG5cbi5tYXRlcmlhbC1pY29ucy5tZC00OCB7XG4gIGZvbnQtc2l6ZTogNDhweDsgfVxuXG4vKiBSdWxlcyBmb3IgdXNpbmcgaWNvbnMgYXMgYmxhY2sgb24gYSBsaWdodCBiYWNrZ3JvdW5kLiAqL1xuLm1hdGVyaWFsLWljb25zLm1kLWRhcmsge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTsgfVxuXG4ubWF0ZXJpYWwtaWNvbnMubWQtZGFyay5tZC1pbmFjdGl2ZSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjYpOyB9XG5cbi8qIFJ1bGVzIGZvciB1c2luZyBpY29ucyBhcyB3aGl0ZSBvbiBhIGRhcmsgYmFja2dyb3VuZC4gKi9cbi5tYXRlcmlhbC1pY29ucy5tZC1saWdodCB7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuXG4ubWF0ZXJpYWwtaWNvbnMubWQtbGlnaHQubWQtaW5hY3RpdmUge1xuICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBNYXRlcmlhbCBEZXNpZ24gTGl0ZSAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFR5cG9ncmFwaHkgKi9cbi8qIFNoYWRvd3MgKi9cbi8qIEFuaW1hdGlvbnMgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLypcbiAqIFdoYXQgZm9sbG93cyBpcyB0aGUgcmVzdWx0IG9mIG11Y2ggcmVzZWFyY2ggb24gY3Jvc3MtYnJvd3NlciBzdHlsaW5nLlxuICogQ3JlZGl0IGxlZnQgaW5saW5lIGFuZCBiaWcgdGhhbmtzIHRvIE5pY29sYXMgR2FsbGFnaGVyLCBKb25hdGhhbiBOZWFsLFxuICogS3JvYyBDYW1lbiwgYW5kIHRoZSBINUJQIGRldiBjb21tdW5pdHkgYW5kIHRlYW0uXG4gKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCYXNlIHN0eWxlczogb3BpbmlvbmF0ZWQgZGVmYXVsdHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5odG1sIHtcbiAgY29sb3I6IHJnYmEoMCwwLDAsIDAuODcpO1xuICBmb250LXNpemU6IDFlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDsgfVxuXG4vKlxuICogUmVtb3ZlIHRleHQtc2hhZG93IGluIHNlbGVjdGlvbiBoaWdobGlnaHQ6XG4gKiBodHRwczovL3R3aXR0ZXIuY29tL21pa2V0YXlsci9zdGF0dXMvMTIyMjg4MDUzMDFcbiAqXG4gKiBUaGVzZSBzZWxlY3Rpb24gcnVsZSBzZXRzIGhhdmUgdG8gYmUgc2VwYXJhdGUuXG4gKiBDdXN0b21pemUgdGhlIGJhY2tncm91bmQgY29sb3IgdG8gbWF0Y2ggeW91ciBkZXNpZ24uXG4gKi9cbjo6c2VsZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogI2IzZDRmYztcbiAgdGV4dC1zaGFkb3c6IG5vbmU7IH1cblxuLypcbiAqIEEgYmV0dGVyIGxvb2tpbmcgZGVmYXVsdCBob3Jpem9udGFsIHJ1bGVcbiAqL1xuaHIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAxcHg7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjY2M7XG4gIG1hcmdpbjogMWVtIDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLypcbiAqIFJlbW92ZSB0aGUgZ2FwIGJldHdlZW4gYXVkaW8sIGNhbnZhcywgaWZyYW1lcyxcbiAqIGltYWdlcywgdmlkZW9zIGFuZCB0aGUgYm90dG9tIG9mIHRoZWlyIGNvbnRhaW5lcnM6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9pc3N1ZXMvNDQwXG4gKi9cbmF1ZGlvLFxuY2FudmFzLFxuaWZyYW1lLFxuaW1nLFxuc3ZnLFxudmlkZW8ge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8qXG4gKiBSZW1vdmUgZGVmYXVsdCBmaWVsZHNldCBzdHlsZXMuXG4gKi9cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAwO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLypcbiAqIEFsbG93IG9ubHkgdmVydGljYWwgcmVzaXppbmcgb2YgdGV4dGFyZWFzLlxuICovXG50ZXh0YXJlYSB7XG4gIHJlc2l6ZTogdmVydGljYWw7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJyb3dzZXIgVXBncmFkZSBQcm9tcHRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uYnJvd3NlcnVwZ3JhZGUge1xuICBtYXJnaW46IDAuMmVtIDA7XG4gIGJhY2tncm91bmQ6ICNjY2M7XG4gIGNvbG9yOiAjMDAwO1xuICBwYWRkaW5nOiAwLjJlbSAwOyB9XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBdXRob3IncyBjdXN0b20gc3R5bGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhlbHBlciBjbGFzc2VzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLypcbiAqIEhpZGUgdmlzdWFsbHkgYW5kIGZyb20gc2NyZWVuIHJlYWRlcnM6XG4gKi9cbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cblxuLypcbiAqIEhpZGUgb25seSB2aXN1YWxseSwgYnV0IGhhdmUgaXQgYXZhaWxhYmxlIGZvciBzY3JlZW4gcmVhZGVyczpcbiAqIGh0dHA6Ly9zbm9vay5jYS9hcmNoaXZlcy9odG1sX2FuZF9jc3MvaGlkaW5nLWNvbnRlbnQtZm9yLWFjY2Vzc2liaWxpdHlcbiAqL1xuLnZpc3VhbGx5aGlkZGVuIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7IH1cblxuLypcbiAqIEV4dGVuZHMgdGhlIC52aXN1YWxseWhpZGRlbiBjbGFzcyB0byBhbGxvdyB0aGUgZWxlbWVudFxuICogdG8gYmUgZm9jdXNhYmxlIHdoZW4gbmF2aWdhdGVkIHRvIHZpYSB0aGUga2V5Ym9hcmQ6XG4gKiBodHRwczovL3d3dy5kcnVwYWwub3JnL25vZGUvODk3NjM4XG4gKi9cbi52aXN1YWxseWhpZGRlbi5mb2N1c2FibGU6YWN0aXZlLFxuLnZpc3VhbGx5aGlkZGVuLmZvY3VzYWJsZTpmb2N1cyB7XG4gIGNsaXA6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgd2lkdGg6IGF1dG87IH1cblxuLypcbiAqIEhpZGUgdmlzdWFsbHkgYW5kIGZyb20gc2NyZWVuIHJlYWRlcnMsIGJ1dCBtYWludGFpbiBsYXlvdXRcbiAqL1xuLmludmlzaWJsZSB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjsgfVxuXG4vKlxuICogQ2xlYXJmaXg6IGNvbnRhaW4gZmxvYXRzXG4gKlxuICogRm9yIG1vZGVybiBicm93c2Vyc1xuICogMS4gVGhlIHNwYWNlIGNvbnRlbnQgaXMgb25lIHdheSB0byBhdm9pZCBhbiBPcGVyYSBidWcgd2hlbiB0aGVcbiAqICAgIGBjb250ZW50ZWRpdGFibGVgIGF0dHJpYnV0ZSBpcyBpbmNsdWRlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBkb2N1bWVudC5cbiAqICAgIE90aGVyd2lzZSBpdCBjYXVzZXMgc3BhY2UgdG8gYXBwZWFyIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiBlbGVtZW50c1xuICogICAgdGhhdCByZWNlaXZlIHRoZSBgY2xlYXJmaXhgIGNsYXNzLlxuICogMi4gVGhlIHVzZSBvZiBgdGFibGVgIHJhdGhlciB0aGFuIGBibG9ja2AgaXMgb25seSBuZWNlc3NhcnkgaWYgdXNpbmdcbiAqICAgIGA6YmVmb3JlYCB0byBjb250YWluIHRoZSB0b3AtbWFyZ2lucyBvZiBjaGlsZCBlbGVtZW50cy5cbiAqL1xuLmNsZWFyZml4OmJlZm9yZSxcbi5jbGVhcmZpeDphZnRlciB7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICAvKiAxICovXG4gIGRpc3BsYXk6IHRhYmxlO1xuICAvKiAyICovIH1cblxuLmNsZWFyZml4OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7IH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEVYQU1QTEUgTWVkaWEgUXVlcmllcyBmb3IgUmVzcG9uc2l2ZSBEZXNpZ24uXG4gICBUaGVzZSBleGFtcGxlcyBvdmVycmlkZSB0aGUgcHJpbWFyeSAoJ21vYmlsZSBmaXJzdCcpIHN0eWxlcy5cbiAgIE1vZGlmeSBhcyBjb250ZW50IHJlcXVpcmVzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzVlbSkge1xuICAvKiBTdHlsZSBhZGp1c3RtZW50cyBmb3Igdmlld3BvcnRzIHRoYXQgbWVldCB0aGUgY29uZGl0aW9uICovIH1cblxuQG1lZGlhIHByaW50LCAobWluLXJlc29sdXRpb246IDEuMjVkcHB4KSwgKG1pbi1yZXNvbHV0aW9uOiAxMjBkcGkpIHtcbiAgLyogU3R5bGUgYWRqdXN0bWVudHMgZm9yIGhpZ2ggcmVzb2x1dGlvbiBkZXZpY2VzICovIH1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFByaW50IHN0eWxlcy5cbiAgIElubGluZWQgdG8gYXZvaWQgdGhlIGFkZGl0aW9uYWwgSFRUUCByZXF1ZXN0OlxuICAgaHR0cDovL3d3dy5waHBpZWQuY29tL2RlbGF5LWxvYWRpbmcteW91ci1wcmludC1jc3MvXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQG1lZGlhIHByaW50IHtcbiAgKixcbiAgKjpiZWZvcmUsXG4gICo6YWZ0ZXIsXG4gICo6Zmlyc3QtbGV0dGVyLFxuICAqOmZpcnN0LWxpbmUge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDtcbiAgICAvKiBCbGFjayBwcmludHMgZmFzdGVyOiBodHRwOi8vd3d3LnNhbmJlaWppLmNvbS9hcmNoaXZlcy85NTMgKi9cbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfVxuICBhLFxuICBhOnZpc2l0ZWQge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9XG4gIGFbaHJlZl06YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiOyB9XG4gIGFiYnJbdGl0bGVdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiAoXCIgYXR0cih0aXRsZSkgXCIpXCI7IH1cbiAgLypcbiAgICAgKiBEb24ndCBzaG93IGxpbmtzIHRoYXQgYXJlIGZyYWdtZW50IGlkZW50aWZpZXJzLFxuICAgICAqIG9yIHVzZSB0aGUgYGphdmFzY3JpcHQ6YCBwc2V1ZG8gcHJvdG9jb2xcbiAgICAgKi9cbiAgYVtocmVmXj1cIiNcIl06YWZ0ZXIsXG4gIGFbaHJlZl49XCJqYXZhc2NyaXB0OlwiXTphZnRlciB7XG4gICAgY29udGVudDogXCJcIjsgfVxuICBwcmUsXG4gIGJsb2NrcXVvdGUge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG4gIC8qXG4gICAgICogUHJpbnRpbmcgVGFibGVzOlxuICAgICAqIGh0dHA6Ly9jc3MtZGlzY3Vzcy5pbmN1dGlvLmNvbS93aWtpL1ByaW50aW5nX1RhYmxlc1xuICAgICAqL1xuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9XG4gIHRyLFxuICBpbWcge1xuICAgIHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfVxuICBpbWcge1xuICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG4gIHAsXG4gIGgyLFxuICBoMyB7XG4gICAgb3JwaGFuczogMztcbiAgICB3aWRvd3M6IDM7IH1cbiAgaDIsXG4gIGgzIHtcbiAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfSB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBSZW1vdmUgdGhlIHVud2FudGVkIGJveCBhcm91bmQgRkFCIGJ1dHRvbnMgKi9cbi8qIE1vcmUgaW5mbzogaHR0cDovL2dvby5nbC9JUHdLaSAqL1xuYSwgLm1kbC1hY2NvcmRpb24sIC5tZGwtYnV0dG9uLCAubWRsLWNhcmQsIC5tZGwtY2hlY2tib3gsIC5tZGwtZHJvcGRvd24tbWVudSxcbi5tZGwtaWNvbi10b2dnbGUsIC5tZGwtaXRlbSwgLm1kbC1yYWRpbywgLm1kbC1zbGlkZXIsIC5tZGwtc3dpdGNoLCAubWRsLXRhYnNfX3RhYiB7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTsgfVxuXG4vKlxuICogTWFrZSBodG1sIHRha2UgdXAgdGhlIGVudGlyZSBzY3JlZW5cbiAqIFRoZW4gc2V0IHRvdWNoLWFjdGlvbiB0byBhdm9pZCB0b3VjaCBkZWxheSBvbiBtb2JpbGUgSUVcbiAqL1xuaHRtbCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIC1tcy10b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247IH1cblxuLypcbiogTWFrZSBib2R5IHRha2UgdXAgdGhlIGVudGlyZSBzY3JlZW5cbiogUmVtb3ZlIGJvZHkgbWFyZ2luIHNvIGxheW91dCBjb250YWluZXJzIGRvbid0IGNhdXNlIGV4dHJhIG92ZXJmbG93LlxuKi9cbmJvZHkge1xuICB3aWR0aDogMTAwJTtcbiAgbWluLWhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwOyB9XG5cbi8qXG4gKiBNYWluIGRpc3BsYXkgcmVzZXQgZm9yIElFIHN1cHBvcnQuXG4gKiBTb3VyY2U6IGh0dHA6Ly93ZWJsb2cud2VzdC13aW5kLmNvbS9wb3N0cy8yMDE1L0phbi8xMi9tYWluLUhUTUw1LVRhZy1ub3Qtd29ya2luZy1pbi1JbnRlcm5ldC1FeHBsb3Jlci05MTAxMVxuICovXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLypcbiogQXBwbHkgbm8gZGlzcGxheSB0byBlbGVtZW50cyB3aXRoIHRoZSBoaWRkZW4gYXR0cmlidXRlLlxuKiBJRSA5IGFuZCAxMCBzdXBwb3J0LlxuKi9cbipbaGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFR5cG9ncmFwaHkgKi9cbi8qIFNoYWRvd3MgKi9cbi8qIEFuaW1hdGlvbnMgKi9cbmh0bWwsIGJvZHkge1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4OyB9XG5cbmgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cblxuLyoqXG4gICogU3R5bGVzIGZvciBIVE1MIGVsZW1lbnRzXG4gICovXG5oMSBzbWFsbCwgaDIgc21hbGwsIGgzIHNtYWxsLCBoNCBzbWFsbCwgaDUgc21hbGwsIGg2IHNtYWxsIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiA1NnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS4zNTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07XG4gIG9wYWNpdHk6IDAuNTQ7XG4gIGZvbnQtc2l6ZTogMC42ZW07IH1cblxuaDEge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDU2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDsgfVxuXG5oMiB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogNDVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7IH1cblxuaDMge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDM0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBtYXJnaW4tdG9wOiAyNHB4O1xuICBtYXJnaW4tYm90dG9tOiAyNHB4OyB9XG5cbmg0IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMzJweDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDsgfVxuXG5oNSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gIG1hcmdpbi10b3A6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7IH1cblxuaDYge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICBtYXJnaW4tdG9wOiAyNHB4O1xuICBtYXJnaW4tYm90dG9tOiAxNnB4OyB9XG5cbnAge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgbWFyZ2luLWJvdHRvbTogMTZweDsgfVxuXG5hIHtcbiAgY29sb3I6IHJnYigyNTUsNjQsMTI5KTtcbiAgZm9udC13ZWlnaHQ6IDUwMDsgfVxuXG5ibG9ja3F1b3RlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA4ZW07IH1cbiAgYmxvY2txdW90ZTpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAtMC41ZW07XG4gICAgY29udGVudDogJ+KAnCc7IH1cbiAgYmxvY2txdW90ZTphZnRlciB7XG4gICAgY29udGVudDogJ+KAnSc7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjA1ZW07IH1cblxubWFyayB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGZmODE7IH1cblxuZHQge1xuICBmb250LXdlaWdodDogNzAwOyB9XG5cbmFkZHJlc3Mge1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsOyB9XG5cbnVsLCBvbCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwOyB9XG5cbi8qKlxuICogQ2xhc3MgTmFtZSBTdHlsZXNcbiAqL1xuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTQge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDExMnB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjA0ZW07IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTQtY29sb3ItY29udHJhc3Qge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDExMnB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjA0ZW07XG4gIG9wYWNpdHk6IDAuNTQ7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTMge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDU2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWRpc3BsYXktMy1jb2xvci1jb250cmFzdCB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogNTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMmVtO1xuICBvcGFjaXR5OiAwLjU0OyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tZGlzcGxheS0yIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiA0NXB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogNDhweDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWRpc3BsYXktMi1jb2xvci1jb250cmFzdCB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogNDVweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIG9wYWNpdHk6IDAuNTQ7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTEge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDM0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4OyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tZGlzcGxheS0xLWNvbG9yLWNvbnRyYXN0IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAzNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogNDBweDtcbiAgb3BhY2l0eTogMC41NDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWhlYWRsaW5lIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMzJweDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWhlYWRsaW5lLWNvbG9yLWNvbnRyYXN0IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMzJweDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgb3BhY2l0eTogMC44NzsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRpdGxlIHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRpdGxlLWNvbG9yLWNvbnRyYXN0IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbiAgb3BhY2l0eTogMC44NzsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXN1YmhlYWQge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtOyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tc3ViaGVhZC1jb2xvci1jb250cmFzdCB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gIG9wYWNpdHk6IDAuODc7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTIge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTItY29sb3ItY29udHJhc3Qge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIG9wYWNpdHk6IDAuODc7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTEge1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWJvZHktMS1jb2xvci1jb250cmFzdCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICBvcGFjaXR5OiAwLjg3OyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tYm9keS0yLWZvcmNlLXByZWZlcnJlZC1mb250IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTItZm9yY2UtcHJlZmVycmVkLWZvbnQtY29sb3ItY29udHJhc3Qge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBsZXR0ZXItc3BhY2luZzogMDtcbiAgb3BhY2l0eTogMC44NzsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWJvZHktMS1mb3JjZS1wcmVmZXJyZWQtZm9udCB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwOyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tYm9keS0xLWZvcmNlLXByZWZlcnJlZC1mb250LWNvbG9yLWNvbnRyYXN0IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIG9wYWNpdHk6IDAuODc7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1jYXB0aW9uIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1jYXB0aW9uLWZvcmNlLXByZWZlcnJlZC1mb250IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1jYXB0aW9uLWNvbG9yLWNvbnRyYXN0IHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIG9wYWNpdHk6IDAuNTQ7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1jYXB0aW9uLWZvcmNlLXByZWZlcnJlZC1mb250LWNvbG9yLWNvbnRyYXN0IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIG9wYWNpdHk6IDAuNTQ7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1tZW51IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1tZW51LWNvbG9yLWNvbnRyYXN0IHtcbiAgZm9udC1mYW1pbHk6IFwiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIG9wYWNpdHk6IDAuODc7IH1cblxuLm1kbC10eXBvZ3JhcGh5LS1idXR0b24ge1xuICBmb250LWZhbWlseTogXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBsZXR0ZXItc3BhY2luZzogMDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWJ1dHRvbi1jb2xvci1jb250cmFzdCB7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICBvcGFjaXR5OiAwLjg3OyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tdGV4dC1sZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tdGV4dC1qdXN0aWZ5IHtcbiAgdGV4dC1hbGlnbjoganVzdGlmeTsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtbm93cmFwIHtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtbG93ZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtdXBwZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtY2FwaXRhbGl6ZSB7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tZm9udC10aGluIHtcbiAgZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50OyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tZm9udC1saWdodCB7XG4gIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWZvbnQtcmVndWxhciB7XG4gIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsgfVxuXG4ubWRsLXR5cG9ncmFwaHktLWZvbnQtbWVkaXVtIHtcbiAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50OyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tZm9udC1ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyB9XG5cbi5tZGwtdHlwb2dyYXBoeS0tZm9udC1ibGFjayB7XG4gIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudDsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLm1kbC1jb2xvci10ZXh0LS1yZWQge1xuICBjb2xvcjogcmdiKDI0NCw2Nyw1NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1yZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ0LDY3LDU0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcmVkLTUwIHtcbiAgY29sb3I6IHJnYigyNTUsMjM1LDIzOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1yZWQtNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDIzNSwyMzgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtMTAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjA1LDIxMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1yZWQtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMDUsMjEwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcmVkLTIwMCB7XG4gIGNvbG9yOiByZ2IoMjM5LDE1NCwxNTQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzksMTU0LDE1NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXJlZC0zMDAge1xuICBjb2xvcjogcmdiKDIyOSwxMTUsMTE1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXJlZC0zMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI5LDExNSwxMTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtNDAwIHtcbiAgY29sb3I6IHJnYigyMzksODMsODApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLTQwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzksODMsODApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtNTAwIHtcbiAgY29sb3I6IHJnYigyNDQsNjcsNTQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLTUwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDQsNjcsNTQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtNjAwIHtcbiAgY29sb3I6IHJnYigyMjksNTcsNTMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjksNTcsNTMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtNzAwIHtcbiAgY29sb3I6IHJnYigyMTEsNDcsNDcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLTcwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMTEsNDcsNDcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtODAwIHtcbiAgY29sb3I6IHJnYigxOTgsNDAsNDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLTgwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTgsNDAsNDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtOTAwIHtcbiAgY29sb3I6IHJnYigxODMsMjgsMjgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLTkwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxODMsMjgsMjgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtQTEwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDEzOCwxMjgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLUExMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDEzOCwxMjgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1yZWQtQTIwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDgyLDgyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXJlZC1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSw4Miw4MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXJlZC1BNDAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjMsNjgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLUE0MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDIzLDY4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcmVkLUE3MDAge1xuICBjb2xvcjogcmdiKDIxMywwLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcmVkLUE3MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjEzLDAsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXBpbmsge1xuICBjb2xvcjogcmdiKDIzMywzMCw5OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1waW5rIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMywzMCw5OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXBpbmstNTAge1xuICBjb2xvcjogcmdiKDI1MiwyMjgsMjM2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXBpbmstNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUyLDIyOCwyMzYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1waW5rLTEwMCB7XG4gIGNvbG9yOiByZ2IoMjQ4LDE4NywyMDgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcGluay0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ4LDE4NywyMDgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1waW5rLTIwMCB7XG4gIGNvbG9yOiByZ2IoMjQ0LDE0MywxNzcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcGluay0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ0LDE0MywxNzcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1waW5rLTMwMCB7XG4gIGNvbG9yOiByZ2IoMjQwLDk4LDE0NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1waW5rLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDAsOTgsMTQ2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcGluay00MDAge1xuICBjb2xvcjogcmdiKDIzNiw2NCwxMjIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcGluay00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM2LDY0LDEyMikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXBpbmstNTAwIHtcbiAgY29sb3I6IHJnYigyMzMsMzAsOTkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcGluay01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMzLDMwLDk5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcGluay02MDAge1xuICBjb2xvcjogcmdiKDIxNiwyNyw5NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1waW5rLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMTYsMjcsOTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1waW5rLTcwMCB7XG4gIGNvbG9yOiByZ2IoMTk0LDI0LDkxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXBpbmstNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5NCwyNCw5MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXBpbmstODAwIHtcbiAgY29sb3I6IHJnYigxNzMsMjAsODcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcGluay04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTczLDIwLDg3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcGluay05MDAge1xuICBjb2xvcjogcmdiKDEzNiwxNCw3OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1waW5rLTkwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxMzYsMTQsNzkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1waW5rLUExMDAge1xuICBjb2xvcjogcmdiKDI1NSwxMjgsMTcxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXBpbmstQTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTI4LDE3MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXBpbmstQTIwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDY0LDEyOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1waW5rLUEyMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDY0LDEyOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXBpbmstQTQwMCB7XG4gIGNvbG9yOiByZ2IoMjQ1LDAsODcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcGluay1BNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0NSwwLDg3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcGluay1BNzAwIHtcbiAgY29sb3I6IHJnYigxOTcsMTcsOTgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcGluay1BNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5NywxNyw5OCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZSB7XG4gIGNvbG9yOiByZ2IoMTU2LDM5LDE3NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1wdXJwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU2LDM5LDE3NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZS01MCB7XG4gIGNvbG9yOiByZ2IoMjQzLDIyOSwyNDUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcHVycGxlLTUwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MywyMjksMjQ1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTEwMCB7XG4gIGNvbG9yOiByZ2IoMjI1LDE5MCwyMzEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcHVycGxlLTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjUsMTkwLDIzMSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZS0yMDAge1xuICBjb2xvcjogcmdiKDIwNiwxNDcsMjE2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXB1cnBsZS0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA2LDE0NywyMTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1wdXJwbGUtMzAwIHtcbiAgY29sb3I6IHJnYigxODYsMTA0LDIwMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1wdXJwbGUtMzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE4NiwxMDQsMjAwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTQwMCB7XG4gIGNvbG9yOiByZ2IoMTcxLDcxLDE4OCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1wdXJwbGUtNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MSw3MSwxODgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1wdXJwbGUtNTAwIHtcbiAgY29sb3I6IHJnYigxNTYsMzksMTc2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXB1cnBsZS01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU2LDM5LDE3NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZS02MDAge1xuICBjb2xvcjogcmdiKDE0MiwzNiwxNzApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcHVycGxlLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNDIsMzYsMTcwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTcwMCB7XG4gIGNvbG9yOiByZ2IoMTIzLDMxLDE2MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1wdXJwbGUtNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyMywzMSwxNjIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1wdXJwbGUtODAwIHtcbiAgY29sb3I6IHJnYigxMDYsMjcsMTU0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXB1cnBsZS04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTA2LDI3LDE1NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZS05MDAge1xuICBjb2xvcjogcmdiKDc0LDIwLDE0MCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1wdXJwbGUtOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc0LDIwLDE0MCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZS1BMTAwIHtcbiAgY29sb3I6IHJnYigyMzQsMTI4LDI1MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1wdXJwbGUtQTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzQsMTI4LDI1MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZS1BMjAwIHtcbiAgY29sb3I6IHJnYigyMjQsNjQsMjUxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXB1cnBsZS1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyNCw2NCwyNTEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1wdXJwbGUtQTQwMCB7XG4gIGNvbG9yOiByZ2IoMjEzLDAsMjQ5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXB1cnBsZS1BNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxMywwLDI0OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXB1cnBsZS1BNzAwIHtcbiAgY29sb3I6IHJnYigxNzAsMCwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcHVycGxlLUE3MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTcwLDAsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1wdXJwbGUge1xuICBjb2xvcjogcmdiKDEwMyw1OCwxODMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAzLDU4LDE4MykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTUwIHtcbiAgY29sb3I6IHJnYigyMzcsMjMxLDI0NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS01MCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzcsMjMxLDI0NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTEwMCB7XG4gIGNvbG9yOiByZ2IoMjA5LDE5NiwyMzMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwOSwxOTYsMjMzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1wdXJwbGUtMjAwIHtcbiAgY29sb3I6IHJnYigxNzksMTU3LDIxOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTc5LDE1NywyMTkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS0zMDAge1xuICBjb2xvcjogcmdiKDE0OSwxMTcsMjA1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtcHVycGxlLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNDksMTE3LDIwNSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTQwMCB7XG4gIGNvbG9yOiByZ2IoMTI2LDg3LDE5NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI2LDg3LDE5NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTUwMCB7XG4gIGNvbG9yOiByZ2IoMTAzLDU4LDE4MykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAzLDU4LDE4MykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTYwMCB7XG4gIGNvbG9yOiByZ2IoOTQsNTMsMTc3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtcHVycGxlLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig5NCw1MywxNzcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS03MDAge1xuICBjb2xvcjogcmdiKDgxLDQ1LDE2OCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS03MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoODEsNDUsMTY4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1wdXJwbGUtODAwIHtcbiAgY29sb3I6IHJnYig2OSwzOSwxNjApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtODAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDY5LDM5LDE2MCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTkwMCB7XG4gIGNvbG9yOiByZ2IoNDksMjcsMTQ2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtcHVycGxlLTkwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig0OSwyNywxNDYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS1BMTAwIHtcbiAgY29sb3I6IHJnYigxNzksMTM2LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS1BMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3OSwxMzYsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1wdXJwbGUtQTIwMCB7XG4gIGNvbG9yOiByZ2IoMTI0LDc3LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyNCw3NywyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS1BNDAwIHtcbiAgY29sb3I6IHJnYigxMDEsMzEsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtcHVycGxlLUE0MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAxLDMxLDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLUE3MDAge1xuICBjb2xvcjogcmdiKDk4LDAsMjM0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtcHVycGxlLUE3MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTgsMCwyMzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28ge1xuICBjb2xvcjogcmdiKDYzLDgxLDE4MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjMsODEsMTgxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0taW5kaWdvLTUwIHtcbiAgY29sb3I6IHJnYigyMzIsMjM0LDI0NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMyLDIzNCwyNDYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tMTAwIHtcbiAgY29sb3I6IHJnYigxOTcsMjAyLDIzMykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE5NywyMDIsMjMzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0taW5kaWdvLTIwMCB7XG4gIGNvbG9yOiByZ2IoMTU5LDE2OCwyMTgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0taW5kaWdvLTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTksMTY4LDIxOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby0zMDAge1xuICBjb2xvcjogcmdiKDEyMSwxMzQsMjAzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWluZGlnby0zMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTIxLDEzNCwyMDMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tNDAwIHtcbiAgY29sb3I6IHJnYig5MiwxMDcsMTkyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWluZGlnby00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTIsMTA3LDE5MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby01MDAge1xuICBjb2xvcjogcmdiKDYzLDgxLDE4MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tNTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDYzLDgxLDE4MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby02MDAge1xuICBjb2xvcjogcmdiKDU3LDczLDE3MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tNjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDU3LDczLDE3MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby03MDAge1xuICBjb2xvcjogcmdiKDQ4LDYzLDE1OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQ4LDYzLDE1OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby04MDAge1xuICBjb2xvcjogcmdiKDQwLDUzLDE0NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tODAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQwLDUzLDE0NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby05MDAge1xuICBjb2xvcjogcmdiKDI2LDM1LDEyNikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI2LDM1LDEyNikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby1BMTAwIHtcbiAgY29sb3I6IHJnYigxNDAsMTU4LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1pbmRpZ28tQTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNDAsMTU4LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby1BMjAwIHtcbiAgY29sb3I6IHJnYig4MywxMDksMjU0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWluZGlnby1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDgzLDEwOSwyNTQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tQTQwMCB7XG4gIGNvbG9yOiByZ2IoNjEsOTAsMjU0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWluZGlnby1BNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDYxLDkwLDI1NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWluZGlnby1BNzAwIHtcbiAgY29sb3I6IHJnYig0OCw3OSwyNTQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0taW5kaWdvLUE3MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDgsNzksMjU0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZSB7XG4gIGNvbG9yOiByZ2IoMzMsMTUwLDI0MykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ibHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMzLDE1MCwyNDMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibHVlLTUwIHtcbiAgY29sb3I6IHJnYigyMjcsMjQyLDI1MykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ibHVlLTUwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyNywyNDIsMjUzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS0xMDAge1xuICBjb2xvcjogcmdiKDE4NywyMjIsMjUxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE4NywyMjIsMjUxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS0yMDAge1xuICBjb2xvcjogcmdiKDE0NCwyMDIsMjQ5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE0NCwyMDIsMjQ5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS0zMDAge1xuICBjb2xvcjogcmdiKDEwMCwxODEsMjQ2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtMzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEwMCwxODEsMjQ2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS00MDAge1xuICBjb2xvcjogcmdiKDY2LDE2NSwyNDUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjYsMTY1LDI0NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJsdWUtNTAwIHtcbiAgY29sb3I6IHJnYigzMywxNTAsMjQzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtNTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMzLDE1MCwyNDMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibHVlLTYwMCB7XG4gIGNvbG9yOiByZ2IoMzAsMTM2LDIyOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ibHVlLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzMCwxMzYsMjI5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS03MDAge1xuICBjb2xvcjogcmdiKDI1LDExOCwyMTApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS03MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUsMTE4LDIxMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJsdWUtODAwIHtcbiAgY29sb3I6IHJnYigyMSwxMDEsMTkyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtODAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxLDEwMSwxOTIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibHVlLTkwMCB7XG4gIGNvbG9yOiByZ2IoMTMsNzEsMTYxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEzLDcxLDE2MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJsdWUtQTEwMCB7XG4gIGNvbG9yOiByZ2IoMTMwLDE3NywyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS1BMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEzMCwxNzcsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS1BMjAwIHtcbiAgY29sb3I6IHJnYig2OCwxMzgsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtQTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig2OCwxMzgsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS1BNDAwIHtcbiAgY29sb3I6IHJnYig0MSwxMjEsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtQTQwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig0MSwxMjEsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS1BNzAwIHtcbiAgY29sb3I6IHJnYig0MSw5OCwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS1BNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDQxLDk4LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUge1xuICBjb2xvcjogcmdiKDMsMTY5LDI0NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ibHVlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMsMTY5LDI0NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUtNTAge1xuICBjb2xvcjogcmdiKDIyNSwyNDUsMjU0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI1LDI0NSwyNTQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTEwMCB7XG4gIGNvbG9yOiByZ2IoMTc5LDIyOSwyNTIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTc5LDIyOSwyNTIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTIwMCB7XG4gIGNvbG9yOiByZ2IoMTI5LDIxMiwyNTApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI5LDIxMiwyNTApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTMwMCB7XG4gIGNvbG9yOiByZ2IoNzksMTk1LDI0NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ibHVlLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig3OSwxOTUsMjQ3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS00MDAge1xuICBjb2xvcjogcmdiKDQxLDE4MiwyNDYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDEsMTgyLDI0NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUtNTAwIHtcbiAgY29sb3I6IHJnYigzLDE2OSwyNDQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMywxNjksMjQ0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS02MDAge1xuICBjb2xvcjogcmdiKDMsMTU1LDIyOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ibHVlLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzLDE1NSwyMjkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTcwMCB7XG4gIGNvbG9yOiByZ2IoMiwxMzYsMjA5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIsMTM2LDIwOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUtODAwIHtcbiAgY29sb3I6IHJnYigyLDExOSwxODkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMiwxMTksMTg5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS05MDAge1xuICBjb2xvcjogcmdiKDEsODcsMTU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEsODcsMTU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS1BMTAwIHtcbiAgY29sb3I6IHJnYigxMjgsMjE2LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ibHVlLUExMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LDIxNiwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLUEyMDAge1xuICBjb2xvcjogcmdiKDY0LDE5NiwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDY0LDE5NiwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLUE0MDAge1xuICBjb2xvcjogcmdiKDAsMTc2LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ibHVlLUE0MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwxNzYsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS1BNzAwIHtcbiAgY29sb3I6IHJnYigwLDE0NSwyMzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS1BNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMTQ1LDIzNCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWN5YW4ge1xuICBjb2xvcjogcmdiKDAsMTg4LDIxMikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1jeWFuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMTg4LDIxMikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWN5YW4tNTAge1xuICBjb2xvcjogcmdiKDIyNCwyNDcsMjUwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWN5YW4tNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI0LDI0NywyNTApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1jeWFuLTEwMCB7XG4gIGNvbG9yOiByZ2IoMTc4LDIzNSwyNDIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tY3lhbi0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTc4LDIzNSwyNDIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1jeWFuLTIwMCB7XG4gIGNvbG9yOiByZ2IoMTI4LDIyMiwyMzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tY3lhbi0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LDIyMiwyMzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1jeWFuLTMwMCB7XG4gIGNvbG9yOiByZ2IoNzcsMjA4LDIyNSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1jeWFuLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig3NywyMDgsMjI1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tY3lhbi00MDAge1xuICBjb2xvcjogcmdiKDM4LDE5OCwyMTgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tY3lhbi00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzgsMTk4LDIxOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWN5YW4tNTAwIHtcbiAgY29sb3I6IHJnYigwLDE4OCwyMTIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tY3lhbi01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwxODgsMjEyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tY3lhbi02MDAge1xuICBjb2xvcjogcmdiKDAsMTcyLDE5MykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1jeWFuLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigwLDE3MiwxOTMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1jeWFuLTcwMCB7XG4gIGNvbG9yOiByZ2IoMCwxNTEsMTY3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWN5YW4tNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMTUxLDE2NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWN5YW4tODAwIHtcbiAgY29sb3I6IHJnYigwLDEzMSwxNDMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tY3lhbi04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwxMzEsMTQzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tY3lhbi05MDAge1xuICBjb2xvcjogcmdiKDAsOTYsMTAwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWN5YW4tOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsOTYsMTAwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tY3lhbi1BMTAwIHtcbiAgY29sb3I6IHJnYigxMzIsMjU1LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1jeWFuLUExMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTMyLDI1NSwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1jeWFuLUEyMDAge1xuICBjb2xvcjogcmdiKDI0LDI1NSwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tY3lhbi1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0LDI1NSwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1jeWFuLUE0MDAge1xuICBjb2xvcjogcmdiKDAsMjI5LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1jeWFuLUE0MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyMjksMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tY3lhbi1BNzAwIHtcbiAgY29sb3I6IHJnYigwLDE4NCwyMTIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tY3lhbi1BNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMTg0LDIxMikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXRlYWwge1xuICBjb2xvcjogcmdiKDAsMTUwLDEzNikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS10ZWFsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMTUwLDEzNikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXRlYWwtNTAge1xuICBjb2xvcjogcmdiKDIyNCwyNDIsMjQxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXRlYWwtNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI0LDI0MiwyNDEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS10ZWFsLTEwMCB7XG4gIGNvbG9yOiByZ2IoMTc4LDIyMywyMTkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tdGVhbC0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTc4LDIyMywyMTkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS10ZWFsLTIwMCB7XG4gIGNvbG9yOiByZ2IoMTI4LDIwMywxOTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tdGVhbC0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI4LDIwMywxOTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS10ZWFsLTMwMCB7XG4gIGNvbG9yOiByZ2IoNzcsMTgyLDE3MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS10ZWFsLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig3NywxODIsMTcyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tdGVhbC00MDAge1xuICBjb2xvcjogcmdiKDM4LDE2NiwxNTQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tdGVhbC00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzgsMTY2LDE1NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXRlYWwtNTAwIHtcbiAgY29sb3I6IHJnYigwLDE1MCwxMzYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tdGVhbC01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwxNTAsMTM2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tdGVhbC02MDAge1xuICBjb2xvcjogcmdiKDAsMTM3LDEyMykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS10ZWFsLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigwLDEzNywxMjMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS10ZWFsLTcwMCB7XG4gIGNvbG9yOiByZ2IoMCwxMjEsMTA3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXRlYWwtNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMTIxLDEwNykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXRlYWwtODAwIHtcbiAgY29sb3I6IHJnYigwLDEwNSw5MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS10ZWFsLTgwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigwLDEwNSw5MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXRlYWwtOTAwIHtcbiAgY29sb3I6IHJnYigwLDc3LDY0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXRlYWwtOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsNzcsNjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS10ZWFsLUExMDAge1xuICBjb2xvcjogcmdiKDE2NywyNTUsMjM1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXRlYWwtQTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNjcsMjU1LDIzNSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXRlYWwtQTIwMCB7XG4gIGNvbG9yOiByZ2IoMTAwLDI1NSwyMTgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tdGVhbC1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEwMCwyNTUsMjE4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tdGVhbC1BNDAwIHtcbiAgY29sb3I6IHJnYigyOSwyMzMsMTgyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXRlYWwtQTQwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyOSwyMzMsMTgyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tdGVhbC1BNzAwIHtcbiAgY29sb3I6IHJnYigwLDE5MSwxNjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tdGVhbC1BNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMTkxLDE2NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWdyZWVuIHtcbiAgY29sb3I6IHJnYig3NiwxNzUsODApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JlZW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzYsMTc1LDgwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tNTAge1xuICBjb2xvcjogcmdiKDIzMiwyNDUsMjMzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWdyZWVuLTUwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMiwyNDUsMjMzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tMTAwIHtcbiAgY29sb3I6IHJnYigyMDAsMjMwLDIwMSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ncmVlbi0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjAwLDIzMCwyMDEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmVlbi0yMDAge1xuICBjb2xvcjogcmdiKDE2NSwyMTQsMTY3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWdyZWVuLTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNjUsMjE0LDE2NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWdyZWVuLTMwMCB7XG4gIGNvbG9yOiByZ2IoMTI5LDE5OSwxMzIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JlZW4tMzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyOSwxOTksMTMyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tNDAwIHtcbiAgY29sb3I6IHJnYigxMDIsMTg3LDEwNikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ncmVlbi00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTAyLDE4NywxMDYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmVlbi01MDAge1xuICBjb2xvcjogcmdiKDc2LDE3NSw4MCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ncmVlbi01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNzYsMTc1LDgwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tNjAwIHtcbiAgY29sb3I6IHJnYig2NywxNjAsNzEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JlZW4tNjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDY3LDE2MCw3MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWdyZWVuLTcwMCB7XG4gIGNvbG9yOiByZ2IoNTYsMTQyLDYwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWdyZWVuLTcwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1NiwxNDIsNjApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmVlbi04MDAge1xuICBjb2xvcjogcmdiKDQ2LDEyNSw1MCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ncmVlbi04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDYsMTI1LDUwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tOTAwIHtcbiAgY29sb3I6IHJnYigyNyw5NCwzMikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ncmVlbi05MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjcsOTQsMzIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmVlbi1BMTAwIHtcbiAgY29sb3I6IHJnYigxODUsMjQ2LDIwMikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ncmVlbi1BMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE4NSwyNDYsMjAyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tQTIwMCB7XG4gIGNvbG9yOiByZ2IoMTA1LDI0MCwxNzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JlZW4tQTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxMDUsMjQwLDE3NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWdyZWVuLUE0MDAge1xuICBjb2xvcjogcmdiKDAsMjMwLDExOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ncmVlbi1BNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsMjMwLDExOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWdyZWVuLUE3MDAge1xuICBjb2xvcjogcmdiKDAsMjAwLDgzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWdyZWVuLUE3MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwyMDAsODMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbiB7XG4gIGNvbG9yOiByZ2IoMTM5LDE5NSw3NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ncmVlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxMzksMTk1LDc0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtZ3JlZW4tNTAge1xuICBjb2xvcjogcmdiKDI0MSwyNDgsMjMzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLTUwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MSwyNDgsMjMzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtZ3JlZW4tMTAwIHtcbiAgY29sb3I6IHJnYigyMjAsMjM3LDIwMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ncmVlbi0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjIwLDIzNywyMDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi0yMDAge1xuICBjb2xvcjogcmdiKDE5NywyMjUsMTY1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTcsMjI1LDE2NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLTMwMCB7XG4gIGNvbG9yOiByZ2IoMTc0LDIxMywxMjkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tMzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3NCwyMTMsMTI5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtZ3JlZW4tNDAwIHtcbiAgY29sb3I6IHJnYigxNTYsMjA0LDEwMSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ncmVlbi00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU2LDIwNCwxMDEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi01MDAge1xuICBjb2xvcjogcmdiKDEzOSwxOTUsNzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tNTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEzOSwxOTUsNzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi02MDAge1xuICBjb2xvcjogcmdiKDEyNCwxNzksNjYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tNjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyNCwxNzksNjYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi03MDAge1xuICBjb2xvcjogcmdiKDEwNCwxNTksNTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEwNCwxNTksNTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi04MDAge1xuICBjb2xvcjogcmdiKDg1LDEzOSw0NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ncmVlbi04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoODUsMTM5LDQ3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGlnaHQtZ3JlZW4tOTAwIHtcbiAgY29sb3I6IHJnYig1MSwxMDUsMzApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDUxLDEwNSwzMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLUExMDAge1xuICBjb2xvcjogcmdiKDIwNCwyNTUsMTQ0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLUExMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA0LDI1NSwxNDQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi1BMjAwIHtcbiAgY29sb3I6IHJnYigxNzgsMjU1LDg5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLUEyMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTc4LDI1NSw4OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLUE0MDAge1xuICBjb2xvcjogcmdiKDExOCwyNTUsMykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saWdodC1ncmVlbi1BNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDExOCwyNTUsMykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLUE3MDAge1xuICBjb2xvcjogcmdiKDEwMCwyMjEsMjMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tQTcwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxMDAsMjIxLDIzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZSB7XG4gIGNvbG9yOiByZ2IoMjA1LDIyMCw1NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saW1lIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwNSwyMjAsNTcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saW1lLTUwIHtcbiAgY29sb3I6IHJnYigyNDksMjUxLDIzMSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saW1lLTUwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0OSwyNTEsMjMxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZS0xMDAge1xuICBjb2xvcjogcmdiKDI0MCwyNDQsMTk1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpbWUtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MCwyNDQsMTk1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZS0yMDAge1xuICBjb2xvcjogcmdiKDIzMCwyMzgsMTU2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpbWUtMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMCwyMzgsMTU2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZS0zMDAge1xuICBjb2xvcjogcmdiKDIyMCwyMzEsMTE3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpbWUtMzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyMCwyMzEsMTE3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZS00MDAge1xuICBjb2xvcjogcmdiKDIxMiwyMjUsODcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGltZS00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjEyLDIyNSw4NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpbWUtNTAwIHtcbiAgY29sb3I6IHJnYigyMDUsMjIwLDU3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpbWUtNTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwNSwyMjAsNTcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saW1lLTYwMCB7XG4gIGNvbG9yOiByZ2IoMTkyLDIwMiw1MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saW1lLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTIsMjAyLDUxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZS03MDAge1xuICBjb2xvcjogcmdiKDE3NSwxODAsNDMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGltZS03MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTc1LDE4MCw0MykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWxpbWUtODAwIHtcbiAgY29sb3I6IHJnYigxNTgsMTU3LDM2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWxpbWUtODAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1OCwxNTcsMzYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saW1lLTkwMCB7XG4gIGNvbG9yOiByZ2IoMTMwLDExOSwyMykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saW1lLTkwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxMzAsMTE5LDIzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZS1BMTAwIHtcbiAgY29sb3I6IHJnYigyNDQsMjU1LDEyOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saW1lLUExMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ0LDI1NSwxMjkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saW1lLUEyMDAge1xuICBjb2xvcjogcmdiKDIzOCwyNTUsNjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGltZS1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOCwyNTUsNjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1saW1lLUE0MDAge1xuICBjb2xvcjogcmdiKDE5OCwyNTUsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1saW1lLUE0MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTk4LDI1NSwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tbGltZS1BNzAwIHtcbiAgY29sb3I6IHJnYigxNzQsMjM0LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tbGltZS1BNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3NCwyMzQsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXllbGxvdyB7XG4gIGNvbG9yOiByZ2IoMjU1LDIzNSw1OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS15ZWxsb3cge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDIzNSw1OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXllbGxvdy01MCB7XG4gIGNvbG9yOiByZ2IoMjU1LDI1MywyMzEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0teWVsbG93LTUwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyNTMsMjMxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0teWVsbG93LTEwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDI0OSwxOTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0teWVsbG93LTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjQ5LDE5NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXllbGxvdy0yMDAge1xuICBjb2xvcjogcmdiKDI1NSwyNDUsMTU3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXllbGxvdy0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDI0NSwxNTcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS15ZWxsb3ctMzAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjQxLDExOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS15ZWxsb3ctMzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyNDEsMTE4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0teWVsbG93LTQwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDIzOCw4OCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS15ZWxsb3ctNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMzgsODgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS15ZWxsb3ctNTAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjM1LDU5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXllbGxvdy01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDIzNSw1OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXllbGxvdy02MDAge1xuICBjb2xvcjogcmdiKDI1MywyMTYsNTMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0teWVsbG93LTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTMsMjE2LDUzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0teWVsbG93LTcwMCB7XG4gIGNvbG9yOiByZ2IoMjUxLDE5Miw0NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS15ZWxsb3ctNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1MSwxOTIsNDUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS15ZWxsb3ctODAwIHtcbiAgY29sb3I6IHJnYigyNDksMTY4LDM3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXllbGxvdy04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ5LDE2OCwzNykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXllbGxvdy05MDAge1xuICBjb2xvcjogcmdiKDI0NSwxMjcsMjMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0teWVsbG93LTkwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDUsMTI3LDIzKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0teWVsbG93LUExMDAge1xuICBjb2xvcjogcmdiKDI1NSwyNTUsMTQxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXllbGxvdy1BMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyNTUsMTQxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0teWVsbG93LUEyMDAge1xuICBjb2xvcjogcmdiKDI1NSwyNTUsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS15ZWxsb3ctQTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjU1LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS15ZWxsb3ctQTQwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDIzNCwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLXllbGxvdy1BNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMzQsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXllbGxvdy1BNzAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjE0LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0teWVsbG93LUE3MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDIxNCwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYW1iZXIge1xuICBjb2xvcjogcmdiKDI1NSwxOTMsNykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1hbWJlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTkzLDcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hbWJlci01MCB7XG4gIGNvbG9yOiByZ2IoMjU1LDI0OCwyMjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYW1iZXItNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDI0OCwyMjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hbWJlci0xMDAge1xuICBjb2xvcjogcmdiKDI1NSwyMzYsMTc5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWFtYmVyLTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjM2LDE3OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWFtYmVyLTIwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDIyNCwxMzApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYW1iZXItMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMjQsMTMwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYW1iZXItMzAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjEzLDc5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWFtYmVyLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjEzLDc5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYW1iZXItNDAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjAyLDQwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWFtYmVyLTQwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjAyLDQwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYW1iZXItNTAwIHtcbiAgY29sb3I6IHJnYigyNTUsMTkzLDcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYW1iZXItNTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwxOTMsNykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWFtYmVyLTYwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDE3OSwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWFtYmVyLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTc5LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hbWJlci03MDAge1xuICBjb2xvcjogcmdiKDI1NSwxNjAsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1hbWJlci03MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDE2MCwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYW1iZXItODAwIHtcbiAgY29sb3I6IHJnYigyNTUsMTQzLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYW1iZXItODAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwxNDMsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWFtYmVyLTkwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDExMSwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWFtYmVyLTkwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTExLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hbWJlci1BMTAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjI5LDEyNykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1hbWJlci1BMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMjksMTI3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYW1iZXItQTIwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDIxNSw2NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1hbWJlci1BMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMTUsNjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hbWJlci1BNDAwIHtcbiAgY29sb3I6IHJnYigyNTUsMTk2LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYW1iZXItQTQwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTk2LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hbWJlci1BNzAwIHtcbiAgY29sb3I6IHJnYigyNTUsMTcxLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYW1iZXItQTcwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTcxLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2Uge1xuICBjb2xvcjogcmdiKDI1NSwxNTIsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1vcmFuZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDE1MiwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLTUwIHtcbiAgY29sb3I6IHJnYigyNTUsMjQzLDIyNCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1vcmFuZ2UtNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDI0MywyMjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtMTAwIHtcbiAgY29sb3I6IHJnYigyNTUsMjI0LDE3OCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1vcmFuZ2UtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMjQsMTc4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLTIwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDIwNCwxMjgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjA0LDEyOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLW9yYW5nZS0zMDAge1xuICBjb2xvcjogcmdiKDI1NSwxODMsNzcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTgzLDc3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLTQwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDE2NywzOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1vcmFuZ2UtNDAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwxNjcsMzgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtNTAwIHtcbiAgY29sb3I6IHJnYigyNTUsMTUyLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLTUwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTUyLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtNjAwIHtcbiAgY29sb3I6IHJnYigyNTEsMTQwLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTEsMTQwLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtNzAwIHtcbiAgY29sb3I6IHJnYigyNDUsMTI0LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLTcwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNDUsMTI0LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtODAwIHtcbiAgY29sb3I6IHJnYigyMzksMTA4LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLTgwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzksMTA4LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtOTAwIHtcbiAgY29sb3I6IHJnYigyMzAsODEsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1vcmFuZ2UtOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMCw4MSwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLUExMDAge1xuICBjb2xvcjogcmdiKDI1NSwyMDksMTI4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLW9yYW5nZS1BMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMDksMTI4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLUEyMDAge1xuICBjb2xvcjogcmdiKDI1NSwxNzEsNjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLUEyMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDE3MSw2NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLW9yYW5nZS1BNDAwIHtcbiAgY29sb3I6IHJnYigyNTUsMTQ1LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tb3JhbmdlLUE0MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDE0NSwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLUE3MDAge1xuICBjb2xvcjogcmdiKDI1NSwxMDksMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1vcmFuZ2UtQTcwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTA5LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZSB7XG4gIGNvbG9yOiByZ2IoMjU1LDg3LDM0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtb3JhbmdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSw4NywzNCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTUwIHtcbiAgY29sb3I6IHJnYigyNTEsMjMzLDIzMSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS01MCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTEsMjMzLDIzMSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTEwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDIwNCwxODgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwyMDQsMTg4KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtMjAwIHtcbiAgY29sb3I6IHJnYigyNTUsMTcxLDE0NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDE3MSwxNDUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZS0zMDAge1xuICBjb2xvcjogcmdiKDI1NSwxMzgsMTAxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTM4LDEwMSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTQwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDExMiw2NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDExMiw2NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTUwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDg3LDM0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLTUwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsODcsMzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZS02MDAge1xuICBjb2xvcjogcmdiKDI0NCw4MSwzMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS02MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ0LDgxLDMwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtNzAwIHtcbiAgY29sb3I6IHJnYigyMzAsNzQsMjUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtNzAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMCw3NCwyNSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTgwMCB7XG4gIGNvbG9yOiByZ2IoMjE2LDY3LDIxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLTgwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMTYsNjcsMjEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZS05MDAge1xuICBjb2xvcjogcmdiKDE5MSw1NCwxMikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS05MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTkxLDU0LDEyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtQTEwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDE1OCwxMjgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtQTEwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTU4LDEyOCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLUEyMDAge1xuICBjb2xvcjogcmdiKDI1NSwxMTAsNjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtQTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMTEwLDY0KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtQTQwMCB7XG4gIGNvbG9yOiByZ2IoMjU1LDYxLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtQTQwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsNjEsMCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLUE3MDAge1xuICBjb2xvcjogcmdiKDIyMSw0NCwwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLUE3MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjIxLDQ0LDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1icm93biB7XG4gIGNvbG9yOiByZ2IoMTIxLDg1LDcyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJyb3duIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEyMSw4NSw3MikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJyb3duLTUwIHtcbiAgY29sb3I6IHJnYigyMzksMjM1LDIzMykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1icm93bi01MCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzksMjM1LDIzMykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJyb3duLTEwMCB7XG4gIGNvbG9yOiByZ2IoMjE1LDIwNCwyMDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYnJvd24tMTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNSwyMDQsMjAwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYnJvd24tMjAwIHtcbiAgY29sb3I6IHJnYigxODgsMTcwLDE2NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1icm93bi0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTg4LDE3MCwxNjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1icm93bi0zMDAge1xuICBjb2xvcjogcmdiKDE2MSwxMzYsMTI3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJyb3duLTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNjEsMTM2LDEyNykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJyb3duLTQwMCB7XG4gIGNvbG9yOiByZ2IoMTQxLDExMCw5OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1icm93bi00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTQxLDExMCw5OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJyb3duLTUwMCB7XG4gIGNvbG9yOiByZ2IoMTIxLDg1LDcyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJyb3duLTUwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxMjEsODUsNzIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1icm93bi02MDAge1xuICBjb2xvcjogcmdiKDEwOSw3Niw2NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1icm93bi02MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTA5LDc2LDY1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYnJvd24tNzAwIHtcbiAgY29sb3I6IHJnYig5Myw2NCw1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1icm93bi03MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTMsNjQsNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1icm93bi04MDAge1xuICBjb2xvcjogcmdiKDc4LDUyLDQ2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJyb3duLTgwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig3OCw1Miw0NikgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJyb3duLTkwMCB7XG4gIGNvbG9yOiByZ2IoNjIsMzksMzUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYnJvd24tOTAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDYyLDM5LDM1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tZ3JleSB7XG4gIGNvbG9yOiByZ2IoMTU4LDE1OCwxNTgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTgsMTU4LDE1OCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWdyZXktNTAge1xuICBjb2xvcjogcmdiKDI1MCwyNTAsMjUwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWdyZXktNTAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUwLDI1MCwyNTApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTEwMCB7XG4gIGNvbG9yOiByZ2IoMjQ1LDI0NSwyNDUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LDI0NSwyNDUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTIwMCB7XG4gIGNvbG9yOiByZ2IoMjM4LDIzOCwyMzgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS0yMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjM4LDIzOCwyMzgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTMwMCB7XG4gIGNvbG9yOiByZ2IoMjI0LDIyNCwyMjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS0zMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI0LDIyNCwyMjQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTQwMCB7XG4gIGNvbG9yOiByZ2IoMTg5LDE4OSwxODkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTg5LDE4OSwxODkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTUwMCB7XG4gIGNvbG9yOiByZ2IoMTU4LDE1OCwxNTgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTU4LDE1OCwxNTgpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTYwMCB7XG4gIGNvbG9yOiByZ2IoMTE3LDExNywxMTcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS02MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTE3LDExNywxMTcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTcwMCB7XG4gIGNvbG9yOiByZ2IoOTcsOTcsOTcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS03MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTcsOTcsOTcpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTgwMCB7XG4gIGNvbG9yOiByZ2IoNjYsNjYsNjYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS04MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjYsNjYsNjYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ncmV5LTkwMCB7XG4gIGNvbG9yOiByZ2IoMzMsMzMsMzMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tZ3JleS05MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzMsMzMsMzMpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibHVlLWdyZXkge1xuICBjb2xvcjogcmdiKDk2LDEyNSwxMzkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS1ncmV5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDk2LDEyNSwxMzkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibHVlLWdyZXktNTAge1xuICBjb2xvcjogcmdiKDIzNiwyMzksMjQxKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtZ3JleS01MCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzYsMjM5LDI0MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJsdWUtZ3JleS0xMDAge1xuICBjb2xvcjogcmdiKDIwNywyMTYsMjIwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtZ3JleS0xMDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjA3LDIxNiwyMjApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibHVlLWdyZXktMjAwIHtcbiAgY29sb3I6IHJnYigxNzYsMTkwLDE5NykgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1ibHVlLWdyZXktMjAwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3NiwxOTAsMTk3KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTMwMCB7XG4gIGNvbG9yOiByZ2IoMTQ0LDE2NCwxNzQpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS1ncmV5LTMwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNDQsMTY0LDE3NCkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJsdWUtZ3JleS00MDAge1xuICBjb2xvcjogcmdiKDEyMCwxNDQsMTU2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtZ3JleS00MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTIwLDE0NCwxNTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibHVlLWdyZXktNTAwIHtcbiAgY29sb3I6IHJnYig5NiwxMjUsMTM5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtZ3JleS01MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoOTYsMTI1LDEzOSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJsdWUtZ3JleS02MDAge1xuICBjb2xvcjogcmdiKDg0LDExMCwxMjIpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS1ncmV5LTYwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig4NCwxMTAsMTIyKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTcwMCB7XG4gIGNvbG9yOiByZ2IoNjksOTAsMTAwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtZ3JleS03MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjksOTAsMTAwKSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTgwMCB7XG4gIGNvbG9yOiByZ2IoNTUsNzEsNzkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmx1ZS1ncmV5LTgwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1NSw3MSw3OSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLWJsdWUtZ3JleS05MDAge1xuICBjb2xvcjogcmdiKDM4LDUwLDU2KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWJsdWUtZ3JleS05MDAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzgsNTAsNTYpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tYmxhY2sge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwwLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1ibGFjayB7XG4gIGNvbG9yOiByZ2IoMCwwLDApICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0td2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDI1NSwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS13aGl0ZSB7XG4gIGNvbG9yOiByZ2IoMjU1LDI1NSwyNTUpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcHJpbWFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig2Myw4MSwxODEpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci0tcHJpbWFyeS1jb250cmFzdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjU1LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLS1wcmltYXJ5LWRhcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDgsNjMsMTU5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWFjY2VudCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsNjQsMTI5KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItLWFjY2VudC1jb250cmFzdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsMjU1LDI1NSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXByaW1hcnkge1xuICBjb2xvcjogcmdiKDYzLDgxLDE4MSkgIWltcG9ydGFudDsgfVxuXG4ubWRsLWNvbG9yLXRleHQtLXByaW1hcnktY29udHJhc3Qge1xuICBjb2xvcjogcmdiKDI1NSwyNTUsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi5tZGwtY29sb3ItdGV4dC0tcHJpbWFyeS1kYXJrIHtcbiAgY29sb3I6IHJnYig0OCw2MywxNTkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hY2NlbnQge1xuICBjb2xvcjogcmdiKDI1NSw2NCwxMjkpICFpbXBvcnRhbnQ7IH1cblxuLm1kbC1jb2xvci10ZXh0LS1hY2NlbnQtY29udHJhc3Qge1xuICBjb2xvcjogcmdiKDI1NSwyNTUsMjU1KSAhaW1wb3J0YW50OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNUWUxFIEdVSURFIFZBUklBQkxFUy0tLS0tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlc1xuICogLS0tLS1UeXBvZ3JhcGh5XG4gKiAtLS0tLUNvbG9yc1xuICogLS0tLS1UZXh0ZmllbGRcbiAqIC0tLS0tU3dpdGNoXG4gKiAtLS0tLVNwaW5uZXJcbiAqIC0tLS0tUmFkaW9cbiAqIC0tLS0tTWVudVxuICogLS0tLS1MaXN0XG4gKiAtLS0tLUxheW91dFxuICogLS0tLS1JY29uIHRvZ2dsZXNcbiAqIC0tLS0tRm9vdGVyXG4gKiAtLS0tLUNvbHVtblxuICogLS0tLS1DaGVja2JveFxuICogLS0tLS1DYXJkXG4gKiAtLS0tLUJ1dHRvblxuICogLS0tLS1BbmltYXRpb25cbiAqIC0tLS0tUHJvZ3Jlc3NcbiAqIC0tLS0tQmFkZ2VcbiAqIC0tLS0tU2hhZG93c1xuICogLS0tLS1HcmlkXG4gKiAtLS0tLURhdGEgdGFibGVcbiAqL1xuLyogPT09PT09PT09PSAgVFlQT0dSQVBIWSAgPT09PT09PT09PSAqL1xuLyogV2UncmUgc3BsaXR0aW5nIGZvbnRzIGludG8gXCJwcmVmZXJyZWRcIiBhbmQgXCJwZXJmb3JtYW5jZVwiIGluIG9yZGVyIHRvIG9wdGltaXplXG4gICBwYWdlIGxvYWRpbmcuIEZvciBpbXBvcnRhbnQgdGV4dCwgc3VjaCBhcyB0aGUgYm9keSwgd2Ugd2FudCBpdCB0byBsb2FkXG4gICBpbW1lZGlhdGVseSBhbmQgbm90IHdhaXQgZm9yIHRoZSB3ZWIgZm9udCBsb2FkLCB3aGVyZWFzIGZvciBvdGhlciBzZWN0aW9ucyxcbiAgIHN1Y2ggYXMgaGVhZGVycyBhbmQgdGl0bGVzLCB3ZSdyZSBPSyB3aXRoIHRoaW5ncyB0YWtpbmcgYSBiaXQgbG9uZ2VyIHRvIGxvYWQuXG4gICBXZSBkbyBoYXZlIHNvbWUgb3B0aW9uYWwgY2xhc3NlcyBhbmQgcGFyYW1ldGVycyBpbiB0aGUgbWl4aW5zLCBpbiBjYXNlIHlvdVxuICAgZGVmaW5pdGVseSB3YW50IHRvIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgdGhlIHByZWZlcnJlZCBmb250IGFuZCBkb24ndCBtaW5kXG4gICB0aGUgcGVyZm9ybWFuY2UgaGl0LlxuICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gaW1wcm92ZSBvbiB0aGlzIG9uY2UgQ1NTIEZvbnQgTG9hZGluZyBMMyBiZWNvbWVzIG1vcmVcbiAgIHdpZGVseSBhdmFpbGFibGUuXG4qL1xuLyogPT09PT09PT09PSAgQ09MT1JTICA9PT09PT09PT09ICovXG4vKipcbipcbiogTWF0ZXJpYWwgZGVzaWduIGNvbG9yIHBhbGV0dGVzLlxuKiBAc2VlIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9kZXNpZ24vc3BlYy9zdHlsZS9jb2xvci5odG1sXG4qXG4qKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBDb2xvciBQYWxldHRlcyAgPT09PT09PT09PSAqL1xuLyogY29sb3JzLnNjc3MgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUeXBvZ3JhcGh5ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb21wb25lbnRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTdGFuZGFyZCBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJY29uIFRvZ2dsZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJhZGlvIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJpcHBsZSBlZmZlY3QgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDaGVja2JveGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTd2l0Y2hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3Bpbm5lciAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENhcmQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNsaWRlcnMgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEl0ZW0gPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUb29sdGlwcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRm9vdGVyICA9PT09PT09PT09ICovXG4vKiBURVhURklFTEQgKi9cbi8qIFNXSVRDSCAqL1xuLyogU1BJTk5FUiAqL1xuLyogUkFESU8gKi9cbi8qIE1FTlUgKi9cbi8qIExJU1QgKi9cbi8qIExBWU9VVCAqL1xuLyogSUNPTiBUT0dHTEUgKi9cbi8qIEZPT1RFUiAqL1xuLyptZWdhLWZvb3RlciovXG4vKm1pbmktZm9vdGVyKi9cbi8qIENIRUNLQk9YICovXG4vKiBDQVJEICovXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbi8qIENvdmVyIGltYWdlICovXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbi8qIEFOSU1BVElPTiAqL1xuLyogUFJPR1JFU1MgKi9cbi8qIEJBREdFICovXG4vKiBTSEFET1dTICovXG4vKiBHUklEICovXG4vKiBEQVRBIFRBQkxFICovXG4vKiBUT09MVElQICovXG4ubWRsLXJpcHBsZSB7XG4gIGJhY2tncm91bmQ6IHJnYigwLDAsMCk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgaGVpZ2h0OiA1MHB4O1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB3aWR0aDogNTBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAubWRsLXJpcHBsZS5pcy1hbmltYXRpbmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCB3aWR0aCAwLjNzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpLCBoZWlnaHQgMC4zcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSwgb3BhY2l0eSAwLjZzIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOyB9XG4gIC5tZGwtcmlwcGxlLmlzLXZpc2libGUge1xuICAgIG9wYWNpdHk6IDAuMzsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLm1kbC1hbmltYXRpb24tLWRlZmF1bHQge1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsgfVxuXG4ubWRsLWFuaW1hdGlvbi0tZmFzdC1vdXQtc2xvdy1pbiB7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG5cbi5tZGwtYW5pbWF0aW9uLS1saW5lYXItb3V0LXNsb3ctaW4ge1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAsIDAsIDAuMiwgMSk7IH1cblxuLm1kbC1hbmltYXRpb24tLWZhc3Qtb3V0LWxpbmVhci1pbiB7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLm1kbC1iYWRnZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWFyZ2luLXJpZ2h0OiAyNHB4OyB9XG4gIC5tZGwtYmFkZ2U6bm90KFtkYXRhLWJhZGdlXSkge1xuICAgIG1hcmdpbi1yaWdodDogYXV0bzsgfVxuICAubWRsLWJhZGdlW2RhdGEtYmFkZ2VdOmFmdGVyIHtcbiAgICBjb250ZW50OiBhdHRyKGRhdGEtYmFkZ2UpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24tY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTExcHg7XG4gICAgcmlnaHQ6IC0yNHB4O1xuICAgIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1LDY0LDEyOSk7XG4gICAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7IH1cbiAgICAubWRsLWJ1dHRvbiAubWRsLWJhZGdlW2RhdGEtYmFkZ2VdOmFmdGVyIHtcbiAgICAgIHRvcDogLTEwcHg7XG4gICAgICByaWdodDogLTVweDsgfVxuICAubWRsLWJhZGdlLm1kbC1iYWRnZS0tbm8tYmFja2dyb3VuZFtkYXRhLWJhZGdlXTphZnRlciB7XG4gICAgY29sb3I6IHJnYigyNTUsNjQsMTI5KTtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1LDI1NSwyNTUpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxcHggZ3JheTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFR5cG9ncmFwaHkgKi9cbi8qIFNoYWRvd3MgKi9cbi8qIEFuaW1hdGlvbnMgKi9cbi5tZGwtYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogcmdiKDAsMCwwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDM2cHg7XG4gIG1pbi13aWR0aDogNjRweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWxsLWNoYW5nZTogYm94LXNoYWRvdywgdHJhbnNmb3JtO1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMSwgMSksIGJhY2tncm91bmQtY29sb3IgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLCBjb2xvciAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG4gIC5tZGwtYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBib3JkZXI6IDA7IH1cbiAgLm1kbC1idXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU4LDE1OCwxNTgsIDAuMjApOyB9XG4gIC5tZGwtYnV0dG9uOmZvY3VzOm5vdCg6YWN0aXZlKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwgMC4xMik7IH1cbiAgLm1kbC1idXR0b246YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1OCwxNTgsMTU4LCAwLjQwKTsgfVxuICAubWRsLWJ1dHRvbi5tZGwtYnV0dG9uLS1jb2xvcmVkIHtcbiAgICBjb2xvcjogcmdiKDYzLDgxLDE4MSk7IH1cbiAgICAubWRsLWJ1dHRvbi5tZGwtYnV0dG9uLS1jb2xvcmVkOmZvY3VzOm5vdCg6YWN0aXZlKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLCAwLjEyKTsgfVxuXG5pbnB1dC5tZGwtYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH1cblxuLm1kbC1idXR0b24tLXJhaXNlZCB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMTU4LDE1OCwxNTgsIDAuMjApO1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cbiAgLm1kbC1idXR0b24tLXJhaXNlZDphY3RpdmUge1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMik7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTgsMTU4LDE1OCwgMC40MCk7IH1cbiAgLm1kbC1idXR0b24tLXJhaXNlZDpmb2N1czpub3QoOmFjdGl2ZSkge1xuICAgIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAwLjE4KSwgMCA4cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMzYpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU4LDE1OCwxNTgsIDAuNDApOyB9XG4gIC5tZGwtYnV0dG9uLS1yYWlzZWQubWRsLWJ1dHRvbi0tY29sb3JlZCB7XG4gICAgYmFja2dyb3VuZDogcmdiKDYzLDgxLDE4MSk7XG4gICAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7IH1cbiAgICAubWRsLWJ1dHRvbi0tcmFpc2VkLm1kbC1idXR0b24tLWNvbG9yZWQ6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDYzLDgxLDE4MSk7IH1cbiAgICAubWRsLWJ1dHRvbi0tcmFpc2VkLm1kbC1idXR0b24tLWNvbG9yZWQ6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig2Myw4MSwxODEpOyB9XG4gICAgLm1kbC1idXR0b24tLXJhaXNlZC5tZGwtYnV0dG9uLS1jb2xvcmVkOmZvY3VzOm5vdCg6YWN0aXZlKSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjMsODEsMTgxKTsgfVxuICAgIC5tZGwtYnV0dG9uLS1yYWlzZWQubWRsLWJ1dHRvbi0tY29sb3JlZCAubWRsLXJpcHBsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2IoMjU1LDI1NSwyNTUpOyB9XG5cbi5tZGwtYnV0dG9uLS1mYWIge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgaGVpZ2h0OiA1NnB4O1xuICBtYXJnaW46IGF1dG87XG4gIG1pbi13aWR0aDogNTZweDtcbiAgd2lkdGg6IDU2cHg7XG4gIHBhZGRpbmc6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQ6IHJnYmEoMTU4LDE1OCwxNTgsIDAuMjApO1xuICBib3gtc2hhZG93OiAwIDFweCAxLjVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMXB4IDFweCAwIHJnYmEoMCwgMCwgMCwgMC4yNCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxuICAubWRsLWJ1dHRvbi0tZmFiIC5tYXRlcmlhbC1pY29ucyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTJweCwgLTEycHgpO1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIHdpZHRoOiAyNHB4OyB9XG4gIC5tZGwtYnV0dG9uLS1mYWIubWRsLWJ1dHRvbi0tbWluaS1mYWIge1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgd2lkdGg6IDQwcHg7IH1cbiAgLm1kbC1idXR0b24tLWZhYiAubWRsLWJ1dHRvbl9fcmlwcGxlLWNvbnRhaW5lciB7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB3aGl0ZSwgYmxhY2spOyB9XG4gIC5tZGwtYnV0dG9uLS1mYWI6YWN0aXZlIHtcbiAgICBib3gtc2hhZG93OiAwIDRweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTU4LDE1OCwxNTgsIDAuNDApOyB9XG4gIC5tZGwtYnV0dG9uLS1mYWI6Zm9jdXM6bm90KDphY3RpdmUpIHtcbiAgICBib3gtc2hhZG93OiAwIDAgOHB4IHJnYmEoMCwgMCwgMCwgMC4xOCksIDAgOHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjM2KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1OCwxNTgsMTU4LCAwLjQwKTsgfVxuICAubWRsLWJ1dHRvbi0tZmFiLm1kbC1idXR0b24tLWNvbG9yZWQge1xuICAgIGJhY2tncm91bmQ6IHJnYigyNTUsNjQsMTI5KTtcbiAgICBjb2xvcjogcmdiKDI1NSwyNTUsMjU1KTsgfVxuICAgIC5tZGwtYnV0dG9uLS1mYWIubWRsLWJ1dHRvbi0tY29sb3JlZDpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDY0LDEyOSk7IH1cbiAgICAubWRsLWJ1dHRvbi0tZmFiLm1kbC1idXR0b24tLWNvbG9yZWQ6Zm9jdXM6bm90KDphY3RpdmUpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsNjQsMTI5KTsgfVxuICAgIC5tZGwtYnV0dG9uLS1mYWIubWRsLWJ1dHRvbi0tY29sb3JlZDphY3RpdmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSw2NCwxMjkpOyB9XG4gICAgLm1kbC1idXR0b24tLWZhYi5tZGwtYnV0dG9uLS1jb2xvcmVkIC5tZGwtcmlwcGxlIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUsMjU1LDI1NSk7IH1cblxuLm1kbC1idXR0b24tLWljb24ge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgaGVpZ2h0OiAzMnB4O1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICBtaW4td2lkdGg6IDMycHg7XG4gIHdpZHRoOiAzMnB4O1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjb2xvcjogaW5oZXJpdDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfVxuICAubWRsLWJ1dHRvbi0taWNvbiAubWF0ZXJpYWwtaWNvbnMge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTEycHgsIC0xMnB4KTtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICB3aWR0aDogMjRweDsgfVxuICAubWRsLWJ1dHRvbi0taWNvbi5tZGwtYnV0dG9uLS1taW5pLWljb24ge1xuICAgIGhlaWdodDogMjRweDtcbiAgICBtaW4td2lkdGg6IDI0cHg7XG4gICAgd2lkdGg6IDI0cHg7IH1cbiAgICAubWRsLWJ1dHRvbi0taWNvbi5tZGwtYnV0dG9uLS1taW5pLWljb24gLm1hdGVyaWFsLWljb25zIHtcbiAgICAgIHRvcDogMHB4O1xuICAgICAgbGVmdDogMHB4OyB9XG4gIC5tZGwtYnV0dG9uLS1pY29uIC5tZGwtYnV0dG9uX19yaXBwbGUtY29udGFpbmVyIHtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHdoaXRlLCBibGFjayk7IH1cblxuLm1kbC1idXR0b25fX3JpcHBsZS1jb250YWluZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAxMDAlO1xuICBsZWZ0OiAwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAwO1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gIC5tZGwtYnV0dG9uW2Rpc2FibGVkXSAubWRsLWJ1dHRvbl9fcmlwcGxlLWNvbnRhaW5lciAubWRsLXJpcHBsZSxcbiAgLm1kbC1idXR0b24ubWRsLWJ1dHRvbi0tZGlzYWJsZWQgLm1kbC1idXR0b25fX3JpcHBsZS1jb250YWluZXIgLm1kbC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi5tZGwtYnV0dG9uLS1wcmltYXJ5Lm1kbC1idXR0b24tLXByaW1hcnkge1xuICBjb2xvcjogcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1idXR0b24tLXByaW1hcnkubWRsLWJ1dHRvbi0tcHJpbWFyeSAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSwyNTUsMjU1KTsgfVxuICAubWRsLWJ1dHRvbi0tcHJpbWFyeS5tZGwtYnV0dG9uLS1wcmltYXJ5Lm1kbC1idXR0b24tLXJhaXNlZCwgLm1kbC1idXR0b24tLXByaW1hcnkubWRsLWJ1dHRvbi0tcHJpbWFyeS5tZGwtYnV0dG9uLS1mYWIge1xuICAgIGNvbG9yOiByZ2IoMjU1LDI1NSwyNTUpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig2Myw4MSwxODEpOyB9XG5cbi5tZGwtYnV0dG9uLS1hY2NlbnQubWRsLWJ1dHRvbi0tYWNjZW50IHtcbiAgY29sb3I6IHJnYigyNTUsNjQsMTI5KTsgfVxuICAubWRsLWJ1dHRvbi0tYWNjZW50Lm1kbC1idXR0b24tLWFjY2VudCAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSwyNTUsMjU1KTsgfVxuICAubWRsLWJ1dHRvbi0tYWNjZW50Lm1kbC1idXR0b24tLWFjY2VudC5tZGwtYnV0dG9uLS1yYWlzZWQsIC5tZGwtYnV0dG9uLS1hY2NlbnQubWRsLWJ1dHRvbi0tYWNjZW50Lm1kbC1idXR0b24tLWZhYiB7XG4gICAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSw2NCwxMjkpOyB9XG5cbi5tZGwtYnV0dG9uW2Rpc2FibGVkXVtkaXNhYmxlZF0sIC5tZGwtYnV0dG9uLm1kbC1idXR0b24tLWRpc2FibGVkLm1kbC1idXR0b24tLWRpc2FibGVkIHtcbiAgY29sb3I6IHJnYmEoMCwwLDAsIDAuMjYpO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9XG5cbi5tZGwtYnV0dG9uLS1mYWJbZGlzYWJsZWRdW2Rpc2FibGVkXSwgLm1kbC1idXR0b24tLWZhYi5tZGwtYnV0dG9uLS1kaXNhYmxlZC5tZGwtYnV0dG9uLS1kaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsIDAuMTIpO1xuICBjb2xvcjogcmdiYSgwLDAsMCwgMC4yNik7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRsLWJ1dHRvbi0tcmFpc2VkW2Rpc2FibGVkXVtkaXNhYmxlZF0sIC5tZGwtYnV0dG9uLS1yYWlzZWQubWRsLWJ1dHRvbi0tZGlzYWJsZWQubWRsLWJ1dHRvbi0tZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLCAwLjEyKTtcbiAgY29sb3I6IHJnYmEoMCwwLDAsIDAuMjYpO1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kbC1idXR0b24tLWNvbG9yZWRbZGlzYWJsZWRdW2Rpc2FibGVkXSwgLm1kbC1idXR0b24tLWNvbG9yZWQubWRsLWJ1dHRvbi0tZGlzYWJsZWQubWRsLWJ1dHRvbi0tZGlzYWJsZWQge1xuICBjb2xvcjogcmdiYSgwLDAsMCwgMC4yNik7IH1cblxuLm1kbC1idXR0b24gLm1hdGVyaWFsLWljb25zIHtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLm1kbC1jYXJkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBtaW4taGVpZ2h0OiAyMDBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2lkdGg6IDMzMHB4O1xuICB6LWluZGV4OiAxO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6IHJnYigyNTUsMjU1LDI1NSk7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4ubWRsLWNhcmRfX21lZGlhIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSw2NCwxMjkpO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLW9yaWdpbjogcGFkZGluZy1ib3g7XG4gIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbi5tZGwtY2FyZF9fdGl0bGUge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogcmdiKDAsMCwwKTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3RyZXRjaDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgcGFkZGluZzogMTZweCAxNnB4O1xuICBwZXJzcGVjdGl2ZS1vcmlnaW46IDE2NXB4IDU2cHg7XG4gIHRyYW5zZm9ybS1vcmlnaW46IDE2NXB4IDU2cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgLm1kbC1jYXJkX190aXRsZS5tZGwtY2FyZC0tYm9yZGVyIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpOyB9XG5cbi5tZGwtY2FyZF9fdGl0bGUtdGV4dCB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICBjb2xvcjogaW5oZXJpdDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMTQ5cHggNDhweDtcbiAgbWFyZ2luOiAwOyB9XG5cbi5tZGwtY2FyZF9fc3VidGl0bGUtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6IHJnYmEoMCwwLDAsIDAuNTQpO1xuICBtYXJnaW46IDA7IH1cblxuLm1kbC1jYXJkX19zdXBwb3J0aW5nLXRleHQge1xuICBjb2xvcjogcmdiYSgwLDAsMCwgMC41NCk7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDE2cHggMTZweDtcbiAgd2lkdGg6IDkwJTsgfVxuXG4ubWRsLWNhcmRfX2FjdGlvbnMge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xuICBwYWRkaW5nOiA4cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbiAgLm1kbC1jYXJkX19hY3Rpb25zLm1kbC1jYXJkLS1ib3JkZXIge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7IH1cblxuLm1kbC1jYXJkLS1leHBhbmQge1xuICBmbGV4LWdyb3c6IDE7IH1cblxuLm1kbC1jYXJkX19tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMTZweDtcbiAgdG9wOiAxNnB4OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNUWUxFIEdVSURFIFZBUklBQkxFUy0tLS0tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlc1xuICogLS0tLS1UeXBvZ3JhcGh5XG4gKiAtLS0tLUNvbG9yc1xuICogLS0tLS1UZXh0ZmllbGRcbiAqIC0tLS0tU3dpdGNoXG4gKiAtLS0tLVNwaW5uZXJcbiAqIC0tLS0tUmFkaW9cbiAqIC0tLS0tTWVudVxuICogLS0tLS1MaXN0XG4gKiAtLS0tLUxheW91dFxuICogLS0tLS1JY29uIHRvZ2dsZXNcbiAqIC0tLS0tRm9vdGVyXG4gKiAtLS0tLUNvbHVtblxuICogLS0tLS1DaGVja2JveFxuICogLS0tLS1DYXJkXG4gKiAtLS0tLUJ1dHRvblxuICogLS0tLS1BbmltYXRpb25cbiAqIC0tLS0tUHJvZ3Jlc3NcbiAqIC0tLS0tQmFkZ2VcbiAqIC0tLS0tU2hhZG93c1xuICogLS0tLS1HcmlkXG4gKiAtLS0tLURhdGEgdGFibGVcbiAqL1xuLyogPT09PT09PT09PSAgVFlQT0dSQVBIWSAgPT09PT09PT09PSAqL1xuLyogV2UncmUgc3BsaXR0aW5nIGZvbnRzIGludG8gXCJwcmVmZXJyZWRcIiBhbmQgXCJwZXJmb3JtYW5jZVwiIGluIG9yZGVyIHRvIG9wdGltaXplXG4gICBwYWdlIGxvYWRpbmcuIEZvciBpbXBvcnRhbnQgdGV4dCwgc3VjaCBhcyB0aGUgYm9keSwgd2Ugd2FudCBpdCB0byBsb2FkXG4gICBpbW1lZGlhdGVseSBhbmQgbm90IHdhaXQgZm9yIHRoZSB3ZWIgZm9udCBsb2FkLCB3aGVyZWFzIGZvciBvdGhlciBzZWN0aW9ucyxcbiAgIHN1Y2ggYXMgaGVhZGVycyBhbmQgdGl0bGVzLCB3ZSdyZSBPSyB3aXRoIHRoaW5ncyB0YWtpbmcgYSBiaXQgbG9uZ2VyIHRvIGxvYWQuXG4gICBXZSBkbyBoYXZlIHNvbWUgb3B0aW9uYWwgY2xhc3NlcyBhbmQgcGFyYW1ldGVycyBpbiB0aGUgbWl4aW5zLCBpbiBjYXNlIHlvdVxuICAgZGVmaW5pdGVseSB3YW50IHRvIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgdGhlIHByZWZlcnJlZCBmb250IGFuZCBkb24ndCBtaW5kXG4gICB0aGUgcGVyZm9ybWFuY2UgaGl0LlxuICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gaW1wcm92ZSBvbiB0aGlzIG9uY2UgQ1NTIEZvbnQgTG9hZGluZyBMMyBiZWNvbWVzIG1vcmVcbiAgIHdpZGVseSBhdmFpbGFibGUuXG4qL1xuLyogPT09PT09PT09PSAgQ09MT1JTICA9PT09PT09PT09ICovXG4vKipcbipcbiogTWF0ZXJpYWwgZGVzaWduIGNvbG9yIHBhbGV0dGVzLlxuKiBAc2VlIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9kZXNpZ24vc3BlYy9zdHlsZS9jb2xvci5odG1sXG4qXG4qKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBDb2xvciBQYWxldHRlcyAgPT09PT09PT09PSAqL1xuLyogY29sb3JzLnNjc3MgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUeXBvZ3JhcGh5ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb21wb25lbnRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTdGFuZGFyZCBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJY29uIFRvZ2dsZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJhZGlvIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJpcHBsZSBlZmZlY3QgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDaGVja2JveGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTd2l0Y2hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3Bpbm5lciAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENhcmQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNsaWRlcnMgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEl0ZW0gPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUb29sdGlwcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRm9vdGVyICA9PT09PT09PT09ICovXG4vKiBURVhURklFTEQgKi9cbi8qIFNXSVRDSCAqL1xuLyogU1BJTk5FUiAqL1xuLyogUkFESU8gKi9cbi8qIE1FTlUgKi9cbi8qIExJU1QgKi9cbi8qIExBWU9VVCAqL1xuLyogSUNPTiBUT0dHTEUgKi9cbi8qIEZPT1RFUiAqL1xuLyptZWdhLWZvb3RlciovXG4vKm1pbmktZm9vdGVyKi9cbi8qIENIRUNLQk9YICovXG4vKiBDQVJEICovXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbi8qIENvdmVyIGltYWdlICovXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbi8qIEFOSU1BVElPTiAqL1xuLyogUFJPR1JFU1MgKi9cbi8qIEJBREdFICovXG4vKiBTSEFET1dTICovXG4vKiBHUklEICovXG4vKiBEQVRBIFRBQkxFICovXG4vKiBUT09MVElQICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVHlwb2dyYXBoeSAqL1xuLyogU2hhZG93cyAqL1xuLyogQW5pbWF0aW9ucyAqL1xuLm1kbC1jaGVja2JveCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyNHB4O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLm1kbC1jaGVja2JveC5pcy11cGdyYWRlZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAyNHB4OyB9XG5cbi5tZGwtY2hlY2tib3hfX2lucHV0IHtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7IH1cbiAgLm1kbC1jaGVja2JveC5pcy11cGdyYWRlZCAubWRsLWNoZWNrYm94X19pbnB1dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC1tcy1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7IH1cblxuLm1kbC1jaGVja2JveF9fYm94LW91dGxpbmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogM3B4O1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIG1hcmdpbjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsMCwwLCAwLjU0KTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICB6LWluZGV4OiAyOyB9XG4gIC5tZGwtY2hlY2tib3guaXMtY2hlY2tlZCAubWRsLWNoZWNrYm94X19ib3gtb3V0bGluZSB7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1jaGVja2JveC5pcy1kaXNhYmxlZCAubWRsLWNoZWNrYm94X19ib3gtb3V0bGluZSB7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgwLDAsMCwgMC4yNik7XG4gICAgY3Vyc29yOiBhdXRvOyB9XG5cbi5tZGwtY2hlY2tib3hfX2ZvY3VzLWhlbHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzcHg7XG4gIGxlZnQ6IDA7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDE2cHg7XG4gIGhlaWdodDogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAubWRsLWNoZWNrYm94LmlzLWZvY3VzZWQgLm1kbC1jaGVja2JveF9fZm9jdXMtaGVscGVyIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpOyB9XG4gIC5tZGwtY2hlY2tib3guaXMtZm9jdXNlZC5pcy1jaGVja2VkIC5tZGwtY2hlY2tib3hfX2ZvY3VzLWhlbHBlciB7XG4gICAgYm94LXNoYWRvdzogMCAwIDBweCA4cHggcmdiYSg2Myw4MSwxODEsIDAuMjYpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNjMsODEsMTgxLCAwLjI2KTsgfVxuXG4ubWRsLWNoZWNrYm94X190aWNrLW91dGxpbmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFzazogdXJsKFwiL2ltYWdlcy90aWNrLW1hc2suc3ZnP2VtYmVkXCIpO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4yOHM7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kOyB9XG4gIC5tZGwtY2hlY2tib3guaXMtY2hlY2tlZCAubWRsLWNoZWNrYm94X190aWNrLW91dGxpbmUge1xuICAgIGJhY2tncm91bmQ6IHJnYig2Myw4MSwxODEpIHVybChcIi9pbWFnZXMvdGljay5zdmc/ZW1iZWRcIik7IH1cbiAgLm1kbC1jaGVja2JveC5pcy1jaGVja2VkLmlzLWRpc2FibGVkIC5tZGwtY2hlY2tib3hfX3RpY2stb3V0bGluZSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwgMC4yNikgdXJsKFwiL2ltYWdlcy90aWNrLnN2Zz9lbWJlZFwiKTsgfVxuXG4ubWRsLWNoZWNrYm94X19sYWJlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICBtYXJnaW46IDA7IH1cbiAgLm1kbC1jaGVja2JveC5pcy1kaXNhYmxlZCAubWRsLWNoZWNrYm94X19sYWJlbCB7XG4gICAgY29sb3I6IHJnYmEoMCwwLDAsIDAuMjYpO1xuICAgIGN1cnNvcjogYXV0bzsgfVxuXG4ubWRsLWNoZWNrYm94X19yaXBwbGUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IC02cHg7XG4gIGxlZnQ6IC0xMHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHdoaXRlLCBibGFjayk7IH1cbiAgLm1kbC1jaGVja2JveF9fcmlwcGxlLWNvbnRhaW5lciAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1jaGVja2JveC5pcy1kaXNhYmxlZCAubWRsLWNoZWNrYm94X19yaXBwbGUtY29udGFpbmVyIHtcbiAgICBjdXJzb3I6IGF1dG87IH1cbiAgLm1kbC1jaGVja2JveC5pcy1kaXNhYmxlZCAubWRsLWNoZWNrYm94X19yaXBwbGUtY29udGFpbmVyIC5tZGwtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFR5cG9ncmFwaHkgKi9cbi8qIFNoYWRvd3MgKi9cbi8qIEFuaW1hdGlvbnMgKi9cbi5tZGwtZGF0YS10YWJsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDI1NSwyNTUpOyB9XG4gIC5tZGwtZGF0YS10YWJsZSB0aGVhZCB7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDsgfVxuICAgIC5tZGwtZGF0YS10YWJsZSB0aGVhZCAubWRsLWRhdGEtdGFibGVfX3NlbGVjdCB7XG4gICAgICBtYXJnaW4tdG9wOiAwOyB9XG4gIC5tZGwtZGF0YS10YWJsZSB0Ym9keSB0ciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogNDhweDtcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjI4cztcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiBiYWNrZ3JvdW5kLWNvbG9yOyB9XG4gICAgLm1kbC1kYXRhLXRhYmxlIHRib2R5IHRyLmlzLXNlbGVjdGVkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTA7IH1cbiAgICAubWRsLWRhdGEtdGFibGUgdGJvZHkgdHI6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZWVlZTsgfVxuICAubWRsLWRhdGEtdGFibGUgdGQsIC5tZGwtZGF0YS10YWJsZSB0aCB7XG4gICAgcGFkZGluZzogMCAxOHB4IDAgMThweDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDsgfVxuICAgIC5tZGwtZGF0YS10YWJsZSB0ZDpmaXJzdC1vZi10eXBlLCAubWRsLWRhdGEtdGFibGUgdGg6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7IH1cbiAgICAubWRsLWRhdGEtdGFibGUgdGQ6bGFzdC1vZi10eXBlLCAubWRsLWRhdGEtdGFibGUgdGg6bGFzdC1vZi10eXBlIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDI0cHg7IH1cbiAgLm1kbC1kYXRhLXRhYmxlIHRkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICAgIC5tZGwtZGF0YS10YWJsZSB0ZCAubWRsLWRhdGEtdGFibGVfX3NlbGVjdCB7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogMjRweDsgfVxuICAubWRsLWRhdGEtdGFibGUgdGgge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICBsZXR0ZXItc3BhY2luZzogMDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNTQpO1xuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuICAgIC5tZGwtZGF0YS10YWJsZSB0aCAubWRsLWRhdGEtdGFibGVfX3NlbGVjdCB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDhweDtcbiAgICAgIGxlZnQ6IDI0cHg7IH1cblxuLm1kbC1kYXRhLXRhYmxlX19zZWxlY3Qge1xuICB3aWR0aDogMTZweDsgfVxuXG4ubWRsLWRhdGEtdGFibGVfX2NlbGwtLW5vbi1udW1lcmljLm1kbC1kYXRhLXRhYmxlX19jZWxsLS1ub24tbnVtZXJpYyB7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRDT05URU5UU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU1RZTEUgR1VJREUgVkFSSUFCTEVTLS0tLS0tLS0tLS0tLS0tLS0tRGVjbGFyYXRpb25zIG9mIFNhc3MgdmFyaWFibGVzXG4gKiAtLS0tLVR5cG9ncmFwaHlcbiAqIC0tLS0tQ29sb3JzXG4gKiAtLS0tLVRleHRmaWVsZFxuICogLS0tLS1Td2l0Y2hcbiAqIC0tLS0tU3Bpbm5lclxuICogLS0tLS1SYWRpb1xuICogLS0tLS1NZW51XG4gKiAtLS0tLUxpc3RcbiAqIC0tLS0tTGF5b3V0XG4gKiAtLS0tLUljb24gdG9nZ2xlc1xuICogLS0tLS1Gb290ZXJcbiAqIC0tLS0tQ29sdW1uXG4gKiAtLS0tLUNoZWNrYm94XG4gKiAtLS0tLUNhcmRcbiAqIC0tLS0tQnV0dG9uXG4gKiAtLS0tLUFuaW1hdGlvblxuICogLS0tLS1Qcm9ncmVzc1xuICogLS0tLS1CYWRnZVxuICogLS0tLS1TaGFkb3dzXG4gKiAtLS0tLUdyaWRcbiAqIC0tLS0tRGF0YSB0YWJsZVxuICovXG4vKiA9PT09PT09PT09ICBUWVBPR1JBUEhZICA9PT09PT09PT09ICovXG4vKiBXZSdyZSBzcGxpdHRpbmcgZm9udHMgaW50byBcInByZWZlcnJlZFwiIGFuZCBcInBlcmZvcm1hbmNlXCIgaW4gb3JkZXIgdG8gb3B0aW1pemVcbiAgIHBhZ2UgbG9hZGluZy4gRm9yIGltcG9ydGFudCB0ZXh0LCBzdWNoIGFzIHRoZSBib2R5LCB3ZSB3YW50IGl0IHRvIGxvYWRcbiAgIGltbWVkaWF0ZWx5IGFuZCBub3Qgd2FpdCBmb3IgdGhlIHdlYiBmb250IGxvYWQsIHdoZXJlYXMgZm9yIG90aGVyIHNlY3Rpb25zLFxuICAgc3VjaCBhcyBoZWFkZXJzIGFuZCB0aXRsZXMsIHdlJ3JlIE9LIHdpdGggdGhpbmdzIHRha2luZyBhIGJpdCBsb25nZXIgdG8gbG9hZC5cbiAgIFdlIGRvIGhhdmUgc29tZSBvcHRpb25hbCBjbGFzc2VzIGFuZCBwYXJhbWV0ZXJzIGluIHRoZSBtaXhpbnMsIGluIGNhc2UgeW91XG4gICBkZWZpbml0ZWx5IHdhbnQgdG8gbWFrZSBzdXJlIHlvdSdyZSB1c2luZyB0aGUgcHJlZmVycmVkIGZvbnQgYW5kIGRvbid0IG1pbmRcbiAgIHRoZSBwZXJmb3JtYW5jZSBoaXQuXG4gICBXZSBzaG91bGQgYmUgYWJsZSB0byBpbXByb3ZlIG9uIHRoaXMgb25jZSBDU1MgRm9udCBMb2FkaW5nIEwzIGJlY29tZXMgbW9yZVxuICAgd2lkZWx5IGF2YWlsYWJsZS5cbiovXG4vKiA9PT09PT09PT09ICBDT0xPUlMgID09PT09PT09PT0gKi9cbi8qKlxuKlxuKiBNYXRlcmlhbCBkZXNpZ24gY29sb3IgcGFsZXR0ZXMuXG4qIEBzZWUgaHR0cDovL3d3dy5nb29nbGUuY29tL2Rlc2lnbi9zcGVjL3N0eWxlL2NvbG9yLmh0bWxcbipcbioqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIENvbG9yIFBhbGV0dGVzICA9PT09PT09PT09ICovXG4vKiBjb2xvcnMuc2NzcyAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIElNQUdFUyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgJiBUaGVtZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFR5cG9ncmFwaHkgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbXBvbmVudHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN0YW5kYXJkIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEljb24gVG9nZ2xlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmFkaW8gQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmlwcGxlIGVmZmVjdCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGF5b3V0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb250ZW50IFRhYnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENoZWNrYm94ZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN3aXRjaGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTcGlubmVyICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUZXh0IGZpZWxkcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2FyZCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU2xpZGVycyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09IFByb2dyZXNzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExpc3QgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSXRlbSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBEcm9wZG93biBtZW51ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRvb2x0aXBzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBGb290ZXIgID09PT09PT09PT0gKi9cbi8qIFRFWFRGSUVMRCAqL1xuLyogU1dJVENIICovXG4vKiBTUElOTkVSICovXG4vKiBSQURJTyAqL1xuLyogTUVOVSAqL1xuLyogTElTVCAqL1xuLyogTEFZT1VUICovXG4vKiBJQ09OIFRPR0dMRSAqL1xuLyogRk9PVEVSICovXG4vKm1lZ2EtZm9vdGVyKi9cbi8qbWluaS1mb290ZXIqL1xuLyogQ0hFQ0tCT1ggKi9cbi8qIENBUkQgKi9cbi8qIENhcmQgZGltZW5zaW9ucyAqL1xuLyogQ292ZXIgaW1hZ2UgKi9cbi8qIEJVVFRPTiAqL1xuLyoqXG4gKlxuICogRGltZW5zaW9uc1xuICpcbiAqL1xuLyogQU5JTUFUSU9OICovXG4vKiBQUk9HUkVTUyAqL1xuLyogQkFER0UgKi9cbi8qIFNIQURPV1MgKi9cbi8qIEdSSUQgKi9cbi8qIERBVEEgVEFCTEUgKi9cbi8qIFRPT0xUSVAgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUeXBvZ3JhcGh5ICovXG4vKiBTaGFkb3dzICovXG4vKiBBbmltYXRpb25zICovXG4ubWRsLW1lZ2EtZm9vdGVyIHtcbiAgcGFkZGluZzogMTZweCA0MHB4O1xuICBjb2xvcjogcmdiKDE1OCwxNTgsMTU4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDY2LDY2LDY2KTsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS10b3Atc2VjdGlvbjphZnRlcixcbi5tZGwtbWVnYS1mb290ZXItLW1pZGRsZS1zZWN0aW9uOmFmdGVyLFxuLm1kbC1tZWdhLWZvb3Rlci0tYm90dG9tLXNlY3Rpb246YWZ0ZXIsXG4ubWRsLW1lZ2EtZm9vdGVyX190b3Atc2VjdGlvbjphZnRlcixcbi5tZGwtbWVnYS1mb290ZXJfX21pZGRsZS1zZWN0aW9uOmFmdGVyLFxuLm1kbC1tZWdhLWZvb3Rlcl9fYm90dG9tLXNlY3Rpb246YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIGNsZWFyOiBib3RoOyB9XG5cbi5tZGwtbWVnYS1mb290ZXItLWxlZnQtc2VjdGlvbixcbi5tZGwtbWVnYS1mb290ZXJfX2xlZnQtc2VjdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7IH1cblxuLm1kbC1tZWdhLWZvb3Rlci0tcmlnaHQtc2VjdGlvbixcbi5tZGwtbWVnYS1mb290ZXJfX3JpZ2h0LXNlY3Rpb24ge1xuICBtYXJnaW4tYm90dG9tOiAxNnB4OyB9XG5cbi5tZGwtbWVnYS1mb290ZXItLXJpZ2h0LXNlY3Rpb24gYSxcbi5tZGwtbWVnYS1mb290ZXJfX3JpZ2h0LXNlY3Rpb24gYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gIC5tZGwtbWVnYS1mb290ZXItLWxlZnQtc2VjdGlvbixcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fbGVmdC1zZWN0aW9uIHtcbiAgICBmbG9hdDogbGVmdDsgfVxuICAubWRsLW1lZ2EtZm9vdGVyLS1yaWdodC1zZWN0aW9uLFxuICAubWRsLW1lZ2EtZm9vdGVyX19yaWdodC1zZWN0aW9uIHtcbiAgICBmbG9hdDogcmlnaHQ7IH1cbiAgLm1kbC1tZWdhLWZvb3Rlci0tcmlnaHQtc2VjdGlvbiBhLFxuICAubWRsLW1lZ2EtZm9vdGVyX19yaWdodC1zZWN0aW9uIGEge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9IH1cblxuLm1kbC1tZWdhLWZvb3Rlci0tc29jaWFsLWJ0bixcbi5tZGwtbWVnYS1mb290ZXJfX3NvY2lhbC1idG4ge1xuICB3aWR0aDogMzZweDtcbiAgaGVpZ2h0OiAzNnB4O1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigxNTgsMTU4LDE1OCk7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1kcm9wLWRvd24tc2VjdGlvbixcbi5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjBweCkge1xuICAubWRsLW1lZ2EtZm9vdGVyLS1kcm9wLWRvd24tc2VjdGlvbixcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fZHJvcC1kb3duLXNlY3Rpb24ge1xuICAgIHdpZHRoOiAzMyU7IH1cbiAgLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDEpLFxuICAubWRsLW1lZ2EtZm9vdGVyLS1kcm9wLWRvd24tc2VjdGlvbjpudGgtY2hpbGQoMiksXG4gIC5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCgxKSxcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDIpIHtcbiAgICBmbG9hdDogbGVmdDsgfVxuICAubWRsLW1lZ2EtZm9vdGVyLS1kcm9wLWRvd24tc2VjdGlvbjpudGgtY2hpbGQoMyksXG4gIC5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCgzKSB7XG4gICAgZmxvYXQ6IHJpZ2h0OyB9XG4gICAgLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDMpOmFmdGVyLFxuICAgIC5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCgzKTphZnRlciB7XG4gICAgICBjbGVhcjogcmlnaHQ7IH1cbiAgLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDQpLFxuICAubWRsLW1lZ2EtZm9vdGVyX19kcm9wLWRvd24tc2VjdGlvbjpudGgtY2hpbGQoNCkge1xuICAgIGNsZWFyOiByaWdodDtcbiAgICBmbG9hdDogcmlnaHQ7IH1cbiAgLm1kbC1tZWdhLWZvb3Rlci0tbWlkZGxlLXNlY3Rpb246YWZ0ZXIsXG4gIC5tZGwtbWVnYS1mb290ZXJfX21pZGRsZS1zZWN0aW9uOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDsgfVxuICAubWRsLW1lZ2EtZm9vdGVyLS1ib3R0b20tc2VjdGlvbixcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fYm90dG9tLXNlY3Rpb24ge1xuICAgIHBhZGRpbmctdG9wOiAwOyB9IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5tZGwtbWVnYS1mb290ZXItLWRyb3AtZG93bi1zZWN0aW9uLFxuICAubWRsLW1lZ2EtZm9vdGVyLS1kcm9wLWRvd24tc2VjdGlvbjpudGgtY2hpbGQoMyksXG4gIC5tZGwtbWVnYS1mb290ZXItLWRyb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCg0KSxcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fZHJvcC1kb3duLXNlY3Rpb24sXG4gIC5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCgzKSxcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDQpIHtcbiAgICB3aWR0aDogMjQlO1xuICAgIGZsb2F0OiBsZWZ0OyB9IH1cblxuLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZy1jaGVja2JveCxcbi5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3gge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDU1LjhweDtcbiAgcGFkZGluZzogMzJweDtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tdG9wOiAtMTZweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB6LWluZGV4OiAxO1xuICBvcGFjaXR5OiAwOyB9XG4gIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmctY2hlY2tib3ggKyAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nOmFmdGVyLFxuICAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94ICsgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZzphZnRlcixcbiAgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZy1jaGVja2JveCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmc6YWZ0ZXIsXG4gIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3ggKyAubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nOmFmdGVyIHtcbiAgICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJztcbiAgICBjb250ZW50OiAnXFxFNUNFJzsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgfiAubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3QsXG4ubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgfiAubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3QsXG4ubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgKyAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nICsgLm1kbC1tZWdhLWZvb3Rlci0tbGluay1saXN0LFxuLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZy1jaGVja2JveDpjaGVja2VkICsgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZyArIC5tZGwtbWVnYS1mb290ZXJfX2xpbmstbGlzdCxcbi5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCB+IC5tZGwtbWVnYS1mb290ZXItLWxpbmstbGlzdCxcbi5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCB+IC5tZGwtbWVnYS1mb290ZXJfX2xpbmstbGlzdCxcbi5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmcgKyAubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3QsXG4ubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgKyAubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nICsgLm1kbC1tZWdhLWZvb3Rlcl9fbGluay1saXN0IHtcbiAgZGlzcGxheTogbm9uZTsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgKyAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nOmFmdGVyLFxuLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZy1jaGVja2JveDpjaGVja2VkICsgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZzphZnRlcixcbi5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmc6YWZ0ZXIsXG4ubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgKyAubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nOmFmdGVyIHtcbiAgZm9udC1mYW1pbHk6ICdNYXRlcmlhbCBJY29ucyc7XG4gIGNvbnRlbnQ6ICdcXEU1Q0YnOyB9XG5cbi5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmcsXG4ubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZy1yaWdodDogMzkuOHB4O1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMy44cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjb2xvcjogcmdiKDIyNCwyMjQsMjI0KTsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nOmFmdGVyLFxuLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZzphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMjMuOHB4O1xuICBoZWlnaHQ6IDIzLjhweDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3QsXG4ubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3Qge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1ib3R0b206IDMycHg7IH1cbiAgLm1kbC1tZWdhLWZvb3Rlci0tbGluay1saXN0OmFmdGVyLFxuICAubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3Q6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6ICcnOyB9XG5cbi5tZGwtbWVnYS1mb290ZXItLWxpbmstbGlzdCBsaSxcbi5tZGwtbWVnYS1mb290ZXJfX2xpbmstbGlzdCBsaSB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuICBsaW5lLWhlaWdodDogMjBweDsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3QgYSxcbi5tZGwtbWVnYS1mb290ZXJfX2xpbmstbGlzdCBhIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjBweCkge1xuICAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94LFxuICAubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nLWNoZWNrYm94IHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZy1jaGVja2JveCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmc6YWZ0ZXIsXG4gICAgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZy1jaGVja2JveCArIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmc6YWZ0ZXIsXG4gICAgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZy1jaGVja2JveCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmc6YWZ0ZXIsXG4gICAgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZy1jaGVja2JveCArIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmc6YWZ0ZXIge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgfVxuICAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgfiAubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3QsXG4gIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCB+IC5tZGwtbWVnYS1mb290ZXJfX2xpbmstbGlzdCxcbiAgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZy1jaGVja2JveDpjaGVja2VkICsgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZyArIC5tZGwtbWVnYS1mb290ZXJfX2xpbmstbGlzdCxcbiAgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZy1jaGVja2JveDpjaGVja2VkICsgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZyArIC5tZGwtbWVnYS1mb290ZXItLWxpbmstbGlzdCxcbiAgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZy1jaGVja2JveDpjaGVja2VkIH4gLm1kbC1tZWdhLWZvb3Rlci0tbGluay1saXN0LFxuICAubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQgfiAubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3QsXG4gIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmcgKyAubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3QsXG4gIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmcgKyAubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmc6YWZ0ZXIsXG4gIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmc6YWZ0ZXIsXG4gIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmc6YWZ0ZXIsXG4gIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCArIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmc6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnOyB9IH1cblxuLm1kbC1tZWdhLWZvb3Rlci0tYm90dG9tLXNlY3Rpb24sXG4ubWRsLW1lZ2EtZm9vdGVyX19ib3R0b20tc2VjdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAxNnB4O1xuICBtYXJnaW4tYm90dG9tOiAxNnB4OyB9XG5cbi5tZGwtbG9nbyB7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGNvbG9yOiB3aGl0ZTsgfVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1ib3R0b20tc2VjdGlvbiAubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3QgbGksXG4ubWRsLW1lZ2EtZm9vdGVyX19ib3R0b20tc2VjdGlvbiAubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3QgbGkge1xuICBmbG9hdDogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4OyB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gIC5tZGwtbG9nbyB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7IH0gfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLm1kbC1taW5pLWZvb3RlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgcGFkZGluZzogMzJweCAxNnB4O1xuICBjb2xvcjogcmdiKDE1OCwxNTgsMTU4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDY2LDY2LDY2KTsgfVxuICAubWRsLW1pbmktZm9vdGVyOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuICAubWRsLW1pbmktZm9vdGVyIC5tZGwtbG9nbyB7XG4gICAgbGluZS1oZWlnaHQ6IDM2cHg7IH1cblxuLm1kbC1taW5pLWZvb3Rlci0tbGluay1saXN0LFxuLm1kbC1taW5pLWZvb3Rlcl9fbGluay1saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7IH1cbiAgLm1kbC1taW5pLWZvb3Rlci0tbGluay1saXN0IGxpLFxuICAubWRsLW1pbmktZm9vdGVyX19saW5rLWxpc3QgbGkge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4OyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYwcHgpIHtcbiAgICAgIC5tZGwtbWluaS1mb290ZXItLWxpbmstbGlzdCBsaSxcbiAgICAgIC5tZGwtbWluaS1mb290ZXJfX2xpbmstbGlzdCBsaSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4OyB9IH1cbiAgLm1kbC1taW5pLWZvb3Rlci0tbGluay1saXN0IGEsXG4gIC5tZGwtbWluaS1mb290ZXJfX2xpbmstbGlzdCBhIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfVxuXG4ubWRsLW1pbmktZm9vdGVyLS1sZWZ0LXNlY3Rpb24sXG4ubWRsLW1pbmktZm9vdGVyX19sZWZ0LXNlY3Rpb24ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG9yZGVyOiAwOyB9XG5cbi5tZGwtbWluaS1mb290ZXItLXJpZ2h0LXNlY3Rpb24sXG4ubWRsLW1pbmktZm9vdGVyX19yaWdodC1zZWN0aW9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBvcmRlcjogMTsgfVxuXG4ubWRsLW1pbmktZm9vdGVyLS1zb2NpYWwtYnRuLFxuLm1kbC1taW5pLWZvb3Rlcl9fc29jaWFsLWJ0biB7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1OCwxNTgsMTU4KTtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNUWUxFIEdVSURFIFZBUklBQkxFUy0tLS0tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlc1xuICogLS0tLS1UeXBvZ3JhcGh5XG4gKiAtLS0tLUNvbG9yc1xuICogLS0tLS1UZXh0ZmllbGRcbiAqIC0tLS0tU3dpdGNoXG4gKiAtLS0tLVNwaW5uZXJcbiAqIC0tLS0tUmFkaW9cbiAqIC0tLS0tTWVudVxuICogLS0tLS1MaXN0XG4gKiAtLS0tLUxheW91dFxuICogLS0tLS1JY29uIHRvZ2dsZXNcbiAqIC0tLS0tRm9vdGVyXG4gKiAtLS0tLUNvbHVtblxuICogLS0tLS1DaGVja2JveFxuICogLS0tLS1DYXJkXG4gKiAtLS0tLUJ1dHRvblxuICogLS0tLS1BbmltYXRpb25cbiAqIC0tLS0tUHJvZ3Jlc3NcbiAqIC0tLS0tQmFkZ2VcbiAqIC0tLS0tU2hhZG93c1xuICogLS0tLS1HcmlkXG4gKiAtLS0tLURhdGEgdGFibGVcbiAqL1xuLyogPT09PT09PT09PSAgVFlQT0dSQVBIWSAgPT09PT09PT09PSAqL1xuLyogV2UncmUgc3BsaXR0aW5nIGZvbnRzIGludG8gXCJwcmVmZXJyZWRcIiBhbmQgXCJwZXJmb3JtYW5jZVwiIGluIG9yZGVyIHRvIG9wdGltaXplXG4gICBwYWdlIGxvYWRpbmcuIEZvciBpbXBvcnRhbnQgdGV4dCwgc3VjaCBhcyB0aGUgYm9keSwgd2Ugd2FudCBpdCB0byBsb2FkXG4gICBpbW1lZGlhdGVseSBhbmQgbm90IHdhaXQgZm9yIHRoZSB3ZWIgZm9udCBsb2FkLCB3aGVyZWFzIGZvciBvdGhlciBzZWN0aW9ucyxcbiAgIHN1Y2ggYXMgaGVhZGVycyBhbmQgdGl0bGVzLCB3ZSdyZSBPSyB3aXRoIHRoaW5ncyB0YWtpbmcgYSBiaXQgbG9uZ2VyIHRvIGxvYWQuXG4gICBXZSBkbyBoYXZlIHNvbWUgb3B0aW9uYWwgY2xhc3NlcyBhbmQgcGFyYW1ldGVycyBpbiB0aGUgbWl4aW5zLCBpbiBjYXNlIHlvdVxuICAgZGVmaW5pdGVseSB3YW50IHRvIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgdGhlIHByZWZlcnJlZCBmb250IGFuZCBkb24ndCBtaW5kXG4gICB0aGUgcGVyZm9ybWFuY2UgaGl0LlxuICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gaW1wcm92ZSBvbiB0aGlzIG9uY2UgQ1NTIEZvbnQgTG9hZGluZyBMMyBiZWNvbWVzIG1vcmVcbiAgIHdpZGVseSBhdmFpbGFibGUuXG4qL1xuLyogPT09PT09PT09PSAgQ09MT1JTICA9PT09PT09PT09ICovXG4vKipcbipcbiogTWF0ZXJpYWwgZGVzaWduIGNvbG9yIHBhbGV0dGVzLlxuKiBAc2VlIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9kZXNpZ24vc3BlYy9zdHlsZS9jb2xvci5odG1sXG4qXG4qKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBDb2xvciBQYWxldHRlcyAgPT09PT09PT09PSAqL1xuLyogY29sb3JzLnNjc3MgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUeXBvZ3JhcGh5ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb21wb25lbnRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTdGFuZGFyZCBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJY29uIFRvZ2dsZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJhZGlvIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJpcHBsZSBlZmZlY3QgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDaGVja2JveGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTd2l0Y2hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3Bpbm5lciAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENhcmQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNsaWRlcnMgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEl0ZW0gPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUb29sdGlwcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRm9vdGVyICA9PT09PT09PT09ICovXG4vKiBURVhURklFTEQgKi9cbi8qIFNXSVRDSCAqL1xuLyogU1BJTk5FUiAqL1xuLyogUkFESU8gKi9cbi8qIE1FTlUgKi9cbi8qIExJU1QgKi9cbi8qIExBWU9VVCAqL1xuLyogSUNPTiBUT0dHTEUgKi9cbi8qIEZPT1RFUiAqL1xuLyptZWdhLWZvb3RlciovXG4vKm1pbmktZm9vdGVyKi9cbi8qIENIRUNLQk9YICovXG4vKiBDQVJEICovXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbi8qIENvdmVyIGltYWdlICovXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbi8qIEFOSU1BVElPTiAqL1xuLyogUFJPR1JFU1MgKi9cbi8qIEJBREdFICovXG4vKiBTSEFET1dTICovXG4vKiBHUklEICovXG4vKiBEQVRBIFRBQkxFICovXG4vKiBUT09MVElQICovXG4ubWRsLWljb24tdG9nZ2xlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMzJweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi5tZGwtaWNvbi10b2dnbGVfX2lucHV0IHtcbiAgbGluZS1oZWlnaHQ6IDMycHg7IH1cbiAgLm1kbC1pY29uLXRvZ2dsZS5pcy11cGdyYWRlZCAubWRsLWljb24tdG9nZ2xlX19pbnB1dCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC1tcy1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7IH1cblxuLm1kbC1pY29uLXRvZ2dsZV9fbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDMycHg7XG4gIHdpZHRoOiAzMnB4O1xuICBtaW4td2lkdGg6IDMycHg7XG4gIGNvbG9yOiByZ2IoOTcsOTcsOTcpO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHdpbGwtY2hhbmdlOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgY29sb3IgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG4gIC5tZGwtaWNvbi10b2dnbGVfX2xhYmVsLm1hdGVyaWFsLWljb25zIHtcbiAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICBmb250LXNpemU6IDI0cHg7IH1cbiAgLm1kbC1pY29uLXRvZ2dsZS5pcy1jaGVja2VkIC5tZGwtaWNvbi10b2dnbGVfX2xhYmVsIHtcbiAgICBjb2xvcjogcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1pY29uLXRvZ2dsZS5pcy1kaXNhYmxlZCAubWRsLWljb24tdG9nZ2xlX19sYWJlbCB7XG4gICAgY29sb3I6IHJnYmEoMCwwLDAsIDAuMjYpO1xuICAgIGN1cnNvcjogYXV0bztcbiAgICB0cmFuc2l0aW9uOiBub25lOyB9XG4gIC5tZGwtaWNvbi10b2dnbGUuaXMtZm9jdXNlZCAubWRsLWljb24tdG9nZ2xlX19sYWJlbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwgMC4xMik7IH1cbiAgLm1kbC1pY29uLXRvZ2dsZS5pcy1mb2N1c2VkLmlzLWNoZWNrZWQgLm1kbC1pY29uLXRvZ2dsZV9fbGFiZWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNjMsODEsMTgxLCAwLjI2KTsgfVxuXG4ubWRsLWljb24tdG9nZ2xlX19yaXBwbGUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IC0ycHg7XG4gIGxlZnQ6IC0ycHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAzNnB4O1xuICBoZWlnaHQ6IDM2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgd2hpdGUsIGJsYWNrKTsgfVxuICAubWRsLWljb24tdG9nZ2xlX19yaXBwbGUtY29udGFpbmVyIC5tZGwtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoOTcsOTcsOTcpOyB9XG4gIC5tZGwtaWNvbi10b2dnbGUuaXMtZGlzYWJsZWQgLm1kbC1pY29uLXRvZ2dsZV9fcmlwcGxlLWNvbnRhaW5lciB7XG4gICAgY3Vyc29yOiBhdXRvOyB9XG4gIC5tZGwtaWNvbi10b2dnbGUuaXMtZGlzYWJsZWQgLm1kbC1pY29uLXRvZ2dsZV9fcmlwcGxlLWNvbnRhaW5lciAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRDT05URU5UU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU1RZTEUgR1VJREUgVkFSSUFCTEVTLS0tLS0tLS0tLS0tLS0tLS0tRGVjbGFyYXRpb25zIG9mIFNhc3MgdmFyaWFibGVzXG4gKiAtLS0tLVR5cG9ncmFwaHlcbiAqIC0tLS0tQ29sb3JzXG4gKiAtLS0tLVRleHRmaWVsZFxuICogLS0tLS1Td2l0Y2hcbiAqIC0tLS0tU3Bpbm5lclxuICogLS0tLS1SYWRpb1xuICogLS0tLS1NZW51XG4gKiAtLS0tLUxpc3RcbiAqIC0tLS0tTGF5b3V0XG4gKiAtLS0tLUljb24gdG9nZ2xlc1xuICogLS0tLS1Gb290ZXJcbiAqIC0tLS0tQ29sdW1uXG4gKiAtLS0tLUNoZWNrYm94XG4gKiAtLS0tLUNhcmRcbiAqIC0tLS0tQnV0dG9uXG4gKiAtLS0tLUFuaW1hdGlvblxuICogLS0tLS1Qcm9ncmVzc1xuICogLS0tLS1CYWRnZVxuICogLS0tLS1TaGFkb3dzXG4gKiAtLS0tLUdyaWRcbiAqIC0tLS0tRGF0YSB0YWJsZVxuICovXG4vKiA9PT09PT09PT09ICBUWVBPR1JBUEhZICA9PT09PT09PT09ICovXG4vKiBXZSdyZSBzcGxpdHRpbmcgZm9udHMgaW50byBcInByZWZlcnJlZFwiIGFuZCBcInBlcmZvcm1hbmNlXCIgaW4gb3JkZXIgdG8gb3B0aW1pemVcbiAgIHBhZ2UgbG9hZGluZy4gRm9yIGltcG9ydGFudCB0ZXh0LCBzdWNoIGFzIHRoZSBib2R5LCB3ZSB3YW50IGl0IHRvIGxvYWRcbiAgIGltbWVkaWF0ZWx5IGFuZCBub3Qgd2FpdCBmb3IgdGhlIHdlYiBmb250IGxvYWQsIHdoZXJlYXMgZm9yIG90aGVyIHNlY3Rpb25zLFxuICAgc3VjaCBhcyBoZWFkZXJzIGFuZCB0aXRsZXMsIHdlJ3JlIE9LIHdpdGggdGhpbmdzIHRha2luZyBhIGJpdCBsb25nZXIgdG8gbG9hZC5cbiAgIFdlIGRvIGhhdmUgc29tZSBvcHRpb25hbCBjbGFzc2VzIGFuZCBwYXJhbWV0ZXJzIGluIHRoZSBtaXhpbnMsIGluIGNhc2UgeW91XG4gICBkZWZpbml0ZWx5IHdhbnQgdG8gbWFrZSBzdXJlIHlvdSdyZSB1c2luZyB0aGUgcHJlZmVycmVkIGZvbnQgYW5kIGRvbid0IG1pbmRcbiAgIHRoZSBwZXJmb3JtYW5jZSBoaXQuXG4gICBXZSBzaG91bGQgYmUgYWJsZSB0byBpbXByb3ZlIG9uIHRoaXMgb25jZSBDU1MgRm9udCBMb2FkaW5nIEwzIGJlY29tZXMgbW9yZVxuICAgd2lkZWx5IGF2YWlsYWJsZS5cbiovXG4vKiA9PT09PT09PT09ICBDT0xPUlMgID09PT09PT09PT0gKi9cbi8qKlxuKlxuKiBNYXRlcmlhbCBkZXNpZ24gY29sb3IgcGFsZXR0ZXMuXG4qIEBzZWUgaHR0cDovL3d3dy5nb29nbGUuY29tL2Rlc2lnbi9zcGVjL3N0eWxlL2NvbG9yLmh0bWxcbipcbioqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIENvbG9yIFBhbGV0dGVzICA9PT09PT09PT09ICovXG4vKiBjb2xvcnMuc2NzcyAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIElNQUdFUyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgJiBUaGVtZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFR5cG9ncmFwaHkgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbXBvbmVudHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN0YW5kYXJkIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEljb24gVG9nZ2xlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmFkaW8gQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmlwcGxlIGVmZmVjdCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGF5b3V0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb250ZW50IFRhYnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENoZWNrYm94ZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN3aXRjaGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTcGlubmVyICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUZXh0IGZpZWxkcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2FyZCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU2xpZGVycyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09IFByb2dyZXNzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExpc3QgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSXRlbSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBEcm9wZG93biBtZW51ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRvb2x0aXBzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBGb290ZXIgID09PT09PT09PT0gKi9cbi8qIFRFWFRGSUVMRCAqL1xuLyogU1dJVENIICovXG4vKiBTUElOTkVSICovXG4vKiBSQURJTyAqL1xuLyogTUVOVSAqL1xuLyogTElTVCAqL1xuLyogTEFZT1VUICovXG4vKiBJQ09OIFRPR0dMRSAqL1xuLyogRk9PVEVSICovXG4vKm1lZ2EtZm9vdGVyKi9cbi8qbWluaS1mb290ZXIqL1xuLyogQ0hFQ0tCT1ggKi9cbi8qIENBUkQgKi9cbi8qIENhcmQgZGltZW5zaW9ucyAqL1xuLyogQ292ZXIgaW1hZ2UgKi9cbi8qIEJVVFRPTiAqL1xuLyoqXG4gKlxuICogRGltZW5zaW9uc1xuICpcbiAqL1xuLyogQU5JTUFUSU9OICovXG4vKiBQUk9HUkVTUyAqL1xuLyogQkFER0UgKi9cbi8qIFNIQURPV1MgKi9cbi8qIEdSSUQgKi9cbi8qIERBVEEgVEFCTEUgKi9cbi8qIFRPT0xUSVAgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUeXBvZ3JhcGh5ICovXG4vKiBTaGFkb3dzICovXG4vKiBBbmltYXRpb25zICovXG4ubWRsLW1lbnVfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB6LWluZGV4OiAtMTsgfVxuICAubWRsLW1lbnVfX2NvbnRhaW5lci5pcy12aXNpYmxlLCAubWRsLW1lbnVfX2NvbnRhaW5lci5pcy1hbmltYXRpbmcge1xuICAgIHotaW5kZXg6IDk5OTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9XG5cbi5tZGwtbWVudV9fb3V0bGluZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kOiByZ2IoMjU1LDI1NSwyNTUpO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xuICB6LWluZGV4OiAtMTsgfVxuICAubWRsLW1lbnVfX2NvbnRhaW5lci5pcy12aXNpYmxlIC5tZGwtbWVudV9fb3V0bGluZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIHotaW5kZXg6IDk5OTsgfVxuICAubWRsLW1lbnVfX291dGxpbmUubWRsLW1lbnUtLWJvdHRvbS1yaWdodCB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwOyB9XG4gIC5tZGwtbWVudV9fb3V0bGluZS5tZGwtbWVudS0tdG9wLWxlZnQge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IDAgMTAwJTsgfVxuICAubWRsLW1lbnVfX291dGxpbmUubWRsLW1lbnUtLXRvcC1yaWdodCB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAxMDAlOyB9XG5cbi5tZGwtbWVudSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xuICBtaW4td2lkdGg6IDEyNHB4O1xuICBwYWRkaW5nOiA4cHggMDtcbiAgbWFyZ2luOiAwO1xuICBvcGFjaXR5OiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICB6LWluZGV4OiAtMTsgfVxuICAubWRsLW1lbnVfX2NvbnRhaW5lci5pcy12aXNpYmxlIC5tZGwtbWVudSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB6LWluZGV4OiA5OTk7IH1cbiAgLm1kbC1tZW51LmlzLWFuaW1hdGluZyB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIGNsaXAgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG4gIC5tZGwtbWVudS5tZGwtbWVudS0tYm90dG9tLXJpZ2h0IHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiAwOyB9XG4gIC5tZGwtbWVudS5tZGwtbWVudS0tdG9wLWxlZnQge1xuICAgIHRvcDogYXV0bztcbiAgICBib3R0b206IDA7IH1cbiAgLm1kbC1tZW51Lm1kbC1tZW51LS10b3AtcmlnaHQge1xuICAgIHRvcDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIGJvdHRvbTogMDtcbiAgICByaWdodDogMDsgfVxuICAubWRsLW1lbnUubWRsLW1lbnUtLXVuYWxpZ25lZCB7XG4gICAgdG9wOiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87IH1cblxuLm1kbC1tZW51X19pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6IHJnYmEoMCwwLDAsIDAuODcpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIG91dGxpbmUtY29sb3I6IHJnYigxODksMTg5LDE4OSk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGxpbmUtaGVpZ2h0OiA0OHB4O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7IH1cbiAgLm1kbC1tZW51X19jb250YWluZXIuaXMtdmlzaWJsZSAubWRsLW1lbnVfX2l0ZW0ge1xuICAgIG9wYWNpdHk6IDE7IH1cbiAgLm1kbC1tZW51X19pdGVtOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBib3JkZXI6IDA7IH1cbiAgLm1kbC1tZW51X19pdGVtW2Rpc2FibGVkXSB7XG4gICAgY29sb3I6IHJnYigxODksMTg5LDE4OSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY3Vyc29yOiBhdXRvOyB9XG4gICAgLm1kbC1tZW51X19pdGVtW2Rpc2FibGVkXTpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAgIC5tZGwtbWVudV9faXRlbVtkaXNhYmxlZF06Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgICAubWRsLW1lbnVfX2l0ZW1bZGlzYWJsZWRdIC5tZGwtcmlwcGxlIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gIC5tZGwtbWVudV9faXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOCwyMzgsMjM4KTsgfVxuICAubWRsLW1lbnVfX2l0ZW06Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzOCwyMzgsMjM4KTsgfVxuICAubWRsLW1lbnVfX2l0ZW06YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjI0LDIyNCwyMjQpOyB9XG5cbi5tZGwtbWVudV9faXRlbS0tcmlwcGxlLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGxlZnQ6IDBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRDT05URU5UU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU1RZTEUgR1VJREUgVkFSSUFCTEVTLS0tLS0tLS0tLS0tLS0tLS0tRGVjbGFyYXRpb25zIG9mIFNhc3MgdmFyaWFibGVzXG4gKiAtLS0tLVR5cG9ncmFwaHlcbiAqIC0tLS0tQ29sb3JzXG4gKiAtLS0tLVRleHRmaWVsZFxuICogLS0tLS1Td2l0Y2hcbiAqIC0tLS0tU3Bpbm5lclxuICogLS0tLS1SYWRpb1xuICogLS0tLS1NZW51XG4gKiAtLS0tLUxpc3RcbiAqIC0tLS0tTGF5b3V0XG4gKiAtLS0tLUljb24gdG9nZ2xlc1xuICogLS0tLS1Gb290ZXJcbiAqIC0tLS0tQ29sdW1uXG4gKiAtLS0tLUNoZWNrYm94XG4gKiAtLS0tLUNhcmRcbiAqIC0tLS0tQnV0dG9uXG4gKiAtLS0tLUFuaW1hdGlvblxuICogLS0tLS1Qcm9ncmVzc1xuICogLS0tLS1CYWRnZVxuICogLS0tLS1TaGFkb3dzXG4gKiAtLS0tLUdyaWRcbiAqIC0tLS0tRGF0YSB0YWJsZVxuICovXG4vKiA9PT09PT09PT09ICBUWVBPR1JBUEhZICA9PT09PT09PT09ICovXG4vKiBXZSdyZSBzcGxpdHRpbmcgZm9udHMgaW50byBcInByZWZlcnJlZFwiIGFuZCBcInBlcmZvcm1hbmNlXCIgaW4gb3JkZXIgdG8gb3B0aW1pemVcbiAgIHBhZ2UgbG9hZGluZy4gRm9yIGltcG9ydGFudCB0ZXh0LCBzdWNoIGFzIHRoZSBib2R5LCB3ZSB3YW50IGl0IHRvIGxvYWRcbiAgIGltbWVkaWF0ZWx5IGFuZCBub3Qgd2FpdCBmb3IgdGhlIHdlYiBmb250IGxvYWQsIHdoZXJlYXMgZm9yIG90aGVyIHNlY3Rpb25zLFxuICAgc3VjaCBhcyBoZWFkZXJzIGFuZCB0aXRsZXMsIHdlJ3JlIE9LIHdpdGggdGhpbmdzIHRha2luZyBhIGJpdCBsb25nZXIgdG8gbG9hZC5cbiAgIFdlIGRvIGhhdmUgc29tZSBvcHRpb25hbCBjbGFzc2VzIGFuZCBwYXJhbWV0ZXJzIGluIHRoZSBtaXhpbnMsIGluIGNhc2UgeW91XG4gICBkZWZpbml0ZWx5IHdhbnQgdG8gbWFrZSBzdXJlIHlvdSdyZSB1c2luZyB0aGUgcHJlZmVycmVkIGZvbnQgYW5kIGRvbid0IG1pbmRcbiAgIHRoZSBwZXJmb3JtYW5jZSBoaXQuXG4gICBXZSBzaG91bGQgYmUgYWJsZSB0byBpbXByb3ZlIG9uIHRoaXMgb25jZSBDU1MgRm9udCBMb2FkaW5nIEwzIGJlY29tZXMgbW9yZVxuICAgd2lkZWx5IGF2YWlsYWJsZS5cbiovXG4vKiA9PT09PT09PT09ICBDT0xPUlMgID09PT09PT09PT0gKi9cbi8qKlxuKlxuKiBNYXRlcmlhbCBkZXNpZ24gY29sb3IgcGFsZXR0ZXMuXG4qIEBzZWUgaHR0cDovL3d3dy5nb29nbGUuY29tL2Rlc2lnbi9zcGVjL3N0eWxlL2NvbG9yLmh0bWxcbipcbioqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIENvbG9yIFBhbGV0dGVzICA9PT09PT09PT09ICovXG4vKiBjb2xvcnMuc2NzcyAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIElNQUdFUyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgJiBUaGVtZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFR5cG9ncmFwaHkgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbXBvbmVudHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN0YW5kYXJkIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEljb24gVG9nZ2xlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmFkaW8gQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmlwcGxlIGVmZmVjdCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGF5b3V0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb250ZW50IFRhYnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENoZWNrYm94ZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN3aXRjaGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTcGlubmVyICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUZXh0IGZpZWxkcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2FyZCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU2xpZGVycyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09IFByb2dyZXNzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExpc3QgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSXRlbSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBEcm9wZG93biBtZW51ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRvb2x0aXBzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBGb290ZXIgID09PT09PT09PT0gKi9cbi8qIFRFWFRGSUVMRCAqL1xuLyogU1dJVENIICovXG4vKiBTUElOTkVSICovXG4vKiBSQURJTyAqL1xuLyogTUVOVSAqL1xuLyogTElTVCAqL1xuLyogTEFZT1VUICovXG4vKiBJQ09OIFRPR0dMRSAqL1xuLyogRk9PVEVSICovXG4vKm1lZ2EtZm9vdGVyKi9cbi8qbWluaS1mb290ZXIqL1xuLyogQ0hFQ0tCT1ggKi9cbi8qIENBUkQgKi9cbi8qIENhcmQgZGltZW5zaW9ucyAqL1xuLyogQ292ZXIgaW1hZ2UgKi9cbi8qIEJVVFRPTiAqL1xuLyoqXG4gKlxuICogRGltZW5zaW9uc1xuICpcbiAqL1xuLyogQU5JTUFUSU9OICovXG4vKiBQUk9HUkVTUyAqL1xuLyogQkFER0UgKi9cbi8qIFNIQURPV1MgKi9cbi8qIEdSSUQgKi9cbi8qIERBVEEgVEFCTEUgKi9cbi8qIFRPT0xUSVAgKi9cbi5tZGwtcHJvZ3Jlc3Mge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDRweDtcbiAgd2lkdGg6IDUwMHB4OyB9XG5cbi5tZGwtcHJvZ3Jlc3MgPiAuYmFyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBib3R0b206IDA7XG4gIHdpZHRoOiAwJTtcbiAgdHJhbnNpdGlvbjogd2lkdGggMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG5cbi5tZGwtcHJvZ3Jlc3MgPiAucHJvZ3Jlc3NiYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjMsODEsMTgxKTtcbiAgei1pbmRleDogMTtcbiAgbGVmdDogMDsgfVxuXG4ubWRsLXByb2dyZXNzID4gLmJ1ZmZlcmJhciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsMjU1LDI1NSwgMC43KSwgcmdiYSgyNTUsMjU1LDI1NSwgMC43KSksIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiKDYzLDgxLDE4MSksIHJnYig2Myw4MSwxODEpKTtcbiAgei1pbmRleDogMDtcbiAgbGVmdDogMDsgfVxuXG4ubWRsLXByb2dyZXNzID4gLmF1eGJhciB7XG4gIHJpZ2h0OiAwOyB9XG5cbkBzdXBwb3J0cyAoLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lKSB7XG4gIC5tZGwtcHJvZ3Jlc3M6bm90KC5tZGwtcHJvZ3Jlc3NfX2luZGV0ZXJtaW5hdGUpOm5vdCgubWRsLXByb2dyZXNzX19pbmRldGVybWluYXRlKSA+IC5hdXhiYXIge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgyNTUsMjU1LDI1NSwgMC43KSwgcmdiYSgyNTUsMjU1LDI1NSwgMC43KSksIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiKDYzLDgxLDE4MSksIHJnYig2Myw4MSwxODEpKTtcbiAgICBtYXNrOiB1cmwoXCIvaW1hZ2VzL2J1ZmZlci5zdmc/ZW1iZWRcIik7IH0gfVxuXG4ubWRsLXByb2dyZXNzOm5vdCgubWRsLXByb2dyZXNzX19pbmRldGVybWluYXRlKSA+IC5hdXhiYXIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMjU1LDI1NSwyNTUsIDAuOSksIHJnYmEoMjU1LDI1NSwyNTUsIDAuOSkpLCBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYig2Myw4MSwxODEpLCByZ2IoNjMsODEsMTgxKSk7IH1cblxuLm1kbC1wcm9ncmVzcy5tZGwtcHJvZ3Jlc3NfX2luZGV0ZXJtaW5hdGUgPiAuYmFyMSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig2Myw4MSwxODEpO1xuICBhbmltYXRpb24tbmFtZTogaW5kZXRlcm1pbmF0ZTE7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cblxuLm1kbC1wcm9ncmVzcy5tZGwtcHJvZ3Jlc3NfX2luZGV0ZXJtaW5hdGUgPiAuYmFyMyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig2Myw4MSwxODEpO1xuICBhbmltYXRpb24tbmFtZTogaW5kZXRlcm1pbmF0ZTI7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7IH1cblxuQGtleWZyYW1lcyBpbmRldGVybWluYXRlMSB7XG4gIDAlIHtcbiAgICBsZWZ0OiAwJTtcbiAgICB3aWR0aDogMCU7IH1cbiAgNTAlIHtcbiAgICBsZWZ0OiAyNSU7XG4gICAgd2lkdGg6IDc1JTsgfVxuICA3NSUge1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgd2lkdGg6IDAlOyB9IH1cblxuQGtleWZyYW1lcyBpbmRldGVybWluYXRlMiB7XG4gIDAlIHtcbiAgICBsZWZ0OiAwJTtcbiAgICB3aWR0aDogMCU7IH1cbiAgNTAlIHtcbiAgICBsZWZ0OiAwJTtcbiAgICB3aWR0aDogMCU7IH1cbiAgNzUlIHtcbiAgICBsZWZ0OiAwJTtcbiAgICB3aWR0aDogMjUlOyB9XG4gIDEwMCUge1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgd2lkdGg6IDAlOyB9IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRDT05URU5UU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU1RZTEUgR1VJREUgVkFSSUFCTEVTLS0tLS0tLS0tLS0tLS0tLS0tRGVjbGFyYXRpb25zIG9mIFNhc3MgdmFyaWFibGVzXG4gKiAtLS0tLVR5cG9ncmFwaHlcbiAqIC0tLS0tQ29sb3JzXG4gKiAtLS0tLVRleHRmaWVsZFxuICogLS0tLS1Td2l0Y2hcbiAqIC0tLS0tU3Bpbm5lclxuICogLS0tLS1SYWRpb1xuICogLS0tLS1NZW51XG4gKiAtLS0tLUxpc3RcbiAqIC0tLS0tTGF5b3V0XG4gKiAtLS0tLUljb24gdG9nZ2xlc1xuICogLS0tLS1Gb290ZXJcbiAqIC0tLS0tQ29sdW1uXG4gKiAtLS0tLUNoZWNrYm94XG4gKiAtLS0tLUNhcmRcbiAqIC0tLS0tQnV0dG9uXG4gKiAtLS0tLUFuaW1hdGlvblxuICogLS0tLS1Qcm9ncmVzc1xuICogLS0tLS1CYWRnZVxuICogLS0tLS1TaGFkb3dzXG4gKiAtLS0tLUdyaWRcbiAqIC0tLS0tRGF0YSB0YWJsZVxuICovXG4vKiA9PT09PT09PT09ICBUWVBPR1JBUEhZICA9PT09PT09PT09ICovXG4vKiBXZSdyZSBzcGxpdHRpbmcgZm9udHMgaW50byBcInByZWZlcnJlZFwiIGFuZCBcInBlcmZvcm1hbmNlXCIgaW4gb3JkZXIgdG8gb3B0aW1pemVcbiAgIHBhZ2UgbG9hZGluZy4gRm9yIGltcG9ydGFudCB0ZXh0LCBzdWNoIGFzIHRoZSBib2R5LCB3ZSB3YW50IGl0IHRvIGxvYWRcbiAgIGltbWVkaWF0ZWx5IGFuZCBub3Qgd2FpdCBmb3IgdGhlIHdlYiBmb250IGxvYWQsIHdoZXJlYXMgZm9yIG90aGVyIHNlY3Rpb25zLFxuICAgc3VjaCBhcyBoZWFkZXJzIGFuZCB0aXRsZXMsIHdlJ3JlIE9LIHdpdGggdGhpbmdzIHRha2luZyBhIGJpdCBsb25nZXIgdG8gbG9hZC5cbiAgIFdlIGRvIGhhdmUgc29tZSBvcHRpb25hbCBjbGFzc2VzIGFuZCBwYXJhbWV0ZXJzIGluIHRoZSBtaXhpbnMsIGluIGNhc2UgeW91XG4gICBkZWZpbml0ZWx5IHdhbnQgdG8gbWFrZSBzdXJlIHlvdSdyZSB1c2luZyB0aGUgcHJlZmVycmVkIGZvbnQgYW5kIGRvbid0IG1pbmRcbiAgIHRoZSBwZXJmb3JtYW5jZSBoaXQuXG4gICBXZSBzaG91bGQgYmUgYWJsZSB0byBpbXByb3ZlIG9uIHRoaXMgb25jZSBDU1MgRm9udCBMb2FkaW5nIEwzIGJlY29tZXMgbW9yZVxuICAgd2lkZWx5IGF2YWlsYWJsZS5cbiovXG4vKiA9PT09PT09PT09ICBDT0xPUlMgID09PT09PT09PT0gKi9cbi8qKlxuKlxuKiBNYXRlcmlhbCBkZXNpZ24gY29sb3IgcGFsZXR0ZXMuXG4qIEBzZWUgaHR0cDovL3d3dy5nb29nbGUuY29tL2Rlc2lnbi9zcGVjL3N0eWxlL2NvbG9yLmh0bWxcbipcbioqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIENvbG9yIFBhbGV0dGVzICA9PT09PT09PT09ICovXG4vKiBjb2xvcnMuc2NzcyAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIElNQUdFUyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgJiBUaGVtZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFR5cG9ncmFwaHkgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbXBvbmVudHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN0YW5kYXJkIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEljb24gVG9nZ2xlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmFkaW8gQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmlwcGxlIGVmZmVjdCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGF5b3V0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb250ZW50IFRhYnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENoZWNrYm94ZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN3aXRjaGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTcGlubmVyICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUZXh0IGZpZWxkcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2FyZCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU2xpZGVycyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09IFByb2dyZXNzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExpc3QgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSXRlbSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBEcm9wZG93biBtZW51ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRvb2x0aXBzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBGb290ZXIgID09PT09PT09PT0gKi9cbi8qIFRFWFRGSUVMRCAqL1xuLyogU1dJVENIICovXG4vKiBTUElOTkVSICovXG4vKiBSQURJTyAqL1xuLyogTUVOVSAqL1xuLyogTElTVCAqL1xuLyogTEFZT1VUICovXG4vKiBJQ09OIFRPR0dMRSAqL1xuLyogRk9PVEVSICovXG4vKm1lZ2EtZm9vdGVyKi9cbi8qbWluaS1mb290ZXIqL1xuLyogQ0hFQ0tCT1ggKi9cbi8qIENBUkQgKi9cbi8qIENhcmQgZGltZW5zaW9ucyAqL1xuLyogQ292ZXIgaW1hZ2UgKi9cbi8qIEJVVFRPTiAqL1xuLyoqXG4gKlxuICogRGltZW5zaW9uc1xuICpcbiAqL1xuLyogQU5JTUFUSU9OICovXG4vKiBQUk9HUkVTUyAqL1xuLyogQkFER0UgKi9cbi8qIFNIQURPV1MgKi9cbi8qIEdSSUQgKi9cbi8qIERBVEEgVEFCTEUgKi9cbi8qIFRPT0xUSVAgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiBUeXBvZ3JhcGh5ICovXG4vKiBTaGFkb3dzICovXG4vKiBBbmltYXRpb25zICovXG4ubWRsLW5hdmlnYXRpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4ubWRsLW5hdmlnYXRpb25fX2xpbmsge1xuICBjb2xvcjogcmdiKDY2LDY2LDY2KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDEzcHg7XG4gIG1hcmdpbjogMDsgfVxuXG4ubWRsLWxheW91dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7IH1cblxuLm1kbC1sYXlvdXQuaXMtc21hbGwtc2NyZWVuIC5tZGwtbGF5b3V0LS1sYXJnZS1zY3JlZW4tb25seSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLm1kbC1sYXlvdXQ6bm90KC5pcy1zbWFsbC1zY3JlZW4pIC5tZGwtbGF5b3V0LS1zbWFsbC1zY3JlZW4tb25seSB7XG4gIGRpc3BsYXk6IG5vbmU7IH1cblxuLm1kbC1sYXlvdXRfX2NvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTsgfVxuXG4ubWRsLWxheW91dF9fdGl0bGUsXG4ubWRsLWxheW91dC10aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuLm1kbC1sYXlvdXQtc3BhY2VyIHtcbiAgZmxleC1ncm93OiAxOyB9XG5cbi5tZGwtbGF5b3V0X19kcmF3ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgd2lkdGg6IDI0MHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYigyMjQsMjI0LDIyNCk7XG4gIGJhY2tncm91bmQ6IHJnYigyNTAsMjUwLDI1MCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjUwcHgpO1xuICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICBjb2xvcjogcmdiKDY2LDY2LDY2KTtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHotaW5kZXg6IDU7IH1cbiAgLm1kbC1sYXlvdXRfX2RyYXdlci5pcy12aXNpYmxlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH1cbiAgICAubWRsLWxheW91dF9fZHJhd2VyLmlzLXZpc2libGUgfiAubWRsLWxheW91dF9fY29udGVudC5tZGwtbGF5b3V0X19jb250ZW50IHtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm1kbC1sYXlvdXRfX2RyYXdlciA+ICoge1xuICAgIGZsZXgtc2hyaW5rOiAwOyB9XG4gIC5tZGwtbGF5b3V0X19kcmF3ZXIgPiAubWRsLWxheW91dF9fdGl0bGUsXG4gIC5tZGwtbGF5b3V0X19kcmF3ZXIgPiAubWRsLWxheW91dC10aXRsZSB7XG4gICAgbGluZS1oZWlnaHQ6IDY0cHg7XG4gICAgcGFkZGluZy1sZWZ0OiA0MHB4OyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAubWRsLWxheW91dF9fZHJhd2VyID4gLm1kbC1sYXlvdXRfX3RpdGxlLFxuICAgICAgLm1kbC1sYXlvdXRfX2RyYXdlciA+IC5tZGwtbGF5b3V0LXRpdGxlIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDU2cHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMTZweDsgfSB9XG4gIC5tZGwtbGF5b3V0X19kcmF3ZXIgLm1kbC1uYXZpZ2F0aW9uIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIHBhZGRpbmctdG9wOiAxNnB4OyB9XG4gICAgLm1kbC1sYXlvdXRfX2RyYXdlciAubWRsLW5hdmlnYXRpb24gLm1kbC1uYXZpZ2F0aW9uX19saW5rIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBwYWRkaW5nOiAxNnB4IDQwcHg7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBjb2xvcjogIzc1NzU3NTsgfVxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAgIC5tZGwtbGF5b3V0X19kcmF3ZXIgLm1kbC1uYXZpZ2F0aW9uIC5tZGwtbmF2aWdhdGlvbl9fbGluayB7XG4gICAgICAgICAgcGFkZGluZzogMTZweCAxNnB4OyB9IH1cbiAgICAgIC5tZGwtbGF5b3V0X19kcmF3ZXIgLm1kbC1uYXZpZ2F0aW9uIC5tZGwtbmF2aWdhdGlvbl9fbGluazpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjQsMjI0LDIyNCk7IH1cbiAgICAgIC5tZGwtbGF5b3V0X19kcmF3ZXIgLm1kbC1uYXZpZ2F0aW9uIC5tZGwtbmF2aWdhdGlvbl9fbGluay0tY3VycmVudCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigwLDAsMCk7XG4gICAgICAgIGNvbG9yOiByZ2IoMjI0LDIyNCwyMjQpOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjVweCkge1xuICAgIC5tZGwtbGF5b3V0LS1maXhlZC1kcmF3ZXIgPiAubWRsLWxheW91dF9fZHJhd2VyIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsgfSB9XG5cbi5tZGwtbGF5b3V0X19kcmF3ZXItYnV0dG9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiA0OHB4O1xuICB3aWR0aDogNDhweDtcbiAgYm9yZGVyOiAwO1xuICBmbGV4LXNocmluazogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMjZweDtcbiAgbGluZS1oZWlnaHQ6IDUwcHg7XG4gIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICBtYXJnaW46IDEwcHggMTJweDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBjb2xvcjogcmdiKDI1NSwyNTUsMjU1KTtcbiAgei1pbmRleDogNDsgfVxuICAubWRsLWxheW91dF9faGVhZGVyIC5tZGwtbGF5b3V0X19kcmF3ZXItYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDsgfVxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgICAgLm1kbC1sYXlvdXRfX2hlYWRlciAubWRsLWxheW91dF9fZHJhd2VyLWJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbjogNHB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgLm1kbC1sYXlvdXRfX2RyYXdlci1idXR0b24ge1xuICAgICAgbWFyZ2luOiA0cHg7XG4gICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNXB4KSB7XG4gICAgLm1kbC1sYXlvdXQtLWZpeGVkLWRyYXdlciA+IC5tZGwtbGF5b3V0X19kcmF3ZXItYnV0dG9uIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7IH0gfVxuXG4ubWRsLWxheW91dF9faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZmxleC13cmFwOiBub3dyYXA7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgbWluLWhlaWdodDogNjRweDtcbiAgbWF4LWhlaWdodDogMTAwMHB4O1xuICB6LWluZGV4OiAzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjMsODEsMTgxKTtcbiAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IG1heC1oZWlnaHQsIGJveC1zaGFkb3c7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgLm1kbC1sYXlvdXRfX2hlYWRlciB7XG4gICAgICBtaW4taGVpZ2h0OiA1NnB4OyB9IH1cbiAgLm1kbC1sYXlvdXQtLWZpeGVkLWRyYXdlci5pcy11cGdyYWRlZDpub3QoLmlzLXNtYWxsLXNjcmVlbikgPiAubWRsLWxheW91dF9faGVhZGVyIHtcbiAgICBtYXJnaW4tbGVmdDogMjQwcHg7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDI0MHB4KTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI1cHgpIHtcbiAgICAubWRsLWxheW91dC0tZml4ZWQtZHJhd2VyID4gLm1kbC1sYXlvdXRfX2hlYWRlciAubWRsLWxheW91dF9faGVhZGVyLXJvdyB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7IH0gfVxuICAubWRsLWxheW91dF9faGVhZGVyID4gLm1kbC1sYXlvdXQtaWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDQwcHg7XG4gICAgdG9wOiAxNnB4O1xuICAgIGhlaWdodDogMzJweDtcbiAgICB3aWR0aDogMzJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHotaW5kZXg6IDM7XG4gICAgZGlzcGxheTogYmxvY2s7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIC5tZGwtbGF5b3V0X19oZWFkZXIgPiAubWRsLWxheW91dC1pY29uIHtcbiAgICAgICAgbGVmdDogMTZweDtcbiAgICAgICAgdG9wOiAxMnB4OyB9IH1cbiAgLm1kbC1sYXlvdXQuaGFzLWRyYXdlciAubWRsLWxheW91dF9faGVhZGVyID4gLm1kbC1sYXlvdXQtaWNvbiB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAubWRsLWxheW91dF9faGVhZGVyLmlzLWNvbXBhY3Qge1xuICAgIG1heC1oZWlnaHQ6IDY0cHg7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIC5tZGwtbGF5b3V0X19oZWFkZXIuaXMtY29tcGFjdCB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDU2cHg7IH0gfVxuICAubWRsLWxheW91dF9faGVhZGVyLmlzLWNvbXBhY3QuaGFzLXRhYnMge1xuICAgIGhlaWdodDogMTEycHg7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIC5tZGwtbGF5b3V0X19oZWFkZXIuaXMtY29tcGFjdC5oYXMtdGFicyB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDEwNHB4OyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgLm1kbC1sYXlvdXRfX2hlYWRlciB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9XG4gICAgLm1kbC1sYXlvdXQtLWZpeGVkLWhlYWRlciA+IC5tZGwtbGF5b3V0X19oZWFkZXIge1xuICAgICAgZGlzcGxheTogZmxleDsgfSB9XG5cbi5tZGwtbGF5b3V0X19oZWFkZXItLXRyYW5zcGFyZW50Lm1kbC1sYXlvdXRfX2hlYWRlci0tdHJhbnNwYXJlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm94LXNoYWRvdzogbm9uZTsgfVxuXG4ubWRsLWxheW91dF9faGVhZGVyLS1zZWFtZWQge1xuICBib3gtc2hhZG93OiBub25lOyB9XG5cbi5tZGwtbGF5b3V0X19oZWFkZXItLXNjcm9sbCB7XG4gIGJveC1zaGFkb3c6IG5vbmU7IH1cblxuLm1kbC1sYXlvdXRfX2hlYWRlci0td2F0ZXJmYWxsIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAubWRsLWxheW91dF9faGVhZGVyLS13YXRlcmZhbGwuaXMtY2FzdGluZy1zaGFkb3cge1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRsLWxheW91dF9faGVhZGVyLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBmbGV4LXNocmluazogMDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgaGVpZ2h0OiA2NHB4O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAgNDBweCAwIDgwcHg7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgLm1kbC1sYXlvdXRfX2hlYWRlci1yb3cge1xuICAgICAgaGVpZ2h0OiA1NnB4O1xuICAgICAgcGFkZGluZzogMCAxNnB4IDAgNzJweDsgfSB9XG4gIC5tZGwtbGF5b3V0X19oZWFkZXItcm93ID4gKiB7XG4gICAgZmxleC1zaHJpbms6IDA7IH1cbiAgLm1kbC1sYXlvdXRfX2hlYWRlci0tc2Nyb2xsIC5tZGwtbGF5b3V0X19oZWFkZXItcm93IHtcbiAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWxheW91dF9faGVhZGVyLXJvdyAubWRsLW5hdmlnYXRpb24ge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGhlaWdodDogNjRweDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAgIC5tZGwtbGF5b3V0X19oZWFkZXItcm93IC5tZGwtbmF2aWdhdGlvbiB7XG4gICAgICAgIGhlaWdodDogNTZweDsgfSB9XG4gIC5tZGwtbGF5b3V0X19oZWFkZXItcm93IC5tZGwtbmF2aWdhdGlvbl9fbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7XG4gICAgbGluZS1oZWlnaHQ6IDY0cHg7XG4gICAgcGFkZGluZzogMCAyNHB4OyB9XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gICAgICAubWRsLWxheW91dF9faGVhZGVyLXJvdyAubWRsLW5hdmlnYXRpb25fX2xpbmsge1xuICAgICAgICBsaW5lLWhlaWdodDogNTZweDtcbiAgICAgICAgcGFkZGluZzogMCAxNnB4OyB9IH1cblxuLm1kbC1sYXlvdXRfX29iZnVzY2F0b3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDQ7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7IH1cbiAgLm1kbC1sYXlvdXRfX29iZnVzY2F0b3IuaXMtdmlzaWJsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7IH1cblxuLm1kbC1sYXlvdXRfX2NvbnRlbnQge1xuICAtbXMtZmxleDogMCAxIGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBmbGV4LWdyb3c6IDE7XG4gIHotaW5kZXg6IDE7XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfVxuICAubWRsLWxheW91dC0tZml4ZWQtZHJhd2VyID4gLm1kbC1sYXlvdXRfX2NvbnRlbnQge1xuICAgIG1hcmdpbi1sZWZ0OiAyNDBweDsgfVxuICAubWRsLWxheW91dF9fY29udGFpbmVyLmhhcy1zY3JvbGxpbmctaGVhZGVyIC5tZGwtbGF5b3V0X19jb250ZW50IHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAubWRsLWxheW91dC0tZml4ZWQtZHJhd2VyID4gLm1kbC1sYXlvdXRfX2NvbnRlbnQge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7IH1cbiAgICAubWRsLWxheW91dF9fY29udGFpbmVyLmhhcy1zY3JvbGxpbmctaGVhZGVyIC5tZGwtbGF5b3V0X19jb250ZW50IHtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBvdmVyZmxvdy14OiBoaWRkZW47IH0gfVxuXG4ubWRsLWxheW91dF9fdGFiLWJhciB7XG4gIGhlaWdodDogOTZweDtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogY2FsYygxMDAlIC0gMTEycHgpO1xuICBwYWRkaW5nOiAwIDAgMCA1NnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNjMsODEsMTgxKTtcbiAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICBvdmVyZmxvdy14OiBzY3JvbGw7IH1cbiAgLm1kbC1sYXlvdXRfX3RhYi1iYXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAgIC5tZGwtbGF5b3V0X190YWItYmFyIHtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2MHB4KTtcbiAgICAgIHBhZGRpbmc6IDAgMCAwIDYwcHg7IH0gfVxuICAubWRsLWxheW91dC0tZml4ZWQtdGFicyAubWRsLWxheW91dF9fdGFiLWJhciB7XG4gICAgcGFkZGluZzogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdpZHRoOiAxMDAlOyB9XG5cbi5tZGwtbGF5b3V0X190YWItYmFyLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiA0OHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyOiBub25lO1xuICBtYXJnaW46IDA7XG4gIHotaW5kZXg6IDI7XG4gIGZsZXgtZ3JvdzogMDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm1kbC1sYXlvdXRfX2NvbnRhaW5lciA+IC5tZGwtbGF5b3V0X190YWItYmFyLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwOyB9XG5cbi5tZGwtbGF5b3V0X190YWItYmFyLWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGhlaWdodDogNDhweDtcbiAgd2lkdGg6IDU2cHg7XG4gIHotaW5kZXg6IDQ7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDYzLDgxLDE4MSk7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB1c2VyLXNlbGVjdDogbm9uZTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAubWRsLWxheW91dF9fdGFiLWJhci1idXR0b24ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHdpZHRoOiA2MHB4OyB9IH1cbiAgLm1kbC1sYXlvdXQtLWZpeGVkLXRhYnMgLm1kbC1sYXlvdXRfX3RhYi1iYXItYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gIC5tZGwtbGF5b3V0X190YWItYmFyLWJ1dHRvbiAubWF0ZXJpYWwtaWNvbnMge1xuICAgIGxpbmUtaGVpZ2h0OiA0OHB4OyB9XG4gIC5tZGwtbGF5b3V0X190YWItYmFyLWJ1dHRvbi5pcy1hY3RpdmUge1xuICAgIGNvbG9yOiByZ2IoMjU1LDI1NSwyNTUpOyB9XG5cbi5tZGwtbGF5b3V0X190YWItYmFyLWxlZnQtYnV0dG9uIHtcbiAgbGVmdDogMDsgfVxuXG4ubWRsLWxheW91dF9fdGFiLWJhci1yaWdodC1idXR0b24ge1xuICByaWdodDogMDsgfVxuXG4ubWRsLWxheW91dF9fdGFiIHtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDAgMjRweCAwIDI0cHg7XG4gIGZsb2F0OiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmbGV4LWdyb3c6IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGhlaWdodDogNDhweDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwgMC42KTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHtcbiAgICAubWRsLWxheW91dF9fdGFiIHtcbiAgICAgIHBhZGRpbmc6IDAgMTJweCAwIDEycHg7IH0gfVxuICAubWRsLWxheW91dC0tZml4ZWQtdGFicyAubWRsLWxheW91dF9fdGFiIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgcGFkZGluZzogMDsgfVxuICAubWRsLWxheW91dC5pcy11cGdyYWRlZCAubWRsLWxheW91dF9fdGFiLmlzLWFjdGl2ZSB7XG4gICAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7IH1cbiAgLm1kbC1sYXlvdXQuaXMtdXBncmFkZWQgLm1kbC1sYXlvdXRfX3RhYi5pcy1hY3RpdmU6OmFmdGVyIHtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZDogcmdiKDI1NSw2NCwxMjkpO1xuICAgIGFuaW1hdGlvbjogYm9yZGVyLWV4cGFuZCAwLjJzIGN1YmljLWJlemllcigwLjQsIDAsIDAuNCwgMSkgMC4wMXMgYWx0ZXJuYXRlIGZvcndhcmRzO1xuICAgIHRyYW5zaXRpb246IGFsbCAxcyBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKTsgfVxuICAubWRsLWxheW91dF9fdGFiIC5tZGwtbGF5b3V0X190YWItcmlwcGxlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICB6LWluZGV4OiAxO1xuICAgIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgICAubWRsLWxheW91dF9fdGFiIC5tZGwtbGF5b3V0X190YWItcmlwcGxlLWNvbnRhaW5lciAubWRsLXJpcHBsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LDI1NSwyNTUpOyB9XG5cbi5tZGwtbGF5b3V0X190YWItcGFuZWwge1xuICBkaXNwbGF5OiBibG9jazsgfVxuICAubWRsLWxheW91dC5pcy11cGdyYWRlZCAubWRsLWxheW91dF9fdGFiLXBhbmVsIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gIC5tZGwtbGF5b3V0LmlzLXVwZ3JhZGVkIC5tZGwtbGF5b3V0X190YWItcGFuZWwuaXMtYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jazsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFR5cG9ncmFwaHkgKi9cbi8qIFNoYWRvd3MgKi9cbi8qIEFuaW1hdGlvbnMgKi9cbi5tZGwtcmFkaW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7IH1cbiAgLm1kbC1yYWRpby5pcy11cGdyYWRlZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAyNHB4OyB9XG5cbi5tZGwtcmFkaW9fX2J1dHRvbiB7XG4gIGxpbmUtaGVpZ2h0OiAyNHB4OyB9XG4gIC5tZGwtcmFkaW8uaXMtdXBncmFkZWQgLm1kbC1yYWRpb19fYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTsgfVxuXG4ubWRsLXJhZGlvX19vdXRlci1jaXJjbGUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNHB4O1xuICBsZWZ0OiAwO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxNnB4O1xuICBoZWlnaHQ6IDE2cHg7XG4gIG1hcmdpbjogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsMCwwLCAwLjU0KTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB6LWluZGV4OiAyOyB9XG4gIC5tZGwtcmFkaW8uaXMtY2hlY2tlZCAubWRsLXJhZGlvX19vdXRlci1jaXJjbGUge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYig2Myw4MSwxODEpOyB9XG4gIC5tZGwtcmFkaW8uaXMtZGlzYWJsZWQgLm1kbC1yYWRpb19fb3V0ZXItY2lyY2xlIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgICBjdXJzb3I6IGF1dG87IH1cblxuLm1kbC1yYWRpb19faW5uZXItY2lyY2xlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxO1xuICBtYXJnaW46IDA7XG4gIHRvcDogOHB4O1xuICBsZWZ0OiA0cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiA4cHg7XG4gIGhlaWdodDogOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMjhzO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICB0cmFuc2Zvcm06IHNjYWxlM2QoMCwgMCwgMCk7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1yYWRpby5pcy1jaGVja2VkIC5tZGwtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpOyB9XG4gIC5tZGwtcmFkaW8uaXMtZGlzYWJsZWQgLm1kbC1yYWRpb19faW5uZXItY2lyY2xlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgICBjdXJzb3I6IGF1dG87IH1cbiAgLm1kbC1yYWRpby5pcy1mb2N1c2VkIC5tZGwtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTsgfVxuXG4ubWRsLXJhZGlvX19sYWJlbCB7XG4gIGN1cnNvcjogcG9pbnRlcjsgfVxuICAubWRsLXJhZGlvLmlzLWRpc2FibGVkIC5tZGwtcmFkaW9fX2xhYmVsIHtcbiAgICBjb2xvcjogcmdiYSgwLDAsMCwgMC4yNik7XG4gICAgY3Vyc29yOiBhdXRvOyB9XG5cbi5tZGwtcmFkaW9fX3JpcHBsZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogLTlweDtcbiAgbGVmdDogLTEzcHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiA0MnB4O1xuICBoZWlnaHQ6IDQycHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgd2hpdGUsIGJsYWNrKTsgfVxuICAubWRsLXJhZGlvX19yaXBwbGUtY29udGFpbmVyIC5tZGwtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2IoNjMsODEsMTgxKTsgfVxuICAubWRsLXJhZGlvLmlzLWRpc2FibGVkIC5tZGwtcmFkaW9fX3JpcHBsZS1jb250YWluZXIge1xuICAgIGN1cnNvcjogYXV0bzsgfVxuICAubWRsLXJhZGlvLmlzLWRpc2FibGVkIC5tZGwtcmFkaW9fX3JpcHBsZS1jb250YWluZXIgLm1kbC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNUWUxFIEdVSURFIFZBUklBQkxFUy0tLS0tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlc1xuICogLS0tLS1UeXBvZ3JhcGh5XG4gKiAtLS0tLUNvbG9yc1xuICogLS0tLS1UZXh0ZmllbGRcbiAqIC0tLS0tU3dpdGNoXG4gKiAtLS0tLVNwaW5uZXJcbiAqIC0tLS0tUmFkaW9cbiAqIC0tLS0tTWVudVxuICogLS0tLS1MaXN0XG4gKiAtLS0tLUxheW91dFxuICogLS0tLS1JY29uIHRvZ2dsZXNcbiAqIC0tLS0tRm9vdGVyXG4gKiAtLS0tLUNvbHVtblxuICogLS0tLS1DaGVja2JveFxuICogLS0tLS1DYXJkXG4gKiAtLS0tLUJ1dHRvblxuICogLS0tLS1BbmltYXRpb25cbiAqIC0tLS0tUHJvZ3Jlc3NcbiAqIC0tLS0tQmFkZ2VcbiAqIC0tLS0tU2hhZG93c1xuICogLS0tLS1HcmlkXG4gKiAtLS0tLURhdGEgdGFibGVcbiAqL1xuLyogPT09PT09PT09PSAgVFlQT0dSQVBIWSAgPT09PT09PT09PSAqL1xuLyogV2UncmUgc3BsaXR0aW5nIGZvbnRzIGludG8gXCJwcmVmZXJyZWRcIiBhbmQgXCJwZXJmb3JtYW5jZVwiIGluIG9yZGVyIHRvIG9wdGltaXplXG4gICBwYWdlIGxvYWRpbmcuIEZvciBpbXBvcnRhbnQgdGV4dCwgc3VjaCBhcyB0aGUgYm9keSwgd2Ugd2FudCBpdCB0byBsb2FkXG4gICBpbW1lZGlhdGVseSBhbmQgbm90IHdhaXQgZm9yIHRoZSB3ZWIgZm9udCBsb2FkLCB3aGVyZWFzIGZvciBvdGhlciBzZWN0aW9ucyxcbiAgIHN1Y2ggYXMgaGVhZGVycyBhbmQgdGl0bGVzLCB3ZSdyZSBPSyB3aXRoIHRoaW5ncyB0YWtpbmcgYSBiaXQgbG9uZ2VyIHRvIGxvYWQuXG4gICBXZSBkbyBoYXZlIHNvbWUgb3B0aW9uYWwgY2xhc3NlcyBhbmQgcGFyYW1ldGVycyBpbiB0aGUgbWl4aW5zLCBpbiBjYXNlIHlvdVxuICAgZGVmaW5pdGVseSB3YW50IHRvIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgdGhlIHByZWZlcnJlZCBmb250IGFuZCBkb24ndCBtaW5kXG4gICB0aGUgcGVyZm9ybWFuY2UgaGl0LlxuICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gaW1wcm92ZSBvbiB0aGlzIG9uY2UgQ1NTIEZvbnQgTG9hZGluZyBMMyBiZWNvbWVzIG1vcmVcbiAgIHdpZGVseSBhdmFpbGFibGUuXG4qL1xuLyogPT09PT09PT09PSAgQ09MT1JTICA9PT09PT09PT09ICovXG4vKipcbipcbiogTWF0ZXJpYWwgZGVzaWduIGNvbG9yIHBhbGV0dGVzLlxuKiBAc2VlIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9kZXNpZ24vc3BlYy9zdHlsZS9jb2xvci5odG1sXG4qXG4qKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBDb2xvciBQYWxldHRlcyAgPT09PT09PT09PSAqL1xuLyogY29sb3JzLnNjc3MgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUeXBvZ3JhcGh5ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb21wb25lbnRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTdGFuZGFyZCBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJY29uIFRvZ2dsZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJhZGlvIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJpcHBsZSBlZmZlY3QgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDaGVja2JveGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTd2l0Y2hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3Bpbm5lciAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENhcmQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNsaWRlcnMgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEl0ZW0gPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUb29sdGlwcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRm9vdGVyICA9PT09PT09PT09ICovXG4vKiBURVhURklFTEQgKi9cbi8qIFNXSVRDSCAqL1xuLyogU1BJTk5FUiAqL1xuLyogUkFESU8gKi9cbi8qIE1FTlUgKi9cbi8qIExJU1QgKi9cbi8qIExBWU9VVCAqL1xuLyogSUNPTiBUT0dHTEUgKi9cbi8qIEZPT1RFUiAqL1xuLyptZWdhLWZvb3RlciovXG4vKm1pbmktZm9vdGVyKi9cbi8qIENIRUNLQk9YICovXG4vKiBDQVJEICovXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbi8qIENvdmVyIGltYWdlICovXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbi8qIEFOSU1BVElPTiAqL1xuLyogUFJPR1JFU1MgKi9cbi8qIEJBREdFICovXG4vKiBTSEFET1dTICovXG4vKiBHUklEICovXG4vKiBEQVRBIFRBQkxFICovXG4vKiBUT09MVElQICovXG5fOi1tcy1pbnB1dC1wbGFjZWhvbGRlciwgOnJvb3QgLm1kbC1zbGlkZXIubWRsLXNsaWRlci5pcy11cGdyYWRlZCB7XG4gIC1tcy1hcHBlYXJhbmNlOiBub25lO1xuICBoZWlnaHQ6IDMycHg7XG4gIG1hcmdpbjogMDsgfVxuXG4ubWRsLXNsaWRlciB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA0MHB4KTtcbiAgbWFyZ2luOiAwIDIwcHg7IH1cbiAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgb3V0bGluZTogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiByZ2IoNjMsODEsMTgxKTtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgei1pbmRleDogMTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVHJhY2tzICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVGh1bWJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogMC12YWx1ZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqIERpc2FibGVkICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovIH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZDo6LW1vei1mb2N1cy1vdXRlciB7XG4gICAgICBib3JkZXI6IDA7IH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZDo6LW1zLXRvb2x0aXAge1xuICAgICAgZGlzcGxheTogbm9uZTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6Oi1tcy10cmFjayB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJvcmRlcjogbm9uZTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQgMTZweCwgcmdiKDYzLDgxLDE4MSkgMTZweCwgcmdiKDYzLDgxLDE4MSkgMCk7IH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZDo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBsZWZ0LCB0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQgMTZweCwgcmdiYSgwLDAsMCwgMC4yNikgMTZweCwgcmdiYSgwLDAsMCwgMC4yNikgMCk7IH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgd2lkdGg6IDEycHg7XG4gICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZDogcmdiKDYzLDgxLDE4MSk7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xOHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgYm9yZGVyIDAuMThzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIGJveC1zaGFkb3cgMC4xOHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgYmFja2dyb3VuZCAwLjI4cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgd2lkdGg6IDEycHg7XG4gICAgICBoZWlnaHQ6IDEycHg7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYig2Myw4MSwxODEpO1xuICAgICAgYm9yZGVyOiBub25lOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6Zm9jdXM6bm90KDphY3RpdmUpOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoNjMsODEsMTgxLCAwLjI2KTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmZvY3VzOm5vdCg6YWN0aXZlKTo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAxMHB4IHJnYmEoNjMsODEsMTgxLCAwLjI2KTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmFjdGl2ZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYig2Myw4MSwxODEpO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6YWN0aXZlOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2IoNjMsODEsMTgxKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOjotbXMtdGh1bWIge1xuICAgICAgd2lkdGg6IDMycHg7XG4gICAgICBoZWlnaHQ6IDMycHg7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2IoNjMsODEsMTgxKTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4zNzUpO1xuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMThzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIGJhY2tncm91bmQgMC4yOHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmZvY3VzOm5vdCg6YWN0aXZlKTo6LW1zLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLCByZ2IoNjMsODEsMTgxKSAwJSwgcmdiKDYzLDgxLDE4MSkgMzcuNSUsIHJnYmEoNjMsODEsMTgxLCAwLjI2KSAzNy41JSwgcmdiYSg2Myw4MSwxODEsIDAuMjYpIDEwMCUpO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmFjdGl2ZTo6LW1zLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYig2Myw4MSwxODEpO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjU2MjUpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMCwwLDAsIDAuMjYpO1xuICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZC5pcy1sb3dlc3QtdmFsdWUgK1xuLm1kbC1zbGlkZXJfX2JhY2tncm91bmQtZmxleCA+IC5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLXVwcGVyIHtcbiAgICAgIGxlZnQ6IDZweDsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTpmb2N1czpub3QoOmFjdGl2ZSk6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggcmdiYSgwLDAsMCwgMC4xMik7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLCAwLjEyKTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTpmb2N1czpub3QoOmFjdGl2ZSk6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDAsMCwwLCAwLjEyKTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsIDAuMTIpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmFjdGl2ZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgYm9yZGVyOiAxLjZweCBzb2xpZCByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTphY3RpdmUgK1xuLm1kbC1zbGlkZXJfX2JhY2tncm91bmQtZmxleCA+IC5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLXVwcGVyIHtcbiAgICAgIGxlZnQ6IDlweDsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTphY3RpdmU6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTo6LW1zLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLCB0cmFuc3BhcmVudCAwJSwgdHJhbnNwYXJlbnQgNjYuNjclLCByZ2JhKDAsMCwwLCAwLjI2KSA2Ni42NyUsIHJnYmEoMCwwLDAsIDAuMjYpIDEwMCUpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmZvY3VzOm5vdCg6YWN0aXZlKTo6LW1zLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLCByZ2JhKDAsMCwwLCAwLjEyKSAwJSwgcmdiYSgwLDAsMCwgMC4xMikgMjUlLCByZ2JhKDAsMCwwLCAwLjI2KSAyNSUsIHJnYmEoMCwwLDAsIDAuMjYpIDM3LjUlLCByZ2JhKDAsMCwwLCAwLjEyKSAzNy41JSwgcmdiYSgwLDAsMCwgMC4xMikgMTAwJSk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmFjdGl2ZTo6LW1zLXRodW1iIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NjI1KTtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLCB0cmFuc3BhcmVudCAwJSwgdHJhbnNwYXJlbnQgNzcuNzglLCByZ2JhKDAsMCwwLCAwLjI2KSA3Ny43OCUsIHJnYmEoMCwwLDAsIDAuMjYpIDEwMCUpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgbWFyZ2luLWxlZnQ6IDZweDsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTphY3RpdmU6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA5cHg7IH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZDpkaXNhYmxlZDpmb2N1czo6LXdlYmtpdC1zbGlkZXItdGh1bWIsIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmRpc2FibGVkOmFjdGl2ZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIsIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmRpc2FibGVkOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNjY3KTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsIDAuMjYpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6ZGlzYWJsZWQ6Zm9jdXM6Oi1tb3otcmFuZ2UtdGh1bWIsIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmRpc2FibGVkOmFjdGl2ZTo6LW1vei1yYW5nZS10aHVtYiwgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjY2Nyk7XG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLCAwLjI2KTsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmRpc2FibGVkICtcbi5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLWZsZXggPiAubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgICAgIGxlZnQ6IC02cHg7IH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZDpkaXNhYmxlZCArXG4ubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1mbGV4ID4gLm1kbC1zbGlkZXJfX2JhY2tncm91bmQtdXBwZXIge1xuICAgICAgbGVmdDogNnB4OyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmZvY3VzOjotd2Via2l0LXNsaWRlci10aHVtYiwgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmFjdGl2ZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIsIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTpkaXNhYmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgwLDAsMCwgMC4yNik7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC42NjcpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmZvY3VzOjotbW96LXJhbmdlLXRodW1iLCAubWRsLXNsaWRlci5pcy11cGdyYWRlZC5pcy1sb3dlc3QtdmFsdWU6ZGlzYWJsZWQ6YWN0aXZlOjotbW96LXJhbmdlLXRodW1iLCAubWRsLXNsaWRlci5pcy11cGdyYWRlZC5pcy1sb3dlc3QtdmFsdWU6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgcmdiYSgwLDAsMCwgMC4yNik7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC42NjcpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmFjdGl2ZSArXG4ubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1mbGV4ID4gLm1kbC1zbGlkZXJfX2JhY2tncm91bmQtdXBwZXIge1xuICAgICAgbGVmdDogNnB4OyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6ZGlzYWJsZWQ6Zm9jdXM6Oi1tcy10aHVtYiwgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6ZGlzYWJsZWQ6YWN0aXZlOjotbXMtdGh1bWIsIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkOmRpc2FibGVkOjotbXMtdGh1bWIge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsIDAuMjYpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmZvY3VzOjotbXMtdGh1bWIsIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTpkaXNhYmxlZDphY3RpdmU6Oi1tcy10aHVtYiwgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOjotbXMtdGh1bWIge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjI1KTtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLCB0cmFuc3BhcmVudCAwJSwgdHJhbnNwYXJlbnQgNTAlLCByZ2JhKDAsMCwwLCAwLjI2KSA1MCUsIHJnYmEoMCwwLDAsIDAuMjYpIDEwMCUpOyB9XG4gICAgLm1kbC1zbGlkZXIuaXMtdXBncmFkZWQ6ZGlzYWJsZWQ6Oi1tcy1maWxsLWxvd2VyIHtcbiAgICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB0cmFuc3BhcmVudCwgdHJhbnNwYXJlbnQgMjVweCwgcmdiYSgwLDAsMCwgMC4yNikgMjVweCwgcmdiYSgwLDAsMCwgMC4yNikgMCk7IH1cbiAgICAubWRsLXNsaWRlci5pcy11cGdyYWRlZDpkaXNhYmxlZDo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgbWFyZ2luLWxlZnQ6IDZweDsgfVxuICAgIC5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkLmlzLWxvd2VzdC12YWx1ZTpkaXNhYmxlZDphY3RpdmU6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7IH1cblxuLm1kbC1zbGlkZXJfX2llLWNvbnRhaW5lciB7XG4gIGhlaWdodDogMThweDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGJvcmRlcjogbm9uZTtcbiAgbWFyZ2luOiBub25lO1xuICBwYWRkaW5nOiBub25lOyB9XG5cbi5tZGwtc2xpZGVyX19jb250YWluZXIge1xuICBoZWlnaHQ6IDE4cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdzsgfVxuXG4ubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1mbGV4IHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaGVpZ2h0OiAycHg7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSA1MnB4KTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDA7XG4gIG1hcmdpbjogMCAyNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xcHgpOyB9XG5cbi5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLWxvd2VyIHtcbiAgYmFja2dyb3VuZDogcmdiKDYzLDgxLDE4MSk7XG4gIGZsZXg6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwOyB9XG5cbi5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLXVwcGVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwgMC4yNik7XG4gIGZsZXg6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyOiAwO1xuICBwYWRkaW5nOiAwO1xuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMThzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7IH1cblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICRDT05URU5UU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxuICogU1RZTEUgR1VJREUgVkFSSUFCTEVTLS0tLS0tLS0tLS0tLS0tLS0tRGVjbGFyYXRpb25zIG9mIFNhc3MgdmFyaWFibGVzXG4gKiAtLS0tLVR5cG9ncmFwaHlcbiAqIC0tLS0tQ29sb3JzXG4gKiAtLS0tLVRleHRmaWVsZFxuICogLS0tLS1Td2l0Y2hcbiAqIC0tLS0tU3Bpbm5lclxuICogLS0tLS1SYWRpb1xuICogLS0tLS1NZW51XG4gKiAtLS0tLUxpc3RcbiAqIC0tLS0tTGF5b3V0XG4gKiAtLS0tLUljb24gdG9nZ2xlc1xuICogLS0tLS1Gb290ZXJcbiAqIC0tLS0tQ29sdW1uXG4gKiAtLS0tLUNoZWNrYm94XG4gKiAtLS0tLUNhcmRcbiAqIC0tLS0tQnV0dG9uXG4gKiAtLS0tLUFuaW1hdGlvblxuICogLS0tLS1Qcm9ncmVzc1xuICogLS0tLS1CYWRnZVxuICogLS0tLS1TaGFkb3dzXG4gKiAtLS0tLUdyaWRcbiAqIC0tLS0tRGF0YSB0YWJsZVxuICovXG4vKiA9PT09PT09PT09ICBUWVBPR1JBUEhZICA9PT09PT09PT09ICovXG4vKiBXZSdyZSBzcGxpdHRpbmcgZm9udHMgaW50byBcInByZWZlcnJlZFwiIGFuZCBcInBlcmZvcm1hbmNlXCIgaW4gb3JkZXIgdG8gb3B0aW1pemVcbiAgIHBhZ2UgbG9hZGluZy4gRm9yIGltcG9ydGFudCB0ZXh0LCBzdWNoIGFzIHRoZSBib2R5LCB3ZSB3YW50IGl0IHRvIGxvYWRcbiAgIGltbWVkaWF0ZWx5IGFuZCBub3Qgd2FpdCBmb3IgdGhlIHdlYiBmb250IGxvYWQsIHdoZXJlYXMgZm9yIG90aGVyIHNlY3Rpb25zLFxuICAgc3VjaCBhcyBoZWFkZXJzIGFuZCB0aXRsZXMsIHdlJ3JlIE9LIHdpdGggdGhpbmdzIHRha2luZyBhIGJpdCBsb25nZXIgdG8gbG9hZC5cbiAgIFdlIGRvIGhhdmUgc29tZSBvcHRpb25hbCBjbGFzc2VzIGFuZCBwYXJhbWV0ZXJzIGluIHRoZSBtaXhpbnMsIGluIGNhc2UgeW91XG4gICBkZWZpbml0ZWx5IHdhbnQgdG8gbWFrZSBzdXJlIHlvdSdyZSB1c2luZyB0aGUgcHJlZmVycmVkIGZvbnQgYW5kIGRvbid0IG1pbmRcbiAgIHRoZSBwZXJmb3JtYW5jZSBoaXQuXG4gICBXZSBzaG91bGQgYmUgYWJsZSB0byBpbXByb3ZlIG9uIHRoaXMgb25jZSBDU1MgRm9udCBMb2FkaW5nIEwzIGJlY29tZXMgbW9yZVxuICAgd2lkZWx5IGF2YWlsYWJsZS5cbiovXG4vKiA9PT09PT09PT09ICBDT0xPUlMgID09PT09PT09PT0gKi9cbi8qKlxuKlxuKiBNYXRlcmlhbCBkZXNpZ24gY29sb3IgcGFsZXR0ZXMuXG4qIEBzZWUgaHR0cDovL3d3dy5nb29nbGUuY29tL2Rlc2lnbi9zcGVjL3N0eWxlL2NvbG9yLmh0bWxcbipcbioqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIENvbG9yIFBhbGV0dGVzICA9PT09PT09PT09ICovXG4vKiBjb2xvcnMuc2NzcyAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qID09PT09PT09PT0gIElNQUdFUyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgJiBUaGVtZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFR5cG9ncmFwaHkgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbXBvbmVudHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN0YW5kYXJkIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEljb24gVG9nZ2xlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmFkaW8gQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgUmlwcGxlIGVmZmVjdCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGF5b3V0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb250ZW50IFRhYnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENoZWNrYm94ZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFN3aXRjaGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTcGlubmVyICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUZXh0IGZpZWxkcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2FyZCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU2xpZGVycyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09IFByb2dyZXNzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExpc3QgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSXRlbSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBEcm9wZG93biBtZW51ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRvb2x0aXBzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBGb290ZXIgID09PT09PT09PT0gKi9cbi8qIFRFWFRGSUVMRCAqL1xuLyogU1dJVENIICovXG4vKiBTUElOTkVSICovXG4vKiBSQURJTyAqL1xuLyogTUVOVSAqL1xuLyogTElTVCAqL1xuLyogTEFZT1VUICovXG4vKiBJQ09OIFRPR0dMRSAqL1xuLyogRk9PVEVSICovXG4vKm1lZ2EtZm9vdGVyKi9cbi8qbWluaS1mb290ZXIqL1xuLyogQ0hFQ0tCT1ggKi9cbi8qIENBUkQgKi9cbi8qIENhcmQgZGltZW5zaW9ucyAqL1xuLyogQ292ZXIgaW1hZ2UgKi9cbi8qIEJVVFRPTiAqL1xuLyoqXG4gKlxuICogRGltZW5zaW9uc1xuICpcbiAqL1xuLyogQU5JTUFUSU9OICovXG4vKiBQUk9HUkVTUyAqL1xuLyogQkFER0UgKi9cbi8qIFNIQURPV1MgKi9cbi8qIEdSSUQgKi9cbi8qIERBVEEgVEFCTEUgKi9cbi8qIFRPT0xUSVAgKi9cbi5tZGwtc3Bpbm5lciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMjhweDtcbiAgaGVpZ2h0OiAyOHB4OyB9XG4gIC5tZGwtc3Bpbm5lcjpub3QoLmlzLXVwZ3JhZGVkKS5pcy1hY3RpdmU6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiTG9hZGluZy4uLlwiOyB9XG4gIC5tZGwtc3Bpbm5lci5pcy11cGdyYWRlZC5pcy1hY3RpdmUge1xuICAgIGFuaW1hdGlvbjogbWRsLXNwaW5uZXJfX2NvbnRhaW5lci1yb3RhdGUgMTU2OC4yMzUyOW1zIGxpbmVhciBpbmZpbml0ZTsgfVxuXG5Aa2V5ZnJhbWVzIG1kbC1zcGlubmVyX19jb250YWluZXItcm90YXRlIHtcbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxuXG4ubWRsLXNwaW5uZXJfX2xheWVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvcGFjaXR5OiAwOyB9XG5cbi5tZGwtc3Bpbm5lcl9fbGF5ZXItMSB7XG4gIGJvcmRlci1jb2xvcjogcmdiKDY2LDE2NSwyNDUpOyB9XG4gIC5tZGwtc3Bpbm5lci0tc2luZ2xlLWNvbG9yIC5tZGwtc3Bpbm5lcl9fbGF5ZXItMSB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoNjMsODEsMTgxKTsgfVxuICAubWRsLXNwaW5uZXIuaXMtYWN0aXZlIC5tZGwtc3Bpbm5lcl9fbGF5ZXItMSB7XG4gICAgYW5pbWF0aW9uOiBtZGwtc3Bpbm5lcl9fZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIG1kbC1zcGlubmVyX19sYXllci0xLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7IH1cblxuLm1kbC1zcGlubmVyX19sYXllci0yIHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IoMjQ0LDY3LDU0KTsgfVxuICAubWRsLXNwaW5uZXItLXNpbmdsZS1jb2xvciAubWRsLXNwaW5uZXJfX2xheWVyLTIge1xuICAgIGJvcmRlci1jb2xvcjogcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1zcGlubmVyLmlzLWFjdGl2ZSAubWRsLXNwaW5uZXJfX2xheWVyLTIge1xuICAgIGFuaW1hdGlvbjogbWRsLXNwaW5uZXJfX2ZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBtZGwtc3Bpbm5lcl9fbGF5ZXItMi1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoOyB9XG5cbi5tZGwtc3Bpbm5lcl9fbGF5ZXItMyB7XG4gIGJvcmRlci1jb2xvcjogcmdiKDI1MywyMTYsNTMpOyB9XG4gIC5tZGwtc3Bpbm5lci0tc2luZ2xlLWNvbG9yIC5tZGwtc3Bpbm5lcl9fbGF5ZXItMyB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoNjMsODEsMTgxKTsgfVxuICAubWRsLXNwaW5uZXIuaXMtYWN0aXZlIC5tZGwtc3Bpbm5lcl9fbGF5ZXItMyB7XG4gICAgYW5pbWF0aW9uOiBtZGwtc3Bpbm5lcl9fZmlsbC11bmZpbGwtcm90YXRlIDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGgsIG1kbC1zcGlubmVyX19sYXllci0zLWZhZGUtaW4tb3V0IDUzMzJtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7IH1cblxuLm1kbC1zcGlubmVyX19sYXllci00IHtcbiAgYm9yZGVyLWNvbG9yOiByZ2IoNzYsMTc1LDgwKTsgfVxuICAubWRsLXNwaW5uZXItLXNpbmdsZS1jb2xvciAubWRsLXNwaW5uZXJfX2xheWVyLTQge1xuICAgIGJvcmRlci1jb2xvcjogcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1zcGlubmVyLmlzLWFjdGl2ZSAubWRsLXNwaW5uZXJfX2xheWVyLTQge1xuICAgIGFuaW1hdGlvbjogbWRsLXNwaW5uZXJfX2ZpbGwtdW5maWxsLXJvdGF0ZSA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoLCBtZGwtc3Bpbm5lcl9fbGF5ZXItNC1mYWRlLWluLW91dCA1MzMybXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSBpbmZpbml0ZSBib3RoOyB9XG5cbkBrZXlmcmFtZXMgbWRsLXNwaW5uZXJfX2ZpbGwtdW5maWxsLXJvdGF0ZSB7XG4gIDEyLjUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpOyB9XG4gIDI1JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKTsgfVxuICAzNy41JSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDA1ZGVnKTsgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDU0MGRlZyk7IH1cbiAgNjIuNSUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDY3NWRlZyk7IH1cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg4MTBkZWcpOyB9XG4gIDg3LjUlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpOyB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMDgwZGVnKTsgfSB9XG5cbi8qKlxuKiBIQUNLOiBFdmVuIHRob3VnaCB0aGUgaW50ZW50aW9uIGlzIHRvIGhhdmUgdGhlIGN1cnJlbnQgLm1kbC1zcGlubmVyX19sYXllci1OXG4qIGF0IGBvcGFjaXR5OiAxYCwgd2Ugc2V0IGl0IHRvIGBvcGFjaXR5OiAwLjk5YCBpbnN0ZWFkIHNpbmNlIHRoaXMgZm9yY2VzIENocm9tZVxuKiB0byBkbyBwcm9wZXIgc3VicGl4ZWwgcmVuZGVyaW5nIGZvciB0aGUgZWxlbWVudHMgYmVpbmcgYW5pbWF0ZWQuIFRoaXMgaXNcbiogZXNwZWNpYWxseSB2aXNpYmxlIGluIENocm9tZSAzOSBvbiBVYnVudHUgMTQuMDQuIFNlZTpcbipcbiogLSBodHRwczovL2dpdGh1Yi5jb20vUG9seW1lci9wYXBlci1zcGlubmVyL2lzc3Vlcy85XG4qIC0gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQzNjI1NVxuKi9cbkBrZXlmcmFtZXMgbWRsLXNwaW5uZXJfX2xheWVyLTEtZmFkZS1pbi1vdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwLjk5OyB9XG4gIDI1JSB7XG4gICAgb3BhY2l0eTogMC45OTsgfVxuICAyNiUge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgODklIHtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDkwJSB7XG4gICAgb3BhY2l0eTogMC45OTsgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwLjk5OyB9IH1cblxuQGtleWZyYW1lcyBtZGwtc3Bpbm5lcl9fbGF5ZXItMi1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgMTUlIHtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDI1JSB7XG4gICAgb3BhY2l0eTogMC45OTsgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDAuOTk7IH1cbiAgNTElIHtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuQGtleWZyYW1lcyBtZGwtc3Bpbm5lcl9fbGF5ZXItMy1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMC45OTsgfVxuICA3NSUge1xuICAgIG9wYWNpdHk6IDAuOTk7IH1cbiAgNzYlIHtcbiAgICBvcGFjaXR5OiAwOyB9IH1cblxuQGtleWZyYW1lcyBtZGwtc3Bpbm5lcl9fbGF5ZXItNC1mYWRlLWluLW91dCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7IH1cbiAgNjUlIHtcbiAgICBvcGFjaXR5OiAwOyB9XG4gIDc1JSB7XG4gICAgb3BhY2l0eTogMC45OTsgfVxuICA5MCUge1xuICAgIG9wYWNpdHk6IDAuOTk7IH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDsgfSB9XG5cbi8qKlxuKiBQYXRjaCB0aGUgZ2FwIHRoYXQgYXBwZWFyIGJldHdlZW4gdGhlIHR3byBhZGphY2VudFxuKiBkaXYubWRsLXNwaW5uZXJfX2NpcmNsZS1jbGlwcGVyIHdoaWxlIHRoZSBzcGlubmVyIGlzIHJvdGF0aW5nXG4qIChhcHBlYXJzIG9uIENocm9tZSAzOCwgU2FmYXJpIDcuMSwgYW5kIElFIDExKS5cbipcbiogVXBkYXRlOiB0aGUgZ2FwIG5vIGxvbmdlciBhcHBlYXJzIG9uIENocm9tZSB3aGVuIC5tZGwtc3Bpbm5lcl9fbGF5ZXItTidzXG4qIG9wYWNpdHkgaXMgMC45OSwgYnV0IHN0aWxsIGRvZXMgb24gU2FmYXJpIGFuZCBJRS5cbiovXG4ubWRsLXNwaW5uZXJfX2dhcC1wYXRjaCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgdG9wOiAwO1xuICBsZWZ0OiA0NSU7XG4gIHdpZHRoOiAxMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLWNvbG9yOiBpbmhlcml0OyB9XG4gIC5tZGwtc3Bpbm5lcl9fZ2FwLXBhdGNoIC5tZGwtc3Bpbm5lcl9fY2lyY2xlIHtcbiAgICB3aWR0aDogMTAwMCU7XG4gICAgbGVmdDogLTQ1MCU7IH1cblxuLm1kbC1zcGlubmVyX19jaXJjbGUtY2xpcHBlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogNTAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDsgfVxuICAubWRsLXNwaW5uZXJfX2NpcmNsZS1jbGlwcGVyIC5tZGwtc3Bpbm5lcl9fY2lyY2xlIHtcbiAgICB3aWR0aDogMjAwJTsgfVxuXG4ubWRsLXNwaW5uZXJfX2NpcmNsZSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyLXdpZHRoOiAzcHg7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci1jb2xvcjogaW5oZXJpdDtcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBhbmltYXRpb246IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwOyB9XG4gIC5tZGwtc3Bpbm5lcl9fbGVmdCAubWRsLXNwaW5uZXJfX2NpcmNsZSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7IH1cbiAgICAubWRsLXNwaW5uZXIuaXMtYWN0aXZlIC5tZGwtc3Bpbm5lcl9fbGVmdCAubWRsLXNwaW5uZXJfX2NpcmNsZSB7XG4gICAgICBhbmltYXRpb246IG1kbC1zcGlubmVyX19sZWZ0LXNwaW4gMTMzM21zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSkgaW5maW5pdGUgYm90aDsgfVxuICAubWRsLXNwaW5uZXJfX3JpZ2h0IC5tZGwtc3Bpbm5lcl9fY2lyY2xlIHtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTI5ZGVnKTsgfVxuICAgIC5tZGwtc3Bpbm5lci5pcy1hY3RpdmUgLm1kbC1zcGlubmVyX19yaWdodCAubWRsLXNwaW5uZXJfX2NpcmNsZSB7XG4gICAgICBhbmltYXRpb246IG1kbC1zcGlubmVyX19yaWdodC1zcGluIDEzMzNtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIGluZmluaXRlIGJvdGg7IH1cblxuQGtleWZyYW1lcyBtZGwtc3Bpbm5lcl9fbGVmdC1zcGluIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTsgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTsgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTsgfSB9XG5cbkBrZXlmcmFtZXMgbWRsLXNwaW5uZXJfX3JpZ2h0LXNwaW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTsgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpOyB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKTsgfSB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNUWUxFIEdVSURFIFZBUklBQkxFUy0tLS0tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlc1xuICogLS0tLS1UeXBvZ3JhcGh5XG4gKiAtLS0tLUNvbG9yc1xuICogLS0tLS1UZXh0ZmllbGRcbiAqIC0tLS0tU3dpdGNoXG4gKiAtLS0tLVNwaW5uZXJcbiAqIC0tLS0tUmFkaW9cbiAqIC0tLS0tTWVudVxuICogLS0tLS1MaXN0XG4gKiAtLS0tLUxheW91dFxuICogLS0tLS1JY29uIHRvZ2dsZXNcbiAqIC0tLS0tRm9vdGVyXG4gKiAtLS0tLUNvbHVtblxuICogLS0tLS1DaGVja2JveFxuICogLS0tLS1DYXJkXG4gKiAtLS0tLUJ1dHRvblxuICogLS0tLS1BbmltYXRpb25cbiAqIC0tLS0tUHJvZ3Jlc3NcbiAqIC0tLS0tQmFkZ2VcbiAqIC0tLS0tU2hhZG93c1xuICogLS0tLS1HcmlkXG4gKiAtLS0tLURhdGEgdGFibGVcbiAqL1xuLyogPT09PT09PT09PSAgVFlQT0dSQVBIWSAgPT09PT09PT09PSAqL1xuLyogV2UncmUgc3BsaXR0aW5nIGZvbnRzIGludG8gXCJwcmVmZXJyZWRcIiBhbmQgXCJwZXJmb3JtYW5jZVwiIGluIG9yZGVyIHRvIG9wdGltaXplXG4gICBwYWdlIGxvYWRpbmcuIEZvciBpbXBvcnRhbnQgdGV4dCwgc3VjaCBhcyB0aGUgYm9keSwgd2Ugd2FudCBpdCB0byBsb2FkXG4gICBpbW1lZGlhdGVseSBhbmQgbm90IHdhaXQgZm9yIHRoZSB3ZWIgZm9udCBsb2FkLCB3aGVyZWFzIGZvciBvdGhlciBzZWN0aW9ucyxcbiAgIHN1Y2ggYXMgaGVhZGVycyBhbmQgdGl0bGVzLCB3ZSdyZSBPSyB3aXRoIHRoaW5ncyB0YWtpbmcgYSBiaXQgbG9uZ2VyIHRvIGxvYWQuXG4gICBXZSBkbyBoYXZlIHNvbWUgb3B0aW9uYWwgY2xhc3NlcyBhbmQgcGFyYW1ldGVycyBpbiB0aGUgbWl4aW5zLCBpbiBjYXNlIHlvdVxuICAgZGVmaW5pdGVseSB3YW50IHRvIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgdGhlIHByZWZlcnJlZCBmb250IGFuZCBkb24ndCBtaW5kXG4gICB0aGUgcGVyZm9ybWFuY2UgaGl0LlxuICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gaW1wcm92ZSBvbiB0aGlzIG9uY2UgQ1NTIEZvbnQgTG9hZGluZyBMMyBiZWNvbWVzIG1vcmVcbiAgIHdpZGVseSBhdmFpbGFibGUuXG4qL1xuLyogPT09PT09PT09PSAgQ09MT1JTICA9PT09PT09PT09ICovXG4vKipcbipcbiogTWF0ZXJpYWwgZGVzaWduIGNvbG9yIHBhbGV0dGVzLlxuKiBAc2VlIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9kZXNpZ24vc3BlYy9zdHlsZS9jb2xvci5odG1sXG4qXG4qKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBDb2xvciBQYWxldHRlcyAgPT09PT09PT09PSAqL1xuLyogY29sb3JzLnNjc3MgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUeXBvZ3JhcGh5ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb21wb25lbnRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTdGFuZGFyZCBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJY29uIFRvZ2dsZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJhZGlvIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJpcHBsZSBlZmZlY3QgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDaGVja2JveGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTd2l0Y2hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3Bpbm5lciAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENhcmQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNsaWRlcnMgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEl0ZW0gPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUb29sdGlwcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRm9vdGVyICA9PT09PT09PT09ICovXG4vKiBURVhURklFTEQgKi9cbi8qIFNXSVRDSCAqL1xuLyogU1BJTk5FUiAqL1xuLyogUkFESU8gKi9cbi8qIE1FTlUgKi9cbi8qIExJU1QgKi9cbi8qIExBWU9VVCAqL1xuLyogSUNPTiBUT0dHTEUgKi9cbi8qIEZPT1RFUiAqL1xuLyptZWdhLWZvb3RlciovXG4vKm1pbmktZm9vdGVyKi9cbi8qIENIRUNLQk9YICovXG4vKiBDQVJEICovXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbi8qIENvdmVyIGltYWdlICovXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbi8qIEFOSU1BVElPTiAqL1xuLyogUFJPR1JFU1MgKi9cbi8qIEJBREdFICovXG4vKiBTSEFET1dTICovXG4vKiBHUklEICovXG4vKiBEQVRBIFRBQkxFICovXG4vKiBUT09MVElQICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogVHlwb2dyYXBoeSAqL1xuLyogU2hhZG93cyAqL1xuLyogQW5pbWF0aW9ucyAqL1xuLm1kbC1zd2l0Y2gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMjRweDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lOyB9XG4gIC5tZGwtc3dpdGNoLmlzLXVwZ3JhZGVkIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDI4cHg7IH1cblxuLm1kbC1zd2l0Y2hfX2lucHV0IHtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7IH1cbiAgLm1kbC1zd2l0Y2guaXMtdXBncmFkZWQgLm1kbC1zd2l0Y2hfX2lucHV0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTsgfVxuXG4ubWRsLXN3aXRjaF9fdHJhY2sge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDVweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICB3aWR0aDogMzZweDtcbiAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgY3Vyc29yOiBwb2ludGVyOyB9XG4gIC5tZGwtc3dpdGNoLmlzLWNoZWNrZWQgLm1kbC1zd2l0Y2hfX3RyYWNrIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDYzLDgxLDE4MSwgMC41KTsgfVxuICAubWRsLXN3aXRjaC5pcy1kaXNhYmxlZCAubWRsLXN3aXRjaF9fdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsIDAuMTIpO1xuICAgIGN1cnNvcjogYXV0bzsgfVxuXG4ubWRsLXN3aXRjaF9fdGh1bWIge1xuICBiYWNrZ3JvdW5kOiByZ2IoMjUwLDI1MCwyNTApO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMnB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIHdpZHRoOiAyMHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjI4cztcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7IH1cbiAgLm1kbC1zd2l0Y2guaXMtY2hlY2tlZCAubWRsLXN3aXRjaF9fdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHJnYig2Myw4MSwxODEpO1xuICAgIGxlZnQ6IDE2cHg7XG4gICAgYm94LXNoYWRvdzogMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwIDFweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpOyB9XG4gIC5tZGwtc3dpdGNoLmlzLWRpc2FibGVkIC5tZGwtc3dpdGNoX190aHVtYiB7XG4gICAgYmFja2dyb3VuZDogcmdiKDE4OSwxODksMTg5KTtcbiAgICBjdXJzb3I6IGF1dG87IH1cblxuLm1kbC1zd2l0Y2hfX2ZvY3VzLWhlbHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTRweCwgLTRweCk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDhweDtcbiAgaGVpZ2h0OiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cbiAgLm1kbC1zd2l0Y2guaXMtZm9jdXNlZCAubWRsLXN3aXRjaF9fZm9jdXMtaGVscGVyIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMHB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTsgfVxuICAubWRsLXN3aXRjaC5pcy1mb2N1c2VkLmlzLWNoZWNrZWQgLm1kbC1zd2l0Y2hfX2ZvY3VzLWhlbHBlciB7XG4gICAgYm94LXNoYWRvdzogMCAwIDBweCAyMHB4IHJnYmEoNjMsODEsMTgxLCAwLjI2KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDYzLDgxLDE4MSwgMC4yNik7IH1cblxuLm1kbC1zd2l0Y2hfX2xhYmVsIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIG1hcmdpbjogMDtcbiAgbGVmdDogMjRweDsgfVxuICAubWRsLXN3aXRjaC5pcy1kaXNhYmxlZCAubWRsLXN3aXRjaF9fbGFiZWwge1xuICAgIGNvbG9yOiByZ2IoMTg5LDE4OSwxODkpO1xuICAgIGN1cnNvcjogYXV0bzsgfVxuXG4ubWRsLXN3aXRjaF9fcmlwcGxlLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAtMTJweDtcbiAgbGVmdDogLTE0cHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiA0OHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgd2hpdGUsIGJsYWNrKTtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40MHM7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBzdGVwLWVuZDtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDsgfVxuICAubWRsLXN3aXRjaF9fcmlwcGxlLWNvbnRhaW5lciAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogcmdiKDYzLDgxLDE4MSk7IH1cbiAgLm1kbC1zd2l0Y2guaXMtZGlzYWJsZWQgLm1kbC1zd2l0Y2hfX3JpcHBsZS1jb250YWluZXIge1xuICAgIGN1cnNvcjogYXV0bzsgfVxuICAubWRsLXN3aXRjaC5pcy1kaXNhYmxlZCAubWRsLXN3aXRjaF9fcmlwcGxlLWNvbnRhaW5lciAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH1cbiAgLm1kbC1zd2l0Y2guaXMtY2hlY2tlZCAubWRsLXN3aXRjaF9fcmlwcGxlLWNvbnRhaW5lciB7XG4gICAgY3Vyc29yOiBhdXRvO1xuICAgIGxlZnQ6IDJweDsgfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLm1kbC10YWJzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5tZGwtdGFic19fdGFiLWJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBwYWRkaW5nOiAwIDAgMCAwO1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMjI0LDIyNCwyMjQpOyB9XG5cbi5tZGwtdGFic19fdGFiIHtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIHBhZGRpbmc6IDAgMjRweCAwIDI0cHg7XG4gIGZsb2F0OiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb2xvcjogcmVkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGhlaWdodDogNDhweDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBjb2xvcjogcmdiYSgwLDAsMCwgMC41NCk7XG4gIG92ZXJmbG93OiBoaWRkZW47IH1cbiAgLm1kbC10YWJzLmlzLXVwZ3JhZGVkIC5tZGwtdGFic19fdGFiLmlzLWFjdGl2ZSB7XG4gICAgY29sb3I6IHJnYmEoMCwwLDAsIDAuODcpOyB9XG4gIC5tZGwtdGFicy5pcy11cGdyYWRlZCAubWRsLXRhYnNfX3RhYi5pcy1hY3RpdmU6YWZ0ZXIge1xuICAgIGhlaWdodDogMnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgIGJvdHRvbTogMHB4O1xuICAgIGxlZnQ6IDBweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZDogcmdiKDYzLDgxLDE4MSk7XG4gICAgYW5pbWF0aW9uOiBib3JkZXItZXhwYW5kIDAuMnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC40LCAxKSAwLjAxcyBhbHRlcm5hdGUgZm9yd2FyZHM7XG4gICAgdHJhbnNpdGlvbjogYWxsIDFzIGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpOyB9XG4gIC5tZGwtdGFic19fdGFiIC5tZGwtdGFic19fcmlwcGxlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBsZWZ0OiAwcHg7XG4gICAgdG9wOiAwcHg7XG4gICAgei1pbmRleDogMTtcbiAgICBvdmVyZmxvdzogaGlkZGVuOyB9XG4gICAgLm1kbC10YWJzX190YWIgLm1kbC10YWJzX19yaXBwbGUtY29udGFpbmVyIC5tZGwtcmlwcGxlIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYig2Myw4MSwxODEpOyB9XG5cbi5tZGwtdGFic19fcGFuZWwge1xuICBkaXNwbGF5OiBibG9jazsgfVxuICAubWRsLXRhYnMuaXMtdXBncmFkZWQgLm1kbC10YWJzX19wYW5lbCB7XG4gICAgZGlzcGxheTogbm9uZTsgfVxuICAubWRsLXRhYnMuaXMtdXBncmFkZWQgLm1kbC10YWJzX19wYW5lbC5pcy1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG5cbkBrZXlmcmFtZXMgYm9yZGVyLWV4cGFuZCB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdpZHRoOiAwOyB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgd2lkdGg6IDEwMCU7IH0gfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFR5cG9ncmFwaHkgKi9cbi8qIFNoYWRvd3MgKi9cbi8qIEFuaW1hdGlvbnMgKi9cbi5tZGwtdGV4dGZpZWxkIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDMwMHB4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMjBweCAwOyB9XG4gIC5tZGwtdGV4dGZpZWxkIC5tZGwtYnV0dG9uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAyMHB4OyB9XG5cbi5tZGwtdGV4dGZpZWxkLS1hbGlnbi1yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0OyB9XG5cbi5tZGwtdGV4dGZpZWxkLS1mdWxsLXdpZHRoIHtcbiAgd2lkdGg6IDEwMCU7IH1cblxuLm1kbC10ZXh0ZmllbGQtLWV4cGFuZGFibGUge1xuICBtaW4td2lkdGg6IDMycHg7XG4gIHdpZHRoOiBhdXRvO1xuICBtaW4taGVpZ2h0OiAzMnB4OyB9XG5cbi5tZGwtdGV4dGZpZWxkX19pbnB1dCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsIDAuMTIpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDRweCAwO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgY29sb3I6IGluaGVyaXQ7IH1cbiAgLm1kbC10ZXh0ZmllbGQuaXMtZm9jdXNlZCAubWRsLXRleHRmaWVsZF9faW5wdXQge1xuICAgIG91dGxpbmU6IG5vbmU7IH1cbiAgLm1kbC10ZXh0ZmllbGQuaXMtaW52YWxpZCAubWRsLXRleHRmaWVsZF9faW5wdXQge1xuICAgIGJvcmRlci1jb2xvcjogcmdiKDIyMiwgNTAsIDM4KTtcbiAgICBib3gtc2hhZG93OiBub25lOyB9XG4gIC5tZGwtdGV4dGZpZWxkLmlzLWRpc2FibGVkIC5tZGwtdGV4dGZpZWxkX19pbnB1dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCByZ2JhKDAsMCwwLCAwLjEyKTtcbiAgICBjb2xvcjogcmdiYSgwLDAsMCwgMC4yNik7IH1cblxuLm1kbC10ZXh0ZmllbGQgdGV4dGFyZWEubWRsLXRleHRmaWVsZF9faW5wdXQge1xuICBkaXNwbGF5OiBibG9jazsgfVxuXG4ubWRsLXRleHRmaWVsZF9fbGFiZWwge1xuICBib3R0b206IDA7XG4gIGNvbG9yOiByZ2JhKDAsMCwwLCAwLjI2KTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRvcDogMjRweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgLm1kbC10ZXh0ZmllbGQuaXMtZGlydHkgLm1kbC10ZXh0ZmllbGRfX2xhYmVsIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47IH1cbiAgLm1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsIC5tZGwtdGV4dGZpZWxkX19sYWJlbCB7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4ycztcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsgfVxuICAubWRsLXRleHRmaWVsZC5pcy1kaXNhYmxlZC5pcy1kaXNhYmxlZCAubWRsLXRleHRmaWVsZF9fbGFiZWwge1xuICAgIGNvbG9yOiByZ2JhKDAsMCwwLCAwLjI2KTsgfVxuICAubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwuaXMtZm9jdXNlZCAubWRsLXRleHRmaWVsZF9fbGFiZWwsXG4gIC5tZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbC5pcy1kaXJ0eSAubWRsLXRleHRmaWVsZF9fbGFiZWwge1xuICAgIGNvbG9yOiByZ2IoNjMsODEsMTgxKTtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgdG9wOiA0cHg7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTsgfVxuICAubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwuaXMtZm9jdXNlZCAubWRsLXRleHRmaWVsZF9fZXhwYW5kYWJsZS1ob2xkZXIgLm1kbC10ZXh0ZmllbGRfX2xhYmVsLFxuICAubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwuaXMtZGlydHkgLm1kbC10ZXh0ZmllbGRfX2V4cGFuZGFibGUtaG9sZGVyIC5tZGwtdGV4dGZpZWxkX19sYWJlbCB7XG4gICAgdG9wOiAtMTZweDsgfVxuICAubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwuaXMtaW52YWxpZCAubWRsLXRleHRmaWVsZF9fbGFiZWwge1xuICAgIGNvbG9yOiByZ2IoMjIyLCA1MCwgMzgpO1xuICAgIGZvbnQtc2l6ZTogMTJweDsgfVxuICAubWRsLXRleHRmaWVsZF9fbGFiZWw6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig2Myw4MSwxODEpO1xuICAgIGJvdHRvbTogMjBweDtcbiAgICBjb250ZW50OiAnJztcbiAgICBoZWlnaHQ6IDJweDtcbiAgICBsZWZ0OiA0NSU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHdpZHRoOiAxMHB4OyB9XG4gIC5tZGwtdGV4dGZpZWxkLmlzLWZvY3VzZWQgLm1kbC10ZXh0ZmllbGRfX2xhYmVsOmFmdGVyIHtcbiAgICBsZWZ0OiAwO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgd2lkdGg6IDEwMCU7IH1cbiAgLm1kbC10ZXh0ZmllbGQuaXMtaW52YWxpZCAubWRsLXRleHRmaWVsZF9fbGFiZWw6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMjIsIDUwLCAzOCk7IH1cblxuLm1kbC10ZXh0ZmllbGRfX2Vycm9yIHtcbiAgY29sb3I6IHJnYigyMjIsIDUwLCAzOCk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBtYXJnaW4tdG9wOiAzcHg7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7IH1cbiAgLm1kbC10ZXh0ZmllbGQuaXMtaW52YWxpZCAubWRsLXRleHRmaWVsZF9fZXJyb3Ige1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7IH1cblxuLm1kbC10ZXh0ZmllbGRfX2V4cGFuZGFibGUtaG9sZGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiAzMnB4O1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDAuMXB4OyB9XG4gIC5tZGwtdGV4dGZpZWxkLmlzLWZvY3VzZWQgLm1kbC10ZXh0ZmllbGRfX2V4cGFuZGFibGUtaG9sZGVyLCAubWRsLXRleHRmaWVsZC5pcy1kaXJ0eSAubWRsLXRleHRmaWVsZF9fZXhwYW5kYWJsZS1ob2xkZXIge1xuICAgIG1heC13aWR0aDogNjAwcHg7IH1cbiAgLm1kbC10ZXh0ZmllbGRfX2V4cGFuZGFibGUtaG9sZGVyIC5tZGwtdGV4dGZpZWxkX19sYWJlbDphZnRlciB7XG4gICAgYm90dG9tOiAwOyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNUWUxFIEdVSURFIFZBUklBQkxFUy0tLS0tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlc1xuICogLS0tLS1UeXBvZ3JhcGh5XG4gKiAtLS0tLUNvbG9yc1xuICogLS0tLS1UZXh0ZmllbGRcbiAqIC0tLS0tU3dpdGNoXG4gKiAtLS0tLVNwaW5uZXJcbiAqIC0tLS0tUmFkaW9cbiAqIC0tLS0tTWVudVxuICogLS0tLS1MaXN0XG4gKiAtLS0tLUxheW91dFxuICogLS0tLS1JY29uIHRvZ2dsZXNcbiAqIC0tLS0tRm9vdGVyXG4gKiAtLS0tLUNvbHVtblxuICogLS0tLS1DaGVja2JveFxuICogLS0tLS1DYXJkXG4gKiAtLS0tLUJ1dHRvblxuICogLS0tLS1BbmltYXRpb25cbiAqIC0tLS0tUHJvZ3Jlc3NcbiAqIC0tLS0tQmFkZ2VcbiAqIC0tLS0tU2hhZG93c1xuICogLS0tLS1HcmlkXG4gKiAtLS0tLURhdGEgdGFibGVcbiAqL1xuLyogPT09PT09PT09PSAgVFlQT0dSQVBIWSAgPT09PT09PT09PSAqL1xuLyogV2UncmUgc3BsaXR0aW5nIGZvbnRzIGludG8gXCJwcmVmZXJyZWRcIiBhbmQgXCJwZXJmb3JtYW5jZVwiIGluIG9yZGVyIHRvIG9wdGltaXplXG4gICBwYWdlIGxvYWRpbmcuIEZvciBpbXBvcnRhbnQgdGV4dCwgc3VjaCBhcyB0aGUgYm9keSwgd2Ugd2FudCBpdCB0byBsb2FkXG4gICBpbW1lZGlhdGVseSBhbmQgbm90IHdhaXQgZm9yIHRoZSB3ZWIgZm9udCBsb2FkLCB3aGVyZWFzIGZvciBvdGhlciBzZWN0aW9ucyxcbiAgIHN1Y2ggYXMgaGVhZGVycyBhbmQgdGl0bGVzLCB3ZSdyZSBPSyB3aXRoIHRoaW5ncyB0YWtpbmcgYSBiaXQgbG9uZ2VyIHRvIGxvYWQuXG4gICBXZSBkbyBoYXZlIHNvbWUgb3B0aW9uYWwgY2xhc3NlcyBhbmQgcGFyYW1ldGVycyBpbiB0aGUgbWl4aW5zLCBpbiBjYXNlIHlvdVxuICAgZGVmaW5pdGVseSB3YW50IHRvIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgdGhlIHByZWZlcnJlZCBmb250IGFuZCBkb24ndCBtaW5kXG4gICB0aGUgcGVyZm9ybWFuY2UgaGl0LlxuICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gaW1wcm92ZSBvbiB0aGlzIG9uY2UgQ1NTIEZvbnQgTG9hZGluZyBMMyBiZWNvbWVzIG1vcmVcbiAgIHdpZGVseSBhdmFpbGFibGUuXG4qL1xuLyogPT09PT09PT09PSAgQ09MT1JTICA9PT09PT09PT09ICovXG4vKipcbipcbiogTWF0ZXJpYWwgZGVzaWduIGNvbG9yIHBhbGV0dGVzLlxuKiBAc2VlIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9kZXNpZ24vc3BlYy9zdHlsZS9jb2xvci5odG1sXG4qXG4qKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBDb2xvciBQYWxldHRlcyAgPT09PT09PT09PSAqL1xuLyogY29sb3JzLnNjc3MgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUeXBvZ3JhcGh5ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb21wb25lbnRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTdGFuZGFyZCBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJY29uIFRvZ2dsZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJhZGlvIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJpcHBsZSBlZmZlY3QgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDaGVja2JveGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTd2l0Y2hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3Bpbm5lciAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENhcmQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNsaWRlcnMgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEl0ZW0gPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUb29sdGlwcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRm9vdGVyICA9PT09PT09PT09ICovXG4vKiBURVhURklFTEQgKi9cbi8qIFNXSVRDSCAqL1xuLyogU1BJTk5FUiAqL1xuLyogUkFESU8gKi9cbi8qIE1FTlUgKi9cbi8qIExJU1QgKi9cbi8qIExBWU9VVCAqL1xuLyogSUNPTiBUT0dHTEUgKi9cbi8qIEZPT1RFUiAqL1xuLyptZWdhLWZvb3RlciovXG4vKm1pbmktZm9vdGVyKi9cbi8qIENIRUNLQk9YICovXG4vKiBDQVJEICovXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbi8qIENvdmVyIGltYWdlICovXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbi8qIEFOSU1BVElPTiAqL1xuLyogUFJPR1JFU1MgKi9cbi8qIEJBREdFICovXG4vKiBTSEFET1dTICovXG4vKiBHUklEICovXG4vKiBEQVRBIFRBQkxFICovXG4vKiBUT09MVElQICovXG4ubWRsLXRvb2x0aXAge1xuICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICB6LWluZGV4OiA5OTk7XG4gIGJhY2tncm91bmQ6IHJnYmEoOTcsOTcsOTcsIDAuOSk7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgY29sb3I6IHJnYigyNTUsMjU1LDI1NSk7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTRweDtcbiAgbWF4LXdpZHRoOiAxNzBweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IC01MDBweDtcbiAgbGVmdDogLTUwMHB4O1xuICBwYWRkaW5nOiA4cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4ubWRsLXRvb2x0aXAuaXMtYWN0aXZlIHtcbiAgYW5pbWF0aW9uOiBwdWxzZSAyMDBtcyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSBmb3J3YXJkczsgfVxuXG4ubWRsLXRvb2x0aXAtLWxhcmdlIHtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgcGFkZGluZzogMTZweDsgfVxuXG5Aa2V5ZnJhbWVzIHB1bHNlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgb3BhY2l0eTogMDsgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OSk7IH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7IH0gfVxuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cbi8qID09PT09PT09PT0gIFRZUE9HUkFQSFkgID09PT09PT09PT0gKi9cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbi8qID09PT09PT09PT0gIENPTE9SUyAgPT09PT09PT09PSAqL1xuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cbi8qIGNvbG9ycy5zY3NzICovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyogPT09PT09PT09PSAgSU1BR0VTICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb2xvciAmIFRoZW1lcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29tcG9uZW50cyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgSWNvbiBUb2dnbGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSYWRpbyBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBSaXBwbGUgZWZmZWN0ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMYXlvdXQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbnRlbnQgVGFicyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ2hlY2tib3hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFRleHQgZmllbGRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDYXJkICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTbGlkZXJzID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gUHJvZ3Jlc3MgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgTGlzdCA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJdGVtID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIERyb3Bkb3duIG1lbnUgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVG9vbHRpcHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEZvb3RlciAgPT09PT09PT09PSAqL1xuLyogVEVYVEZJRUxEICovXG4vKiBTV0lUQ0ggKi9cbi8qIFNQSU5ORVIgKi9cbi8qIFJBRElPICovXG4vKiBNRU5VICovXG4vKiBMSVNUICovXG4vKiBMQVlPVVQgKi9cbi8qIElDT04gVE9HR0xFICovXG4vKiBGT09URVIgKi9cbi8qbWVnYS1mb290ZXIqL1xuLyptaW5pLWZvb3RlciovXG4vKiBDSEVDS0JPWCAqL1xuLyogQ0FSRCAqL1xuLyogQ2FyZCBkaW1lbnNpb25zICovXG4vKiBDb3ZlciBpbWFnZSAqL1xuLyogQlVUVE9OICovXG4vKipcbiAqXG4gKiBEaW1lbnNpb25zXG4gKlxuICovXG4vKiBBTklNQVRJT04gKi9cbi8qIFBST0dSRVNTICovXG4vKiBCQURHRSAqL1xuLyogU0hBRE9XUyAqL1xuLyogR1JJRCAqL1xuLyogREFUQSBUQUJMRSAqL1xuLyogVE9PTFRJUCAqL1xuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8qIFR5cG9ncmFwaHkgKi9cbi8qIFNoYWRvd3MgKi9cbi8qIEFuaW1hdGlvbnMgKi9cbi5tZGwtc2hhZG93LS0yZHAge1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMiksIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC4xMik7IH1cblxuLm1kbC1zaGFkb3ctLTNkcCB7XG4gIGJveC1zaGFkb3c6IDAgM3B4IDRweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMCAxcHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKTsgfVxuXG4ubWRsLXNoYWRvdy0tNGRwIHtcbiAgYm94LXNoYWRvdzogMCA0cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgfVxuXG4ubWRsLXNoYWRvdy0tNmRwIHtcbiAgYm94LXNoYWRvdzogMCA2cHggMTBweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgMXB4IDE4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMik7IH1cblxuLm1kbC1zaGFkb3ctLThkcCB7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKTsgfVxuXG4ubWRsLXNoYWRvdy0tMTZkcCB7XG4gIGJveC1zaGFkb3c6IDAgMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjIpOyB9XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKlxuKiBOT1RFOiBTb21lIHJ1bGVzIGhlcmUgYXJlIGFwcGxpZWQgdXNpbmcgZHVwbGljYXRlIHNlbGVjdG9ycy5cbiogVGhpcyBpcyBvbiBwdXJwb3NlIHRvIGluY3JlYXNlIHRoZWlyIHNwZWNpZmljaXR5IHdoZW4gYXBwbGllZC5cbiogRm9yIGV4YW1wbGU6IGAubWRsLWNlbGwtLTEtY29sLXBob25lLm1kbC1jZWxsLS0xLWNvbC1waG9uZWBcbiovXG4vKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAkQ09OVEVOVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcbiAqIFNUWUxFIEdVSURFIFZBUklBQkxFUy0tLS0tLS0tLS0tLS0tLS0tLURlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlc1xuICogLS0tLS1UeXBvZ3JhcGh5XG4gKiAtLS0tLUNvbG9yc1xuICogLS0tLS1UZXh0ZmllbGRcbiAqIC0tLS0tU3dpdGNoXG4gKiAtLS0tLVNwaW5uZXJcbiAqIC0tLS0tUmFkaW9cbiAqIC0tLS0tTWVudVxuICogLS0tLS1MaXN0XG4gKiAtLS0tLUxheW91dFxuICogLS0tLS1JY29uIHRvZ2dsZXNcbiAqIC0tLS0tRm9vdGVyXG4gKiAtLS0tLUNvbHVtblxuICogLS0tLS1DaGVja2JveFxuICogLS0tLS1DYXJkXG4gKiAtLS0tLUJ1dHRvblxuICogLS0tLS1BbmltYXRpb25cbiAqIC0tLS0tUHJvZ3Jlc3NcbiAqIC0tLS0tQmFkZ2VcbiAqIC0tLS0tU2hhZG93c1xuICogLS0tLS1HcmlkXG4gKiAtLS0tLURhdGEgdGFibGVcbiAqL1xuLyogPT09PT09PT09PSAgVFlQT0dSQVBIWSAgPT09PT09PT09PSAqL1xuLyogV2UncmUgc3BsaXR0aW5nIGZvbnRzIGludG8gXCJwcmVmZXJyZWRcIiBhbmQgXCJwZXJmb3JtYW5jZVwiIGluIG9yZGVyIHRvIG9wdGltaXplXG4gICBwYWdlIGxvYWRpbmcuIEZvciBpbXBvcnRhbnQgdGV4dCwgc3VjaCBhcyB0aGUgYm9keSwgd2Ugd2FudCBpdCB0byBsb2FkXG4gICBpbW1lZGlhdGVseSBhbmQgbm90IHdhaXQgZm9yIHRoZSB3ZWIgZm9udCBsb2FkLCB3aGVyZWFzIGZvciBvdGhlciBzZWN0aW9ucyxcbiAgIHN1Y2ggYXMgaGVhZGVycyBhbmQgdGl0bGVzLCB3ZSdyZSBPSyB3aXRoIHRoaW5ncyB0YWtpbmcgYSBiaXQgbG9uZ2VyIHRvIGxvYWQuXG4gICBXZSBkbyBoYXZlIHNvbWUgb3B0aW9uYWwgY2xhc3NlcyBhbmQgcGFyYW1ldGVycyBpbiB0aGUgbWl4aW5zLCBpbiBjYXNlIHlvdVxuICAgZGVmaW5pdGVseSB3YW50IHRvIG1ha2Ugc3VyZSB5b3UncmUgdXNpbmcgdGhlIHByZWZlcnJlZCBmb250IGFuZCBkb24ndCBtaW5kXG4gICB0aGUgcGVyZm9ybWFuY2UgaGl0LlxuICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gaW1wcm92ZSBvbiB0aGlzIG9uY2UgQ1NTIEZvbnQgTG9hZGluZyBMMyBiZWNvbWVzIG1vcmVcbiAgIHdpZGVseSBhdmFpbGFibGUuXG4qL1xuLyogPT09PT09PT09PSAgQ09MT1JTICA9PT09PT09PT09ICovXG4vKipcbipcbiogTWF0ZXJpYWwgZGVzaWduIGNvbG9yIHBhbGV0dGVzLlxuKiBAc2VlIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9kZXNpZ24vc3BlYy9zdHlsZS9jb2xvci5odG1sXG4qXG4qKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBDb2xvciBQYWxldHRlcyAgPT09PT09PT09PSAqL1xuLyogY29sb3JzLnNjc3MgKi9cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUeXBvZ3JhcGh5ICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDb21wb25lbnRzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTdGFuZGFyZCBCdXR0b25zICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBJY29uIFRvZ2dsZXMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJhZGlvIEJ1dHRvbnMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFJpcHBsZSBlZmZlY3QgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBDaGVja2JveGVzICA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBTd2l0Y2hlcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgU3Bpbm5lciAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIENhcmQgID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIFNsaWRlcnMgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cbi8qID09PT09PT09PT0gIEl0ZW0gPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG4vKiA9PT09PT09PT09ICBUb29sdGlwcyAgPT09PT09PT09PSAqL1xuLyogPT09PT09PT09PSAgRm9vdGVyICA9PT09PT09PT09ICovXG4vKiBURVhURklFTEQgKi9cbi8qIFNXSVRDSCAqL1xuLyogU1BJTk5FUiAqL1xuLyogUkFESU8gKi9cbi8qIE1FTlUgKi9cbi8qIExJU1QgKi9cbi8qIExBWU9VVCAqL1xuLyogSUNPTiBUT0dHTEUgKi9cbi8qIEZPT1RFUiAqL1xuLyptZWdhLWZvb3RlciovXG4vKm1pbmktZm9vdGVyKi9cbi8qIENIRUNLQk9YICovXG4vKiBDQVJEICovXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbi8qIENvdmVyIGltYWdlICovXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbi8qIEFOSU1BVElPTiAqL1xuLyogUFJPR1JFU1MgKi9cbi8qIEJBREdFICovXG4vKiBTSEFET1dTICovXG4vKiBHUklEICovXG4vKiBEQVRBIFRBQkxFICovXG4vKiBUT09MVElQICovXG4ubWRsLWdyaWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBtYXJnaW46IDAgYXV0byAwIGF1dG87XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG4gIC5tZGwtZ3JpZC5tZGwtZ3JpZC0tbm8tc3BhY2luZyB7XG4gICAgcGFkZGluZzogMDsgfVxuXG4ubWRsLWNlbGwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5cbi5tZGwtY2VsbC0tdG9wIHtcbiAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsgfVxuXG4ubWRsLWNlbGwtLW1pZGRsZSB7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjsgfVxuXG4ubWRsLWNlbGwtLWJvdHRvbSB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kOyB9XG5cbi5tZGwtY2VsbC0tc3RyZXRjaCB7XG4gIGFsaWduLXNlbGY6IHN0cmV0Y2g7IH1cblxuLm1kbC1ncmlkLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsIHtcbiAgbWFyZ2luOiAwOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA0NzlweCkge1xuICAubWRsLWdyaWQge1xuICAgIHBhZGRpbmc6IDhweDsgfVxuICAubWRsLWNlbGwge1xuICAgIG1hcmdpbjogOHB4O1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbCB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLWhpZGUtcGhvbmUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAubWRsLWNlbGwtLTEtY29sLFxuICAubWRsLWNlbGwtLTEtY29sLXBob25lLm1kbC1jZWxsLS0xLWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMjUlIC0gMTZweCk7IH1cbiAgICAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwtLTEtY29sLCAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPlxuICAgIC5tZGwtY2VsbC0tMS1jb2wtcGhvbmUubWRsLWNlbGwtLTEtY29sLXBob25lIHtcbiAgICAgIHdpZHRoOiAyNSU7IH1cbiAgLm1kbC1jZWxsLS0yLWNvbCxcbiAgLm1kbC1jZWxsLS0yLWNvbC1waG9uZS5tZGwtY2VsbC0tMi1jb2wtcGhvbmUge1xuICAgIHdpZHRoOiBjYWxjKDUwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS0yLWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTItY29sLXBob25lLm1kbC1jZWxsLS0yLWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogNTAlOyB9XG4gIC5tZGwtY2VsbC0tMy1jb2wsXG4gIC5tZGwtY2VsbC0tMy1jb2wtcGhvbmUubWRsLWNlbGwtLTMtY29sLXBob25lIHtcbiAgICB3aWR0aDogY2FsYyg3NSUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tMy1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0zLWNvbC1waG9uZS5tZGwtY2VsbC0tMy1jb2wtcGhvbmUge1xuICAgICAgd2lkdGg6IDc1JTsgfVxuICAubWRsLWNlbGwtLTQtY29sLFxuICAubWRsLWNlbGwtLTQtY29sLXBob25lLm1kbC1jZWxsLS00LWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS00LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTQtY29sLXBob25lLm1kbC1jZWxsLS00LWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTUtY29sLFxuICAubWRsLWNlbGwtLTUtY29sLXBob25lLm1kbC1jZWxsLS01LWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS01LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTUtY29sLXBob25lLm1kbC1jZWxsLS01LWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTYtY29sLFxuICAubWRsLWNlbGwtLTYtY29sLXBob25lLm1kbC1jZWxsLS02LWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS02LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTYtY29sLXBob25lLm1kbC1jZWxsLS02LWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTctY29sLFxuICAubWRsLWNlbGwtLTctY29sLXBob25lLm1kbC1jZWxsLS03LWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS03LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTctY29sLXBob25lLm1kbC1jZWxsLS03LWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTgtY29sLFxuICAubWRsLWNlbGwtLTgtY29sLXBob25lLm1kbC1jZWxsLS04LWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS04LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTgtY29sLXBob25lLm1kbC1jZWxsLS04LWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTktY29sLFxuICAubWRsLWNlbGwtLTktY29sLXBob25lLm1kbC1jZWxsLS05LWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS05LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTktY29sLXBob25lLm1kbC1jZWxsLS05LWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTEwLWNvbCxcbiAgLm1kbC1jZWxsLS0xMC1jb2wtcGhvbmUubWRsLWNlbGwtLTEwLWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS0xMC1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0xMC1jb2wtcGhvbmUubWRsLWNlbGwtLTEwLWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTExLWNvbCxcbiAgLm1kbC1jZWxsLS0xMS1jb2wtcGhvbmUubWRsLWNlbGwtLTExLWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS0xMS1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0xMS1jb2wtcGhvbmUubWRsLWNlbGwtLTExLWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTEyLWNvbCxcbiAgLm1kbC1jZWxsLS0xMi1jb2wtcGhvbmUubWRsLWNlbGwtLTEyLWNvbC1waG9uZSB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS0xMi1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0xMi1jb2wtcGhvbmUubWRsLWNlbGwtLTEyLWNvbC1waG9uZSB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA0ODBweCkgYW5kIChtYXgtd2lkdGg6IDgzOXB4KSB7XG4gIC5tZGwtZ3JpZCB7XG4gICAgcGFkZGluZzogOHB4OyB9XG4gIC5tZGwtY2VsbCB7XG4gICAgbWFyZ2luOiA4cHg7XG4gICAgd2lkdGg6IGNhbGMoNTAlIC0gMTZweCk7IH1cbiAgICAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwge1xuICAgICAgd2lkdGg6IDUwJTsgfVxuICAubWRsLWNlbGwtLWhpZGUtdGFibGV0IHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cbiAgLm1kbC1jZWxsLS0xLWNvbCxcbiAgLm1kbC1jZWxsLS0xLWNvbC10YWJsZXQubWRsLWNlbGwtLTEtY29sLXRhYmxldCB7XG4gICAgd2lkdGg6IGNhbGMoMTIuNSUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tMS1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0xLWNvbC10YWJsZXQubWRsLWNlbGwtLTEtY29sLXRhYmxldCB7XG4gICAgICB3aWR0aDogMTIuNSU7IH1cbiAgLm1kbC1jZWxsLS0yLWNvbCxcbiAgLm1kbC1jZWxsLS0yLWNvbC10YWJsZXQubWRsLWNlbGwtLTItY29sLXRhYmxldCB7XG4gICAgd2lkdGg6IGNhbGMoMjUlIC0gMTZweCk7IH1cbiAgICAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwtLTItY29sLCAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPlxuICAgIC5tZGwtY2VsbC0tMi1jb2wtdGFibGV0Lm1kbC1jZWxsLS0yLWNvbC10YWJsZXQge1xuICAgICAgd2lkdGg6IDI1JTsgfVxuICAubWRsLWNlbGwtLTMtY29sLFxuICAubWRsLWNlbGwtLTMtY29sLXRhYmxldC5tZGwtY2VsbC0tMy1jb2wtdGFibGV0IHtcbiAgICB3aWR0aDogY2FsYygzNy41JSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS0zLWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTMtY29sLXRhYmxldC5tZGwtY2VsbC0tMy1jb2wtdGFibGV0IHtcbiAgICAgIHdpZHRoOiAzNy41JTsgfVxuICAubWRsLWNlbGwtLTQtY29sLFxuICAubWRsLWNlbGwtLTQtY29sLXRhYmxldC5tZGwtY2VsbC0tNC1jb2wtdGFibGV0IHtcbiAgICB3aWR0aDogY2FsYyg1MCUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tNC1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS00LWNvbC10YWJsZXQubWRsLWNlbGwtLTQtY29sLXRhYmxldCB7XG4gICAgICB3aWR0aDogNTAlOyB9XG4gIC5tZGwtY2VsbC0tNS1jb2wsXG4gIC5tZGwtY2VsbC0tNS1jb2wtdGFibGV0Lm1kbC1jZWxsLS01LWNvbC10YWJsZXQge1xuICAgIHdpZHRoOiBjYWxjKDYyLjUlIC0gMTZweCk7IH1cbiAgICAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwtLTUtY29sLCAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPlxuICAgIC5tZGwtY2VsbC0tNS1jb2wtdGFibGV0Lm1kbC1jZWxsLS01LWNvbC10YWJsZXQge1xuICAgICAgd2lkdGg6IDYyLjUlOyB9XG4gIC5tZGwtY2VsbC0tNi1jb2wsXG4gIC5tZGwtY2VsbC0tNi1jb2wtdGFibGV0Lm1kbC1jZWxsLS02LWNvbC10YWJsZXQge1xuICAgIHdpZHRoOiBjYWxjKDc1JSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS02LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTYtY29sLXRhYmxldC5tZGwtY2VsbC0tNi1jb2wtdGFibGV0IHtcbiAgICAgIHdpZHRoOiA3NSU7IH1cbiAgLm1kbC1jZWxsLS03LWNvbCxcbiAgLm1kbC1jZWxsLS03LWNvbC10YWJsZXQubWRsLWNlbGwtLTctY29sLXRhYmxldCB7XG4gICAgd2lkdGg6IGNhbGMoODcuNSUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tNy1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS03LWNvbC10YWJsZXQubWRsLWNlbGwtLTctY29sLXRhYmxldCB7XG4gICAgICB3aWR0aDogODcuNSU7IH1cbiAgLm1kbC1jZWxsLS04LWNvbCxcbiAgLm1kbC1jZWxsLS04LWNvbC10YWJsZXQubWRsLWNlbGwtLTgtY29sLXRhYmxldCB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS04LWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTgtY29sLXRhYmxldC5tZGwtY2VsbC0tOC1jb2wtdGFibGV0IHtcbiAgICAgIHdpZHRoOiAxMDAlOyB9XG4gIC5tZGwtY2VsbC0tOS1jb2wsXG4gIC5tZGwtY2VsbC0tOS1jb2wtdGFibGV0Lm1kbC1jZWxsLS05LWNvbC10YWJsZXQge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tOS1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS05LWNvbC10YWJsZXQubWRsLWNlbGwtLTktY29sLXRhYmxldCB7XG4gICAgICB3aWR0aDogMTAwJTsgfVxuICAubWRsLWNlbGwtLTEwLWNvbCxcbiAgLm1kbC1jZWxsLS0xMC1jb2wtdGFibGV0Lm1kbC1jZWxsLS0xMC1jb2wtdGFibGV0IHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMTZweCk7IH1cbiAgICAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwtLTEwLWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTEwLWNvbC10YWJsZXQubWRsLWNlbGwtLTEwLWNvbC10YWJsZXQge1xuICAgICAgd2lkdGg6IDEwMCU7IH1cbiAgLm1kbC1jZWxsLS0xMS1jb2wsXG4gIC5tZGwtY2VsbC0tMTEtY29sLXRhYmxldC5tZGwtY2VsbC0tMTEtY29sLXRhYmxldCB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsLS0xMS1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0xMS1jb2wtdGFibGV0Lm1kbC1jZWxsLS0xMS1jb2wtdGFibGV0IHtcbiAgICAgIHdpZHRoOiAxMDAlOyB9XG4gIC5tZGwtY2VsbC0tMTItY29sLFxuICAubWRsLWNlbGwtLTEyLWNvbC10YWJsZXQubWRsLWNlbGwtLTEyLWNvbC10YWJsZXQge1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tMTItY29sLCAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPlxuICAgIC5tZGwtY2VsbC0tMTItY29sLXRhYmxldC5tZGwtY2VsbC0tMTItY29sLXRhYmxldCB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA4NDBweCkge1xuICAubWRsLWdyaWQge1xuICAgIHBhZGRpbmc6IDhweDsgfVxuICAubWRsLWNlbGwge1xuICAgIG1hcmdpbjogOHB4O1xuICAgIHdpZHRoOiBjYWxjKDMzLjMzMzMzJSAtIDE2cHgpOyB9XG4gICAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gLm1kbC1jZWxsIHtcbiAgICAgIHdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLm1kbC1jZWxsLS1oaWRlLWRlc2t0b3Age1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuICAubWRsLWNlbGwtLTEtY29sLFxuICAubWRsLWNlbGwtLTEtY29sLWRlc2t0b3AubWRsLWNlbGwtLTEtY29sLWRlc2t0b3Age1xuICAgIHdpZHRoOiBjYWxjKDguMzMzMzMlIC0gMTZweCk7IH1cbiAgICAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwtLTEtY29sLCAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPlxuICAgIC5tZGwtY2VsbC0tMS1jb2wtZGVza3RvcC5tZGwtY2VsbC0tMS1jb2wtZGVza3RvcCB7XG4gICAgICB3aWR0aDogOC4zMzMzMyU7IH1cbiAgLm1kbC1jZWxsLS0yLWNvbCxcbiAgLm1kbC1jZWxsLS0yLWNvbC1kZXNrdG9wLm1kbC1jZWxsLS0yLWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYygxNi42NjY2NyUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tMi1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0yLWNvbC1kZXNrdG9wLm1kbC1jZWxsLS0yLWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiAxNi42NjY2NyU7IH1cbiAgLm1kbC1jZWxsLS0zLWNvbCxcbiAgLm1kbC1jZWxsLS0zLWNvbC1kZXNrdG9wLm1kbC1jZWxsLS0zLWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYygyNSUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tMy1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS0zLWNvbC1kZXNrdG9wLm1kbC1jZWxsLS0zLWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiAyNSU7IH1cbiAgLm1kbC1jZWxsLS00LWNvbCxcbiAgLm1kbC1jZWxsLS00LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS00LWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYygzMy4zMzMzMyUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tNC1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS00LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS00LWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiAzMy4zMzMzMyU7IH1cbiAgLm1kbC1jZWxsLS01LWNvbCxcbiAgLm1kbC1jZWxsLS01LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS01LWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYyg0MS42NjY2NyUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tNS1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS01LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS01LWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiA0MS42NjY2NyU7IH1cbiAgLm1kbC1jZWxsLS02LWNvbCxcbiAgLm1kbC1jZWxsLS02LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS02LWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYyg1MCUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tNi1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS02LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS02LWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiA1MCU7IH1cbiAgLm1kbC1jZWxsLS03LWNvbCxcbiAgLm1kbC1jZWxsLS03LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS03LWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYyg1OC4zMzMzMyUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tNy1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS03LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS03LWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiA1OC4zMzMzMyU7IH1cbiAgLm1kbC1jZWxsLS04LWNvbCxcbiAgLm1kbC1jZWxsLS04LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS04LWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYyg2Ni42NjY2NyUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tOC1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS04LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS04LWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiA2Ni42NjY2NyU7IH1cbiAgLm1kbC1jZWxsLS05LWNvbCxcbiAgLm1kbC1jZWxsLS05LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS05LWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYyg3NSUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tOS1jb2wsIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+XG4gICAgLm1kbC1jZWxsLS05LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS05LWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiA3NSU7IH1cbiAgLm1kbC1jZWxsLS0xMC1jb2wsXG4gIC5tZGwtY2VsbC0tMTAtY29sLWRlc2t0b3AubWRsLWNlbGwtLTEwLWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYyg4My4zMzMzMyUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tMTAtY29sLCAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPlxuICAgIC5tZGwtY2VsbC0tMTAtY29sLWRlc2t0b3AubWRsLWNlbGwtLTEwLWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiA4My4zMzMzMyU7IH1cbiAgLm1kbC1jZWxsLS0xMS1jb2wsXG4gIC5tZGwtY2VsbC0tMTEtY29sLWRlc2t0b3AubWRsLWNlbGwtLTExLWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYyg5MS42NjY2NyUgLSAxNnB4KTsgfVxuICAgIC5tZGwtZ3JpZC0tbm8tc3BhY2luZyA+IC5tZGwtY2VsbC0tMTEtY29sLCAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPlxuICAgIC5tZGwtY2VsbC0tMTEtY29sLWRlc2t0b3AubWRsLWNlbGwtLTExLWNvbC1kZXNrdG9wIHtcbiAgICAgIHdpZHRoOiA5MS42NjY2NyU7IH1cbiAgLm1kbC1jZWxsLS0xMi1jb2wsXG4gIC5tZGwtY2VsbC0tMTItY29sLWRlc2t0b3AubWRsLWNlbGwtLTEyLWNvbC1kZXNrdG9wIHtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMTZweCk7IH1cbiAgICAubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwtLTEyLWNvbCwgLm1kbC1ncmlkLS1uby1zcGFjaW5nID5cbiAgICAubWRsLWNlbGwtLTEyLWNvbC1kZXNrdG9wLm1kbC1jZWxsLS0xMi1jb2wtZGVza3RvcCB7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi5tZC1mYWItYm90dG9tLXJpZ2h0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDIwcHg7XG4gIHJpZ2h0OiAyMHB4O1xuICB6LWluZGV4OiA0OTsgfVxuXG5tZC1jYXJkIGgxLCBtZC1jYXJkIGgyLCBtZC1jYXJkIGgzLCBtZC1jYXJkIGg0LCBtZC1jYXJkIGg1LCBtZC1jYXJkIGg2IHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgbWFyZ2luLWJvdHRvbTogMDsgfVxuXG5tZC1jYXJkIG1kLXRvb2xiYXIge1xuICBtaW4taGVpZ2h0OiA1NnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG4gIHotaW5kZXg6IDA7IH1cbiAgbWQtY2FyZCBtZC10b29sYmFyIC5tZC10b29sYmFyLXRvb2xzIHtcbiAgICBoZWlnaHQ6IDU2cHg7XG4gICAgbWF4LWhlaWdodDogNTZweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGZvbnQtc2l6ZTogMTZweDsgfVxuICBtZC1jYXJkIG1kLXRvb2xiYXIgLm1kLXRvb2xiYXItdG9vbHMsIG1kLWNhcmQgbWQtdG9vbGJhciBtZC1pY29uIHtcbiAgICBjb2xvcjogIzNkNDY1MyAhaW1wb3J0YW50OyB9XG5cbi5jYXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OyB9XG4gIC5jYXJkLWljb24ge1xuICAgIG1heC13aWR0aDogOTZweDsgfVxuICAgIC5jYXJkLWljb24gbWQtaWNvbiB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICB3aWR0aDogMzZweDtcbiAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjQ2Yjc1O1xuICAgICAgY29sb3I6ICNmZmZmZmY7XG4gICAgICBib3JkZXI6IDhweCBkb3VibGU7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7IH1cbiAgLmNhcmQtaW5mb19fdmFsdWUge1xuICAgIGNvbG9yOiAjMjczMTQwICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuICAuY2FyZC1pbmZvX19uYW1lIHtcbiAgICBjb2xvcjogIzNkNDY1MyAhaW1wb3J0YW50O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBmb250LXNpemU6IDE0cHg7IH1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gIC5jYXJkLWluZm8ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgfSB9XG5cbi5kdHAgPiAuZHRwLWNvbnRlbnQgPiAuZHRwLWRhdGUtdmlldyA+IGhlYWRlci5kdHAtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI3MzE0MDsgfVxuXG4uZHRwIGRpdi5kdHAtZGF0ZSxcbi5kdHAgZGl2LmR0cC10aW1lLFxuLmR0cCAuZHRwLWFjdHVhbC1tZXJpZGllbiBhLnNlbGVjdGVkLFxuLmR0cCAuZHRwLXBpY2tlci10aW1lID4gYS5kdHAtc2VsZWN0LWhvdXIuc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2Q0NjUzOyB9XG5cbi5kdHAgLnAxMCA+IGEsXG4uZHRwIC5kdHAtaGFuZC5vbixcbi5kdHAgdGFibGUuZHRwLXBpY2tlci1kYXlzIHRyID4gdGQgPiBhLnNlbGVjdGVkLFxuLmR0cCAuZHRwLXBpY2tlci10aW1lID4gYS5kdHAtc2VsZWN0LW1pbnV0ZS5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZDQ2NTM7IH1cblxuLmR0cCBkaXYuZHRwLWFjdHVhbC15ZWFyLFxuLmR0cCBkaXYuZHRwLXllYXItYnRuIHtcbiAgY29sb3I6ICNiZGJkYmQ7IH1cblxuLmR0cCAuZHRwLXBpY2tlci1tb250aCB7XG4gIG1hcmdpbi10b3A6IDhweDtcbiAgcGFkZGluZy10b3A6IDhweDtcbiAgcGFkZGluZy1ib3R0b206IDhweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VjZWRlZTtcbiAgY29sb3I6ICMzZDQ2NTM7IH1cblxubWQtaW5wdXQtY29udGFpbmVyLm1kLWRlZmF1bHQtdGhlbWUgLm1kLWlucHV0W2Rpc2FibGVkXSxcbm1kLWlucHV0LWNvbnRhaW5lciAubWQtaW5wdXRbZGlzYWJsZWRdLFxubWQtaW5wdXQtY29udGFpbmVyLm1kLWRlZmF1bHQtdGhlbWUgLm1kLWlucHV0IFtkaXNhYmxlZF0sXG5tZC1pbnB1dC1jb250YWluZXIgLm1kLWlucHV0IFtkaXNhYmxlZF0ge1xuICBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjYpOyB9XG5cbmhlYWRlciB7XG4gIHotaW5kZXg6IDYwOyB9XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1OTlweCkge1xuICBoZWFkZXIgbWQtdG9vbGJhciAubWQtYnV0dG9uLm1kLWljb24tYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7IH0gfVxuXG5tZC1jb250ZW50IHtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlZGVlOyB9XG5cbm1kLXNlbGVjdC1tZW51IG1kLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB9XG4gIG1kLXNlbGVjdC1tZW51IG1kLWNvbnRlbnQgbWQtb3B0aW9uOmhvdmVyLCBtZC1zZWxlY3QtbWVudSBtZC1jb250ZW50IG1kLW9wdGlvbjpmb2N1cyB7XG4gICAgY29sb3I6ICMzZDQ2NTMgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZlMGUzICFpbXBvcnRhbnQ7IH1cblxubWQtdG9vbGJhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNzMxNDAgIWltcG9ydGFudDsgfVxuXG4ubWQtY29udGVudC1zdWJoZWFkZXIge1xuICBwYWRkaW5nOiA0cHggOHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYzO1xuICBjb2xvcjogIzQyNDI0MjtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNHB4OyB9XG5cbm1kLWNoZWNrYm94Lm1kLWNoZWNrZWQgLm1kLWljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTA4MGYyOyB9XG4gIG1kLWNoZWNrYm94Lm1kLWNoZWNrZWQgLm1kLWljb246OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICNmZmZmZmY7IH1cblxubWQtdG9vbHRpcCB7XG4gIGZvbnQtc2l6ZTogMTRweDsgfVxuXG4uZmFiLWNsb3NlZC1pY29uLCAuZmFiLW9wZW4taWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxN3B4O1xuICBsZWZ0OiAxNnB4O1xuICB0cmFuc2l0aW9uOiBhbGwgLjNzIGVhc2UtaW4tb3V0O1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9XG5cbi5mYWItb3Blbi1pY29uIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTsgfVxuXG4ubWQtaXMtb3BlbiAuZmFiLWNsb3NlZC1pY29uIHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTsgfVxuXG4ubWQtaXMtb3BlbiAuZmFiLW9wZW4taWNvbiB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7IH1cblxubWQtbWVudS1jb250ZW50IC5tZC1idXR0b24ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDRweCAwOyB9XG4gIG1kLW1lbnUtY29udGVudCAubWQtYnV0dG9uOmhvdmVyLCBtZC1tZW51LWNvbnRlbnQgLm1kLWJ1dHRvbjpmb2N1cyB7XG4gICAgY29sb3I6ICMzZDQ2NTMgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZlMGUzICFpbXBvcnRhbnQ7IH1cbiAgbWQtbWVudS1jb250ZW50IC5tZC1idXR0b246YWN0aXZlIHtcbiAgICBjb2xvcjogIzNkNDY1MyAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNjNGM2Y2I7IH1cblxubWQtdGFicyB7XG4gIHBhZGRpbmctcmlnaHQ6IDhweDtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYmRiZGJkO1xuICBib3JkZXItcmFkaXVzOiAwOyB9XG4gIG1kLXRhYnM6bm90KC5tZC1uby10YWItY29udGVudCk6bm90KC5tZC1keW5hbWljLWhlaWdodCkge1xuICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDsgfVxuICBtZC10YWJzIG1kLWluay1iYXIge1xuICAgIGNvbG9yOiAjMTA4MGYyICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogIzEwODBmMiAhaW1wb3J0YW50OyB9XG4gIG1kLXRhYnMgbWQtdGFiLWNvbnRlbnQge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2VkZWU7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNiZGJkYmQ7IH1cbiAgbWQtdGFicyBtZC1pY29uIHtcbiAgICBjb2xvcjogIzc1NzU3NTsgfVxuICBtZC10YWJzIC5tZC10YWIge1xuICAgIGNvbG9yOiAjNzU3NTc1ICFpbXBvcnRhbnQ7IH1cbiAgICBtZC10YWJzIC5tZC10YWIubWQtYWN0aXZlIHtcbiAgICAgIGNvbG9yOiAjMTA4MGYyICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogNzAwOyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkge1xuICBtZC10YWJzIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4O1xuICAgIHBhZGRpbmctbGVmdDogMjRweDsgfSB9XG5cbi5tZC10YWItaW50ZXJ2YWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlZGVlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JkYmRiZDsgfVxuICAubWQtdGFiLWludGVydmFsIGRpdiA+ICoge1xuICAgIG1hcmdpbi1yaWdodDogMzJweDsgfVxuICAgIC5tZC10YWItaW50ZXJ2YWwgZGl2ID4gKjpsYXN0LW9mLXR5cGUge1xuICAgICAgbWFyZ2luLXJpZ2h0OiA4cHg7IH1cbiAgLm1kLXRhYi1pbnRlcnZhbCAjcXVpY2tJbnRlcnZhbCB7XG4gICAgbWluLXdpZHRoOiAxMjBweDsgfVxuICAubWQtdGFiLWludGVydmFsICNwZXJpb2RJbnRlcnZhbCB7XG4gICAgbWluLXdpZHRoOiAxNjBweDsgfVxuICAubWQtdGFiLWludGVydmFsIC5tZC1jb250ZW50LXRpdGxlIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTZweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7IH1cbiAgLm1kLXRhYi1pbnRlcnZhbCBtZC1pbnB1dC1jb250YWluZXIge1xuICAgIG1hcmdpbi1ib3R0b206IDA7IH1cbiAgICAubWQtdGFiLWludGVydmFsIG1kLWlucHV0LWNvbnRhaW5lciAubWQtZXJyb3JzLXNwYWNlciB7XG4gICAgICBtaW4taGVpZ2h0OiA4cHg7IH1cbiAgLm1kLXRhYi1pbnRlcnZhbCBvbCwgLm1kLXRhYi1pbnRlcnZhbCB1bCB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG4gICAgLm1kLXRhYi1pbnRlcnZhbCBvbCBsaSwgLm1kLXRhYi1pbnRlcnZhbCB1bCBsaSB7XG4gICAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgY29sb3I6ICM0MjQyNDI7XG4gICAgICBmb250LXdlaWdodDogNTAwOyB9XG4gICAgICAubWQtdGFiLWludGVydmFsIG9sIGxpOmhvdmVyLCAubWQtdGFiLWludGVydmFsIHVsIGxpOmhvdmVyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyOyB9XG4gICAgICAubWQtdGFiLWludGVydmFsIG9sIGxpOmhvdmVyLCAubWQtdGFiLWludGVydmFsIG9sIGxpOmFjdGl2ZSwgLm1kLXRhYi1pbnRlcnZhbCBvbCBsaTpmb2N1cywgLm1kLXRhYi1pbnRlcnZhbCB1bCBsaTpob3ZlciwgLm1kLXRhYi1pbnRlcnZhbCB1bCBsaTphY3RpdmUsIC5tZC10YWItaW50ZXJ2YWwgdWwgbGk6Zm9jdXMge1xuICAgICAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzEwODBmMjtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OyB9XG5cbi5zdWJoZWFkZXItcGVyaW9kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMztcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNiZGJkYmQ7IH1cbiAgLnN1YmhlYWRlci1wZXJpb2QgLm1kLXN1YmhlYWRlci1pbm5lciB7XG4gICAgcGFkZGluZzogMCAzMnB4IDAgMTZweDsgfVxuICAuc3ViaGVhZGVyLXBlcmlvZCAuc3ViaGVhZGVyLXRpdGxlIHtcbiAgICBjb2xvcjogIzc1NzU3NTtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGZvbnQtc2l6ZTogMTZweDsgfVxuICAuc3ViaGVhZGVyLXBlcmlvZCBidXR0b246bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cbiAgLnN1YmhlYWRlci1wZXJpb2QgbWQtaW5wdXQtY29udGFpbmVyIHtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNHB4OyB9XG4gICAgLnN1YmhlYWRlci1wZXJpb2QgbWQtaW5wdXQtY29udGFpbmVyIC5tZC1lcnJvcnMtc3BhY2VyIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDA7IH1cblxuI3NlZWtlclN1bW1hcnkgbWQtcGFnaW5hdGlvbi13cmFwcGVyIHtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgfVxuXG4jc2Vla2VyQ29tcGFyYXRpdmUgbWQtcGFnaW5hdGlvbi13cmFwcGVyIHtcbiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgfVxuXG5tZC1zaWRlbmF2IG1kLWNvbnRlbnQsIG1kLXNpZGVuYXYgbWQtY29udGVudCAubWQtc3ViaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH1cblxubWQtc2lkZW5hdiBtZC1kaXZpZGVyIHtcbiAgbWFyZ2luLXRvcDogNHB4O1xuICBtYXJnaW4tYm90dG9tOiA0cHg7IH1cblxubWQtc2lkZW5hdiBtZC1saXN0LWl0ZW0gbWQtaWNvbiB7XG4gIG1hcmdpbjogMCA4cHggMCAwOyB9XG5cbm1kLXNpZGVuYXYgbWQtbGlzdC1pdGVtIC5tZC1saXN0LWl0ZW0taW5uZXIge1xuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfVxuICBtZC1zaWRlbmF2IG1kLWxpc3QtaXRlbSAubWQtbGlzdC1pdGVtLWlubmVyIG1kLWljb24ge1xuICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbiAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH1cblxubWQtc2lkZW5hdiBtZC1saXN0LWl0ZW06YWN0aXZlLCBtZC1zaWRlbmF2IG1kLWxpc3QtaXRlbTpmb2N1cywgbWQtc2lkZW5hdiBtZC1saXN0LWl0ZW06aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZlMGUzO1xuICBjb2xvcjogIzNkNDY1MzsgfVxuICBtZC1zaWRlbmF2IG1kLWxpc3QtaXRlbTphY3RpdmUgbWQtaWNvbiwgbWQtc2lkZW5hdiBtZC1saXN0LWl0ZW06Zm9jdXMgbWQtaWNvbiwgbWQtc2lkZW5hdiBtZC1saXN0LWl0ZW06aG92ZXIgbWQtaWNvbiB7XG4gICAgY29sb3I6ICMzZDQ2NTMgIWltcG9ydGFudDsgfVxuXG5tZC1zaWRlbmF2IC5tZC1hdmF0YXIge1xuICBoZWlnaHQ6IDY0cHg7XG4gIHdpZHRoOiA2NHB4OyB9XG4gIG1kLXNpZGVuYXYgLm1kLWF2YXRhciBpbWcge1xuICAgIGhlaWdodDogNjRweDtcbiAgICB3aWR0aDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7IH1cblxubWQtc2lkZW5hdiAudG9vbGJhci1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi8uLi9hc3NldHMvaW1hZ2VzL2JnLWhlYWRlci5wbmdcIik7XG4gIGJhY2tncm91bmQtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IH1cblxuI3NpZGVuYXZNZW51IHtcbiAgd2lkdGg6IDI0MHB4O1xuICBtYXgtd2lkdGg6IDI0MHB4O1xuICBoZWlnaHQ6IGluaGVyaXQ7IH1cbiAgI3NpZGVuYXZNZW51IG1kLXRvb2xiYXIge1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNjBweDtcbiAgICBtaW4taGVpZ2h0OiAxNjBweDtcbiAgICBtYXgtaGVpZ2h0OiAxNjBweDsgfVxuICAjc2lkZW5hdk1lbnUgbWQtY29udGVudCB7XG4gICAgaGVpZ2h0OiBpbmhlcml0OyB9XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHtcbiAgI3NpZGVuYXZNZW51IHtcbiAgICB6LWluZGV4OiA1ODtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNiZGJkYmQ7IH0gfVxuXG4jc2lkZW5hdkZpbHRlciB7XG4gIHdpZHRoOiAzMjBweDtcbiAgbWF4LXdpZHRoOiAzMjBweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7IH1cbiAgI3NpZGVuYXZGaWx0ZXIgbWQtdGFicyBtZC10YWItY29udGVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuICAjc2lkZW5hdkZpbHRlciBtZC1saXN0LWl0ZW0ge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjFmMmYyOyB9XG4gICAgI3NpZGVuYXZGaWx0ZXIgbWQtbGlzdC1pdGVtOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBib3JkZXItYm90dG9tOiBub25lOyB9XG5cbnRoZWFkIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfVxuXG4udGQtY29sb3JlZCB7XG4gIG1heC13aWR0aDogMTAwcHg7IH1cblxuaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgY29sb3I6ICMzZDQ2NTM7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDsgfVxuXG5zbWFsbCB7XG4gIG9wYWNpdHk6IC42OyB9XG5cbmEge1xuICBjb2xvcjogIzNkNDY1MzsgfVxuICBhOmZvY3VzLCBhOmhvdmVyLCBhOmFjdGl2ZSB7XG4gICAgY29sb3I6ICMyNzMxNDA7IH1cblxuaHRtbCwgYm9keSB7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtZmFtaWx5OiBcIlJvYm90b1wiLCBcIkhlbHZldGljYVwiLCBzYW5zLXNlcmlmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlZGVlO1xuICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuICBvdmVyZmxvdzogaGlkZGVuOyB9XG5cbi5kaXNwbGF5LWZsZXgge1xuICBkaXNwbGF5OiBmbGV4OyB9XG5cbi5uby1wYWRkaW5nIHtcbiAgcGFkZGluZzogMDsgfVxuXG4ubm8tbWFyZ2luIHtcbiAgbWFyZ2luOiAwOyB9XG5cbi5wYWRkaW5nLXNtIHtcbiAgcGFkZGluZzogOHB4OyB9XG4gIC5wYWRkaW5nLXNtX190YiB7XG4gICAgcGFkZGluZy10b3A6IDhweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogOHB4OyB9XG4gIC5wYWRkaW5nLXNtX19ybCB7XG4gICAgcGFkZGluZy1yaWdodDogOHB4O1xuICAgIHBhZGRpbmctbGVmdDogOHB4OyB9XG5cbi5wYWRkaW5nLW1kIHtcbiAgcGFkZGluZzogMTZweDsgfVxuICAucGFkZGluZy1tZF9fdGIge1xuICAgIHBhZGRpbmctdG9wOiAxNnB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAxNnB4OyB9XG4gIC5wYWRkaW5nLW1kX19ybCB7XG4gICAgcGFkZGluZy1yaWdodDogMTZweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7IH1cblxuLnBhZGRpbmctbGcge1xuICBwYWRkaW5nOiAzMnB4OyB9XG4gIC5wYWRkaW5nLWxnX190YiB7XG4gICAgcGFkZGluZy10b3A6IDMycHg7XG4gICAgcGFkZGluZy1ib3R0b206IDMycHg7IH1cbiAgLnBhZGRpbmctbGdfX3JsIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzMnB4O1xuICAgIHBhZGRpbmctbGVmdDogMzJweDsgfVxuXG4ubWFyZ2luLXNtIHtcbiAgbWFyZ2luOiA4cHg7IH1cbiAgLm1hcmdpbi1zbV9fdGIge1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7IH1cbiAgLm1hcmdpbi1zbV9fcmwge1xuICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7IH1cblxuLm1hcmdpbi1tZCB7XG4gIG1hcmdpbjogMTZweDsgfVxuICAubWFyZ2luLW1kX190YiB7XG4gICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnB4OyB9XG4gIC5tYXJnaW4tbWRfX3JsIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7XG4gICAgbWFyZ2luLWxlZnQ6IDE2cHg7IH1cblxuLm1hcmdpbi1sZyB7XG4gIG1hcmdpbjogMzJweDsgfVxuICAubWFyZ2luLWxnX190YiB7XG4gICAgbWFyZ2luLXRvcDogMzJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAzMnB4OyB9XG4gIC5tYXJnaW4tbGdfX3JsIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDMycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDMycHg7IH1cblxuLm1hcmdpbi1hdXRvIHtcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bzsgfVxuXG4uZmxvYXRfX2xlZnQge1xuICBmbG9hdDogbGVmdDsgfVxuXG4uZmxvYXRfX3JpZ2h0IHtcbiAgZmxvYXQ6IHJpZ2h0OyB9XG5cbi50ZXh0X19sZWZ0IHtcbiAgdGV4dC1hbGlnbjogbGVmdDsgfVxuXG4udGV4dF9fY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi50ZXh0X19yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0OyB9XG5cbi50ZXh0X19sb3dlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlOyB9XG5cbi50ZXh0X191cHBlcmNhc2Uge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9XG5cbi50ZXh0X19jYXBpdGFsaXplIHtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7IH1cblxuLnRleHRfX3RoaW4ge1xuICBmb250LXdlaWdodDogMTAwOyB9XG5cbi50ZXh0X19saWdodCB7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7IH1cblxuLnRleHRfX3JlZ3VsYXIge1xuICBmb250LXdlaWdodDogNDAwOyB9XG5cbi50ZXh0X19tZWRpdW0ge1xuICBmb250LXdlaWdodDogNTAwOyB9XG5cbi50ZXh0X19ib2xkIHtcbiAgZm9udC13ZWlnaHQ6IDcwMDsgfVxuXG4udGV4dF9fYmxhY2sge1xuICBmb250LXdlaWdodDogOTAwOyB9XG5cbi5iZ19fbGlnaHQtcHJpbWFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlY2VkZWU7IH1cblxuLmJnX19saWdodC1zZWNvbmRhcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNlZGVlOyB9XG5cbi5iZ19fZGFyay1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI3MzE0MDsgfVxuXG4uYmdfX2Rhcmstc2Vjb25kYXJ5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgfVxuXG4ucmliYm9uIHtcbiAgLXdlYmtpdC1mbGV4LXNocmluazogMDtcbiAgLW1vei1mbGV4LXNocmluazogMDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICBoZWlnaHQ6IDUwdmg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2ZkOGRjOyB9XG5cbi5tYWluIHtcbiAgLXdlYmtpdC1mbGV4LXNocmluazogMDtcbiAgLW1vei1mbGV4LXNocmluazogMDtcbiAgZmxleC1zaHJpbms6IDA7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAwO1xuICBtYXJnaW4tdG9wOiAtNTB2aDsgfVxuXG4ubG9nbyB7XG4gIG1heC1oZWlnaHQ6IDM2cHg7XG4gIG1hcmdpbi1yaWdodDogOHB4OyB9XG5cbi5sb2dpbiB7XG4gIHdpZHRoOiA0MDBweDsgfVxuXG4ubXktY2hhcnQge1xuICBoZWlnaHQ6IGF1dG87XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IGNhbGMoNTAlIC0gNHB4KTtcbiAgYm9yZGVyLXNpemluZzogYm9yZGVyLWJveDsgfVxuXG4uY29udGFpbmVyLWNoYXJ0IHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTYwcHgpIHtcbiAgLm15LWNoYXJ0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi5mcy1pbnB1dCB7XG4gIG1hcmdpbjogNHB4IDAgMjBweCAwO1xuICBwYWRkaW5nOiAxMnB4O1xuICBjb2xvcjogIzQ0NDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3JkZXI6IHNvbGlkIDFweCAjY2NjO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTsgfVxuXG4uZnMtbGFiZWwge1xuICBjb2xvcjogIzY3NTFhMjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LWZhbWlseTogUm9ib3RvOyB9XG5cbi8qKlxuICogIERvIG5vdCByZW1vdmUgdGhlIGNvbW1lbnQgYmVsb3cuIEl0J3MgdGhlIG1hcmtlcnMgdXNlZCBieSBndWxwLWluamVjdCB0byBpbmplY3RcbiAqICBhbGwgeW91ciBzYXNzIGZpbGVzIGF1dG9tYXRpY2FsbHlcbiAqL1xuLmYtYm94IHtcbiAgd2lkdGg6IDMxN3B4O1xuICBoZWlnaHQ6IDQzMXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGO1xuICBib3JkZXI6IDFweCBzb2xpZCAjRDlEOUQ5O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9XG5cbi5mLWJ1dHRvbiB7XG4gIGhlaWdodDogNDhweDtcbiAgcGFkZGluZzogMCAzMnB4O1xuICBmb250LXNpemU6IDFlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogI2ZhZmFmYTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzZBNDg5QjtcbiAgYm9yZGVyOiAzcHggc29saWQgIzZBNDg5QjtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOyB9XG4gIC5mLWJ1dHRvbjpob3ZlciwgLmYtYnV0dG9uOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjN0U1REFGOyB9XG4gIC5mLWJ1dHRvbjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM4ZjY3Y2E7IH1cblxuZi1idXR0b24uZi1ibG9jayBidXR0b24ge1xuICB3aWR0aDogMTAwJTsgfVxuXG4uZi1idXR0b25bZGlzYWJsZWRdIHtcbiAgY29sb3I6IHJnYmEoMjMwLCAyMzAsIDIzMCwgMC43OSk7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTUxLCAxNDAsIDE2NiwgMC42Nyk7XG4gIGJvcmRlcjogM3B4IHNvbGlkIHRyYW5zcGFyZW50OyB9XG5cbi5mLWJ1dHRvbi1saWdodCB7XG4gIGNvbG9yOiAjOTk5O1xuICBib3JkZXI6IDNweCBzb2xpZCAjRDlEOUQ5O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuICAuZi1idXR0b24tbGlnaHQ6aG92ZXIsIC5mLWJ1dHRvbi1saWdodDpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDsgfVxuXG4uZi1zZXBhcmF0b3Ige1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2lkdGg6IDI3NXB4O1xuICBoZWlnaHQ6IDRweDsgfVxuICAuZi1zZXBhcmF0b3IgLmYtc2VwYXJhdG9yLWJsdWUtMSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxNjRweDtcbiAgICBoZWlnaHQ6IDBweDtcbiAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzU5QzVENTsgfVxuICAuZi1zZXBhcmF0b3IgLmYtc2VwYXJhdG9yLWJsdWUtMiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAxMDBweDtcbiAgICB3aWR0aDogMTI4cHg7XG4gICAgaGVpZ2h0OiAwcHg7XG4gICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICMzOThCQzI7IH1cbiAgLmYtc2VwYXJhdG9yIC5mLXNlcGFyYXRvci1wdXJwbGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMjAwcHg7XG4gICAgd2lkdGg6IDEyMnB4O1xuICAgIGhlaWdodDogMHB4O1xuICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCAjNkE0ODlCOyB9XG5cbi5mLWlucHV0IHtcbiAgaGVpZ2h0OiA0NnB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmb250LXNpemU6IDEycHQ7XG4gIGxpbmUtaGVpZ2h0OiAxN3B4O1xuICBjb2xvcjogIzg4ODg4ODtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBwYWRkaW5nLXJpZ2h0OiAyMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDIwcHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIG1pbi13aWR0aDogMCAuZi1pbnB1dDsgfVxuICAuZi1pbnB1dCA6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzU5YzVkNTsgfVxuICAuZi1pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICNjOWM5Yzk7IH1cblxuZi1pbnB1dC5mLWJsb2NrIC5mLWlucHV0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlOyB9XG5cbi5mLWlucHV0LWJvcmRlcmxlc3MgLmYtaW5wdXQge1xuICBib3JkZXI6IDBweDsgfVxuXG4uZi1pbnB1dC1uby1wYWRkaW5nIC5mLWlucHV0IHtcbiAgcGFkZGluZy1yaWdodDogMDtcbiAgcGFkZGluZy1sZWZ0OiAwOyB9XG5cbi5mLWlucHV0LW5vLWxlZnQtcGFkZGluZyAuZi1pbnB1dCB7XG4gIHBhZGRpbmctbGVmdDogMDsgfVxuXG5hLm1kLWJ1dHRvbi5tZC1kZWZhdWx0LXRoZW1lLm1kLXByaW1hcnkubWQtcmFpc2VkLCBhLm1kLWJ1dHRvbi5tZC1wcmltYXJ5Lm1kLXJhaXNlZCwgYS5tZC1idXR0b24ubWQtZGVmYXVsdC10aGVtZS5tZC1wcmltYXJ5Lm1kLWZhYiwgYS5tZC1idXR0b24ubWQtcHJpbWFyeS5tZC1mYWIsIC5tZC1idXR0b24ubWQtZGVmYXVsdC10aGVtZS5tZC1wcmltYXJ5Lm1kLXJhaXNlZCwgLm1kLWJ1dHRvbi5tZC1wcmltYXJ5Lm1kLXJhaXNlZCwgLm1kLWJ1dHRvbi5tZC1kZWZhdWx0LXRoZW1lLm1kLXByaW1hcnkubWQtZmFiLCAubWQtYnV0dG9uLm1kLXByaW1hcnkubWQtZmFiIHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44Nyk7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNzMxNDAgIWltcG9ydGFudDsgfVxuXG4ucmVzZXQtZXJyb3JzIHVsIGxpIHtcbiAgY29sb3I6ICNmOTc1NzU7IH1cbiIsIi8qKlxuICogIERvIG5vdCByZW1vdmUgdGhlIGNvbW1lbnRzIGJlbG93LiBJdCdzIHRoZSBtYXJrZXJzIHVzZWQgYnkgd2lyZWRlcCB0byBpbmplY3RcbiAqICBzYXNzIGRlcGVuZGVuY2llcyB3aGVuIGRlZmluZWQgaW4gdGhlIGJvd2VyLmpzb24gb2YgeW91ciBkZXBlbmRlbmNpZXNcbiAqL1xuLy8gYm93ZXI6c2Nzc1xuLy8gZW5kYm93ZXJcblxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvOjMwMCw0MDAsNTAwLDcwMCw0MDBpdGFsaWNcIik7XG5AaW1wb3J0IHVybChcImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnNcIik7XG5cbkBpbXBvcnQgJy4uL3N0eWxlL3N0eWxlcy5zY3NzJztcblxuLyoqXG4gKiAgRG8gbm90IHJlbW92ZSB0aGUgY29tbWVudCBiZWxvdy4gSXQncyB0aGUgbWFya2VycyB1c2VkIGJ5IGd1bHAtaW5qZWN0IHRvIGluamVjdFxuICogIGFsbCB5b3VyIHNhc3MgZmlsZXMgYXV0b21hdGljYWxseVxuICovXG4vLyBpbmplY3RvclxuQGltcG9ydCBcImNvbXBvbmVudHMvRkJveC9GYm94LnNjc3NcIjtcbkBpbXBvcnQgXCJjb21wb25lbnRzL0ZCdXR0b24vRkJ1dHRvbi5zY3NzXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9GU2VwYXJhdG9yL0ZTZXBhcmF0b3Iuc2Nzc1wiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvRklucHV0L0ZJbnB1dC5zY3NzXCI7XG4vLyBlbmRpbmplY3RvclxuXG5cbmEubWQtYnV0dG9uLm1kLWRlZmF1bHQtdGhlbWUubWQtcHJpbWFyeS5tZC1yYWlzZWQsIGEubWQtYnV0dG9uLm1kLXByaW1hcnkubWQtcmFpc2VkLCBhLm1kLWJ1dHRvbi5tZC1kZWZhdWx0LXRoZW1lLm1kLXByaW1hcnkubWQtZmFiLCBhLm1kLWJ1dHRvbi5tZC1wcmltYXJ5Lm1kLWZhYiwgLm1kLWJ1dHRvbi5tZC1kZWZhdWx0LXRoZW1lLm1kLXByaW1hcnkubWQtcmFpc2VkLCAubWQtYnV0dG9uLm1kLXByaW1hcnkubWQtcmFpc2VkLCAubWQtYnV0dG9uLm1kLWRlZmF1bHQtdGhlbWUubWQtcHJpbWFyeS5tZC1mYWIsIC5tZC1idXR0b24ubWQtcHJpbWFyeS5tZC1mYWIge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuODcpO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItY29sb3ItYmcgIWltcG9ydGFudDtcbn1cblxuLnJlc2V0LWVycm9ycyB7XG4gICAgICB1bCBsaSB7XG4gICAgICAgICAgICBjb2xvcjogI2Y5NzU3NTtcbiAgICAgIH1cbn1cbiIsImJvZHkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZhZmFmYSAhaW1wb3J0YW50O1xufVxuaHRtbCBib2R5LCBpbnB1dCwgYnV0dG9uLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCB0ZXh0YXJlYSB7XG4gICAgICBmb250LWZhbWlseTogJ1BUIFNhbnMnLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7XG59XG5cbi5zdWNjZXNzLW1lc3NhZ2Utc2VudCBwIHtcbiAgICAgIGNvbG9yOiAjOTk5O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLnN1Y2Nlc3MtbWVzc2FnZS1zZW50IGgzIHtcbiAgICAgIGNvbG9yOiAjNzc3O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyBJbXBvcnQgY29tcG9uZW50c1xuQGltcG9ydCAnbG9naW4tcGFnZS1zdHlsZS9sb2dpbi1wYWdlLXN0eWxlLnNjc3MnO1xuQGltcG9ydCAnLi4vLi4vYm93ZXJfY29tcG9uZW50cy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYm91cmJvbi5zY3NzJztcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtY29sb3JzL2Rpc3QvY29sb3JzLnNjc3MnO1xuXG4vLyBJbXBvcnQgbW9kdWxlc1xuQGltcG9ydCAnbW9kdWxlcy9fYWxsLnNjc3MnO1xuXG4vLyBJbXBvcnQgTWF0ZXJpYWwgRGVzaWduIExpdGVcbkBpbXBvcnQgJy4uLy4uL2Jvd2VyX2NvbXBvbmVudHMvbWF0ZXJpYWwtZGVzaWduLWxpdGUvc3JjL21hdGVyaWFsLWRlc2lnbi1saXRlLnNjc3MnO1xuXG4vLyBJbXBvcnQgcGFydGlhbHNcbkBpbXBvcnQgJ3BhcnRpYWxzL19idXR0b25zLnNjc3MnO1xuQGltcG9ydCAncGFydGlhbHMvX2NhcmQuc2Nzcyc7XG5AaW1wb3J0ICdwYXJ0aWFscy9fZGF0ZXRpbWVwaWNrZXIuc2Nzcyc7XG5AaW1wb3J0ICdwYXJ0aWFscy9faGVhZGVyLnNjc3MnO1xuQGltcG9ydCAncGFydGlhbHMvX2xheW91dC5zY3NzJztcbkBpbXBvcnQgJ3BhcnRpYWxzL19tZW51LnNjc3MnO1xuQGltcG9ydCAncGFydGlhbHMvX3NlZWtlci5zY3NzJztcbkBpbXBvcnQgJ3BhcnRpYWxzL19zaWRlbmF2LnNjc3MnO1xuQGltcG9ydCAncGFydGlhbHMvX3RhYmxlLnNjc3MnO1xuQGltcG9ydCAncGFydGlhbHMvX3R5cG9ncmFwaHkuc2Nzcyc7XG5cbi8vIEltcG9ydCBsYXlvdXQgZnJhZ21lbnRzXG5AaW1wb3J0ICdsYXlvdXQvX2Jhc2Uuc2Nzcyc7XG5AaW1wb3J0ICdsYXlvdXQvX2hpZ2hjaGFydF9maWxsX3BhcmVudF9pc3N1ZV9oYWNrLnNjc3MnO1xuLy9AaW1wb3J0ICdsYXlvdXQvX2llX21hdGVyaWFsX2hhY2suc2Nzcyc7XG5cbi5mcy1pbnB1dCB7XG4gICAgICBtYXJnaW46IDRweCAwIDIwcHggMDtcbiAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICBjb2xvcjogIzQ0NDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgIGJvcmRlcjogc29saWQgMXB4ICNjY2M7XG4gICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbn1cbi5mcy1sYWJlbCB7XG4gICAgICBjb2xvcjogIzY3NTFhMjtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG59XG4iLCIubm90aWZpY2F0aW9uLWZzZW5zZSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBwYWRkaW5nOiA0cHggMTZweDtcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICBtaW4td2lkdGg6IDQ1MHB4O1xuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7XG4gICAgICB0b3A6IDA7XG4gICAgICBib3gtc2hhZG93OiAwIDAgM3B4IGdyZXk7XG5cbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBub3RpZmljYXRpb24tZW50ZXI7XG4gICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLW91dDtcbiAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7XG59XG4ubm90aWZpY2F0aW9uLWxlYXZlIHtcbiAgICAgIHRvcDogLTQwcHg7XG4gICAgICBhbmltYXRpb24tbmFtZTogbm90aWZpY2F0aW9uLWxlYXZlO1xuICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG4gICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuM3M7XG4gICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxO1xufVxuLm5vdGlmaWNhdGlvbi1kZWZhdWx0IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgfVxuLm5vdGlmaWNhdGlvbi1wcmltYXJ5IHsgYmFja2dyb3VuZC1jb2xvcjogZ3JleTsgfVxuLm5vdGlmaWNhdGlvbi1zdWNjZXNzIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM1OGNlNTg7XG4gICAgICBjb2xvcjogd2hpdGU7XG59XG4ubm90aWZpY2F0aW9uLXdhcm5pbmcgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmV5OyB9XG4ubm90aWZpY2F0aW9uLWVycm9yIHtcbiAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNkYzY0NjQ7XG59XG5cbkBrZXlmcmFtZXMgbm90aWZpY2F0aW9uLWVudGVyIHtcbiAgICAgIGZyb20geyB0b3A6IC0zMHB4OyB9XG4gICAgICB0byB7IHRvcDogMDsgfVxufVxuQGtleWZyYW1lcyBub3RpZmljYXRpb24tbGVhdmUge1xuICAgICAgZnJvbSB7IHRvcDogMHB4OyB9XG4gICAgICB0byB7IHRvcDogLTQwcHg7IH1cbn1cbiIsIi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogJ01hdGVyaWFsIEljb25zJztcbi8vICAgZm9udC1zdHlsZTogbm9ybWFsO1xuLy8gICBmb250LXdlaWdodDogNDAwO1xuLy8gICBzcmM6IHVybCguLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1pY29uZm9udC9pY29uZm9udC9NYXRlcmlhbEljb25zLVJlZ3VsYXIuZW90KTsgLyogRm9yIElFNi04ICovXG4vLyAgIHNyYzogbG9jYWwoJ01hdGVyaWFsIEljb25zJyksXG4vLyAgICAgICAgbG9jYWwoJ01hdGVyaWFsSWNvbnMtUmVndWxhcicpLFxuLy8gICAgICAgIHVybCguLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1pY29uZm9udC9pY29uZm9udC9NYXRlcmlhbEljb25zLVJlZ3VsYXIud29mZjIpIGZvcm1hdCgnd29mZjInKSxcbi8vICAgICAgICB1cmwoLi4vLi4vYm93ZXJfY29tcG9uZW50cy9tYXRlcmlhbC1kZXNpZ24taWNvbmZvbnQvaWNvbmZvbnQvTWF0ZXJpYWxJY29ucy1SZWd1bGFyLndvZmYpIGZvcm1hdCgnd29mZicpLFxuLy8gICAgICAgIHVybCguLi8uLi9ib3dlcl9jb21wb25lbnRzL21hdGVyaWFsLWRlc2lnbi1pY29uZm9udC9pY29uZm9udC9NYXRlcmlhbEljb25zLVJlZ3VsYXIudHRmKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4vLyB9XG4vL1xuLy8gLm1hdGVyaWFsLWljb25zIHtcbi8vICAgZm9udC1mYW1pbHk6ICdNYXRlcmlhbCBJY29ucyc7XG4vLyAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4vLyAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbi8vICAgZm9udC1zaXplOiAyNHB4OyAgLyogUHJlZmVycmVkIGljb24gc2l6ZSAqL1xuLy8gICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4vLyAgIGxpbmUtaGVpZ2h0OiAxO1xuLy8gICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbi8vICAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDtcbi8vICAgd29yZC13cmFwOiBub3JtYWw7XG4vLyAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4vLyAgIGRpcmVjdGlvbjogbHRyO1xuLy9cbi8vICAgLyogU3VwcG9ydCBmb3IgYWxsIFdlYktpdCBicm93c2Vycy4gKi9cbi8vICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4vLyAgIC8qIFN1cHBvcnQgZm9yIFNhZmFyaSBhbmQgQ2hyb21lLiAqL1xuLy8gICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5O1xuLy9cbi8vICAgLyogU3VwcG9ydCBmb3IgRmlyZWZveC4gKi9cbi8vICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbi8vXG4vLyAgIC8qIFN1cHBvcnQgZm9yIElFLiAqL1xuLy8gICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdsaWdhJztcbi8vIH1cblxuLyogUnVsZXMgZm9yIHNpemluZyB0aGUgaWNvbi4gKi9cbi5tYXRlcmlhbC1pY29ucy5tZC0xOCB7IGZvbnQtc2l6ZTogMThweDsgfVxuLm1hdGVyaWFsLWljb25zLm1kLTI0IHsgZm9udC1zaXplOiAyNHB4OyB9XG4ubWF0ZXJpYWwtaWNvbnMubWQtMzYgeyBmb250LXNpemU6IDM2cHg7IH1cbi5tYXRlcmlhbC1pY29ucy5tZC00OCB7IGZvbnQtc2l6ZTogNDhweDsgfVxuXG4vKiBSdWxlcyBmb3IgdXNpbmcgaWNvbnMgYXMgYmxhY2sgb24gYSBsaWdodCBiYWNrZ3JvdW5kLiAqL1xuLm1hdGVyaWFsLWljb25zLm1kLWRhcmsgeyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjU0KTsgfVxuLm1hdGVyaWFsLWljb25zLm1kLWRhcmsubWQtaW5hY3RpdmUgeyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI2KTsgfVxuXG4vKiBSdWxlcyBmb3IgdXNpbmcgaWNvbnMgYXMgd2hpdGUgb24gYSBkYXJrIGJhY2tncm91bmQuICovXG4ubWF0ZXJpYWwtaWNvbnMubWQtbGlnaHQgeyBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsgfVxuLm1hdGVyaWFsLWljb25zLm1kLWxpZ2h0Lm1kLWluYWN0aXZlIHsgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTsgfVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogTWF0ZXJpYWwgRGVzaWduIExpdGUgKi9cblxuLy8gVmFyaWFibGVzIGFuZCBtaXhpbnNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJtaXhpbnNcIjtcblxuLy8gUmVzZXRzIGFuZCBkZXBlbmRlbmNpZXNcbkBpbXBvcnQgXCJyZXNldHMvcmVzZXRzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS90eXBvZ3JhcGh5XCI7XG5cbi8vIENvbXBvbmVudHNcbkBpbXBvcnQgXCJwYWxldHRlL3BhbGV0dGVcIjtcbkBpbXBvcnQgXCJyaXBwbGUvcmlwcGxlXCI7XG5AaW1wb3J0IFwiYW5pbWF0aW9uL2FuaW1hdGlvblwiO1xuQGltcG9ydCBcImJhZGdlL2JhZGdlXCI7XG5AaW1wb3J0IFwiYnV0dG9uL2J1dHRvblwiO1xuQGltcG9ydCBcImNhcmQvY2FyZFwiO1xuQGltcG9ydCBcImNoZWNrYm94L2NoZWNrYm94XCI7XG5AaW1wb3J0IFwiZGF0YS10YWJsZS9kYXRhLXRhYmxlXCI7XG5AaW1wb3J0IFwiZm9vdGVyL21lZ2FfZm9vdGVyXCI7XG5AaW1wb3J0IFwiZm9vdGVyL21pbmlfZm9vdGVyXCI7XG5AaW1wb3J0IFwiaWNvbi10b2dnbGUvaWNvbi10b2dnbGVcIjtcbkBpbXBvcnQgXCJtZW51L21lbnVcIjtcbkBpbXBvcnQgXCJwcm9ncmVzcy9wcm9ncmVzc1wiO1xuQGltcG9ydCBcImxheW91dC9sYXlvdXRcIjtcbkBpbXBvcnQgXCJyYWRpby9yYWRpb1wiO1xuQGltcG9ydCBcInNsaWRlci9zbGlkZXJcIjtcbkBpbXBvcnQgXCJzcGlubmVyL3NwaW5uZXJcIjtcbkBpbXBvcnQgXCJzd2l0Y2gvc3dpdGNoXCI7XG5AaW1wb3J0IFwidGFicy90YWJzXCI7XG5AaW1wb3J0IFwidGV4dGZpZWxkL3RleHRmaWVsZFwiO1xuQGltcG9ydCBcInRvb2x0aXAvdG9vbHRpcFwiO1xuQGltcG9ydCBcInNoYWRvdy9zaGFkb3dcIjtcbkBpbXBvcnQgXCJncmlkL2dyaWRcIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgJENPTlRFTlRTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXG4gKiBTVFlMRSBHVUlERSBWQVJJQUJMRVMtLS0tLS0tLS0tLS0tLS0tLS1EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXNcbiAqIC0tLS0tVHlwb2dyYXBoeVxuICogLS0tLS1Db2xvcnNcbiAqIC0tLS0tVGV4dGZpZWxkXG4gKiAtLS0tLVN3aXRjaFxuICogLS0tLS1TcGlubmVyXG4gKiAtLS0tLVJhZGlvXG4gKiAtLS0tLU1lbnVcbiAqIC0tLS0tTGlzdFxuICogLS0tLS1MYXlvdXRcbiAqIC0tLS0tSWNvbiB0b2dnbGVzXG4gKiAtLS0tLUZvb3RlclxuICogLS0tLS1Db2x1bW5cbiAqIC0tLS0tQ2hlY2tib3hcbiAqIC0tLS0tQ2FyZFxuICogLS0tLS1CdXR0b25cbiAqIC0tLS0tQW5pbWF0aW9uXG4gKiAtLS0tLVByb2dyZXNzXG4gKiAtLS0tLUJhZGdlXG4gKiAtLS0tLVNoYWRvd3NcbiAqIC0tLS0tR3JpZFxuICogLS0tLS1EYXRhIHRhYmxlXG4gKi9cblxuXG4vKiA9PT09PT09PT09ICBUWVBPR1JBUEhZICA9PT09PT09PT09ICovXG5cbi8qIFdlJ3JlIHNwbGl0dGluZyBmb250cyBpbnRvIFwicHJlZmVycmVkXCIgYW5kIFwicGVyZm9ybWFuY2VcIiBpbiBvcmRlciB0byBvcHRpbWl6ZVxuICAgcGFnZSBsb2FkaW5nLiBGb3IgaW1wb3J0YW50IHRleHQsIHN1Y2ggYXMgdGhlIGJvZHksIHdlIHdhbnQgaXQgdG8gbG9hZFxuICAgaW1tZWRpYXRlbHkgYW5kIG5vdCB3YWl0IGZvciB0aGUgd2ViIGZvbnQgbG9hZCwgd2hlcmVhcyBmb3Igb3RoZXIgc2VjdGlvbnMsXG4gICBzdWNoIGFzIGhlYWRlcnMgYW5kIHRpdGxlcywgd2UncmUgT0sgd2l0aCB0aGluZ3MgdGFraW5nIGEgYml0IGxvbmdlciB0byBsb2FkLlxuICAgV2UgZG8gaGF2ZSBzb21lIG9wdGlvbmFsIGNsYXNzZXMgYW5kIHBhcmFtZXRlcnMgaW4gdGhlIG1peGlucywgaW4gY2FzZSB5b3VcbiAgIGRlZmluaXRlbHkgd2FudCB0byBtYWtlIHN1cmUgeW91J3JlIHVzaW5nIHRoZSBwcmVmZXJyZWQgZm9udCBhbmQgZG9uJ3QgbWluZFxuICAgdGhlIHBlcmZvcm1hbmNlIGhpdC5cbiAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIGltcHJvdmUgb24gdGhpcyBvbmNlIENTUyBGb250IExvYWRpbmcgTDMgYmVjb21lcyBtb3JlXG4gICB3aWRlbHkgYXZhaWxhYmxlLlxuKi9cbiRwcmVmZXJyZWRfZm9udDogJ1JvYm90bycsICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xuJHBlcmZvcm1hbmNlX2ZvbnQ6ICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmICFkZWZhdWx0O1xuXG4vKiA9PT09PT09PT09ICBDT0xPUlMgID09PT09PT09PT0gKi9cblxuLyoqXG4qXG4qIE1hdGVyaWFsIGRlc2lnbiBjb2xvciBwYWxldHRlcy5cbiogQHNlZSBodHRwOi8vd3d3Lmdvb2dsZS5jb20vZGVzaWduL3NwZWMvc3R5bGUvY29sb3IuaHRtbFxuKlxuKiovXG5cbkBpbXBvcnQgXCJjb2xvci1kZWZpbml0aW9uc1wiO1xuQGltcG9ydCBcImZ1bmN0aW9uc1wiO1xuXG4vKiA9PT09PT09PT09ICBJTUFHRVMgID09PT09PT09PT0gKi9cbiRpbWFnZV9wYXRoOiAnL2ltYWdlcycgIWRlZmF1bHQ7XG5cbi8qID09PT09PT09PT0gIENvbG9yICYgVGhlbWVzICA9PT09PT09PT09ICovXG5cbi8vIERlZmluZSB3aGV0aGVyIGluZGl2aWR1YWwgY29sb3IgcGFsbGV0IGl0ZW1zIHNob3VsZCBoYXZlIGNsYXNzZXMgY3JlYXRlZC5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgcmVtb3ZlIGluZGl2aWR1YWwgY29sb3IgY2xhc3NlcyBmb3IgZWFjaCBjb2xvciBpbiB0aGUgcGFsbGV0cy5cbi8vIFRvIGltcHJvdmUgb3ZlcmFsbCBwZXJmb3JtYW5jZSAoYXNzdW1pbmcgdGhleSBhcmVuJ3QgdXNlZCkgYnk6XG4vLyAqIFNhdmluZyBzZXJ2ZXIgYmFuZHdpZHRoIHNlbmRpbmcgdGhlIGV4dHJhIGNsYXNzZXNcbi8vICogU2F2ZSBjbGllbnQgY29tcHV0YXRpb24gYWdhaW5zdCB0aGUgY2xhc3Nlc1xuLy8gaXQgaXMgUkVDT01NRU5ERUQgeW91IHNldCB0aGlzIHRvIHRydWUuXG4kdHJpbS1jb2xvci1jbGFzc2VzOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVXNlIGNvbG9yIHByaW1hcmlseSBmb3IgZW1waGFzaXMuIENob29zZSBjb2xvcnMgdGhhdCBmaXQgd2l0aFxuLy8geW91ciBicmFuZCBhbmQgcHJvdmlkZSBnb29kIGNvbnRyYXN0IGJldHdlZW4gdmlzdWFsIGNvbXBvbmVudHMuXG4kY29sb3ItcHJpbWFyeTogJHBhbGV0dGUtaW5kaWdvLTUwMCAhZGVmYXVsdDtcbiRjb2xvci1wcmltYXJ5LWRhcms6ICRwYWxldHRlLWluZGlnby03MDAgIWRlZmF1bHQ7XG4kY29sb3ItYWNjZW50OiAkcGFsZXR0ZS1waW5rLUEyMDAgIWRlZmF1bHQ7XG5cbi8vIE91ciBwcmltYXJ5IGlzIGRhcmssIHNvIHVzZSAkY29sb3ItZGFyay1jb250cmFzdCBmb3Igb3ZlcmxhaWQgdGV4dC5cbiRjb2xvci1wcmltYXJ5LWNvbnRyYXN0OiAkY29sb3ItZGFyay1jb250cmFzdCAhZGVmYXVsdDtcbi8vIE91ciBhY2NlbnQgaXMgZGFyaywgc28gdXNlICRjb2xvci1kYXJrLWNvbnRyYXN0IGZvciBvdmVybGFpZCB0ZXh0LlxuJGNvbG9yLWFjY2VudC1jb250cmFzdDogJGNvbG9yLWRhcmstY29udHJhc3QgIWRlZmF1bHQ7XG5cbi8vIFJlcGxhY2UgYWxsIGNvbG9ycyB3aXRoIHBsYWNlaG9sZGVycyBpZiB3ZSdyZSBnZW5lcmF0aW5nIGEgdGVtcGxhdGUuXG5AaWYgJHN0eWxlZ3VpZGUtZ2VuZXJhdGUtdGVtcGxhdGUgPT0gdHJ1ZSB7XG4gICRjb2xvci1wcmltYXJ5OiAnJGNvbG9yLXByaW1hcnknO1xuICAkY29sb3ItcHJpbWFyeS1kYXJrOiAnJGNvbG9yLXByaW1hcnktZGFyayc7XG4gICRjb2xvci1hY2NlbnQ6ICckY29sb3ItYWNjZW50JztcbiAgJGNvbG9yLXByaW1hcnktY29udHJhc3Q6ICckY29sb3ItcHJpbWFyeS1jb250cmFzdCc7XG4gICRjb2xvci1hY2NlbnQtY29udHJhc3Q6ICckY29sb3ItYWNjZW50LWNvbnRyYXN0Jztcbn1cblxuLyogPT09PT09PT09PSAgVHlwb2dyYXBoeSAgPT09PT09PT09PSAqL1xuXG4vLyBXZSB1c2UgdGhlIGZvbGxvd2luZyBkZWZhdWx0IGNvbG9yIHN0eWxlczogdGV4dC1jb2xvci1wcmltYXJ5IGFuZFxuLy8gdGV4dC1jb2xvci1zZWNvbmRhcnkuIEZvciBsaWdodCB0aGVtZXMsIHVzZSB0ZXh0LWNvbG9yLXByaW1hcnktaW52ZXJzZVxuLy8gYW5kIHRleHQtY29sb3Itc2Vjb25kYXJ5LWludmVyc2UuXG5cbiR0ZXh0LWNvbG9yLXByaW1hcnk6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC44NylcIikgIWRlZmF1bHQ7XG4kdGV4dC1saW5rLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWFjY2VudH0pXCIpICFkZWZhdWx0O1xuXG4vLyBEZWZpbmUgd2hldGhlciB0byB0YXJnZXQgZWxlbWVudHMgZGlyZWN0bHkgZm9yIHR5cG9ncmFwaGljIGVuaGFuY2VtZW50cy5cbi8vIFR1cm5pbmcgdGhpcyBvZmYgbWVhbnMgeW91IG5lZWQgdG8gdXNlIG1kbC0qIGNsYXNzZXMgbW9yZSBvZnRlbi5cbi8vIE90aGVyIGNvbXBvbmVudHMgbWF5IGFsc28gZmFpbCB0byBhZGhlcmUgdG8gTUQgd2l0aG91dCB0aGVzZSBydWxlcy5cbi8vIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHlvdSBsZWF2ZSB0aGlzIGFzIHRydWUuXG5cbiR0YXJnZXQtZWxlbWVudHMtZGlyZWN0bHk6IHRydWUgIWRlZmF1bHQ7XG5cbi8qID09PT09PT09PT0gIENvbXBvbmVudHMgID09PT09PT09PT0gKi9cblxuLyogPT09PT09PT09PSAgU3RhbmRhcmQgQnV0dG9ucyAgPT09PT09PT09PSAqL1xuXG4vLyBEZWZhdWx0IGJ1dHRvbiBjb2xvcnMuXG4kYnV0dG9uLXByaW1hcnktY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JHBhbGV0dGUtZ3JleS01MDB9LCAwLjIwKVwiKSAhZGVmYXVsdDtcbiRidXR0b24tc2Vjb25kYXJ5LWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWJsYWNrfSlcIikgIWRlZmF1bHQ7XG4kYnV0dG9uLWhvdmVyLWNvbG9yOiAkYnV0dG9uLXByaW1hcnktY29sb3IgIWRlZmF1bHQ7XG4kYnV0dG9uLWFjdGl2ZS1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skcGFsZXR0ZS1ncmV5LTUwMH0sIDAuNDApXCIpICFkZWZhdWx0O1xuJGJ1dHRvbi1mb2N1cy1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjEyKVwiKSAhZGVmYXVsdDtcblxuLy8gQ29sb3JlZCBidXR0b24gY29sb3JzLlxuJGJ1dHRvbi1wcmltYXJ5LWNvbG9yLWFsdDogdW5xdW90ZShcInJnYigjeyRjb2xvci1wcmltYXJ5fSlcIikgIWRlZmF1bHQ7XG4kYnV0dG9uLXNlY29uZGFyeS1jb2xvci1hbHQ6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeS1jb250cmFzdH0pXCIpICFkZWZhdWx0O1xuJGJ1dHRvbi1ob3Zlci1jb2xvci1hbHQ6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeX0pXCIpICFkZWZhdWx0O1xuJGJ1dHRvbi1hY3RpdmUtY29sb3ItYWx0OiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnl9KVwiKSAhZGVmYXVsdDtcbiRidXR0b24tZm9jdXMtY29sb3ItYWx0OiAkYnV0dG9uLWZvY3VzLWNvbG9yICFkZWZhdWx0O1xuXG4vLyBSaXBwbGUgY29sb3IgZm9yIGNvbG9yZWQgcmFpc2VkIGJ1dHRvbnMuXG4kYnV0dG9uLXJpcHBsZS1jb2xvci1hbHQ6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeS1jb250cmFzdH0pXCIpICFkZWZhdWx0O1xuXG4vLyBEaXNhYmxlZCBidXR0b24gY29sb3JzLlxuJGJ1dHRvbi1wcmltYXJ5LWNvbG9yLWRpc2FibGVkOiB1bnF1b3RlKFwicmdiYSgjeyRjb2xvci1ibGFja30sIDAuMTIpXCIpICFkZWZhdWx0O1xuJGJ1dHRvbi1zZWNvbmRhcnktY29sb3ItZGlzYWJsZWQ6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC4yNilcIikgIWRlZmF1bHQ7XG5cbi8vIEZBQiBjb2xvcnMgYW5kIHNpemVzLlxuJGJ1dHRvbi1mYWItY29sb3ItYWx0OiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWFjY2VudH0pXCIpICFkZWZhdWx0O1xuJGJ1dHRvbi1mYWItaG92ZXItY29sb3ItYWx0OiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWFjY2VudH0pXCIpICFkZWZhdWx0O1xuJGJ1dHRvbi1mYWItYWN0aXZlLWNvbG9yLWFsdDogdW5xdW90ZShcInJnYigjeyRjb2xvci1hY2NlbnR9KVwiKSAhZGVmYXVsdDtcbiRidXR0b24tZmFiLXRleHQtY29sb3ItYWx0OiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWFjY2VudC1jb250cmFzdH0pXCIpICFkZWZhdWx0O1xuJGJ1dHRvbi1mYWItcmlwcGxlLWNvbG9yLWFsdDogdW5xdW90ZShcInJnYigjeyRjb2xvci1hY2NlbnQtY29udHJhc3R9KVwiKSAhZGVmYXVsdDtcblxuLy8gSWNvbiBidXR0b24gY29sb3JzIGFuZCBzaXplcy5cbiRidXR0b24taWNvbi1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktNzAwfSlcIikgIWRlZmF1bHQ7XG4kYnV0dG9uLWljb24tZm9jdXMtY29sb3I6ICRidXR0b24tZm9jdXMtY29sb3IgIWRlZmF1bHQ7XG5cbi8qID09PT09PT09PT0gIEljb24gVG9nZ2xlcyAgPT09PT09PT09PSAqL1xuXG4kaWNvbi10b2dnbGUtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTcwMH0pXCIpICFkZWZhdWx0O1xuJGljb24tdG9nZ2xlLWZvY3VzLWNvbG9yOiAkYnV0dG9uLWZvY3VzLWNvbG9yICFkZWZhdWx0O1xuJGljb24tdG9nZ2xlLWNoZWNrZWQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeX0pXCIpICFkZWZhdWx0O1xuJGljb24tdG9nZ2xlLWNoZWNrZWQtZm9jdXMtY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLXByaW1hcnl9LCAwLjI2KVwiKSAhZGVmYXVsdDtcbiRpY29uLXRvZ2dsZS1kaXNhYmxlZC1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjI2KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgUmFkaW8gQnV0dG9ucyAgPT09PT09PT09PSAqL1xuXG4kcmFkaW8tY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeX0pXCIpICFkZWZhdWx0O1xuJHJhZGlvLW9mZi1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjU0KVwiKSAhZGVmYXVsdDtcbiRyYWRpby1kaXNhYmxlZC1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjI2KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgUmlwcGxlIGVmZmVjdCAgPT09PT09PT09PSAqL1xuXG4kcmlwcGxlLWJnLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWxpZ2h0LWNvbnRyYXN0fSlcIikgIWRlZmF1bHQ7XG5cbi8qID09PT09PT09PT0gIExheW91dCAgPT09PT09PT09PSAqL1xuXG4kbGF5b3V0LW5hdi1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktMzAwfSlcIikgIWRlZmF1bHQ7XG5cbi8vIERyYXdlclxuJGxheW91dC1kcmF3ZXItYmctY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTUwfSlcIikgIWRlZmF1bHQ7XG4kbGF5b3V0LWRyYXdlci1ib3JkZXItY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTMwMH0pXCIpICFkZWZhdWx0O1xuJGxheW91dC10ZXh0LWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS04MDB9KVwiKSAhZGVmYXVsdDtcbiRsYXlvdXQtZHJhd2VyLW5hdmlnYXRpb24tY29sb3I6ICM3NTc1NzUgIWRlZmF1bHQ7XG4kbGF5b3V0LWRyYXdlci1uYXZpZ2F0aW9uLWxpbmstYWN0aXZlLWJhY2tncm91bmQ6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItbGlnaHQtY29udHJhc3R9KVwiKSAhZGVmYXVsdDtcbiRsYXlvdXQtZHJhd2VyLW5hdmlnYXRpb24tbGluay1hY3RpdmUtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTMwMH0pXCIpICFkZWZhdWx0O1xuXG4vLyBIZWFkZXJcbiRsYXlvdXQtaGVhZGVyLWJnLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnl9KVwiKSAhZGVmYXVsdDtcbiRsYXlvdXQtaGVhZGVyLXRleHQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeS1jb250cmFzdH0pXCIpICFkZWZhdWx0O1xuJGxheW91dC1oZWFkZXItbmF2LWhvdmVyLWNvbG9yOiB1bnF1b3RlKFwicmdiYSgjeyRwYWxldHRlLWdyZXktNzAwfSwgMC42KVwiKSAhZGVmYXVsdDtcbiRsYXlvdXQtaGVhZGVyLXRhYi10ZXh0LWNvbG9yOiB1bnF1b3RlKFwicmdiYSgjeyRjb2xvci1wcmltYXJ5LWNvbnRyYXN0fSwgMC42KVwiKSAhZGVmYXVsdDtcblxuLy8gVGFic1xuJGxheW91dC1oZWFkZXItdGFiLWhpZ2hsaWdodDogdW5xdW90ZShcInJnYigjeyRjb2xvci1hY2NlbnR9KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgQ29udGVudCBUYWJzICA9PT09PT09PT09ICovXG5cbiR0YWItaGlnaGxpZ2h0LWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnl9KVwiKSAhZGVmYXVsdDtcbiR0YWItdGV4dC1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjU0KVwiKSAhZGVmYXVsdDtcbiR0YWItYWN0aXZlLXRleHQtY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC44NylcIikgIWRlZmF1bHQ7XG4kdGFiLWJvcmRlci1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktMzAwfSlcIikgIWRlZmF1bHQ7XG5cbi8qID09PT09PT09PT0gIENoZWNrYm94ZXMgID09PT09PT09PT0gKi9cblxuJGNoZWNrYm94LWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnl9KVwiKSAhZGVmYXVsdDtcbiRjaGVja2JveC1vZmYtY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC41NClcIikgIWRlZmF1bHQ7XG4kY2hlY2tib3gtZGlzYWJsZWQtY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC4yNilcIikgIWRlZmF1bHQ7XG4kY2hlY2tib3gtZm9jdXMtY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLXByaW1hcnl9LCAwLjI2KVwiKSAhZGVmYXVsdDtcbiRjaGVja2JveC1pbWFnZS1wYXRoOiAkaW1hZ2VfcGF0aDtcblxuLyogPT09PT09PT09PSAgU3dpdGNoZXMgID09PT09PT09PT0gKi9cblxuJHN3aXRjaC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci1wcmltYXJ5fSlcIikgIWRlZmF1bHQ7XG4kc3dpdGNoLWZhZGVkLWNvbG9yOiB1bnF1b3RlKFwicmdiYSgjeyRjb2xvci1wcmltYXJ5fSwgMC4yNilcIikgIWRlZmF1bHQ7XG4kc3dpdGNoLXRodW1iLWNvbG9yOiAkc3dpdGNoLWNvbG9yICFkZWZhdWx0O1xuJHN3aXRjaC10cmFjay1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItcHJpbWFyeX0sIDAuNSlcIikgIWRlZmF1bHQ7XG5cbiRzd2l0Y2gtb2ZmLXRodW1iLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS01MH0pXCIpICFkZWZhdWx0O1xuJHN3aXRjaC1vZmYtdHJhY2stY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC4yNilcIikgIWRlZmF1bHQ7XG4kc3dpdGNoLWRpc2FibGVkLXRodW1iLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS00MDB9KVwiKSAhZGVmYXVsdDtcbiRzd2l0Y2gtZGlzYWJsZWQtdHJhY2stY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC4xMilcIikgIWRlZmF1bHQ7XG5cbi8qID09PT09PT09PT0gIFNwaW5uZXIgID09PT09PT09PT0gKi9cblxuJHNwaW5uZXItY29sb3ItMTogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtNDAwfSlcIikgIWRlZmF1bHQ7XG4kc3Bpbm5lci1jb2xvci0yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcmVkLTUwMH0pXCIpICFkZWZhdWx0O1xuJHNwaW5uZXItY29sb3ItMzogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXllbGxvdy02MDB9KVwiKSAhZGVmYXVsdDtcbiRzcGlubmVyLWNvbG9yLTQ6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmVlbi01MDB9KVwiKSAhZGVmYXVsdDtcblxuJHNwaW5uZXItc2luZ2xlLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnl9KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgVGV4dCBmaWVsZHMgID09PT09PT09PT0gKi9cblxuJGlucHV0LXRleHQtYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XG4kaW5wdXQtdGV4dC1sYWJlbC1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjI2KVwiKSAhZGVmYXVsdDtcbiRpbnB1dC10ZXh0LWJvdHRvbS1ib3JkZXItY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLWJsYWNrfSwgMC4xMilcIikgIWRlZmF1bHQ7XG4kaW5wdXQtdGV4dC1oaWdobGlnaHQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeX0pXCIpICFkZWZhdWx0O1xuJGlucHV0LXRleHQtZGlzYWJsZWQtY29sb3I6ICRpbnB1dC10ZXh0LWJvdHRvbS1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XG4kaW5wdXQtdGV4dC1kaXNhYmxlZC10ZXh0LWNvbG9yOiAkaW5wdXQtdGV4dC1sYWJlbC1jb2xvciAhZGVmYXVsdDtcbiRpbnB1dC10ZXh0LWVycm9yLWNvbG9yOiB1bnF1b3RlKFwicmdiKDIyMiwgNTAsIDM4KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgQ2FyZCAgPT09PT09PT09PSAqL1xuXG4kY2FyZC1iYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXdoaXRlfSlcIikgIWRlZmF1bHQ7XG4kY2FyZC10ZXh0LWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWJsYWNrfSlcIikgIWRlZmF1bHQ7XG4kY2FyZC1pbWFnZS1wbGFjZWhvbGRlci1jb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci1hY2NlbnR9KVwiKSAhZGVmYXVsdDtcbiRjYXJkLXN1cHBvcnRpbmctdGV4dC10ZXh0LWNvbG9yOiB1bnF1b3RlKFwicmdiYSgjeyRjb2xvci1ibGFja30sIDAuNTQpXCIpICFkZWZhdWx0O1xuJGNhcmQtYm9yZGVyLWNvbG9yOiByZ2JhKDAsMCwwLDAuMSkgIWRlZmF1bHQ7XG4kY2FyZC1zdWJ0aXRsZS1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjU0KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgU2xpZGVycyA9PT09PT09PT09ICovXG5cbiRyYW5nZS1iZy1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjI2KVwiKSAhZGVmYXVsdDtcbiRyYW5nZS1jb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci1wcmltYXJ5fSlcIikgIWRlZmF1bHQ7XG4kcmFuZ2UtZmFkZWQtY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLXByaW1hcnl9LCAwLjI2KVwiKSAhZGVmYXVsdDtcbiRyYW5nZS1iZy1mb2N1cy1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjEyKVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSBQcm9ncmVzcyA9PT09PT09PT09ICovXG4kcHJvZ3Jlc3MtbWFpbi1jb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci1wcmltYXJ5fSlcIikgIWRlZmF1bHQ7XG4kcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWNvbG9yOiB1bnF1b3RlKFwicmdiYSgjeyRjb2xvci1wcmltYXJ5LWNvbnRyYXN0fSwgMC43KVwiKSAhZGVmYXVsdDtcbiRwcm9ncmVzcy1mYWxsYmFjay1idWZmZXItY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JGNvbG9yLXByaW1hcnktY29udHJhc3R9LCAwLjkpXCIpICFkZWZhdWx0O1xuJHByb2dyZXNzLWltYWdlLXBhdGg6ICRpbWFnZV9wYXRoO1xuXG4vKiA9PT09PT09PT09ICBMaXN0ID09PT09PT09PT0gKi9cblxuJGxpc3QtY29udGFpbmVyLWl0ZW0tYm9yZGVyLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS0zMDB9KVwiKSAhZGVmYXVsdDtcbiRsaXN0LWNvbnRhaW5lci12aWV3LWJhY2tncm91bmQ6IHVucXVvdGUoXCJyZ2IoI3skY29sb3Itd2hpdGV9KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgSXRlbSA9PT09PT09PT09ICovXG5cbi8vIERlZmF1bHQgSXRlbSBDb2xvcnNcbiRkZWZhdWx0LWl0ZW0tdGV4dC1jb2xvcjogdW5xdW90ZShcInJnYmEoI3skY29sb3ItYmxhY2t9LCAwLjg3KVwiKSAhZGVmYXVsdDtcbiRkZWZhdWx0LWl0ZW0tb3V0bGluZS1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktNDAwfSlcIikgIWRlZmF1bHQ7XG4kZGVmYXVsdC1pdGVtLWhvdmVyLWJnLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS0yMDB9KVwiKSAhZGVmYXVsdDtcbiRkZWZhdWx0LWl0ZW0tZm9jdXMtYmctY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTIwMH0pXCIpICFkZWZhdWx0O1xuJGRlZmF1bHQtaXRlbS1hY3RpdmUtYmctY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTMwMH0pXCIpICFkZWZhdWx0O1xuXG4vLyBEaXNhYmxlZCBCdXR0b24gQ29sb3JzXG4kZGlzYWJsZWQtaXRlbS10ZXh0LWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS00MDB9KVwiKSAhZGVmYXVsdDtcblxuLyogPT09PT09PT09PSAgRHJvcGRvd24gbWVudSA9PT09PT09PT09ICovXG5cbiRkZWZhdWx0LWRyb3Bkb3duLWJnLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXdoaXRlfSlcIikgIWRlZmF1bHQ7XG5cbi8qID09PT09PT09PT0gIFRvb2x0aXBzICA9PT09PT09PT09ICovXG5cbiR0b29sdGlwLXRleHQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3Itd2hpdGV9KVwiKSAhZGVmYXVsdDtcbiR0b29sdGlwLWJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2JhKCN7JHBhbGV0dGUtZ3JleS03MDB9LCAwLjkpXCIpICFkZWZhdWx0O1xuXG4vKiA9PT09PT09PT09ICBGb290ZXIgID09PT09PT09PT0gKi9cblxuJGZvb3Rlci1iZy1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktODAwfSlcIikgIWRlZmF1bHQ7XG4kZm9vdGVyLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS01MDB9KVwiKSAhZGVmYXVsdDtcbiRmb290ZXItaGVhZGluZy1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktMzAwfSlcIikgIWRlZmF1bHQ7XG4kZm9vdGVyLWJ1dHRvbi1maWxsLWNvbG9yOiAkZm9vdGVyLWNvbG9yICFkZWZhdWx0O1xuJGZvb3Rlci11bmRlcmxpbmUtY29sb3I6ICRmb290ZXItY29sb3IgIWRlZmF1bHQ7XG5cblxuLyogVEVYVEZJRUxEICovXG5cbiRpbnB1dC10ZXh0LWZvbnQtc2l6ZTogMTZweDtcbiRpbnB1dC10ZXh0LXdpZHRoOiAxMDAlO1xuJGlucHV0LXRleHQtcGFkZGluZzogNHB4O1xuJGlucHV0LXRleHQtcmlwcGxlLXNpemU6IDMycHg7XG4kaW5wdXQtdGV4dC12ZXJ0aWNhbC1zcGFjaW5nOiAyMHB4O1xuXG4kaW5wdXQtdGV4dC1idXR0b24tc2l6ZTogMzJweDtcbiRpbnB1dC10ZXh0LWZsb2F0aW5nLWxhYmVsLWZvbnRzaXplOiAxMnB4O1xuJGlucHV0LXRleHQtZXhwYW5kYWJsZS1pY29uLXRvcDogMTZweDtcblxuXG4vKiBTV0lUQ0ggKi9cblxuJHN3aXRjaC1sYWJlbC1mb250LXNpemU6IDE2cHg7XG4kc3dpdGNoLWxhYmVsLWhlaWdodDogMjRweDtcbiRzd2l0Y2gtdHJhY2staGVpZ2h0OiAxNHB4O1xuJHN3aXRjaC10cmFjay1sZW5ndGg6IDM2cHg7XG4kc3dpdGNoLXRodW1iLXNpemU6IDIwcHg7XG4kc3dpdGNoLXRyYWNrLXRvcDogKCRzd2l0Y2gtbGFiZWwtaGVpZ2h0IC0gJHN3aXRjaC10cmFjay1oZWlnaHQpIC8gMjtcbiRzd2l0Y2gtdGh1bWItdG9wOiAoJHN3aXRjaC1sYWJlbC1oZWlnaHQgLSAkc3dpdGNoLXRodW1iLXNpemUpIC8gMjtcbiRzd2l0Y2gtcmlwcGxlLXNpemU6ICRzd2l0Y2gtbGFiZWwtaGVpZ2h0ICogMjtcbiRzd2l0Y2gtaGVscGVyLXNpemU6IDhweDtcblxuLyogU1BJTk5FUiAqL1xuXG4kc3Bpbm5lci1zaXplOiAyOHB4ICFkZWZhdWx0O1xuJHNwaW5uZXItc3Ryb2tlLXdpZHRoOiAzcHggIWRlZmF1bHQ7XG5cbi8vIEFtb3VudCBvZiBjaXJjbGUgdGhlIGFyYyB0YWtlcyB1cC5cbiRzcGlubmVyLWFyYy1zaXplOiAyNzBkZWc7XG4vLyBUaW1lIGl0IHRha2VzIHRvIGV4cGFuZCBhbmQgY29udHJhY3QgYXJjLlxuJHNwaW5uZXItYXJjLXRpbWU6IDEzMzNtcztcbi8vIEhvdyBtdWNoIHRoZSBzdGFydCBsb2NhdGlvbiBvZiB0aGUgYXJjIHNob3VsZCByb3RhdGUgZWFjaCB0aW1lLlxuJHNwaW5uZXItYXJjLXN0YXJ0LXJvdDogMjE2ZGVnO1xuXG4kc3Bpbm5lci1kdXJhdGlvbjogMzYwICogJHNwaW5uZXItYXJjLXRpbWUgLyAoXG4gICAgc3RyaXAtdW5pdHMoJHNwaW5uZXItYXJjLXN0YXJ0LXJvdCArICgzNjBkZWcgLSAkc3Bpbm5lci1hcmMtc2l6ZSkpKTtcblxuXG4vKiBSQURJTyAqL1xuXG4kcmFkaW8tbGFiZWwtZm9udC1zaXplOiAxNnB4O1xuJHJhZGlvLWxhYmVsLWhlaWdodDogMjRweDtcbiRyYWRpby1idXR0b24tc2l6ZTogMTZweDtcbiRyYWRpby1pbm5lci1tYXJnaW46ICRyYWRpby1idXR0b24tc2l6ZSAvIDQ7XG4kcmFkaW8tcGFkZGluZzogOHB4O1xuJHJhZGlvLXRvcC1vZmZzZXQ6ICgkcmFkaW8tbGFiZWwtaGVpZ2h0IC0gJHJhZGlvLWJ1dHRvbi1zaXplKSAvIDI7XG4kcmFkaW8tcmlwcGxlLXNpemU6IDQycHg7XG5cblxuLyogTUVOVSAqL1xuXG4kbWVudS1leHBhbmQtZHVyYXRpb246IDAuM3M7XG4kbWVudS1mYWRlLWR1cmF0aW9uOiAwLjJzO1xuXG4vKiBMSVNUICovXG5cbiRsaXN0LWNvbnRhaW5lci1oZWlnaHQ6IDUwMHB4O1xuJGxpc3QtY29udGFpbmVyLXdpZHRoOiA0MDBweDtcbiRsaXN0LWNvbnRhaW5lci1pdGVtLWhlaWdodDogNzBweDtcblxuLyogTEFZT1VUICovXG5cbiRsYXlvdXQtbmF2LWxpbmstZm9udC1zaXplOiAxM3B4O1xuXG4kbGF5b3V0LWRyYXdlci1uYXJyb3c6IDI0MHB4O1xuJGxheW91dC1kcmF3ZXItd2lkZTogNDU2cHg7XG4kbGF5b3V0LWRyYXdlci13aWR0aDogJGxheW91dC1kcmF3ZXItbmFycm93O1xuXG4kbGF5b3V0LWhlYWRlci1pY29uLXNpemU6IDMycHg7XG4kbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZDogMTAyNHB4O1xuJGxheW91dC1oZWFkZXItaWNvbi1tYXJnaW46IDI0cHg7XG4kbGF5b3V0LWRyYXdlci1idXR0b24tbW9iaWxlLXNpemU6IDMycHg7XG4kbGF5b3V0LWRyYXdlci1idXR0b24tZGVza3RvcC1zaXplOiA0OHB4O1xuXG4kbGF5b3V0LWhlYWRlci1tb2JpbGUtcm93LWhlaWdodDogNTZweDtcbiRsYXlvdXQtbW9iaWxlLWhlYWRlci1oZWlnaHQ6ICRsYXlvdXQtaGVhZGVyLW1vYmlsZS1yb3ctaGVpZ2h0O1xuJGxheW91dC1oZWFkZXItZGVza3RvcC1yb3ctaGVpZ2h0OiA2NHB4O1xuJGxheW91dC1kZXNrdG9wLWhlYWRlci1oZWlnaHQ6ICRsYXlvdXQtaGVhZGVyLWRlc2t0b3Atcm93LWhlaWdodDtcblxuJGxheW91dC1oZWFkZXItZGVza3RvcC1iYXNlbGluZTogODBweDtcbiRsYXlvdXQtaGVhZGVyLW1vYmlsZS1iYXNlbGluZTogNzJweDtcbiRsYXlvdXQtaGVhZGVyLW1vYmlsZS1pbmRlbnQ6IDE2cHg7XG4kbGF5b3V0LWhlYWRlci1kZXNrdG9wLWluZGVudDogNDBweDtcblxuJGxheW91dC10YWItZm9udC1zaXplOiAxNHB4O1xuJGxheW91dC10YWItYmFyLWhlaWdodDogNDhweDtcbiRsYXlvdXQtdGFiLW1vYmlsZS1wYWRkaW5nOiAxMnB4O1xuJGxheW91dC10YWItZGVza3RvcC1wYWRkaW5nOiAyNHB4O1xuJGxheW91dC10YWItaGlnaGxpZ2h0LXRoaWNrbmVzczogMnB4O1xuXG5cbi8qIElDT04gVE9HR0xFICovXG5cbiRpY29uLXRvZ2dsZS1zaXplOiAzMnB4ICFkZWZhdWx0O1xuJGljb24tdG9nZ2xlLWZvbnQtc2l6ZTogMjRweCAhZGVmYXVsdDtcbiRpY29uLXRvZ2dsZS1yaXBwbGUtc2l6ZTogMzZweCAhZGVmYXVsdDtcblxuLyogRk9PVEVSICovXG5cbi8qbWVnYS1mb290ZXIqL1xuJGZvb3Rlci1taW4tcGFkZGluZzogMTZweCAhZGVmYXVsdDtcbiRmb290ZXItcGFkZGluZy1zaWRlczogNDBweCAhZGVmYXVsdDtcbiRmb290ZXItaGVhZGluZy1mb250LXNpemU6IDE0cHggIWRlZmF1bHQ7XG4kZm9vdGVyLWhlYWRpbmctbGluZS1oZWlnaHQ6ICgxLjcgKiAkZm9vdGVyLWhlYWRpbmctZm9udC1zaXplKSAhZGVmYXVsdDtcbiRmb290ZXItYnRuLXNpemU6IDM2cHggICFkZWZhdWx0O1xuXG4vKm1pbmktZm9vdGVyKi9cbiRwYWRkaW5nOiAxNnB4ICFkZWZhdWx0O1xuJGZvb3Rlci1oZWFkaW5nLWZvbnQtc2l6ZTogMjRweCAhZGVmYXVsdDtcbiRmb290ZXItaGVhZGluZy1saW5lLWhlaWdodDogKDEuNSAqICRmb290ZXItaGVhZGluZy1mb250LXNpemUpICFkZWZhdWx0O1xuJGZvb3Rlci1idG4tc2l6ZTogMzZweCAhZGVmYXVsdDtcblxuLyogQ0hFQ0tCT1ggKi9cblxuJGNoZWNrYm94LWxhYmVsLWZvbnQtc2l6ZTogMTZweDtcbiRjaGVja2JveC1sYWJlbC1oZWlnaHQ6IDI0cHg7XG4kY2hlY2tib3gtYnV0dG9uLXNpemU6IDE2cHg7XG4kY2hlY2tib3gtaW5uZXItbWFyZ2luOiAycHg7XG4kY2hlY2tib3gtcGFkZGluZzogOHB4O1xuJGNoZWNrYm94LXRvcC1vZmZzZXQ6XG4oJGNoZWNrYm94LWxhYmVsLWhlaWdodCAtICRjaGVja2JveC1idXR0b24tc2l6ZSAtICRjaGVja2JveC1pbm5lci1tYXJnaW4pIC8gMjtcbiRjaGVja2JveC1yaXBwbGUtc2l6ZTogJGNoZWNrYm94LWxhYmVsLWhlaWdodCAqIDEuNTtcblxuLyogQ0FSRCAqL1xuXG4vKiBDYXJkIGRpbWVuc2lvbnMgKi9cbiRjYXJkLXdpZHRoOiAzMzBweCAhZGVmYXVsdDtcbiRjYXJkLWhlaWdodDogMjAwcHggIWRlZmF1bHQ7XG4kY2FyZC1mb250LXNpemU6IDE2cHggIWRlZmF1bHQ7XG4kY2FyZC10aXRsZS1mb250LXNpemU6IDI0cHggIWRlZmF1bHQ7XG4kY2FyZC1zdWJ0aXRsZS1mb250LXNpemU6IDE0cHggIWRlZmF1bHQ7XG4kY2FyZC1ob3Jpem9udGFsLXBhZGRpbmc6IDE2cHggIWRlZmF1bHQ7XG4kY2FyZC12ZXJ0aWNhbC1wYWRkaW5nOiAxNnB4ICFkZWZhdWx0O1xuXG4kY2FyZC10aXRsZS1wZXJzcGVjdGl2ZS1vcmlnaW4teDogMTY1cHggIWRlZmF1bHQ7XG4kY2FyZC10aXRsZS1wZXJzcGVjdGl2ZS1vcmlnaW4teTogNTZweCAhZGVmYXVsdDtcblxuJGNhcmQtdGl0bGUtdHJhbnNmb3JtLW9yaWdpbi14OiAxNjVweCAhZGVmYXVsdDtcbiRjYXJkLXRpdGxlLXRyYW5zZm9ybS1vcmlnaW4teTogNTZweCAhZGVmYXVsdDtcblxuJGNhcmQtdGl0bGUtdGV4dC10cmFuc2Zvcm0tb3JpZ2luLXg6IDE0OXB4ICFkZWZhdWx0O1xuJGNhcmQtdGl0bGUtdGV4dC10cmFuc2Zvcm0tb3JpZ2luLXk6IDQ4cHggIWRlZmF1bHQ7XG5cbiRjYXJkLXN1cHBvcnRpbmctdGV4dC1mb250LXNpemU6IDEzcHggIWRlZmF1bHQ7XG4kY2FyZC1zdXBwb3J0aW5nLXRleHQtbGluZS1oZWlnaHQ6IDE4cHggIWRlZmF1bHQ7XG5cbiRjYXJkLWFjdGlvbnMtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4kY2FyZC10aXRsZS10ZXh0LWZvbnQtd2VpZ2h0OiAzMDAgIWRlZmF1bHQ7XG4kY2FyZC16LWluZGV4OiAxICFkZWZhdWx0O1xuXG4vKiBDb3ZlciBpbWFnZSAqL1xuJGNhcmQtY292ZXItaW1hZ2UtaGVpZ2h0OiAxODZweCAhZGVmYXVsdDtcbiRjYXJkLWJhY2tncm91bmQtaW1hZ2UtdXJsOiAnJyAhZGVmYXVsdDtcblxuXG4vKiBCVVRUT04gKi9cbi8qKlxuICpcbiAqIERpbWVuc2lvbnNcbiAqXG4gKi9cbiRidXR0b24tbWluLXdpZHRoOiA2NHB4ICFkZWZhdWx0O1xuJGJ1dHRvbi1oZWlnaHQ6IDM2cHggIWRlZmF1bHQ7XG4kYnV0dG9uLXBhZGRpbmc6IDE2cHggIWRlZmF1bHQ7XG4kYnV0dG9uLW1hcmdpbjogNHB4ICFkZWZhdWx0O1xuJGJ1dHRvbi1ib3JkZXItcmFkaXVzOiAycHggIWRlZmF1bHQ7XG5cbiRidXR0b24tZmFiLXNpemU6IDU2cHggIWRlZmF1bHQ7XG4kYnV0dG9uLWZhYi1zaXplLW1pbmk6IDQwcHggIWRlZmF1bHQ7XG4kYnV0dG9uLWZhYi1mb250LXNpemU6IDI0cHggIWRlZmF1bHQ7XG5cbiRidXR0b24taWNvbi1zaXplOiAzMnB4ICFkZWZhdWx0O1xuJGJ1dHRvbi1pY29uLXNpemUtbWluaTogMjRweCAhZGVmYXVsdDtcblxuXG4vKiBBTklNQVRJT04gKi9cbiRhbmltYXRpb24tY3VydmUtZmFzdC1vdXQtc2xvdy1pbjogY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAhZGVmYXVsdDtcbiRhbmltYXRpb24tY3VydmUtbGluZWFyLW91dC1zbG93LWluOiBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSAhZGVmYXVsdDtcbiRhbmltYXRpb24tY3VydmUtZmFzdC1vdXQtbGluZWFyLWluOiBjdWJpYy1iZXppZXIoMC40LCAwLCAxLCAxKSAhZGVmYXVsdDtcblxuJGFuaW1hdGlvbi1jdXJ2ZS1kZWZhdWx0OiAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LXNsb3ctaW4gIWRlZmF1bHQ7XG5cblxuLyogUFJPR1JFU1MgKi9cbiRiYXItaGVpZ2h0OiA0cHggIWRlZmF1bHQ7XG5cbi8qIEJBREdFICovXG4kYmFkZ2UtZm9udC1zaXplOiAxMnB4O1xuJGJhZGdlLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWFjY2VudC1jb250cmFzdH0pXCIpICFkZWZhdWx0O1xuJGJhZGdlLWNvbG9yLWludmVyc2U6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItYWNjZW50fSlcIikgIWRlZmF1bHQ7XG4kYmFkZ2UtYmFja2dyb3VuZDogdW5xdW90ZShcInJnYigjeyRjb2xvci1hY2NlbnR9KVwiKSAhZGVmYXVsdDtcbiRiYWRnZS1iYWNrZ3JvdW5kLWludmVyc2U6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItYWNjZW50LWNvbnRyYXN0fSlcIikgIWRlZmF1bHQ7XG4kYmFkZ2Utc2l6ZSA6IDIycHg7XG4kYmFkZ2UtcGFkZGluZzogMnB4O1xuXG4vKiBTSEFET1dTICovXG5cbiRzaGFkb3cta2V5LXVtYnJhLW9wYWNpdHk6IDAuMjtcbiRzaGFkb3cta2V5LXBlbnVtYnJhLW9wYWNpdHk6IDAuMTQ7XG4kc2hhZG93LWFtYmllbnQtc2hhZG93LW9wYWNpdHk6IDAuMTI7XG5cbi8qIEdSSUQgKi9cblxuJGdyaWQtZGVza3RvcC1jb2x1bW5zOiAxMiAhZGVmYXVsdDtcbiRncmlkLWRlc2t0b3AtZ3V0dGVyOiAxNnB4ICFkZWZhdWx0O1xuJGdyaWQtZGVza3RvcC1tYXJnaW46IDE2cHggIWRlZmF1bHQ7XG5cbiRncmlkLWRlc2t0b3AtYnJlYWtwb2ludDogODQwcHggIWRlZmF1bHQ7XG5cbiRncmlkLXRhYmxldC1jb2x1bW5zOiA4ICFkZWZhdWx0O1xuJGdyaWQtdGFibGV0LWd1dHRlcjogJGdyaWQtZGVza3RvcC1ndXR0ZXIgIWRlZmF1bHQ7XG4kZ3JpZC10YWJsZXQtbWFyZ2luOiAkZ3JpZC1kZXNrdG9wLW1hcmdpbiAhZGVmYXVsdDtcblxuJGdyaWQtdGFibGV0LWJyZWFrcG9pbnQ6IDQ4MHB4ICFkZWZhdWx0O1xuXG4kZ3JpZC1waG9uZS1jb2x1bW5zOiA0ICFkZWZhdWx0O1xuJGdyaWQtcGhvbmUtZ3V0dGVyOiAkZ3JpZC1kZXNrdG9wLWd1dHRlciAhZGVmYXVsdDtcbiRncmlkLXBob25lLW1hcmdpbjogJGdyaWQtZGVza3RvcC1tYXJnaW4gIWRlZmF1bHQ7XG5cbiRncmlkLWNlbGwtZGVmYXVsdC1jb2x1bW5zOiAkZ3JpZC1waG9uZS1jb2x1bW5zICFkZWZhdWx0O1xuXG4vKiBEQVRBIFRBQkxFICovXG5cbiRkYXRhLXRhYmxlLWZvbnQtc2l6ZTogMTNweDtcbiRkYXRhLXRhYmxlLWhlYWRlci1mb250LXNpemU6IDEycHg7XG5cbiRkYXRhLXRhYmxlLWhlYWRlci1jb2xvcjogcmdiYSgjMDAwLCAwLjU0KTtcbiRkYXRhLXRhYmxlLWRpdmlkZXItY29sb3I6IHJnYmEoIzAwMCwgMC4xMik7XG5cbiRkYXRhLXRhYmxlLWhvdmVyLWNvbG9yOiAjZWVlZWVlO1xuJGRhdGEtdGFibGUtc2VsZWN0aW9uLWNvbG9yOiAjZTBlMGUwO1xuXG4kZGF0YS10YWJsZS1kaXZpZGVyczogMXB4IHNvbGlkICRkYXRhLXRhYmxlLWRpdmlkZXItY29sb3I7XG5cbiRkYXRhLXRhYmxlLXJvdy1oZWlnaHQ6IDQ4cHg7XG4kZGF0YS10YWJsZS1sYXN0LXJvdy1oZWlnaHQ6IDU2cHg7XG4kZGF0YS10YWJsZS1oZWFkZXItaGVpZ2h0OiA1NnB4O1xuXG4kZGF0YS10YWJsZS1jb2x1bW4tc3BhY2luZzogMzZweDtcbiRkYXRhLXRhYmxlLWNvbHVtbi1wYWRkaW5nOiAkZGF0YS10YWJsZS1jb2x1bW4tc3BhY2luZyAvIDI7XG5cbiRkYXRhLXRhYmxlLWNhcmQtaGVhZGVyLWhlaWdodDogNjRweDtcbiRkYXRhLXRhYmxlLWNhcmQtdGl0bGUtdG9wOiAyMHB4O1xuJGRhdGEtdGFibGUtY2FyZC1wYWRkaW5nOiAyNHB4O1xuJGRhdGEtdGFibGUtYnV0dG9uLXBhZGRpbmctcmlnaHQ6IDE2cHg7XG4kZGF0YS10YWJsZS1jZWxsLXRvcDogJGRhdGEtdGFibGUtY2FyZC1wYWRkaW5nIC8gMjtcblxuLyogVE9PTFRJUCAqL1xuJHRvb2x0aXAtZm9udC1zaXplOiAxMHB4ICFkZWZhdWx0O1xuJHRvb2x0aXAtZm9udC1zaXplLWxhcmdlOiAxNHB4ICFkZWZhdWx0O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyogPT09PT09PT09PSAgQ29sb3IgUGFsZXR0ZXMgID09PT09PT09PT0gKi9cblxuLy8gQ29sb3Igb3JkZXI6IDUwLCAxMDAsIDIwMCwgMzAwLCA0MDAsIDUwMCwgNjAwLCA3MDAsIDgwMCwgOTAwLCBBMTAwLCBBMjAwLFxuLy8gQTQwMCwgQTcwMC5cblxuJHBhbGV0dGUtcmVkOlxuXCIyNTUsMjM1LDIzOFwiXG5cIjI1NSwyMDUsMjEwXCJcblwiMjM5LDE1NCwxNTRcIlxuXCIyMjksMTE1LDExNVwiXG5cIjIzOSw4Myw4MFwiXG5cIjI0NCw2Nyw1NFwiXG5cIjIyOSw1Nyw1M1wiXG5cIjIxMSw0Nyw0N1wiXG5cIjE5OCw0MCw0MFwiXG5cIjE4MywyOCwyOFwiXG5cIjI1NSwxMzgsMTI4XCJcblwiMjU1LDgyLDgyXCJcblwiMjU1LDIzLDY4XCJcblwiMjEzLDAsMFwiO1xuXG4kcGFsZXR0ZS1yZWQtNTA6IG50aCgkcGFsZXR0ZS1yZWQsIDEpO1xuJHBhbGV0dGUtcmVkLTEwMDogbnRoKCRwYWxldHRlLXJlZCwgMik7XG4kcGFsZXR0ZS1yZWQtMjAwOiBudGgoJHBhbGV0dGUtcmVkLCAzKTtcbiRwYWxldHRlLXJlZC0zMDA6IG50aCgkcGFsZXR0ZS1yZWQsIDQpO1xuJHBhbGV0dGUtcmVkLTQwMDogbnRoKCRwYWxldHRlLXJlZCwgNSk7XG4kcGFsZXR0ZS1yZWQtNTAwOiBudGgoJHBhbGV0dGUtcmVkLCA2KTtcbiRwYWxldHRlLXJlZC02MDA6IG50aCgkcGFsZXR0ZS1yZWQsIDcpO1xuJHBhbGV0dGUtcmVkLTcwMDogbnRoKCRwYWxldHRlLXJlZCwgOCk7XG4kcGFsZXR0ZS1yZWQtODAwOiBudGgoJHBhbGV0dGUtcmVkLCA5KTtcbiRwYWxldHRlLXJlZC05MDA6IG50aCgkcGFsZXR0ZS1yZWQsIDEwKTtcbiRwYWxldHRlLXJlZC1BMTAwOiBudGgoJHBhbGV0dGUtcmVkLCAxMSk7XG4kcGFsZXR0ZS1yZWQtQTIwMDogbnRoKCRwYWxldHRlLXJlZCwgMTIpO1xuJHBhbGV0dGUtcmVkLUE0MDA6IG50aCgkcGFsZXR0ZS1yZWQsIDEzKTtcbiRwYWxldHRlLXJlZC1BNzAwOiBudGgoJHBhbGV0dGUtcmVkLCAxNCk7XG5cbiRwYWxldHRlLXBpbms6XG5cIjI1MiwyMjgsMjM2XCJcblwiMjQ4LDE4NywyMDhcIlxuXCIyNDQsMTQzLDE3N1wiXG5cIjI0MCw5OCwxNDZcIlxuXCIyMzYsNjQsMTIyXCJcblwiMjMzLDMwLDk5XCJcblwiMjE2LDI3LDk2XCJcblwiMTk0LDI0LDkxXCJcblwiMTczLDIwLDg3XCJcblwiMTM2LDE0LDc5XCJcblwiMjU1LDEyOCwxNzFcIlxuXCIyNTUsNjQsMTI5XCJcblwiMjQ1LDAsODdcIlxuXCIxOTcsMTcsOThcIjtcblxuJHBhbGV0dGUtcGluay01MDogbnRoKCRwYWxldHRlLXBpbmssIDEpO1xuJHBhbGV0dGUtcGluay0xMDA6IG50aCgkcGFsZXR0ZS1waW5rLCAyKTtcbiRwYWxldHRlLXBpbmstMjAwOiBudGgoJHBhbGV0dGUtcGluaywgMyk7XG4kcGFsZXR0ZS1waW5rLTMwMDogbnRoKCRwYWxldHRlLXBpbmssIDQpO1xuJHBhbGV0dGUtcGluay00MDA6IG50aCgkcGFsZXR0ZS1waW5rLCA1KTtcbiRwYWxldHRlLXBpbmstNTAwOiBudGgoJHBhbGV0dGUtcGluaywgNik7XG4kcGFsZXR0ZS1waW5rLTYwMDogbnRoKCRwYWxldHRlLXBpbmssIDcpO1xuJHBhbGV0dGUtcGluay03MDA6IG50aCgkcGFsZXR0ZS1waW5rLCA4KTtcbiRwYWxldHRlLXBpbmstODAwOiBudGgoJHBhbGV0dGUtcGluaywgOSk7XG4kcGFsZXR0ZS1waW5rLTkwMDogbnRoKCRwYWxldHRlLXBpbmssIDEwKTtcbiRwYWxldHRlLXBpbmstQTEwMDogbnRoKCRwYWxldHRlLXBpbmssIDExKTtcbiRwYWxldHRlLXBpbmstQTIwMDogbnRoKCRwYWxldHRlLXBpbmssIDEyKTtcbiRwYWxldHRlLXBpbmstQTQwMDogbnRoKCRwYWxldHRlLXBpbmssIDEzKTtcbiRwYWxldHRlLXBpbmstQTcwMDogbnRoKCRwYWxldHRlLXBpbmssIDE0KTtcblxuJHBhbGV0dGUtcHVycGxlOlxuXCIyNDMsMjI5LDI0NVwiXG5cIjIyNSwxOTAsMjMxXCJcblwiMjA2LDE0NywyMTZcIlxuXCIxODYsMTA0LDIwMFwiXG5cIjE3MSw3MSwxODhcIlxuXCIxNTYsMzksMTc2XCJcblwiMTQyLDM2LDE3MFwiXG5cIjEyMywzMSwxNjJcIlxuXCIxMDYsMjcsMTU0XCJcblwiNzQsMjAsMTQwXCJcblwiMjM0LDEyOCwyNTJcIlxuXCIyMjQsNjQsMjUxXCJcblwiMjEzLDAsMjQ5XCJcblwiMTcwLDAsMjU1XCI7XG5cbiRwYWxldHRlLXB1cnBsZS01MDogbnRoKCRwYWxldHRlLXB1cnBsZSwgMSk7XG4kcGFsZXR0ZS1wdXJwbGUtMTAwOiBudGgoJHBhbGV0dGUtcHVycGxlLCAyKTtcbiRwYWxldHRlLXB1cnBsZS0yMDA6IG50aCgkcGFsZXR0ZS1wdXJwbGUsIDMpO1xuJHBhbGV0dGUtcHVycGxlLTMwMDogbnRoKCRwYWxldHRlLXB1cnBsZSwgNCk7XG4kcGFsZXR0ZS1wdXJwbGUtNDAwOiBudGgoJHBhbGV0dGUtcHVycGxlLCA1KTtcbiRwYWxldHRlLXB1cnBsZS01MDA6IG50aCgkcGFsZXR0ZS1wdXJwbGUsIDYpO1xuJHBhbGV0dGUtcHVycGxlLTYwMDogbnRoKCRwYWxldHRlLXB1cnBsZSwgNyk7XG4kcGFsZXR0ZS1wdXJwbGUtNzAwOiBudGgoJHBhbGV0dGUtcHVycGxlLCA4KTtcbiRwYWxldHRlLXB1cnBsZS04MDA6IG50aCgkcGFsZXR0ZS1wdXJwbGUsIDkpO1xuJHBhbGV0dGUtcHVycGxlLTkwMDogbnRoKCRwYWxldHRlLXB1cnBsZSwgMTApO1xuJHBhbGV0dGUtcHVycGxlLUExMDA6IG50aCgkcGFsZXR0ZS1wdXJwbGUsIDExKTtcbiRwYWxldHRlLXB1cnBsZS1BMjAwOiBudGgoJHBhbGV0dGUtcHVycGxlLCAxMik7XG4kcGFsZXR0ZS1wdXJwbGUtQTQwMDogbnRoKCRwYWxldHRlLXB1cnBsZSwgMTMpO1xuJHBhbGV0dGUtcHVycGxlLUE3MDA6IG50aCgkcGFsZXR0ZS1wdXJwbGUsIDE0KTtcblxuJHBhbGV0dGUtZGVlcC1wdXJwbGU6XG5cIjIzNywyMzEsMjQ2XCJcblwiMjA5LDE5NiwyMzNcIlxuXCIxNzksMTU3LDIxOVwiXG5cIjE0OSwxMTcsMjA1XCJcblwiMTI2LDg3LDE5NFwiXG5cIjEwMyw1OCwxODNcIlxuXCI5NCw1MywxNzdcIlxuXCI4MSw0NSwxNjhcIlxuXCI2OSwzOSwxNjBcIlxuXCI0OSwyNywxNDZcIlxuXCIxNzksMTM2LDI1NVwiXG5cIjEyNCw3NywyNTVcIlxuXCIxMDEsMzEsMjU1XCJcblwiOTgsMCwyMzRcIjtcblxuJHBhbGV0dGUtZGVlcC1wdXJwbGUtNTA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgMSk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS0xMDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgMik7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS0yMDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgMyk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS0zMDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgNCk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS00MDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgNSk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS01MDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgNik7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS02MDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgNyk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS03MDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgOCk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS04MDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgOSk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS05MDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgMTApO1xuJHBhbGV0dGUtZGVlcC1wdXJwbGUtQTEwMDogbnRoKCRwYWxldHRlLWRlZXAtcHVycGxlLCAxMSk7XG4kcGFsZXR0ZS1kZWVwLXB1cnBsZS1BMjAwOiBudGgoJHBhbGV0dGUtZGVlcC1wdXJwbGUsIDEyKTtcbiRwYWxldHRlLWRlZXAtcHVycGxlLUE0MDA6IG50aCgkcGFsZXR0ZS1kZWVwLXB1cnBsZSwgMTMpO1xuJHBhbGV0dGUtZGVlcC1wdXJwbGUtQTcwMDogbnRoKCRwYWxldHRlLWRlZXAtcHVycGxlLCAxNCk7XG5cbiRwYWxldHRlLWluZGlnbzpcblwiMjMyLDIzNCwyNDZcIlxuXCIxOTcsMjAyLDIzM1wiXG5cIjE1OSwxNjgsMjE4XCJcblwiMTIxLDEzNCwyMDNcIlxuXCI5MiwxMDcsMTkyXCJcblwiNjMsODEsMTgxXCJcblwiNTcsNzMsMTcxXCJcblwiNDgsNjMsMTU5XCJcblwiNDAsNTMsMTQ3XCJcblwiMjYsMzUsMTI2XCJcblwiMTQwLDE1OCwyNTVcIlxuXCI4MywxMDksMjU0XCJcblwiNjEsOTAsMjU0XCJcblwiNDgsNzksMjU0XCI7XG5cbiRwYWxldHRlLWluZGlnby01MDogbnRoKCRwYWxldHRlLWluZGlnbywgMSk7XG4kcGFsZXR0ZS1pbmRpZ28tMTAwOiBudGgoJHBhbGV0dGUtaW5kaWdvLCAyKTtcbiRwYWxldHRlLWluZGlnby0yMDA6IG50aCgkcGFsZXR0ZS1pbmRpZ28sIDMpO1xuJHBhbGV0dGUtaW5kaWdvLTMwMDogbnRoKCRwYWxldHRlLWluZGlnbywgNCk7XG4kcGFsZXR0ZS1pbmRpZ28tNDAwOiBudGgoJHBhbGV0dGUtaW5kaWdvLCA1KTtcbiRwYWxldHRlLWluZGlnby01MDA6IG50aCgkcGFsZXR0ZS1pbmRpZ28sIDYpO1xuJHBhbGV0dGUtaW5kaWdvLTYwMDogbnRoKCRwYWxldHRlLWluZGlnbywgNyk7XG4kcGFsZXR0ZS1pbmRpZ28tNzAwOiBudGgoJHBhbGV0dGUtaW5kaWdvLCA4KTtcbiRwYWxldHRlLWluZGlnby04MDA6IG50aCgkcGFsZXR0ZS1pbmRpZ28sIDkpO1xuJHBhbGV0dGUtaW5kaWdvLTkwMDogbnRoKCRwYWxldHRlLWluZGlnbywgMTApO1xuJHBhbGV0dGUtaW5kaWdvLUExMDA6IG50aCgkcGFsZXR0ZS1pbmRpZ28sIDExKTtcbiRwYWxldHRlLWluZGlnby1BMjAwOiBudGgoJHBhbGV0dGUtaW5kaWdvLCAxMik7XG4kcGFsZXR0ZS1pbmRpZ28tQTQwMDogbnRoKCRwYWxldHRlLWluZGlnbywgMTMpO1xuJHBhbGV0dGUtaW5kaWdvLUE3MDA6IG50aCgkcGFsZXR0ZS1pbmRpZ28sIDE0KTtcblxuJHBhbGV0dGUtYmx1ZTpcblwiMjI3LDI0MiwyNTNcIlxuXCIxODcsMjIyLDI1MVwiXG5cIjE0NCwyMDIsMjQ5XCJcblwiMTAwLDE4MSwyNDZcIlxuXCI2NiwxNjUsMjQ1XCJcblwiMzMsMTUwLDI0M1wiXG5cIjMwLDEzNiwyMjlcIlxuXCIyNSwxMTgsMjEwXCJcblwiMjEsMTAxLDE5MlwiXG5cIjEzLDcxLDE2MVwiXG5cIjEzMCwxNzcsMjU1XCJcblwiNjgsMTM4LDI1NVwiXG5cIjQxLDEyMSwyNTVcIlxuXCI0MSw5OCwyNTVcIjtcblxuJHBhbGV0dGUtYmx1ZS01MDogbnRoKCRwYWxldHRlLWJsdWUsIDEpO1xuJHBhbGV0dGUtYmx1ZS0xMDA6IG50aCgkcGFsZXR0ZS1ibHVlLCAyKTtcbiRwYWxldHRlLWJsdWUtMjAwOiBudGgoJHBhbGV0dGUtYmx1ZSwgMyk7XG4kcGFsZXR0ZS1ibHVlLTMwMDogbnRoKCRwYWxldHRlLWJsdWUsIDQpO1xuJHBhbGV0dGUtYmx1ZS00MDA6IG50aCgkcGFsZXR0ZS1ibHVlLCA1KTtcbiRwYWxldHRlLWJsdWUtNTAwOiBudGgoJHBhbGV0dGUtYmx1ZSwgNik7XG4kcGFsZXR0ZS1ibHVlLTYwMDogbnRoKCRwYWxldHRlLWJsdWUsIDcpO1xuJHBhbGV0dGUtYmx1ZS03MDA6IG50aCgkcGFsZXR0ZS1ibHVlLCA4KTtcbiRwYWxldHRlLWJsdWUtODAwOiBudGgoJHBhbGV0dGUtYmx1ZSwgOSk7XG4kcGFsZXR0ZS1ibHVlLTkwMDogbnRoKCRwYWxldHRlLWJsdWUsIDEwKTtcbiRwYWxldHRlLWJsdWUtQTEwMDogbnRoKCRwYWxldHRlLWJsdWUsIDExKTtcbiRwYWxldHRlLWJsdWUtQTIwMDogbnRoKCRwYWxldHRlLWJsdWUsIDEyKTtcbiRwYWxldHRlLWJsdWUtQTQwMDogbnRoKCRwYWxldHRlLWJsdWUsIDEzKTtcbiRwYWxldHRlLWJsdWUtQTcwMDogbnRoKCRwYWxldHRlLWJsdWUsIDE0KTtcblxuJHBhbGV0dGUtbGlnaHQtYmx1ZTpcblwiMjI1LDI0NSwyNTRcIlxuXCIxNzksMjI5LDI1MlwiXG5cIjEyOSwyMTIsMjUwXCJcblwiNzksMTk1LDI0N1wiXG5cIjQxLDE4MiwyNDZcIlxuXCIzLDE2OSwyNDRcIlxuXCIzLDE1NSwyMjlcIlxuXCIyLDEzNiwyMDlcIlxuXCIyLDExOSwxODlcIlxuXCIxLDg3LDE1NVwiXG5cIjEyOCwyMTYsMjU1XCJcblwiNjQsMTk2LDI1NVwiXG5cIjAsMTc2LDI1NVwiXG5cIjAsMTQ1LDIzNFwiO1xuXG4kcGFsZXR0ZS1saWdodC1ibHVlLTUwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgMSk7XG4kcGFsZXR0ZS1saWdodC1ibHVlLTEwMDogbnRoKCRwYWxldHRlLWxpZ2h0LWJsdWUsIDIpO1xuJHBhbGV0dGUtbGlnaHQtYmx1ZS0yMDA6IG50aCgkcGFsZXR0ZS1saWdodC1ibHVlLCAzKTtcbiRwYWxldHRlLWxpZ2h0LWJsdWUtMzAwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgNCk7XG4kcGFsZXR0ZS1saWdodC1ibHVlLTQwMDogbnRoKCRwYWxldHRlLWxpZ2h0LWJsdWUsIDUpO1xuJHBhbGV0dGUtbGlnaHQtYmx1ZS01MDA6IG50aCgkcGFsZXR0ZS1saWdodC1ibHVlLCA2KTtcbiRwYWxldHRlLWxpZ2h0LWJsdWUtNjAwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgNyk7XG4kcGFsZXR0ZS1saWdodC1ibHVlLTcwMDogbnRoKCRwYWxldHRlLWxpZ2h0LWJsdWUsIDgpO1xuJHBhbGV0dGUtbGlnaHQtYmx1ZS04MDA6IG50aCgkcGFsZXR0ZS1saWdodC1ibHVlLCA5KTtcbiRwYWxldHRlLWxpZ2h0LWJsdWUtOTAwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgMTApO1xuJHBhbGV0dGUtbGlnaHQtYmx1ZS1BMTAwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgMTEpO1xuJHBhbGV0dGUtbGlnaHQtYmx1ZS1BMjAwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgMTIpO1xuJHBhbGV0dGUtbGlnaHQtYmx1ZS1BNDAwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgMTMpO1xuJHBhbGV0dGUtbGlnaHQtYmx1ZS1BNzAwOiBudGgoJHBhbGV0dGUtbGlnaHQtYmx1ZSwgMTQpO1xuXG4kcGFsZXR0ZS1jeWFuOlxuXCIyMjQsMjQ3LDI1MFwiXG5cIjE3OCwyMzUsMjQyXCJcblwiMTI4LDIyMiwyMzRcIlxuXCI3NywyMDgsMjI1XCJcblwiMzgsMTk4LDIxOFwiXG5cIjAsMTg4LDIxMlwiXG5cIjAsMTcyLDE5M1wiXG5cIjAsMTUxLDE2N1wiXG5cIjAsMTMxLDE0M1wiXG5cIjAsOTYsMTAwXCJcblwiMTMyLDI1NSwyNTVcIlxuXCIyNCwyNTUsMjU1XCJcblwiMCwyMjksMjU1XCJcblwiMCwxODQsMjEyXCI7XG5cbiRwYWxldHRlLWN5YW4tNTA6IG50aCgkcGFsZXR0ZS1jeWFuLCAxKTtcbiRwYWxldHRlLWN5YW4tMTAwOiBudGgoJHBhbGV0dGUtY3lhbiwgMik7XG4kcGFsZXR0ZS1jeWFuLTIwMDogbnRoKCRwYWxldHRlLWN5YW4sIDMpO1xuJHBhbGV0dGUtY3lhbi0zMDA6IG50aCgkcGFsZXR0ZS1jeWFuLCA0KTtcbiRwYWxldHRlLWN5YW4tNDAwOiBudGgoJHBhbGV0dGUtY3lhbiwgNSk7XG4kcGFsZXR0ZS1jeWFuLTUwMDogbnRoKCRwYWxldHRlLWN5YW4sIDYpO1xuJHBhbGV0dGUtY3lhbi02MDA6IG50aCgkcGFsZXR0ZS1jeWFuLCA3KTtcbiRwYWxldHRlLWN5YW4tNzAwOiBudGgoJHBhbGV0dGUtY3lhbiwgOCk7XG4kcGFsZXR0ZS1jeWFuLTgwMDogbnRoKCRwYWxldHRlLWN5YW4sIDkpO1xuJHBhbGV0dGUtY3lhbi05MDA6IG50aCgkcGFsZXR0ZS1jeWFuLCAxMCk7XG4kcGFsZXR0ZS1jeWFuLUExMDA6IG50aCgkcGFsZXR0ZS1jeWFuLCAxMSk7XG4kcGFsZXR0ZS1jeWFuLUEyMDA6IG50aCgkcGFsZXR0ZS1jeWFuLCAxMik7XG4kcGFsZXR0ZS1jeWFuLUE0MDA6IG50aCgkcGFsZXR0ZS1jeWFuLCAxMyk7XG4kcGFsZXR0ZS1jeWFuLUE3MDA6IG50aCgkcGFsZXR0ZS1jeWFuLCAxNCk7XG5cbiRwYWxldHRlLXRlYWw6XG5cIjIyNCwyNDIsMjQxXCJcblwiMTc4LDIyMywyMTlcIlxuXCIxMjgsMjAzLDE5NlwiXG5cIjc3LDE4MiwxNzJcIlxuXCIzOCwxNjYsMTU0XCJcblwiMCwxNTAsMTM2XCJcblwiMCwxMzcsMTIzXCJcblwiMCwxMjEsMTA3XCJcblwiMCwxMDUsOTJcIlxuXCIwLDc3LDY0XCJcblwiMTY3LDI1NSwyMzVcIlxuXCIxMDAsMjU1LDIxOFwiXG5cIjI5LDIzMywxODJcIlxuXCIwLDE5MSwxNjVcIjtcblxuJHBhbGV0dGUtdGVhbC01MDogbnRoKCRwYWxldHRlLXRlYWwsIDEpO1xuJHBhbGV0dGUtdGVhbC0xMDA6IG50aCgkcGFsZXR0ZS10ZWFsLCAyKTtcbiRwYWxldHRlLXRlYWwtMjAwOiBudGgoJHBhbGV0dGUtdGVhbCwgMyk7XG4kcGFsZXR0ZS10ZWFsLTMwMDogbnRoKCRwYWxldHRlLXRlYWwsIDQpO1xuJHBhbGV0dGUtdGVhbC00MDA6IG50aCgkcGFsZXR0ZS10ZWFsLCA1KTtcbiRwYWxldHRlLXRlYWwtNTAwOiBudGgoJHBhbGV0dGUtdGVhbCwgNik7XG4kcGFsZXR0ZS10ZWFsLTYwMDogbnRoKCRwYWxldHRlLXRlYWwsIDcpO1xuJHBhbGV0dGUtdGVhbC03MDA6IG50aCgkcGFsZXR0ZS10ZWFsLCA4KTtcbiRwYWxldHRlLXRlYWwtODAwOiBudGgoJHBhbGV0dGUtdGVhbCwgOSk7XG4kcGFsZXR0ZS10ZWFsLTkwMDogbnRoKCRwYWxldHRlLXRlYWwsIDEwKTtcbiRwYWxldHRlLXRlYWwtQTEwMDogbnRoKCRwYWxldHRlLXRlYWwsIDExKTtcbiRwYWxldHRlLXRlYWwtQTIwMDogbnRoKCRwYWxldHRlLXRlYWwsIDEyKTtcbiRwYWxldHRlLXRlYWwtQTQwMDogbnRoKCRwYWxldHRlLXRlYWwsIDEzKTtcbiRwYWxldHRlLXRlYWwtQTcwMDogbnRoKCRwYWxldHRlLXRlYWwsIDE0KTtcblxuJHBhbGV0dGUtZ3JlZW46XG5cIjIzMiwyNDUsMjMzXCJcblwiMjAwLDIzMCwyMDFcIlxuXCIxNjUsMjE0LDE2N1wiXG5cIjEyOSwxOTksMTMyXCJcblwiMTAyLDE4NywxMDZcIlxuXCI3NiwxNzUsODBcIlxuXCI2NywxNjAsNzFcIlxuXCI1NiwxNDIsNjBcIlxuXCI0NiwxMjUsNTBcIlxuXCIyNyw5NCwzMlwiXG5cIjE4NSwyNDYsMjAyXCJcblwiMTA1LDI0MCwxNzRcIlxuXCIwLDIzMCwxMThcIlxuXCIwLDIwMCw4M1wiO1xuXG4kcGFsZXR0ZS1ncmVlbi01MDogbnRoKCRwYWxldHRlLWdyZWVuLCAxKTtcbiRwYWxldHRlLWdyZWVuLTEwMDogbnRoKCRwYWxldHRlLWdyZWVuLCAyKTtcbiRwYWxldHRlLWdyZWVuLTIwMDogbnRoKCRwYWxldHRlLWdyZWVuLCAzKTtcbiRwYWxldHRlLWdyZWVuLTMwMDogbnRoKCRwYWxldHRlLWdyZWVuLCA0KTtcbiRwYWxldHRlLWdyZWVuLTQwMDogbnRoKCRwYWxldHRlLWdyZWVuLCA1KTtcbiRwYWxldHRlLWdyZWVuLTUwMDogbnRoKCRwYWxldHRlLWdyZWVuLCA2KTtcbiRwYWxldHRlLWdyZWVuLTYwMDogbnRoKCRwYWxldHRlLWdyZWVuLCA3KTtcbiRwYWxldHRlLWdyZWVuLTcwMDogbnRoKCRwYWxldHRlLWdyZWVuLCA4KTtcbiRwYWxldHRlLWdyZWVuLTgwMDogbnRoKCRwYWxldHRlLWdyZWVuLCA5KTtcbiRwYWxldHRlLWdyZWVuLTkwMDogbnRoKCRwYWxldHRlLWdyZWVuLCAxMCk7XG4kcGFsZXR0ZS1ncmVlbi1BMTAwOiBudGgoJHBhbGV0dGUtZ3JlZW4sIDExKTtcbiRwYWxldHRlLWdyZWVuLUEyMDA6IG50aCgkcGFsZXR0ZS1ncmVlbiwgMTIpO1xuJHBhbGV0dGUtZ3JlZW4tQTQwMDogbnRoKCRwYWxldHRlLWdyZWVuLCAxMyk7XG4kcGFsZXR0ZS1ncmVlbi1BNzAwOiBudGgoJHBhbGV0dGUtZ3JlZW4sIDE0KTtcblxuJHBhbGV0dGUtbGlnaHQtZ3JlZW46XG5cIjI0MSwyNDgsMjMzXCJcblwiMjIwLDIzNywyMDBcIlxuXCIxOTcsMjI1LDE2NVwiXG5cIjE3NCwyMTMsMTI5XCJcblwiMTU2LDIwNCwxMDFcIlxuXCIxMzksMTk1LDc0XCJcblwiMTI0LDE3OSw2NlwiXG5cIjEwNCwxNTksNTZcIlxuXCI4NSwxMzksNDdcIlxuXCI1MSwxMDUsMzBcIlxuXCIyMDQsMjU1LDE0NFwiXG5cIjE3OCwyNTUsODlcIlxuXCIxMTgsMjU1LDNcIlxuXCIxMDAsMjIxLDIzXCI7XG5cbiRwYWxldHRlLWxpZ2h0LWdyZWVuLTUwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDEpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tMTAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDIpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tMjAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDMpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tMzAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDQpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tNDAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDUpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tNTAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDYpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tNjAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDcpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tNzAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDgpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tODAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDkpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tOTAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDEwKTtcbiRwYWxldHRlLWxpZ2h0LWdyZWVuLUExMDA6IG50aCgkcGFsZXR0ZS1saWdodC1ncmVlbiwgMTEpO1xuJHBhbGV0dGUtbGlnaHQtZ3JlZW4tQTIwMDogbnRoKCRwYWxldHRlLWxpZ2h0LWdyZWVuLCAxMik7XG4kcGFsZXR0ZS1saWdodC1ncmVlbi1BNDAwOiBudGgoJHBhbGV0dGUtbGlnaHQtZ3JlZW4sIDEzKTtcbiRwYWxldHRlLWxpZ2h0LWdyZWVuLUE3MDA6IG50aCgkcGFsZXR0ZS1saWdodC1ncmVlbiwgMTQpO1xuXG4kcGFsZXR0ZS1saW1lOlxuXCIyNDksMjUxLDIzMVwiXG5cIjI0MCwyNDQsMTk1XCJcblwiMjMwLDIzOCwxNTZcIlxuXCIyMjAsMjMxLDExN1wiXG5cIjIxMiwyMjUsODdcIlxuXCIyMDUsMjIwLDU3XCJcblwiMTkyLDIwMiw1MVwiXG5cIjE3NSwxODAsNDNcIlxuXCIxNTgsMTU3LDM2XCJcblwiMTMwLDExOSwyM1wiXG5cIjI0NCwyNTUsMTI5XCJcblwiMjM4LDI1NSw2NVwiXG5cIjE5OCwyNTUsMFwiXG5cIjE3NCwyMzQsMFwiO1xuXG4kcGFsZXR0ZS1saW1lLTUwOiBudGgoJHBhbGV0dGUtbGltZSwgMSk7XG4kcGFsZXR0ZS1saW1lLTEwMDogbnRoKCRwYWxldHRlLWxpbWUsIDIpO1xuJHBhbGV0dGUtbGltZS0yMDA6IG50aCgkcGFsZXR0ZS1saW1lLCAzKTtcbiRwYWxldHRlLWxpbWUtMzAwOiBudGgoJHBhbGV0dGUtbGltZSwgNCk7XG4kcGFsZXR0ZS1saW1lLTQwMDogbnRoKCRwYWxldHRlLWxpbWUsIDUpO1xuJHBhbGV0dGUtbGltZS01MDA6IG50aCgkcGFsZXR0ZS1saW1lLCA2KTtcbiRwYWxldHRlLWxpbWUtNjAwOiBudGgoJHBhbGV0dGUtbGltZSwgNyk7XG4kcGFsZXR0ZS1saW1lLTcwMDogbnRoKCRwYWxldHRlLWxpbWUsIDgpO1xuJHBhbGV0dGUtbGltZS04MDA6IG50aCgkcGFsZXR0ZS1saW1lLCA5KTtcbiRwYWxldHRlLWxpbWUtOTAwOiBudGgoJHBhbGV0dGUtbGltZSwgMTApO1xuJHBhbGV0dGUtbGltZS1BMTAwOiBudGgoJHBhbGV0dGUtbGltZSwgMTEpO1xuJHBhbGV0dGUtbGltZS1BMjAwOiBudGgoJHBhbGV0dGUtbGltZSwgMTIpO1xuJHBhbGV0dGUtbGltZS1BNDAwOiBudGgoJHBhbGV0dGUtbGltZSwgMTMpO1xuJHBhbGV0dGUtbGltZS1BNzAwOiBudGgoJHBhbGV0dGUtbGltZSwgMTQpO1xuXG4kcGFsZXR0ZS15ZWxsb3c6XG5cIjI1NSwyNTMsMjMxXCJcblwiMjU1LDI0OSwxOTZcIlxuXCIyNTUsMjQ1LDE1N1wiXG5cIjI1NSwyNDEsMTE4XCJcblwiMjU1LDIzOCw4OFwiXG5cIjI1NSwyMzUsNTlcIlxuXCIyNTMsMjE2LDUzXCJcblwiMjUxLDE5Miw0NVwiXG5cIjI0OSwxNjgsMzdcIlxuXCIyNDUsMTI3LDIzXCJcblwiMjU1LDI1NSwxNDFcIlxuXCIyNTUsMjU1LDBcIlxuXCIyNTUsMjM0LDBcIlxuXCIyNTUsMjE0LDBcIjtcblxuJHBhbGV0dGUteWVsbG93LTUwOiBudGgoJHBhbGV0dGUteWVsbG93LCAxKTtcbiRwYWxldHRlLXllbGxvdy0xMDA6IG50aCgkcGFsZXR0ZS15ZWxsb3csIDIpO1xuJHBhbGV0dGUteWVsbG93LTIwMDogbnRoKCRwYWxldHRlLXllbGxvdywgMyk7XG4kcGFsZXR0ZS15ZWxsb3ctMzAwOiBudGgoJHBhbGV0dGUteWVsbG93LCA0KTtcbiRwYWxldHRlLXllbGxvdy00MDA6IG50aCgkcGFsZXR0ZS15ZWxsb3csIDUpO1xuJHBhbGV0dGUteWVsbG93LTUwMDogbnRoKCRwYWxldHRlLXllbGxvdywgNik7XG4kcGFsZXR0ZS15ZWxsb3ctNjAwOiBudGgoJHBhbGV0dGUteWVsbG93LCA3KTtcbiRwYWxldHRlLXllbGxvdy03MDA6IG50aCgkcGFsZXR0ZS15ZWxsb3csIDgpO1xuJHBhbGV0dGUteWVsbG93LTgwMDogbnRoKCRwYWxldHRlLXllbGxvdywgOSk7XG4kcGFsZXR0ZS15ZWxsb3ctOTAwOiBudGgoJHBhbGV0dGUteWVsbG93LCAxMCk7XG4kcGFsZXR0ZS15ZWxsb3ctQTEwMDogbnRoKCRwYWxldHRlLXllbGxvdywgMTEpO1xuJHBhbGV0dGUteWVsbG93LUEyMDA6IG50aCgkcGFsZXR0ZS15ZWxsb3csIDEyKTtcbiRwYWxldHRlLXllbGxvdy1BNDAwOiBudGgoJHBhbGV0dGUteWVsbG93LCAxMyk7XG4kcGFsZXR0ZS15ZWxsb3ctQTcwMDogbnRoKCRwYWxldHRlLXllbGxvdywgMTQpO1xuXG4kcGFsZXR0ZS1hbWJlcjpcblwiMjU1LDI0OCwyMjVcIlxuXCIyNTUsMjM2LDE3OVwiXG5cIjI1NSwyMjQsMTMwXCJcblwiMjU1LDIxMyw3OVwiXG5cIjI1NSwyMDIsNDBcIlxuXCIyNTUsMTkzLDdcIlxuXCIyNTUsMTc5LDBcIlxuXCIyNTUsMTYwLDBcIlxuXCIyNTUsMTQzLDBcIlxuXCIyNTUsMTExLDBcIlxuXCIyNTUsMjI5LDEyN1wiXG5cIjI1NSwyMTUsNjRcIlxuXCIyNTUsMTk2LDBcIlxuXCIyNTUsMTcxLDBcIjtcblxuJHBhbGV0dGUtYW1iZXItNTA6IG50aCgkcGFsZXR0ZS1hbWJlciwgMSk7XG4kcGFsZXR0ZS1hbWJlci0xMDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgMik7XG4kcGFsZXR0ZS1hbWJlci0yMDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgMyk7XG4kcGFsZXR0ZS1hbWJlci0zMDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgNCk7XG4kcGFsZXR0ZS1hbWJlci00MDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgNSk7XG4kcGFsZXR0ZS1hbWJlci01MDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgNik7XG4kcGFsZXR0ZS1hbWJlci02MDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgNyk7XG4kcGFsZXR0ZS1hbWJlci03MDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgOCk7XG4kcGFsZXR0ZS1hbWJlci04MDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgOSk7XG4kcGFsZXR0ZS1hbWJlci05MDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgMTApO1xuJHBhbGV0dGUtYW1iZXItQTEwMDogbnRoKCRwYWxldHRlLWFtYmVyLCAxMSk7XG4kcGFsZXR0ZS1hbWJlci1BMjAwOiBudGgoJHBhbGV0dGUtYW1iZXIsIDEyKTtcbiRwYWxldHRlLWFtYmVyLUE0MDA6IG50aCgkcGFsZXR0ZS1hbWJlciwgMTMpO1xuJHBhbGV0dGUtYW1iZXItQTcwMDogbnRoKCRwYWxldHRlLWFtYmVyLCAxNCk7XG5cbiRwYWxldHRlLW9yYW5nZTpcblwiMjU1LDI0MywyMjRcIlxuXCIyNTUsMjI0LDE3OFwiXG5cIjI1NSwyMDQsMTI4XCJcblwiMjU1LDE4Myw3N1wiXG5cIjI1NSwxNjcsMzhcIlxuXCIyNTUsMTUyLDBcIlxuXCIyNTEsMTQwLDBcIlxuXCIyNDUsMTI0LDBcIlxuXCIyMzksMTA4LDBcIlxuXCIyMzAsODEsMFwiXG5cIjI1NSwyMDksMTI4XCJcblwiMjU1LDE3MSw2NFwiXG5cIjI1NSwxNDUsMFwiXG5cIjI1NSwxMDksMFwiO1xuXG4kcGFsZXR0ZS1vcmFuZ2UtNTA6IG50aCgkcGFsZXR0ZS1vcmFuZ2UsIDEpO1xuJHBhbGV0dGUtb3JhbmdlLTEwMDogbnRoKCRwYWxldHRlLW9yYW5nZSwgMik7XG4kcGFsZXR0ZS1vcmFuZ2UtMjAwOiBudGgoJHBhbGV0dGUtb3JhbmdlLCAzKTtcbiRwYWxldHRlLW9yYW5nZS0zMDA6IG50aCgkcGFsZXR0ZS1vcmFuZ2UsIDQpO1xuJHBhbGV0dGUtb3JhbmdlLTQwMDogbnRoKCRwYWxldHRlLW9yYW5nZSwgNSk7XG4kcGFsZXR0ZS1vcmFuZ2UtNTAwOiBudGgoJHBhbGV0dGUtb3JhbmdlLCA2KTtcbiRwYWxldHRlLW9yYW5nZS02MDA6IG50aCgkcGFsZXR0ZS1vcmFuZ2UsIDcpO1xuJHBhbGV0dGUtb3JhbmdlLTcwMDogbnRoKCRwYWxldHRlLW9yYW5nZSwgOCk7XG4kcGFsZXR0ZS1vcmFuZ2UtODAwOiBudGgoJHBhbGV0dGUtb3JhbmdlLCA5KTtcbiRwYWxldHRlLW9yYW5nZS05MDA6IG50aCgkcGFsZXR0ZS1vcmFuZ2UsIDEwKTtcbiRwYWxldHRlLW9yYW5nZS1BMTAwOiBudGgoJHBhbGV0dGUtb3JhbmdlLCAxMSk7XG4kcGFsZXR0ZS1vcmFuZ2UtQTIwMDogbnRoKCRwYWxldHRlLW9yYW5nZSwgMTIpO1xuJHBhbGV0dGUtb3JhbmdlLUE0MDA6IG50aCgkcGFsZXR0ZS1vcmFuZ2UsIDEzKTtcbiRwYWxldHRlLW9yYW5nZS1BNzAwOiBudGgoJHBhbGV0dGUtb3JhbmdlLCAxNCk7XG5cbiRwYWxldHRlLWRlZXAtb3JhbmdlOlxuXCIyNTEsMjMzLDIzMVwiXG5cIjI1NSwyMDQsMTg4XCJcblwiMjU1LDE3MSwxNDVcIlxuXCIyNTUsMTM4LDEwMVwiXG5cIjI1NSwxMTIsNjdcIlxuXCIyNTUsODcsMzRcIlxuXCIyNDQsODEsMzBcIlxuXCIyMzAsNzQsMjVcIlxuXCIyMTYsNjcsMjFcIlxuXCIxOTEsNTQsMTJcIlxuXCIyNTUsMTU4LDEyOFwiXG5cIjI1NSwxMTAsNjRcIlxuXCIyNTUsNjEsMFwiXG5cIjIyMSw0NCwwXCI7XG5cbiRwYWxldHRlLWRlZXAtb3JhbmdlLTUwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDEpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtMTAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDIpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtMjAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDMpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtMzAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDQpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtNDAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDUpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtNTAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDYpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtNjAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDcpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtNzAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDgpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtODAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDkpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtOTAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDEwKTtcbiRwYWxldHRlLWRlZXAtb3JhbmdlLUExMDA6IG50aCgkcGFsZXR0ZS1kZWVwLW9yYW5nZSwgMTEpO1xuJHBhbGV0dGUtZGVlcC1vcmFuZ2UtQTIwMDogbnRoKCRwYWxldHRlLWRlZXAtb3JhbmdlLCAxMik7XG4kcGFsZXR0ZS1kZWVwLW9yYW5nZS1BNDAwOiBudGgoJHBhbGV0dGUtZGVlcC1vcmFuZ2UsIDEzKTtcbiRwYWxldHRlLWRlZXAtb3JhbmdlLUE3MDA6IG50aCgkcGFsZXR0ZS1kZWVwLW9yYW5nZSwgMTQpO1xuXG5cbi8vIENvbG9yIG9yZGVyOiA1MCwgMTAwLCAyMDAsIDMwMCwgNDAwLCA1MDAsIDYwMCwgNzAwLCA4MDAsIDkwMC5cblxuJHBhbGV0dGUtYnJvd246XG5cIjIzOSwyMzUsMjMzXCJcblwiMjE1LDIwNCwyMDBcIlxuXCIxODgsMTcwLDE2NFwiXG5cIjE2MSwxMzYsMTI3XCJcblwiMTQxLDExMCw5OVwiXG5cIjEyMSw4NSw3MlwiXG5cIjEwOSw3Niw2NVwiXG5cIjkzLDY0LDU1XCJcblwiNzgsNTIsNDZcIlxuXCI2MiwzOSwzNVwiO1xuXG4kcGFsZXR0ZS1icm93bi01MDogbnRoKCRwYWxldHRlLWJyb3duLCAxKTtcbiRwYWxldHRlLWJyb3duLTEwMDogbnRoKCRwYWxldHRlLWJyb3duLCAyKTtcbiRwYWxldHRlLWJyb3duLTIwMDogbnRoKCRwYWxldHRlLWJyb3duLCAzKTtcbiRwYWxldHRlLWJyb3duLTMwMDogbnRoKCRwYWxldHRlLWJyb3duLCA0KTtcbiRwYWxldHRlLWJyb3duLTQwMDogbnRoKCRwYWxldHRlLWJyb3duLCA1KTtcbiRwYWxldHRlLWJyb3duLTUwMDogbnRoKCRwYWxldHRlLWJyb3duLCA2KTtcbiRwYWxldHRlLWJyb3duLTYwMDogbnRoKCRwYWxldHRlLWJyb3duLCA3KTtcbiRwYWxldHRlLWJyb3duLTcwMDogbnRoKCRwYWxldHRlLWJyb3duLCA4KTtcbiRwYWxldHRlLWJyb3duLTgwMDogbnRoKCRwYWxldHRlLWJyb3duLCA5KTtcbiRwYWxldHRlLWJyb3duLTkwMDogbnRoKCRwYWxldHRlLWJyb3duLCAxMCk7XG5cbiRwYWxldHRlLWdyZXk6XG5cIjI1MCwyNTAsMjUwXCJcblwiMjQ1LDI0NSwyNDVcIlxuXCIyMzgsMjM4LDIzOFwiXG5cIjIyNCwyMjQsMjI0XCJcblwiMTg5LDE4OSwxODlcIlxuXCIxNTgsMTU4LDE1OFwiXG5cIjExNywxMTcsMTE3XCJcblwiOTcsOTcsOTdcIlxuXCI2Niw2Niw2NlwiXG5cIjMzLDMzLDMzXCI7XG5cbiRwYWxldHRlLWdyZXktNTA6IG50aCgkcGFsZXR0ZS1ncmV5LCAxKTtcbiRwYWxldHRlLWdyZXktMTAwOiBudGgoJHBhbGV0dGUtZ3JleSwgMik7XG4kcGFsZXR0ZS1ncmV5LTIwMDogbnRoKCRwYWxldHRlLWdyZXksIDMpO1xuJHBhbGV0dGUtZ3JleS0zMDA6IG50aCgkcGFsZXR0ZS1ncmV5LCA0KTtcbiRwYWxldHRlLWdyZXktNDAwOiBudGgoJHBhbGV0dGUtZ3JleSwgNSk7XG4kcGFsZXR0ZS1ncmV5LTUwMDogbnRoKCRwYWxldHRlLWdyZXksIDYpO1xuJHBhbGV0dGUtZ3JleS02MDA6IG50aCgkcGFsZXR0ZS1ncmV5LCA3KTtcbiRwYWxldHRlLWdyZXktNzAwOiBudGgoJHBhbGV0dGUtZ3JleSwgOCk7XG4kcGFsZXR0ZS1ncmV5LTgwMDogbnRoKCRwYWxldHRlLWdyZXksIDkpO1xuJHBhbGV0dGUtZ3JleS05MDA6IG50aCgkcGFsZXR0ZS1ncmV5LCAxMCk7XG5cbiRwYWxldHRlLWJsdWUtZ3JleTpcblwiMjM2LDIzOSwyNDFcIlxuXCIyMDcsMjE2LDIyMFwiXG5cIjE3NiwxOTAsMTk3XCJcblwiMTQ0LDE2NCwxNzRcIlxuXCIxMjAsMTQ0LDE1NlwiXG5cIjk2LDEyNSwxMzlcIlxuXCI4NCwxMTAsMTIyXCJcblwiNjksOTAsMTAwXCJcblwiNTUsNzEsNzlcIlxuXCIzOCw1MCw1NlwiO1xuXG4kcGFsZXR0ZS1ibHVlLWdyZXktNTA6IG50aCgkcGFsZXR0ZS1ibHVlLWdyZXksIDEpO1xuJHBhbGV0dGUtYmx1ZS1ncmV5LTEwMDogbnRoKCRwYWxldHRlLWJsdWUtZ3JleSwgMik7XG4kcGFsZXR0ZS1ibHVlLWdyZXktMjAwOiBudGgoJHBhbGV0dGUtYmx1ZS1ncmV5LCAzKTtcbiRwYWxldHRlLWJsdWUtZ3JleS0zMDA6IG50aCgkcGFsZXR0ZS1ibHVlLWdyZXksIDQpO1xuJHBhbGV0dGUtYmx1ZS1ncmV5LTQwMDogbnRoKCRwYWxldHRlLWJsdWUtZ3JleSwgNSk7XG4kcGFsZXR0ZS1ibHVlLWdyZXktNTAwOiBudGgoJHBhbGV0dGUtYmx1ZS1ncmV5LCA2KTtcbiRwYWxldHRlLWJsdWUtZ3JleS02MDA6IG50aCgkcGFsZXR0ZS1ibHVlLWdyZXksIDcpO1xuJHBhbGV0dGUtYmx1ZS1ncmV5LTcwMDogbnRoKCRwYWxldHRlLWJsdWUtZ3JleSwgOCk7XG4kcGFsZXR0ZS1ibHVlLWdyZXktODAwOiBudGgoJHBhbGV0dGUtYmx1ZS1ncmV5LCA5KTtcbiRwYWxldHRlLWJsdWUtZ3JleS05MDA6IG50aCgkcGFsZXR0ZS1ibHVlLWdyZXksIDEwKTtcblxuJGNvbG9yLWJsYWNrOiBcIjAsMCwwXCI7XG4kY29sb3Itd2hpdGU6IFwiMjU1LDI1NSwyNTVcIjtcblxuXG4vKiBjb2xvcnMuc2NzcyAqL1xuJHN0eWxlZ3VpZGUtZ2VuZXJhdGUtdGVtcGxhdGU6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBUaGUgdHdvIHBvc3NpYmxlIGNvbG9ycyBmb3Igb3ZlcmxheWVkIHRleHQuXG4kY29sb3ItZGFyay1jb250cmFzdDogJGNvbG9yLXdoaXRlICFkZWZhdWx0O1xuJGNvbG9yLWxpZ2h0LWNvbnRyYXN0OiAkY29sb3ItYmxhY2sgIWRlZmF1bHQ7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AZnVuY3Rpb24gc3RyaXAtdW5pdHMoJG51bWJlcikge1xuICBAcmV0dXJuICRudW1iZXIgLyAoJG51bWJlciAqIDAgKyAxKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIFR5cG9ncmFwaHkgKi9cblxuQG1peGluIHR5cG8tcHJlZmVycmVkLWZvbnQoJHVzZVByZWZlcnJlZDogdHJ1ZSkge1xuICBAaWYgJHVzZVByZWZlcnJlZCB7XG4gICAgZm9udC1mYW1pbHk6ICRwcmVmZXJyZWRfZm9udDtcbiAgfVxufVxuXG5AbWl4aW4gdHlwby1kaXNwbGF5LTQoJGNvbG9yQ29udHJhc3Q6IGZhbHNlLCAkdXNlUHJlZmVycmVkOiB0cnVlKSB7XG4gIEBpbmNsdWRlIHR5cG8tcHJlZmVycmVkLWZvbnQoJHVzZVByZWZlcnJlZCk7XG4gIGZvbnQtc2l6ZTogMTEycHg7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDRlbTtcblxuICBAaWYgJGNvbG9yQ29udHJhc3Qge1xuICAgIG9wYWNpdHk6IDAuNTQ7XG4gIH1cbn1cblxuQG1peGluIHR5cG8tZGlzcGxheS0zKCRjb2xvckNvbnRyYXN0OiBmYWxzZSwgJHVzZVByZWZlcnJlZDogdHJ1ZSkge1xuICBAaW5jbHVkZSB0eXBvLXByZWZlcnJlZC1mb250KCR1c2VQcmVmZXJyZWQpO1xuICBmb250LXNpemU6IDU2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDJlbTtcblxuICBAaWYgJGNvbG9yQ29udHJhc3Qge1xuICAgIG9wYWNpdHk6IDAuNTQ7XG4gIH1cbn1cblxuQG1peGluIHR5cG8tZGlzcGxheS0yKCRjb2xvckNvbnRyYXN0OiBmYWxzZSwgJHVzZVByZWZlcnJlZDogdHJ1ZSkge1xuICBAaW5jbHVkZSB0eXBvLXByZWZlcnJlZC1mb250KCR1c2VQcmVmZXJyZWQpO1xuICBmb250LXNpemU6IDQ1cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiA0OHB4O1xuXG4gIEBpZiAkY29sb3JDb250cmFzdCB7XG4gICAgb3BhY2l0eTogMC41NDtcbiAgfVxufVxuXG5AbWl4aW4gdHlwby1kaXNwbGF5LTEoJGNvbG9yQ29udHJhc3Q6IGZhbHNlLCAkdXNlUHJlZmVycmVkOiB0cnVlKSB7XG4gIEBpbmNsdWRlIHR5cG8tcHJlZmVycmVkLWZvbnQoJHVzZVByZWZlcnJlZCk7XG4gIGZvbnQtc2l6ZTogMzRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG5cbiAgQGlmICRjb2xvckNvbnRyYXN0IHtcbiAgICBvcGFjaXR5OiAwLjU0O1xuICB9XG59XG5cbkBtaXhpbiB0eXBvLWhlYWRsaW5lKCRjb2xvckNvbnRyYXN0OiBmYWxzZSwgJHVzZVByZWZlcnJlZDogdHJ1ZSkge1xuICBAaW5jbHVkZSB0eXBvLXByZWZlcnJlZC1mb250KCR1c2VQcmVmZXJyZWQpO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuXG4gIEBpZiAkY29sb3JDb250cmFzdCB7XG4gICAgb3BhY2l0eTogMC44NztcbiAgfVxufVxuXG5AbWl4aW4gdHlwby10aXRsZSgkY29sb3JDb250cmFzdDogZmFsc2UsICR1c2VQcmVmZXJyZWQ6IHRydWUpIHtcbiAgQGluY2x1ZGUgdHlwby1wcmVmZXJyZWQtZm9udCgkdXNlUHJlZmVycmVkKTtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcblxuICBAaWYgJGNvbG9yQ29udHJhc3Qge1xuICAgIG9wYWNpdHk6IDAuODc7XG4gIH1cbn1cblxuQG1peGluIHR5cG8tc3ViaGVhZCgkY29sb3JDb250cmFzdDogZmFsc2UsICR1c2VQcmVmZXJyZWQ6IHRydWUpIHtcbiAgQGluY2x1ZGUgdHlwby1wcmVmZXJyZWQtZm9udCgkdXNlUHJlZmVycmVkKTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcblxuICBAaWYgJGNvbG9yQ29udHJhc3Qge1xuICAgIG9wYWNpdHk6IDAuODc7XG4gIH1cbn1cblxuQG1peGluIHR5cG8tc3ViaGVhZC0yKCRjb2xvckNvbnRyYXN0OiBmYWxzZSwgJHVzZVByZWZlcnJlZDogdHJ1ZSkge1xuICBAaW5jbHVkZSB0eXBvLXByZWZlcnJlZC1mb250KCR1c2VQcmVmZXJyZWQpO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuXG4gIEBpZiAkY29sb3JDb250cmFzdCB7XG4gICAgb3BhY2l0eTogMC44NztcbiAgfVxufVxuXG5AbWl4aW4gdHlwby1ib2R5LTIoJGNvbG9yQ29udHJhc3Q6IGZhbHNlLCAkdXNlUHJlZmVycmVkOiBmYWxzZSkge1xuICBAaW5jbHVkZSB0eXBvLXByZWZlcnJlZC1mb250KCR1c2VQcmVmZXJyZWQpO1xuICBmb250LXNpemU6IDE0cHg7XG4gIEBpZiAkdXNlUHJlZmVycmVkIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9IEBlbHNlIHtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuICBsaW5lLWhlaWdodDogMjRweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgQGlmICRjb2xvckNvbnRyYXN0IHtcbiAgICBvcGFjaXR5OiAwLjg3O1xuICB9XG59XG5cbkBtaXhpbiB0eXBvLWJvZHktMSgkY29sb3JDb250cmFzdDogZmFsc2UsICR1c2VQcmVmZXJyZWQ6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHR5cG8tcHJlZmVycmVkLWZvbnQoJHVzZVByZWZlcnJlZCk7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwO1xuXG4gIEBpZiAkY29sb3JDb250cmFzdCB7XG4gICAgb3BhY2l0eTogMC44NztcbiAgfVxufVxuXG5AbWl4aW4gdHlwby1jYXB0aW9uKCRjb2xvckNvbnRyYXN0OiBmYWxzZSwgJHVzZVByZWZlcnJlZDogZmFsc2UpIHtcbiAgQGluY2x1ZGUgdHlwby1wcmVmZXJyZWQtZm9udCgkdXNlUHJlZmVycmVkKTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgQGlmICRjb2xvckNvbnRyYXN0IHtcbiAgICBvcGFjaXR5OiAwLjU0O1xuICB9XG59XG5cbkBtaXhpbiB0eXBvLWJsb2NrcXVvdGUoJGNvbG9yQ29udHJhc3Q6IGZhbHNlLCAkdXNlUHJlZmVycmVkOiB0cnVlKSB7XG4gIEBpbmNsdWRlIHR5cG8tcHJlZmVycmVkLWZvbnQoJHVzZVByZWZlcnJlZCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiAyNHB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIGxpbmUtaGVpZ2h0OiAxLjM1O1xuICBsZXR0ZXItc3BhY2luZzogMC4wOGVtO1xuXG4gICY6YmVmb3JlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogLTAuNWVtO1xuICAgIGNvbnRlbnQ6ICfigJwnO1xuICB9XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogJ+KAnSc7XG4gICAgbWFyZ2luLWxlZnQ6IC0wLjA1ZW07XG4gIH1cblxuICBAaWYgJGNvbG9yQ29udHJhc3Qge1xuICAgIG9wYWNpdHk6IDAuNTQ7XG4gIH1cbn1cblxuQG1peGluIHR5cG8tbWVudSgkY29sb3JDb250cmFzdDogZmFsc2UsICR1c2VQcmVmZXJyZWQ6IHRydWUpIHtcbiAgQGluY2x1ZGUgdHlwby1wcmVmZXJyZWQtZm9udCgkdXNlUHJlZmVycmVkKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgQGlmICRjb2xvckNvbnRyYXN0IHtcbiAgICBvcGFjaXR5OiAwLjg3O1xuICB9XG59XG5cbkBtaXhpbiB0eXBvLWJ1dHRvbigkY29sb3JDb250cmFzdDogZmFsc2UsICR1c2VQcmVmZXJyZWQ6IHRydWUpIHtcbiAgQGluY2x1ZGUgdHlwby1wcmVmZXJyZWQtZm9udCgkdXNlUHJlZmVycmVkKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsaW5lLWhlaWdodDogMTtcbiAgbGV0dGVyLXNwYWNpbmc6IDA7XG5cbiAgQGlmICRjb2xvckNvbnRyYXN0IHtcbiAgICBvcGFjaXR5OiAwLjg3O1xuICB9XG59XG5cbi8qIFNoYWRvd3MgKi9cblxuLy8gRm9jdXMgc2hhZG93IG1peGluLlxuQG1peGluIGZvY3VzLXNoYWRvdygpIHtcbiAgYm94LXNoYWRvdzogMCAwIDhweCByZ2JhKDAsMCwwLC4xOCksMCA4cHggMTZweCByZ2JhKDAsMCwwLC4zNik7XG59XG5cbkBtaXhpbiBzaGFkb3ctMmRwKCkge1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsICRzaGFkb3cta2V5LXBlbnVtYnJhLW9wYWNpdHkpLFxuICAgICAgICAgICAgICAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsICRzaGFkb3cta2V5LXVtYnJhLW9wYWNpdHkpLFxuICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsICRzaGFkb3ctYW1iaWVudC1zaGFkb3ctb3BhY2l0eSk7XG59XG5AbWl4aW4gc2hhZG93LTNkcCgpIHtcbiAgYm94LXNoYWRvdzogMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAkc2hhZG93LWtleS1wZW51bWJyYS1vcGFjaXR5KSxcbiAgICAgICAgICAgICAgMCAzcHggM3B4IC0ycHggcmdiYSgwLCAwLCAwLCAkc2hhZG93LWtleS11bWJyYS1vcGFjaXR5KSxcbiAgICAgICAgICAgICAgMCAxcHggOHB4IDAgcmdiYSgwLCAwLCAwLCAkc2hhZG93LWFtYmllbnQtc2hhZG93LW9wYWNpdHkpO1xufVxuQG1peGluIHNoYWRvdy00ZHAoKSB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgJHNoYWRvdy1rZXktcGVudW1icmEtb3BhY2l0eSksXG4gICAgICAgICAgICAgIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsICRzaGFkb3ctYW1iaWVudC1zaGFkb3ctb3BhY2l0eSksXG4gICAgICAgICAgICAgIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgJHNoYWRvdy1rZXktdW1icmEtb3BhY2l0eSk7XG59XG5AbWl4aW4gc2hhZG93LTZkcCgpIHtcbiAgYm94LXNoYWRvdzogMCA2cHggMTBweCAwIHJnYmEoMCwgMCwgMCwgJHNoYWRvdy1rZXktcGVudW1icmEtb3BhY2l0eSksXG4gICAgICAgICAgICAgIDAgMXB4IDE4cHggMCByZ2JhKDAsIDAsIDAsICRzaGFkb3ctYW1iaWVudC1zaGFkb3ctb3BhY2l0eSksXG4gICAgICAgICAgICAgIDAgM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgJHNoYWRvdy1rZXktdW1icmEtb3BhY2l0eSk7XG59XG5AbWl4aW4gc2hhZG93LThkcCgpIHtcbiAgYm94LXNoYWRvdzogMCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAkc2hhZG93LWtleS1wZW51bWJyYS1vcGFjaXR5KSxcbiAgICAgICAgICAgICAgMCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAkc2hhZG93LWFtYmllbnQtc2hhZG93LW9wYWNpdHkpLFxuICAgICAgICAgICAgICAwIDVweCA1cHggLTNweCByZ2JhKDAsIDAsIDAsICRzaGFkb3cta2V5LXVtYnJhLW9wYWNpdHkpO1xufVxuXG5AbWl4aW4gc2hhZG93LTE2ZHAoKSB7XG4gIGJveC1zaGFkb3c6IDAgMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsICRzaGFkb3cta2V5LXBlbnVtYnJhLW9wYWNpdHkpLFxuICAgICAgICAgICAgICAwICA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAkc2hhZG93LWFtYmllbnQtc2hhZG93LW9wYWNpdHkpLFxuICAgICAgICAgICAgICAwICA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgJHNoYWRvdy1rZXktdW1icmEtb3BhY2l0eSk7XG59XG5cbi8qIEFuaW1hdGlvbnMgKi9cblxuQG1peGluIG1hdGVyaWFsLWFuaW1hdGlvbi1mYXN0LW91dC1zbG93LWluKCRkdXJhdGlvbjowLjJzKSB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICRhbmltYXRpb24tY3VydmUtZmFzdC1vdXQtc2xvdy1pbjtcbn1cblxuQG1peGluIG1hdGVyaWFsLWFuaW1hdGlvbi1saW5lYXItb3V0LXNsb3ctaW4oJGR1cmF0aW9uOjAuMnMpIHtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogJGFuaW1hdGlvbi1jdXJ2ZS1saW5lYXItb3V0LXNsb3ctaW47XG59XG5cbkBtaXhpbiBtYXRlcmlhbC1hbmltYXRpb24tZmFzdC1vdXQtbGluZWFyLWluKCRkdXJhdGlvbjowLjJzKSB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICRhbmltYXRpb24tY3VydmUtZmFzdC1vdXQtbGluZWFyLWluO1xufVxuXG5AbWl4aW4gbWF0ZXJpYWwtYW5pbWF0aW9uLWRlZmF1bHQoJGR1cmF0aW9uOjAuMnMpIHtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogJGFuaW1hdGlvbi1jdXJ2ZS1kZWZhdWx0O1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuQGltcG9ydCBcImg1YnBcIjtcbkBpbXBvcnQgXCJtb2JpbGVcIjtcblxuLypcbiAqIE1ha2UgaHRtbCB0YWtlIHVwIHRoZSBlbnRpcmUgc2NyZWVuXG4gKiBUaGVuIHNldCB0b3VjaC1hY3Rpb24gdG8gYXZvaWQgdG91Y2ggZGVsYXkgb24gbW9iaWxlIElFXG4gKi9cbmh0bWwge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICAtbXMtdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuXG4vKlxuKiBNYWtlIGJvZHkgdGFrZSB1cCB0aGUgZW50aXJlIHNjcmVlblxuKiBSZW1vdmUgYm9keSBtYXJnaW4gc28gbGF5b3V0IGNvbnRhaW5lcnMgZG9uJ3QgY2F1c2UgZXh0cmEgb3ZlcmZsb3cuXG4qL1xuYm9keSB7XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG59XG5cbi8qXG4gKiBNYWluIGRpc3BsYXkgcmVzZXQgZm9yIElFIHN1cHBvcnQuXG4gKiBTb3VyY2U6IGh0dHA6Ly93ZWJsb2cud2VzdC13aW5kLmNvbS9wb3N0cy8yMDE1L0phbi8xMi9tYWluLUhUTUw1LVRhZy1ub3Qtd29ya2luZy1pbi1JbnRlcm5ldC1FeHBsb3Jlci05MTAxMVxuICovXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qXG4qIEFwcGx5IG5vIGRpc3BsYXkgdG8gZWxlbWVudHMgd2l0aCB0aGUgaGlkZGVuIGF0dHJpYnV0ZS5cbiogSUUgOSBhbmQgMTAgc3VwcG9ydC5cbiovXG4qW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5cbi8qXG4gKiBXaGF0IGZvbGxvd3MgaXMgdGhlIHJlc3VsdCBvZiBtdWNoIHJlc2VhcmNoIG9uIGNyb3NzLWJyb3dzZXIgc3R5bGluZy5cbiAqIENyZWRpdCBsZWZ0IGlubGluZSBhbmQgYmlnIHRoYW5rcyB0byBOaWNvbGFzIEdhbGxhZ2hlciwgSm9uYXRoYW4gTmVhbCxcbiAqIEtyb2MgQ2FtZW4sIGFuZCB0aGUgSDVCUCBkZXYgY29tbXVuaXR5IGFuZCB0ZWFtLlxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCYXNlIHN0eWxlczogb3BpbmlvbmF0ZWQgZGVmYXVsdHNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbmh0bWwge1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvci1wcmltYXJ5O1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG5cbi8qXG4gKiBSZW1vdmUgdGV4dC1zaGFkb3cgaW4gc2VsZWN0aW9uIGhpZ2hsaWdodDpcbiAqIGh0dHBzOi8vdHdpdHRlci5jb20vbWlrZXRheWxyL3N0YXR1cy8xMjIyODgwNTMwMVxuICpcbiAqIFRoZXNlIHNlbGVjdGlvbiBydWxlIHNldHMgaGF2ZSB0byBiZSBzZXBhcmF0ZS5cbiAqIEN1c3RvbWl6ZSB0aGUgYmFja2dyb3VuZCBjb2xvciB0byBtYXRjaCB5b3VyIGRlc2lnbi5cbiAqL1xuXG46OnNlbGVjdGlvbiB7XG4gICAgYmFja2dyb3VuZDogI2IzZDRmYztcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbn1cblxuLypcbiAqIEEgYmV0dGVyIGxvb2tpbmcgZGVmYXVsdCBob3Jpem9udGFsIHJ1bGVcbiAqL1xuXG5ociB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjO1xuICAgIG1hcmdpbjogMWVtIDA7XG4gICAgcGFkZGluZzogMDtcbn1cblxuLypcbiAqIFJlbW92ZSB0aGUgZ2FwIGJldHdlZW4gYXVkaW8sIGNhbnZhcywgaWZyYW1lcyxcbiAqIGltYWdlcywgdmlkZW9zIGFuZCB0aGUgYm90dG9tIG9mIHRoZWlyIGNvbnRhaW5lcnM6XG4gKiBodHRwczovL2dpdGh1Yi5jb20vaDVicC9odG1sNS1ib2lsZXJwbGF0ZS9pc3N1ZXMvNDQwXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5pZnJhbWUsXG5pbWcsXG5zdmcsXG52aWRlbyB7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLypcbiAqIFJlbW92ZSBkZWZhdWx0IGZpZWxkc2V0IHN0eWxlcy5cbiAqL1xuXG5maWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG4vKlxuICogQWxsb3cgb25seSB2ZXJ0aWNhbCByZXNpemluZyBvZiB0ZXh0YXJlYXMuXG4gKi9cblxudGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCcm93c2VyIFVwZ3JhZGUgUHJvbXB0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYnJvd3NlcnVwZ3JhZGUge1xuICAgIG1hcmdpbjogMC4yZW0gMDtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjO1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIHBhZGRpbmc6IDAuMmVtIDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBBdXRob3IncyBjdXN0b20gc3R5bGVzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIZWxwZXIgY2xhc3Nlc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEhpZGUgdmlzdWFsbHkgYW5kIGZyb20gc2NyZWVuIHJlYWRlcnM6XG4gKi9cblxuLmhpZGRlbiB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKlxuICogSGlkZSBvbmx5IHZpc3VhbGx5LCBidXQgaGF2ZSBpdCBhdmFpbGFibGUgZm9yIHNjcmVlbiByZWFkZXJzOlxuICogaHR0cDovL3Nub29rLmNhL2FyY2hpdmVzL2h0bWxfYW5kX2Nzcy9oaWRpbmctY29udGVudC1mb3ItYWNjZXNzaWJpbGl0eVxuICovXG5cbi52aXN1YWxseWhpZGRlbiB7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgbWFyZ2luOiAtMXB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcGFkZGluZzogMDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDFweDtcbn1cblxuLypcbiAqIEV4dGVuZHMgdGhlIC52aXN1YWxseWhpZGRlbiBjbGFzcyB0byBhbGxvdyB0aGUgZWxlbWVudFxuICogdG8gYmUgZm9jdXNhYmxlIHdoZW4gbmF2aWdhdGVkIHRvIHZpYSB0aGUga2V5Ym9hcmQ6XG4gKiBodHRwczovL3d3dy5kcnVwYWwub3JnL25vZGUvODk3NjM4XG4gKi9cblxuLnZpc3VhbGx5aGlkZGVuLmZvY3VzYWJsZTphY3RpdmUsXG4udmlzdWFsbHloaWRkZW4uZm9jdXNhYmxlOmZvY3VzIHtcbiAgICBjbGlwOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB3aWR0aDogYXV0bztcbn1cblxuLypcbiAqIEhpZGUgdmlzdWFsbHkgYW5kIGZyb20gc2NyZWVuIHJlYWRlcnMsIGJ1dCBtYWludGFpbiBsYXlvdXRcbiAqL1xuXG4uaW52aXNpYmxlIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi8qXG4gKiBDbGVhcmZpeDogY29udGFpbiBmbG9hdHNcbiAqXG4gKiBGb3IgbW9kZXJuIGJyb3dzZXJzXG4gKiAxLiBUaGUgc3BhY2UgY29udGVudCBpcyBvbmUgd2F5IHRvIGF2b2lkIGFuIE9wZXJhIGJ1ZyB3aGVuIHRoZVxuICogICAgYGNvbnRlbnRlZGl0YWJsZWAgYXR0cmlidXRlIGlzIGluY2x1ZGVkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGRvY3VtZW50LlxuICogICAgT3RoZXJ3aXNlIGl0IGNhdXNlcyBzcGFjZSB0byBhcHBlYXIgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVsZW1lbnRzXG4gKiAgICB0aGF0IHJlY2VpdmUgdGhlIGBjbGVhcmZpeGAgY2xhc3MuXG4gKiAyLiBUaGUgdXNlIG9mIGB0YWJsZWAgcmF0aGVyIHRoYW4gYGJsb2NrYCBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB1c2luZ1xuICogICAgYDpiZWZvcmVgIHRvIGNvbnRhaW4gdGhlIHRvcC1tYXJnaW5zIG9mIGNoaWxkIGVsZW1lbnRzLlxuICovXG5cbi5jbGVhcmZpeDpiZWZvcmUsXG4uY2xlYXJmaXg6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiIFwiOyAvKiAxICovXG4gICAgZGlzcGxheTogdGFibGU7IC8qIDIgKi9cbn1cblxuLmNsZWFyZml4OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEVYQU1QTEUgTWVkaWEgUXVlcmllcyBmb3IgUmVzcG9uc2l2ZSBEZXNpZ24uXG4gICBUaGVzZSBleGFtcGxlcyBvdmVycmlkZSB0aGUgcHJpbWFyeSAoJ21vYmlsZSBmaXJzdCcpIHN0eWxlcy5cbiAgIE1vZGlmeSBhcyBjb250ZW50IHJlcXVpcmVzLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzNWVtKSB7XG4gICAgLyogU3R5bGUgYWRqdXN0bWVudHMgZm9yIHZpZXdwb3J0cyB0aGF0IG1lZXQgdGhlIGNvbmRpdGlvbiAqL1xufVxuXG5AbWVkaWEgcHJpbnQsXG4gICAgICAgKG1pbi1yZXNvbHV0aW9uOiAxLjI1ZHBweCksXG4gICAgICAgKG1pbi1yZXNvbHV0aW9uOiAxMjBkcGkpIHtcbiAgICAvKiBTdHlsZSBhZGp1c3RtZW50cyBmb3IgaGlnaCByZXNvbHV0aW9uIGRldmljZXMgKi9cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFByaW50IHN0eWxlcy5cbiAgIElubGluZWQgdG8gYXZvaWQgdGhlIGFkZGl0aW9uYWwgSFRUUCByZXF1ZXN0OlxuICAgaHR0cDovL3d3dy5waHBpZWQuY29tL2RlbGF5LWxvYWRpbmcteW91ci1wcmludC1jc3MvXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG5AbWVkaWEgcHJpbnQge1xuICAgICosXG4gICAgKjpiZWZvcmUsXG4gICAgKjphZnRlcixcbiAgICAqOmZpcnN0LWxldHRlcixcbiAgICAqOmZpcnN0LWxpbmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgICAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvKiBCbGFjayBwcmludHMgZmFzdGVyOiBodHRwOi8vd3d3LnNhbmJlaWppLmNvbS9hcmNoaXZlcy85NTMgKi9cbiAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGEsXG4gICAgYTp2aXNpdGVkIHtcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuXG4gICAgYVtocmVmXTphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiO1xuICAgIH1cblxuICAgIGFiYnJbdGl0bGVdOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogRG9uJ3Qgc2hvdyBsaW5rcyB0aGF0IGFyZSBmcmFnbWVudCBpZGVudGlmaWVycyxcbiAgICAgKiBvciB1c2UgdGhlIGBqYXZhc2NyaXB0OmAgcHNldWRvIHByb3RvY29sXG4gICAgICovXG5cbiAgICBhW2hyZWZePVwiI1wiXTphZnRlcixcbiAgICBhW2hyZWZePVwiamF2YXNjcmlwdDpcIl06YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgIH1cblxuICAgIHByZSxcbiAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogUHJpbnRpbmcgVGFibGVzOlxuICAgICAqIGh0dHA6Ly9jc3MtZGlzY3Vzcy5pbmN1dGlvLmNvbS93aWtpL1ByaW50aW5nX1RhYmxlc1xuICAgICAqL1xuXG4gICAgdGhlYWQge1xuICAgICAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7XG4gICAgfVxuXG4gICAgdHIsXG4gICAgaW1nIHtcbiAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgIH1cblxuICAgIGltZyB7XG4gICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIHAsXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgICBvcnBoYW5zOiAzO1xuICAgICAgICB3aWRvd3M6IDM7XG4gICAgfVxuXG4gICAgaDIsXG4gICAgaDMge1xuICAgICAgICBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDtcbiAgICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qIFJlbW92ZSB0aGUgdW53YW50ZWQgYm94IGFyb3VuZCBGQUIgYnV0dG9ucyAqL1xuLyogTW9yZSBpbmZvOiBodHRwOi8vZ29vLmdsL0lQd0tpICovXG5hLCAubWRsLWFjY29yZGlvbiwgLm1kbC1idXR0b24sIC5tZGwtY2FyZCwgLm1kbC1jaGVja2JveCwgLm1kbC1kcm9wZG93bi1tZW51LFxuLm1kbC1pY29uLXRvZ2dsZSwgLm1kbC1pdGVtLCAubWRsLXJhZGlvLCAubWRsLXNsaWRlciwgLm1kbC1zd2l0Y2gsIC5tZGwtdGFic19fdGFiIHtcblxuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuQGltcG9ydCBcIi4uL3ZhcmlhYmxlc1wiO1xuQGltcG9ydCBcIi4uL21peGluc1wiO1xuXG5AaWYgJHRhcmdldC1lbGVtZW50cy1kaXJlY3RseSA9PSB0cnVlIHtcbiAgaHRtbCwgYm9keSB7XG4gICAgZm9udC1mYW1pbHk6ICRwZXJmb3JtYW5jZV9mb250O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICB9XG5cbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvKipcbiAgKiBTdHlsZXMgZm9yIEhUTUwgZWxlbWVudHNcbiAgKi9cblxuICBoMSBzbWFsbCwgaDIgc21hbGwsIGgzIHNtYWxsLCBoNCBzbWFsbCwgaDUgc21hbGwsIGg2IHNtYWxsIHtcbiAgICBAaW5jbHVkZSB0eXBvLWRpc3BsYXktMygkY29sb3JDb250cmFzdDogdHJ1ZSk7XG5cbiAgICBmb250LXNpemU6IDAuNmVtO1xuICB9XG5cbiAgaDEge1xuICAgIEBpbmNsdWRlIHR5cG8tZGlzcGxheS0zO1xuXG4gICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICB9XG5cbiAgaDIge1xuICAgIEBpbmNsdWRlIHR5cG8tZGlzcGxheS0yO1xuXG4gICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICB9XG5cbiAgaDMge1xuICAgIEBpbmNsdWRlIHR5cG8tZGlzcGxheS0xO1xuXG4gICAgbWFyZ2luLXRvcDogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICB9XG5cbiAgaDQge1xuICAgIEBpbmNsdWRlIHR5cG8taGVhZGxpbmU7XG5cbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIH1cblxuICBoNSB7XG4gICAgQGluY2x1ZGUgdHlwby10aXRsZTtcblxuICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgfVxuXG4gIGg2IHtcbiAgICBAaW5jbHVkZSB0eXBvLXN1YmhlYWQ7XG5cbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIH1cblxuICBwIHtcbiAgICBAaW5jbHVkZSB0eXBvLWJvZHktMTtcblxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogJHRleHQtbGluay1jb2xvcjtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICB9XG5cbiAgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgdHlwby1ibG9ja3F1b3RlO1xuICB9XG5cbiAgbWFyayB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZmY4MTtcbiAgfVxuXG4gIGR0IHtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICB9XG5cbiAgYWRkcmVzcyB7XG4gICAgQGluY2x1ZGUgdHlwby1jYXB0aW9uO1xuXG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbiAgdWwsIG9sIHtcbiAgICBAaW5jbHVkZSB0eXBvLWJvZHktMTtcbiAgfVxufVxuXG4vKipcbiAqIENsYXNzIE5hbWUgU3R5bGVzXG4gKi9cblxuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTQge1xuICBAaW5jbHVkZSB0eXBvLWRpc3BsYXktNDtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTQtY29sb3ItY29udHJhc3Qge1xuICBAaW5jbHVkZSB0eXBvLWRpc3BsYXktNCgkY29sb3JDb250cmFzdDogdHJ1ZSk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tZGlzcGxheS0zIHtcbiAgQGluY2x1ZGUgdHlwby1kaXNwbGF5LTM7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tZGlzcGxheS0zLWNvbG9yLWNvbnRyYXN0IHtcbiAgQGluY2x1ZGUgdHlwby1kaXNwbGF5LTMoJGNvbG9yQ29udHJhc3Q6IHRydWUpO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWRpc3BsYXktMiB7XG4gIEBpbmNsdWRlIHR5cG8tZGlzcGxheS0yO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWRpc3BsYXktMi1jb2xvci1jb250cmFzdCB7XG4gIEBpbmNsdWRlIHR5cG8tZGlzcGxheS0yKCRjb2xvckNvbnRyYXN0OiB0cnVlKTtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTEge1xuICBAaW5jbHVkZSB0eXBvLWRpc3BsYXktMTtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1kaXNwbGF5LTEtY29sb3ItY29udHJhc3Qge1xuICBAaW5jbHVkZSB0eXBvLWRpc3BsYXktMSgkY29sb3JDb250cmFzdDogdHJ1ZSk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0taGVhZGxpbmUge1xuICBAaW5jbHVkZSB0eXBvLWhlYWRsaW5lO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWhlYWRsaW5lLWNvbG9yLWNvbnRyYXN0IHtcbiAgQGluY2x1ZGUgdHlwby1oZWFkbGluZSgkY29sb3JDb250cmFzdDogdHJ1ZSk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tdGl0bGUge1xuICBAaW5jbHVkZSB0eXBvLXRpdGxlO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLXRpdGxlLWNvbG9yLWNvbnRyYXN0IHtcbiAgQGluY2x1ZGUgdHlwby10aXRsZSgkY29sb3JDb250cmFzdDogdHJ1ZSk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tc3ViaGVhZCB7XG4gIEBpbmNsdWRlIHR5cG8tc3ViaGVhZDtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1zdWJoZWFkLWNvbG9yLWNvbnRyYXN0IHtcbiAgQGluY2x1ZGUgdHlwby1zdWJoZWFkKCRjb2xvckNvbnRyYXN0OiB0cnVlKTtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTIge1xuICBAaW5jbHVkZSB0eXBvLWJvZHktMjtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTItY29sb3ItY29udHJhc3Qge1xuICBAaW5jbHVkZSB0eXBvLWJvZHktMigkY29sb3JDb250cmFzdDogdHJ1ZSk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tYm9keS0xIHtcbiAgQGluY2x1ZGUgdHlwby1ib2R5LTE7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tYm9keS0xLWNvbG9yLWNvbnRyYXN0IHtcbiAgQGluY2x1ZGUgdHlwby1ib2R5LTEoJGNvbG9yQ29udHJhc3Q6IHRydWUpO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWJvZHktMi1mb3JjZS1wcmVmZXJyZWQtZm9udCB7XG4gIEBpbmNsdWRlIHR5cG8tYm9keS0yKCR1c2VQcmVmZXJyZWQ6IHRydWUpO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWJvZHktMi1mb3JjZS1wcmVmZXJyZWQtZm9udC1jb2xvci1jb250cmFzdCB7XG4gIEBpbmNsdWRlIHR5cG8tYm9keS0yKCRjb2xvckNvbnRyYXN0OiB0cnVlLCAkdXNlUHJlZmVycmVkOiB0cnVlKTtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTEtZm9yY2UtcHJlZmVycmVkLWZvbnQge1xuICBAaW5jbHVkZSB0eXBvLWJvZHktMSgkdXNlUHJlZmVycmVkOiB0cnVlKTtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1ib2R5LTEtZm9yY2UtcHJlZmVycmVkLWZvbnQtY29sb3ItY29udHJhc3Qge1xuICBAaW5jbHVkZSB0eXBvLWJvZHktMSgkY29sb3JDb250cmFzdDogdHJ1ZSwgJHVzZVByZWZlcnJlZDogdHJ1ZSk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tY2FwdGlvbiB7XG4gIEBpbmNsdWRlIHR5cG8tY2FwdGlvbjtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1jYXB0aW9uLWZvcmNlLXByZWZlcnJlZC1mb250IHtcbiAgQGluY2x1ZGUgdHlwby1jYXB0aW9uKCR1c2VQcmVmZXJyZWQ6IHRydWUpO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWNhcHRpb24tY29sb3ItY29udHJhc3Qge1xuICBAaW5jbHVkZSB0eXBvLWNhcHRpb24oJGNvbG9yQ29udHJhc3Q6IHRydWUpO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWNhcHRpb24tZm9yY2UtcHJlZmVycmVkLWZvbnQtY29sb3ItY29udHJhc3Qge1xuICBAaW5jbHVkZSB0eXBvLWNhcHRpb24oJGNvbG9yQ29udHJhc3Q6IHRydWUsICR1c2VQcmVmZXJyZWQ6IHRydWUpO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLW1lbnUge1xuICBAaW5jbHVkZSB0eXBvLW1lbnU7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tbWVudS1jb2xvci1jb250cmFzdCB7XG4gIEBpbmNsdWRlIHR5cG8tbWVudSgkY29sb3JDb250cmFzdDogdHJ1ZSk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tYnV0dG9uIHtcbiAgQGluY2x1ZGUgdHlwby1idXR0b247XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tYnV0dG9uLWNvbG9yLWNvbnRyYXN0IHtcbiAgQGluY2x1ZGUgdHlwby1idXR0b24oJGNvbG9yQ29udHJhc3Q6IHRydWUpO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tdGV4dC1yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtY2VudGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtanVzdGlmeSB7XG4gIHRleHQtYWxpZ246IGp1c3RpZnk7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tdGV4dC1ub3dyYXAge1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLXRleHQtbG93ZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS10ZXh0LXVwcGVyY2FzZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tdGV4dC1jYXBpdGFsaXplIHtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tZm9udC10aGluIHtcbiAgZm9udC13ZWlnaHQ6IDIwMCAhaW1wb3J0YW50O1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWZvbnQtbGlnaHQge1xuICBmb250LXdlaWdodDogMzAwICFpbXBvcnRhbnQ7XG59XG5cbi5tZGwtdHlwb2dyYXBoeS0tZm9udC1yZWd1bGFyIHtcbiAgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWZvbnQtbWVkaXVtIHtcbiAgZm9udC13ZWlnaHQ6IDUwMCAhaW1wb3J0YW50O1xufVxuXG4ubWRsLXR5cG9ncmFwaHktLWZvbnQtYm9sZCB7XG4gIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDtcbn1cblxuLm1kbC10eXBvZ3JhcGh5LS1mb250LWJsYWNrIHtcbiAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50O1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuQGltcG9ydCBcIi4uL3ZhcmlhYmxlc1wiO1xuXG5AaWYgJHRyaW0tY29sb3ItY2xhc3NlcyA9PSBmYWxzZSB7XG4gIC8vIFJlZFxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXJlZC01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcmVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcmVkLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXJlZC01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcmVkLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcmVkLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC0yMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC01MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC04MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLUExMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcmVkLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcmVkLUExMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXJlZC1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXJlZC1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXJlZC1BMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcmVkLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1yZWQtQTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtQTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1yZWQtQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXJlZC1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcmVkLUE3MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcmVkLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcmVkLUE3MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1yZWQtQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvLyBQaW5rXG5cbiAgLm1kbC1jb2xvci10ZXh0LS1waW5rIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXBpbmsge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXBpbmstNTAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1waW5rLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXBpbmstMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXBpbmstMTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1waW5rLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1waW5rLTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcGluay0zMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcGluay0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXBpbmstNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXBpbmstNDAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1waW5rLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1waW5rLTUwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcGluay02MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcGluay02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXBpbmstNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXBpbmstNzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1waW5rLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1waW5rLTgwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcGluay05MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcGluay05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXBpbmstQTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcGluay1BMTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcGluay1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstQTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1waW5rLUEyMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1waW5rLUE0MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXBpbmstQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXBpbmstQTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXBpbmstQTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1waW5rLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcGluay1BNzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcGluay1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIFB1cnBsZVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXB1cnBsZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcHVycGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcHVycGxlLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXB1cnBsZS01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcHVycGxlLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcHVycGxlLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS0yMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS01MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS04MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLUExMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcHVycGxlLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcHVycGxlLUExMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXB1cnBsZS1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXB1cnBsZS1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXB1cnBsZS1BMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcHVycGxlLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1wdXJwbGUtQTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtQTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1wdXJwbGUtQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXB1cnBsZS1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tcHVycGxlLUE3MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtcHVycGxlLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tcHVycGxlLUE3MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1wdXJwbGUtQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvLyBEZWVwIFB1cnBsZS5cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLXB1cnBsZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtcHVycGxlLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1wdXJwbGUtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1wdXJwbGUtMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtcHVycGxlLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLXB1cnBsZS0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1wdXJwbGUtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1wdXJwbGUtMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLXB1cnBsZS0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1wdXJwbGUtNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtcHVycGxlLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLXB1cnBsZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1wdXJwbGUtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1wdXJwbGUtNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLXB1cnBsZS02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1wdXJwbGUtNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtcHVycGxlLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtcHVycGxlLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLXB1cnBsZS04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1wdXJwbGUtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1wdXJwbGUtOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLXB1cnBsZS05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLXB1cnBsZS05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS1BMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtQTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLXB1cnBsZS1BNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1wdXJwbGUtQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtcHVycGxlLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gSW5kaWdvXG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28ge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtaW5kaWdvLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1pbmRpZ28ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1pbmRpZ28tNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0taW5kaWdvLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1pbmRpZ28tNTAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1pbmRpZ28tNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTMwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tNTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTUwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTYwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tODAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTgwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLTkwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tQTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1pbmRpZ28tQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1pbmRpZ28tQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0taW5kaWdvLUEyMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtaW5kaWdvLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0taW5kaWdvLUEyMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1pbmRpZ28tQTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWluZGlnby1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWluZGlnby1BNDAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtaW5kaWdvLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1pbmRpZ28tQTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1pbmRpZ28tQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1pbmRpZ28tQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWluZGlnby1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIEJsdWVcblxuICAubWRsLWNvbG9yLXRleHQtLWJsdWUge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYmx1ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtNTAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYmx1ZS0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJsdWUtMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ibHVlLTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ibHVlLTMwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYmx1ZS00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJsdWUtNTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ibHVlLTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ibHVlLTYwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYmx1ZS03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJsdWUtODAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ibHVlLTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ibHVlLTkwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1BMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ibHVlLUExMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ibHVlLUEyMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtQTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtQTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJsdWUtQTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYmx1ZS1BNDAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1BNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ibHVlLUE3MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gTGlnaHQgQmx1ZVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZSB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ibHVlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS01MCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ibHVlLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS0yMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS0yMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUtMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtMzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ibHVlLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS01MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS01MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUtNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtNjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ibHVlLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS04MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS04MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUtOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtOTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLUExMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWJsdWUtQTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtYmx1ZS1BMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtYmx1ZS1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtQTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ibHVlLUE0MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ibHVlLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ibHVlLUE3MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtYmx1ZS1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWJsdWUtQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWJsdWUtQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvLyBDeWFuXG5cbiAgLm1kbC1jb2xvci10ZXh0LS1jeWFuIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWN5YW4ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWN5YW4tNTAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1jeWFuLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWN5YW4tMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWN5YW4tMTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1jeWFuLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1jeWFuLTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tY3lhbi0zMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tY3lhbi0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWN5YW4tNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWN5YW4tNDAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1jeWFuLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1jeWFuLTUwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tY3lhbi02MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tY3lhbi02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWN5YW4tNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWN5YW4tNzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1jeWFuLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1jeWFuLTgwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tY3lhbi05MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tY3lhbi05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWN5YW4tQTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tY3lhbi1BMTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tY3lhbi1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tQTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1jeWFuLUEyMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1jeWFuLUE0MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWN5YW4tQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWN5YW4tQTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWN5YW4tQTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1jeWFuLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tY3lhbi1BNzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtY3lhbi1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIFRlYWxcblxuICAubWRsLWNvbG9yLXRleHQtLXRlYWwge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tdGVhbCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tdGVhbC01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXRlYWwtNTAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tdGVhbC0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tdGVhbC0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXRlYWwtMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXRlYWwtMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS10ZWFsLTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS10ZWFsLTMwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tdGVhbC00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tdGVhbC00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXRlYWwtNTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXRlYWwtNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS10ZWFsLTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS10ZWFsLTYwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tdGVhbC03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tdGVhbC03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXRlYWwtODAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXRlYWwtODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS10ZWFsLTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS10ZWFsLTkwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tdGVhbC1BMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS10ZWFsLUExMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS10ZWFsLUEyMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXRlYWwtQTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtQTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXRlYWwtQTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tdGVhbC1BNDAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtdGVhbC1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tdGVhbC1BNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXRlYWwtQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS10ZWFsLUE3MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS10ZWFsLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gR3JlZW5cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZWVuIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ncmVlbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZWVuLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZWVuLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JlZW4tNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmVlbi0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JlZW4tMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZWVuLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZWVuLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmVlbi0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JlZW4tMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JlZW4tMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ncmVlbi0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmVlbi0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmVlbi00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JlZW4tNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZWVuLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZWVuLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmVlbi01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JlZW4tNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JlZW4tNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ncmVlbi02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmVlbi02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmVlbi03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JlZW4tNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZWVuLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZWVuLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmVlbi04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JlZW4tODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JlZW4tODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZ3JlZW4tOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ncmVlbi05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmVlbi05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmVlbi1BMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JlZW4tQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmVlbi1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JlZW4tQTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmVlbi1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JlZW4tQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmVlbi1BNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JlZW4tQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZWVuLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gTGlnaHQgR3JlZW5cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ncmVlbiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtZ3JlZW4tNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtZ3JlZW4tMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ncmVlbi0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtZ3JlZW4tMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtZ3JlZW4tMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ncmVlbi0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ncmVlbi0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtZ3JlZW4tNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ncmVlbi01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtZ3JlZW4tNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtZ3JlZW4tNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ncmVlbi02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ncmVlbi02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtZ3JlZW4tNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpZ2h0LWdyZWVuLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpZ2h0LWdyZWVuLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ncmVlbi04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGlnaHQtZ3JlZW4tODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGlnaHQtZ3JlZW4tOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saWdodC1ncmVlbi05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saWdodC1ncmVlbi05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi1BMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tQTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saWdodC1ncmVlbi1BNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGlnaHQtZ3JlZW4tQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpZ2h0LWdyZWVuLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gTGltZVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGltZSB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saW1lIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saW1lLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGltZS01MCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saW1lLTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saW1lLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGltZS0yMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGltZS0yMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpbWUtMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpbWUtMzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saW1lLTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saW1lLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGltZS01MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGltZS01MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpbWUtNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpbWUtNjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saW1lLTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saW1lLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGltZS04MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGltZS04MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpbWUtOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpbWUtOTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saW1lLUExMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpbWUtQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWxpbWUtQTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tbGltZS1BMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tbGltZS1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtQTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1saW1lLUE0MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1saW1lLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1saW1lLUE3MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtbGltZS1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWxpbWUtQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWxpbWUtQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAvLyBZZWxsb3dcblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdyB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS15ZWxsb3ctNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXllbGxvdyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXllbGxvdy01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS15ZWxsb3ctNTAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXllbGxvdy01MCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXllbGxvdy01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctMTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy0yMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy0zMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctMzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctNDAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy01MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy02MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctNjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctNzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy04MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy05MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctOTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy1BMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXllbGxvdy1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXllbGxvdy1BMTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS15ZWxsb3ctQTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS15ZWxsb3ctQTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS15ZWxsb3ctQTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXllbGxvdy1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0teWVsbG93LUE0MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0teWVsbG93LUE0MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS15ZWxsb3ctQTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXllbGxvdy1BNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLXllbGxvdy1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLXllbGxvdy1BNzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUteWVsbG93LUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gQW1iZXJcblxuICAubWRsLWNvbG9yLXRleHQtLWFtYmVyIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1hbWJlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWFtYmVyLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWFtYmVyLTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYW1iZXItNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1hbWJlci0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYW1iZXItMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWFtYmVyLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWFtYmVyLTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1hbWJlci0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYW1iZXItMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYW1iZXItMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYW1iZXItMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1hbWJlci0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1hbWJlci0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1hbWJlci00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYW1iZXItNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWFtYmVyLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWFtYmVyLTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1hbWJlci01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYW1iZXItNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYW1iZXItNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYW1iZXItNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1hbWJlci02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1hbWJlci02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1hbWJlci03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYW1iZXItNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWFtYmVyLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWFtYmVyLTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1hbWJlci04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYW1iZXItODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYW1iZXItODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYW1iZXItOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1hbWJlci05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1hbWJlci05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1hbWJlci1BMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYW1iZXItQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUExMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1hbWJlci1BMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYW1iZXItQTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1hbWJlci1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYW1iZXItQTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1hbWJlci1BNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYW1iZXItQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWFtYmVyLUE3MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gT3JhbmdlXG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2Uge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtb3JhbmdlLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1vcmFuZ2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1vcmFuZ2UtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLTUwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1vcmFuZ2UtNTAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1vcmFuZ2UtNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtMzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTMwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTQwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtNTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTUwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtNjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTYwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtODAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTgwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtOTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLTkwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtQTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1vcmFuZ2UtQTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1vcmFuZ2UtQTEwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tb3JhbmdlLUEyMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtb3JhbmdlLUEyMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tb3JhbmdlLUEyMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1vcmFuZ2UtQTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLW9yYW5nZS1BNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLW9yYW5nZS1BNDAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtb3JhbmdlLUE0MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1vcmFuZ2UtQTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1vcmFuZ2UtQTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1vcmFuZ2UtQTcwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLW9yYW5nZS1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIERlZXAgT3JhbmdlXG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZSB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2Uge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZS01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS01MCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtb3JhbmdlLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtb3JhbmdlLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZS0yMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1vcmFuZ2UtMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtb3JhbmdlLTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtMzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1vcmFuZ2UtMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtb3JhbmdlLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZS01MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1vcmFuZ2UtNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLTUwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtb3JhbmdlLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtNjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1vcmFuZ2UtNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtb3JhbmdlLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1kZWVwLW9yYW5nZS03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1kZWVwLW9yYW5nZS04MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1vcmFuZ2UtODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLTgwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWRlZXAtb3JhbmdlLTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWRlZXAtb3JhbmdlLTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZGVlcC1vcmFuZ2UtOTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZGVlcC1vcmFuZ2UtOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtQTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLUExMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtQTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLUEyMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtQTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLUE0MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZGVlcC1vcmFuZ2UtQTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWRlZXAtb3JhbmdlLUE3MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1kZWVwLW9yYW5nZS1BNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIEJyb3duXG5cbiAgLm1kbC1jb2xvci10ZXh0LS1icm93biB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYnJvd24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1icm93bi01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi01MH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1icm93bi01MCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJyb3duLTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYnJvd24tMTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJyb3duLTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1icm93bi0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1icm93bi0yMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYnJvd24tMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJyb3duLTIwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJyb3duLTIwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJyb3duLTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi0zMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYnJvd24tMzAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYnJvd24tMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYnJvd24tNDAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJyb3duLTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1icm93bi00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1icm93bi01MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYnJvd24tNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJyb3duLTUwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJyb3duLTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJyb3duLTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi02MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYnJvd24tNjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYnJvd24tNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYnJvd24tNzAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJyb3duLTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1icm93bi03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1icm93bi04MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYnJvd24tODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJyb3duLTgwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJyb3duLTgwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJyb3duLTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1icm93bi05MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYnJvd24tOTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYnJvd24tOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIEdyZXlcblxuICAubWRsLWNvbG9yLXRleHQtLWdyZXkge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JleSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZ3JleS01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZXktNTAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZ3JleS0xMDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS0xMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JleS0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTEwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZXktMjAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZXktMjAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS0yMDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmV5LTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTMwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ncmV5LTMwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZ3JleS00MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS00MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JleS00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTQwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZXktNTAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZXktNTAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmV5LTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTYwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ncmV5LTYwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tZ3JleS03MDAge1xuICAgIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS03MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tZ3JleS03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTcwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWdyZXktODAwIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWdyZXktODAwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtZ3JleS04MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ncmV5LTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ncmV5LTkwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLS1ncmV5LTkwMCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWdyZXktOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIEJsdWUgR3JleVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5IHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRwYWxldHRlLWJsdWUtZ3JleS01MDB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYmx1ZS1ncmV5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS1ncmV5LTUwMH0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLWJsdWUtZ3JleS01MCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNTB9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci0tYmx1ZS1ncmV5LTUwIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JHBhbGV0dGUtYmx1ZS1ncmV5LTUwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTEwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS0xMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktMTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTIwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS0yMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktMjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTMwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS0zMDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktMzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTQwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS00MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNDAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTUwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS01MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTYwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS02MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNjAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTcwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS03MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktNzAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTgwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS04MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktODAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItdGV4dC0tYmx1ZS1ncmV5LTkwMCB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tZGwtY29sb3ItLWJsdWUtZ3JleS05MDAge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skcGFsZXR0ZS1ibHVlLWdyZXktOTAwfSlcIikgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIEJsYWNrXG5cbiAgLm1kbC1jb2xvci0tYmxhY2sge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItYmxhY2t9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLm1kbC1jb2xvci10ZXh0LS1ibGFjayB7XG4gICAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItYmxhY2t9KVwiKSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gV2hpdGVcblxuICAubWRsLWNvbG9yLS13aGl0ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci13aGl0ZX0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cblxuICAubWRsLWNvbG9yLXRleHQtLXdoaXRlIHtcbiAgICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci13aGl0ZX0pXCIpICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLy8gUHJpbWFyeSBhbmQgYWNjZW50XG5cbi5tZGwtY29sb3ItLXByaW1hcnkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnl9KVwiKSAhaW1wb3J0YW50O1xufVxuXG4ubWRsLWNvbG9yLS1wcmltYXJ5LWNvbnRyYXN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci1wcmltYXJ5LWNvbnRyYXN0fSlcIikgIWltcG9ydGFudDtcbn1cblxuLm1kbC1jb2xvci0tcHJpbWFyeS1kYXJrIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci1wcmltYXJ5LWRhcmt9KVwiKSAhaW1wb3J0YW50O1xufVxuXG4ubWRsLWNvbG9yLS1hY2NlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLWFjY2VudH0pXCIpICFpbXBvcnRhbnQ7XG59XG5cbi5tZGwtY29sb3ItLWFjY2VudC1jb250cmFzdCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItYWNjZW50LWNvbnRyYXN0fSlcIikgIWltcG9ydGFudDtcbn1cblxuLm1kbC1jb2xvci10ZXh0LS1wcmltYXJ5IHtcbiAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItcHJpbWFyeX0pXCIpICFpbXBvcnRhbnQ7XG59XG5cbi5tZGwtY29sb3ItdGV4dC0tcHJpbWFyeS1jb250cmFzdCB7XG4gIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnktY29udHJhc3R9KVwiKSAhaW1wb3J0YW50O1xufVxuXG4ubWRsLWNvbG9yLXRleHQtLXByaW1hcnktZGFyayB7XG4gIGNvbG9yOiB1bnF1b3RlKFwicmdiKCN7JGNvbG9yLXByaW1hcnktZGFya30pXCIpICFpbXBvcnRhbnQ7XG59XG5cbi5tZGwtY29sb3ItdGV4dC0tYWNjZW50IHtcbiAgY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3ItYWNjZW50fSlcIikgIWltcG9ydGFudDtcbn1cblxuLm1kbC1jb2xvci10ZXh0LS1hY2NlbnQtY29udHJhc3Qge1xuICBjb2xvcjogdW5xdW90ZShcInJnYigjeyRjb2xvci1hY2NlbnQtY29udHJhc3R9KVwiKSAhaW1wb3J0YW50O1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuQGltcG9ydCBcIi4uL3ZhcmlhYmxlc1wiO1xuXG4ubWRsLXJpcHBsZSB7XG4gIGJhY2tncm91bmQgICAgICAgOiAkcmlwcGxlLWJnLWNvbG9yO1xuICBib3JkZXItcmFkaXVzICAgIDogNTAlO1xuICBoZWlnaHQgICAgICAgICAgIDogNTBweDtcbiAgbGVmdCAgICAgICAgICAgICA6IDA7XG4gIG9wYWNpdHkgICAgICAgICAgOiAwO1xuICBwb2ludGVyLWV2ZW50cyAgIDogbm9uZTtcbiAgcG9zaXRpb24gICAgICAgICA6IGFic29sdXRlO1xuICB0b3AgICAgICAgICAgICAgIDogMDtcbiAgdHJhbnNmb3JtICAgICAgICA6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgd2lkdGggICAgICAgICAgICA6IDUwcHg7XG4gIG92ZXJmbG93ICAgICAgICAgOiBoaWRkZW47XG5cbiAgJi5pcy1hbmltYXRpbmcge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzICRhbmltYXRpb24tY3VydmUtbGluZWFyLW91dC1zbG93LWluLFxuICAgIHdpZHRoIDAuM3MgJGFuaW1hdGlvbi1jdXJ2ZS1saW5lYXItb3V0LXNsb3ctaW4sXG4gICAgaGVpZ2h0IDAuM3MgJGFuaW1hdGlvbi1jdXJ2ZS1saW5lYXItb3V0LXNsb3ctaW4sXG4gICAgb3BhY2l0eSAwLjZzICRhbmltYXRpb24tY3VydmUtbGluZWFyLW91dC1zbG93LWluO1xuICB9XG5cbiAgJi5pcy12aXNpYmxlIHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcblxuXG4ubWRsLWFuaW1hdGlvbi0tZGVmYXVsdCB7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkYW5pbWF0aW9uLWN1cnZlLWRlZmF1bHQ7XG59XG5cbi5tZGwtYW5pbWF0aW9uLS1mYXN0LW91dC1zbG93LWluIHtcbiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246ICRhbmltYXRpb24tY3VydmUtZmFzdC1vdXQtc2xvdy1pbjtcbn1cblxuLm1kbC1hbmltYXRpb24tLWxpbmVhci1vdXQtc2xvdy1pbiB7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkYW5pbWF0aW9uLWN1cnZlLWxpbmVhci1vdXQtc2xvdy1pbjtcbn1cblxuLm1kbC1hbmltYXRpb24tLWZhc3Qtb3V0LWxpbmVhci1pbiB7XG4gIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LWxpbmVhci1pbjtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcblxuLm1kbC1iYWRnZSB7XG4gIHBvc2l0aW9uIDogcmVsYXRpdmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG1hcmdpbi1yaWdodDogKCRiYWRnZS1zaXplICsgJGJhZGdlLXBhZGRpbmcpO1xuXG4gICY6bm90KFtkYXRhLWJhZGdlXSkge1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICZbZGF0YS1iYWRnZV06YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IGF0dHIoZGF0YS1iYWRnZSk7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLSgkYmFkZ2Utc2l6ZSAvIDIpO1xuICAgIHJpZ2h0OiAtKCRiYWRnZS1zaXplICsgJGJhZGdlLXBhZGRpbmcpO1xuXG4gICAgLm1kbC1idXR0b24gJiB7XG4gICAgICB0b3A6IC0xMHB4O1xuICAgICAgcmlnaHQ6IC01cHg7XG4gICAgfVxuXG4gICAgZm9udC1mYW1pbHk6ICRwcmVmZXJyZWRfZm9udDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGZvbnQtc2l6ZTogJGJhZGdlLWZvbnQtc2l6ZTtcbiAgICB3aWR0aDogJGJhZGdlLXNpemU7XG4gICAgaGVpZ2h0OiAkYmFkZ2Utc2l6ZTtcbiAgICBib3JkZXItcmFkaXVzIDogNTAlO1xuXG4gICAgYmFja2dyb3VuZDogJGJhZGdlLWJhY2tncm91bmQ7XG4gICAgY29sb3I6ICRiYWRnZS1jb2xvcjtcbiAgfVxuXG4gICYubWRsLWJhZGdlLS1uby1iYWNrZ3JvdW5kIHtcbiAgICAmW2RhdGEtYmFkZ2VdOmFmdGVyIHtcbiAgICAgIGNvbG9yOiAkYmFkZ2UtY29sb3ItaW52ZXJzZTtcbiAgICAgIGJhY2tncm91bmQ6ICRiYWRnZS1iYWNrZ3JvdW5kLWludmVyc2U7XG5cbiAgICAgIGJveC1zaGFkb3c6IDAgMCAxcHggZ3JheTtcbiAgICB9XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCIuLi9taXhpbnNcIjtcblxuLy8gVGhlIGJ1dHRvbiBjb21wb25lbnQuIERlZmF1bHRzIHRvIGEgZmxhdCBidXR0b24uXG4ubWRsLWJ1dHRvbiB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6ICRidXR0b24tYm9yZGVyLXJhZGl1cztcbiAgY29sb3I6ICRidXR0b24tc2Vjb25kYXJ5LWNvbG9yO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogJGJ1dHRvbi1oZWlnaHQ7XG4gIG1pbi13aWR0aDogJGJ1dHRvbi1taW4td2lkdGg7XG4gIHBhZGRpbmc6IDAgJGJ1dHRvbi1wYWRkaW5nO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpbmNsdWRlIHR5cG8tYnV0dG9uKCk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpbGwtY2hhbmdlOiBib3gtc2hhZG93LCB0cmFuc2Zvcm07XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4ycyAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LWxpbmVhci1pbixcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAwLjJzICRhbmltYXRpb24tY3VydmUtZGVmYXVsdCxcbiAgICAgICAgICAgICAgY29sb3IgMC4ycyAkYW5pbWF0aW9uLWN1cnZlLWRlZmF1bHQ7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxpbmUtaGVpZ2h0OiAkYnV0dG9uLWhlaWdodDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcblxuICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBib3JkZXI6IDA7XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWhvdmVyLWNvbG9yO1xuICB9XG5cbiAgJjpmb2N1czpub3QoOmFjdGl2ZSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZm9jdXMtY29sb3I7XG4gIH1cblxuICAmOmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1hY3RpdmUtY29sb3I7XG4gIH1cblxuICAmLm1kbC1idXR0b24tLWNvbG9yZWQge1xuICAgIGNvbG9yOiAkYnV0dG9uLXByaW1hcnktY29sb3ItYWx0O1xuXG4gICAgJjpmb2N1czpub3QoOmFjdGl2ZSkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1mb2N1cy1jb2xvci1hbHQ7XG4gICAgfVxuICB9XG59XG5cbmlucHV0Lm1kbC1idXR0b25bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTpub25lO1xufVxuXG4gIC8vIFJhaXNlZCBidXR0b25zXG4gIC5tZGwtYnV0dG9uLS1yYWlzZWQge1xuICAgIGJhY2tncm91bmQ6ICRidXR0b24tcHJpbWFyeS1jb2xvcjtcbiAgICBAaW5jbHVkZSBzaGFkb3ctMmRwKCk7XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBzaGFkb3ctNGRwKCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWFjdGl2ZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmOmZvY3VzOm5vdCg6YWN0aXZlKSB7XG4gICAgICBAaW5jbHVkZSBmb2N1cy1zaGFkb3coKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tYWN0aXZlLWNvbG9yO1xuICAgIH1cblxuICAgICYubWRsLWJ1dHRvbi0tY29sb3JlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYnV0dG9uLXByaW1hcnktY29sb3ItYWx0O1xuICAgICAgY29sb3I6ICRidXR0b24tc2Vjb25kYXJ5LWNvbG9yLWFsdDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24taG92ZXItY29sb3ItYWx0O1xuICAgICAgfVxuXG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tYWN0aXZlLWNvbG9yLWFsdDtcbiAgICAgIH1cblxuICAgICAgJjpmb2N1czpub3QoOmFjdGl2ZSkge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWFjdGl2ZS1jb2xvci1hbHQ7XG4gICAgICB9XG5cbiAgICAgICYgLm1kbC1yaXBwbGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkYnV0dG9uLXJpcHBsZS1jb2xvci1hbHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvLyBGQUJzXG4gIC5tZGwtYnV0dG9uLS1mYWIge1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBmb250LXNpemU6ICRidXR0b24tZmFiLWZvbnQtc2l6ZTtcbiAgICBoZWlnaHQ6ICRidXR0b24tZmFiLXNpemU7XG4gICAgbWFyZ2luOiBhdXRvO1xuICAgIG1pbi13aWR0aDogJGJ1dHRvbi1mYWItc2l6ZTtcbiAgICB3aWR0aDogJGJ1dHRvbi1mYWItc2l6ZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYmFja2dyb3VuZDogJGJ1dHRvbi1wcmltYXJ5LWNvbG9yO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDEuNXB4IDAgcmdiYSgwLDAsMCwwLjEyKSwgMCAxcHggMXB4IDAgcmdiYSgwLDAsMCwwLjI0KTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcblxuICAgICYgLm1hdGVyaWFsLWljb25zIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNTAlO1xuICAgICAgbGVmdDogNTAlO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLSAkYnV0dG9uLWZhYi1mb250LXNpemUgLyAyLCAtICRidXR0b24tZmFiLWZvbnQtc2l6ZSAvIDIpO1xuICAgICAgbGluZS1oZWlnaHQ6ICRidXR0b24tZmFiLWZvbnQtc2l6ZTtcbiAgICAgIHdpZHRoOiAkYnV0dG9uLWZhYi1mb250LXNpemU7XG4gICAgfVxuXG4gICAgJi5tZGwtYnV0dG9uLS1taW5pLWZhYiB7XG4gICAgICBoZWlnaHQ6ICRidXR0b24tZmFiLXNpemUtbWluaTtcbiAgICAgIG1pbi13aWR0aDogJGJ1dHRvbi1mYWItc2l6ZS1taW5pO1xuICAgICAgd2lkdGg6ICRidXR0b24tZmFiLXNpemUtbWluaTtcbiAgICB9XG5cbiAgICAmIC5tZGwtYnV0dG9uX19yaXBwbGUtY29udGFpbmVyIHtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIC8vIEZpeGVzIGNsaXBwaW5nIGJ1ZyBpbiBTYWZhcmkuXG4gICAgICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgd2hpdGUsIGJsYWNrKTtcbiAgICB9XG5cbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAaW5jbHVkZSBzaGFkb3ctNGRwKCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWFjdGl2ZS1jb2xvcjtcbiAgICB9XG5cbiAgICAmOmZvY3VzOm5vdCg6YWN0aXZlKSB7XG4gICAgICBAaW5jbHVkZSBmb2N1cy1zaGFkb3coKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tYWN0aXZlLWNvbG9yO1xuICAgIH1cblxuICAgICYubWRsLWJ1dHRvbi0tY29sb3JlZCB7XG4gICAgICBiYWNrZ3JvdW5kOiAkYnV0dG9uLWZhYi1jb2xvci1hbHQ7XG4gICAgICBjb2xvcjogJGJ1dHRvbi1mYWItdGV4dC1jb2xvci1hbHQ7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWZhYi1ob3Zlci1jb2xvci1hbHQ7XG4gICAgICB9XG5cbiAgICAgICY6Zm9jdXM6bm90KDphY3RpdmUpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1mYWItYWN0aXZlLWNvbG9yLWFsdDtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWZhYi1hY3RpdmUtY29sb3ItYWx0O1xuICAgICAgfVxuXG4gICAgICAmIC5tZGwtcmlwcGxlIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGJ1dHRvbi1mYWItcmlwcGxlLWNvbG9yLWFsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8vIEljb24gYnV0dG9uc1xuICAubWRsLWJ1dHRvbi0taWNvbiB7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGZvbnQtc2l6ZTogJGJ1dHRvbi1mYWItZm9udC1zaXplO1xuICAgIGhlaWdodDogJGJ1dHRvbi1pY29uLXNpemU7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIG1pbi13aWR0aDogJGJ1dHRvbi1pY29uLXNpemU7XG4gICAgd2lkdGg6ICRidXR0b24taWNvbi1zaXplO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuXG4gICAgJiAubWF0ZXJpYWwtaWNvbnMge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiA1MCU7XG4gICAgICBsZWZ0OiA1MCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtICRidXR0b24tZmFiLWZvbnQtc2l6ZSAvIDIsIC0gJGJ1dHRvbi1mYWItZm9udC1zaXplIC8gMik7XG4gICAgICBsaW5lLWhlaWdodDogJGJ1dHRvbi1mYWItZm9udC1zaXplO1xuICAgICAgd2lkdGg6ICRidXR0b24tZmFiLWZvbnQtc2l6ZTtcbiAgICB9XG5cbiAgICAmLm1kbC1idXR0b24tLW1pbmktaWNvbiB7XG4gICAgICBoZWlnaHQ6ICRidXR0b24taWNvbi1zaXplLW1pbmk7XG4gICAgICBtaW4td2lkdGg6ICRidXR0b24taWNvbi1zaXplLW1pbmk7XG4gICAgICB3aWR0aDogJGJ1dHRvbi1pY29uLXNpemUtbWluaTtcblxuICAgICAgJiAubWF0ZXJpYWwtaWNvbnMge1xuICAgICAgICB0b3A6ICgkYnV0dG9uLWljb24tc2l6ZS1taW5pIC0gJGJ1dHRvbi1mYWItZm9udC1zaXplKSAvIDI7XG4gICAgICAgIGxlZnQ6ICgkYnV0dG9uLWljb24tc2l6ZS1taW5pIC0gJGJ1dHRvbi1mYWItZm9udC1zaXplKSAvIDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiAubWRsLWJ1dHRvbl9fcmlwcGxlLWNvbnRhaW5lciB7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAvLyBGaXhlcyBjbGlwcGluZyBidWcgaW4gU2FmYXJpLlxuICAgICAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHdoaXRlLCBibGFjayk7XG4gICAgfVxuICB9XG5cblxuICAvLyBSaXBwbGVzXG4gIC5tZGwtYnV0dG9uX19yaXBwbGUtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbGVmdDogMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDBweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAubWRsLWJ1dHRvbltkaXNhYmxlZF0gJiAubWRsLXJpcHBsZSxcbiAgICAubWRsLWJ1dHRvbi5tZGwtYnV0dG9uLS1kaXNhYmxlZCAmIC5tZGwtcmlwcGxlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4vLyBDb2xvcml6ZWQgYnV0dG9uc1xuXG4ubWRsLWJ1dHRvbi0tcHJpbWFyeS5tZGwtYnV0dG9uLS1wcmltYXJ5IHtcbiAgY29sb3I6ICRidXR0b24tcHJpbWFyeS1jb2xvci1hbHQ7XG4gICYgLm1kbC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQ6ICRidXR0b24tc2Vjb25kYXJ5LWNvbG9yLWFsdDtcbiAgfVxuICAmLm1kbC1idXR0b24tLXJhaXNlZCwgJi5tZGwtYnV0dG9uLS1mYWIge1xuICAgIGNvbG9yOiAkYnV0dG9uLXNlY29uZGFyeS1jb2xvci1hbHQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1wcmltYXJ5LWNvbG9yLWFsdDtcbiAgfVxufVxuXG4ubWRsLWJ1dHRvbi0tYWNjZW50Lm1kbC1idXR0b24tLWFjY2VudCB7XG4gIGNvbG9yOiAkYnV0dG9uLWZhYi1jb2xvci1hbHQ7XG4gICYgLm1kbC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQ6ICRidXR0b24tZmFiLXRleHQtY29sb3ItYWx0O1xuICB9XG4gICYubWRsLWJ1dHRvbi0tcmFpc2VkLCAmLm1kbC1idXR0b24tLWZhYiB7XG4gICAgY29sb3I6ICRidXR0b24tZmFiLXRleHQtY29sb3ItYWx0O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tZmFiLWNvbG9yLWFsdDtcbiAgfVxufVxuXG4vLyBEaXNhYmxlZCBidXR0b25zXG5cbi5tZGwtYnV0dG9uIHtcbiAgLy8gQnVtcCB1cCBzcGVjaWZpY2l0eSBieSB1c2luZyBbZGlzYWJsZWRdIHR3aWNlLlxuICAmW2Rpc2FibGVkXVtkaXNhYmxlZF0sXG4gICYubWRsLWJ1dHRvbi0tZGlzYWJsZWQubWRsLWJ1dHRvbi0tZGlzYWJsZWQge1xuICAgIGNvbG9yOiAkYnV0dG9uLXNlY29uZGFyeS1jb2xvci1kaXNhYmxlZDtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAmLS1mYWIge1xuICAgIC8vIEJ1bXAgdXAgc3BlY2lmaWNpdHkgYnkgdXNpbmcgW2Rpc2FibGVkXSB0d2ljZS5cbiAgICAmW2Rpc2FibGVkXVtkaXNhYmxlZF0sXG4gICAgJi5tZGwtYnV0dG9uLS1kaXNhYmxlZC5tZGwtYnV0dG9uLS1kaXNhYmxlZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLXByaW1hcnktY29sb3ItZGlzYWJsZWQ7XG4gICAgICBjb2xvcjogJGJ1dHRvbi1zZWNvbmRhcnktY29sb3ItZGlzYWJsZWQ7XG4gICAgICBAaW5jbHVkZSBzaGFkb3ctMmRwKCk7XG4gICAgfVxuICB9XG5cbiAgJi0tcmFpc2VkIHtcbiAgICAvLyBCdW1wIHVwIHNwZWNpZmljaXR5IGJ5IHVzaW5nIFtkaXNhYmxlZF0gdHdpY2UuXG4gICAgJltkaXNhYmxlZF1bZGlzYWJsZWRdLFxuICAgICYubWRsLWJ1dHRvbi0tZGlzYWJsZWQubWRsLWJ1dHRvbi0tZGlzYWJsZWQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJ1dHRvbi1wcmltYXJ5LWNvbG9yLWRpc2FibGVkO1xuICAgICAgY29sb3I6ICRidXR0b24tc2Vjb25kYXJ5LWNvbG9yLWRpc2FibGVkO1xuICAgICAgQGluY2x1ZGUgc2hhZG93LTJkcCgpO1xuICAgIH1cbiAgfVxuICAmLS1jb2xvcmVkIHtcbiAgICAvLyBCdW1wIHVwIHNwZWNpZmljaXR5IGJ5IHVzaW5nIFtkaXNhYmxlZF0gdHdpY2UuXG4gICAgJltkaXNhYmxlZF1bZGlzYWJsZWRdLFxuICAgICYubWRsLWJ1dHRvbi0tZGlzYWJsZWQubWRsLWJ1dHRvbi0tZGlzYWJsZWQge1xuICAgICAgY29sb3I6ICRidXR0b24tc2Vjb25kYXJ5LWNvbG9yLWRpc2FibGVkO1xuICAgIH1cbiAgfVxufVxuXG4vLyBBbGlnbiBpY29ucyBpbnNpZGUgYnV0dG9ucyB3aXRoIHRleHRcbi5tZGwtYnV0dG9uIC5tYXRlcmlhbC1pY29ucyB7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5cbi5tZGwtY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZvbnQtc2l6ZTogJGNhcmQtZm9udC1zaXplO1xuICBmb250LXdlaWdodDogNDAwO1xuICBtaW4taGVpZ2h0OiAkY2FyZC1oZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAkY2FyZC13aWR0aDtcbiAgei1pbmRleDogJGNhcmQtei1pbmRleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kOiAkY2FyZC1iYWNrZ3JvdW5kLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbi5tZGwtY2FyZF9fbWVkaWEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC1pbWFnZS1wbGFjZWhvbGRlci1jb2xvcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNTAlIDUwJTtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1vcmlnaW46IHBhZGRpbmctYm94O1xuICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IHNjcm9sbDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLm1kbC1jYXJkX190aXRsZSB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGNvbG9yOiAkY2FyZC10ZXh0LWNvbG9yO1xuICBkaXNwbGF5OiBibG9jaztcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBwYWRkaW5nOiAkY2FyZC12ZXJ0aWNhbC1wYWRkaW5nICRjYXJkLWhvcml6b250YWwtcGFkZGluZztcbiAgcGVyc3BlY3RpdmUtb3JpZ2luOiAkY2FyZC10aXRsZS1wZXJzcGVjdGl2ZS1vcmlnaW4teCAkY2FyZC10aXRsZS1wZXJzcGVjdGl2ZS1vcmlnaW4teTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogJGNhcmQtdGl0bGUtdHJhbnNmb3JtLW9yaWdpbi14ICRjYXJkLXRpdGxlLXRyYW5zZm9ybS1vcmlnaW4teTtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAmLm1kbC1jYXJkLS1ib3JkZXIge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY2FyZC1ib3JkZXItY29sb3I7XG4gIH1cbn1cblxuLm1kbC1jYXJkX190aXRsZS10ZXh0IHtcbiAgYWxpZ24tc2VsZjogZmxleC1lbmQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBkaXNwbGF5OiBibG9jaztcbiAgZGlzcGxheTogZmxleDtcbiAgZm9udC1zaXplOiAkY2FyZC10aXRsZS1mb250LXNpemU7XG4gIGZvbnQtd2VpZ2h0OiAkY2FyZC10aXRsZS10ZXh0LWZvbnQtd2VpZ2h0O1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiAkY2FyZC10aXRsZS10ZXh0LXRyYW5zZm9ybS1vcmlnaW4teCAkY2FyZC10aXRsZS10ZXh0LXRyYW5zZm9ybS1vcmlnaW4teTtcbiAgbWFyZ2luOiAwO1xufVxuXG4ubWRsLWNhcmRfX3N1YnRpdGxlLXRleHQge1xuICBmb250LXNpemU6ICRjYXJkLXN1YnRpdGxlLWZvbnQtc2l6ZTtcbiAgY29sb3I6ICRjYXJkLXN1YnRpdGxlLWNvbG9yO1xuICBtYXJnaW46IDA7XG59XG5cbi5tZGwtY2FyZF9fc3VwcG9ydGluZy10ZXh0IHtcbiAgY29sb3I6ICRjYXJkLXN1cHBvcnRpbmctdGV4dC10ZXh0LWNvbG9yO1xuICBmb250LXNpemU6ICRjYXJkLXN1cHBvcnRpbmctdGV4dC1mb250LXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAkY2FyZC1zdXBwb3J0aW5nLXRleHQtbGluZS1oZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6ICRjYXJkLXZlcnRpY2FsLXBhZGRpbmcgJGNhcmQtaG9yaXpvbnRhbC1wYWRkaW5nO1xuICB3aWR0aDogOTAlO1xufVxuXG4ubWRsLWNhcmRfX2FjdGlvbnMge1xuICBmb250LXNpemU6ICRjYXJkLWFjdGlvbnMtZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbiAgcGFkZGluZzogOHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICYubWRsLWNhcmQtLWJvcmRlciB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjYXJkLWJvcmRlci1jb2xvcjtcbiAgfVxufVxuXG4ubWRsLWNhcmQtLWV4cGFuZCB7XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuXG4ubWRsLWNhcmRfX21lbnUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAxNnB4O1xuICB0b3A6IDE2cHg7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zXCI7XG5cbi5tZGwtY2hlY2tib3gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgei1pbmRleDogMTtcblxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAkY2hlY2tib3gtbGFiZWwtaGVpZ2h0O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG5cbiAgJi5pcy11cGdyYWRlZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAkY2hlY2tib3gtYnV0dG9uLXNpemUgKyAkY2hlY2tib3gtcGFkZGluZztcbiAgfVxufVxuXG4ubWRsLWNoZWNrYm94X19pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiAkY2hlY2tib3gtbGFiZWwtaGVpZ2h0O1xuXG4gIC5tZGwtY2hlY2tib3guaXMtdXBncmFkZWQgJiB7XG4gICAgLy8gSGlkZSBpbnB1dCBlbGVtZW50LCB3aGlsZSBzdGlsbCBtYWtpbmcgaXQgcmVzcG9uZCB0byBmb2N1cy5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4ubWRsLWNoZWNrYm94X19ib3gtb3V0bGluZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAkY2hlY2tib3gtdG9wLW9mZnNldDtcbiAgbGVmdDogMDtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6ICRjaGVja2JveC1idXR0b24tc2l6ZTtcbiAgaGVpZ2h0OiAkY2hlY2tib3gtYnV0dG9uLXNpemU7XG4gIG1hcmdpbjogMDtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgYm9yZGVyOiAycHggc29saWQgJGNoZWNrYm94LW9mZi1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuXG4gIHotaW5kZXg6IDI7XG5cbiAgLm1kbC1jaGVja2JveC5pcy1jaGVja2VkICYge1xuICAgIGJvcmRlcjogMnB4IHNvbGlkICRjaGVja2JveC1jb2xvcjtcbiAgfVxuXG4gIC5tZGwtY2hlY2tib3guaXMtZGlzYWJsZWQgJiB7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGNoZWNrYm94LWRpc2FibGVkLWNvbG9yO1xuICAgIGN1cnNvcjogYXV0bztcbiAgfVxufVxuXG4ubWRsLWNoZWNrYm94X19mb2N1cy1oZWxwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogJGNoZWNrYm94LXRvcC1vZmZzZXQ7XG4gIGxlZnQ6IDA7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAkY2hlY2tib3gtYnV0dG9uLXNpemU7XG4gIGhlaWdodDogJGNoZWNrYm94LWJ1dHRvbi1zaXplO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cbiAgLm1kbC1jaGVja2JveC5pcy1mb2N1c2VkICYge1xuICAgIGJveC1zaGFkb3c6IDAgMCAwcHggKCRjaGVja2JveC1idXR0b24tc2l6ZSAvIDIpIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cblxuICAubWRsLWNoZWNrYm94LmlzLWZvY3VzZWQuaXMtY2hlY2tlZCAmIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMHB4ICgkY2hlY2tib3gtYnV0dG9uLXNpemUgLyAyKSAkY2hlY2tib3gtZm9jdXMtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNoZWNrYm94LWZvY3VzLWNvbG9yO1xuICB9XG59XG5cbi5tZGwtY2hlY2tib3hfX3RpY2stb3V0bGluZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXNrOiB1cmwoXCIjeyRjaGVja2JveC1pbWFnZS1wYXRofS90aWNrLW1hc2suc3ZnP2VtYmVkXCIpO1xuXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBAaW5jbHVkZSBtYXRlcmlhbC1hbmltYXRpb24tZGVmYXVsdCgwLjI4cyk7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQ7XG5cbiAgLm1kbC1jaGVja2JveC5pcy1jaGVja2VkICYge1xuICAgIGJhY2tncm91bmQ6ICRjaGVja2JveC1jb2xvciB1cmwoXCIjeyRjaGVja2JveC1pbWFnZS1wYXRofS90aWNrLnN2Zz9lbWJlZFwiKTtcbiAgfVxuXG4gIC5tZGwtY2hlY2tib3guaXMtY2hlY2tlZC5pcy1kaXNhYmxlZCAmIHtcbiAgICBiYWNrZ3JvdW5kOiAkY2hlY2tib3gtZGlzYWJsZWQtY29sb3IgdXJsKFwiI3skY2hlY2tib3gtaW1hZ2UtcGF0aH0vdGljay5zdmc/ZW1iZWRcIik7XG4gIH1cbn1cblxuLm1kbC1jaGVja2JveF9fbGFiZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAkY2hlY2tib3gtbGFiZWwtZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogJGNoZWNrYm94LWxhYmVsLWhlaWdodDtcbiAgbWFyZ2luOiAwO1xuXG4gIC5tZGwtY2hlY2tib3guaXMtZGlzYWJsZWQgJiB7XG4gICAgY29sb3I6ICRjaGVja2JveC1kaXNhYmxlZC1jb2xvcjtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cbn1cblxuLm1kbC1jaGVja2JveF9fcmlwcGxlLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMjtcbiAgdG9wOiAtKCgkY2hlY2tib3gtcmlwcGxlLXNpemUgLSAkY2hlY2tib3gtbGFiZWwtaGVpZ2h0KSAvIDIpO1xuICBsZWZ0OiAtKCgkY2hlY2tib3gtcmlwcGxlLXNpemUgLSAkY2hlY2tib3gtYnV0dG9uLXNpemUpIC8gMik7XG5cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6ICRjaGVja2JveC1yaXBwbGUtc2l6ZTtcbiAgaGVpZ2h0OiAkY2hlY2tib3gtcmlwcGxlLXNpemU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiAtd2Via2l0LXJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHdoaXRlLCBibGFjayk7XG5cbiAgJiAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogJGNoZWNrYm94LWNvbG9yO1xuICB9XG5cbiAgLm1kbC1jaGVja2JveC5pcy1kaXNhYmxlZCAmIHtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cblxuICAubWRsLWNoZWNrYm94LmlzLWRpc2FibGVkICYgLm1kbC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zXCI7XG5cbi5tZGwtZGF0YS10YWJsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyOiAkZGF0YS10YWJsZS1kaXZpZGVycztcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgZm9udC1zaXplOiAkZGF0YS10YWJsZS1mb250LXNpemU7XG4gIGJhY2tncm91bmQtY29sb3I6IHVucXVvdGUoXCJyZ2IoI3skY29sb3Itd2hpdGV9KVwiKTtcblxuICB0aGVhZCB7XG4gICAgcGFkZGluZy1ib3R0b206IDNweDtcblxuICAgIC5tZGwtZGF0YS10YWJsZV9fc2VsZWN0IHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuICB9XG5cbiAgdGJvZHkge1xuICAgIHRyIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGhlaWdodDogJGRhdGEtdGFibGUtcm93LWhlaWdodDtcbiAgICAgIEBpbmNsdWRlIG1hdGVyaWFsLWFuaW1hdGlvbi1kZWZhdWx0KDAuMjhzKTtcbiAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG5cbiAgICAgICYuaXMtc2VsZWN0ZWQge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGF0YS10YWJsZS1zZWxlY3Rpb24tY29sb3I7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGF0YS10YWJsZS1ob3Zlci1jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0ZCwgdGgge1xuICAgIHBhZGRpbmc6IDAgJGRhdGEtdGFibGUtY29sdW1uLXBhZGRpbmcgMCAkZGF0YS10YWJsZS1jb2x1bW4tcGFkZGluZztcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcblxuICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7XG4gICAgfVxuXG4gICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgcGFkZGluZy1yaWdodDogMjRweDtcbiAgICB9XG4gIH1cblxuICB0ZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgaGVpZ2h0OiAkZGF0YS10YWJsZS1yb3ctaGVpZ2h0O1xuICAgIGJvcmRlci10b3A6ICRkYXRhLXRhYmxlLWRpdmlkZXJzO1xuICAgIGJvcmRlci1ib3R0b206ICRkYXRhLXRhYmxlLWRpdmlkZXJzO1xuICAgIHBhZGRpbmctdG9wOiAkZGF0YS10YWJsZS1jZWxsLXRvcDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgLm1kbC1kYXRhLXRhYmxlX19zZWxlY3Qge1xuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGxlZnQ6IDI0cHg7XG4gICAgfVxuICB9XG5cbiAgdGgge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIEBpbmNsdWRlIHR5cG8tYm9keS0yKCk7XG4gICAgaGVpZ2h0OiAkZGF0YS10YWJsZS1yb3ctaGVpZ2h0O1xuICAgIGZvbnQtc2l6ZTogJGRhdGEtdGFibGUtaGVhZGVyLWZvbnQtc2l6ZTtcbiAgICBjb2xvcjogJGRhdGEtdGFibGUtaGVhZGVyLWNvbG9yO1xuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICAgIC5tZGwtZGF0YS10YWJsZV9fc2VsZWN0IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJvdHRvbTogOHB4O1xuICAgICAgbGVmdDogMjRweDtcbiAgICB9XG4gIH1cbn1cblxuLm1kbC1kYXRhLXRhYmxlX19zZWxlY3Qge1xuICB3aWR0aDogMTZweDtcbn1cblxuLm1kbC1kYXRhLXRhYmxlX19jZWxsLS1ub24tbnVtZXJpYy5tZGwtZGF0YS10YWJsZV9fY2VsbC0tbm9uLW51bWVyaWMge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuQGltcG9ydCBcIi4uL3ZhcmlhYmxlc1wiO1xuQGltcG9ydCBcIi4uL21peGluc1wiO1xuXG4ubWRsLW1lZ2EtZm9vdGVyIHtcbiAgcGFkZGluZzogJGZvb3Rlci1taW4tcGFkZGluZyAkZm9vdGVyLXBhZGRpbmctc2lkZXM7XG5cbiAgY29sb3I6ICRmb290ZXItY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItYmctY29sb3I7XG59XG5cblxuLm1kbC1tZWdhLWZvb3Rlci0tdG9wLXNlY3Rpb246YWZ0ZXIsXG4ubWRsLW1lZ2EtZm9vdGVyLS1taWRkbGUtc2VjdGlvbjphZnRlcixcbi5tZGwtbWVnYS1mb290ZXItLWJvdHRvbS1zZWN0aW9uOmFmdGVyLFxuLm1kbC1tZWdhLWZvb3Rlcl9fdG9wLXNlY3Rpb246YWZ0ZXIsXG4ubWRsLW1lZ2EtZm9vdGVyX19taWRkbGUtc2VjdGlvbjphZnRlcixcbi5tZGwtbWVnYS1mb290ZXJfX2JvdHRvbS1zZWN0aW9uOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjbGVhcjogYm90aDtcbn1cblxuLm1kbC1tZWdhLWZvb3Rlci0tbGVmdC1zZWN0aW9uLFxuLm1kbC1tZWdhLWZvb3Rlcl9fbGVmdC1zZWN0aW9uIHtcbiAgbWFyZ2luLWJvdHRvbTogJGZvb3Rlci1taW4tcGFkZGluZztcbn1cblxuLm1kbC1tZWdhLWZvb3Rlci0tcmlnaHQtc2VjdGlvbixcbi5tZGwtbWVnYS1mb290ZXJfX3JpZ2h0LXNlY3Rpb24ge1xuICBtYXJnaW4tYm90dG9tOiAkZm9vdGVyLW1pbi1wYWRkaW5nO1xufVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1yaWdodC1zZWN0aW9uIGEsXG4ubWRsLW1lZ2EtZm9vdGVyX19yaWdodC1zZWN0aW9uIGEge1xuICBkaXNwbGF5OiBibG9jaztcblxuICBtYXJnaW4tYm90dG9tOiAkZm9vdGVyLW1pbi1wYWRkaW5nO1xuXG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gIC5tZGwtbWVnYS1mb290ZXItLWxlZnQtc2VjdGlvbixcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fbGVmdC1zZWN0aW9uIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxuXG4gIC5tZGwtbWVnYS1mb290ZXItLXJpZ2h0LXNlY3Rpb24sXG4gIC5tZGwtbWVnYS1mb290ZXJfX3JpZ2h0LXNlY3Rpb24ge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxuXG4gIC5tZGwtbWVnYS1mb290ZXItLXJpZ2h0LXNlY3Rpb24gYSxcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fcmlnaHQtc2VjdGlvbiBhIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgICBtYXJnaW4tbGVmdDogJGZvb3Rlci1taW4tcGFkZGluZztcblxuICAgIGxpbmUtaGVpZ2h0OiAkZm9vdGVyLWJ0bi1zaXplO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIH1cbn1cblxuLm1kbC1tZWdhLWZvb3Rlci0tc29jaWFsLWJ0bixcbi5tZGwtbWVnYS1mb290ZXJfX3NvY2lhbC1idG4ge1xuICB3aWR0aDogJGZvb3Rlci1idG4tc2l6ZTtcbiAgaGVpZ2h0OiAkZm9vdGVyLWJ0bi1zaXplO1xuXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWJ1dHRvbi1maWxsLWNvbG9yO1xuXG4gIGJvcmRlcjogbm9uZTtcbn1cblxuLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb24sXG4ubWRsLW1lZ2EtZm9vdGVyX19kcm9wLWRvd24tc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYwcHgpIHtcbiAgLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb24sXG4gIC5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uIHtcbiAgICB3aWR0aDogMzMlO1xuICB9XG5cbiAgLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDEpLFxuICAubWRsLW1lZ2EtZm9vdGVyLS1kcm9wLWRvd24tc2VjdGlvbjpudGgtY2hpbGQoMiksXG4gIC5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCgxKSxcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDIpIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxuXG4gIC5tZGwtbWVnYS1mb290ZXItLWRyb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCgzKSxcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDMpIHtcbiAgICBmbG9hdDogcmlnaHQ7XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgIGNsZWFyOiByaWdodDtcbiAgICB9XG4gIH1cblxuICAubWRsLW1lZ2EtZm9vdGVyLS1kcm9wLWRvd24tc2VjdGlvbjpudGgtY2hpbGQoNCksXG4gIC5tZGwtbWVnYS1mb290ZXJfX2Ryb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCg0KSB7XG4gICAgY2xlYXI6IHJpZ2h0O1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxuXG4gIC5tZGwtbWVnYS1mb290ZXItLW1pZGRsZS1zZWN0aW9uOmFmdGVyLFxuICAubWRsLW1lZ2EtZm9vdGVyX19taWRkbGUtc2VjdGlvbjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG5cbiAgICBkaXNwbGF5OiBibG9jaztcblxuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbiAgLm1kbC1tZWdhLWZvb3Rlci0tYm90dG9tLXNlY3Rpb24sXG4gIC5tZGwtbWVnYS1mb290ZXJfX2JvdHRvbS1zZWN0aW9uIHtcbiAgICBwYWRkaW5nLXRvcDogMDtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb24sXG4gIC5tZGwtbWVnYS1mb290ZXItLWRyb3AtZG93bi1zZWN0aW9uOm50aC1jaGlsZCgzKSxcbiAgLm1kbC1tZWdhLWZvb3Rlci0tZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDQpLFxuICAubWRsLW1lZ2EtZm9vdGVyX19kcm9wLWRvd24tc2VjdGlvbixcbiAgLm1kbC1tZWdhLWZvb3Rlcl9fZHJvcC1kb3duLXNlY3Rpb246bnRoLWNoaWxkKDMpLFxuICAubWRsLW1lZ2EtZm9vdGVyX19kcm9wLWRvd24tc2VjdGlvbjpudGgtY2hpbGQoNCkge1xuICAgIHdpZHRoOiAyNCU7XG5cbiAgICBmbG9hdDogbGVmdDtcbiAgfVxufVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94LFxuLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZy1jaGVja2JveCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogJGZvb3Rlci1oZWFkaW5nLWxpbmUtaGVpZ2h0ICsgKCRmb290ZXItbWluLXBhZGRpbmcgKiAyKTtcblxuICBwYWRkaW5nOiAoJGZvb3Rlci1taW4tcGFkZGluZyAqIDIpO1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi10b3A6IC0kZm9vdGVyLW1pbi1wYWRkaW5nO1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICB6LWluZGV4OiAxO1xuICBvcGFjaXR5OiAwO1xuXG4gICYgKyAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nOmFmdGVyLFxuICAmICsgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZzphZnRlciB7XG4gICAgZm9udC1mYW1pbHk6ICdNYXRlcmlhbCBJY29ucyc7XG4gICAgY29udGVudDogJ1xcRTVDRSdcbiAgfVxufVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQsXG4ubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQge1xuICAvLyBXZWJWaWV3cyBpbiBpT1MgOSBicmVhayB0aGUgXCJ+XCIgb3BlcmF0b3IsIGFuZCBXZWJWaWV3cyBpbiBPUyBYIDEwLjEwXG4gIC8vIGJyZWFrIGNvbnNlY3V0aXZlIFwiK1wiIG9wZXJhdG9ycyBpbiBzb21lIGNhc2VzLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gdXNlXG4gIC8vIGJvdGggaGVyZSB0byBjb3ZlciBhbGwgdGhlIGJhc2VzLlxuICAmIH4gLm1kbC1tZWdhLWZvb3Rlci0tbGluay1saXN0LFxuICAmIH4gLm1kbC1tZWdhLWZvb3Rlcl9fbGluay1saXN0LFxuICAmICsgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZyArIC5tZGwtbWVnYS1mb290ZXItLWxpbmstbGlzdCxcbiAgJiArIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmcgKyAubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmICsgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZzphZnRlcixcbiAgJiArIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmc6YWZ0ZXIge1xuICAgIGZvbnQtZmFtaWx5OiAnTWF0ZXJpYWwgSWNvbnMnO1xuICAgIGNvbnRlbnQ6ICdcXEU1Q0YnXG4gIH1cbn1cblxuLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZyxcbi5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmcge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIHBhZGRpbmctcmlnaHQ6ICRmb290ZXItaGVhZGluZy1saW5lLWhlaWdodCArICRmb290ZXItbWluLXBhZGRpbmc7XG4gIG1hcmdpbi1ib3R0b206ICRmb290ZXItbWluLXBhZGRpbmc7XG5cbiAgYm94LXNpemluZzpib3JkZXItYm94O1xuXG4gIGZvbnQtc2l6ZTogJGZvb3Rlci1oZWFkaW5nLWZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6ICRmb290ZXItaGVhZGluZy1saW5lLWhlaWdodDtcblxuICBmb250LXdlaWdodDogNTAwO1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gIGNvbG9yOiAkZm9vdGVyLWhlYWRpbmctY29sb3I7XG59XG5cbi5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmc6YWZ0ZXIsXG4ubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIHdpZHRoOiAkZm9vdGVyLWhlYWRpbmctbGluZS1oZWlnaHQ7XG4gIGhlaWdodDogJGZvb3Rlci1oZWFkaW5nLWxpbmUtaGVpZ2h0O1xuXG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG59XG5cbi5tZGwtbWVnYS1mb290ZXItLWxpbmstbGlzdCxcbi5tZGwtbWVnYS1mb290ZXJfX2xpbmstbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuXG4gIG1hcmdpbi1ib3R0b206ICRmb290ZXItbWluLXBhZGRpbmcgKiAyO1xuICAmOmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiAnJztcbiAgfVxufVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1saW5rLWxpc3QgbGksXG4ubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3QgbGkge1xuICBAaW5jbHVkZSB0eXBvLWJvZHktMSgpO1xuICBsaW5lLWhlaWdodDogMjBweDtcbn1cblxuLm1kbC1tZWdhLWZvb3Rlci0tbGluay1saXN0IGEsXG4ubWRsLW1lZ2EtZm9vdGVyX19saW5rLWxpc3QgYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gIC5tZGwtbWVnYS1mb290ZXItLWhlYWRpbmctY2hlY2tib3gsXG4gIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3gge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAmICsgLm1kbC1tZWdhLWZvb3Rlci0taGVhZGluZzphZnRlcixcbiAgICAmICsgLm1kbC1tZWdhLWZvb3Rlcl9faGVhZGluZzphZnRlciB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIH1cbiAgfVxuICAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nLWNoZWNrYm94OmNoZWNrZWQsXG4gIC5tZGwtbWVnYS1mb290ZXJfX2hlYWRpbmctY2hlY2tib3g6Y2hlY2tlZCB7XG4gICAgLy8gV2ViVmlld3MgaW4gaU9TIDkgYnJlYWsgdGhlIFwiflwiIG9wZXJhdG9yLCBhbmQgV2ViVmlld3MgaW4gT1MgWCAxMC4xMFxuICAgIC8vIGJyZWFrIGNvbnNlY3V0aXZlIFwiK1wiIG9wZXJhdG9ycyBpbiBzb21lIGNhc2VzLiBUaGVyZWZvcmUsIHdlIG5lZWQgdG8gdXNlXG4gICAgLy8gYm90aCBoZXJlIHRvIGNvdmVyIGFsbCB0aGUgYmFzZXMuXG4gICAgJiB+IC5tZGwtbWVnYS1mb290ZXItLWxpbmstbGlzdCxcbiAgICAmIH4gLm1kbC1tZWdhLWZvb3Rlcl9fbGluay1saXN0LFxuICAgICYgKyAubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nICsgLm1kbC1tZWdhLWZvb3Rlcl9fbGluay1saXN0LFxuICAgICYgKyAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nICsgLm1kbC1tZWdhLWZvb3Rlci0tbGluay1saXN0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICYgKyAubWRsLW1lZ2EtZm9vdGVyLS1oZWFkaW5nOmFmdGVyLFxuICAgICYgKyAubWRsLW1lZ2EtZm9vdGVyX19oZWFkaW5nOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cbiAgfVxufVxuXG4ubWRsLW1lZ2EtZm9vdGVyLS1ib3R0b20tc2VjdGlvbixcbi5tZGwtbWVnYS1mb290ZXJfX2JvdHRvbS1zZWN0aW9uIHtcbiAgcGFkZGluZy10b3A6ICRmb290ZXItbWluLXBhZGRpbmc7XG4gIG1hcmdpbi1ib3R0b206ICRmb290ZXItbWluLXBhZGRpbmc7XG59XG5cbi5tZGwtbG9nbyB7XG4gIG1hcmdpbi1ib3R0b206ICRmb290ZXItbWluLXBhZGRpbmc7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLm1kbC1tZWdhLWZvb3Rlci0tYm90dG9tLXNlY3Rpb24gLm1kbC1tZWdhLWZvb3Rlci0tbGluay1saXN0IGxpLFxuLm1kbC1tZWdhLWZvb3Rlcl9fYm90dG9tLXNlY3Rpb24gLm1kbC1tZWdhLWZvb3Rlcl9fbGluay1saXN0IGxpIHtcbiAgZmxvYXQ6IGxlZnQ7XG5cbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgbWFyZ2luLXJpZ2h0OiAkZm9vdGVyLW1pbi1wYWRkaW5nO1xufVxuXG5cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYwcHgpIHtcbiAgLm1kbC1sb2dvIHtcbiAgICBmbG9hdDogbGVmdDtcblxuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAkZm9vdGVyLW1pbi1wYWRkaW5nO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5cbi5tZGwtbWluaS1mb290ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG5cbiAgcGFkZGluZzogKCRwYWRkaW5nICogMikgJHBhZGRpbmc7XG5cbiAgY29sb3I6ICRmb290ZXItY29sb3I7XG4gIGJhY2tncm91bmQtY29sb3I6ICRmb290ZXItYmctY29sb3I7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAmIC5tZGwtbG9nbyB7XG4gICAgbGluZS1oZWlnaHQ6ICRmb290ZXItYnRuLXNpemU7XG4gIH1cbn1cblxuLm1kbC1taW5pLWZvb3Rlci0tbGluay1saXN0LFxuLm1kbC1taW5pLWZvb3Rlcl9fbGluay1saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuXG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG5cbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuXG4gICYgbGkge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAkcGFkZGluZztcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2MHB4KSB7XG4gICAgICBsaW5lLWhlaWdodDogJGZvb3Rlci1idG4tc2l6ZTtcbiAgICB9XG4gIH1cblxuICAmIGEge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB9XG59XG5cbi5tZGwtbWluaS1mb290ZXItLWxlZnQtc2VjdGlvbixcbi5tZGwtbWluaS1mb290ZXJfX2xlZnQtc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgb3JkZXI6IDA7XG59XG5cbi5tZGwtbWluaS1mb290ZXItLXJpZ2h0LXNlY3Rpb24sXG4ubWRsLW1pbmktZm9vdGVyX19yaWdodC1zZWN0aW9uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBvcmRlcjogMTtcbn1cblxuLm1kbC1taW5pLWZvb3Rlci0tc29jaWFsLWJ0bixcbi5tZGwtbWluaS1mb290ZXJfX3NvY2lhbC1idG4ge1xuICB3aWR0aDogJGZvb3Rlci1idG4tc2l6ZTtcbiAgaGVpZ2h0OiAkZm9vdGVyLWJ0bi1zaXplO1xuXG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZm9vdGVyLWJ1dHRvbi1maWxsLWNvbG9yO1xuXG4gIGJvcmRlcjogbm9uZTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcblxuLm1kbC1pY29uLXRvZ2dsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICB6LWluZGV4OiAxO1xuXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6ICRpY29uLXRvZ2dsZS1zaXplO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi5tZGwtaWNvbi10b2dnbGVfX2lucHV0IHtcbiAgbGluZS1oZWlnaHQ6ICRpY29uLXRvZ2dsZS1zaXplO1xuXG4gIC5tZGwtaWNvbi10b2dnbGUuaXMtdXBncmFkZWQgJiB7XG4gICAgLy8gSGlkZSBpbnB1dCBlbGVtZW50LCB3aGlsZSBzdGlsbCBtYWtpbmcgaXQgcmVzcG9uZCB0byBmb2N1cy5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgfVxufVxuXG4ubWRsLWljb24tdG9nZ2xlX19sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGhlaWdodDogJGljb24tdG9nZ2xlLXNpemU7XG4gIHdpZHRoOiAkaWNvbi10b2dnbGUtc2l6ZTtcbiAgbWluLXdpZHRoOiAkaWNvbi10b2dnbGUtc2l6ZTtcbiAgY29sb3I6ICRpY29uLXRvZ2dsZS1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbWFyZ2luLXJpZ2h0OiAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB3aWxsLWNoYW5nZTogYmFja2dyb3VuZC1jb2xvcjtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzICRhbmltYXRpb24tY3VydmUtZGVmYXVsdCxcbiAgY29sb3IgMC4ycyAkYW5pbWF0aW9uLWN1cnZlLWRlZmF1bHQ7XG5cbiAgJi5tYXRlcmlhbC1pY29ucyB7XG4gICAgbGluZS1oZWlnaHQ6ICRpY29uLXRvZ2dsZS1zaXplO1xuICAgIGZvbnQtc2l6ZTogJGljb24tdG9nZ2xlLWZvbnQtc2l6ZTtcbiAgfVxuXG4gIC5tZGwtaWNvbi10b2dnbGUuaXMtY2hlY2tlZCAmIHtcbiAgICBjb2xvcjogJGljb24tdG9nZ2xlLWNoZWNrZWQtY29sb3I7XG4gIH1cblxuICAubWRsLWljb24tdG9nZ2xlLmlzLWRpc2FibGVkICYge1xuICAgIGNvbG9yOiAkaWNvbi10b2dnbGUtZGlzYWJsZWQtY29sb3I7XG4gICAgY3Vyc29yOiBhdXRvO1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cblxuICAubWRsLWljb24tdG9nZ2xlLmlzLWZvY3VzZWQgJiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGljb24tdG9nZ2xlLWZvY3VzLWNvbG9yO1xuICB9XG5cbiAgLm1kbC1pY29uLXRvZ2dsZS5pcy1mb2N1c2VkLmlzLWNoZWNrZWQgJiB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGljb24tdG9nZ2xlLWNoZWNrZWQtZm9jdXMtY29sb3I7XG4gIH1cbn1cblxuXG4ubWRsLWljb24tdG9nZ2xlX19yaXBwbGUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IC0oKCRpY29uLXRvZ2dsZS1yaXBwbGUtc2l6ZSAtICRpY29uLXRvZ2dsZS1zaXplKSAvIDIpO1xuICBsZWZ0OiAtKCgkaWNvbi10b2dnbGUtcmlwcGxlLXNpemUgLSAkaWNvbi10b2dnbGUtc2l6ZSkgLyAyKTtcblxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogJGljb24tdG9nZ2xlLXJpcHBsZS1zaXplO1xuICBoZWlnaHQ6ICRpY29uLXRvZ2dsZS1yaXBwbGUtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgd2hpdGUsIGJsYWNrKTtcblxuICAmIC5tZGwtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kOiAkaWNvbi10b2dnbGUtY29sb3I7XG4gIH1cblxuICAubWRsLWljb24tdG9nZ2xlLmlzLWRpc2FibGVkICYge1xuICAgIGN1cnNvcjogYXV0bztcbiAgfVxuXG4gIC5tZGwtaWNvbi10b2dnbGUuaXMtZGlzYWJsZWQgJiAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCIuLi9taXhpbnNcIjtcblxuLm1kbC1tZW51X19jb250YWluZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IG5vbmU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogLTE7XG5cbiAgJi5pcy12aXNpYmxlLFxuICAmLmlzLWFuaW1hdGluZyB7XG4gICAgei1pbmRleDogOTk5O1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbn1cblxuLm1kbC1tZW51X19vdXRsaW5lIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJhY2tncm91bmQ6ICRkZWZhdWx0LWRyb3Bkb3duLWJnLWNvbG9yO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgdHJhbnNmb3JtLW9yaWdpbjogMCAwO1xuICBAaW5jbHVkZSBzaGFkb3ctMmRwKCk7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAkbWVudS1leHBhbmQtZHVyYXRpb24gJGFuaW1hdGlvbi1jdXJ2ZS1kZWZhdWx0LFxuICAgICAgb3BhY2l0eSAkbWVudS1mYWRlLWR1cmF0aW9uICRhbmltYXRpb24tY3VydmUtZGVmYXVsdDtcbiAgei1pbmRleDogLTE7XG5cbiAgLm1kbC1tZW51X19jb250YWluZXIuaXMtdmlzaWJsZSAmIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgei1pbmRleDogOTk5O1xuICB9XG5cbiAgJi5tZGwtbWVudS0tYm90dG9tLXJpZ2h0IHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDA7XG4gIH1cblxuICAmLm1kbC1tZW51LS10b3AtbGVmdCB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogMCAxMDAlO1xuICB9XG5cbiAgJi5tZGwtbWVudS0tdG9wLXJpZ2h0IHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlIDEwMCU7XG4gIH1cbn1cblxuLm1kbC1tZW51IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG4gIG1pbi13aWR0aDogMTI0cHg7XG4gIHBhZGRpbmc6IDhweCAwO1xuICBtYXJnaW46IDA7XG4gIG9wYWNpdHk6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIHotaW5kZXg6IC0xO1xuXG4gIC5tZGwtbWVudV9fY29udGFpbmVyLmlzLXZpc2libGUgJiB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB6LWluZGV4OiA5OTk7XG4gIH1cblxuICAmLmlzLWFuaW1hdGluZyB7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkbWVudS1mYWRlLWR1cmF0aW9uICRhbmltYXRpb24tY3VydmUtZGVmYXVsdCxcbiAgICAgICAgY2xpcCAkbWVudS1leHBhbmQtZHVyYXRpb24gJGFuaW1hdGlvbi1jdXJ2ZS1kZWZhdWx0O1xuICB9XG5cbiAgJi5tZGwtbWVudS0tYm90dG9tLXJpZ2h0IHtcbiAgICBsZWZ0OiBhdXRvO1xuICAgIHJpZ2h0OiAwO1xuICB9XG5cbiAgJi5tZGwtbWVudS0tdG9wLWxlZnQge1xuICAgIHRvcDogYXV0bztcbiAgICBib3R0b206IDA7XG4gIH1cblxuICAmLm1kbC1tZW51LS10b3AtcmlnaHQge1xuICAgIHRvcDogYXV0bztcbiAgICBsZWZ0OiBhdXRvO1xuICAgIGJvdHRvbTogMDtcbiAgICByaWdodDogMDtcbiAgfVxuXG4gICYubWRsLW1lbnUtLXVuYWxpZ25lZCB7XG4gICAgdG9wOiBhdXRvO1xuICAgIGxlZnQ6IGF1dG87XG4gIH1cbn1cblxuLm1kbC1tZW51X19pdGVtIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6ICRkZWZhdWx0LWl0ZW0tdGV4dC1jb2xvcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBvdXRsaW5lLWNvbG9yOiAkZGVmYXVsdC1pdGVtLW91dGxpbmUtY29sb3I7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgdHlwby1ib2R5LTEoKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGhlaWdodDogNDhweDtcbiAgbGluZS1oZWlnaHQ6IDQ4cHg7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgJG1lbnUtZmFkZS1kdXJhdGlvbiAkYW5pbWF0aW9uLWN1cnZlLWRlZmF1bHQ7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuXG4gIC5tZGwtbWVudV9fY29udGFpbmVyLmlzLXZpc2libGUgJiB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuXG4gICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgIGJvcmRlcjogMDtcbiAgfVxuXG4gICZbZGlzYWJsZWRdIHtcbiAgICBjb2xvcjogJGRpc2FibGVkLWl0ZW0tdGV4dC1jb2xvcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjdXJzb3I6IGF1dG87XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgICY6Zm9jdXMge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuXG4gICAgJiAubWRsLXJpcHBsZSB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGVmYXVsdC1pdGVtLWhvdmVyLWJnLWNvbG9yO1xuICB9XG5cbiAgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZGVmYXVsdC1pdGVtLWZvY3VzLWJnLWNvbG9yO1xuICB9XG5cbiAgJjphY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRkZWZhdWx0LWl0ZW0tYWN0aXZlLWJnLWNvbG9yO1xuICB9XG59XG5cblxuLm1kbC1tZW51X19pdGVtLS1yaXBwbGUtY29udGFpbmVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMTAwJTtcbiAgbGVmdDogMHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgei1pbmRleDogMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcblxuLm1kbC1wcm9ncmVzcyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogJGJhci1oZWlnaHQ7XG4gIHdpZHRoOiA1MDBweDtcbn1cblxuLm1kbC1wcm9ncmVzcyA+IC5iYXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDAlO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwLjJzICRhbmltYXRpb24tY3VydmUtZGVmYXVsdDtcbn1cblxuLm1kbC1wcm9ncmVzcyA+IC5wcm9ncmVzc2JhciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1tYWluLWNvbG9yO1xuICB6LWluZGV4OiAxO1xuICBsZWZ0OiAwO1xufVxuXG4ubWRsLXByb2dyZXNzID4gLmJ1ZmZlcmJhciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHByb2dyZXNzLXNlY29uZGFyeS1jb2xvciwgJHByb2dyZXNzLXNlY29uZGFyeS1jb2xvciksXG4gICAgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkcHJvZ3Jlc3MtbWFpbi1jb2xvciwgJHByb2dyZXNzLW1haW4tY29sb3IpO1xuICB6LWluZGV4OiAwO1xuICBsZWZ0OiAwO1xufVxuXG4ubWRsLXByb2dyZXNzID4gLmF1eGJhciB7XG4gIHJpZ2h0OiAwO1xufVxuXG4vLyBXZWJraXQgb25seVxuQHN1cHBvcnRzICgtd2Via2l0LWFwcGVhcmFuY2U6bm9uZSkge1xuICAubWRsLXByb2dyZXNzOm5vdCgubWRsLXByb2dyZXNzX19pbmRldGVybWluYXRlKTpub3QoLm1kbC1wcm9ncmVzc19faW5kZXRlcm1pbmF0ZSkgPiAuYXV4YmFyIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICRwcm9ncmVzcy1zZWNvbmRhcnktY29sb3IsICRwcm9ncmVzcy1zZWNvbmRhcnktY29sb3IpLFxuICAgICAgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkcHJvZ3Jlc3MtbWFpbi1jb2xvciwgJHByb2dyZXNzLW1haW4tY29sb3IpO1xuICAgIG1hc2s6IHVybCgnI3skcHJvZ3Jlc3MtaW1hZ2UtcGF0aH0vYnVmZmVyLnN2Zz9lbWJlZCcpO1xuICB9XG59XG5cbi5tZGwtcHJvZ3Jlc3M6bm90KC5tZGwtcHJvZ3Jlc3NfX2luZGV0ZXJtaW5hdGUpID4gLmF1eGJhciB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHByb2dyZXNzLWZhbGxiYWNrLWJ1ZmZlci1jb2xvciwgJHByb2dyZXNzLWZhbGxiYWNrLWJ1ZmZlci1jb2xvciksXG4gICAgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAkcHJvZ3Jlc3MtbWFpbi1jb2xvciwgJHByb2dyZXNzLW1haW4tY29sb3IpO1xufVxuXG4ubWRsLXByb2dyZXNzLm1kbC1wcm9ncmVzc19faW5kZXRlcm1pbmF0ZSA+IC5iYXIxIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByb2dyZXNzLW1haW4tY29sb3I7XG4gIGFuaW1hdGlvbi1uYW1lOiBpbmRldGVybWluYXRlMTtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAycztcbiAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjtcbn1cblxuLm1kbC1wcm9ncmVzcy5tZGwtcHJvZ3Jlc3NfX2luZGV0ZXJtaW5hdGUgPiAuYmFyMyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRwcm9ncmVzcy1tYWluLWNvbG9yO1xuICBhbmltYXRpb24tbmFtZTogaW5kZXRlcm1pbmF0ZTI7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMnM7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7XG59XG5cbkBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZTEge1xuICAwJSB7XG4gICAgbGVmdDogMCU7XG4gICAgd2lkdGg6IDAlO1xuICB9XG4gIDUwJSB7XG4gICAgbGVmdDogMjUlO1xuICAgIHdpZHRoOiA3NSU7XG4gIH1cbiAgNzUlIHtcbiAgICBsZWZ0OiAxMDAlO1xuICAgIHdpZHRoOiAwJTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUyIHtcbiAgMCUge1xuICAgIGxlZnQ6IDAlO1xuICAgIHdpZHRoOiAwJTtcbiAgfVxuICA1MCUge1xuICAgIGxlZnQ6IDAlO1xuICAgIHdpZHRoOiAwJTtcbiAgfVxuICA3NSUge1xuICAgIGxlZnQ6IDAlO1xuICAgIHdpZHRoOiAyNSU7XG4gIH1cbiAgMTAwJSB7XG4gICAgbGVmdDogMTAwJTtcbiAgICB3aWR0aDogMCU7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCIuLi9taXhpbnNcIjtcblxuLy8gTmF2aWdhdGlvbiBjbGFzc2VzLiBPbmx5IHVzZWQgaGVyZSBmb3Igbm93LCBidXQgd2UgbWF5IGF0IHNvbWUgcG9pbnQgbW92ZVxuLy8gdGhpcyB0byBpdHMgb3duIGNvbXBvbmVudC5cbi5tZGwtbmF2aWdhdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogbm93cmFwO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4ubWRsLW5hdmlnYXRpb25fX2xpbmsge1xuICBjb2xvcjogJGxheW91dC10ZXh0LWNvbG9yO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogJGxheW91dC1uYXYtbGluay1mb250LXNpemU7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8gTWFpbiBsYXlvdXQgY2xhc3MuXG4ubWRsLWxheW91dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5cbi8vIFV0aWxpdHkgY2xhc3NlcyBmb3Igc2NyZWVuIHNpemVzLlxuLm1kbC1sYXlvdXQuaXMtc21hbGwtc2NyZWVuIC5tZGwtbGF5b3V0LS1sYXJnZS1zY3JlZW4tb25seSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tZGwtbGF5b3V0Om5vdCguaXMtc21hbGwtc2NyZWVuKSAubWRsLWxheW91dC0tc21hbGwtc2NyZWVuLW9ubHkge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWRsLWxheW91dF9fY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG5cbiAgLy8gT3B0aW9uYWwgdXRpbGl0eSBjbGFzc2VzIGZvciBmb3JtYXR0aW5nIHNwZWNpYWwgYmxvY2tzIGluIHRoaXMgY29tcG9uZW50LlxuICAubWRsLWxheW91dF9fdGl0bGUsXG4gIC5tZGwtbGF5b3V0LXRpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBAaW5jbHVkZSB0eXBvLXRpdGxlKCk7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5cbiAgLm1kbC1sYXlvdXQtc3BhY2VyIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gIH1cblxuXG4gIC8vIERyYXdlci5cbiAgLm1kbC1sYXlvdXRfX2RyYXdlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuXG4gICAgd2lkdGg6ICRsYXlvdXQtZHJhd2VyLXdpZHRoO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgQGluY2x1ZGUgc2hhZG93LTJkcCgpO1xuXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkbGF5b3V0LWRyYXdlci1ib3JkZXItY29sb3I7XG4gICAgYmFja2dyb3VuZDogJGxheW91dC1kcmF3ZXItYmctY29sb3I7XG5cbiAgICAvLyBUcmFuc2Zvcm0gb2Zmc2NyZWVuLlxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtJGxheW91dC1kcmF3ZXItd2lkdGggLSAxMHB4KTtcbiAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG5cbiAgICBAaW5jbHVkZSBtYXRlcmlhbC1hbmltYXRpb24tZGVmYXVsdCgpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcblxuICAgIGNvbG9yOiAkbGF5b3V0LXRleHQtY29sb3I7XG5cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgei1pbmRleDogNTtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAmIH4gLm1kbC1sYXlvdXRfX2NvbnRlbnQubWRsLWxheW91dF9fY29udGVudCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiA+ICoge1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgfVxuXG4gICAgJiA+IC5tZGwtbGF5b3V0X190aXRsZSxcbiAgICAmID4gLm1kbC1sYXlvdXQtdGl0bGUge1xuICAgICAgbGluZS1oZWlnaHQ6ICRsYXlvdXQtZGVza3RvcC1oZWFkZXItaGVpZ2h0O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkbGF5b3V0LWhlYWRlci1kZXNrdG9wLWluZGVudDtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxheW91dC1zY3JlZW4tc2l6ZS10aHJlc2hvbGQpIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRsYXlvdXQtbW9iaWxlLWhlYWRlci1oZWlnaHQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJGxheW91dC1oZWFkZXItbW9iaWxlLWluZGVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmIC5tZGwtbmF2aWdhdGlvbiB7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgICBwYWRkaW5nLXRvcDogMTZweDtcblxuICAgICAgJiAubWRsLW5hdmlnYXRpb25fX2xpbmsge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIHBhZGRpbmc6IDE2cHggJGxheW91dC1oZWFkZXItZGVza3RvcC1pbmRlbnQ7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBjb2xvcjogJGxheW91dC1kcmF3ZXItbmF2aWdhdGlvbi1jb2xvcjtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgICAgIHBhZGRpbmc6IDE2cHggJGxheW91dC1oZWFkZXItbW9iaWxlLWluZGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRsYXlvdXQtbmF2LWNvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgJi0tY3VycmVudCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGF5b3V0LWRyYXdlci1uYXZpZ2F0aW9uLWxpbmstYWN0aXZlLWJhY2tncm91bmQ7XG4gICAgICAgICAgICBjb2xvcjogJGxheW91dC1kcmF3ZXItbmF2aWdhdGlvbi1saW5rLWFjdGl2ZS1jb2xvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRsYXlvdXQtc2NyZWVuLXNpemUtdGhyZXNob2xkICsgMXB4KSB7XG4gICAgICAubWRsLWxheW91dC0tZml4ZWQtZHJhd2VyID4gJiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8vIERyYXdlciBidXR0b24uXG4gIC8vIFRPRE8oc2dvbWVzKTogUmVwbGFjZSB3aXRoIGFuIGljb24gYnV0dG9uIHdoZW4gd2UgaGF2ZSB0aGF0IGNvbXBvbmVudC5cbiAgLm1kbC1sYXlvdXRfX2RyYXdlci1idXR0b24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogJGxheW91dC1kcmF3ZXItYnV0dG9uLWRlc2t0b3Atc2l6ZTtcbiAgICB3aWR0aDogJGxheW91dC1kcmF3ZXItYnV0dG9uLWRlc2t0b3Atc2l6ZTtcbiAgICBib3JkZXI6IDA7XG5cbiAgICBmbGV4LXNocmluazogMDtcblxuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDI2cHg7XG4gICAgbGluZS1oZWlnaHQ6ICRsYXlvdXQtZHJhd2VyLWJ1dHRvbi1kZXNrdG9wLXNpemUgKyAyO1xuICAgIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIG1hcmdpbjogMTBweCAxMnB4O1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGNvbG9yOiAkbGF5b3V0LWhlYWRlci10ZXh0LWNvbG9yO1xuXG4gICAgei1pbmRleDogNDtcblxuICAgIC5tZGwtbGF5b3V0X19oZWFkZXIgJiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBjb2xvcjogJGxheW91dC1oZWFkZXItdGV4dC1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsYXlvdXQtc2NyZWVuLXNpemUtdGhyZXNob2xkKSB7XG4gICAgICAgIG1hcmdpbjogNHB4O1xuICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsYXlvdXQtc2NyZWVuLXNpemUtdGhyZXNob2xkKSB7XG4gICAgICBtYXJnaW46IDRweDtcbiAgICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGxheW91dC1zY3JlZW4tc2l6ZS10aHJlc2hvbGQgKyAxcHgpIHtcbiAgICAgIC5tZGwtbGF5b3V0LS1maXhlZC1kcmF3ZXIgPiAmIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAubWRsLWxheW91dF9faGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWluLWhlaWdodDogJGxheW91dC1kZXNrdG9wLWhlYWRlci1oZWlnaHQ7XG4gICAgbWF4LWhlaWdodDogMTAwMHB4O1xuICAgIHotaW5kZXg6IDM7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGF5b3V0LWhlYWRlci1iZy1jb2xvcjtcbiAgICBjb2xvcjogJGxheW91dC1oZWFkZXItdGV4dC1jb2xvcjtcblxuICAgIEBpbmNsdWRlIHNoYWRvdy0yZHAoKTtcbiAgICBAaW5jbHVkZSBtYXRlcmlhbC1hbmltYXRpb24tZGVmYXVsdCgpO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IG1heC1oZWlnaHQsIGJveC1zaGFkb3c7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgbWluLWhlaWdodDogJGxheW91dC1tb2JpbGUtaGVhZGVyLWhlaWdodDtcbiAgICB9XG5cbiAgICAubWRsLWxheW91dC0tZml4ZWQtZHJhd2VyLmlzLXVwZ3JhZGVkOm5vdCguaXMtc21hbGwtc2NyZWVuKSA+ICYge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRsYXlvdXQtZHJhd2VyLXdpZHRoO1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtICN7JGxheW91dC1kcmF3ZXItd2lkdGh9KTtcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCArIDFweCkge1xuICAgICAgLm1kbC1sYXlvdXQtLWZpeGVkLWRyYXdlciA+ICYge1xuICAgICAgICAubWRsLWxheW91dF9faGVhZGVyLXJvdyB7XG4gICAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJiA+IC5tZGwtbGF5b3V0LWljb24ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgbGVmdDogJGxheW91dC1oZWFkZXItZGVza3RvcC1pbmRlbnQ7XG4gICAgICB0b3A6ICgkbGF5b3V0LWRlc2t0b3AtaGVhZGVyLWhlaWdodCAtICRsYXlvdXQtaGVhZGVyLWljb24tc2l6ZSkgLyAyO1xuICAgICAgaGVpZ2h0OiAkbGF5b3V0LWhlYWRlci1pY29uLXNpemU7XG4gICAgICB3aWR0aDogJGxheW91dC1oZWFkZXItaWNvbi1zaXplO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHotaW5kZXg6IDM7XG4gICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxheW91dC1zY3JlZW4tc2l6ZS10aHJlc2hvbGQpIHtcbiAgICAgICAgbGVmdDogJGxheW91dC1oZWFkZXItbW9iaWxlLWluZGVudDtcbiAgICAgICAgdG9wOiAoJGxheW91dC1tb2JpbGUtaGVhZGVyLWhlaWdodCAtICRsYXlvdXQtaGVhZGVyLWljb24tc2l6ZSkgLyAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5tZGwtbGF5b3V0Lmhhcy1kcmF3ZXIgJiA+IC5tZGwtbGF5b3V0LWljb24ge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAmLmlzLWNvbXBhY3Qge1xuICAgICAgbWF4LWhlaWdodDogJGxheW91dC1kZXNrdG9wLWhlYWRlci1oZWlnaHQ7XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRsYXlvdXQtc2NyZWVuLXNpemUtdGhyZXNob2xkKSB7XG4gICAgICAgIG1heC1oZWlnaHQ6ICRsYXlvdXQtbW9iaWxlLWhlYWRlci1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5pcy1jb21wYWN0Lmhhcy10YWJzIHtcbiAgICAgIGhlaWdodDogJGxheW91dC1kZXNrdG9wLWhlYWRlci1oZWlnaHQgKyAkbGF5b3V0LXRhYi1iYXItaGVpZ2h0O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgICBtaW4taGVpZ2h0OiAkbGF5b3V0LW1vYmlsZS1oZWFkZXItaGVpZ2h0ICsgJGxheW91dC10YWItYmFyLWhlaWdodDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgJiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG5cbiAgICAgIC5tZGwtbGF5b3V0LS1maXhlZC1oZWFkZXIgPiAmIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAgIC5tZGwtbGF5b3V0X19oZWFkZXItLXRyYW5zcGFyZW50Lm1kbC1sYXlvdXRfX2hlYWRlci0tdHJhbnNwYXJlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cblxuICAgIC5tZGwtbGF5b3V0X19oZWFkZXItLXNlYW1lZCB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cblxuICAgIC5tZGwtbGF5b3V0X19oZWFkZXItLXNjcm9sbCB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgIH1cblxuICAgIC5tZGwtbGF5b3V0X19oZWFkZXItLXdhdGVyZmFsbCB7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgJi5pcy1jYXN0aW5nLXNoYWRvdyB7XG4gICAgICAgIEBpbmNsdWRlIHNoYWRvdy0yZHAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAubWRsLWxheW91dF9faGVhZGVyLXJvdyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBoZWlnaHQ6ICRsYXlvdXQtaGVhZGVyLWRlc2t0b3Atcm93LWhlaWdodDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDAgJGxheW91dC1oZWFkZXItZGVza3RvcC1pbmRlbnQgMCAkbGF5b3V0LWhlYWRlci1kZXNrdG9wLWJhc2VsaW5lO1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgICBoZWlnaHQ6ICRsYXlvdXQtaGVhZGVyLW1vYmlsZS1yb3ctaGVpZ2h0O1xuICAgICAgICBwYWRkaW5nOiAwICRsYXlvdXQtaGVhZGVyLW1vYmlsZS1pbmRlbnQgMCAkbGF5b3V0LWhlYWRlci1tb2JpbGUtYmFzZWxpbmU7XG4gICAgICB9XG5cbiAgICAgICYgPiAqIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG5cbiAgICAgIC5tZGwtbGF5b3V0X19oZWFkZXItLXNjcm9sbCAmIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgICYgLm1kbC1uYXZpZ2F0aW9uIHtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBoZWlnaHQ6ICRsYXlvdXQtaGVhZGVyLWRlc2t0b3Atcm93LWhlaWdodDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgICAgIGhlaWdodDogJGxheW91dC1oZWFkZXItbW9iaWxlLXJvdy1oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJiAubWRsLW5hdmlnYXRpb25fX2xpbmsge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6ICRsYXlvdXQtaGVhZGVyLXRleHQtY29sb3I7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkbGF5b3V0LWhlYWRlci1kZXNrdG9wLXJvdy1oZWlnaHQ7XG4gICAgICAgIHBhZGRpbmc6IDAgMjRweDtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkbGF5b3V0LWhlYWRlci1tb2JpbGUtcm93LWhlaWdodDtcbiAgICAgICAgICBwYWRkaW5nOiAwICRsYXlvdXQtaGVhZGVyLW1vYmlsZS1pbmRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH0gICAgfVxuXG4gIC8vIE9iZnVzY2F0b3IuXG4gIC5tZGwtbGF5b3V0X19vYmZ1c2NhdG9yIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDQ7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3I7XG4gICAgQGluY2x1ZGUgbWF0ZXJpYWwtYW5pbWF0aW9uLWRlZmF1bHQoKTtcblxuICAgICYuaXMtdmlzaWJsZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ29udGVudC5cbiAgLm1kbC1sYXlvdXRfX2NvbnRlbnQge1xuICAgIC8vIEZpeCBJRTEwIGJ1Zy5cbiAgICAtbXMtZmxleDogMCAxIGF1dG87XG5cbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgZmxleC1ncm93OiAxO1xuICAgIHotaW5kZXg6IDE7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgLm1kbC1sYXlvdXQtLWZpeGVkLWRyYXdlciA+ICYge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRsYXlvdXQtZHJhd2VyLXdpZHRoO1xuICAgIH1cblxuICAgIC5tZGwtbGF5b3V0X19jb250YWluZXIuaGFzLXNjcm9sbGluZy1oZWFkZXIgJiB7XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgLm1kbC1sYXlvdXQtLWZpeGVkLWRyYXdlciA+ICYge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cblxuICAgICAgLm1kbC1sYXlvdXRfX2NvbnRhaW5lci5oYXMtc2Nyb2xsaW5nLWhlYWRlciAmIHtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRhYnMuXG4gIC5tZGwtbGF5b3V0X190YWItYmFyIHtcbiAgICBoZWlnaHQ6ICRsYXlvdXQtdGFiLWJhci1oZWlnaHQgKiAyO1xuICAgIG1hcmdpbjogMDtcbiAgICB3aWR0aDogY2FsYygxMDAlIC1cbiAgICAgICAgI3soKCRsYXlvdXQtaGVhZGVyLWRlc2t0b3AtYmFzZWxpbmUgLSAkbGF5b3V0LXRhYi1kZXNrdG9wLXBhZGRpbmcpICogMil9KTtcbiAgICBwYWRkaW5nOiAwIDAgMFxuICAgICAgICAoJGxheW91dC1oZWFkZXItZGVza3RvcC1iYXNlbGluZSAtICRsYXlvdXQtdGFiLWRlc2t0b3AtcGFkZGluZyk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbGF5b3V0LWhlYWRlci1iZy1jb2xvcjtcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteDogc2Nyb2xsO1xuXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtXG4gICAgICAgICAgI3soJGxheW91dC1oZWFkZXItbW9iaWxlLWJhc2VsaW5lIC0gJGxheW91dC10YWItbW9iaWxlLXBhZGRpbmcpfSk7XG4gICAgICBwYWRkaW5nOiAwIDAgMFxuICAgICAgICAgICgkbGF5b3V0LWhlYWRlci1tb2JpbGUtYmFzZWxpbmUgLSAkbGF5b3V0LXRhYi1tb2JpbGUtcGFkZGluZyk7XG4gICAgfVxuXG4gICAgLm1kbC1sYXlvdXQtLWZpeGVkLXRhYnMgJiB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC5tZGwtbGF5b3V0X190YWItYmFyLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogJGxheW91dC10YWItYmFyLWhlaWdodDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHotaW5kZXg6IDI7XG4gICAgZmxleC1ncm93OiAwO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAubWRsLWxheW91dF9fY29udGFpbmVyID4gJiB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgIH1cbiAgfVxuXG4gIC5tZGwtbGF5b3V0X190YWItYmFyLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgaGVpZ2h0OiAkbGF5b3V0LXRhYi1iYXItaGVpZ2h0O1xuICAgIHdpZHRoOiAkbGF5b3V0LWhlYWRlci1kZXNrdG9wLWJhc2VsaW5lIC0gJGxheW91dC10YWItZGVza3RvcC1wYWRkaW5nO1xuICAgIHotaW5kZXg6IDQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRsYXlvdXQtaGVhZGVyLWJnLWNvbG9yO1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbGF5b3V0LXNjcmVlbi1zaXplLXRocmVzaG9sZCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIHdpZHRoOiAkbGF5b3V0LWhlYWRlci1tb2JpbGUtYmFzZWxpbmUgLSAkbGF5b3V0LXRhYi1tb2JpbGUtcGFkZGluZztcbiAgICB9XG5cbiAgICAubWRsLWxheW91dC0tZml4ZWQtdGFicyAmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgJiAubWF0ZXJpYWwtaWNvbnMge1xuICAgICAgbGluZS1oZWlnaHQ6ICRsYXlvdXQtdGFiLWJhci1oZWlnaHQ7XG4gICAgfVxuXG4gICAgJi5pcy1hY3RpdmUge1xuICAgICAgY29sb3I6ICRsYXlvdXQtaGVhZGVyLXRleHQtY29sb3I7XG4gICAgfVxuICB9XG5cbiAgLm1kbC1sYXlvdXRfX3RhYi1iYXItbGVmdC1idXR0b24ge1xuICAgIGxlZnQ6IDA7XG4gIH1cblxuICAubWRsLWxheW91dF9fdGFiLWJhci1yaWdodC1idXR0b24ge1xuICAgIHJpZ2h0OiAwO1xuICB9XG5cbiAgLm1kbC1sYXlvdXRfX3RhYiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAwICRsYXlvdXQtdGFiLWRlc2t0b3AtcGFkZGluZyAwICRsYXlvdXQtdGFiLWRlc2t0b3AtcGFkZGluZztcblxuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbGV4LWdyb3c6IDA7XG4gICAgZmxleC1zaHJpbms6IDA7XG5cbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgaGVpZ2h0OiAkbGF5b3V0LXRhYi1iYXItaGVpZ2h0O1xuICAgIGxpbmUtaGVpZ2h0OiAkbGF5b3V0LXRhYi1iYXItaGVpZ2h0O1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAkbGF5b3V0LXRhYi1mb250LXNpemU7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgIGNvbG9yOiAkbGF5b3V0LWhlYWRlci10YWItdGV4dC1jb2xvcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGxheW91dC1zY3JlZW4tc2l6ZS10aHJlc2hvbGQpIHtcbiAgICAgIHBhZGRpbmc6IDAgJGxheW91dC10YWItbW9iaWxlLXBhZGRpbmcgMCAkbGF5b3V0LXRhYi1tb2JpbGUtcGFkZGluZztcbiAgICB9XG5cbiAgICAubWRsLWxheW91dC0tZml4ZWQtdGFicyAmIHtcbiAgICAgIGZsb2F0OiBub25lO1xuICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAubWRsLWxheW91dC5pcy11cGdyYWRlZCAmLmlzLWFjdGl2ZSB7XG4gICAgICBjb2xvcjogJGxheW91dC1oZWFkZXItdGV4dC1jb2xvcjtcbiAgICB9XG5cbiAgICAubWRsLWxheW91dC5pcy11cGdyYWRlZCAmLmlzLWFjdGl2ZTo6YWZ0ZXIge1xuICAgICAgaGVpZ2h0OiAkbGF5b3V0LXRhYi1oaWdobGlnaHQtdGhpY2tuZXNzO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGJhY2tncm91bmQ6ICRsYXlvdXQtaGVhZGVyLXRhYi1oaWdobGlnaHQ7XG4gICAgICBhbmltYXRpb246IGJvcmRlci1leHBhbmQgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuNCwgMSkgMC4wMXMgYWx0ZXJuYXRlIGZvcndhcmRzO1xuICAgICAgdHJhbnNpdGlvbjogYWxsIDFzIGN1YmljLWJlemllcigwLjQsIDAuMCwgMSwgMSk7XG4gICAgfVxuXG4gICAgJiAubWRsLWxheW91dF9fdGFiLXJpcHBsZS1jb250YWluZXIge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB0b3A6IDA7XG4gICAgICB6LWluZGV4OiAxO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgJiAubWRsLXJpcHBsZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRsYXlvdXQtaGVhZGVyLXRleHQtY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm1kbC1sYXlvdXRfX3RhYi1wYW5lbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICAubWRsLWxheW91dC5pcy11cGdyYWRlZCAmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLm1kbC1sYXlvdXQuaXMtdXBncmFkZWQgJi5pcy1hY3RpdmUge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zXCI7XG5cbi5tZGwtcmFkaW8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgZm9udC1zaXplOiAkcmFkaW8tbGFiZWwtZm9udC1zaXplO1xuICBsaW5lLWhlaWdodDogJHJhZGlvLWxhYmVsLWhlaWdodDtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgJi5pcy11cGdyYWRlZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcmFkaW8tYnV0dG9uLXNpemUgKyAkcmFkaW8tcGFkZGluZztcbiAgfVxufVxuXG4ubWRsLXJhZGlvX19idXR0b24ge1xuICBsaW5lLWhlaWdodDogJHJhZGlvLWxhYmVsLWhlaWdodDtcblxuICAubWRsLXJhZGlvLmlzLXVwZ3JhZGVkICYge1xuICAgIC8vIEhpZGUgaW5wdXQgZWxlbWVudCwgd2hpbGUgc3RpbGwgbWFraW5nIGl0IHJlc3BvbmQgdG8gZm9jdXMuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC1tcy1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuLm1kbC1yYWRpb19fb3V0ZXItY2lyY2xlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6ICRyYWRpby10b3Atb2Zmc2V0O1xuICBsZWZ0OiAwO1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogJHJhZGlvLWJ1dHRvbi1zaXplO1xuICBoZWlnaHQ6ICRyYWRpby1idXR0b24tc2l6ZTtcbiAgbWFyZ2luOiAwO1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICBib3JkZXI6IDJweCBzb2xpZCAkcmFkaW8tb2ZmLWNvbG9yO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgei1pbmRleDogMjtcblxuICAubWRsLXJhZGlvLmlzLWNoZWNrZWQgJiB7XG4gICAgYm9yZGVyOiAycHggc29saWQgJHJhZGlvLWNvbG9yO1xuICB9XG5cbiAgLm1kbC1yYWRpby5pcy1kaXNhYmxlZCAmIHtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkcmFkaW8tZGlzYWJsZWQtY29sb3I7XG4gICAgY3Vyc29yOiBhdXRvO1xuICB9XG59XG5cbi5tZGwtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgbWFyZ2luOiAwO1xuICB0b3A6ICRyYWRpby10b3Atb2Zmc2V0ICsgJHJhZGlvLWlubmVyLW1hcmdpbjtcbiAgbGVmdDogJHJhZGlvLWlubmVyLW1hcmdpbjtcblxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogJHJhZGlvLWJ1dHRvbi1zaXplIC0gKCRyYWRpby1pbm5lci1tYXJnaW4gKiAyKTtcbiAgaGVpZ2h0OiAkcmFkaW8tYnV0dG9uLXNpemUgLSAoJHJhZGlvLWlubmVyLW1hcmdpbiAqIDIpO1xuXG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICBAaW5jbHVkZSBtYXRlcmlhbC1hbmltYXRpb24tZGVmYXVsdCgwLjI4cyk7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcbiAgdHJhbnNmb3JtOiBzY2FsZTNkKDAsIDAsIDApO1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZDogJHJhZGlvLWNvbG9yO1xuXG4gIC5tZGwtcmFkaW8uaXMtY2hlY2tlZCAmIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cblxuICAubWRsLXJhZGlvLmlzLWRpc2FibGVkICYge1xuICAgIGJhY2tncm91bmQ6ICRyYWRpby1kaXNhYmxlZC1jb2xvcjtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cblxuICAubWRsLXJhZGlvLmlzLWZvY3VzZWQgJiB7XG4gICAgYm94LXNoYWRvdzogMCAwIDBweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgfVxufVxuXG4ubWRsLXJhZGlvX19sYWJlbCB7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAubWRsLXJhZGlvLmlzLWRpc2FibGVkICYge1xuICAgIGNvbG9yOiAkcmFkaW8tZGlzYWJsZWQtY29sb3I7XG4gICAgY3Vyc29yOiBhdXRvO1xuICB9XG59XG5cbi5tZGwtcmFkaW9fX3JpcHBsZS1jb250YWluZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDI7XG4gIHRvcDogLSgoJHJhZGlvLXJpcHBsZS1zaXplIC0gJHJhZGlvLWxhYmVsLWhlaWdodCkgLyAyKTtcbiAgbGVmdDogLSgoJHJhZGlvLXJpcHBsZS1zaXplIC0gJHJhZGlvLWJ1dHRvbi1zaXplKSAvIDIpO1xuXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAkcmFkaW8tcmlwcGxlLXNpemU7XG4gIGhlaWdodDogJHJhZGlvLXJpcHBsZS1zaXplO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB3aGl0ZSwgYmxhY2spO1xuXG4gICYgLm1kbC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQ6ICRyYWRpby1jb2xvcjtcbiAgfVxuXG4gIC5tZGwtcmFkaW8uaXMtZGlzYWJsZWQgJiB7XG4gICAgY3Vyc29yOiBhdXRvO1xuICB9XG5cbiAgLm1kbC1yYWRpby5pcy1kaXNhYmxlZCAmIC5tZGwtcmlwcGxlIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuQGltcG9ydCBcIi4uL3ZhcmlhYmxlc1wiO1xuXG4vLyBTb21lIENTUyBtYWdpYyB0byB0YXJnZXQgb25seSBJRS5cbl86LW1zLWlucHV0LXBsYWNlaG9sZGVyLCA6cm9vdCAubWRsLXNsaWRlci5tZGwtc2xpZGVyLmlzLXVwZ3JhZGVkIHtcbiAgLW1zLWFwcGVhcmFuY2U6IG5vbmU7XG4gIC8vIFRoZSB0aHVtYiBjYW4ndCBvdmVyZmxvdyB0aGUgdHJhY2sgb3IgdGhlIHJlc3Qgb2YgdGhlIGNvbnRyb2wgaW4gSUUsIHNvIHdlXG4gIC8vIG5lZWQgdG8gbWFrZSBpdCB0YWxsIGVub3VnaCB0byBjb250YWluIHRoZSBsYXJnZXN0IHZlcnNpb24gb2YgdGhlIHRodW1iLlxuICBoZWlnaHQ6IDMycHg7XG4gIG1hcmdpbjogMDtcbn1cblxuLy8gU2xpZGVyIGNvbXBvbmVudCAoc3R5bGVkIGlucHV0W3R5cGU9cmFuZ2VdKS5cbi5tZGwtc2xpZGVyIHtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpO1xuICBtYXJnaW46IDAgMjBweDtcblxuICAmLmlzLXVwZ3JhZGVkIHtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIG91dGxpbmU6IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogJHJhbmdlLWNvbG9yO1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICB6LWluZGV4OiAxO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuXG4gICAgLy8gRGlzYWJsZSBkZWZhdWx0IGZvY3VzIG9uIEZpcmVmb3guXG4gICAgJjo6LW1vei1mb2N1cy1vdXRlciB7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuXG4gICAgLy8gRGlzYWJsZSB0b29sdGlwIG9uIElFLlxuICAgICY6Oi1tcy10b29sdGlwIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBUcmFja3MgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAmOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmOjotbW96LXJhbmdlLXRyYWNrIHtcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgIH1cblxuICAgICY6Oi1tcy10cmFjayB7XG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICB9XG5cbiAgICAmOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgLy8gTWFyZ2luIG9uIC1tcy10cmFjayBkb2Vzbid0IHdvcmsgcmlnaHQsIHNvIHdlIHVzZSBncmFkaWVudHMgb24gdGhlXG4gICAgICAvLyBmaWxscy5cbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCxcbiAgICAgIHRyYW5zcGFyZW50LFxuICAgICAgdHJhbnNwYXJlbnQgMTZweCxcbiAgICAgICRyYW5nZS1jb2xvciAxNnB4LFxuICAgICAgJHJhbmdlLWNvbG9yIDApO1xuICAgIH1cblxuICAgICY6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAvLyBNYXJnaW4gb24gLW1zLXRyYWNrIGRvZXNuJ3Qgd29yayByaWdodCwgc28gd2UgdXNlIGdyYWRpZW50cyBvbiB0aGVcbiAgICAgIC8vIGZpbGxzLlxuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsXG4gICAgICB0cmFuc3BhcmVudCxcbiAgICAgIHRyYW5zcGFyZW50IDE2cHgsXG4gICAgICAkcmFuZ2UtYmctY29sb3IgMTZweCxcbiAgICAgICRyYW5nZS1iZy1jb2xvciAwKTtcbiAgICB9XG5cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRodW1icyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICY6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQ6ICRyYW5nZS1jb2xvcjtcbiAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE4cyAkYW5pbWF0aW9uLWN1cnZlLWRlZmF1bHQsXG4gICAgICBib3JkZXIgMC4xOHMgJGFuaW1hdGlvbi1jdXJ2ZS1kZWZhdWx0LFxuICAgICAgYm94LXNoYWRvdyAwLjE4cyAkYW5pbWF0aW9uLWN1cnZlLWRlZmF1bHQsXG4gICAgICBiYWNrZ3JvdW5kIDAuMjhzICRhbmltYXRpb24tY3VydmUtZGVmYXVsdDtcbiAgICB9XG5cbiAgICAmOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIHdpZHRoOiAxMnB4O1xuICAgICAgaGVpZ2h0OiAxMnB4O1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtY29sb3I7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAvLyAtbW96LXJhbmdlLXRodW1iIGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgdHJhbnNpdGlvbnMuXG4gICAgfVxuXG4gICAgJjpmb2N1czpub3QoOmFjdGl2ZSk6Oi13ZWJraXQtc2xpZGVyLXRodW1iIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggJHJhbmdlLWZhZGVkLWNvbG9yO1xuICAgIH1cblxuICAgICY6Zm9jdXM6bm90KDphY3RpdmUpOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDEwcHggJHJhbmdlLWZhZGVkLWNvbG9yO1xuICAgIH1cblxuICAgICY6YWN0aXZlOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgICAgYmFja2dyb3VuZDogJHJhbmdlLWNvbG9yO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpO1xuICAgIH1cblxuICAgICY6YWN0aXZlOjotbW96LXJhbmdlLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtY29sb3I7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNSk7XG4gICAgfVxuXG4gICAgJjo6LW1zLXRodW1iIHtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgYmFja2dyb3VuZDogJHJhbmdlLWNvbG9yO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjM3NSk7XG4gICAgICAvLyAtbXMtdGh1bWIgZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCB0cmFuc2l0aW9ucywgYnV0IGxlYXZpbmcgdGhpcyBoZXJlXG4gICAgICAvLyBpbiBjYXNlIHN1cHBvcnQgZXZlciBnZXRzIGFkZGVkLlxuICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMThzICRhbmltYXRpb24tY3VydmUtZGVmYXVsdCxcbiAgICAgIGJhY2tncm91bmQgMC4yOHMgJGFuaW1hdGlvbi1jdXJ2ZS1kZWZhdWx0O1xuICAgIH1cblxuICAgICY6Zm9jdXM6bm90KDphY3RpdmUpOjotbXMtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBjbG9zZXN0LXNpZGUsXG4gICAgICAkcmFuZ2UtY29sb3IgMCUsXG4gICAgICAkcmFuZ2UtY29sb3IgMzcuNSUsXG4gICAgICAkcmFuZ2UtZmFkZWQtY29sb3IgMzcuNSUsXG4gICAgICAkcmFuZ2UtZmFkZWQtY29sb3IgMTAwJSk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cblxuICAgICY6YWN0aXZlOjotbXMtdGh1bWIge1xuICAgICAgYmFja2dyb3VuZDogJHJhbmdlLWNvbG9yO1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjU2MjUpO1xuICAgIH1cblxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogMC12YWx1ZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgICYuaXMtbG93ZXN0LXZhbHVlOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkcmFuZ2UtYmctY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmLmlzLWxvd2VzdC12YWx1ZTo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkcmFuZ2UtYmctY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmLmlzLWxvd2VzdC12YWx1ZSArXG4gICAgICAgIC5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLWZsZXggPiAubWRsLXNsaWRlcl9fYmFja2dyb3VuZC11cHBlciB7XG4gICAgICBsZWZ0OiA2cHg7XG4gICAgfVxuXG4gICAgJi5pcy1sb3dlc3QtdmFsdWU6Zm9jdXM6bm90KDphY3RpdmUpOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAxMHB4ICRyYW5nZS1iZy1mb2N1cy1jb2xvcjtcbiAgICAgIGJhY2tncm91bmQ6ICRyYW5nZS1iZy1mb2N1cy1jb2xvcjtcbiAgICB9XG5cbiAgICAmLmlzLWxvd2VzdC12YWx1ZTpmb2N1czpub3QoOmFjdGl2ZSk6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMTBweCAkcmFuZ2UtYmctZm9jdXMtY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtYmctZm9jdXMtY29sb3I7XG4gICAgfVxuXG4gICAgJi5pcy1sb3dlc3QtdmFsdWU6YWN0aXZlOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICBib3JkZXI6IDEuNnB4IHNvbGlkICRyYW5nZS1iZy1jb2xvcjtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgICB9XG5cbiAgICAmLmlzLWxvd2VzdC12YWx1ZTphY3RpdmUgK1xuICAgICAgICAubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1mbGV4ID4gLm1kbC1zbGlkZXJfX2JhY2tncm91bmQtdXBwZXIge1xuICAgICAgbGVmdDogOXB4O1xuICAgIH1cblxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmFjdGl2ZTo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICBib3JkZXI6IDEuNXB4IHNvbGlkICRyYW5nZS1iZy1jb2xvcjtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgICB9XG5cbiAgICAmLmlzLWxvd2VzdC12YWx1ZTo6LW1zLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLFxuICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICB0cmFuc3BhcmVudCA2Ni42NyUsXG4gICAgICAkcmFuZ2UtYmctY29sb3IgNjYuNjclLFxuICAgICAgJHJhbmdlLWJnLWNvbG9yIDEwMCUpO1xuICAgIH1cblxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmZvY3VzOm5vdCg6YWN0aXZlKTo6LW1zLXRodW1iIHtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLFxuICAgICAgJHJhbmdlLWJnLWZvY3VzLWNvbG9yIDAlLFxuICAgICAgJHJhbmdlLWJnLWZvY3VzLWNvbG9yIDI1JSxcbiAgICAgICRyYW5nZS1iZy1jb2xvciAyNSUsXG4gICAgICAkcmFuZ2UtYmctY29sb3IgMzcuNSUsXG4gICAgICAkcmFuZ2UtYmctZm9jdXMtY29sb3IgMzcuNSUsXG4gICAgICAkcmFuZ2UtYmctZm9jdXMtY29sb3IgMTAwJSk7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cblxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmFjdGl2ZTo6LW1zLXRodW1iIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC41NjI1KTtcbiAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUgY2xvc2VzdC1zaWRlLFxuICAgICAgdHJhbnNwYXJlbnQgMCUsXG4gICAgICB0cmFuc3BhcmVudCA3Ny43OCUsXG4gICAgICAkcmFuZ2UtYmctY29sb3IgNzcuNzglLFxuICAgICAgJHJhbmdlLWJnLWNvbG9yIDEwMCUpO1xuICAgIH1cblxuICAgICYuaXMtbG93ZXN0LXZhbHVlOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICB9XG5cbiAgICAmLmlzLWxvd2VzdC12YWx1ZTo6LW1zLWZpbGwtdXBwZXIge1xuICAgICAgbWFyZ2luLWxlZnQ6IDZweDtcbiAgICB9XG5cbiAgICAmLmlzLWxvd2VzdC12YWx1ZTphY3RpdmU6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA5cHg7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiogRGlzYWJsZWQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgICY6ZGlzYWJsZWQ6Zm9jdXM6Oi13ZWJraXQtc2xpZGVyLXRodW1iLFxuICAgICY6ZGlzYWJsZWQ6YWN0aXZlOjotd2Via2l0LXNsaWRlci10aHVtYixcbiAgICAmOmRpc2FibGVkOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNjY3KTtcbiAgICAgIGJhY2tncm91bmQ6ICRyYW5nZS1iZy1jb2xvcjtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkOmZvY3VzOjotbW96LXJhbmdlLXRodW1iLFxuICAgICY6ZGlzYWJsZWQ6YWN0aXZlOjotbW96LXJhbmdlLXRodW1iLFxuICAgICY6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdGh1bWIge1xuICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjY2Nyk7XG4gICAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtYmctY29sb3I7XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZCArXG4gICAgICAgIC5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLWZsZXggPiAubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1sb3dlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmFuZ2UtYmctY29sb3I7XG4gICAgICBsZWZ0OiAtNnB4O1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQgK1xuICAgICAgICAubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1mbGV4ID4gLm1kbC1zbGlkZXJfX2JhY2tncm91bmQtdXBwZXIge1xuICAgICAgbGVmdDogNnB4O1xuICAgIH1cblxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmZvY3VzOjotd2Via2l0LXNsaWRlci10aHVtYixcbiAgICAmLmlzLWxvd2VzdC12YWx1ZTpkaXNhYmxlZDphY3RpdmU6Oi13ZWJraXQtc2xpZGVyLXRodW1iLFxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOjotd2Via2l0LXNsaWRlci10aHVtYiB7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCAkcmFuZ2UtYmctY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC42NjcpO1xuICAgIH1cblxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmZvY3VzOjotbW96LXJhbmdlLXRodW1iLFxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmFjdGl2ZTo6LW1vei1yYW5nZS10aHVtYixcbiAgICAmLmlzLWxvd2VzdC12YWx1ZTpkaXNhYmxlZDo6LW1vei1yYW5nZS10aHVtYiB7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCAkcmFuZ2UtYmctY29sb3I7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC42NjcpO1xuICAgIH1cblxuICAgICYuaXMtbG93ZXN0LXZhbHVlOmRpc2FibGVkOmFjdGl2ZSArXG4gICAgICAgIC5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLWZsZXggPiAubWRsLXNsaWRlcl9fYmFja2dyb3VuZC11cHBlciB7XG4gICAgICBsZWZ0OiA2cHg7XG4gICAgfVxuXG4gICAgJjpkaXNhYmxlZDpmb2N1czo6LW1zLXRodW1iLFxuICAgICY6ZGlzYWJsZWQ6YWN0aXZlOjotbXMtdGh1bWIsXG4gICAgJjpkaXNhYmxlZDo6LW1zLXRodW1iIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4yNSk7XG4gICAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtYmctY29sb3I7XG4gICAgfVxuXG4gICAgJi5pcy1sb3dlc3QtdmFsdWU6ZGlzYWJsZWQ6Zm9jdXM6Oi1tcy10aHVtYixcbiAgICAmLmlzLWxvd2VzdC12YWx1ZTpkaXNhYmxlZDphY3RpdmU6Oi1tcy10aHVtYixcbiAgICAmLmlzLWxvd2VzdC12YWx1ZTpkaXNhYmxlZDo6LW1zLXRodW1iIHtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC4yNSk7XG4gICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGNsb3Nlc3Qtc2lkZSxcbiAgICAgIHRyYW5zcGFyZW50IDAlLFxuICAgICAgdHJhbnNwYXJlbnQgNTAlLFxuICAgICAgJHJhbmdlLWJnLWNvbG9yIDUwJSxcbiAgICAgICRyYW5nZS1iZy1jb2xvciAxMDAlKTtcbiAgICB9XG5cbiAgICAmOmRpc2FibGVkOjotbXMtZmlsbC1sb3dlciB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCxcbiAgICAgIHRyYW5zcGFyZW50LFxuICAgICAgdHJhbnNwYXJlbnQgMjVweCxcbiAgICAgICRyYW5nZS1iZy1jb2xvciAyNXB4LFxuICAgICAgJHJhbmdlLWJnLWNvbG9yIDApO1xuICAgIH1cblxuICAgICY6ZGlzYWJsZWQ6Oi1tcy1maWxsLXVwcGVyIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA2cHg7XG4gICAgfVxuXG4gICAgJi5pcy1sb3dlc3QtdmFsdWU6ZGlzYWJsZWQ6YWN0aXZlOjotbXMtZmlsbC11cHBlciB7XG4gICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIH1cbiAgfVxufVxuXG4gIC8vIFNpbmNlIHdlIG5lZWQgdG8gc3BlY2lmeSBhIGhlaWdodCBvZiAzMnB4IGluIElFLCB3ZSBhZGQgYSBjbGFzcyBoZXJlIGZvciBhXG4gIC8vIGNvbnRhaW5lciB0aGF0IGJyaW5ncyBpdCBiYWNrIHRvIGEgcmVhc29uYWJsZSBoZWlnaHQuXG4gIC5tZGwtc2xpZGVyX19pZS1jb250YWluZXIge1xuICAgIGhlaWdodDogMThweDtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiBub25lO1xuICAgIHBhZGRpbmc6IG5vbmU7XG4gIH1cblxuICAvLyBXZSB1c2UgYSBzZXQgb2YgZGl2cyBiZWhpbmQgdGhlIHRyYWNrIHRvIHN0eWxlIGl0IGluIGFsbCBub24tSUUgYnJvd3NlcnMuXG4gIC8vIFRoaXMgb25lIGNvbnRhaW5zIGJvdGggdGhlIGJhY2tncm91bmQgYW5kIHRoZSBzbGlkZXIuXG4gIC5tZGwtc2xpZGVyX19jb250YWluZXIge1xuICAgIGhlaWdodDogMThweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIH1cblxuICAvLyBUaGlzIG9uZSBzZXRzIHVwIGEgZmxleCBib3ggZm9yIHRoZSBzdHlsZWQgdXBwZXIgYW5kIGxvd2VyIHBvcnRpb25zIG9mIHRoZVxuICAvLyB0aGUgc2xpZGVyIHRyYWNrLlxuICAubWRsLXNsaWRlcl9fYmFja2dyb3VuZC1mbGV4IHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDUycHgpO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwIDI2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlcjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xcHgpO1xuICB9XG5cbiAgLy8gVGhpcyBvbmUgc3R5bGVzIHRoZSBsb3dlciBwYXJ0IG9mIHRoZSBzbGlkZXIgdHJhY2suXG4gIC5tZGwtc2xpZGVyX19iYWNrZ3JvdW5kLWxvd2VyIHtcbiAgICBiYWNrZ3JvdW5kOiAkcmFuZ2UtY29sb3I7XG4gICAgZmxleDogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAvLyBUaGlzIG9uZSBzdHlsZXMgdGhlIHVwcGVyIHBhcnQgb2YgdGhlIHNsaWRlciB0cmFjay5cbiAgLm1kbC1zbGlkZXJfX2JhY2tncm91bmQtdXBwZXIge1xuICAgIGJhY2tncm91bmQ6ICRyYW5nZS1iZy1jb2xvcjtcbiAgICBmbGV4OiAwO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXI6IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuMThzICRhbmltYXRpb24tY3VydmUtZGVmYXVsdFxuICB9XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5cblxuLm1kbC1zcGlubmVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAkc3Bpbm5lci1zaXplO1xuICBoZWlnaHQ6ICRzcGlubmVyLXNpemU7XG5cbiAgJjpub3QoLmlzLXVwZ3JhZGVkKS5pcy1hY3RpdmU6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiTG9hZGluZy4uLlwiO1xuICB9XG5cbiAgJi5pcy11cGdyYWRlZC5pcy1hY3RpdmUge1xuICAgIGFuaW1hdGlvbjogbWRsLXNwaW5uZXJfX2NvbnRhaW5lci1yb3RhdGUgJHNwaW5uZXItZHVyYXRpb24gbGluZWFyIGluZmluaXRlO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgbWRsLXNwaW5uZXJfX2NvbnRhaW5lci1yb3RhdGUge1xuICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZykgfVxufVxuXG4ubWRsLXNwaW5uZXJfX2xheWVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvcGFjaXR5OiAwO1xufVxuXG4ubWRsLXNwaW5uZXJfX2xheWVyLTEge1xuICBib3JkZXItY29sb3I6ICRzcGlubmVyLWNvbG9yLTE7XG5cbiAgLm1kbC1zcGlubmVyLS1zaW5nbGUtY29sb3IgJiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkc3Bpbm5lci1zaW5nbGUtY29sb3I7XG4gIH1cblxuICAubWRsLXNwaW5uZXIuaXMtYWN0aXZlICYge1xuICAgIGFuaW1hdGlvbjpcbiAgICAgICAgbWRsLXNwaW5uZXJfX2ZpbGwtdW5maWxsLXJvdGF0ZSAoNCAqICRzcGlubmVyLWFyYy10aW1lKVxuICAgICAgICAgICAgJGFuaW1hdGlvbi1jdXJ2ZS1mYXN0LW91dC1zbG93LWluIGluZmluaXRlIGJvdGgsXG4gICAgICAgIG1kbC1zcGlubmVyX19sYXllci0xLWZhZGUtaW4tb3V0ICg0ICogJHNwaW5uZXItYXJjLXRpbWUpXG4gICAgICAgICAgICAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LXNsb3ctaW4gaW5maW5pdGUgYm90aDtcbiAgfVxufVxuXG4ubWRsLXNwaW5uZXJfX2xheWVyLTIge1xuICBib3JkZXItY29sb3I6ICRzcGlubmVyLWNvbG9yLTI7XG5cbiAgLm1kbC1zcGlubmVyLS1zaW5nbGUtY29sb3IgJiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkc3Bpbm5lci1zaW5nbGUtY29sb3I7XG4gIH1cblxuICAubWRsLXNwaW5uZXIuaXMtYWN0aXZlICYge1xuICAgIGFuaW1hdGlvbjpcbiAgICAgICAgbWRsLXNwaW5uZXJfX2ZpbGwtdW5maWxsLXJvdGF0ZSAoNCAqICRzcGlubmVyLWFyYy10aW1lKVxuICAgICAgICAgICAgJGFuaW1hdGlvbi1jdXJ2ZS1mYXN0LW91dC1zbG93LWluIGluZmluaXRlIGJvdGgsXG4gICAgICAgIG1kbC1zcGlubmVyX19sYXllci0yLWZhZGUtaW4tb3V0ICg0ICogJHNwaW5uZXItYXJjLXRpbWUpXG4gICAgICAgICAgICAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LXNsb3ctaW4gaW5maW5pdGUgYm90aDtcbiAgfVxufVxuXG4ubWRsLXNwaW5uZXJfX2xheWVyLTMge1xuICBib3JkZXItY29sb3I6ICRzcGlubmVyLWNvbG9yLTM7XG5cbiAgLm1kbC1zcGlubmVyLS1zaW5nbGUtY29sb3IgJiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkc3Bpbm5lci1zaW5nbGUtY29sb3I7XG4gIH1cblxuICAubWRsLXNwaW5uZXIuaXMtYWN0aXZlICYge1xuICAgIGFuaW1hdGlvbjpcbiAgICAgICAgbWRsLXNwaW5uZXJfX2ZpbGwtdW5maWxsLXJvdGF0ZSAoNCAqICRzcGlubmVyLWFyYy10aW1lKVxuICAgICAgICAgICAgJGFuaW1hdGlvbi1jdXJ2ZS1mYXN0LW91dC1zbG93LWluIGluZmluaXRlIGJvdGgsXG4gICAgICAgIG1kbC1zcGlubmVyX19sYXllci0zLWZhZGUtaW4tb3V0ICg0ICogJHNwaW5uZXItYXJjLXRpbWUpXG4gICAgICAgICAgICAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LXNsb3ctaW4gaW5maW5pdGUgYm90aDtcbiAgfVxufVxuXG4ubWRsLXNwaW5uZXJfX2xheWVyLTQge1xuICBib3JkZXItY29sb3I6ICRzcGlubmVyLWNvbG9yLTQ7XG5cbiAgLm1kbC1zcGlubmVyLS1zaW5nbGUtY29sb3IgJiB7XG4gICAgYm9yZGVyLWNvbG9yOiAkc3Bpbm5lci1zaW5nbGUtY29sb3I7XG4gIH1cblxuICAubWRsLXNwaW5uZXIuaXMtYWN0aXZlICYge1xuICAgIGFuaW1hdGlvbjpcbiAgICAgICAgbWRsLXNwaW5uZXJfX2ZpbGwtdW5maWxsLXJvdGF0ZSAoNCAqICRzcGlubmVyLWFyYy10aW1lKVxuICAgICAgICAgICAgJGFuaW1hdGlvbi1jdXJ2ZS1mYXN0LW91dC1zbG93LWluIGluZmluaXRlIGJvdGgsXG4gICAgICAgIG1kbC1zcGlubmVyX19sYXllci00LWZhZGUtaW4tb3V0ICg0ICogJHNwaW5uZXItYXJjLXRpbWUpXG4gICAgICAgICAgICAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LXNsb3ctaW4gaW5maW5pdGUgYm90aDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIG1kbC1zcGlubmVyX19maWxsLXVuZmlsbC1yb3RhdGUge1xuICAxMi41JSB7IHRyYW5zZm9ybTogcm90YXRlKDAuNSAqICRzcGlubmVyLWFyYy1zaXplKTsgIH1cbiAgMjUlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSgkc3Bpbm5lci1hcmMtc2l6ZSk7ICB9XG4gIDM3LjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoMS41ICogJHNwaW5uZXItYXJjLXNpemUpOyAgfVxuICA1MCUgICB7IHRyYW5zZm9ybTogcm90YXRlKDIgKiAkc3Bpbm5lci1hcmMtc2l6ZSk7ICB9XG4gIDYyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoMi41ICogJHNwaW5uZXItYXJjLXNpemUpOyAgfVxuICA3NSUgICB7IHRyYW5zZm9ybTogcm90YXRlKDMgKiAkc3Bpbm5lci1hcmMtc2l6ZSk7ICB9XG4gIDg3LjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoMy41ICogJHNwaW5uZXItYXJjLXNpemUpOyB9XG4gIHRvICAgIHsgdHJhbnNmb3JtOiByb3RhdGUoNCAqICRzcGlubmVyLWFyYy1zaXplKTsgfVxufVxuXG4vKipcbiogSEFDSzogRXZlbiB0aG91Z2ggdGhlIGludGVudGlvbiBpcyB0byBoYXZlIHRoZSBjdXJyZW50IC5tZGwtc3Bpbm5lcl9fbGF5ZXItTlxuKiBhdCBgb3BhY2l0eTogMWAsIHdlIHNldCBpdCB0byBgb3BhY2l0eTogMC45OWAgaW5zdGVhZCBzaW5jZSB0aGlzIGZvcmNlcyBDaHJvbWVcbiogdG8gZG8gcHJvcGVyIHN1YnBpeGVsIHJlbmRlcmluZyBmb3IgdGhlIGVsZW1lbnRzIGJlaW5nIGFuaW1hdGVkLiBUaGlzIGlzXG4qIGVzcGVjaWFsbHkgdmlzaWJsZSBpbiBDaHJvbWUgMzkgb24gVWJ1bnR1IDE0LjA0LiBTZWU6XG4qXG4qIC0gaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcGFwZXItc3Bpbm5lci9pc3N1ZXMvOVxuKiAtIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00MzYyNTVcbiovXG5Aa2V5ZnJhbWVzIG1kbC1zcGlubmVyX19sYXllci0xLWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7IG9wYWNpdHk6IDAuOTk7IH1cbiAgMjUlIHsgb3BhY2l0eTogMC45OTsgfVxuICAyNiUgeyBvcGFjaXR5OiAwOyB9XG4gIDg5JSB7IG9wYWNpdHk6IDA7IH1cbiAgOTAlIHsgb3BhY2l0eTogMC45OTsgfVxuICAxMDAlIHsgb3BhY2l0eTogMC45OTsgfVxufVxuXG5Aa2V5ZnJhbWVzIG1kbC1zcGlubmVyX19sYXllci0yLWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cbiAgMTUlIHsgb3BhY2l0eTogMDsgfVxuICAyNSUgeyBvcGFjaXR5OiAwLjk5OyB9XG4gIDUwJSB7IG9wYWNpdHk6IDAuOTk7IH1cbiAgNTElIHsgb3BhY2l0eTogMDsgfVxufVxuXG5Aa2V5ZnJhbWVzIG1kbC1zcGlubmVyX19sYXllci0zLWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cbiAgNDAlIHsgb3BhY2l0eTogMDsgfVxuICA1MCUgeyBvcGFjaXR5OiAwLjk5OyB9XG4gIDc1JSB7IG9wYWNpdHk6IDAuOTk7IH1cbiAgNzYlIHsgb3BhY2l0eTogMDsgfVxufVxuXG5Aa2V5ZnJhbWVzIG1kbC1zcGlubmVyX19sYXllci00LWZhZGUtaW4tb3V0IHtcbiAgZnJvbSB7IG9wYWNpdHk6IDA7IH1cbiAgNjUlIHsgb3BhY2l0eTogMDsgfVxuICA3NSUgeyBvcGFjaXR5OiAwLjk5OyB9XG4gIDkwJSB7IG9wYWNpdHk6IDAuOTk7IH1cbiAgMTAwJSB7IG9wYWNpdHk6IDA7IH1cbn1cblxuLyoqXG4qIFBhdGNoIHRoZSBnYXAgdGhhdCBhcHBlYXIgYmV0d2VlbiB0aGUgdHdvIGFkamFjZW50XG4qIGRpdi5tZGwtc3Bpbm5lcl9fY2lyY2xlLWNsaXBwZXIgd2hpbGUgdGhlIHNwaW5uZXIgaXMgcm90YXRpbmdcbiogKGFwcGVhcnMgb24gQ2hyb21lIDM4LCBTYWZhcmkgNy4xLCBhbmQgSUUgMTEpLlxuKlxuKiBVcGRhdGU6IHRoZSBnYXAgbm8gbG9uZ2VyIGFwcGVhcnMgb24gQ2hyb21lIHdoZW4gLm1kbC1zcGlubmVyX19sYXllci1OJ3Ncbiogb3BhY2l0eSBpcyAwLjk5LCBidXQgc3RpbGwgZG9lcyBvbiBTYWZhcmkgYW5kIElFLlxuKi9cbi5tZGwtc3Bpbm5lcl9fZ2FwLXBhdGNoIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDQ1JTtcbiAgd2lkdGg6IDEwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG5cbiAgJiAubWRsLXNwaW5uZXJfX2NpcmNsZSB7XG4gICAgd2lkdGg6IDEwMDAlO1xuICAgIGxlZnQ6IC00NTAlO1xuICB9XG59XG5cbi5tZGwtc3Bpbm5lcl9fY2lyY2xlLWNsaXBwZXIge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDUwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG5cbiAgJiAubWRsLXNwaW5uZXJfX2NpcmNsZSB7XG4gICAgd2lkdGg6IDIwMCU7XG4gIH1cbn1cblxuLm1kbC1zcGlubmVyX19jaXJjbGUge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci13aWR0aDogJHNwaW5uZXItc3Ryb2tlLXdpZHRoO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYW5pbWF0aW9uOiBub25lO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xuXG4gIC5tZGwtc3Bpbm5lcl9fbGVmdCAmIHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMTI5ZGVnKTtcblxuICAgIC5tZGwtc3Bpbm5lci5pcy1hY3RpdmUgJiB7XG4gICAgICBhbmltYXRpb246IG1kbC1zcGlubmVyX19sZWZ0LXNwaW4gJHNwaW5uZXItYXJjLXRpbWVcbiAgICAgICAgICAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LXNsb3ctaW4gaW5maW5pdGUgYm90aDtcbiAgICB9XG4gIH1cblxuICAubWRsLXNwaW5uZXJfX3JpZ2h0ICYge1xuICAgIGxlZnQ6IC0xMDAlO1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMjlkZWcpO1xuXG4gICAgLm1kbC1zcGlubmVyLmlzLWFjdGl2ZSAmIHtcbiAgICAgIGFuaW1hdGlvbjogbWRsLXNwaW5uZXJfX3JpZ2h0LXNwaW4gJHNwaW5uZXItYXJjLXRpbWVcbiAgICAgICAgICAkYW5pbWF0aW9uLWN1cnZlLWZhc3Qtb3V0LXNsb3ctaW4gaW5maW5pdGUgYm90aDtcbiAgICB9XG4gIH1cbn1cblxuQGtleWZyYW1lcyBtZGwtc3Bpbm5lcl9fbGVmdC1zcGluIHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKDEzMGRlZyk7IH1cbiAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTVkZWcpOyB9XG4gIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKTsgfVxufVxuXG5Aa2V5ZnJhbWVzIG1kbC1zcGlubmVyX19yaWdodC1zcGluIHtcbiAgZnJvbSB7IHRyYW5zZm9ybTogcm90YXRlKC0xMzBkZWcpOyB9XG4gIDUwJSB7IHRyYW5zZm9ybTogcm90YXRlKDVkZWcpOyB9XG4gIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZyk7IH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuQGltcG9ydCBcIi4uL3ZhcmlhYmxlc1wiO1xuQGltcG9ydCBcIi4uL21peGluc1wiO1xuXG4ubWRsLXN3aXRjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICB6LWluZGV4OiAxO1xuXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6ICRzd2l0Y2gtbGFiZWwtaGVpZ2h0O1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG5cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG5cbiAgJi5pcy11cGdyYWRlZCB7XG4gICAgcGFkZGluZy1sZWZ0OiAkc3dpdGNoLXRyYWNrLWxlbmd0aCAtIDhweDtcbiAgfVxuXG4gIC8vIGF2b2lkcyBibHVlIGJveCBhcm91bmQgc3dpdGNoXG4gIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcbiAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLm1kbC1zd2l0Y2hfX2lucHV0IHtcbiAgbGluZS1oZWlnaHQ6ICRzd2l0Y2gtbGFiZWwtaGVpZ2h0O1xuXG4gIC5tZGwtc3dpdGNoLmlzLXVwZ3JhZGVkICYge1xuICAgIC8vIEhpZGUgaW5wdXQgZWxlbWVudCwgd2hpbGUgc3RpbGwgbWFraW5nIGl0IHJlc3BvbmQgdG8gZm9jdXMuXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIC1tcy1hcHBlYXJhbmNlOiBub25lO1xuICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgYXBwZWFyYW5jZTogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG4gIH1cbn1cblxuLm1kbC1zd2l0Y2hfX3RyYWNrIHtcbiAgYmFja2dyb3VuZDogJHN3aXRjaC1vZmYtdHJhY2stY29sb3I7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAkc3dpdGNoLXRyYWNrLXRvcDtcbiAgaGVpZ2h0OiAkc3dpdGNoLXRyYWNrLWhlaWdodDtcbiAgd2lkdGg6ICRzd2l0Y2gtdHJhY2stbGVuZ3RoO1xuICBib3JkZXItcmFkaXVzOiAkc3dpdGNoLXRyYWNrLWhlaWdodDtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgLm1kbC1zd2l0Y2guaXMtY2hlY2tlZCAmIHtcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLXRyYWNrLWNvbG9yO1xuICB9XG5cbiAgLm1kbC1zd2l0Y2guaXMtZGlzYWJsZWQgJiB7XG4gICAgYmFja2dyb3VuZDogJHN3aXRjaC1kaXNhYmxlZC10cmFjay1jb2xvcjtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cbn1cblxuLm1kbC1zd2l0Y2hfX3RodW1iIHtcbiAgYmFja2dyb3VuZDogJHN3aXRjaC1vZmYtdGh1bWItY29sb3I7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAkc3dpdGNoLXRodW1iLXRvcDtcbiAgaGVpZ2h0OiAkc3dpdGNoLXRodW1iLXNpemU7XG4gIHdpZHRoOiAkc3dpdGNoLXRodW1iLXNpemU7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgQGluY2x1ZGUgc2hhZG93LTJkcCgpO1xuXG4gIEBpbmNsdWRlIG1hdGVyaWFsLWFuaW1hdGlvbi1kZWZhdWx0KDAuMjhzKTtcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogbGVmdDtcblxuICAubWRsLXN3aXRjaC5pcy1jaGVja2VkICYge1xuICAgIGJhY2tncm91bmQ6ICRzd2l0Y2gtdGh1bWItY29sb3I7XG4gICAgbGVmdDogJHN3aXRjaC10cmFjay1sZW5ndGggLSAkc3dpdGNoLXRodW1iLXNpemU7XG5cbiAgICBAaW5jbHVkZSBzaGFkb3ctM2RwKCk7XG4gIH1cblxuICAubWRsLXN3aXRjaC5pcy1kaXNhYmxlZCAmIHtcbiAgICBiYWNrZ3JvdW5kOiAkc3dpdGNoLWRpc2FibGVkLXRodW1iLWNvbG9yO1xuICAgIGN1cnNvcjogYXV0bztcbiAgfVxufVxuXG4ubWRsLXN3aXRjaF9fZm9jdXMtaGVscGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0kc3dpdGNoLWhlbHBlci1zaXplIC8gMiwgLSRzd2l0Y2gtaGVscGVyLXNpemUgLyAyKTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6ICRzd2l0Y2gtaGVscGVyLXNpemU7XG4gIGhlaWdodDogJHN3aXRjaC1oZWxwZXItc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIC5tZGwtc3dpdGNoLmlzLWZvY3VzZWQgJiB7XG4gICAgYm94LXNoYWRvdzogMCAwIDBweCAoKCRzd2l0Y2gtcmlwcGxlLXNpemUgLSAkc3dpdGNoLWhlbHBlci1zaXplKSAvIDIpXG4gICAgICAgIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cblxuICAubWRsLXN3aXRjaC5pcy1mb2N1c2VkLmlzLWNoZWNrZWQgJiB7XG4gICAgYm94LXNoYWRvdzogMCAwIDBweCAoKCRzd2l0Y2gtcmlwcGxlLXNpemUgLSAkc3dpdGNoLWhlbHBlci1zaXplKSAvIDIpXG4gICAgICAgICRzd2l0Y2gtZmFkZWQtY29sb3I7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHN3aXRjaC1mYWRlZC1jb2xvcjtcbiAgfVxufVxuXG4ubWRsLXN3aXRjaF9fbGFiZWwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1zaXplOiAkc3dpdGNoLWxhYmVsLWZvbnQtc2l6ZTtcbiAgbGluZS1oZWlnaHQ6ICRzd2l0Y2gtbGFiZWwtaGVpZ2h0O1xuICBtYXJnaW46IDA7XG4gIGxlZnQ6IDI0cHg7XG5cbiAgLm1kbC1zd2l0Y2guaXMtZGlzYWJsZWQgJiB7XG4gICAgY29sb3I6ICRzd2l0Y2gtZGlzYWJsZWQtdGh1bWItY29sb3I7XG4gICAgY3Vyc29yOiBhdXRvO1xuICB9XG59XG5cbi5tZGwtc3dpdGNoX19yaXBwbGUtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAyO1xuICB0b3A6IC0oJHN3aXRjaC1yaXBwbGUtc2l6ZSAtICRzd2l0Y2gtbGFiZWwtaGVpZ2h0KSAvIDI7XG4gIGxlZnQ6ICRzd2l0Y2gtdGh1bWItc2l6ZSAvIDIgLSAkc3dpdGNoLXJpcHBsZS1zaXplIC8gMjtcblxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB3aWR0aDogJHN3aXRjaC1yaXBwbGUtc2l6ZTtcbiAgaGVpZ2h0OiAkc3dpdGNoLXJpcHBsZS1zaXplO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG5cbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIC13ZWJraXQtbWFzay1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCB3aGl0ZSwgYmxhY2spO1xuXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNDBzO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogc3RlcC1lbmQ7XG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IGxlZnQ7XG5cbiAgJiAubWRsLXJpcHBsZSB7XG4gICAgYmFja2dyb3VuZDogJHN3aXRjaC1jb2xvcjtcbiAgfVxuXG4gIC5tZGwtc3dpdGNoLmlzLWRpc2FibGVkICYge1xuICAgIGN1cnNvcjogYXV0bztcbiAgfVxuXG4gIC5tZGwtc3dpdGNoLmlzLWRpc2FibGVkICYgLm1kbC1yaXBwbGUge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB9XG5cbiAgLm1kbC1zd2l0Y2guaXMtY2hlY2tlZCAmIHtcbiAgICBjdXJzb3I6IGF1dG87XG4gICAgbGVmdDogJHN3aXRjaC10cmFjay1sZW5ndGggLSAkc3dpdGNoLXJpcHBsZS1zaXplIC8gMiAtXG4gICAgICAgICRzd2l0Y2gtdGh1bWItc2l6ZSAvIDI7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbkBpbXBvcnQgXCIuLi92YXJpYWJsZXNcIjtcblxuXG4ubWRsLXRhYnMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5tZGwtdGFic19fdGFiLWJhciB7XG4gICAgZGlzcGxheSAgICAgICAgIDogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbiAgOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50IDogY2VudGVyOyAvLyDih75cbiAgICBhbGlnbi1jb250ZW50ICAgOiBzcGFjZS1iZXR3ZWVuOyAvLyB8fFxuICAgIGFsaWduLWl0ZW1zICAgICA6IGZsZXgtc3RhcnQ7IC8vIOKGk1xuXG4gICAgaGVpZ2h0ICAgICAgICAgIDogNDhweDtcbiAgICBwYWRkaW5nICAgICAgICAgOiAwIDAgMCAwO1xuICAgIG1hcmdpbiAgICAgICAgICA6IDA7XG4gICAgYm9yZGVyLWJvdHRvbSAgIDogMXB4IHNvbGlkICR0YWItYm9yZGVyLWNvbG9yO1xufVxuXG4ubWRsLXRhYnNfX3RhYiB7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyOiBub25lO1xuICBwYWRkaW5nOiAwIDI0cHggMCAyNHB4O1xuXG4gIGZsb2F0OiBsZWZ0O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIGNvbG9yOiByZWQ7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgaGVpZ2h0OiA0OHB4O1xuICBsaW5lLWhlaWdodDogNDhweDtcblxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogJGxheW91dC10YWItZm9udC1zaXplO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG4gIGNvbG9yOiAkdGFiLXRleHQtY29sb3I7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLm1kbC10YWJzLmlzLXVwZ3JhZGVkICYuaXMtYWN0aXZlIHtcbiAgICBjb2xvcjogJHRhYi1hY3RpdmUtdGV4dC1jb2xvcjtcbiAgfVxuXG4gIC5tZGwtdGFicy5pcy11cGdyYWRlZCAmLmlzLWFjdGl2ZTphZnRlciB7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29udGVudDogXCIgXCI7XG4gICAgYm90dG9tOiAwcHg7XG4gICAgbGVmdDogMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kOiAkdGFiLWhpZ2hsaWdodC1jb2xvcjtcbiAgICBhbmltYXRpb246IGJvcmRlci1leHBhbmQgMC4ycyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuNCwgMSkgMC4wMXMgYWx0ZXJuYXRlIGZvcndhcmRzO1xuICAgIHRyYW5zaXRpb246IGFsbCAxcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpO1xuICB9XG5cbiAgJiAubWRsLXRhYnNfX3JpcHBsZS1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbGVmdDogMHB4O1xuICAgIHRvcDogMHB4O1xuICAgIHotaW5kZXg6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICYgLm1kbC1yaXBwbGUge1xuICAgICAgYmFja2dyb3VuZDogJHRhYi1oaWdobGlnaHQtY29sb3I7XG4gICAgfVxuICB9XG59XG5cbi5tZGwtdGFic19fcGFuZWwge1xuICBkaXNwbGF5OiBibG9jaztcblxuICAubWRsLXRhYnMuaXMtdXBncmFkZWQgJiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tZGwtdGFicy5pcy11cGdyYWRlZCAmLmlzLWFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBib3JkZXItZXhwYW5kIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zXCI7XG5cbi8vIFRoZSBjb250YWluZXIgZm9yIHRoZSB3aG9sZSBjb21wb25lbnQuXG4ubWRsLXRleHRmaWVsZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICBmb250LXNpemU6ICRpbnB1dC10ZXh0LWZvbnQtc2l6ZTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgd2lkdGg6IDMwMHB4O1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogJGlucHV0LXRleHQtdmVydGljYWwtc3BhY2luZyAwO1xuXG4gIC8vIEFsaWduIGJ1dHRvbnMsIGlmIHVzZWQuXG4gICYgLm1kbC1idXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206ICRpbnB1dC10ZXh0LXZlcnRpY2FsLXNwYWNpbmc7XG4gIH1cbn1cblxuLy8gT3B0aW9uYWwgY2xhc3MgdG8gYWxpZ24gcmlnaHQuXG4ubWRsLXRleHRmaWVsZC0tYWxpZ24tcmlnaHQge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLy8gT3B0aW9uYWwgY2xhc3MgdG8gZGlzcGxheSBhdCBmdWxsIHdpZHRoLlxuLm1kbC10ZXh0ZmllbGQtLWZ1bGwtd2lkdGgge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLy8gT3B0aW9uYWwgY2xhc3MgdG8gbWFrZSB0aGUgdGV4dCBmaWVsZCBleHBhbmRhYmxlLlxuLm1kbC10ZXh0ZmllbGQtLWV4cGFuZGFibGUge1xuICBtaW4td2lkdGg6ICRpbnB1dC10ZXh0LWJ1dHRvbi1zaXplO1xuICB3aWR0aDogYXV0bztcbiAgbWluLWhlaWdodDogJGlucHV0LXRleHQtYnV0dG9uLXNpemU7XG59XG5cbi8vIFN0eWxpbmcgZm9yIHRoZSBpbnB1dCBlbGVtZW50LlxuLm1kbC10ZXh0ZmllbGRfX2lucHV0IHtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGlucHV0LXRleHQtYm90dG9tLWJvcmRlci1jb2xvcjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogJGlucHV0LXRleHQtZm9udC1zaXplO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6ICRpbnB1dC10ZXh0LXBhZGRpbmcgMDtcbiAgd2lkdGg6ICRpbnB1dC10ZXh0LXdpZHRoO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBjb2xvcjogaW5oZXJpdDtcblxuICAubWRsLXRleHRmaWVsZC5pcy1mb2N1c2VkICYge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAubWRsLXRleHRmaWVsZC5pcy1pbnZhbGlkICYge1xuICAgIGJvcmRlci1jb2xvcjogJGlucHV0LXRleHQtZXJyb3ItY29sb3I7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgfVxuXG4gIC5tZGwtdGV4dGZpZWxkLmlzLWRpc2FibGVkICYge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgJGlucHV0LXRleHQtZGlzYWJsZWQtY29sb3I7XG4gICAgY29sb3I6ICRpbnB1dC10ZXh0LWRpc2FibGVkLXRleHQtY29sb3I7XG4gIH1cbn1cblxuLm1kbC10ZXh0ZmllbGQgdGV4dGFyZWEubWRsLXRleHRmaWVsZF9faW5wdXQge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLy8gU3R5bGluZyBmb3IgdGhlIGxhYmVsIC8gZmxvYXRpbmcgbGFiZWwuXG4ubWRsLXRleHRmaWVsZF9fbGFiZWwge1xuICBib3R0b206IDA7XG4gIGNvbG9yOiAkaW5wdXQtdGV4dC1sYWJlbC1jb2xvcjtcbiAgZm9udC1zaXplOiAkaW5wdXQtdGV4dC1mb250LXNpemU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBkaXNwbGF5OiBibG9jaztcbiAgdG9wOiAoJGlucHV0LXRleHQtcGFkZGluZyArICRpbnB1dC10ZXh0LXZlcnRpY2FsLXNwYWNpbmcpO1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAubWRsLXRleHRmaWVsZC5pcy1kaXJ0eSAmIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAvLyBGbG9hdGluZyBMYWJlbFxuICAubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwgJiB7XG4gICAgQGluY2x1ZGUgbWF0ZXJpYWwtYW5pbWF0aW9uLWRlZmF1bHQoKTtcbiAgfVxuXG4gIC5tZGwtdGV4dGZpZWxkLmlzLWRpc2FibGVkLmlzLWRpc2FibGVkICYge1xuICAgIGNvbG9yOiAkaW5wdXQtdGV4dC1kaXNhYmxlZC10ZXh0LWNvbG9yO1xuICB9XG5cbiAgLm1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsLmlzLWZvY3VzZWQgJixcbiAgLm1kbC10ZXh0ZmllbGQtLWZsb2F0aW5nLWxhYmVsLmlzLWRpcnR5ICYge1xuICAgIGNvbG9yOiAkaW5wdXQtdGV4dC1oaWdobGlnaHQtY29sb3I7XG4gICAgZm9udC1zaXplIDogJGlucHV0LXRleHQtZmxvYXRpbmctbGFiZWwtZm9udHNpemU7XG4gICAgdG9wOiAkaW5wdXQtdGV4dC12ZXJ0aWNhbC1zcGFjaW5nIC0gKCRpbnB1dC10ZXh0LWZsb2F0aW5nLWxhYmVsLWZvbnRzaXplICsgJGlucHV0LXRleHQtcGFkZGluZyk7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxuXG4gIC5tZGwtdGV4dGZpZWxkLS1mbG9hdGluZy1sYWJlbC5pcy1mb2N1c2VkIC5tZGwtdGV4dGZpZWxkX19leHBhbmRhYmxlLWhvbGRlciAmLFxuICAubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwuaXMtZGlydHkgLm1kbC10ZXh0ZmllbGRfX2V4cGFuZGFibGUtaG9sZGVyICZ7XG4gICAgdG9wOiAtKCRpbnB1dC10ZXh0LWZsb2F0aW5nLWxhYmVsLWZvbnRzaXplICsgJGlucHV0LXRleHQtcGFkZGluZyk7XG4gIH1cblxuICAubWRsLXRleHRmaWVsZC0tZmxvYXRpbmctbGFiZWwuaXMtaW52YWxpZCAmIHtcbiAgICBjb2xvcjogJGlucHV0LXRleHQtZXJyb3ItY29sb3I7XG4gICAgZm9udC1zaXplOiAkaW5wdXQtdGV4dC1mbG9hdGluZy1sYWJlbC1mb250c2l6ZTtcbiAgfVxuXG4gIC8vIFRoZSBhZnRlciBsYWJlbCBpcyB0aGUgY29sb3JlZCB1bmRlcmxpbmUgZm9yIHRoZSBUZXh0RmllbGQuXG4gICY6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC10ZXh0LWhpZ2hsaWdodC1jb2xvcjtcbiAgICBib3R0b206ICRpbnB1dC10ZXh0LXZlcnRpY2FsLXNwYWNpbmc7XG4gICAgY29udGVudDogJyc7XG4gICAgaGVpZ2h0OiAycHg7XG4gICAgbGVmdDogNDUlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBAaW5jbHVkZSBtYXRlcmlhbC1hbmltYXRpb24tZGVmYXVsdCgpO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB3aWR0aDogMTBweDtcbiAgfVxuXG4gIC5tZGwtdGV4dGZpZWxkLmlzLWZvY3VzZWQgJjphZnRlciB7XG4gICAgbGVmdDogMDtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLm1kbC10ZXh0ZmllbGQuaXMtaW52YWxpZCAmOmFmdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaW5wdXQtdGV4dC1lcnJvci1jb2xvcjtcbiAgfVxufVxuXG4vLyBUZXh0RmllbGQgRXJyb3IuXG4ubWRsLXRleHRmaWVsZF9fZXJyb3Ige1xuICBjb2xvcjogJGlucHV0LXRleHQtZXJyb3ItY29sb3I7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZm9udC1zaXplOiAkaW5wdXQtdGV4dC1mbG9hdGluZy1sYWJlbC1mb250c2l6ZTtcbiAgbWFyZ2luLXRvcDogM3B4O1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIGRpc3BsYXk6IGJsb2NrO1xuXG4gIC5tZGwtdGV4dGZpZWxkLmlzLWludmFsaWQgJiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG4vLyBFeHBhbmRhYmxlIEhvbGRlci5cbi5tZGwtdGV4dGZpZWxkX19leHBhbmRhYmxlLWhvbGRlciB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tbGVmdDogJGlucHV0LXRleHQtYnV0dG9uLXNpemU7XG5cbiAgQGluY2x1ZGUgbWF0ZXJpYWwtYW5pbWF0aW9uLWRlZmF1bHQoKTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIC8vIFNhZmFyaSAocG9zc2libHkgb3RoZXJzKSBuZWVkIHRvIGJlIGNvbnZpbmNlZCB0aGF0IHRoaXMgZmllbGQgaXMgYWN0dWFsbHlcbiAgLy8gdmlzaWJsZSwgb3RoZXJ3aXNlIGl0IGNhbm5vdCBiZSB0YWJiZWQgdG8gbm9yIGZvY3VzZWQgdmlhIGEgPGxhYmVsPi5cbiAgLy8gVE9ETzogSW4gc29tZSBjYXNlcyAoUmV0aW5hIGRpc3BsYXlzKSwgdGhpcyBpcyBiaWcgZW5vdWdoIHRvIHJlbmRlciB0aGVcbiAgLy8gaW5uZXIgZWxlbWVudCA6KFxuICBtYXgtd2lkdGg6IDAuMXB4O1xuXG4gIC5tZGwtdGV4dGZpZWxkLmlzLWZvY3VzZWQgJiwgLm1kbC10ZXh0ZmllbGQuaXMtZGlydHkgJiB7XG4gICAgLy8gVGhpcyBpcyBhbiB1bmZvcnR1bmF0ZSBoYWNrLiBBbmltYXRpbmcgYmV0d2VlbiB3aWR0aHMgaW4gcGVyY2VudCAoJSlcbiAgICAvLyBpbiBtYW55IGJyb3dzZXJzIChDaHJvbWUsIEZpcmVmb3gpIG9ubHkgYW5pbWF0ZXMgdGhlIGlubmVyIHZpc3VhbCBzdHlsZVxuICAgIC8vIG9mIHRoZSBpbnB1dCAtIHRoZSBvdXRlciBib3VuZGluZyBib3ggc3RpbGwgJ2p1bXBzJy5cbiAgICAvLyBUaHVzIGFzc3VtZSBhIHNlbnNpYmxlIG1heGltdW0sIGFuZCBhbmltYXRlIHRvL2Zyb20gdGhhdCB2YWx1ZS5cbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICB9XG4gIC5tZGwtdGV4dGZpZWxkX19sYWJlbDphZnRlciB7XG4gICAgYm90dG9tOiAwO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5cbi5tZGwtdG9vbHRpcCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7XG4gIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07XG4gIHotaW5kZXg6IDk5OTtcbiAgYmFja2dyb3VuZDogJHRvb2x0aXAtYmFja2dyb3VuZC1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHRvb2x0aXAtdGV4dC1jb2xvcjtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6ICR0b29sdGlwLWZvbnQtc2l6ZTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gIG1heC13aWR0aDogMTcwcHg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAtNTAwcHg7XG4gIGxlZnQ6IC01MDBweDtcbiAgcGFkZGluZzogOHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ubWRsLXRvb2x0aXAuaXMtYWN0aXZlIHtcbiAgYW5pbWF0aW9uOiBwdWxzZSAyMDBtcyAkYW5pbWF0aW9uLWN1cnZlLWxpbmVhci1vdXQtc2xvdy1pbiBmb3J3YXJkcztcbn1cblxuLm1kbC10b29sdGlwLS1sYXJnZSB7XG4gIGxpbmUtaGVpZ2h0OiAxNHB4O1xuICBmb250LXNpemU6ICR0b29sdGlwLWZvbnQtc2l6ZS1sYXJnZTtcbiAgcGFkZGluZzogMTZweDtcbn1cblxuQGtleWZyYW1lcyBwdWxzZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICAvLyBGaXhlcyBhIHdlaXJkIGJ1ZyB3aXRoIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIFNhZmFyaSBhbmQgdGhlIHJlc3VsdCBvZlxuICAgIC8vIHRoZSBTQVNTIGNvbXBpbGF0aW9uIGZvciB0aGUgYW5pbWF0aW9uLlxuICAgIC8vIEVzc2VudGlhbGx5LCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IFwiNTAlXCIgYW5kIFwiMTAwJVwiIGRvbid0IGdldCBtZXJnZWRcbiAgICAvLyBpbnRvIGEgc2luZ2xlIFwiNTAlLCAxMDAlXCIgZW50cnksIHNvIHdlIG5lZWQgdG8gYXZvaWQgdGhlbSBoYXZpbmcgYW55XG4gICAgLy8gbWF0Y2hpbmcgcHJvcGVydGllcy5cbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTkpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5AaW1wb3J0IFwiLi4vdmFyaWFibGVzXCI7XG5AaW1wb3J0IFwiLi4vbWl4aW5zXCI7XG5cbi5tZGwtc2hhZG93LS0yZHAge1xuICBAaW5jbHVkZSBzaGFkb3ctMmRwKCk7XG59XG5cbi5tZGwtc2hhZG93LS0zZHAge1xuICBAaW5jbHVkZSBzaGFkb3ctM2RwKCk7XG59XG5cbi5tZGwtc2hhZG93LS00ZHAge1xuICBAaW5jbHVkZSBzaGFkb3ctNGRwKCk7XG59XG5cbi5tZGwtc2hhZG93LS02ZHAge1xuICBAaW5jbHVkZSBzaGFkb3ctNmRwKCk7XG59XG5cbi5tZGwtc2hhZG93LS04ZHAge1xuICBAaW5jbHVkZSBzaGFkb3ctOGRwKCk7XG59XG5cbi5tZGwtc2hhZG93LS0xNmRwIHtcbiAgQGluY2x1ZGUgc2hhZG93LTE2ZHAoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4qIE5PVEU6IFNvbWUgcnVsZXMgaGVyZSBhcmUgYXBwbGllZCB1c2luZyBkdXBsaWNhdGUgc2VsZWN0b3JzLlxuKiBUaGlzIGlzIG9uIHB1cnBvc2UgdG8gaW5jcmVhc2UgdGhlaXIgc3BlY2lmaWNpdHkgd2hlbiBhcHBsaWVkLlxuKiBGb3IgZXhhbXBsZTogYC5tZGwtY2VsbC0tMS1jb2wtcGhvbmUubWRsLWNlbGwtLTEtY29sLXBob25lYFxuKi9cblxuQGltcG9ydCBcIi4uL3ZhcmlhYmxlc1wiO1xuXG4ubWRsLWdyaWQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICBtYXJnaW46IDAgYXV0byAwIGF1dG87XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuXG4gICYubWRsLWdyaWQtLW5vLXNwYWNpbmcge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuLm1kbC1jZWxsIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuXG4ubWRsLWNlbGwtLXRvcCB7XG4gIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG59XG5cbi5tZGwtY2VsbC0tbWlkZGxlIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xufVxuXG4ubWRsLWNlbGwtLWJvdHRvbSB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xufVxuXG4ubWRsLWNlbGwtLXN0cmV0Y2gge1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xufVxuXG4ubWRsLWdyaWQubWRsLWdyaWQtLW5vLXNwYWNpbmcgPiAubWRsLWNlbGwge1xuICBtYXJnaW46IDA7XG59XG5cblxuLy8gTWl4aW5zIGZvciB3aWR0aCBjYWxjdWxhdGlvbi5cbkBtaXhpbiBwYXJ0aWFsLXNpemUoJHNpemUsICRjb2x1bW5zLCAkZ3V0dGVyKSB7XG4gIHdpZHRoOiBjYWxjKCN7KCgkc2l6ZSAvICRjb2x1bW5zKSAqIDEwMCkrXCIlXCJ9IC0gI3skZ3V0dGVyfSk7XG5cbiAgLm1kbC1ncmlkLS1uby1zcGFjaW5nID4gJiB7XG4gICAgd2lkdGg6ICN7KCgkc2l6ZSAvICRjb2x1bW5zKSAqIDEwMCkrXCIlXCJ9O1xuICB9XG59XG5cbkBtaXhpbiBmdWxsLXNpemUoJGd1dHRlcikge1xuICBAaW5jbHVkZSBwYXJ0aWFsLXNpemUoMSwgMSwgJGd1dHRlcik7XG59XG5cblxuXG4vLy8vLy8vLy8vIFBob25lIC8vLy8vLy8vLy9cblxuQG1lZGlhIChtYXgtd2lkdGg6ICRncmlkLXRhYmxldC1icmVha3BvaW50IC0gMSkge1xuICAubWRsLWdyaWQge1xuICAgIHBhZGRpbmc6ICRncmlkLXBob25lLW1hcmdpbiAtICgkZ3JpZC1waG9uZS1ndXR0ZXIgLyAyKTtcbiAgfVxuXG4gIC5tZGwtY2VsbCB7XG4gICAgbWFyZ2luOiAkZ3JpZC1waG9uZS1ndXR0ZXIgLyAyO1xuICAgIEBpbmNsdWRlIHBhcnRpYWwtc2l6ZSgkZ3JpZC1jZWxsLWRlZmF1bHQtY29sdW1ucywgJGdyaWQtcGhvbmUtY29sdW1ucyxcbiAgICAgICAgJGdyaWQtcGhvbmUtZ3V0dGVyKTtcbiAgfVxuXG4gIC5tZGwtY2VsbC0taGlkZS1waG9uZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gRGVmaW5lIHBhcnRpYWwgc2l6ZXMgZm9yIGNvbHVtbk51bWJlciA8IHRvdGFsQ29sdW1ucy5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAoJGdyaWQtcGhvbmUtY29sdW1ucyAtIDEpIHtcbiAgICAubWRsLWNlbGwtLSN7JGl9LWNvbCxcbiAgICAubWRsLWNlbGwtLSN7JGl9LWNvbC1waG9uZS5tZGwtY2VsbC0tI3skaX0tY29sLXBob25lIHtcbiAgICAgIEBpbmNsdWRlIHBhcnRpYWwtc2l6ZSgkaSwgJGdyaWQtcGhvbmUtY29sdW1ucywgJGdyaWQtcGhvbmUtZ3V0dGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbmUgMTAwJSBmb3IgZXZlcnl0aGluZyBlbHNlLlxuICBAZm9yICRpIGZyb20gJGdyaWQtcGhvbmUtY29sdW1ucyB0aHJvdWdoICRncmlkLWRlc2t0b3AtY29sdW1ucyB7XG4gICAgLm1kbC1jZWxsLS0jeyRpfS1jb2wsXG4gICAgLm1kbC1jZWxsLS0jeyRpfS1jb2wtcGhvbmUubWRsLWNlbGwtLSN7JGl9LWNvbC1waG9uZSB7XG4gICAgICBAaW5jbHVkZSBmdWxsLXNpemUoJGdyaWQtcGhvbmUtZ3V0dGVyKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vIFRhYmxldCAvLy8vLy8vLy8vXG5cbkBtZWRpYSAobWluLXdpZHRoOiAkZ3JpZC10YWJsZXQtYnJlYWtwb2ludCkgYW5kIChtYXgtd2lkdGg6ICRncmlkLWRlc2t0b3AtYnJlYWtwb2ludCAtIDEpIHtcbiAgLm1kbC1ncmlkIHtcbiAgICBwYWRkaW5nOiAkZ3JpZC10YWJsZXQtbWFyZ2luIC0gKCRncmlkLXRhYmxldC1ndXR0ZXIgLyAyKTtcbiAgfVxuXG4gIC5tZGwtY2VsbCB7XG4gICAgbWFyZ2luOiAkZ3JpZC10YWJsZXQtZ3V0dGVyIC8gMjtcbiAgICBAaW5jbHVkZSBwYXJ0aWFsLXNpemUoJGdyaWQtY2VsbC1kZWZhdWx0LWNvbHVtbnMsICRncmlkLXRhYmxldC1jb2x1bW5zLFxuICAgICAgICAkZ3JpZC10YWJsZXQtZ3V0dGVyKTtcbiAgfVxuXG4gIC5tZGwtY2VsbC0taGlkZS10YWJsZXQge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC8vIERlZmluZSBwYXJ0aWFsIHNpemVzIGZvciBjb2x1bW5OdW1iZXIgPCB0b3RhbENvbHVtbnMuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggKCRncmlkLXRhYmxldC1jb2x1bW5zIC0gMSkge1xuICAgIC5tZGwtY2VsbC0tI3skaX0tY29sLFxuICAgIC5tZGwtY2VsbC0tI3skaX0tY29sLXRhYmxldC5tZGwtY2VsbC0tI3skaX0tY29sLXRhYmxldCB7XG4gICAgICBAaW5jbHVkZSBwYXJ0aWFsLXNpemUoJGksICRncmlkLXRhYmxldC1jb2x1bW5zLCAkZ3JpZC10YWJsZXQtZ3V0dGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbmUgMTAwJSBmb3IgZXZlcnl0aGluZyBlbHNlLlxuICBAZm9yICRpIGZyb20gJGdyaWQtdGFibGV0LWNvbHVtbnMgdGhyb3VnaCAkZ3JpZC1kZXNrdG9wLWNvbHVtbnMge1xuICAgIC5tZGwtY2VsbC0tI3skaX0tY29sLFxuICAgIC5tZGwtY2VsbC0tI3skaX0tY29sLXRhYmxldC5tZGwtY2VsbC0tI3skaX0tY29sLXRhYmxldCB7XG4gICAgICBAaW5jbHVkZSBmdWxsLXNpemUoJGdyaWQtdGFibGV0LWd1dHRlcik7XG4gICAgfVxuICB9XG59XG5cblxuLy8vLy8vLy8vLyBEZXNrdG9wIC8vLy8vLy8vLy9cblxuQG1lZGlhIChtaW4td2lkdGg6ICRncmlkLWRlc2t0b3AtYnJlYWtwb2ludCkge1xuICAubWRsLWdyaWQge1xuICAgIHBhZGRpbmc6ICRncmlkLWRlc2t0b3AtbWFyZ2luIC0gKCRncmlkLWRlc2t0b3AtZ3V0dGVyIC8gMik7XG4gIH1cblxuICAubWRsLWNlbGwge1xuICAgIG1hcmdpbjogJGdyaWQtZGVza3RvcC1ndXR0ZXIgLyAyO1xuICAgIEBpbmNsdWRlIHBhcnRpYWwtc2l6ZSgkZ3JpZC1jZWxsLWRlZmF1bHQtY29sdW1ucywgJGdyaWQtZGVza3RvcC1jb2x1bW5zLFxuICAgICAgICAkZ3JpZC1kZXNrdG9wLWd1dHRlcik7XG4gIH1cblxuICAubWRsLWNlbGwtLWhpZGUtZGVza3RvcCB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLy8gRGVmaW5lIHBhcnRpYWwgc2l6ZXMgZm9yIGFsbCBudW1iZXJzIG9mIGNvbHVtbnMuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGdyaWQtZGVza3RvcC1jb2x1bW5zIHtcbiAgICAubWRsLWNlbGwtLSN7JGl9LWNvbCxcbiAgICAubWRsLWNlbGwtLSN7JGl9LWNvbC1kZXNrdG9wLm1kbC1jZWxsLS0jeyRpfS1jb2wtZGVza3RvcCB7XG4gICAgICBAaW5jbHVkZSBwYXJ0aWFsLXNpemUoJGksICRncmlkLWRlc2t0b3AtY29sdW1ucywgJGdyaWQtZGVza3RvcC1ndXR0ZXIpO1xuICAgIH1cbiAgfVxufVxuIiwiLm1kLWZhYi1ib3R0b20tcmlnaHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMjBweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIHotaW5kZXg6IDQ5O1xuXG4gIC8vIC5tZC1mYWIge1xuICAvLyAgIGJhY2tncm91bmQtY29sb3I6ICRzZWVrZXItY29sb3ItdHgtYWN0aXZlICFpbXBvcnRhbnQ7XG4gIC8vIH1cbn1cbiIsIm1kLWNhcmQge1xuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsgQGluY2x1ZGUgbWFyZ2luKDAgbnVsbCk7IH1cblxuICBtZC10b29sYmFyIHtcbiAgICBtaW4taGVpZ2h0OiAkY2FyZC10b29sYmFyLWhlaWdodDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC10b29sYmFyLWNvbG9yLWJnICFpbXBvcnRhbnQ7XG4gICAgei1pbmRleDogMDtcblxuICAgIC5tZC10b29sYmFyLXRvb2xzIHtcbiAgICAgIGhlaWdodDogJGNhcmQtdG9vbGJhci1oZWlnaHQ7XG4gICAgICBtYXgtaGVpZ2h0OiAkY2FyZC10b29sYmFyLWhlaWdodDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGRkO1xuICAgICAgZm9udC13ZWlnaHQ6ICRtZWRpdW07XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuXG4gICAgLm1kLXRvb2xiYXItdG9vbHMsIG1kLWljb24ge1xuICAgICAgY29sb3I6ICRjYXJkLWNvbG9yLXR4ICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi5jYXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmQtY29sb3ItYmcgIWltcG9ydGFudDtcblxuICAmLWljb24ge1xuICAgIG1heC13aWR0aDogOTZweDtcblxuICAgIG1kLWljb24ge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgQGluY2x1ZGUgc2l6ZSgzNnB4KTtcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcoMTJweCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2FyZC1jb2xvci1pYztcbiAgICAgIGNvbG9yOiAkY2FyZC1jb2xvci1iZztcbiAgICAgIGJvcmRlcjogOHB4IGRvdWJsZTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB9XG4gIH1cblxuICAmLWluZm8ge1xuICAgICZfX3ZhbHVlIHtcbiAgICAgIGNvbG9yOiAkcHJpbWFyeS1kYXJrICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogJGJvbGQ7XG4gICAgfVxuXG4gICAgJl9fbmFtZSB7XG4gICAgICBjb2xvcjogJHByaW1hcnktcmVndWxhciAhaW1wb3J0YW50O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkbWVkaXVtO1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgIH1cbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTk5cHgpIHtcbiAgLmNhcmQge1xuICAgICYtaW5mbyB7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXJlY3Rpb25hbC1wcm9wZXJ0eSBtaXhpbnMgYXJlIHNob3J0aGFuZHMgZm9yIHdyaXRpbmcgcHJvcGVydGllcyBsaWtlIHRoZSBmb2xsb3dpbmdcbi8vL1xuLy8vIEBpZ25vcmUgWW91IGNhbiBhbHNvIHVzZSBgZmFsc2VgIGluc3RlYWQgb2YgYG51bGxgLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBkaXJlY3Rpb25hbCB2YWx1ZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZG90dGVkIG51bGwpO1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAwIDEwcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBkb3R0ZWQ7XG4vLy8gICAgIGJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDtcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IDA7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcbi8vL1xuLy8vIEByZXR1cm4ge0xpc3R9XG5cbkBmdW5jdGlvbiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpIHtcbiAgJG91dHB1dDogbnVsbDtcblxuICAkYTogbnRoKCR2YWxzLCAxKTtcbiAgJGI6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCAyKSk7XG4gICRjOiBpZihsZW5ndGgoJHZhbHMpIDwgMywgJGEsIG50aCgkdmFscywgMykpO1xuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xuXG4gIEBpZiAkYSA9PSAwIHsgJGE6IDA7IH1cbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxuICBAaWYgJGMgPT0gMCB7ICRjOiAwOyB9XG4gIEBpZiAkZCA9PSAwIHsgJGQ6IDA7IH1cblxuICBAaWYgJGEgPT0gJGIgYW5kICRhID09ICRjIGFuZCAkYSA9PSAkZCB7ICRvdXRwdXQ6ICRhOyAgICAgICAgICB9XG4gIEBlbHNlIGlmICRhID09ICRjIGFuZCAkYiA9PSAkZCAgICAgICAgIHsgJG91dHB1dDogJGEgJGI7ICAgICAgIH1cbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxuICBAZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjICRkOyB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcmVcbi8vLyAgIFByZWZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxuLy8vICAgU3VmZml4IHRvIHVzZVxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbGxhcHNlLWRpcmVjdGlvbmFsc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcblxuQG1peGluIGRpcmVjdGlvbmFsLXByb3BlcnR5KCRwcmUsICRzdWYsICR2YWxzKSB7XG4gIC8vIFByb3BlcnR5IE5hbWVzXG4gICR0b3A6ICAgICRwcmUgKyBcIi10b3BcIiAgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRib3R0b206ICRwcmUgKyBcIi1ib3R0b21cIiArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRyaWdodDogICRwcmUgKyBcIi1yaWdodFwiICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRhbGw6ICAgICRwcmUgKyAgICAgICAgICAgICBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuXG4gICR2YWxzOiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpO1xuXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xuICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skdG9wfTogbnRoKCR2YWxzLCAxKTsgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAxKTsgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAxKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDQpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCA0KTsgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgI3skYWxsfTogJHZhbHM7XG4gIH1cbn1cbiIsIi8vIEZvbnQgd2VpZ2h0c1xuJHRoaW4gICAgIDogMTAwO1xuJGxpZ2h0ICAgIDogMzAwO1xuJHJlZ3VsYXIgIDogNDAwO1xuJG1lZGl1bSAgIDogNTAwO1xuJGJvbGQgICAgIDogNzAwO1xuJGJsYWNrICAgIDogOTAwO1xuXG4vLyBCYXNlIEZvbnRcbiRiYXNlLWZvbnQtZmFtaWx5ICAgOiAgJ1JvYm90bycsICdIZWx2ZXRpY2EnLCBzYW5zLXNlcmlmO1xuJGJhc2UtZm9udC13ZWlnaHQgICA6ICAkcmVndWxhcjtcbiRiYXNlLWZvbnQtc2l6ZSAgICAgOiAgMTZweDtcblxuLy8gRml4ZWQgRm9udFxuJGZpeGVkLWZvbnQtZmFtaWx5ICA6IG1vbm9zcGFjZTtcbiRmaXhlZC1mb250LXNpemUgICAgOiA4NSU7XG5cbi8vIENvbG9yc1xuJHByaW1hcnktZGFyayAgICAgICA6ICMyNzMxNDA7XG4kcHJpbWFyeS1yZWd1bGFyICAgIDogdGludCgjMjczMTQwLCAxMCUpO1xuJHByaW1hcnktbGlnaHQgICAgICA6IHRpbnQoIzI3MzE0MCwgNTAlKTtcbiRhY2NlbnQtcmVndWxhciAgICAgOiAjMTA4MGYyO1xuJHNlY29uZGFyeS1kYXJrICAgICA6ICRtZC1ncmV5LTcwMDtcbiRzZWNvbmRhcnktcmVndWxhciAgOiAkbWQtZ3JleS00MDA7XG4kc2Vjb25kYXJ5LWxpZ2h0ICAgIDogJG1kLWdyZXktMTAwO1xuXG4vLyBNYWluXG4kYm9keS1jb2xvci1iZyAgICAgIDogdGludCgkcHJpbWFyeS1yZWd1bGFyLCA5MCUpO1xuXG4vLyBSaWJib25cbiRyaWJib24tc2l6ZS1oZWlnaHQgOiA1MHZoO1xuJHJpYmJvbi1jb2xvci1iZyAgICA6ICRtZC1ibHVlLWdyZXktMTAwO1xuXG4vLyBIZWFkZXJcbiRoZWFkZXItY29sb3ItdHggICAgOiAkbWQtd2hpdGU7XG4kaGVhZGVyLWNvbG9yLWJnICAgIDogJHByaW1hcnktZGFyaztcblxuLy8gU2lkZW5hdiBbTWVudV1cbiRzaWRlbmF2LW1lbnUtc2l6ZS13aWR0aCAgICA6IDI0MHB4O1xuJHNpZGVuYXYtbWVudS1zaXplLWF2YXRhciAgIDogNjRweDtcbiRzaWRlbmF2LW1lbnUtY29sb3ItdHggICAgICA6ICRwcmltYXJ5LXJlZ3VsYXI7XG4kc2lkZW5hdi1tZW51LWNvbG9yLWJnICAgICAgOiB0aW50KCRwcmltYXJ5LWxpZ2h0LCA3MCUpO1xuXG4vLyBTaWRlbmF2IFtGaWx0ZXJdXG4kc2lkZW5hdi1maWx0ZXItc2l6ZS13aWR0aCAgOiAzMjBweDtcbiRzaWRlbmF2LWZpbHRlci1jb2xvci1iZyAgICA6ICRtZC13aGl0ZTtcblxuLy8gU2Vla2VyXG4kc2Vla2VyLWNvbG9yLXR4ICAgICAgICAgICAgOiAkbWQtZ3JleS02MDA7XG4kc2Vla2VyLWNvbG9yLXR4LWFjdGl2ZSAgICAgOiAkYWNjZW50LXJlZ3VsYXI7XG4kc2Vla2VyLWNvbG9yLWJnICAgICAgICAgICAgOiAkbWQtd2hpdGU7XG4kc2Vla2VyLWNvbG9yLWJnLWNvbnRlbnQgICAgOiB0aW50KCRwcmltYXJ5LXJlZ3VsYXIsIDkwJSk7XG5cbi8vIFN1YmhlYWRlclxuJHN1YmhlYWRlci1jb2xvci10eCA6ICRtZC1ncmV5LTgwMDtcbiRzdWJoZWFkZXItY29sb3ItYmcgOiB0aW50KCRib2R5LWNvbG9yLWJnLCAzMCUpO1xuLy8gJHN1YmhlYWRlci1jb2xvci1iZyA6IHJnYmEoJG1kLXdoaXRlLCAwLjkpO1xuXG4vLyBNZW51XG4kbWVudS1jb2xvci10eCA6ICRwcmltYXJ5LXJlZ3VsYXI7XG4kbWVudS1jb2xvci1iZyA6IHRpbnQoJHByaW1hcnktbGlnaHQsIDcwJSk7XG5cbi8vIENhcmRcbiRjYXJkLWNvbG9yLXR4IDogJHByaW1hcnktcmVndWxhcjtcbiRjYXJkLWNvbG9yLWJnIDogJG1kLXdoaXRlO1xuJGNhcmQtY29sb3ItaWMgOiB0aW50KCRjYXJkLWNvbG9yLXR4LCAyMCUpO1xuXG4kY2FyZC10b29sYmFyLWhlaWdodCAgICA6IDU2cHg7XG4kY2FyZC10b29sYmFyLWNvbG9yLWJnICA6ICRtZC13aGl0ZTtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNldHMgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIG9mIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2l6ZVxuLy8vICAgQSBsaXN0IG9mIGF0IG1vc3QgMiBzaXplIHZhbHVlcy5cbi8vL1xuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSB2YWx1ZSBpbiBgJHNpemVgIGl0IGlzIHVzZWQgZm9yIGJvdGggd2lkdGggYW5kIGhlaWdodC4gQWxsIHVuaXRzIGFyZSBzdXBwb3J0ZWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5maXJzdC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZSgyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBzaXplKGF1dG8gMTBlbSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiAyZW07XG4vLy8gICAgIGhlaWdodDogMmVtO1xuLy8vICAgfVxuLy8vXG4vLy8gICAuc2Vjb25kLWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogYXV0bztcbi8vLyAgICAgaGVpZ2h0OiAxMGVtO1xuLy8vICAgfVxuLy8vXG4vLy8gQHRvZG8gUmVmYWN0b3IgaW4gNS4wLjAgdG8gdXNlIGEgY29tbWEtc2VwYXJhdGVkIGFyZ3VtZW50XG5cbkBtaXhpbiBzaXplKCR2YWx1ZSkge1xuICAkd2lkdGg6IG50aCgkdmFsdWUsIDEpO1xuICAkaGVpZ2h0OiAkd2lkdGg7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID4gMSB7XG4gICAgJGhlaWdodDogbnRoKCR2YWx1ZSwgMik7XG4gIH1cblxuICBAaWYgaXMtc2l6ZSgkaGVpZ2h0KSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiBcImAjeyRoZWlnaHR9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJGhlaWdodGAgcGFyYW1ldGVyIGluIHRoZSBgc2l6ZWAgbWl4aW4uXCI7XG4gIH1cblxuICBAaWYgaXMtc2l6ZSgkd2lkdGgpIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiBcImAjeyR3aWR0aH1gIGlzIG5vdCBhIHZhbGlkIGxlbmd0aCBmb3IgdGhlIGAkd2lkdGhgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBNaXhlcyBhIGNvbG9yIHdpdGggd2hpdGUuXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yfSAkY29sb3Jcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyIChQZXJjZW50YWdlKX0gJHBlcmNlbnRcbi8vLyAgIFRoZSBhbW91bnQgb2Ygd2hpdGUgdG8gYmUgbWl4ZWQgaW4uXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogdGludCgjNmVjYWE2LCA0MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThkZmM5O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnQpIHtcbiAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCAkcGVyY2VudCk7XG59XG4iLCIkbWQtcmVkLTUwOiAjZmZlYmVlO1xuJG1kLXJlZC0xMDA6ICNmZmNkZDI7XG4kbWQtcmVkLTIwMDogI2VmOWE5YTtcbiRtZC1yZWQtMzAwOiAjZTU3MzczO1xuJG1kLXJlZC00MDA6ICNlZjUzNTA7XG4kbWQtcmVkLTUwMDogI2Y0NDMzNjtcbiRtZC1yZWQtNjAwOiAjZTUzOTM1O1xuJG1kLXJlZC03MDA6ICNkMzJmMmY7XG4kbWQtcmVkLTgwMDogI2M2MjgyODtcbiRtZC1yZWQtOTAwOiAjYjcxYzFjO1xuJG1kLXJlZC1hMTAwOiAjZmY4YTgwO1xuJG1kLXJlZC1hMjAwOiAjZmY1MjUyO1xuJG1kLXJlZC1hNDAwOiAjZmYxNzQ0O1xuJG1kLXJlZC1hNzAwOiAjZDUwMDAwO1xuXG4kbWQtcGluay01MDogI2ZjZTRlYztcbiRtZC1waW5rLTEwMDogI2Y4YmJkMDtcbiRtZC1waW5rLTIwMDogI2Y0OGZiMTtcbiRtZC1waW5rLTMwMDogI2YwNjI5MjtcbiRtZC1waW5rLTQwMDogI2VjNDA3YTtcbiRtZC1waW5rLTUwMDogI2U5MWU2MztcbiRtZC1waW5rLTYwMDogI2Q4MWI2MDtcbiRtZC1waW5rLTcwMDogI2MyMTg1YjtcbiRtZC1waW5rLTgwMDogI2FkMTQ1NztcbiRtZC1waW5rLTkwMDogIzg4MGU0ZjtcbiRtZC1waW5rLWExMDA6ICNmZjgwYWI7XG4kbWQtcGluay1hMjAwOiAjZmY0MDgxO1xuJG1kLXBpbmstYTQwMDogI2Y1MDA1NztcbiRtZC1waW5rLWE3MDA6ICNjNTExNjI7XG5cbiRtZC1wdXJwbGUtNTA6ICNmM2U1ZjU7XG4kbWQtcHVycGxlLTEwMDogI2UxYmVlNztcbiRtZC1wdXJwbGUtMjAwOiAjY2U5M2Q4O1xuJG1kLXB1cnBsZS0zMDA6ICNiYTY4Yzg7XG4kbWQtcHVycGxlLTQwMDogI2FiNDdiYztcbiRtZC1wdXJwbGUtNTAwOiAjOWMyN2IwO1xuJG1kLXB1cnBsZS02MDA6ICM4ZTI0YWE7XG4kbWQtcHVycGxlLTcwMDogIzdiMWZhMjtcbiRtZC1wdXJwbGUtODAwOiAjNmExYjlhO1xuJG1kLXB1cnBsZS05MDA6ICM0YTE0OGM7XG4kbWQtcHVycGxlLWExMDA6ICNlYTgwZmM7XG4kbWQtcHVycGxlLWEyMDA6ICNlMDQwZmI7XG4kbWQtcHVycGxlLWE0MDA6ICNkNTAwZjk7XG4kbWQtcHVycGxlLWE3MDA6ICNhYTAwZmY7XG5cbiRtZC1kZWVwLXB1cnBsZS01MDogI2VkZTdmNjtcbiRtZC1kZWVwLXB1cnBsZS0xMDA6ICNkMWM0ZTk7XG4kbWQtZGVlcC1wdXJwbGUtMjAwOiAjYjM5ZGRiO1xuJG1kLWRlZXAtcHVycGxlLTMwMDogIzk1NzVjZDtcbiRtZC1kZWVwLXB1cnBsZS00MDA6ICM3ZTU3YzI7XG4kbWQtZGVlcC1wdXJwbGUtNTAwOiAjNjczYWI3O1xuJG1kLWRlZXAtcHVycGxlLTYwMDogIzVlMzViMTtcbiRtZC1kZWVwLXB1cnBsZS03MDA6ICM1MTJkYTg7XG4kbWQtZGVlcC1wdXJwbGUtODAwOiAjNDUyN2EwO1xuJG1kLWRlZXAtcHVycGxlLTkwMDogIzMxMWI5MjtcbiRtZC1kZWVwLXB1cnBsZS1hMTAwOiAjYjM4OGZmO1xuJG1kLWRlZXAtcHVycGxlLWEyMDA6ICM3YzRkZmY7XG4kbWQtZGVlcC1wdXJwbGUtYTQwMDogIzY1MWZmZjtcbiRtZC1kZWVwLXB1cnBsZS1hNzAwOiAjNjIwMGVhO1xuXG4kbWQtaW5kaWdvLTUwOiAjZThlYWY2O1xuJG1kLWluZGlnby0xMDA6ICNjNWNhZTk7XG4kbWQtaW5kaWdvLTIwMDogIzlmYThkYTtcbiRtZC1pbmRpZ28tMzAwOiAjNzk4NmNiO1xuJG1kLWluZGlnby00MDA6ICM1YzZiYzA7XG4kbWQtaW5kaWdvLTUwMDogIzNmNTFiNTtcbiRtZC1pbmRpZ28tNjAwOiAjMzk0OWFiO1xuJG1kLWluZGlnby03MDA6ICMzMDNmOWY7XG4kbWQtaW5kaWdvLTgwMDogIzI4MzU5MztcbiRtZC1pbmRpZ28tOTAwOiAjMWEyMzdlO1xuJG1kLWluZGlnby1hMTAwOiAjOGM5ZWZmO1xuJG1kLWluZGlnby1hMjAwOiAjNTM2ZGZlO1xuJG1kLWluZGlnby1hNDAwOiAjM2Q1YWZlO1xuJG1kLWluZGlnby1hNzAwOiAjMzA0ZmZlO1xuXG4kbWQtYmx1ZS01MDogI2UzZjJmZDtcbiRtZC1ibHVlLTEwMDogI2JiZGVmYjtcbiRtZC1ibHVlLTIwMDogIzkwY2FmOTtcbiRtZC1ibHVlLTMwMDogIzY0YjVmNjtcbiRtZC1ibHVlLTQwMDogIzQyYTVmNTtcbiRtZC1ibHVlLTUwMDogIzIxOTZmMztcbiRtZC1ibHVlLTYwMDogIzFlODhlNTtcbiRtZC1ibHVlLTcwMDogIzE5NzZkMjtcbiRtZC1ibHVlLTgwMDogIzE1NjVjMDtcbiRtZC1ibHVlLTkwMDogIzBkNDdhMTtcbiRtZC1ibHVlLWExMDA6ICM4MmIxZmY7XG4kbWQtYmx1ZS1hMjAwOiAjNDQ4YWZmO1xuJG1kLWJsdWUtYTQwMDogIzI5NzlmZjtcbiRtZC1ibHVlLWE3MDA6ICMyOTYyZmY7XG5cbiRtZC1saWdodC1ibHVlLTUwOiAjZTFmNWZlO1xuJG1kLWxpZ2h0LWJsdWUtMTAwOiAjYjNlNWZjO1xuJG1kLWxpZ2h0LWJsdWUtMjAwOiAjODFkNGZhO1xuJG1kLWxpZ2h0LWJsdWUtMzAwOiAjNGZjM2Y3O1xuJG1kLWxpZ2h0LWJsdWUtNDAwOiAjMjliNmY2O1xuJG1kLWxpZ2h0LWJsdWUtNTAwOiAjMDNhOWY0O1xuJG1kLWxpZ2h0LWJsdWUtNjAwOiAjMDM5YmU1O1xuJG1kLWxpZ2h0LWJsdWUtNzAwOiAjMDI4OGQxO1xuJG1kLWxpZ2h0LWJsdWUtODAwOiAjMDI3N2JkO1xuJG1kLWxpZ2h0LWJsdWUtOTAwOiAjMDE1NzliO1xuJG1kLWxpZ2h0LWJsdWUtYTEwMDogIzgwZDhmZjtcbiRtZC1saWdodC1ibHVlLWEyMDA6ICM0MGM0ZmY7XG4kbWQtbGlnaHQtYmx1ZS1hNDAwOiAjMDBiMGZmO1xuJG1kLWxpZ2h0LWJsdWUtYTcwMDogIzAwOTFlYTtcblxuJG1kLWN5YW4tNTA6ICNlMGY3ZmE7XG4kbWQtY3lhbi0xMDA6ICNiMmViZjI7XG4kbWQtY3lhbi0yMDA6ICM4MGRlZWE7XG4kbWQtY3lhbi0zMDA6ICM0ZGQwZTE7XG4kbWQtY3lhbi00MDA6ICMyNmM2ZGE7XG4kbWQtY3lhbi01MDA6ICMwMGJjZDQ7XG4kbWQtY3lhbi02MDA6ICMwMGFjYzE7XG4kbWQtY3lhbi03MDA6ICMwMDk3YTc7XG4kbWQtY3lhbi04MDA6ICMwMDgzOGY7XG4kbWQtY3lhbi05MDA6ICMwMDYwNjQ7XG4kbWQtY3lhbi1hMTAwOiAjODRmZmZmO1xuJG1kLWN5YW4tYTIwMDogIzE4ZmZmZjtcbiRtZC1jeWFuLWE0MDA6ICMwMGU1ZmY7XG4kbWQtY3lhbi1hNzAwOiAjMDBiOGQ0O1xuXG4kbWQtdGVhbC01MDogI2UwZjJmMTtcbiRtZC10ZWFsLTEwMDogI2IyZGZkYjtcbiRtZC10ZWFsLTIwMDogIzgwY2JjNDtcbiRtZC10ZWFsLTMwMDogIzRkYjZhYztcbiRtZC10ZWFsLTQwMDogIzI2YTY5YTtcbiRtZC10ZWFsLTUwMDogIzAwOTY4ODtcbiRtZC10ZWFsLTYwMDogIzAwODk3YjtcbiRtZC10ZWFsLTcwMDogIzAwNzk2YjtcbiRtZC10ZWFsLTgwMDogIzAwNjk1YztcbiRtZC10ZWFsLTkwMDogIzAwNGQ0MDtcbiRtZC10ZWFsLWExMDA6ICNhN2ZmZWI7XG4kbWQtdGVhbC1hMjAwOiAjNjRmZmRhO1xuJG1kLXRlYWwtYTQwMDogIzFkZTliNjtcbiRtZC10ZWFsLWE3MDA6ICMwMGJmYTU7XG5cbiRtZC1ncmVlbi01MDogI2U4ZjVlOTtcbiRtZC1ncmVlbi0xMDA6ICNjOGU2Yzk7XG4kbWQtZ3JlZW4tMjAwOiAjYTVkNmE3O1xuJG1kLWdyZWVuLTMwMDogIzgxYzc4NDtcbiRtZC1ncmVlbi00MDA6ICM2NmJiNmE7XG4kbWQtZ3JlZW4tNTAwOiAjNGNhZjUwO1xuJG1kLWdyZWVuLTYwMDogIzQzYTA0NztcbiRtZC1ncmVlbi03MDA6ICMzODhlM2M7XG4kbWQtZ3JlZW4tODAwOiAjMmU3ZDMyO1xuJG1kLWdyZWVuLTkwMDogIzFiNWUyMDtcbiRtZC1ncmVlbi1hMTAwOiAjYjlmNmNhO1xuJG1kLWdyZWVuLWEyMDA6ICM2OWYwYWU7XG4kbWQtZ3JlZW4tYTQwMDogIzAwZTY3NjtcbiRtZC1ncmVlbi1hNzAwOiAjMDBjODUzO1xuXG4kbWQtbGlnaHQtZ3JlZW4tNTA6ICNmMWY4ZTk7XG4kbWQtbGlnaHQtZ3JlZW4tMTAwOiAjZGNlZGM4O1xuJG1kLWxpZ2h0LWdyZWVuLTIwMDogI2M1ZTFhNTtcbiRtZC1saWdodC1ncmVlbi0zMDA6ICNhZWQ1ODE7XG4kbWQtbGlnaHQtZ3JlZW4tNDAwOiAjOWNjYzY1O1xuJG1kLWxpZ2h0LWdyZWVuLTUwMDogIzhiYzM0YTtcbiRtZC1saWdodC1ncmVlbi02MDA6ICM3Y2IzNDI7XG4kbWQtbGlnaHQtZ3JlZW4tNzAwOiAjNjg5ZjM4O1xuJG1kLWxpZ2h0LWdyZWVuLTgwMDogIzU1OGIyZjtcbiRtZC1saWdodC1ncmVlbi05MDA6ICMzMzY5MWU7XG4kbWQtbGlnaHQtZ3JlZW4tYTEwMDogI2NjZmY5MDtcbiRtZC1saWdodC1ncmVlbi1hMjAwOiAjYjJmZjU5O1xuJG1kLWxpZ2h0LWdyZWVuLWE0MDA6ICM3NmZmMDM7XG4kbWQtbGlnaHQtZ3JlZW4tYTcwMDogIzY0ZGQxNztcblxuJG1kLWxpbWUtNTA6ICNmOWZiZTc7XG4kbWQtbGltZS0xMDA6ICNmMGY0YzM7XG4kbWQtbGltZS0yMDA6ICNlNmVlOWM7XG4kbWQtbGltZS0zMDA6ICNkY2U3NzU7XG4kbWQtbGltZS00MDA6ICNkNGUxNTc7XG4kbWQtbGltZS01MDA6ICNjZGRjMzk7XG4kbWQtbGltZS02MDA6ICNjMGNhMzM7XG4kbWQtbGltZS03MDA6ICNhZmI0MmI7XG4kbWQtbGltZS04MDA6ICM5ZTlkMjQ7XG4kbWQtbGltZS05MDA6ICM4Mjc3MTc7XG4kbWQtbGltZS1hMTAwOiAjZjRmZjgxO1xuJG1kLWxpbWUtYTIwMDogI2VlZmY0MTtcbiRtZC1saW1lLWE0MDA6ICNjNmZmMDA7XG4kbWQtbGltZS1hNzAwOiAjYWVlYTAwO1xuXG4kbWQteWVsbG93LTUwOiAjZmZmZGU3O1xuJG1kLXllbGxvdy0xMDA6ICNmZmY5YzQ7XG4kbWQteWVsbG93LTIwMDogI2ZmZjU5ZDtcbiRtZC15ZWxsb3ctMzAwOiAjZmZmMTc2O1xuJG1kLXllbGxvdy00MDA6ICNmZmVlNTg7XG4kbWQteWVsbG93LTUwMDogI2ZmZWIzYjtcbiRtZC15ZWxsb3ctNjAwOiAjZmRkODM1O1xuJG1kLXllbGxvdy03MDA6ICNmYmMwMmQ7XG4kbWQteWVsbG93LTgwMDogI2Y5YTgyNTtcbiRtZC15ZWxsb3ctOTAwOiAjZjU3ZjE3O1xuJG1kLXllbGxvdy1hMTAwOiAjZmZmZjhkO1xuJG1kLXllbGxvdy1hMjAwOiAjZmZmZjAwO1xuJG1kLXllbGxvdy1hNDAwOiAjZmZlYTAwO1xuJG1kLXllbGxvdy1hNzAwOiAjZmZkNjAwO1xuXG4kbWQtYW1iZXItNTA6ICNmZmY4ZTE7XG4kbWQtYW1iZXItMTAwOiAjZmZlY2IzO1xuJG1kLWFtYmVyLTIwMDogI2ZmZTA4MjtcbiRtZC1hbWJlci0zMDA6ICNmZmQ1NGY7XG4kbWQtYW1iZXItNDAwOiAjZmZjYTI4O1xuJG1kLWFtYmVyLTUwMDogI2ZmYzEwNztcbiRtZC1hbWJlci02MDA6ICNmZmIzMDA7XG4kbWQtYW1iZXItNzAwOiAjZmZhMDAwO1xuJG1kLWFtYmVyLTgwMDogI2ZmOGYwMDtcbiRtZC1hbWJlci05MDA6ICNmZjZmMDA7XG4kbWQtYW1iZXItYTEwMDogI2ZmZTU3ZjtcbiRtZC1hbWJlci1hMjAwOiAjZmZkNzQwO1xuJG1kLWFtYmVyLWE0MDA6ICNmZmM0MDA7XG4kbWQtYW1iZXItYTcwMDogI2ZmYWIwMDtcblxuJG1kLW9yYW5nZS01MDogI2ZmZjNlMDtcbiRtZC1vcmFuZ2UtMTAwOiAjZmZlMGIyO1xuJG1kLW9yYW5nZS0yMDA6ICNmZmNjODA7XG4kbWQtb3JhbmdlLTMwMDogI2ZmYjc0ZDtcbiRtZC1vcmFuZ2UtNDAwOiAjZmZhNzI2O1xuJG1kLW9yYW5nZS01MDA6ICNmZjk4MDA7XG4kbWQtb3JhbmdlLTYwMDogI2ZiOGMwMDtcbiRtZC1vcmFuZ2UtNzAwOiAjZjU3YzAwO1xuJG1kLW9yYW5nZS04MDA6ICNlZjZjMDA7XG4kbWQtb3JhbmdlLTkwMDogI2U2NTEwMDtcbiRtZC1vcmFuZ2UtYTEwMDogI2ZmZDE4MDtcbiRtZC1vcmFuZ2UtYTIwMDogI2ZmYWI0MDtcbiRtZC1vcmFuZ2UtYTQwMDogI2ZmOTEwMDtcbiRtZC1vcmFuZ2UtYTcwMDogI2ZmNmQwMDtcblxuJG1kLWRlZXAtb3JhbmdlLTUwOiAjZmJlOWU3O1xuJG1kLWRlZXAtb3JhbmdlLTEwMDogI2ZmY2NiYztcbiRtZC1kZWVwLW9yYW5nZS0yMDA6ICNmZmFiOTE7XG4kbWQtZGVlcC1vcmFuZ2UtMzAwOiAjZmY4YTY1O1xuJG1kLWRlZXAtb3JhbmdlLTQwMDogI2ZmNzA0MztcbiRtZC1kZWVwLW9yYW5nZS01MDA6ICNmZjU3MjI7XG4kbWQtZGVlcC1vcmFuZ2UtNjAwOiAjZjQ1MTFlO1xuJG1kLWRlZXAtb3JhbmdlLTcwMDogI2U2NGExOTtcbiRtZC1kZWVwLW9yYW5nZS04MDA6ICNkODQzMTU7XG4kbWQtZGVlcC1vcmFuZ2UtOTAwOiAjYmYzNjBjO1xuJG1kLWRlZXAtb3JhbmdlLWExMDA6ICNmZjllODA7XG4kbWQtZGVlcC1vcmFuZ2UtYTIwMDogI2ZmNmU0MDtcbiRtZC1kZWVwLW9yYW5nZS1hNDAwOiAjZmYzZDAwO1xuJG1kLWRlZXAtb3JhbmdlLWE3MDA6ICNkZDJjMDA7XG5cbiRtZC1icm93bi01MDogI2VmZWJlOTtcbiRtZC1icm93bi0xMDA6ICNkN2NjYzg7XG4kbWQtYnJvd24tMjAwOiAjYmNhYWE0O1xuJG1kLWJyb3duLTMwMDogI2ExODg3ZjtcbiRtZC1icm93bi00MDA6ICM4ZDZlNjM7XG4kbWQtYnJvd24tNTAwOiAjNzk1NTQ4O1xuJG1kLWJyb3duLTYwMDogIzZkNGM0MTtcbiRtZC1icm93bi03MDA6ICM1ZDQwMzc7XG4kbWQtYnJvd24tODAwOiAjNGUzNDJlO1xuJG1kLWJyb3duLTkwMDogIzNlMjcyMztcblxuJG1kLWdyZXktNTA6ICNmYWZhZmE7XG4kbWQtZ3JleS0xMDA6ICNmNWY1ZjU7XG4kbWQtZ3JleS0yMDA6ICNlZWVlZWU7XG4kbWQtZ3JleS0zMDA6ICNlMGUwZTA7XG4kbWQtZ3JleS00MDA6ICNiZGJkYmQ7XG4kbWQtZ3JleS01MDA6ICM5ZTllOWU7XG4kbWQtZ3JleS02MDA6ICM3NTc1NzU7XG4kbWQtZ3JleS03MDA6ICM2MTYxNjE7XG4kbWQtZ3JleS04MDA6ICM0MjQyNDI7XG4kbWQtZ3JleS05MDA6ICMyMTIxMjE7XG5cbiRtZC1ibHVlLWdyZXktNTA6ICNlY2VmZjE7XG4kbWQtYmx1ZS1ncmV5LTEwMDogI2NmZDhkYztcbiRtZC1ibHVlLWdyZXktMjAwOiAjYjBiZWM1O1xuJG1kLWJsdWUtZ3JleS0zMDA6ICM5MGE0YWU7XG4kbWQtYmx1ZS1ncmV5LTQwMDogIzc4OTA5YztcbiRtZC1ibHVlLWdyZXktNTAwOiAjNjA3ZDhiO1xuJG1kLWJsdWUtZ3JleS02MDA6ICM1NDZlN2E7XG4kbWQtYmx1ZS1ncmV5LTcwMDogIzQ1NWE2NDtcbiRtZC1ibHVlLWdyZXktODAwOiAjMzc0NzRmO1xuJG1kLWJsdWUtZ3JleS05MDA6ICMyNjMyMzg7XG5cbiRtZC13aGl0ZTogI2ZmZmZmZjtcblxuJG1kLWJsYWNrOiAjMDAwMDAwO1xuXG5cbiIsIi5kdHAgPiAuZHRwLWNvbnRlbnQgPiAuZHRwLWRhdGUtdmlldyA+IGhlYWRlci5kdHAtaGVhZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktZGFyaztcbn1cblxuLmR0cCBkaXYuZHRwLWRhdGUsXG4uZHRwIGRpdi5kdHAtdGltZSxcbi5kdHAgLmR0cC1hY3R1YWwtbWVyaWRpZW4gYS5zZWxlY3RlZCxcbi5kdHAgLmR0cC1waWNrZXItdGltZSA+IGEuZHRwLXNlbGVjdC1ob3VyLnNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktcmVndWxhcjtcbn1cblxuLmR0cCAucDEwID4gYSxcbi5kdHAgLmR0cC1oYW5kLm9uLFxuLmR0cCB0YWJsZS5kdHAtcGlja2VyLWRheXMgdHIgPiB0ZCA+IGEuc2VsZWN0ZWQsXG4uZHRwIC5kdHAtcGlja2VyLXRpbWUgPiBhLmR0cC1zZWxlY3QtbWludXRlLnNlbGVjdGVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktcmVndWxhcjtcbn1cblxuLmR0cCBkaXYuZHRwLWFjdHVhbC15ZWFyLFxuLmR0cCBkaXYuZHRwLXllYXItYnRuIHtcbiAgY29sb3I6ICRzZWNvbmRhcnktcmVndWxhcjtcbn1cblxuLmR0cCAuZHRwLXBpY2tlci1tb250aCB7XG4gIG1hcmdpbi10b3A6IDhweDtcbiAgQGluY2x1ZGUgcGFkZGluZyg4cHggbnVsbCk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRib2R5LWNvbG9yLWJnO1xuICBjb2xvcjogJHByaW1hcnktcmVndWxhcjtcbn1cblxubWQtaW5wdXQtY29udGFpbmVyLm1kLWRlZmF1bHQtdGhlbWUgLm1kLWlucHV0W2Rpc2FibGVkXSxcbm1kLWlucHV0LWNvbnRhaW5lciAubWQtaW5wdXRbZGlzYWJsZWRdLFxubWQtaW5wdXQtY29udGFpbmVyLm1kLWRlZmF1bHQtdGhlbWUgLm1kLWlucHV0IFtkaXNhYmxlZF0sXG5tZC1pbnB1dC1jb250YWluZXIgLm1kLWlucHV0IFtkaXNhYmxlZF0ge1xuICBjb2xvcjogcmdiYSgwLDAsMCwuNik7XG59XG4iLCJoZWFkZXIge1xuICB6LWluZGV4OiA2MDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gIGhlYWRlciB7XG4gICAgbWQtdG9vbGJhciB7XG4gICAgICAubWQtYnV0dG9uLm1kLWljb24tYnV0dG9uIHtcbiAgICAgICAgQGluY2x1ZGUgbWFyZ2luKDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwibWQtY29udGVudCB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktY29sb3ItYmc7XG59XG5cbm1kLXNlbGVjdC1tZW51IG1kLWNvbnRlbnQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkbWQtd2hpdGU7XG5cbiAgbWQtb3B0aW9uIHtcbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAgJG1lbnUtY29sb3ItdHggIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtZW51LWNvbG9yLWJnICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbm1kLXRvb2xiYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yLWJnICFpbXBvcnRhbnQ7XG59XG5cbi5tZC1jb250ZW50LXN1YmhlYWRlciB7XG4gIEBpbmNsdWRlIHBhZGRpbmcoNHB4IDhweCk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzdWJoZWFkZXItY29sb3ItYmc7XG4gIGNvbG9yOiAkc3ViaGVhZGVyLWNvbG9yLXR4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE0cHg7XG59XG5cbm1kLWNoZWNrYm94Lm1kLWNoZWNrZWQgLm1kLWljb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2Vla2VyLWNvbG9yLXR4LWFjdGl2ZTtcbiAgLy8gYm9yZGVyLWNvbG9yOiAkc2Vla2VyLWNvbG9yLWJnO1xuXG4gICY6OmFmdGVyIHtcbiAgICBib3JkZXItY29sb3I6ICRtZC13aGl0ZTtcbiAgfVxufVxuXG5tZC10b29sdGlwIHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG4uZmFiIHtcbiAgJi1jbG9zZWQtaWNvbiwgJi1vcGVuLWljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDE3cHg7XG4gICAgbGVmdDogMTZweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgLjNzIGVhc2UtaW4tb3V0O1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuXG4gICYtb3Blbi1pY29uIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cblxuICAubWQtaXMtb3BlbiAmLWNsb3NlZC1pY29uIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gIH1cblxuICAubWQtaXMtb3BlbiAmLW9wZW4taWNvbiB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG4iLCJtZC1tZW51LWNvbnRlbnQge1xuICAubWQtYnV0dG9uIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogNHB4IDA7XG5cbiAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAgJG1lbnUtY29sb3ItdHggIWltcG9ydGFudDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtZW51LWNvbG9yLWJnICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJjphY3RpdmUge1xuICAgICAgY29sb3I6ICRtZW51LWNvbG9yLXR4ICFpbXBvcnRhbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJG1lbnUtY29sb3ItYmcsIDEwJSk7XG4gICAgfVxuICB9XG59XG4iLCJtZC10YWJzIHtcbiAgQGluY2x1ZGUgcGFkZGluZyhudWxsIDhweCk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzZWVrZXItY29sb3ItYmc7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkbWQtZ3JleS00MDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgJjpub3QoLm1kLW5vLXRhYi1jb250ZW50KTpub3QoLm1kLWR5bmFtaWMtaGVpZ2h0KSB7XG4gICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgbWQtaW5rLWJhciB7XG4gICAgY29sb3I6ICRzZWVrZXItY29sb3ItdHgtYWN0aXZlICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogJHNlZWtlci1jb2xvci10eC1hY3RpdmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIG1kLXRhYi1jb250ZW50IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1jb2xvci1iZztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJG1kLWdyZXktNDAwO1xuICB9XG5cbiAgbWQtaWNvbiB7XG4gICAgY29sb3I6ICRzZWVrZXItY29sb3ItdHg7XG4gIH1cblxuICAubWQtdGFiIHtcbiAgICBjb2xvcjogJHNlZWtlci1jb2xvci10eCAhaW1wb3J0YW50O1xuXG4gICAgJi5tZC1hY3RpdmUge1xuICAgICAgY29sb3I6ICRzZWVrZXItY29sb3ItdHgtYWN0aXZlICFpbXBvcnRhbnQ7XG4gICAgICBmb250LXdlaWdodDogJGJvbGQ7XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkge1xuICBtZC10YWJzIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nKG51bGwgMjRweCk7XG4gIH1cbn1cblxuLm1kLXRhYi1pbnRlcnZhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRzZWVrZXItY29sb3ItYmctY29udGVudDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRtZC1ncmV5LTQwMDtcblxuICBkaXYgPiAqIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDMycHg7XG5cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbiAgICB9XG4gIH1cblxuICAjcXVpY2tJbnRlcnZhbCAgeyBtaW4td2lkdGg6IDEyMHB4OyB9XG4gICNwZXJpb2RJbnRlcnZhbCB7IG1pbi13aWR0aDogMTYwcHg7IH1cblxuICAubWQtY29udGVudC10aXRsZSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZyhudWxsIG51bGwgMTZweCBudWxsKTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGZvbnQtd2VpZ2h0OiAkYm9sZDtcbiAgfVxuXG4gIG1kLWlucHV0LWNvbnRhaW5lciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIC5tZC1lcnJvcnMtc3BhY2VyIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDhweDtcbiAgICB9XG4gIH1cblxuICBvbCwgdWwge1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblxuICAgIGxpIHtcbiAgICAgIEBpbmNsdWRlIHBhZGRpbmcoMnB4IDhweCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICBjb2xvcjogJG1kLWdyZXktODAwO1xuICAgICAgZm9udC13ZWlnaHQ6ICRtZWRpdW07XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIsICY6YWN0aXZlLCAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6ICRtZC13aGl0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGFjY2VudC1yZWd1bGFyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5zdWJoZWFkZXItcGVyaW9kIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHN1YmhlYWRlci1jb2xvci1iZztcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRtZC1ncmV5LTQwMDtcblxuICAubWQtc3ViaGVhZGVyLWlubmVyIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nKDAgMzJweCAwIDE2cHgpO1xuICB9XG5cbiAgLnN1YmhlYWRlci10aXRsZSB7XG4gICAgY29sb3I6ICRtZC1ncmV5LTYwMDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgfVxuXG4gIGJ1dHRvbiB7XG4gICAgLy8gJjpmaXJzdC1vZi10eXBlIHtcbiAgICAvLyAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIC8vIH1cbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgfVxuICB9XG5cbiAgbWQtaW5wdXQtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4oNHB4IG51bGwpO1xuXG4gICAgLm1kLWVycm9ycy1zcGFjZXIge1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICB9XG4gIH1cbn1cblxuXG4jc2Vla2VyU3VtbWFyeSB7XG4gIG1kLXBhZ2luYXRpb24td3JhcHBlciB7XG4gICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDtcbiAgfVxufVxuXG4jc2Vla2VyQ29tcGFyYXRpdmUge1xuICBtZC1wYWdpbmF0aW9uLXdyYXBwZXIge1xuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XG4gIH1cbn1cbiIsIm1kLXNpZGVuYXYge1xuXG4gIC8vIG1kLWxpc3Qge1xuICAvLyAgIEBpbmNsdWRlIHBhZGRpbmcoMCBudWxsKTtcbiAgLy8gfVxuXG4gIG1kLWNvbnRlbnQsIG1kLWNvbnRlbnQgLm1kLXN1YmhlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICBtZC1kaXZpZGVyIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4oNHB4IG51bGwpO1xuICB9XG5cbiAgbWQtbGlzdC1pdGVtIHtcblxuICAgIG1kLWljb24ge1xuICAgICAgQGluY2x1ZGUgbWFyZ2luKDAgOHB4IDAgMCAhaW1wb3J0YW50KTtcbiAgICB9XG5cbiAgICAubWQtbGlzdC1pdGVtLWlubmVyIHtcbiAgICAgIG1hcmdpbi10b3AgICAgOiAwICFpbXBvcnRhbnQ7XG4gICAgICBtYXJnaW4tYm90dG9tIDogMCAhaW1wb3J0YW50O1xuXG4gICAgICBtZC1pY29uIHtcbiAgICAgICAgbWFyZ2luLXRvcCAgICA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbSA6IDAgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmOmFjdGl2ZSwgJjpmb2N1cywgJjpob3ZlciB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2lkZW5hdi1tZW51LWNvbG9yLWJnO1xuICAgICAgY29sb3I6ICRzaWRlbmF2LW1lbnUtY29sb3ItdHg7XG5cbiAgICAgIG1kLWljb24ge1xuICAgICAgICBjb2xvcjogJHNpZGVuYXYtbWVudS1jb2xvci10eCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5tZC1hdmF0YXIge1xuICAgIEBpbmNsdWRlIHNpemUoJHNpZGVuYXYtbWVudS1zaXplLWF2YXRhcik7XG5cbiAgICBpbWcge1xuICAgICAgQGluY2x1ZGUgc2l6ZSgkc2lkZW5hdi1tZW51LXNpemUtYXZhdGFyKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB9XG4gIH1cblxuICAudG9vbGJhciB7XG4gICAgJi1oZWFkZXIge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi8uLi9hc3NldHMvaW1hZ2VzL2JnLWhlYWRlci5wbmcnKTtcbiAgICAgIGJhY2tncm91bmQtYmxlbmQtbW9kZTogbXVsdGlwbHk7XG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIH1cbiAgfVxufVxuXG4jc2lkZW5hdk1lbnUge1xuICB3aWR0aCAgICAgOiAkc2lkZW5hdi1tZW51LXNpemUtd2lkdGg7XG4gIG1heC13aWR0aCA6ICRzaWRlbmF2LW1lbnUtc2l6ZS13aWR0aDtcbiAgaGVpZ2h0OiBpbmhlcml0O1xuXG4gIG1kLXRvb2xiYXIge1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNjBweDtcbiAgICBtaW4taGVpZ2h0OiAxNjBweDtcbiAgICBtYXgtaGVpZ2h0OiAxNjBweDtcbiAgfVxuXG4gIG1kLWNvbnRlbnQge1xuICAgIGhlaWdodDogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTI4MHB4KSB7XG4gICNzaWRlbmF2TWVudSB7XG4gICAgei1pbmRleDogNTg7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkbWQtZ3JleS00MDA7XG4gIH1cbn1cblxuI3NpZGVuYXZGaWx0ZXIge1xuICB3aWR0aCAgICAgOiAkc2lkZW5hdi1maWx0ZXItc2l6ZS13aWR0aDtcbiAgbWF4LXdpZHRoIDogJHNpZGVuYXYtZmlsdGVyLXNpemUtd2lkdGg7XG4gIHBvc2l0aW9uICA6IGZpeGVkO1xuICB0b3A6IDA7XG5cbiAgbWQtdGFicyB7XG4gICAgbWQtdGFiLWNvbnRlbnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNpZGVuYXYtZmlsdGVyLWNvbG9yLWJnO1xuICAgIH1cbiAgfVxuXG4gIG1kLWxpc3QtaXRlbSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHRpbnQoJHNlZWtlci1jb2xvci1iZy1jb250ZW50LCAyNSUpO1xuXG4gICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsInRoZWFkIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnRkLWNvbG9yZWQge1xuICBtYXgtd2lkdGg6IDEwMHB4O1xufVxuIiwiaDEsXG5oMixcbmgzLFxuaDQsXG5oNSxcbmg2IHtcbiAgY29sb3I6ICRwcmltYXJ5LXJlZ3VsYXI7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuc21hbGwge1xuICBvcGFjaXR5OiAuNjtcbn1cblxuYSB7XG4gIGNvbG9yOiAkcHJpbWFyeS1yZWd1bGFyO1xuXG4gICY6Zm9jdXMsXG4gICY6aG92ZXIsXG4gICY6YWN0aXZlIHtcbiAgICBjb2xvcjogJHByaW1hcnktZGFyaztcbiAgfVxufVxuIiwiaHRtbCwgYm9keSB7XG4gIEBpbmNsdWRlIHNpemUoMTAwJSk7XG4gIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJvZHktY29sb3ItYmc7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kaXNwbGF5LWZsZXggeyBkaXNwbGF5OiBmbGV4OyB9XG5cbi5uby1wYWRkaW5nICB7IEBpbmNsdWRlIHBhZGRpbmcoMCk7IH1cbi5uby1tYXJnaW4gICB7IEBpbmNsdWRlIG1hcmdpbigwKTsgfVxuXG4ucGFkZGluZyB7XG4gICYtc20ge1xuICAgIEBpbmNsdWRlIHBhZGRpbmcoOHB4KTtcbiAgICAmX190YiB7IEBpbmNsdWRlIHBhZGRpbmcoOHB4IG51bGwpOyB9XG4gICAgJl9fcmwgeyBAaW5jbHVkZSBwYWRkaW5nKG51bGwgOHB4KTsgfVxuICB9XG4gICYtbWQge1xuICAgIEBpbmNsdWRlIHBhZGRpbmcoMTZweCk7XG4gICAgJl9fdGIgeyBAaW5jbHVkZSBwYWRkaW5nKDE2cHggbnVsbCk7IH1cbiAgICAmX19ybCB7IEBpbmNsdWRlIHBhZGRpbmcobnVsbCAxNnB4KTsgfVxuICB9XG4gICYtbGcge1xuICAgIEBpbmNsdWRlIHBhZGRpbmcoMzJweCk7XG4gICAgJl9fdGIgeyBAaW5jbHVkZSBwYWRkaW5nKDMycHggbnVsbCk7IH1cbiAgICAmX19ybCB7IEBpbmNsdWRlIHBhZGRpbmcobnVsbCAzMnB4KTsgfVxuICB9XG59XG5cbi5tYXJnaW4ge1xuICAmLXNtIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4oOHB4KTtcbiAgICAmX190YiB7IEBpbmNsdWRlIG1hcmdpbig4cHggbnVsbCk7IH1cbiAgICAmX19ybCB7IEBpbmNsdWRlIG1hcmdpbihudWxsIDhweCk7IH1cbiAgfVxuICAmLW1kIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4oMTZweCk7XG4gICAgJl9fdGIgeyBAaW5jbHVkZSBtYXJnaW4oMTZweCBudWxsKTsgfVxuICAgICZfX3JsIHsgQGluY2x1ZGUgbWFyZ2luKG51bGwgMTZweCk7IH1cbiAgfVxuICAmLWxnIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4oMzJweCk7XG4gICAgJl9fdGIgeyBAaW5jbHVkZSBtYXJnaW4oMzJweCBudWxsKTsgfVxuICAgICZfX3JsIHsgQGluY2x1ZGUgbWFyZ2luKG51bGwgMzJweCk7IH1cbiAgfVxuICAmLWF1dG8ge1xuICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIGF1dG8pO1xuICB9XG59XG5cbi5mbG9hdCB7XG4gICZfX2xlZnQgICB7IGZsb2F0OiBsZWZ0OyB9XG4gICZfX3JpZ2h0ICB7IGZsb2F0OiByaWdodDsgfVxufVxuXG4udGV4dCB7XG4gICZfX2xlZnQgICB7IHRleHQtYWxpZ246IGxlZnQ7IH1cbiAgJl9fY2VudGVyIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICZfX3JpZ2h0ICB7IHRleHQtYWxpZ246IHJpZ2h0OyB9XG5cbiAgJl9fbG93ZXJjYXNlICB7IHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7IH1cbiAgJl9fdXBwZXJjYXNlICB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH1cbiAgJl9fY2FwaXRhbGl6ZSB7IHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9XG5cbiAgJl9fdGhpbiAgICB7IGZvbnQtd2VpZ2h0OiAkdGhpbjsgfVxuICAmX19saWdodCAgIHsgZm9udC13ZWlnaHQ6ICRsaWdodDsgfVxuICAmX19yZWd1bGFyIHsgZm9udC13ZWlnaHQ6ICRyZWd1bGFyOyB9XG4gICZfX21lZGl1bSAgeyBmb250LXdlaWdodDogJG1lZGl1bTsgfVxuICAmX19ib2xkICAgIHsgZm9udC13ZWlnaHQ6ICRib2xkOyB9XG4gICZfX2JsYWNrICAgeyBmb250LXdlaWdodDogJGJsYWNrOyB9XG59XG5cbi5iZyB7XG4gICZfX2xpZ2h0LXByaW1hcnkgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9keS1jb2xvci1iZzsgIH1cbiAgJl9fbGlnaHQtc2Vjb25kYXJ5ICB7IGJhY2tncm91bmQtY29sb3I6ICRzZWVrZXItY29sb3ItYmctY29udGVudDsgfVxuXG4gICZfX2RhcmstcHJpbWFyeSAgICAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yLWJnOyAgfVxuICAmX19kYXJrLXNlY29uZGFyeSAgIHsgYmFja2dyb3VuZC1jb2xvcjogJHNlZWtlci1jb2xvci1iZzsgfVxufVxuXG5cbi5yaWJib24ge1xuICBAaW5jbHVkZSBmbGV4LXNocmluaygwKTtcbiAgQGluY2x1ZGUgc2l6ZSgxMDAlICRyaWJib24tc2l6ZS1oZWlnaHQpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmliYm9uLWNvbG9yLWJnO1xufVxuXG4ubWFpbiB7XG4gIEBpbmNsdWRlIGZsZXgtc2hyaW5rKDApO1xuICBAaW5jbHVkZSBtYXJnaW4oLSRyaWJib24tc2l6ZS1oZWlnaHQgbnVsbCBudWxsIG51bGwpO1xufVxuXG4ubG9nbyB7XG4gIG1heC1oZWlnaHQ6IDM2cHg7XG4gIEBpbmNsdWRlIG1hcmdpbihudWxsIDhweCBudWxsIG51bGwpO1xufVxuXG4ubG9naW4ge1xuICB3aWR0aDogNDAwcHg7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBIG1peGluIGZvciBnZW5lcmF0aW5nIHZlbmRvciBwcmVmaXhlcyBvbiBub24tc3RhbmRhcmRpemVkIHByb3BlcnRpZXMuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByb3BlcnR5XG4vLy8gICBQcm9wZXJ0eSB0byBwcmVmaXhcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlXG4vLy8gICBWYWx1ZSB0byB1c2Vcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHByZWZpeGVzXG4vLy8gICBQcmVmaXhlcyB0byBkZWZpbmVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItcmFkaXVzLCAxMHB4LCB3ZWJraXQgbXMgc3BlYyk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci13ZWJraXRcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1vemlsbGFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1pY3Jvc29mdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itb3BlcmFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXNwZWNcblxuQG1peGluIHByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXMpIHtcbiAgQGVhY2ggJHByZWZpeCBpbiAkcHJlZml4ZXMge1xuICAgIEBpZiAkcHJlZml4ID09IHdlYmtpdCB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itd2Via2l0IHtcbiAgICAgICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbXMge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1pY3Jvc29mdCB7XG4gICAgICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itb3BlcmEge1xuICAgICAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgIHtcbiAgICAgIEB3YXJuIFwiVW5yZWNvZ25pemVkIHByZWZpeDogI3skcHJlZml4fVwiO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpIHtcbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlICFnbG9iYWw7XG59XG4iLCIvLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcblxuLy8gQ3VzdG9tIHNob3J0aGFuZCBub3RhdGlvbiBmb3IgZmxleGJveFxuQG1peGluIGJveCgkb3JpZW50OiBpbmxpbmUtYXhpcywgJHBhY2s6IHN0YXJ0LCAkYWxpZ246IHN0cmV0Y2gpIHtcbiAgQGluY2x1ZGUgZGlzcGxheS1ib3g7XG4gIEBpbmNsdWRlIGJveC1vcmllbnQoJG9yaWVudCk7XG4gIEBpbmNsdWRlIGJveC1wYWNrKCRwYWNrKTtcbiAgQGluY2x1ZGUgYm94LWFsaWduKCRhbGlnbik7XG59XG5cbkBtaXhpbiBkaXNwbGF5LWJveCB7XG4gIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICBkaXNwbGF5OiAtbW96LWJveDtcbiAgZGlzcGxheTogLW1zLWZsZXhib3g7IC8vIElFIDEwXG4gIGRpc3BsYXk6IGJveDtcbn1cblxuQG1peGluIGJveC1vcmllbnQoJG9yaWVudDogaW5saW5lLWF4aXMpIHtcbi8vIGhvcml6b250YWx8dmVydGljYWx8aW5saW5lLWF4aXN8YmxvY2stYXhpc3xpbmhlcml0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICRvcmllbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtcGFjaygkcGFjazogc3RhcnQpIHtcbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8anVzdGlmeVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtcGFjaywgJHBhY2ssIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXBhY2s6ICRwYWNrOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWFsaWduKCRhbGlnbjogc3RyZXRjaCkge1xuLy8gc3RhcnR8ZW5kfGNlbnRlcnxiYXNlbGluZXxzdHJldGNoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsaWduLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1hbGlnbjogJGFsaWduOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWRpcmVjdGlvbigkZGlyZWN0aW9uOiBub3JtYWwpIHtcbi8vIG5vcm1hbHxyZXZlcnNlfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWxpbmVzKCRsaW5lczogc2luZ2xlKSB7XG4vLyBzaW5nbGV8bXVsdGlwbGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkbGluZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBib3gtb3JkaW5hbC1ncm91cCgkaW50OiAxKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmRpbmFsLWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1vcmRlcjogJGludDsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1mbGV4KCR2YWx1ZTogMCkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gQ1NTMyBGbGV4aWJsZSBCb3ggTW9kZWwgYW5kIHByb3BlcnR5IGRlZmF1bHRzXG4vLyBVbmlmaWVkIGF0dHJpYnV0ZXMgZm9yIDIwMDksIDIwMTEsIGFuZCAyMDEyIGZsYXZvdXJzLlxuXG4vLyAyMDA5IC0gZGlzcGxheSAoYm94IHwgaW5saW5lLWJveClcbi8vIDIwMTEgLSBkaXNwbGF5IChmbGV4Ym94IHwgaW5saW5lLWZsZXhib3gpXG4vLyAyMDEyIC0gZGlzcGxheSAoZmxleCB8IGlubGluZS1mbGV4KVxuQG1peGluIGRpc3BsYXkoJHZhbHVlKSB7XG4vLyBmbGV4IHwgaW5saW5lLWZsZXhcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgLy8gMjAwOVxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgIGRpc3BsYXk6IGJveDtcblxuICAgIC8vIDIwMTJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH0gQGVsc2Uge1xuICAgIGRpc3BsYXk6ICR2YWx1ZTtcbiAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG5cbiAgLy8gR3JhYiBmbGV4LWdyb3cgZm9yIG9sZGVyIGJyb3dzZXJzLlxuICAkZmxleC1ncm93OiBudGgoJHZhbHVlLCAxKTtcblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LCAkZmxleC1ncm93LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKSwgMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JpZW50ICggaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgaW5saW5lLWF4aXMgfCBibG9jay1heGlzKVxuLy8gICAgICAtIGJveC1kaXJlY3Rpb24gKG5vcm1hbCB8IHJldmVyc2UpXG4vLyAyMDExIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC1kaXJlY3Rpb24gKHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2UpXG5AbWl4aW4gZmxleC1kaXJlY3Rpb24oJHZhbHVlOiByb3cpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkdmFsdWUtMjAwOTogJHZhbHVlO1xuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICAkZGlyZWN0aW9uOiBub3JtYWw7XG5cbiAgQGlmICR2YWx1ZSA9PSByb3cge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInJvdy1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiBob3Jpem9udGFsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IGNvbHVtbiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImNvbHVtbi1yZXZlcnNlXCIge1xuICAgICR2YWx1ZS0yMDA5OiB2ZXJ0aWNhbDtcbiAgICAkZGlyZWN0aW9uOiByZXZlcnNlO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JpZW50LCAkdmFsdWUtMjAwOSwgd2Via2l0IG1veiBzcGVjKTtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWRpcmVjdGlvbiwgJGRpcmVjdGlvbiwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZGlyZWN0aW9uLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWRpcmVjdGlvbjogJHZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWxpbmVzIChzaW5nbGUgfCBtdWx0aXBsZSlcbi8vIDIwMTEgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG4vLyAyMDEyIC0gZmxleC13cmFwIChub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlKVxuQG1peGluIGZsZXgtd3JhcCgkdmFsdWU6IG5vd3JhcCkge1xuICAvLyBBbHQgdmFsdWVzXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBub3dyYXAge1xuICAgICRhbHQtdmFsdWU6IHNpbmdsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwid3JhcC1yZXZlcnNlXCIge1xuICAgICRhbHQtdmFsdWU6IG11bHRpcGxlO1xuICB9XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWxpbmVzLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LXdyYXAsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMSAtIFRPRE86IHBhcnNlIHZhbHVlcyBpbnRvIGZsZXgtZGlyZWN0aW9uL2ZsZXgtd3JhcFxuLy8gMjAxMiAtIGZsZXgtZmxvdyAoZmxleC1kaXJlY3Rpb24gfHwgZmxleC13cmFwKVxuQG1peGluIGZsZXgtZmxvdygkdmFsdWUpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1mbG93LCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbi8vIDIwMDkgLSBib3gtb3JkaW5hbC1ncm91cCAoaW50ZWdlcilcbi8vIDIwMTEgLSBmbGV4LW9yZGVyIChpbnRlZ2VyKVxuLy8gMjAxMiAtIG9yZGVyIChpbnRlZ2VyKVxuQG1peGluIG9yZGVyKCRpbnQ6IDApIHtcbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKG9yZGVyLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1vcmRlcjogJGludDtcbn1cblxuLy8gMjAxMiAtIGZsZXgtZ3JvdyAobnVtYmVyKVxuQG1peGluIGZsZXgtZ3JvdygkbnVtYmVyOiAwKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtZ3JvdywgJG51bWJlciwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcG9zaXRpdmU6ICRudW1iZXI7XG59XG5cbi8vIDIwMTIgLSBmbGV4LXNocmluayAobnVtYmVyKVxuQG1peGluIGZsZXgtc2hyaW5rKCRudW1iZXI6IDEpIHtcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtYmFzaXMsICR3aWR0aCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtcHJlZmVycmVkLXNpemU6ICR3aWR0aDtcbn1cblxuLy8gMjAwOSAtIGJveC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDExIC0gZmxleC1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkpXG4vLyAyMDEyIC0ganVzdGlmeS1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kKVxuQG1peGluIGp1c3RpZnktY29udGVudCgkdmFsdWU6IGZsZXgtc3RhcnQpIHtcblxuICAvLyBBbHQgdmFsdWVzLlxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICRhbHQtdmFsdWU6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGVuZDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1iZXR3ZWVuXCIge1xuICAgICRhbHQtdmFsdWU6IGp1c3RpZnk7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYXJvdW5kXCIge1xuICAgICRhbHQtdmFsdWU6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1wYWNrLCAkYWx0LXZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoanVzdGlmeS1jb250ZW50LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtcGFjazogJGFsdC12YWx1ZTtcbn1cblxuLy8gMjAwOSAtIGJveC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDExIC0gZmxleC1hbGlnbiAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24taXRlbXMgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1pdGVtcygkdmFsdWU6IHN0cmV0Y2gpIHtcblxuICAkYWx0LXZhbHVlOiAkdmFsdWU7XG5cbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9XG5cbiAgLy8gMjAwOVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1pdGVtcywgJHZhbHVlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWFsaWduOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDExIC0gZmxleC1pdGVtLWFsaWduIChhdXRvIHwgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2gpXG4vLyAyMDEyIC0gYWxpZ24tc2VsZiAoYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1zZWxmKCR2YWx1ZTogYXV0bykge1xuXG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gIEBpZiAkdmFsdWUgPT0gXCJmbGV4LXN0YXJ0XCIge1xuICAgICR2YWx1ZS0yMDExOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkdmFsdWUtMjAxMTogZW5kO1xuICB9XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihhbGlnbi1zZWxmLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApXG4gIC1tcy1mbGV4LWl0ZW0tYWxpZ246ICR2YWx1ZS0yMDExO1xufVxuXG4vLyAyMDExIC0gZmxleC1saW5lLXBhY2sgKHN0YXJ0IHwgZW5kIHwgY2VudGVyIHwganVzdGlmeSB8IGRpc3RyaWJ1dGUgfCBzdHJldGNoKVxuLy8gMjAxMiAtIGFsaWduLWNvbnRlbnQgKGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWNvbnRlbnQoJHZhbHVlOiBzdHJldGNoKSB7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cbiIsIiAubXktY2hhcnQge1xuICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6IGNhbGMoNTAlIC0gNHB4KTtcbiAgICAgIGJvcmRlci1zaXppbmc6IGJvcmRlci1ib3g7XG4gfVxuXG4gLmNvbnRhaW5lci1jaGFydCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiB9XG5cbiBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5NjBweCkge1xuICAgICAgLm15LWNoYXJ0IHtcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuIH1cbiIsIi5mLWJveCB7XG4gICAgICB3aWR0aDogMzE3cHg7XG4gICAgICBoZWlnaHQ6IDQzMXB4O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNEOUQ5RDk7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAvLyBib3gtc2hhZG93OiAwIDNweCA3cHggcmdiYSgwLDAsMCwwLjIpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG4iLCIuZi1idXR0b24ge1xuICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgcGFkZGluZzogMCAzMnB4O1xuICAgICAgZm9udC1zaXplOiAxZW07XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBjb2xvcjogI2ZhZmFmYTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2QTQ4OUI7XG4gICAgICBib3JkZXI6IDNweCBzb2xpZCAjNkE0ODlCO1xuICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuXG4gICAgICAmOmhvdmVyLCAmOmZvY3VzIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM3RTVEQUY7XG4gICAgICB9XG4gICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGY2N2NhO1xuICAgICAgfVxufVxuZi1idXR0b24uZi1ibG9jayBidXR0b24ge1xuICAgICAgd2lkdGg6IDEwMCU7XG59XG5cbi5mLWJ1dHRvbltkaXNhYmxlZF0ge1xuICAgICAgY29sb3I6IHJnYmEoMjMwLCAyMzAsIDIzMCwgMC43OSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDE1MSwgMTQwLCAxNjYsIDAuNjcpO1xuICAgICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG59XG5cbi5mLWJ1dHRvbi1saWdodCB7XG4gICAgICBjb2xvcjogIzk5OTtcbiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICNEOUQ5RDk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xuICAgICAgfVxuICAgICAgJjphY3RpdmUge1xuXG4gICAgICB9XG59XG4iLCIuZi1zZXBhcmF0b3Ige1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHdpZHRoOiAyNzVweDtcbiAgICAgIGhlaWdodDogNHB4O1xuXG4gICAgICAuZi1zZXBhcmF0b3ItYmx1ZS0xIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogMTY0cHg7XG4gICAgICAgICAgICBoZWlnaHQ6IDBweDtcbiAgICAgICAgICAgIGJvcmRlci10b3A6IDRweCBzb2xpZCAjNTlDNUQ1O1xuICAgICAgfVxuXG4gICAgICAuZi1zZXBhcmF0b3ItYmx1ZS0yIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGxlZnQ6IDEwMHB4O1xuICAgICAgICAgICAgd2lkdGg6IDEyOHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiAwcHg7XG4gICAgICAgICAgICBib3JkZXItdG9wOiA0cHggc29saWQgIzM5OEJDMjtcbiAgICAgIH1cblxuICAgICAgLmYtc2VwYXJhdG9yLXB1cnBsZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiAyMDBweDtcbiAgICAgICAgICAgIHdpZHRoOiAxMjJweDtcbiAgICAgICAgICAgIGhlaWdodDogMHB4O1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICM2QTQ4OUI7XG4gICAgICB9XG59XG4iLCIuZi1pbnB1dCB7XG4gIGhlaWdodDogNDZweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZm9udC1zaXplOiAxMnB0O1xuICBsaW5lLWhlaWdodDogMTdweDtcbiAgY29sb3I6ICM4ODg4ODg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgcGFkZGluZy1yaWdodDogMjBweDtcbiAgcGFkZGluZy1sZWZ0OiAyMHB4O1xuICBvdXRsaW5lOiBub25lO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICBtaW4td2lkdGg6IDBcblxuICAmOmZvY3VzIHtcbiAgICBib3JkZXItY29sb3I6ICM1OWM1ZDU7XG4gIH1cblxuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogI2M5YzljOTtcbiAgfVxufVxuZi1pbnB1dC5mLWJsb2NrIC5mLWlucHV0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuXG59XG5cbi5mLWlucHV0LWJvcmRlcmxlc3Mge1xuICAuZi1pbnB1dCB7XG4gICAgYm9yZGVyOiAwcHg7XG4gIH1cbn1cblxuLmYtaW5wdXQtbm8tcGFkZGluZyB7XG4gIC5mLWlucHV0IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuLmYtaW5wdXQtbm8tbGVmdC1wYWRkaW5nIHtcbiAgLmYtaW5wdXQge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */

/*# sourceMappingURL=../maps/styles/app-9d76573353.css.map */
