@charset "UTF-8";
/* ==========================================================================
   MAIN.SCSS
   ========================================================================== */
/**
 *
 * MAIN.CSS & MAIN.MIN.CSS are compiled using the imports from this file.
 *
 * To add new styles and components, import them in the appropriate sections below.
 *
 */
/* ==========================================================================
   HELPERS/_VARIABLES.SCSS
   ========================================================================== */
/* ==========================================================================
   HELPERS/_MIXINS.SCSS
   ========================================================================== */
/* ==========================================================================
   HELPERS/_RESET.SCSS
   ========================================================================== */
/* Border-Box http:/paulirish.com/2012/box-sizing-border-box-ftw/ */
@import url("//hello.myfonts.net/count/34a758");
@import url("//hello.myfonts.net/count/34aa7c");
@import url("//hello.myfonts.net/count/34d0e0");
* {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

html, body, div, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, ol, ul, li, form, legend, label, table, header, footer, nav, section, figure {
  margin: 0;
  padding: 0;
}

header, footer, nav, section, article, hgroup, figure {
  display: block;
}

sub, sup {
  /* Specified in % so that the sup/sup is the
     right size relative to the surrounding text */
  font-size: 75%;
  /* Zero out the line-height so that it doesn't
     interfere with the positioning that follows */
  line-height: 0;
  /* Where the magic happens: makes all browsers position
     the sup/sup properly, relative to the surrounding text */
  position: relative;
  /* Note that if you're using Eric Meyer's reset.css, this
     is already set and you can remove this rule */
  vertical-align: baseline;
}

sup {
  /* Move the superscripted text up */
  top: -0.5em;
}

sub {
  /* Move the subscripted text down, but only
     half as far down as the superscript moved up */
  bottom: -0.25em;
}

/*!
 * animate.css -http://daneden.me/animate
 * Version - 3.5.2
 * Licensed under the MIT license - http://opensource.org/licenses/MIT
 *
 * Copyright (c) 2017 Daniel Eden
 */
.animated {
  -webkit-animation-duration: 1s;
          animation-duration: 1s;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
}

.animated.infinite {
  -webkit-animation-iteration-count: infinite;
          animation-iteration-count: infinite;
}

.animated.hinge {
  -webkit-animation-duration: 2s;
          animation-duration: 2s;
}

.animated.flipOutX,
.animated.flipOutY,
.animated.bounceIn,
.animated.bounceOut {
  -webkit-animation-duration: .75s;
          animation-duration: .75s;
}

@-webkit-keyframes bounce {
  from, 20%, 53%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  40%, 43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
            animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -30px, 0);
            transform: translate3d(0, -30px, 0);
  }
  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
            animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -15px, 0);
            transform: translate3d(0, -15px, 0);
  }
  90% {
    -webkit-transform: translate3d(0, -4px, 0);
            transform: translate3d(0, -4px, 0);
  }
}

@keyframes bounce {
  from, 20%, 53%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  40%, 43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
            animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -30px, 0);
            transform: translate3d(0, -30px, 0);
  }
  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
            animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
    -webkit-transform: translate3d(0, -15px, 0);
            transform: translate3d(0, -15px, 0);
  }
  90% {
    -webkit-transform: translate3d(0, -4px, 0);
            transform: translate3d(0, -4px, 0);
  }
}
.bounce {
  -webkit-animation-name: bounce;
          animation-name: bounce;
  -webkit-transform-origin: center bottom;
      -ms-transform-origin: center bottom;
          transform-origin: center bottom;
}

@-webkit-keyframes flash {
  from, 50%, to {
    opacity: 1;
  }
  25%, 75% {
    opacity: 0;
  }
}

@keyframes flash {
  from, 50%, to {
    opacity: 1;
  }
  25%, 75% {
    opacity: 0;
  }
}
.flash {
  -webkit-animation-name: flash;
          animation-name: flash;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes pulse {
  from {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
  50% {
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
            transform: scale3d(1.05, 1.05, 1.05);
  }
  to {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}
@keyframes pulse {
  from {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
  50% {
    -webkit-transform: scale3d(1.05, 1.05, 1.05);
            transform: scale3d(1.05, 1.05, 1.05);
  }
  to {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}
.pulse {
  -webkit-animation-name: pulse;
          animation-name: pulse;
}

@-webkit-keyframes rubberBand {
  from {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
  30% {
    -webkit-transform: scale3d(1.25, 0.75, 1);
            transform: scale3d(1.25, 0.75, 1);
  }
  40% {
    -webkit-transform: scale3d(0.75, 1.25, 1);
            transform: scale3d(0.75, 1.25, 1);
  }
  50% {
    -webkit-transform: scale3d(1.15, 0.85, 1);
            transform: scale3d(1.15, 0.85, 1);
  }
  65% {
    -webkit-transform: scale3d(0.95, 1.05, 1);
            transform: scale3d(0.95, 1.05, 1);
  }
  75% {
    -webkit-transform: scale3d(1.05, 0.95, 1);
            transform: scale3d(1.05, 0.95, 1);
  }
  to {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}

@keyframes rubberBand {
  from {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
  30% {
    -webkit-transform: scale3d(1.25, 0.75, 1);
            transform: scale3d(1.25, 0.75, 1);
  }
  40% {
    -webkit-transform: scale3d(0.75, 1.25, 1);
            transform: scale3d(0.75, 1.25, 1);
  }
  50% {
    -webkit-transform: scale3d(1.15, 0.85, 1);
            transform: scale3d(1.15, 0.85, 1);
  }
  65% {
    -webkit-transform: scale3d(0.95, 1.05, 1);
            transform: scale3d(0.95, 1.05, 1);
  }
  75% {
    -webkit-transform: scale3d(1.05, 0.95, 1);
            transform: scale3d(1.05, 0.95, 1);
  }
  to {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}
.rubberBand {
  -webkit-animation-name: rubberBand;
          animation-name: rubberBand;
}

@-webkit-keyframes shake {
  from, to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  10%, 30%, 50%, 70%, 90% {
    -webkit-transform: translate3d(-10px, 0, 0);
            transform: translate3d(-10px, 0, 0);
  }
  20%, 40%, 60%, 80% {
    -webkit-transform: translate3d(10px, 0, 0);
            transform: translate3d(10px, 0, 0);
  }
}

@keyframes shake {
  from, to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  10%, 30%, 50%, 70%, 90% {
    -webkit-transform: translate3d(-10px, 0, 0);
            transform: translate3d(-10px, 0, 0);
  }
  20%, 40%, 60%, 80% {
    -webkit-transform: translate3d(10px, 0, 0);
            transform: translate3d(10px, 0, 0);
  }
}
.shake {
  -webkit-animation-name: shake;
          animation-name: shake;
}

@-webkit-keyframes headShake {
  0% {
    -webkit-transform: translateX(0);
            transform: translateX(0);
  }
  6.5% {
    -webkit-transform: translateX(-6px) rotateY(-9deg);
            transform: translateX(-6px) rotateY(-9deg);
  }
  18.5% {
    -webkit-transform: translateX(5px) rotateY(7deg);
            transform: translateX(5px) rotateY(7deg);
  }
  31.5% {
    -webkit-transform: translateX(-3px) rotateY(-5deg);
            transform: translateX(-3px) rotateY(-5deg);
  }
  43.5% {
    -webkit-transform: translateX(2px) rotateY(3deg);
            transform: translateX(2px) rotateY(3deg);
  }
  50% {
    -webkit-transform: translateX(0);
            transform: translateX(0);
  }
}

@keyframes headShake {
  0% {
    -webkit-transform: translateX(0);
            transform: translateX(0);
  }
  6.5% {
    -webkit-transform: translateX(-6px) rotateY(-9deg);
            transform: translateX(-6px) rotateY(-9deg);
  }
  18.5% {
    -webkit-transform: translateX(5px) rotateY(7deg);
            transform: translateX(5px) rotateY(7deg);
  }
  31.5% {
    -webkit-transform: translateX(-3px) rotateY(-5deg);
            transform: translateX(-3px) rotateY(-5deg);
  }
  43.5% {
    -webkit-transform: translateX(2px) rotateY(3deg);
            transform: translateX(2px) rotateY(3deg);
  }
  50% {
    -webkit-transform: translateX(0);
            transform: translateX(0);
  }
}
.headShake {
  -webkit-animation-timing-function: ease-in-out;
          animation-timing-function: ease-in-out;
  -webkit-animation-name: headShake;
          animation-name: headShake;
}

@-webkit-keyframes swing {
  20% {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
            transform: rotate3d(0, 0, 1, 15deg);
  }
  40% {
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
            transform: rotate3d(0, 0, 1, -10deg);
  }
  60% {
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
            transform: rotate3d(0, 0, 1, 5deg);
  }
  80% {
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
            transform: rotate3d(0, 0, 1, -5deg);
  }
  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
            transform: rotate3d(0, 0, 1, 0deg);
  }
}

@keyframes swing {
  20% {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
            transform: rotate3d(0, 0, 1, 15deg);
  }
  40% {
    -webkit-transform: rotate3d(0, 0, 1, -10deg);
            transform: rotate3d(0, 0, 1, -10deg);
  }
  60% {
    -webkit-transform: rotate3d(0, 0, 1, 5deg);
            transform: rotate3d(0, 0, 1, 5deg);
  }
  80% {
    -webkit-transform: rotate3d(0, 0, 1, -5deg);
            transform: rotate3d(0, 0, 1, -5deg);
  }
  to {
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
            transform: rotate3d(0, 0, 1, 0deg);
  }
}
.swing {
  -webkit-transform-origin: top center;
      -ms-transform-origin: top center;
          transform-origin: top center;
  -webkit-animation-name: swing;
          animation-name: swing;
}

@-webkit-keyframes tada {
  from {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
  10%, 20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
            transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
  }
  30%, 50%, 70%, 90% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }
  40%, 60%, 80% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }
  to {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}

@keyframes tada {
  from {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
  10%, 20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
            transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
  }
  30%, 50%, 70%, 90% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
  }
  40%, 60%, 80% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
            transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
  }
  to {
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}
.tada {
  -webkit-animation-name: tada;
          animation-name: tada;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes wobble {
  from {
    -webkit-transform: none;
            transform: none;
  }
  15% {
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
            transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  }
  30% {
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
            transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  }
  45% {
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
            transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  }
  60% {
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
            transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  }
  75% {
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
            transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}
@keyframes wobble {
  from {
    -webkit-transform: none;
            transform: none;
  }
  15% {
    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
            transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
  }
  30% {
    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
            transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
  }
  45% {
    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
            transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
  }
  60% {
    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
            transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
  }
  75% {
    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
            transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}
.wobble {
  -webkit-animation-name: wobble;
          animation-name: wobble;
}

@-webkit-keyframes jello {
  from, 11.1%, to {
    -webkit-transform: none;
            transform: none;
  }
  22.2% {
    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
            transform: skewX(-12.5deg) skewY(-12.5deg);
  }
  33.3% {
    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
            transform: skewX(6.25deg) skewY(6.25deg);
  }
  44.4% {
    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
            transform: skewX(-3.125deg) skewY(-3.125deg);
  }
  55.5% {
    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
            transform: skewX(1.5625deg) skewY(1.5625deg);
  }
  66.6% {
    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
            transform: skewX(-0.78125deg) skewY(-0.78125deg);
  }
  77.7% {
    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
            transform: skewX(0.390625deg) skewY(0.390625deg);
  }
  88.8% {
    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
            transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
  }
}

@keyframes jello {
  from, 11.1%, to {
    -webkit-transform: none;
            transform: none;
  }
  22.2% {
    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
            transform: skewX(-12.5deg) skewY(-12.5deg);
  }
  33.3% {
    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
            transform: skewX(6.25deg) skewY(6.25deg);
  }
  44.4% {
    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
            transform: skewX(-3.125deg) skewY(-3.125deg);
  }
  55.5% {
    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
            transform: skewX(1.5625deg) skewY(1.5625deg);
  }
  66.6% {
    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
            transform: skewX(-0.78125deg) skewY(-0.78125deg);
  }
  77.7% {
    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
            transform: skewX(0.390625deg) skewY(0.390625deg);
  }
  88.8% {
    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
            transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
  }
}
.jello {
  -webkit-animation-name: jello;
          animation-name: jello;
  -webkit-transform-origin: center;
      -ms-transform-origin: center;
          transform-origin: center;
}

@-webkit-keyframes bounceIn {
  from, 20%, 40%, 60%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
            transform: scale3d(1.1, 1.1, 1.1);
  }
  40% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
            transform: scale3d(0.9, 0.9, 0.9);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
            transform: scale3d(1.03, 1.03, 1.03);
  }
  80% {
    -webkit-transform: scale3d(0.97, 0.97, 0.97);
            transform: scale3d(0.97, 0.97, 0.97);
  }
  to {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}

@keyframes bounceIn {
  from, 20%, 40%, 60%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
  20% {
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
            transform: scale3d(1.1, 1.1, 1.1);
  }
  40% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
            transform: scale3d(0.9, 0.9, 0.9);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(1.03, 1.03, 1.03);
            transform: scale3d(1.03, 1.03, 1.03);
  }
  80% {
    -webkit-transform: scale3d(0.97, 0.97, 0.97);
            transform: scale3d(0.97, 0.97, 0.97);
  }
  to {
    opacity: 1;
    -webkit-transform: scale3d(1, 1, 1);
            transform: scale3d(1, 1, 1);
  }
}
.bounceIn {
  -webkit-animation-name: bounceIn;
          animation-name: bounceIn;
}

@-webkit-keyframes bounceInDown {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, -3000px, 0);
            transform: translate3d(0, -3000px, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, 25px, 0);
            transform: translate3d(0, 25px, 0);
  }
  75% {
    -webkit-transform: translate3d(0, -10px, 0);
            transform: translate3d(0, -10px, 0);
  }
  90% {
    -webkit-transform: translate3d(0, 5px, 0);
            transform: translate3d(0, 5px, 0);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes bounceInDown {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: translate3d(0, -3000px, 0);
            transform: translate3d(0, -3000px, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, 25px, 0);
            transform: translate3d(0, 25px, 0);
  }
  75% {
    -webkit-transform: translate3d(0, -10px, 0);
            transform: translate3d(0, -10px, 0);
  }
  90% {
    -webkit-transform: translate3d(0, 5px, 0);
            transform: translate3d(0, 5px, 0);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}
.bounceInDown {
  -webkit-animation-name: bounceInDown;
          animation-name: bounceInDown;
}

@-webkit-keyframes bounceInLeft {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: translate3d(-3000px, 0, 0);
            transform: translate3d(-3000px, 0, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(25px, 0, 0);
            transform: translate3d(25px, 0, 0);
  }
  75% {
    -webkit-transform: translate3d(-10px, 0, 0);
            transform: translate3d(-10px, 0, 0);
  }
  90% {
    -webkit-transform: translate3d(5px, 0, 0);
            transform: translate3d(5px, 0, 0);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes bounceInLeft {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  0% {
    opacity: 0;
    -webkit-transform: translate3d(-3000px, 0, 0);
            transform: translate3d(-3000px, 0, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(25px, 0, 0);
            transform: translate3d(25px, 0, 0);
  }
  75% {
    -webkit-transform: translate3d(-10px, 0, 0);
            transform: translate3d(-10px, 0, 0);
  }
  90% {
    -webkit-transform: translate3d(5px, 0, 0);
            transform: translate3d(5px, 0, 0);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}
.bounceInLeft {
  -webkit-animation-name: bounceInLeft;
          animation-name: bounceInLeft;
}

@-webkit-keyframes bounceInRight {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
            transform: translate3d(3000px, 0, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
            transform: translate3d(-25px, 0, 0);
  }
  75% {
    -webkit-transform: translate3d(10px, 0, 0);
            transform: translate3d(10px, 0, 0);
  }
  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
            transform: translate3d(-5px, 0, 0);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes bounceInRight {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  from {
    opacity: 0;
    -webkit-transform: translate3d(3000px, 0, 0);
            transform: translate3d(3000px, 0, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(-25px, 0, 0);
            transform: translate3d(-25px, 0, 0);
  }
  75% {
    -webkit-transform: translate3d(10px, 0, 0);
            transform: translate3d(10px, 0, 0);
  }
  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
            transform: translate3d(-5px, 0, 0);
  }
  to {
    -webkit-transform: none;
            transform: none;
  }
}
.bounceInRight {
  -webkit-animation-name: bounceInRight;
          animation-name: bounceInRight;
}

@-webkit-keyframes bounceInUp {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 3000px, 0);
            transform: translate3d(0, 3000px, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
            transform: translate3d(0, -20px, 0);
  }
  75% {
    -webkit-transform: translate3d(0, 10px, 0);
            transform: translate3d(0, 10px, 0);
  }
  90% {
    -webkit-transform: translate3d(0, -5px, 0);
            transform: translate3d(0, -5px, 0);
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}

@keyframes bounceInUp {
  from, 60%, 75%, 90%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
            animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
  }
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 3000px, 0);
            transform: translate3d(0, 3000px, 0);
  }
  60% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
            transform: translate3d(0, -20px, 0);
  }
  75% {
    -webkit-transform: translate3d(0, 10px, 0);
            transform: translate3d(0, 10px, 0);
  }
  90% {
    -webkit-transform: translate3d(0, -5px, 0);
            transform: translate3d(0, -5px, 0);
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}
.bounceInUp {
  -webkit-animation-name: bounceInUp;
          animation-name: bounceInUp;
}

@-webkit-keyframes bounceOut {
  20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
            transform: scale3d(0.9, 0.9, 0.9);
  }
  50%, 55% {
    opacity: 1;
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
            transform: scale3d(1.1, 1.1, 1.1);
  }
  to {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
}

@keyframes bounceOut {
  20% {
    -webkit-transform: scale3d(0.9, 0.9, 0.9);
            transform: scale3d(0.9, 0.9, 0.9);
  }
  50%, 55% {
    opacity: 1;
    -webkit-transform: scale3d(1.1, 1.1, 1.1);
            transform: scale3d(1.1, 1.1, 1.1);
  }
  to {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
}
.bounceOut {
  -webkit-animation-name: bounceOut;
          animation-name: bounceOut;
}

@-webkit-keyframes bounceOutDown {
  20% {
    -webkit-transform: translate3d(0, 10px, 0);
            transform: translate3d(0, 10px, 0);
  }
  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
            transform: translate3d(0, -20px, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
            transform: translate3d(0, 2000px, 0);
  }
}

@keyframes bounceOutDown {
  20% {
    -webkit-transform: translate3d(0, 10px, 0);
            transform: translate3d(0, 10px, 0);
  }
  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, -20px, 0);
            transform: translate3d(0, -20px, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
            transform: translate3d(0, 2000px, 0);
  }
}
.bounceOutDown {
  -webkit-animation-name: bounceOutDown;
          animation-name: bounceOutDown;
}

@-webkit-keyframes bounceOutLeft {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(20px, 0, 0);
            transform: translate3d(20px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
            transform: translate3d(-2000px, 0, 0);
  }
}

@keyframes bounceOutLeft {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(20px, 0, 0);
            transform: translate3d(20px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
            transform: translate3d(-2000px, 0, 0);
  }
}
.bounceOutLeft {
  -webkit-animation-name: bounceOutLeft;
          animation-name: bounceOutLeft;
}

@-webkit-keyframes bounceOutRight {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(-20px, 0, 0);
            transform: translate3d(-20px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
            transform: translate3d(2000px, 0, 0);
  }
}

@keyframes bounceOutRight {
  20% {
    opacity: 1;
    -webkit-transform: translate3d(-20px, 0, 0);
            transform: translate3d(-20px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
            transform: translate3d(2000px, 0, 0);
  }
}
.bounceOutRight {
  -webkit-animation-name: bounceOutRight;
          animation-name: bounceOutRight;
}

@-webkit-keyframes bounceOutUp {
  20% {
    -webkit-transform: translate3d(0, -10px, 0);
            transform: translate3d(0, -10px, 0);
  }
  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, 20px, 0);
            transform: translate3d(0, 20px, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
            transform: translate3d(0, -2000px, 0);
  }
}

@keyframes bounceOutUp {
  20% {
    -webkit-transform: translate3d(0, -10px, 0);
            transform: translate3d(0, -10px, 0);
  }
  40%, 45% {
    opacity: 1;
    -webkit-transform: translate3d(0, 20px, 0);
            transform: translate3d(0, 20px, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
            transform: translate3d(0, -2000px, 0);
  }
}
.bounceOutUp {
  -webkit-animation-name: bounceOutUp;
          animation-name: bounceOutUp;
}

@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.fadeIn {
  -webkit-animation-name: fadeIn;
          animation-name: fadeIn;
}

@-webkit-keyframes fadeInDown {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInDown {
  -webkit-animation-name: fadeInDown;
          animation-name: fadeInDown;
}

@-webkit-keyframes fadeInDownBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
            transform: translate3d(0, -2000px, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInDownBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
            transform: translate3d(0, -2000px, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInDownBig {
  -webkit-animation-name: fadeInDownBig;
          animation-name: fadeInDownBig;
}

@-webkit-keyframes fadeInLeft {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInLeft {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInLeft {
  -webkit-animation-name: fadeInLeft;
          animation-name: fadeInLeft;
}

@-webkit-keyframes fadeInLeftBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
            transform: translate3d(-2000px, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInLeftBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
            transform: translate3d(-2000px, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInLeftBig {
  -webkit-animation-name: fadeInLeftBig;
          animation-name: fadeInLeftBig;
}

@-webkit-keyframes fadeInRight {
  from {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInRight {
  from {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInRight {
  -webkit-animation-name: fadeInRight;
          animation-name: fadeInRight;
}

@-webkit-keyframes fadeInRightBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
            transform: translate3d(2000px, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInRightBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
            transform: translate3d(2000px, 0, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInRightBig {
  -webkit-animation-name: fadeInRightBig;
          animation-name: fadeInRightBig;
}

@-webkit-keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInUp {
  -webkit-animation-name: fadeInUp;
          animation-name: fadeInUp;
}

@-webkit-keyframes fadeInUpBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
            transform: translate3d(0, 2000px, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}

@keyframes fadeInUpBig {
  from {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
            transform: translate3d(0, 2000px, 0);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.fadeInUpBig {
  -webkit-animation-name: fadeInUpBig;
          animation-name: fadeInUpBig;
}

@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

@keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
.fadeOut {
  -webkit-animation-name: fadeOut;
          animation-name: fadeOut;
}

@-webkit-keyframes fadeOutDown {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
}

@keyframes fadeOutDown {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
}
.fadeOutDown {
  -webkit-animation-name: fadeOutDown;
          animation-name: fadeOutDown;
}

@-webkit-keyframes fadeOutDownBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
            transform: translate3d(0, 2000px, 0);
  }
}

@keyframes fadeOutDownBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, 2000px, 0);
            transform: translate3d(0, 2000px, 0);
  }
}
.fadeOutDownBig {
  -webkit-animation-name: fadeOutDownBig;
          animation-name: fadeOutDownBig;
}

@-webkit-keyframes fadeOutLeft {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
  }
}

@keyframes fadeOutLeft {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
  }
}
.fadeOutLeft {
  -webkit-animation-name: fadeOutLeft;
          animation-name: fadeOutLeft;
}

@-webkit-keyframes fadeOutLeftBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
            transform: translate3d(-2000px, 0, 0);
  }
}

@keyframes fadeOutLeftBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(-2000px, 0, 0);
            transform: translate3d(-2000px, 0, 0);
  }
}
.fadeOutLeftBig {
  -webkit-animation-name: fadeOutLeftBig;
          animation-name: fadeOutLeftBig;
}

@-webkit-keyframes fadeOutRight {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
  }
}

@keyframes fadeOutRight {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
  }
}
.fadeOutRight {
  -webkit-animation-name: fadeOutRight;
          animation-name: fadeOutRight;
}

@-webkit-keyframes fadeOutRightBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
            transform: translate3d(2000px, 0, 0);
  }
}

@keyframes fadeOutRightBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(2000px, 0, 0);
            transform: translate3d(2000px, 0, 0);
  }
}
.fadeOutRightBig {
  -webkit-animation-name: fadeOutRightBig;
          animation-name: fadeOutRightBig;
}

@-webkit-keyframes fadeOutUp {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
}

@keyframes fadeOutUp {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
}
.fadeOutUp {
  -webkit-animation-name: fadeOutUp;
          animation-name: fadeOutUp;
}

@-webkit-keyframes fadeOutUpBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
            transform: translate3d(0, -2000px, 0);
  }
}

@keyframes fadeOutUpBig {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(0, -2000px, 0);
            transform: translate3d(0, -2000px, 0);
  }
}
.fadeOutUpBig {
  -webkit-animation-name: fadeOutUpBig;
          animation-name: fadeOutUpBig;
}

@-webkit-keyframes flip {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
    -webkit-animation-timing-function: ease-out;
            animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
    -webkit-animation-timing-function: ease-out;
            animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
            transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  to {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
}

@keyframes flip {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
    -webkit-animation-timing-function: ease-out;
            animation-timing-function: ease-out;
  }
  40% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
    -webkit-animation-timing-function: ease-out;
            animation-timing-function: ease-out;
  }
  50% {
    -webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
            transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  80% {
    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
            transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  to {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
}
.animated.flip {
  -webkit-backface-visibility: visible;
  backface-visibility: visible;
  -webkit-animation-name: flip;
          animation-name: flip;
}

@-webkit-keyframes flipInX {
  from {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  60% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
            transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    opacity: 1;
  }
  80% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
            transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }
  to {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
}

@keyframes flipInX {
  from {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  60% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
            transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
    opacity: 1;
  }
  80% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
            transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
  }
  to {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
}
.flipInX {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipInX;
          animation-name: flipInX;
}

@-webkit-keyframes flipInY {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  60% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
            transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    opacity: 1;
  }
  80% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }
  to {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
}

@keyframes flipInY {
  from {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
    opacity: 0;
  }
  40% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
    -webkit-animation-timing-function: ease-in;
            animation-timing-function: ease-in;
  }
  60% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
            transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
    opacity: 1;
  }
  80% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  }
  to {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
}
.flipInY {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipInY;
          animation-name: flipInY;
}

@-webkit-keyframes flipOutX {
  from {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
  30% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    opacity: 1;
  }
  to {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}

@keyframes flipOutX {
  from {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
  30% {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
            transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
    opacity: 1;
  }
  to {
    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
            transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
    opacity: 0;
  }
}
.flipOutX {
  -webkit-animation-name: flipOutX;
          animation-name: flipOutX;
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
}

@-webkit-keyframes flipOutY {
  from {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
  30% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    opacity: 1;
  }
  to {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    opacity: 0;
  }
}

@keyframes flipOutY {
  from {
    -webkit-transform: perspective(400px);
            transform: perspective(400px);
  }
  30% {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
            transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
    opacity: 1;
  }
  to {
    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
            transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
    opacity: 0;
  }
}
.flipOutY {
  -webkit-backface-visibility: visible !important;
  backface-visibility: visible !important;
  -webkit-animation-name: flipOutY;
          animation-name: flipOutY;
}

@-webkit-keyframes lightSpeedIn {
  from {
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
            transform: translate3d(100%, 0, 0) skewX(-30deg);
    opacity: 0;
  }
  60% {
    -webkit-transform: skewX(20deg);
            transform: skewX(20deg);
    opacity: 1;
  }
  80% {
    -webkit-transform: skewX(-5deg);
            transform: skewX(-5deg);
    opacity: 1;
  }
  to {
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}

@keyframes lightSpeedIn {
  from {
    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
            transform: translate3d(100%, 0, 0) skewX(-30deg);
    opacity: 0;
  }
  60% {
    -webkit-transform: skewX(20deg);
            transform: skewX(20deg);
    opacity: 1;
  }
  80% {
    -webkit-transform: skewX(-5deg);
            transform: skewX(-5deg);
    opacity: 1;
  }
  to {
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}
.lightSpeedIn {
  -webkit-animation-name: lightSpeedIn;
          animation-name: lightSpeedIn;
  -webkit-animation-timing-function: ease-out;
          animation-timing-function: ease-out;
}

@-webkit-keyframes lightSpeedOut {
  from {
    opacity: 1;
  }
  to {
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
            transform: translate3d(100%, 0, 0) skewX(30deg);
    opacity: 0;
  }
}

@keyframes lightSpeedOut {
  from {
    opacity: 1;
  }
  to {
    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
            transform: translate3d(100%, 0, 0) skewX(30deg);
    opacity: 0;
  }
}
.lightSpeedOut {
  -webkit-animation-name: lightSpeedOut;
          animation-name: lightSpeedOut;
  -webkit-animation-timing-function: ease-in;
          animation-timing-function: ease-in;
}

@-webkit-keyframes rotateIn {
  from {
    -webkit-transform-origin: center;
            transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: center;
            transform-origin: center;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}

@keyframes rotateIn {
  from {
    -webkit-transform-origin: center;
            transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, -200deg);
            transform: rotate3d(0, 0, 1, -200deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: center;
            transform-origin: center;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}
.rotateIn {
  -webkit-animation-name: rotateIn;
          animation-name: rotateIn;
}

@-webkit-keyframes rotateInDownLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
            transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}

@keyframes rotateInDownLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
            transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}
.rotateInDownLeft {
  -webkit-animation-name: rotateInDownLeft;
          animation-name: rotateInDownLeft;
}

@-webkit-keyframes rotateInDownRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
            transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}

@keyframes rotateInDownRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
            transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}
.rotateInDownRight {
  -webkit-animation-name: rotateInDownRight;
          animation-name: rotateInDownRight;
}

@-webkit-keyframes rotateInUpLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
            transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}

@keyframes rotateInUpLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
            transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}
.rotateInUpLeft {
  -webkit-animation-name: rotateInUpLeft;
          animation-name: rotateInUpLeft;
}

@-webkit-keyframes rotateInUpRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
            transform: rotate3d(0, 0, 1, -90deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}

@keyframes rotateInUpRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -90deg);
            transform: rotate3d(0, 0, 1, -90deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: none;
            transform: none;
    opacity: 1;
  }
}
.rotateInUpRight {
  -webkit-animation-name: rotateInUpRight;
          animation-name: rotateInUpRight;
}

@-webkit-keyframes rotateOut {
  from {
    -webkit-transform-origin: center;
            transform-origin: center;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: center;
            transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
            transform: rotate3d(0, 0, 1, 200deg);
    opacity: 0;
  }
}

@keyframes rotateOut {
  from {
    -webkit-transform-origin: center;
            transform-origin: center;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: center;
            transform-origin: center;
    -webkit-transform: rotate3d(0, 0, 1, 200deg);
            transform: rotate3d(0, 0, 1, 200deg);
    opacity: 0;
  }
}
.rotateOut {
  -webkit-animation-name: rotateOut;
          animation-name: rotateOut;
}

@-webkit-keyframes rotateOutDownLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
            transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, 45deg);
            transform: rotate3d(0, 0, 1, 45deg);
    opacity: 0;
  }
}
.rotateOutDownLeft {
  -webkit-animation-name: rotateOutDownLeft;
          animation-name: rotateOutDownLeft;
}

@-webkit-keyframes rotateOutDownRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
            transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

@keyframes rotateOutDownRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
            transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}
.rotateOutDownRight {
  -webkit-animation-name: rotateOutDownRight;
          animation-name: rotateOutDownRight;
}

@-webkit-keyframes rotateOutUpLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
            transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpLeft {
  from {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: left bottom;
            transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
            transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
}
.rotateOutUpLeft {
  -webkit-animation-name: rotateOutUpLeft;
          animation-name: rotateOutUpLeft;
}

@-webkit-keyframes rotateOutUpRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
            transform: rotate3d(0, 0, 1, 90deg);
    opacity: 0;
  }
}

@keyframes rotateOutUpRight {
  from {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    opacity: 1;
  }
  to {
    -webkit-transform-origin: right bottom;
            transform-origin: right bottom;
    -webkit-transform: rotate3d(0, 0, 1, 90deg);
            transform: rotate3d(0, 0, 1, 90deg);
    opacity: 0;
  }
}
.rotateOutUpRight {
  -webkit-animation-name: rotateOutUpRight;
          animation-name: rotateOutUpRight;
}

@-webkit-keyframes hinge {
  0% {
    -webkit-transform-origin: top left;
            transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
            animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
            transform: rotate3d(0, 0, 1, 80deg);
    -webkit-transform-origin: top left;
            transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
            animation-timing-function: ease-in-out;
  }
  40%, 80% {
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
            transform: rotate3d(0, 0, 1, 60deg);
    -webkit-transform-origin: top left;
            transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
            animation-timing-function: ease-in-out;
    opacity: 1;
  }
  to {
    -webkit-transform: translate3d(0, 700px, 0);
            transform: translate3d(0, 700px, 0);
    opacity: 0;
  }
}

@keyframes hinge {
  0% {
    -webkit-transform-origin: top left;
            transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
            animation-timing-function: ease-in-out;
  }
  20%, 60% {
    -webkit-transform: rotate3d(0, 0, 1, 80deg);
            transform: rotate3d(0, 0, 1, 80deg);
    -webkit-transform-origin: top left;
            transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
            animation-timing-function: ease-in-out;
  }
  40%, 80% {
    -webkit-transform: rotate3d(0, 0, 1, 60deg);
            transform: rotate3d(0, 0, 1, 60deg);
    -webkit-transform-origin: top left;
            transform-origin: top left;
    -webkit-animation-timing-function: ease-in-out;
            animation-timing-function: ease-in-out;
    opacity: 1;
  }
  to {
    -webkit-transform: translate3d(0, 700px, 0);
            transform: translate3d(0, 700px, 0);
    opacity: 0;
  }
}
.hinge {
  -webkit-animation-name: hinge;
          animation-name: hinge;
}

@-webkit-keyframes jackInTheBox {
  from {
    opacity: 0;
    -webkit-transform: scale(0.1) rotate(30deg);
            transform: scale(0.1) rotate(30deg);
    -webkit-transform-origin: center bottom;
            transform-origin: center bottom;
  }
  50% {
    -webkit-transform: rotate(-10deg);
            transform: rotate(-10deg);
  }
  70% {
    -webkit-transform: rotate(3deg);
            transform: rotate(3deg);
  }
  to {
    opacity: 1;
    -webkit-transform: scale(1);
            transform: scale(1);
  }
}

@keyframes jackInTheBox {
  from {
    opacity: 0;
    -webkit-transform: scale(0.1) rotate(30deg);
            transform: scale(0.1) rotate(30deg);
    -webkit-transform-origin: center bottom;
            transform-origin: center bottom;
  }
  50% {
    -webkit-transform: rotate(-10deg);
            transform: rotate(-10deg);
  }
  70% {
    -webkit-transform: rotate(3deg);
            transform: rotate(3deg);
  }
  to {
    opacity: 1;
    -webkit-transform: scale(1);
            transform: scale(1);
  }
}
.jackInTheBox {
  -webkit-animation-name: jackInTheBox;
          animation-name: jackInTheBox;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes rollIn {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
            transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
@keyframes rollIn {
  from {
    opacity: 0;
    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
            transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
            transform: none;
  }
}
.rollIn {
  -webkit-animation-name: rollIn;
          animation-name: rollIn;
}

/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes rollOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
            transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  }
}
@keyframes rollOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
            transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
  }
}
.rollOut {
  -webkit-animation-name: rollOut;
          animation-name: rollOut;
}

@-webkit-keyframes zoomIn {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
  50% {
    opacity: 1;
  }
}

@keyframes zoomIn {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
  50% {
    opacity: 1;
  }
}
.zoomIn {
  -webkit-animation-name: zoomIn;
          animation-name: zoomIn;
}

@-webkit-keyframes zoomInDown {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInDown {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInDown {
  -webkit-animation-name: zoomInDown;
          animation-name: zoomInDown;
}

@-webkit-keyframes zoomInLeft {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInLeft {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInLeft {
  -webkit-animation-name: zoomInLeft;
          animation-name: zoomInLeft;
}

@-webkit-keyframes zoomInRight {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInRight {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInRight {
  -webkit-animation-name: zoomInRight;
          animation-name: zoomInRight;
}

@-webkit-keyframes zoomInUp {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomInUp {
  from {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  60% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomInUp {
  -webkit-animation-name: zoomInUp;
          animation-name: zoomInUp;
}

@-webkit-keyframes zoomOut {
  from {
    opacity: 1;
  }
  50% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
  to {
    opacity: 0;
  }
}

@keyframes zoomOut {
  from {
    opacity: 1;
  }
  50% {
    opacity: 0;
    -webkit-transform: scale3d(0.3, 0.3, 0.3);
            transform: scale3d(0.3, 0.3, 0.3);
  }
  to {
    opacity: 0;
  }
}
.zoomOut {
  -webkit-animation-name: zoomOut;
          animation-name: zoomOut;
}

@-webkit-keyframes zoomOutDown {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
    -webkit-transform-origin: center bottom;
            transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomOutDown {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
    -webkit-transform-origin: center bottom;
            transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomOutDown {
  -webkit-animation-name: zoomOutDown;
          animation-name: zoomOutDown;
}

@-webkit-keyframes zoomOutLeft {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
            transform: scale(0.1) translate3d(-2000px, 0, 0);
    -webkit-transform-origin: left center;
            transform-origin: left center;
  }
}

@keyframes zoomOutLeft {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
            transform: scale(0.1) translate3d(-2000px, 0, 0);
    -webkit-transform-origin: left center;
            transform-origin: left center;
  }
}
.zoomOutLeft {
  -webkit-animation-name: zoomOutLeft;
          animation-name: zoomOutLeft;
}

@-webkit-keyframes zoomOutRight {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
            transform: scale(0.1) translate3d(2000px, 0, 0);
    -webkit-transform-origin: right center;
            transform-origin: right center;
  }
}

@keyframes zoomOutRight {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
  }
  to {
    opacity: 0;
    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
            transform: scale(0.1) translate3d(2000px, 0, 0);
    -webkit-transform-origin: right center;
            transform-origin: right center;
  }
}
.zoomOutRight {
  -webkit-animation-name: zoomOutRight;
          animation-name: zoomOutRight;
}

@-webkit-keyframes zoomOutUp {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
    -webkit-transform-origin: center bottom;
            transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}

@keyframes zoomOutUp {
  40% {
    opacity: 1;
    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
            transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
            animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
  }
  to {
    opacity: 0;
    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
            transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
    -webkit-transform-origin: center bottom;
            transform-origin: center bottom;
    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
            animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
  }
}
.zoomOutUp {
  -webkit-animation-name: zoomOutUp;
          animation-name: zoomOutUp;
}

@-webkit-keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInDown {
  from {
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}
.slideInDown {
  -webkit-animation-name: slideInDown;
          animation-name: slideInDown;
}

@-webkit-keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInLeft {
  from {
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}
.slideInLeft {
  -webkit-animation-name: slideInLeft;
          animation-name: slideInLeft;
}

@-webkit-keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInRight {
  from {
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}
.slideInRight {
  -webkit-animation-name: slideInRight;
          animation-name: slideInRight;
}

@-webkit-keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}

@keyframes slideInUp {
  from {
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
}
.slideInUp {
  -webkit-animation-name: slideInUp;
          animation-name: slideInUp;
}

@-webkit-keyframes slideOutDown {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
}

@keyframes slideOutDown {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, 100%, 0);
            transform: translate3d(0, 100%, 0);
  }
}
.slideOutDown {
  -webkit-animation-name: slideOutDown;
          animation-name: slideOutDown;
}

@-webkit-keyframes slideOutLeft {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
  }
}

@keyframes slideOutLeft {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(-100%, 0, 0);
            transform: translate3d(-100%, 0, 0);
  }
}
.slideOutLeft {
  -webkit-animation-name: slideOutLeft;
          animation-name: slideOutLeft;
}

@-webkit-keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
  }
}

@keyframes slideOutRight {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(100%, 0, 0);
            transform: translate3d(100%, 0, 0);
  }
}
.slideOutRight {
  -webkit-animation-name: slideOutRight;
          animation-name: slideOutRight;
}

@-webkit-keyframes slideOutUp {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
}

@keyframes slideOutUp {
  from {
    -webkit-transform: translate3d(0, 0, 0);
            transform: translate3d(0, 0, 0);
  }
  to {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
}
.slideOutUp {
  -webkit-animation-name: slideOutUp;
          animation-name: slideOutUp;
}

/**
 * Profound Grid
 *
 * Built in Sass (SCSS) this responsive/adaptive grid supports both fixed and fluid layouts,
 * relative and fixed gutters, as well as your choice of semantic markup or generic '.grid-x' classes.
 *
 * The biggest difference to other grid systems is the use of negative margins for column
 * placements, avoiding the subpixel rounding issues that usually break/uglify fluid layouts
 * in some browsers.
 *
 * Nested columns are supported too, without having to reset the grid on each level.
 *
 * Credits/Inspiration:
 * -------------------
 * Semantic Grid: http://www.semantic.gs
 * Susy: http://susy.oddbird.net
 * Negative Grid: http://chrisplaneta.com/freebies/negativegrid-fluid-css-grid-by-chris-planeta/
 *
 * @author Profound Creative Studio
 * @url http://www.profoundgrid.com
 * @url http://www.weareprofound.com
 */
/**
 * Clearfix
 */
/**
 * Legacy Clearfix
 */
/**
 * Establish the grid-containing element.
 */
/**
 * Align an element to the grid.
 */
/**
 * Apply to any column to make it the last one of the current row.
 */
/* ==========================================================================
   BASE/_LINKS.SCSS
   ========================================================================== */
a {
  text-decoration: none;
}
a:hover, a:focus {
  outline: 0;
}

/* ==========================================================================
   BASE/_LISTS.SCSS
   ========================================================================== */
ol {
  margin-left: 1.5em;
}

ul {
  list-style: none;
}

/* ==========================================================================
   BASE/_MEDIA.SCSS
   ========================================================================== */
img, object {
  max-width: 100%;
  height: auto;
}

iframe {
  margin-bottom: 1em;
}

figure {
  margin-bottom: 1em;
}
figure img {
  margin-bottom: 0.25em;
}

figcaption {
  font-style: italic;
}

video {
  background-size: 100% auto;
  display: block;
  height: auto;
  left: 0;
  position: fixed;
  top: 50%;
  width: 100vw;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
  z-index: -1;
}

@media screen and (min-width: 50em) {
  video {
    left: 50%;
    background-size: cover;
    background-position: center center;
    height: auto;
    width: auto;
    min-height: 100vh;
    min-width: 100vw;
    top: 50%;
    -webkit-transform: translateY(-50%) translateX(-50%);
        -ms-transform: translateY(-50%) translateX(-50%);
            transform: translateY(-50%) translateX(-50%);
  }
}
/* ==========================================================================
   BASE/_FONTS.SCSS
   ========================================================================== */
/* @import must be at top of file, otherwise CSS will not work */
@font-face {
  font-family: 'Futura';
  src: url("/_ui/fonts/34A758_0_0.eot");
  src: url("/_ui/fonts/34A758_0_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34A758_0_0.woff2") format("woff2"), url("/_ui/fonts/34A758_0_0.woff") format("woff"), url("/_ui/fonts/34A758_0_0.ttf") format("truetype");
  font-weight: 300;
  font-style: normal;
}
@font-face {
  font-family: 'Futura';
  src: url("/_ui/fonts/34A758_1_0.eot");
  src: url("/_ui/fonts/34A758_1_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34A758_1_0.woff2") format("woff2"), url("/_ui/fonts/34A758_1_0.woff") format("woff"), url("/_ui/fonts/34A758_1_0.ttf") format("truetype");
  font-weight: 300;
  font-style: italic;
}
@font-face {
  font-family: 'Futura';
  src: url("/_ui/fonts/34A758_3_0.eot");
  src: url("/_ui/fonts/34A758_3_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34A758_3_0.woff2") format("woff2"), url("/_ui/fonts/34A758_3_0.woff") format("woff"), url("/_ui/fonts/34A758_3_0.ttf") format("truetype");
  font-weight: 500;
  font-style: normal;
}
@font-face {
  font-family: 'Futura';
  src: url("/_ui/fonts/34A758_2_0.eot");
  src: url("/_ui/fonts/34A758_2_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34A758_2_0.woff2") format("woff2"), url("/_ui/fonts/34A758_2_0.woff") format("woff"), url("/_ui/fonts/34A758_2_0.ttf") format("truetype");
  font-weight: 500;
  font-style: italic;
}
@font-face {
  font-family: 'Futura';
  src: url("/_ui/fonts/34D0E0_0_0.eot");
  src: url("/_ui/fonts/34D0E0_0_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34D0E0_0_0.woff2") format("woff2"), url("/_ui/fonts/34D0E0_0_0.woff") format("woff"), url("/_ui/fonts/34D0E0_0_0.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
}
@font-face {
  font-family: 'Futura';
  src: url("/_ui/fonts/34D0E0_1_0.eot");
  src: url("/_ui/fonts/34D0E0_1_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34D0E0_1_0.woff2") format("woff2"), url("/_ui/fonts/34D0E0_1_0.woff") format("woff"), url("/_ui/fonts/34D0E0_1_0.ttf") format("truetype");
  font-weight: 700;
  font-style: italic;
}
@font-face {
  font-family: 'Didot';
  src: url("/_ui/fonts/34A758_4_0.eot");
  src: url("/_ui/fonts/34A758_4_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34A758_4_0.woff2") format("woff2"), url("/_ui/fonts/34A758_4_0.woff") format("woff"), url("/_ui/fonts/34A758_4_0.ttf") format("truetype");
}
@font-face {
  font-family: 'TradeGothicLT-BoldCondTwenty';
  src: url("/_ui/fonts/34AA7C_0_0.eot");
  src: url("/_ui/fonts/34AA7C_0_0.eot?#iefix") format("embedded-opentype"), url("/_ui/fonts/34AA7C_0_0.woff2") format("woff2"), url("/_ui/fonts/34AA7C_0_0.woff") format("woff"), url("/_ui/fonts/34AA7C_0_0.ttf") format("truetype");
  font-weight: 700;
  font-style: normal;
}
/**
 * @license
 * MyFonts Webfont Build ID 3450712, 2017-09-12T11:45:10-0400
 * MyFonts Webfont Build ID 3451516, 2017-09-14T11:09:30-0400
 *
 * The fonts listed in this notice are subject to the End User License
 * Agreement(s) entered into by the website owner. All other parties are
 * explicitly restricted from using the Licensed Webfonts(s).
 *
 * You may obtain a valid license at the URLs below.
 *
 * Webfont: FuturaStd-Book by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/futura/book/
 * Copyright: Copyright &#x00A9; 1987, 1991, 1993, 2002 Adobe Systems Incorporated.  All Rights Reserved.
 *
 * Webfont: FuturaStd-BookOblique by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/futura/book-oblique/
 * Copyright: Copyright &#x00A9; 1987, 1991, 1993, 2002 Adobe Systems Incorporated.  All Rights Reserved.
 *
 * Webfont: FuturaStd-HeavyOblique by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/futura/heavy-oblique/
 * Copyright: Copyright &#x00A9; 1987, 1991, 1993, 2002 Adobe Systems Incorporated.  All Rights Reserved.
 *
 * Webfont: FuturaStd-Heavy by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/futura/heavy/
 * Copyright: Copyright &#x00A9; 1987, 1991, 1993, 2002 Adobe Systems Incorporated.  All Rights Reserved.
 *
 * Webfont: DidotLTPro-Headline by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/didot/pro-headline-roman/
 * Copyright: Part of the digitally encoded machine readable outline data for producing the Typefaces provided is copyrighted &#x00A9; 2008 Linotype GmbH, www.linotype.com. All rights reserved. This software is the property of Linotype GmbH, and may not be reproduced,
 *
 *
 * License: https://www.myfonts.com/viewlicense?type=web&buildid=3450712
 * Licensed pageviews: 2,500,000
 *
 * Webfont: TradeGothicLT-BoldCondTwenty by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/trade-gothic/bold-condensed-no-20-63882/
 * Copyright: Part of the digitally encoded machine readable outline data for producing the Typefaces provided is copyrighted (c) 1989, 1992, 2003 Linotype Library GmbH, www.linotype.com. All rights reserved. This software is the property of Linotype Library GmbH, and
 * Licensed pageviews: 2,500,000
 *
 *
 * License: https://www.myfonts.com/viewlicense?type=web&buildid=3451516
 * © 2017 MyFonts Inc
 *
 * @license
 * MyFonts Webfont Build ID 3461344, 2017-10-06T17:35:13-0400
 *
 * Webfont: FuturaStd-Bold by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/futura/bold/
 *
 * Webfont: FuturaStd-BoldOblique by Linotype
 * URL: https://www.myfonts.com/fonts/linotype/futura/bold-oblique/
 *
 *
 * License: https://www.myfonts.com/viewlicense?type=web&buildid=3461344
 * Licensed pageviews: 2,500,000
 * Webfonts copyright: Copyright &#x00A9; 1987, 1991, 1993, 2002 Adobe Systems Incorporated.  All Rights Reserved.
 *
*/
/* ==========================================================================
   BASE/_BUTTONS.SCSS
   ========================================================================== */
button {
  font-size: 1em;
}

.btn {
  color: #98694c;
  cursor: pointer;
  display: inline-block;
  font-size: 1.4em;
  letter-spacing: 0.1em;
  padding: 1em 1.5em 0.8em;
  text-align: center;
  text-transform: uppercase;
  text-decoration: none;
  position: relative;
  vertical-align: middle;
}
.btn .lead-line {
  display: block;
  height: 50px;
  margin: -64px auto 1em;
  position: relative;
  width: 1px;
}
.btn .lead-line::before {
  border-left: 1px solid transparent;
  content: '';
  height: 0;
  left: 0;
  position: absolute;
  -webkit-transition: height 0.25s ease-out;
  transition: height 0.25s ease-out;
  width: 100%;
}
.btn .text {
  position: relative;
}
.btn::before, .btn::after {
  -webkit-box-sizing: inherit;
          box-sizing: inherit;
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  border: 1px solid transparent;
  width: 0;
  height: 0;
}
.btn::before {
  top: 0;
  left: 0;
}
.btn::after {
  bottom: 0;
  right: 0;
}
.btn.draw {
  color: #98694c;
}
.btn.draw .lead-line::before {
  border-left-color: #98694c;
  height: 100%;
}
.btn.draw::before, .btn.draw::after {
  width: 100%;
  height: 100%;
}
.btn.draw::before {
  border-top-color: #98694c;
  border-right-color: #98694c;
  -webkit-transition: width 0.25s ease-out 0.25s, height 0.25s ease-out 0.5s;
  transition: width 0.25s ease-out 0.25s, height 0.25s ease-out 0.5s;
}
.btn.draw::after {
  border-bottom-color: #98694c;
  border-left-color: #98694c;
  -webkit-transition: border-color 0s ease-out 0.5s, width 0.25s ease-out 0.5s, height 0.25s ease-out 0.75s;
  transition: border-color 0s ease-out 0.5s, width 0.25s ease-out 0.5s, height 0.25s ease-out 0.75s;
}
.btn.draw:hover {
  background-color: #98694c;
  color: #fff;
}
.btn.alt {
  color: #fff;
}
.btn.alt.draw {
  color: #fff;
}
.btn.alt.draw .lead-line::before {
  border-left-color: #fff;
}
.btn.alt.draw::before {
  border-top-color: #fff;
  border-right-color: #fff;
}
.btn.alt.draw::after {
  border-bottom-color: #fff;
  border-left-color: #fff;
}
.btn.alt.draw:hover {
  background-color: #fff;
  color: #98694c;
}

.plus-box {
  background-color: #98694c;
  border: 1px solid #98694c;
  display: block;
  height: 40px;
  padding: 9px;
  -webkit-transition: opacity 250ms ease-out;
  transition: opacity 250ms ease-out;
  width: 40px;
}
.plus-box .plus {
  display: block;
  height: 20px;
  position: relative;
  width: 20px;
}
.plus-box .plus .vertical {
  background-color: transparent;
  display: block;
  height: 100%;
  position: absolute;
  top: 0;
  left: 9px;
  width: 2px;
}
.plus-box .plus .vertical::before {
  content: '';
  background-color: #fff;
  height: 0%;
  position: absolute;
  -webkit-transition: height 250ms ease-out 500ms;
  transition: height 250ms ease-out 500ms;
  width: 2px;
}
.plus-box .plus .horizontal {
  background-color: transparent;
  display: block;
  height: 2px;
  margin: 0 auto;
  width: 100%;
  position: absolute;
  top: 9px;
  left: 0;
}
.plus-box .plus .horizontal::before {
  content: '';
  background-color: #fff;
  height: 2px;
  position: absolute;
  -webkit-transition: width 250ms ease-out 750ms;
  transition: width 250ms ease-out 750ms;
  width: 0%;
}
.plus-box .plus.animate .horizontal::before {
  width: 100%;
}
.plus-box .plus.animate .vertical::before {
  height: 100%;
}

#zoom-btn {
  background-color: transparent;
  border: 0;
  padding: 0;
  width: 25px;
  height: 25px;
  opacity: 0;
  position: fixed;
  top: 25px;
  left: 25px;
  -webkit-transition: height 250ms ease-out, width 250ms ease-out, opacity 250ms ease-out, -webkit-transform 250ms ease-out;
  transition: height 250ms ease-out, width 250ms ease-out, opacity 250ms ease-out, -webkit-transform 250ms ease-out;
  transition: height 250ms ease-out, width 250ms ease-out, transform 250ms ease-out, opacity 250ms ease-out;
  transition: height 250ms ease-out, width 250ms ease-out, transform 250ms ease-out, opacity 250ms ease-out, -webkit-transform 250ms ease-out;
  z-index: 150;
}
#zoom-btn:hover, #zoom-btn:focus {
  height: 30px;
  width: 30px;
  cursor: pointer;
  outline: 0;
}
#zoom-btn .zoom-bottom, #zoom-btn .zoom-top {
  height: 50%;
  position: absolute;
}
#zoom-btn .zoom-top {
  top: 0;
  bottom: 50%;
  left: 0;
  right: 50%;
  width: 50%;
  border-top: 2px solid #fff;
  border-left: 2px solid #fff;
  -webkit-transition: top 250ms ease-out, right 250ms ease-out, bottom 250ms ease-out, left 250ms ease-out;
  transition: top 250ms ease-out, right 250ms ease-out, bottom 250ms ease-out, left 250ms ease-out;
}
#zoom-btn .zoom-bottom {
  bottom: 0;
  top: 50%;
  right: 0;
  left: 50%;
  width: 50%;
  border-bottom: 2px solid #fff;
  border-right: 2px solid #fff;
  -webkit-transition: top 250ms ease-out, right 250ms ease-out, bottom 250ms ease-out, left 250ms ease-out;
  transition: top 250ms ease-out, right 250ms ease-out, bottom 250ms ease-out, left 250ms ease-out;
}
#zoom-btn.active {
  -webkit-transform: rotate(45deg);
      -ms-transform: rotate(45deg);
          transform: rotate(45deg);
}
#zoom-btn.active .zoom-top {
  bottom: 0;
  top: 48%;
  right: 0;
  left: 48%;
}
#zoom-btn.active .zoom-bottom {
  top: 0;
  bottom: 51%;
  left: 0;
  right: 51%;
}

@media screen and (min-width: 50em) {
  #zoom-btn {
    top: auto;
    left: auto;
    bottom: 25px;
    right: 30px;
  }
}
/* ==========================================================================
   BASE/_UTILITY.SCSS
   ========================================================================== */
.block {
  display: block;
}

.hide {
  display: none;
}

.visibility-hidden {
  visibility: hidden;
}

.offscreen {
  display: block;
  left: -999999px;
  position: absolute;
  top: -999999px;
}

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

.clearfix {
  *zoom: 1;
}

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

.clearfix:after {
  clear: both;
}

.hide-mob-br {
  display: none;
}
@media screen and (min-width: 40em) {
  .hide-mob-br {
    display: inline;
  }
}

.progress {
  background: #98694c;
  bottom: 0;
  display: block;
  height: 4px;
  position: absolute;
  text-align: center;
  -webkit-transition: width 250ms;
  transition: width 250ms;
  width: 0;
}

.line {
  display: block;
  height: 100px;
  margin: 10% auto 10%;
  position: relative;
  width: 1px;
}
.line::before {
  border-left: 1px solid transparent;
  content: '';
  height: 0;
  left: 0;
  position: absolute;
  top: 0;
  -webkit-transition: height 750ms ease-out;
  transition: height 750ms ease-out;
}
.line.draw::before {
  border-left-color: #98694c;
  height: 100px;
}

.page-not-found #content > div {
  position: absolute;
  text-align: center;
  width: 100%;
  top: 50%;
  -webkit-transform: translateY(-50%);
      -ms-transform: translateY(-50%);
          transform: translateY(-50%);
}
.page-not-found #content > div .large-underline {
  margin-bottom: 0.5em;
}

@media screen and (min-width: 50em) {
  .progress {
    height: 8px;
  }

  .line {
    height: 200px;
    margin: 2% auto;
  }
  .line.draw::before {
    height: 200px;
  }
}
/* ==========================================================================
   BASE/_LAYOUT.SCSS
   ========================================================================== */
.new-results-div {
  height: 100%;
  opacity: 1;
  -webkit-transition: opacity 250ms linear, height 250ms linear;
  transition: opacity 250ms linear, height 250ms linear;
  z-index: 2;
}
.new-results-div.transition-in {
  height: 100vh;
}
.new-results-div.transition-out {
  opacity: 0;
}

.secondary-results-div {
  left: 0;
  opacity: 0;
  position: fixed;
  top: 0;
  z-index: 10;
}
.secondary-results-div.transition-in {
  opacity: 1;
}

.js-main {
  -webkit-transition: opacity 500ms ease-out;
  transition: opacity 500ms ease-out;
}

footer {
  bottom: 0;
  color: #fff;
  left: 0;
  position: absolute;
  text-align: center;
  width: 100%;
}
footer small {
  display: block;
  font-size: 1.4em;
  font-weight: 300;
  margin: 1em 0 2em;
}

@media screen and (min-width: 50em) {
  html,
  body {
    height: 100%;
    overflow: auto;
    width: 100%;
  }

  body {
    -webkit-overflow-scrolling: touch;
  }

  footer .wordmark {
    bottom: 2em;
    left: 2em;
    position: absolute;
  }
  footer small {
    bottom: 1em;
    font-size: 1.4em;
    margin-bottom: 0;
    position: absolute;
    right: 2em;
  }

  .flex {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin: 0 10%;
  }
  .flex .half {
    width: 50%;
  }
  .flex .half.left {
    text-align: left;
  }
  .flex .half.right {
    text-align: right;
  }
  .flex .half.first {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
  }
  .flex .half.second {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
  }
}
/* ==========================================================================
   BASE/_TYPOGRAPHY.SCSS
   ========================================================================== */
body {
  font-family: "Futura", sans-serif;
  font-size: 62.5%;
  color: #98694c;
}

::-moz-selection {
  background: rgba(142, 130, 121, 0.4);
  /* WebKit/Blink Browsers */
}

::selection {
  background: rgba(142, 130, 121, 0.4);
  /* WebKit/Blink Browsers */
}

::-moz-selection {
  background: rgba(142, 130, 121, 0.4);
  /* Gecko Browsers */
}

h1, .h1 {
  font-size: 4.5em;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}

h2, .h2 {
  line-height: 1.2;
  font-weight: 500;
}

h3, .h3 {
  line-height: 1.2;
}

.large-underline {
  font-size: 5em;
  font-weight: 700;
  letter-spacing: 0.015em;
  text-transform: capitalize;
}
.large-underline span {
  border-bottom: 1px solid #98694c;
}

.accent-header {
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
  font-smoothing: antialiased;
  font-size: 2.2em;
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.glamour {
  font-size: 2.8em;
  font-family: "Didot", sans-serif;
  font-weight: 300;
}

p {
  font-size: 1.6em;
  font-weight: 300;
  font-style: normal;
  letter-spacing: 0.015em;
  margin-bottom: 1em;
}
p .nobreak {
  white-space: nowrap;
}
p.airy {
  line-height: 1.8em;
  max-width: 500px;
}

.intro {
  font-size: 3em;
  font-weight: 500;
}

.caption {
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;
  font-family: "Didot", sans-serif;
  font-size: 1.4em;
  font-smoothing: antialiased;
  letter-spacing: 0.05em;
  line-height: 1.6em;
}

@media screen and (min-width: 46.8em) {
  .intro {
    margin: 0 auto;
    max-width: 50%;
  }
}
@media screen and (min-width: 50em) {
  .h1 {
    font-size: 12em;
  }

  .large-underline {
    font-size: 7.8em;
  }

  .intro {
    font-size: 6.3em;
  }

  p {
    font-size: 2em;
  }

  .glamour {
    font-size: 4.8em;
  }

  .caption.large {
    font-size: 2.4em;
  }

  .accent-header {
    font-size: 3.2em;
  }
}
@media screen and (min-width: 66em) {
  .h1 {
    font-size: 15em;
  }

  .large-underline {
    font-size: 9.2em;
  }
}
@media screen and (min-width: 73em) {
  .large-underline {
    font-size: 10.4em;
  }
}
@supports ((-webkit-perspective: 1px) or (perspective: 1px)) and (not (overflow-scrolling: touch)) {
  @media screen and (min-width: 66em) {
    .princi .large-underline,
    .offerings .large-underline,
    .rocco-princi .large-underline {
      -webkit-transform: translateZ(0.1px) scale(0.9);
              transform: translateZ(0.1px) scale(0.9);
      z-index: 100;
    }
  }
}
/* ==========================================================================
   COMPONENTS/_NAV.SCSS
   ========================================================================== */
#hamburger {
  height: 100%;
  position: absolute;
  width: 100%;
}
#hamburger::before,
#hamburger span, #hamburger::after {
  background: #98694c;
  content: '';
  display: block;
  height: 2px;
  left: 0px;
  margin: 0 0 6px;
  position: relative;
  top: 0px;
  -webkit-transition: .25s ease-in-out;
  transition: .25s ease-in-out;
  width: 100%;
}
#hamburger::before {
  -webkit-transition-delay: .5s;
          transition-delay: .5s;
}
#hamburger span {
  -webkit-transition-delay: .625s;
          transition-delay: .625s;
}
#hamburger::after {
  -webkit-transition-delay: .75s;
          transition-delay: .75s;
}

#cross {
  height: 100%;
  position: absolute;
  -webkit-transform: rotate(45deg);
      -ms-transform: rotate(45deg);
          transform: rotate(45deg);
  width: 100%;
}
#cross::before, #cross::after {
  background: #98694c;
  content: '';
  position: absolute;
  -webkit-transition: .25s ease-in-out;
  transition: .25s ease-in-out;
}
#cross::before {
  height: 0%;
  left: 12px;
  top: 10%;
  -webkit-transition-delay: 0s;
          transition-delay: 0s;
  width: 2px;
}
#cross::after {
  height: 2px;
  left: 10%;
  top: 12px;
  -webkit-transition-delay: .25s;
          transition-delay: .25s;
  width: 0%;
}

.trigger {
  display: block;
  height: 25px;
  position: absolute;
  right: 30px;
  top: 30px;
  width: 25px;
}
.trigger.active #hamburger::before, .trigger.active #hamburger span, .trigger.active #hamburger:after {
  width: 0%;
}
.trigger.active #hamburger::before {
  -webkit-transition-delay: 0s;
          transition-delay: 0s;
}
.trigger.active #hamburger span {
  -webkit-transition-delay: .125s;
          transition-delay: .125s;
}
.trigger.active #hamburger::after {
  -webkit-transition-delay: .25s;
          transition-delay: .25s;
}
.trigger.active #cross::before {
  background: #fff;
  height: 80%;
  -webkit-transition-delay: .625s;
          transition-delay: .625s;
}
.trigger.active #cross::after {
  background: #fff;
  -webkit-transition-delay: .375s;
          transition-delay: .375s;
  width: 80%;
}

.top-bar {
  background-color: rgba(255, 255, 255, 0);
  height: 70px;
  opacity: 1;
  position: fixed;
  top: 0;
  -webkit-transition: opacity 500ms linear, margin .15s linear;
  transition: opacity 500ms linear, margin .15s linear;
  width: 100%;
  z-index: 4;
  z-index: 6;
  margin-top: 5rem;
}
@media screen and (min-width: 920px) {
  .top-bar {
    margin-top: 3rem;
  }
}
@media screen and (min-width: 1024px) {
  .top-bar {
    margin-top: 3rem;
  }
}
.top-bar.hidden {
  opacity: 0;
  pointer-events: none;
}
.top-bar.active {
  margin-top: 0;
  z-index: 100;
}
.top-bar a {
  display: block;
  position: absolute;
}
.top-bar .tagline {
  left: 0;
}
.top-bar .logo {
  height: 66px;
  left: 50%;
  top: -1em;
  -webkit-transform: translateX(-50%);
      -ms-transform: translateX(-50%);
          transform: translateX(-50%);
  width: 140px;
  z-index: 60;
}
.top-bar .logo svg {
  fill: #98694c;
  -webkit-transition: fill 250ms ease-in-out;
  transition: fill 250ms ease-in-out;
}
.top-bar.white .logo svg {
  fill: #fff;
}

.food-details-page .top-bar {
  z-index: 2;
}

.menu {
  background-color: #98694c;
  color: #fff;
  height: 100vh;
  opacity: 0;
  position: fixed;
  text-align: center;
  top: 0;
  -webkit-transition: opacity 0.5s ease-out, visibility 0s 0.5s;
  transition: opacity 0.5s ease-out, visibility 0s 0.5s;
  visibility: hidden;
  width: 100vw;
  z-index: 5;
}
.menu.active {
  opacity: 1;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
  visibility: visible;
  z-index: 50;
}
.menu.active .edge-menu {
  opacity: 1;
  -webkit-transform: translateY(0%);
      -ms-transform: translateY(0%);
          transform: translateY(0%);
}
.menu.active #language {
  font-size: 1.4em;
  font-weight: 300;
  margin-bottom: 2em;
  -webkit-transition-delay: .5s;
          transition-delay: .5s;
}
.menu.active #main {
  margin-bottom: 1em;
  opacity: 1;
  -webkit-transform: translateY(0%);
      -ms-transform: translateY(0%);
          transform: translateY(0%);
  -webkit-transition-delay: 1s;
          transition-delay: 1s;
}
.menu.active #social {
  -webkit-transition-delay: 1.5s;
          transition-delay: 1.5s;
}
.menu.active #secondary {
  -webkit-transition-delay: 1.5s;
          transition-delay: 1.5s;
}
.menu a {
  color: #fff;
  display: inline-block;
}
.menu #main {
  font-size: 4.2em;
  font-weight: 700;
  letter-spacing: 0.10em;
  line-height: 1.4em;
  opacity: 0;
  text-transform: uppercase;
  -webkit-transform: translateY(5%) skew(-10deg);
      -ms-transform: translateY(5%) skew(-10deg);
          transform: translateY(5%) skew(-10deg);
  -webkit-transition: opacity .5s ease-out, -webkit-transform .5s ease-out;
  transition: opacity .5s ease-out, -webkit-transform .5s ease-out;
  transition: transform .5s ease-out, opacity .5s ease-out;
  transition: transform .5s ease-out, opacity .5s ease-out, -webkit-transform .5s ease-out;
  width: 100%;
  z-index: 4;
}
.menu #main a:hover, .menu #main a:focus {
  font-style: italic;
}
.menu .nav-hover {
  display: none;
}
.menu .edge-menu {
  font-size: 1.4em;
  font-weight: 300;
  opacity: 0;
  -webkit-transform: translateY(25px);
      -ms-transform: translateY(25px);
          transform: translateY(25px);
  -webkit-transition: opacity .5s ease-out, -webkit-transform .5s ease-out;
  transition: opacity .5s ease-out, -webkit-transform .5s ease-out;
  transition: transform .5s ease-out, opacity .5s ease-out;
  transition: transform .5s ease-out, opacity .5s ease-out, -webkit-transform .5s ease-out;
  z-index: 4;
}
.menu .edge-menu li {
  display: block;
  margin-top: 1em;
}
.menu .edge-menu a {
  position: relative;
}
.menu .edge-menu a::after {
  border-bottom: 1px solid transparent;
  bottom: 0;
  content: '';
  height: 0;
  left: 0;
  position: absolute;
  -webkit-transition: width .5s ease-out;
  transition: width .5s ease-out;
  width: 0;
}
.menu .edge-menu a:hover::after, .menu .edge-menu a:focus::after {
  border-bottom-color: #fff;
  width: 100%;
}

@media screen and (max-width: 50em) {
  .menu .mobile-grouping {
    left: 50%;
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%) translateX(-50%);
        -ms-transform: translateY(-50%) translateX(-50%);
            transform: translateY(-50%) translateX(-50%);
    width: 90%;
  }
  .menu #main {
    -webkit-transform: translateY(5%);
        -ms-transform: translateY(5%);
            transform: translateY(5%);
  }
}
@media screen and (min-width: 50em) {
  .trigger {
    right: 65px;
    top: 55px;
  }

  .top-bar {
    height: 120px;
  }
  .top-bar .logo {
    height: 90px;
    width: 185px;
  }
  .top-bar .logo svg {
    height: 90px;
    width: 185px;
  }

  .menu #main {
    font-size: 7.2em;
    left: 50%;
    position: absolute;
    top: 50%;
    -webkit-transform: translateX(-50%) translateY(-40%);
        -ms-transform: translateX(-50%) translateY(-40%);
            transform: translateX(-50%) translateY(-40%);
    width: 90vw;
  }
  .menu.active #main {
    -webkit-transform: translateX(-50%) translateY(-50%);
        -ms-transform: translateX(-50%) translateY(-50%);
            transform: translateX(-50%) translateY(-50%);
    -webkit-transition-delay: .5s;
            transition-delay: .5s;
  }
  .menu.active #language {
    -webkit-transform: rotate(-90deg) translateY(0%);
        -ms-transform: rotate(-90deg) translateY(0%);
            transform: rotate(-90deg) translateY(0%);
    -webkit-transition-delay: 1s;
            transition-delay: 1s;
  }
  .menu.active #secondary {
    -webkit-transform: translateX(-50%) translateY(0%);
        -ms-transform: translateX(-50%) translateY(0%);
            transform: translateX(-50%) translateY(0%);
    -webkit-transition-delay: 1.25s;
            transition-delay: 1.25s;
  }
  .menu.active #social {
    -webkit-transform: rotate(90deg) translateY(0%);
        -ms-transform: rotate(90deg) translateY(0%);
            transform: rotate(90deg) translateY(0%);
    -webkit-transition-delay: 1.5s;
            transition-delay: 1.5s;
  }
  .menu .nav-hover {
    display: block;
    height: 100%;
    left: 0;
    padding: 5vh;
    position: absolute;
    top: 0;
    width: 100%;
    z-index: 3;
  }
  .menu .nav-hover .img {
    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
    height: 100%;
    left: 0;
    opacity: 0;
    position: absolute;
    top: 0;
    -webkit-transition: opacity 250ms ease-out;
    transition: opacity 250ms ease-out;
    width: 100%;
  }
  .menu .nav-hover .img.active {
    opacity: 1;
  }
  .menu .nav-hover .img.rocco-princi {
    background-image: url(/_ui/img/global/princi-nav-rocco-1.jpg);
  }
  .menu .nav-hover .img.offerings {
    background-image: url(/_ui/img/global/princi-nav-offerings-1.jpg);
  }
  .menu .nav-hover .img.locations {
    background-image: url(/_ui/img/global/princi-nav-locations-1.jpg);
  }
  .menu .edge-menu {
    position: absolute;
  }
  .menu .edge-menu li:first-child {
    margin: 0 1em 0 0;
  }
  .menu #language {
    left: 1em;
    top: 50%;
    -webkit-transform: rotate(-90deg) translateY(-25%);
        -ms-transform: rotate(-90deg) translateY(-25%);
            transform: rotate(-90deg) translateY(-25%);
  }
  .menu #secondary {
    bottom: 2em;
    left: 50%;
    -webkit-transform: translateX(-50%) translateY(-25%);
        -ms-transform: translateX(-50%) translateY(-25%);
            transform: translateX(-50%) translateY(-25%);
  }
  .menu #social {
    right: 1em;
    top: 50%;
    -webkit-transform: rotate(90deg) translateY(-25%);
        -ms-transform: rotate(90deg) translateY(-25%);
            transform: rotate(90deg) translateY(-25%);
  }
}
/*
 *  Owl Carousel - Core
 */
.owl-carousel {
  display: none;
  width: 100%;
  -webkit-tap-highlight-color: transparent;
  /* position relative and z-index fix webkit rendering fonts issue */
  position: relative;
  z-index: 1;
}
.owl-carousel .owl-stage {
  position: relative;
  -ms-touch-action: pan-Y;
  -moz-backface-visibility: hidden;
  /* fix firefox animation glitch */
}
.owl-carousel .owl-stage:after {
  content: ".";
  display: block;
  clear: both;
  visibility: hidden;
  line-height: 0;
  height: 0;
}
.owl-carousel .owl-stage-outer {
  position: relative;
  overflow: hidden;
  /* fix for flashing background */
  -webkit-transform: translate3d(0px, 0px, 0px);
}
.owl-carousel .owl-wrapper,
.owl-carousel .owl-item {
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
}
.owl-carousel .owl-item {
  position: relative;
  min-height: 1px;
  float: left;
  -webkit-backface-visibility: hidden;
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
}
.owl-carousel .owl-item img {
  display: block;
  width: 100%;
}
.owl-carousel .owl-nav.disabled,
.owl-carousel .owl-dots.disabled {
  display: none;
}
.owl-carousel .owl-nav .owl-prev,
.owl-carousel .owl-nav .owl-next,
.owl-carousel .owl-dot {
  cursor: pointer;
  cursor: hand;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.owl-carousel .owl-nav {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
}
.owl-carousel .owl-nav .owl-prev,
.owl-carousel .owl-nav .owl-next {
  display: inline-block;
  height: 100%;
  width: 50%;
  text-indent: -999999px;
}
.owl-carousel .owl-nav .owl-prev:hover {
  cursor: url(/_ui/img/global/princi-left-arrow.svg), default;
}
.owl-carousel .owl-nav .owl-next:hover {
  cursor: url(/_ui/img/global/princi-right-arrow.svg), auto;
}
.owl-carousel.owl-loaded {
  display: block;
}
.owl-carousel.owl-loading {
  opacity: 0;
  display: block;
}
.owl-carousel.owl-hidden {
  opacity: 0;
}
.owl-carousel.owl-refresh .owl-item {
  visibility: hidden;
}
.owl-carousel.owl-drag .owl-item {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.owl-carousel.owl-grab {
  cursor: move;
  cursor: -webkit-grab;
  cursor: grab;
}
.owl-carousel.owl-rtl {
  direction: rtl;
}
.owl-carousel.owl-rtl .owl-item {
  float: right;
}

/* No Js */
.no-js .owl-carousel {
  display: block;
}

/*
 *  Owl Carousel - Animate Plugin
 */
.owl-carousel .animated {
  -webkit-animation-duration: 1000ms;
          animation-duration: 1000ms;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
}
.owl-carousel .owl-animated-in {
  z-index: 0;
}
.owl-carousel .owl-animated-out {
  z-index: 1;
}
.owl-carousel .fadeOut {
  -webkit-animation-name: fadeOut;
          animation-name: fadeOut;
}

@keyframes fadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
/*
 * 	Owl Carousel - Auto Height Plugin
 */
.owl-height {
  -webkit-transition: height 500ms ease-in-out;
  transition: height 500ms ease-in-out;
}

/*
 * 	Owl Carousel - Lazy Load Plugin
 */
.owl-carousel .owl-item .owl-lazy {
  opacity: 0;
  -webkit-transition: opacity 400ms ease;
  transition: opacity 400ms ease;
}
.owl-carousel .owl-item img.owl-lazy {
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;
}

.accordion-trigger:hover {
  cursor: pointer;
}

.accordion-content {
  opacity: 1;
  -webkit-transition: opacity 300ms ease;
  transition: opacity 300ms ease;
}
.accordion-content.hidden {
  opacity: 0;
}

/* ==========================================================================
   COMPONENTS/_HOMEPAGE.SCSS
   ========================================================================== */
/* These are the base styles for fonts and sizing that also act as a backup to the parallax styles */
#intro {
  background-color: #fff;
  padding-top: 100px;
  position: relative;
  z-index: 2;
}
#intro .headline {
  font-weight: 500;
  text-align: center;
  text-transform: uppercase;
}
#intro .headline .h1 span {
  display: block;
  width: 100%;
}
#intro .headline .h1 span:last-child {
  margin-top: 340px;
}
#intro .headline .h1 span sup {
  font-size: 10%;
  top: -25px;
}
#intro .hero {
  background-image: url(/_ui/img/homepage/hero.jpg);
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  display: block;
  height: 370px;
  margin-top: 135px;
  position: absolute;
  top: 0;
  width: 100%;
}
#intro .introduction {
  background-color: #fff;
  padding-bottom: 10%;
  position: relative;
}
#intro .introduction .title {
  margin: 0 auto;
  text-align: center;
}

#cta-group {
  background-color: #fff;
  padding-top: 20%;
  position: relative;
  text-align: center;
}
#cta-group .glamour {
  margin: 10% auto 0;
  max-width: 645px;
  width: 90%;
}
#cta-group .cta-home {
  padding-bottom: 25%;
}
#cta-group .portrait {
  max-width: 65%;
}
#cta-group .landscape {
  width: 80%;
}
#cta-group .caption {
  margin-top: 1em;
}
#cta-group .large-underline {
  margin-bottom: 1em;
}
#cta-group .btn {
  margin-top: 70px;
}

@media screen and (min-width: 50em) {
  #intro {
    padding-top: 150px;
  }
  #intro .headline .h1 span:last-child {
    margin-top: 500px;
  }
  #intro .headline .h1 span:last-child sup {
    left: -20px;
    top: -75px;
  }
  #intro .hero {
    height: 600px;
    margin-top: 250px;
  }
}
@media screen and (min-width: 66em) {
  #intro {
    padding-top: 170px;
  }
  #intro .headline .h1 span:last-child {
    margin-top: 560px;
  }
  #intro .headline .h1 span:last-child sup {
    top: -100px;
  }
  #intro .hero {
    height: 655px;
    margin-top: 290px;
  }

  #cta-group {
    padding-top: 18%;
  }
  #cta-group .large-underline {
    left: 50%;
    left: 10%;
    position: absolute;
    top: -1.2em;
    width: 80%;
    z-index: 100;
  }
  #cta-group .cta-home {
    margin: 0 5%;
    padding-bottom: 13%;
  }
  #cta-group .cta-home .edge {
    padding-left: 0%;
    position: absolute;
    right: 0;
    width: 60%;
  }
  #cta-group .portrait {
    max-width: 100%;
  }
  #cta-group .landscape {
    margin-bottom: 7%;
  }
  #cta-group .glamour {
    margin: 0 auto;
  }
  #cta-group .cta-locations {
    padding-top: 25%;
  }
  #cta-group .cta-locations .landscape {
    margin-bottom: 0;
  }
  #cta-group .cta-locations .caption {
    margin-left: 25%;
    max-width: 80%;
    text-align: left;
  }

  #cta-food .cta-home {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
        -ms-flex-direction: column;
            flex-direction: column;
    margin: 0;
  }
  #cta-food .cta-home .food-copy {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
  }
  #cta-food .cta-home .food-copy .btn {
    margin-bottom: 10%;
  }
  #cta-food .cta-home .owl-carousel {
    margin-bottom: 5%;
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
  }
}
@supports not (-webkit-overflow-scrolling: touch) {
  /* CSS for other than iOS devices */
  .parallax {
    overflow-x: hidden;
    overflow-y: visible;
    -webkit-perspective: 1px;
            perspective: 1px;
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
    width: 100vw;
    height: 100vh;
    position: static;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
  }
  .parallax, .parallax * {
    -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
  }
}
@supports ((-webkit-perspective: 1px) or (perspective: 1px)) and (not (overflow-scrolling: touch)) {
  @media screen and (min-width: 50em) {
    .parallax::before {
      content: 'true';
      display: block;
      height: 0;
      visibility: hidden;
      width: 0;
    }

    header .mobile-grouping {
      position: initial;
      -webkit-transform-style: flat;
              transform-style: flat;
    }
  }
}
/* ==========================================================================
   COMPONENTS/_ROCCO.SCSS
   ========================================================================== */
#heritage-hero {
  background-color: #fff;
  padding: 120px 5% 10%;
  position: relative;
  width: 100%;
}
#heritage-hero .copy {
  position: relative;
  text-align: center;
  z-index: 4;
}
#heritage-hero .h1 {
  padding-bottom: 0.25em;
}
#heritage-hero .line {
  margin-top: 330px;
}
#heritage-hero .intro {
  margin-top: 0;
}
#heritage-hero .img {
  max-width: 100%;
  position: absolute;
  top: 0;
  margin-top: 320px;
  right: 0;
  z-index: 1;
}

.split-pic {
  background-color: #fff;
  display: block;
  padding: 18% 5%;
  width: 100%;
  height: auto;
  z-index: 100;
}
.split-pic:nth-child(5) {
  padding-bottom: 5%;
}
.split-pic:nth-child(6) {
  padding-top: 0;
}
.split-pic .large-underline {
  padding-bottom: 1em;
  text-align: center;
}
.split-pic .caption {
  padding-top: 1em;
}
.split-pic .copy p {
  margin-bottom: 2em;
}
.split-pic .img {
  margin-bottom: 2em;
}

.owl-carousel {
  background-color: #fff;
}

@media screen and (min-width: 46.8em) {
  #heritage-hero {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    margin: 0 auto 120px;
    padding: 170px 5% 10%;
    position: relative;
    width: 100%;
  }
  #heritage-hero .copy h1 {
    text-align: left;
    width: 50vw;
    z-index: 5;
  }
  #heritage-hero .copy .intro {
    margin: 0 auto;
    max-width: 90%;
  }
  #heritage-hero .copy .caption {
    text-align: left;
  }
  #heritage-hero .copy .caption span {
    display: block;
    margin-bottom: 1em;
  }
  #heritage-hero .img {
    text-align: right;
    margin-right: 0;
    max-width: 100%;
    margin-top: 200px;
    top: 0;
    width: 75%;
    z-index: 1;
  }

  .split-pic {
    padding: 18% 5% 10%;
    position: relative;
  }
  .split-pic .split-flex {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
  }
  .split-pic .large-underline {
    position: absolute;
    top: 10%;
    left: 10%;
    width: 80%;
    text-align: center;
    z-index: 2;
  }
  .split-pic .copy {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    margin-right: 10%;
    width: 50%;
  }
  .split-pic .copy p {
    margin-bottom: 0;
  }
  .split-pic .img {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    max-width: 40%;
  }
  .split-pic.flip .copy {
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    margin-left: 10%;
    margin-right: 0;
  }
  .split-pic.flip .img {
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    margin-top: 15%;
  }
  .split-pic.flip .img.edge {
    margin: 15% 0 0 -6%;
  }
  .split-pic.flip .img.edge img {
    max-width: 133%;
  }
  .split-pic.flip .img.edge .caption {
    margin-left: 15%;
  }
  .split-pic:nth-child(6) {
    padding-top: 18%;
  }
  .split-pic#pursuit .copy {
    margin: 10% 0 0 20%;
    max-width: 40%;
  }
}
@media screen and (min-width: 66em) {
  #heritage-hero .copy .intro {
    margin-top: 100px;
  }
  #heritage-hero .img {
    margin-top: 240px;
  }
}
/* ==========================================================================
   COMPONENTS/_CAREERS.SCSS
   ========================================================================== */
.careers .split-pic .btn {
  margin: 2em 0;
}
.careers #roles {
  padding-bottom: 4em;
  text-align: center;
}
.careers #roles a {
  color: #98694c;
}
.careers #roles .accent-header {
  margin-bottom: 2em;
}
.careers #roles .large-underline {
  display: block;
}
.careers #roles .large-underline span {
  border-bottom: 0;
}
.careers #roles .large-underline:last-of-type {
  margin-bottom: 1em;
}
.careers #roles .large-underline:hover span, .careers #roles .large-underline:focus span {
  border-bottom: 1px solid #98694c;
}
.careers #roles p a {
  border-bottom: 1px solid #98694c;
}

@media screen and (min-width: 50em) {
  .careers .split-pic {
    padding-top: 0;
  }
  .careers .split-pic .img.edge img {
    max-width: 115%;
  }
}
/* ==========================================================================
   COMPONENTS/_OFFERINGS.SCSS
   ========================================================================== */
.food-hero {
  margin: 120px auto 60px;
  text-align: center;
}
.food-hero .h1 {
  text-transform: uppercase;
}
.food-hero .intro {
  margin-top: 1em;
}
.food-hero .standard {
  padding: 0 5%;
}
.food-hero .owl-carousel {
  margin-top: -17px;
}

.foods .accent-header {
  display: none;
}
.foods .type {
  margin-bottom: 25%;
  -webkit-transition: background-position 1s ease-out;
  transition: background-position 1s ease-out;
}
.foods .type.breakfast {
  background-position: 70% top;
}
.foods .type.pizza {
  background-position: right top;
}
.foods .type.breakfast.center-background, .foods .type.pizza.center-background {
  background-position: center center;
}
.foods .type .copy {
  background-color: #fff;
  text-align: center;
}
.foods .type .copy .caption {
  margin-bottom: 0;
  padding: 1em 0 3em 0;
}
.foods .type .mask {
  display: block;
  -webkit-transition: height .5s ease-out, border-left-width .5s ease-out, border-right-width .5s ease-out;
  transition: height .5s ease-out, border-left-width .5s ease-out, border-right-width .5s ease-out;
  width: 100vw;
}
.foods .type .mask.transition {
  border-left-width: 0;
  border-right-width: 0;
  height: 100vh;
}

.plus-box {
  left: -webkit-calc(50% - 20px);
  left: calc(50% - 20px);
  margin-top: -20px;
  position: absolute;
}

@media screen and (max-width: 46.8em) {
  .foods .type {
    background-position: bottom right;
    background-size: auto 100vh;
  }
  .foods .type.center-background {
    background-position: bottom center;
  }
  .foods .mask {
    border-left: 5vw solid #fff;
    border-right: 5vw solid #fff;
    height: 250px;
  }
  .foods .mask.portrait {
    border-left: 20vw solid #fff;
    border-right: 20vw solid #fff;
    height: 350px;
  }
}
@media screen and (min-width: 46.8em) {
  .food-hero {
    margin: 120px auto 0;
    padding-bottom: 4%;
    padding-top: 4%;
  }
  .food-hero .standard {
    margin: 4em 0 1em 5%;
    max-width: 37.5%;
    padding: 0;
    text-align: left;
  }

  .foods .type {
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
    background-position: center center;
    background-size: cover;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    height: 500px;
    margin-bottom: 10%;
    -webkit-transition: height 1s ease-out, margin-bottom 1s ease-out, -webkit-transform 1s ease-out;
    transition: height 1s ease-out, margin-bottom 1s ease-out, -webkit-transform 1s ease-out;
    transition: height 1s ease-out, margin-bottom 1s ease-out, transform 1s ease-out;
    transition: height 1s ease-out, margin-bottom 1s ease-out, transform 1s ease-out, -webkit-transform 1s ease-out;
  }
  .foods .type .copy {
    background-color: #fff;
    height: 100%;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    padding-left: 10%;
    position: relative;
    text-align: left;
    -webkit-transition: -webkit-transform 250ms ease-out;
    transition: -webkit-transform 250ms ease-out;
    transition: transform 250ms ease-out;
    transition: transform 250ms ease-out, -webkit-transform 250ms ease-out;
    width: 50%;
  }
  .foods .type .copy > div {
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%);
        -ms-transform: translateY(-50%);
            transform: translateY(-50%);
  }
  .foods .type .mask {
    background-color: #fff;
    border-bottom-width: 0;
    border-color: #fff;
    border-left-width: 0;
    border-right-width: 5vw;
    border-style: solid;
    border-top-width: 0;
    height: 100%;
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    position: relative;
    -webkit-transition: background-color 500ms ease-out, height .5s ease-out, border-left-width .5s ease-out, border-right-width .5s ease-out;
    transition: background-color 500ms ease-out, height .5s ease-out, border-left-width .5s ease-out, border-right-width .5s ease-out;
    width: 50%;
  }
  .foods .type .mask.reveal {
    background-color: rgba(152, 105, 76, 0);
  }
  .foods .type .mask:hover {
    background-color: rgba(152, 105, 76, 0.65);
  }
  .foods .type .mask.no-hover {
    background-color: rgba(152, 105, 76, 0) !important;
  }
  .foods .type .mask .plus-box {
    left: 0;
    top: 50%;
    -webkit-transform: translateX(-50%) translateY(-50%);
        -ms-transform: translateX(-50%) translateY(-50%);
            transform: translateX(-50%) translateY(-50%);
  }
  .foods .type .mask.edge {
    border-right-width: 0;
  }
  .foods .type.portrait {
    height: 700px;
  }
  .foods .type.portrait.center-background {
    border-left-width: 0;
  }
  .foods .type.portrait.center-background .copy {
    -webkit-transform: translateX(100%);
        -ms-transform: translateX(100%);
            transform: translateX(100%);
  }
  .foods .type.portrait.center-background .mask {
    border-left-width: 0;
    border-right-width: 0;
  }
  .foods .type.portrait.center-background .mask .plus-box {
    left: 210%;
  }
  .foods .type:nth-child(even) .copy {
    height: 100%;
    -webkit-box-ordinal-group: 3;
        -ms-flex-order: 2;
            order: 2;
    padding-left: 0;
  }
  .foods .type:nth-child(even) .mask {
    border-left: 0;
    border-right-width: 10vw;
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    -webkit-transition: background-color 500ms ease-out, height .5s ease-out, border-left-width .5s ease-out;
    transition: background-color 500ms ease-out, height .5s ease-out, border-left-width .5s ease-out;
  }
  .foods .type:nth-child(even) .mask.portrait {
    border-left-width: 5vw;
    height: 700px;
  }
  .foods .type:nth-child(even) .mask.portrait.edge {
    border-left-width: 0;
  }
  .foods .type:nth-child(even) .mask.portrait .plus-box {
    left: 100%;
  }
  .foods .type.center-background {
    height: 100vh;
  }
  .foods .type.center-background .copy {
    -webkit-transform: translateX(-100%);
        -ms-transform: translateX(-100%);
            transform: translateX(-100%);
  }
  .foods .type.center-background .mask .plus-box {
    left: -110%;
  }
  .foods .type.center-background:nth-child(even).portrait .copy {
    -webkit-transform: translateX(100%);
        -ms-transform: translateX(100%);
            transform: translateX(100%);
  }
  .foods .type.center-background:nth-child(even).portrait .mask .plus-box {
    left: 210%;
  }
}
@media screen and (min-width: 50em) {
  .food-hero .owl-carousel {
    margin-top: -40px;
  }
}
@media screen and (min-width: 66em) {
  .food-hero .owl-carousel {
    margin-top: -52px;
  }
}
@supports ((-webkit-perspective: 1px) or (perspective: 1px)) and (not (-webkit-overflow-scrolling: touch)) {
  @media screen and (min-width: 66em) {
    .foods .type:nth-child(odd) .copy .caption {
      -webkit-transform: translateZ(0.1px) scale(0.9);
              transform: translateZ(0.1px) scale(0.9);
      z-index: 100;
    }
    .foods .type:nth-child(even) .copy .caption {
      -webkit-transform: translateZ(0.1px) scale(0.9);
              transform: translateZ(0.1px) scale(0.9);
      z-index: 100;
    }
    .foods .accent-header {
      -webkit-transform: translateZ(0.25px) scale(0.75);
              transform: translateZ(0.25px) scale(0.75);
      z-index: 250;
      display: block;
      opacity: 1;
      position: absolute;
      top: 0;
      -webkit-transition: opacity 250ms ease-out;
      transition: opacity 250ms ease-out;
      z-index: 1 !important;
    }
    .foods .accent-header.left {
      left: 25%;
    }
    .foods .accent-header.right {
      left: 45%;
    }
    .foods .accent-header.one {
      top: 14%;
    }
    .foods .accent-header.two {
      top: 73%;
    }
    .foods .accent-header.three {
      top: 89%;
    }
    .foods .accent-header.hide {
      opacity: 0;
    }
  }
}
/* ==========================================================================
   COMPONENTS/_FOOD-DETAILS.SCSS
   ========================================================================== */
.food-type {
  background-position: center center;
  height: 100vh;
  width: 100vw;
  position: relative;
  overflow: hidden;
  z-index: 7;
}
.food-type.active {
  z-index: 10000;
}

.food-details {
  background-color: #98694c;
  color: #fff;
  height: auto;
  bottom: 0;
  position: absolute;
  left: 0;
  width: 100vw;
}
.food-details #cross {
  color: #fff;
  display: block;
  font-size: 2em;
  height: 25px;
  position: fixed;
  right: 1em;
  top: 1em;
  width: 25px;
}
.food-details #cross::before {
  background: #fff;
  height: 80%;
}
.food-details #cross::after {
  background: #fff;
  width: 80%;
}
.food-details > div {
  margin: 25px 0 25px;
  max-width: 100vw;
  padding: 0 5%;
}
.food-details h1 {
  margin-bottom: 0.5em;
  text-align: center;
}
.food-details h1 span {
  border-bottom: 1px solid #fff;
}
.food-details .airy {
  margin: 0 auto;
  text-align: center;
}
.food-details .caption {
  margin-bottom: 2em;
  text-align: center;
}

@media screen and (max-width: 50em) {
  .food-type {
    background-size: auto 100vh;
    -webkit-transform: translateY(100vh);
        -ms-transform: translateY(100vh);
            transform: translateY(100vh);
    -webkit-transition: -webkit-transform .5s ease-in-out;
    transition: -webkit-transform .5s ease-in-out;
    transition: transform .5s ease-in-out;
    transition: transform .5s ease-in-out, -webkit-transform .5s ease-in-out;
  }
  .food-type.active {
    -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
            transform: translateY(0);
  }

  .food-details {
    -webkit-transform: translateY(60vh);
        -ms-transform: translateY(60vh);
            transform: translateY(60vh);
    -webkit-transition: -webkit-transform .5s ease-in-out;
    transition: -webkit-transform .5s ease-in-out;
    transition: transform .5s ease-in-out;
    transition: transform .5s ease-in-out, -webkit-transform .5s ease-in-out;
  }
  .food-details.active {
    -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
            transform: translateY(0);
  }
}
@media screen and (min-width: 50em) {
  .food-type {
    background-size: cover;
    -webkit-transform: translateX(-100%);
        -ms-transform: translateX(-100%);
            transform: translateX(-100%);
    -webkit-transition: -webkit-transform .5s ease-in-out;
    transition: -webkit-transform .5s ease-in-out;
    transition: transform .5s ease-in-out;
    transition: transform .5s ease-in-out, -webkit-transform .5s ease-in-out;
  }
  .food-type.active {
    -webkit-transform: translateX(0);
        -ms-transform: translateX(0);
            transform: translateX(0);
  }

  .food-details {
    top: 0;
    height: 100vh;
    left: 0;
    overflow-y: auto;
    -webkit-transform: translateX(-100%);
        -ms-transform: translateX(-100%);
            transform: translateX(-100%);
    -webkit-transition: -webkit-transform .5s ease-in-out;
    transition: -webkit-transform .5s ease-in-out;
    transition: transform .5s ease-in-out;
    transition: transform .5s ease-in-out, -webkit-transform .5s ease-in-out;
    width: 50vw;
  }
  .food-details.active {
    -webkit-transform: translateX(0);
        -ms-transform: translateX(0);
            transform: translateX(0);
  }
  .food-details > div {
    margin: 150px auto;
    max-width: 90%;
  }
  .food-details h1 {
    margin-bottom: 0.25em;
  }
}
/* ==========================================================================
   COMPONENTS/_CTA.SCSS
   ========================================================================== */
.bottom-cta {
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  position: relative;
}
.bottom-cta.rocco-cta {
  background-image: url(/_ui/img/global/princi-nav-rocco-1.jpg);
}
.bottom-cta.offerings-cta {
  background-image: url(/_ui/img/global/princi-nav-offerings-1.jpg);
}
.bottom-cta.locations-cta {
  background-image: url(/_ui/img/global/princi-nav-locations-1.jpg);
}

.bottom-cta-link {
  display: block;
  height: 100vh;
  opacity: 1;
  position: relative;
  text-align: center;
  -webkit-transition: background-color .25s ease-out;
  transition: background-color .25s ease-out;
}
.bottom-cta-link .cta-container {
  left: 50%;
  position: absolute;
  top: 50%;
  -webkit-transform: translateY(-50%) translateX(-50%);
      -ms-transform: translateY(-50%) translateX(-50%);
          transform: translateY(-50%) translateX(-50%);
  width: 100%;
}
.bottom-cta-link h2 {
  color: #fff;
  font-size: 5em;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
}
.bottom-cta-link .btn {
  margin-top: 70px;
}

@media screen and (min-width: 50em) {
  .bottom-cta-link {
    background-color: #98694c;
    max-height: 700px;
  }
  .bottom-cta-link:hover, .bottom-cta-link:focus {
    background-color: transparent;
  }
  .bottom-cta-link h2 {
    font-size: 9.6em;
  }
}
/* ==========================================================================
   COMPONENTS/_LOCATIONS.SCSS
   ========================================================================== */
.city {
  margin-bottom: 10%;
  text-align: center;
}
.city .location {
  margin-bottom: 4em;
}
.city .caption {
  margin-top: 1em;
}
.city .disclaimer {
  font-size: 1em;
  margin-top: 25%;
}
.city > div {
  margin: 10% auto;
}
.city address,
.city .contained-within {
  font-size: 1.6em;
  font-style: normal;
  margin-bottom: 0.5em;
}
.city .tel {
  display: block;
  font-size: 1.4em;
  font-weight: 300;
}
.city .tel a {
  color: #98694c;
  text-decoration: none;
}
.city p {
  font-size: 1.4em;
  margin-top: 1em;
}
.city .btn {
  margin-top: 50px;
}

@media screen and (min-width: 46.8em) {
  .food-hero .owl-carousel.locations {
    margin-top: 5%;
  }
}
@media screen and (min-width: 50em) {
  .city {
    margin-bottom: 6%;
  }
  .city .disclaimer {
    margin-top: 10%;
  }
  .city > div {
    margin: 5% auto;
  }
  .city address,
  .city .contained-within {
    font-size: 2.4em;
  }
  .city .tel {
    font-size: 1.6em;
  }
  .city .location-group {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
        -ms-flex-flow: row wrap;
            flex-flow: row wrap;
    -webkit-box-pack: center;
        -ms-flex-pack: center;
            justify-content: center;
    padding: 0 2.5%;
  }
  .city .location-group.milan .location {
    padding: 0 2.5% 5%;
    width: 28.333333%;
  }
  .city .location-group.milan .location:nth-child(3):after {
    content: '';
    -webkit-box-ordinal-group: 2;
        -ms-flex-order: 1;
            order: 1;
    width: 100%;
  }
  .city p {
    font-size: 1.6em;
  }
}
.italian-summer .wrapper {
  max-width: 1180px;
  margin: auto;
}
.italian-summer #intro {
  padding-top: 115px;
}
@media screen and (min-width: 768px) {
  .italian-summer #intro {
    padding-top: 135px;
  }
}
@media screen and (min-width: 1024px) {
  .italian-summer #intro {
    padding-top: 145px;
  }
}
.italian-summer__hero {
  background: url("/_ui/img/italian-summer/summer-intro.jpg") no-repeat center/cover;
  min-height: 300px;
  margin-top: -120px;
}
@media screen and (min-width: 768px) {
  .italian-summer__hero {
    min-height: 550px;
    margin-top: -210px;
  }
}
@media screen and (min-width: 1024px) {
  .italian-summer__hero {
    min-height: 600px;
    margin-top: -275px;
  }
}
@media screen and (min-width: 1200px) {
  .italian-summer__hero {
    min-height: 700px;
    margin-top: -260px;
  }
}
.italian-summer__tagline {
  max-width: 300px;
  margin: auto;
  position: relative;
  z-index: 100;
  padding: 0 1rem;
  display: block;
}
@media screen and (min-width: 768px) {
  .italian-summer__tagline {
    max-width: 500px;
  }
}
@media screen and (min-width: 1024px) {
  .italian-summer__tagline {
    max-width: 620px;
  }
}
.italian-summer__celebrate {
  padding: 3rem 1rem;
  text-align: center;
  max-width: 950px;
  margin: auto;
}
@media screen and (min-width: 768px) {
  .italian-summer__celebrate {
    padding: 4rem 1rem;
  }
}
.italian-summer__milan {
  padding: 2rem 0;
}
@media screen and (min-width: 768px) {
  .italian-summer__milan {
    padding: 3rem 0;
  }
}
@media screen and (min-width: 1200px) {
  .italian-summer__milan {
    padding: 4rem 0;
  }
}
.italian-summer__insta {
  background: #FF5C35;
  color: #fff;
  text-align: center;
  padding: 3rem 1rem;
}
@media screen and (min-width: 768px) {
  .italian-summer__insta {
    padding: 4rem 1rem;
  }
}
@media screen and (min-width: 1200px) {
  .italian-summer__insta {
    padding: 6rem 1rem;
  }
}
.italian-summer__logos {
  padding: 4rem 1rem;
}
.italian-summer footer {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  background: #98694c;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  position: static;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  padding: 2rem 2rem;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}
.italian-summer footer small {
  position: static;
  margin: 0;
}
.italian-summer .wordmark {
  position: static;
  margin-bottom: 1rem;
}
@media screen and (min-width: 768px) {
  .italian-summer .wordmark {
    margin-right: .75rem;
    margin-bottom: 0;
  }
}
.italian-summer .footer__left {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: distribute;
      justify-content: space-around;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  max-width: 200px;
  -webkit-box-flex: 1;
      -ms-flex: 1 1 200px;
          flex: 1 1 200px;
  margin: auto;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}
@media screen and (min-width: 768px) {
  .italian-summer .footer__left {
    max-width: 285px;
    -webkit-box-flex: 1;
        -ms-flex: 1 1 285px;
            flex: 1 1 285px;
    margin: 0;
  }
}
.italian-summer .notice {
  margin-top: .25rem;
}
.italian-summer .copyright {
  -webkit-box-flex: 1;
      -ms-flex: 1 1 350px;
          flex: 1 1 350px;
  max-width: 350px;
  margin: 1.5rem auto 0;
  font-size: .75rem;
}
@media screen and (min-width: 768px) {
  .italian-summer .copyright {
    margin: 0;
  }
}

.celebrate__heading {
  color: #FF5C35;
  text-transform: uppercase;
  text-align: center;
  font-size: 2rem;
  letter-spacing: 1px;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
}
@media screen and (min-width: 768px) {
  .celebrate__heading {
    font-size: 2.25rem;
  }
}
@media screen and (min-width: 1024px) {
  .celebrate__heading {
    font-size: 2.875rem;
  }
}
.celebrate__locations {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: start;
      -ms-flex-align: start;
          align-items: flex-start;
  padding: 3rem 0 2rem;
}
.celebrate__location {
  text-align: center;
  color: #FF5C35;
  -webkit-box-flex: 1;
      -ms-flex: 1 1 250px;
          flex: 1 1 250px;
  margin-bottom: 1rem;
}
.celebrate__address {
  font-size: 1.25rem;
  margin-bottom: .5rem;
  text-transform: uppercase;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
  letter-spacing: 1px;
}
.celebrate__dates {
  text-transform: uppercase;
  font-size: 1.2rem;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
  font-weight: 300;
}
.celebrate__btn {
  border: 1px solid #FF5C35;
  color: #FF5C35;
  text-transform: uppercase;
  text-align: center;
  background: #fff;
  font-size: 1.25rem;
  padding: .75rem 1.5rem;
  font-weight: 700;
  -webkit-transition: all .2s ease-in-out;
  transition: all .2s ease-in-out;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
}
.celebrate__btn:hover, .celebrate__btn:focus {
  background: #FF5C35;
  color: #fff;
}

.milan__block {
  padding: 0 0 3rem;
}
@media screen and (min-width: 768px) {
  .milan__block {
    padding: 0 0 4rem;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    max-width: 1180px;
    -webkit-box-align: center;
        -ms-flex-align: center;
            align-items: center;
  }
}
@media screen and (min-width: 768px) {
  .milan__block:nth-of-type(2n) {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: reverse;
        -ms-flex-direction: row-reverse;
            flex-direction: row-reverse;
  }
}
.milan__block:nth-of-type(2n) .milan__hero {
  background-image: url("/_ui/img/italian-summer/summer-trip.jpg");
}
@media screen and (min-width: 768px) {
  .milan__block:nth-of-type(2n) .milan__hero {
    min-height: 575px;
    width: 90%;
  }
}
@media screen and (min-width: 1024px) {
  .milan__block:nth-of-type(2n) .milan__hero {
    min-height: 675px;
  }
}
.milan__hero {
  background: url("/_ui/img/italian-summer/summer-milan.jpg") no-repeat center/cover;
  min-height: 250px;
  width: 100%;
  margin: 0;
}
@media screen and (min-width: 768px) {
  .milan__hero {
    min-height: 450px;
    width: 90%;
  }
}
@media screen and (min-width: 1024px) {
  .milan__hero {
    min-height: 500px;
  }
}
.milan__info {
  color: #FF5C35;
  margin-top: 2rem;
  width: 100%;
}
@media screen and (min-width: 768px) {
  .milan__info {
    margin: 0;
  }
}
.milan__heading {
  text-transform: uppercase;
  font-size: 1.125rem;
  letter-spacing: 1px;
  margin: 0 auto 1.75rem;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
}
.milan__content {
  max-width: 275px;
  margin: auto;
  padding: 0 1rem;
}
@media screen and (min-width: 768px) {
  .milan__content {
    padding: 0;
  }
}
.milan__copy {
  margin: 0 auto 2rem;
  font-size: .875rem;
  padding-right: 1rem;
  line-height: 1.65;
}
.milan__btn {
  border: 1px solid #FF5C35;
  color: #FF5C35;
  text-transform: uppercase;
  text-align: center;
  background: #fff;
  font-size: .875rem;
  padding: 1rem 2rem;
  font-weight: 700;
  -webkit-transition: all .2s ease-in-out;
  transition: all .2s ease-in-out;
  display: inline-block;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
}
.milan__btn:hover, .milan__btn:focus {
  background: #FF5C35;
  color: #fff;
}
.milan__disclaimer {
  margin-bottom: 2rem;
  font-weight: 400;
  line-height: 1.5;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
  font-size: .65rem;
}

.logos__wrap {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  max-width: 980px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin: auto;
}
.logos__img {
  max-width: 100%;
  -webkit-box-flex: 1;
      -ms-flex: 1 1 250px;
          flex: 1 1 250px;
  padding: 0 1rem;
  margin: 1rem auto 2rem;
  display: block;
}
@media screen and (min-width: 768px) {
  .logos__img {
    margin: 1rem auto;
  }
}

.insta__img {
  max-width: 100%;
}
.insta__slider {
  background: transparent;
}
.insta__stage {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: justify;
      -ms-flex-pack: justify;
          justify-content: space-between;
}
.insta__heading {
  text-transform: uppercase;
  font-size: 3rem;
  letter-spacing: 1px;
  margin-bottom: 0;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
}
.insta__tags {
  text-transform: uppercase;
  font-weight: 700;
  font-size: 1.2rem;
  letter-spacing: 1px;
  margin-bottom: 3rem;
  font-family: "TradeGothicLT-BoldCondTwenty", sans-serif;
}

.it-summer-snipe {
  background: #FF5C35;
  padding: .75rem;
  position: relative;
  z-index: 10;
  text-align: center;
}
.it-summer-snipe__wrap {
  max-width: 925px;
  margin: auto;
}
@media screen and (min-width: 920px) {
  .it-summer-snipe__wrap {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
        -ms-flex-pack: justify;
            justify-content: space-between;
    -webkit-box-align: baseline;
        -ms-flex-align: baseline;
            align-items: baseline;
  }
}
.it-summer-snipe__left, .it-summer-snipe__right {
  color: #fff;
  text-transform: uppercase;
  font-family: "Futura", sans-serif;
  font-weight: 700;
  margin: 0;
  font-size: .675rem;
  letter-spacing: 2px;
  -webkit-box-flex: 1;
      -ms-flex: 1 1 auto;
          flex: 1 1 auto;
}
@media screen and (min-width: 1024px) {
  .it-summer-snipe__left, .it-summer-snipe__right {
    font-size: .875rem;
  }
}
.it-summer-snipe__left {
  margin-bottom: .5rem;
}
@media screen and (min-width: 920px) {
  .it-summer-snipe__left {
    margin-bottom: 0;
  }
  .it-summer-snipe__left:after {
    content: '|';
    margin-left: 2rem;
  }
}
.it-summer-snipe__link {
  color: #fff;
}
.it-summer-snipe__summer {
  max-width: 55px;
  display: inline-block;
  margin-right: .25rem;
}

.no-snipe {
  margin-top: 0;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlcyI6WyJtYWluLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAY2hhcnNldCBcIlVURi04XCI7XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTUFJTi5TQ1NTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyoqXG4gKlxuICogTUFJTi5DU1MgJiBNQUlOLk1JTi5DU1MgYXJlIGNvbXBpbGVkIHVzaW5nIHRoZSBpbXBvcnRzIGZyb20gdGhpcyBmaWxlLlxuICpcbiAqIFRvIGFkZCBuZXcgc3R5bGVzIGFuZCBjb21wb25lbnRzLCBpbXBvcnQgdGhlbSBpbiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbnMgYmVsb3cuXG4gKlxuICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVMUEVSUy9fVkFSSUFCTEVTLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVMUEVSUy9fTUlYSU5TLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVMUEVSUy9fUkVTRVQuU0NTU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qIEJvcmRlci1Cb3ggaHR0cDovcGF1bGlyaXNoLmNvbS8yMDEyL2JveC1zaXppbmctYm9yZGVyLWJveC1mdHcvICovXG5AaW1wb3J0IHVybChcIi8vaGVsbG8ubXlmb250cy5uZXQvY291bnQvMzRhNzU4XCIpO1xuQGltcG9ydCB1cmwoXCIvL2hlbGxvLm15Zm9udHMubmV0L2NvdW50LzM0YWE3Y1wiKTtcbkBpbXBvcnQgdXJsKFwiLy9oZWxsby5teWZvbnRzLm5ldC9jb3VudC8zNGQwZTBcIik7XG4qIHtcbiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbmh0bWwsIGJvZHksIGRpdiwgb2JqZWN0LCBpZnJhbWUsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIG9sLCB1bCwgbGksIGZvcm0sIGxlZ2VuZCwgbGFiZWwsIHRhYmxlLCBoZWFkZXIsIGZvb3RlciwgbmF2LCBzZWN0aW9uLCBmaWd1cmUge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmhlYWRlciwgZm9vdGVyLCBuYXYsIHNlY3Rpb24sIGFydGljbGUsIGhncm91cCwgZmlndXJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbnN1Yiwgc3VwIHtcbiAgLyogU3BlY2lmaWVkIGluICUgc28gdGhhdCB0aGUgc3VwL3N1cCBpcyB0aGVcbiAgICAgcmlnaHQgc2l6ZSByZWxhdGl2ZSB0byB0aGUgc3Vycm91bmRpbmcgdGV4dCAqL1xuICBmb250LXNpemU6IDc1JTtcbiAgLyogWmVybyBvdXQgdGhlIGxpbmUtaGVpZ2h0IHNvIHRoYXQgaXQgZG9lc24ndFxuICAgICBpbnRlcmZlcmUgd2l0aCB0aGUgcG9zaXRpb25pbmcgdGhhdCBmb2xsb3dzICovXG4gIGxpbmUtaGVpZ2h0OiAwO1xuICAvKiBXaGVyZSB0aGUgbWFnaWMgaGFwcGVuczogbWFrZXMgYWxsIGJyb3dzZXJzIHBvc2l0aW9uXG4gICAgIHRoZSBzdXAvc3VwIHByb3Blcmx5LCByZWxhdGl2ZSB0byB0aGUgc3Vycm91bmRpbmcgdGV4dCAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8qIE5vdGUgdGhhdCBpZiB5b3UncmUgdXNpbmcgRXJpYyBNZXllcidzIHJlc2V0LmNzcywgdGhpc1xuICAgICBpcyBhbHJlYWR5IHNldCBhbmQgeW91IGNhbiByZW1vdmUgdGhpcyBydWxlICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3VwIHtcbiAgLyogTW92ZSB0aGUgc3VwZXJzY3JpcHRlZCB0ZXh0IHVwICovXG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICAvKiBNb3ZlIHRoZSBzdWJzY3JpcHRlZCB0ZXh0IGRvd24sIGJ1dCBvbmx5XG4gICAgIGhhbGYgYXMgZmFyIGRvd24gYXMgdGhlIHN1cGVyc2NyaXB0IG1vdmVkIHVwICovXG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuLyohXG4gKiBhbmltYXRlLmNzcyAtaHR0cDovL2RhbmVkZW4ubWUvYW5pbWF0ZVxuICogVmVyc2lvbiAtIDMuNS4yXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgLSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE3IERhbmllbCBFZGVuXG4gKi9cbi5hbmltYXRlZCB7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMXM7XG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XG59XG5cbi5hbmltYXRlZC5pbmZpbml0ZSB7XG4gIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlO1xufVxuXG4uYW5pbWF0ZWQuaGluZ2Uge1xuICBhbmltYXRpb24tZHVyYXRpb246IDJzO1xufVxuXG4uYW5pbWF0ZWQuZmxpcE91dFgsXG4uYW5pbWF0ZWQuZmxpcE91dFksXG4uYW5pbWF0ZWQuYm91bmNlSW4sXG4uYW5pbWF0ZWQuYm91bmNlT3V0IHtcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuNzVzO1xufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZSB7XG4gIGZyb20sIDIwJSwgNTMlLCA4MCUsIHRvIHtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG4gIDQwJSwgNDMlIHtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC43NTUsIDAuMDUsIDAuODU1LCAwLjA2KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0zMHB4LCAwKTtcbiAgfVxuICA3MCUge1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjc1NSwgMC4wNSwgMC44NTUsIDAuMDYpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTE1cHgsIDApO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtNHB4LCAwKTtcbiAgfVxufVxuLmJvdW5jZSB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2U7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207XG59XG5cbkBrZXlmcmFtZXMgZmxhc2gge1xuICBmcm9tLCA1MCUsIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDI1JSwgNzUlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4uZmxhc2gge1xuICBhbmltYXRpb24tbmFtZTogZmxhc2g7XG59XG5cbi8qIG9yaWdpbmFsbHkgYXV0aG9yZWQgYnkgTmljayBQZXR0aXQgLSBodHRwczovL2dpdGh1Yi5jb20vbmlja3BldHRpdC9nbGlkZSAqL1xuQGtleWZyYW1lcyBwdWxzZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAxLjA1LCAxLjA1KTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICB9XG59XG4ucHVsc2Uge1xuICBhbmltYXRpb24tbmFtZTogcHVsc2U7XG59XG5cbkBrZXlmcmFtZXMgcnViYmVyQmFuZCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjI1LCAwLjc1LCAxKTtcbiAgfVxuICA0MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAxLjI1LCAxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjE1LCAwLjg1LCAxKTtcbiAgfVxuICA2NSUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjk1LCAxLjA1LCAxKTtcbiAgfVxuICA3NSUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjA1LCAwLjk1LCAxKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICB9XG59XG4ucnViYmVyQmFuZCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBydWJiZXJCYW5kO1xufVxuXG5Aa2V5ZnJhbWVzIHNoYWtlIHtcbiAgZnJvbSwgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbiAgMTAlLCAzMCUsIDUwJSwgNzAlLCA5MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTEwcHgsIDAsIDApO1xuICB9XG4gIDIwJSwgNDAlLCA2MCUsIDgwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMHB4LCAwLCAwKTtcbiAgfVxufVxuLnNoYWtlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNoYWtlO1xufVxuXG5Aa2V5ZnJhbWVzIGhlYWRTaGFrZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cbiAgNi41JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC02cHgpIHJvdGF0ZVkoLTlkZWcpO1xuICB9XG4gIDE4LjUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KSByb3RhdGVZKDdkZWcpO1xuICB9XG4gIDMxLjUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTNweCkgcm90YXRlWSgtNWRlZyk7XG4gIH1cbiAgNDMuNSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZyk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gIH1cbn1cbi5oZWFkU2hha2Uge1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcbiAgYW5pbWF0aW9uLW5hbWU6IGhlYWRTaGFrZTtcbn1cblxuQGtleWZyYW1lcyBzd2luZyB7XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAxNWRlZyk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIC0xMGRlZyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDVkZWcpO1xuICB9XG4gIDgwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNWRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgMGRlZyk7XG4gIH1cbn1cbi5zd2luZyB7XG4gIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7XG4gIGFuaW1hdGlvbi1uYW1lOiBzd2luZztcbn1cblxuQGtleWZyYW1lcyB0YWRhIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEsIDEsIDEpO1xuICB9XG4gIDEwJSwgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC45LCAwLjksIDAuOSkgcm90YXRlM2QoMCwgMCwgMSwgLTNkZWcpO1xuICB9XG4gIDMwJSwgNTAlLCA3MCUsIDkwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpO1xuICB9XG4gIDQwJSwgNjAlLCA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjEsIDEuMSwgMS4xKSByb3RhdGUzZCgwLCAwLCAxLCAtM2RlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLCAxLCAxKTtcbiAgfVxufVxuLnRhZGEge1xuICBhbmltYXRpb24tbmFtZTogdGFkYTtcbn1cblxuLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovXG5Aa2V5ZnJhbWVzIHdvYmJsZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxuICAxNSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTI1JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTVkZWcpO1xuICB9XG4gIDMwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMCUsIDAsIDApIHJvdGF0ZTNkKDAsIDAsIDEsIDNkZWcpO1xuICB9XG4gIDQ1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTUlLCAwLCAwKSByb3RhdGUzZCgwLCAwLCAxLCAtM2RlZyk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgMmRlZyk7XG4gIH1cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC01JSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTFkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi53b2JibGUge1xuICBhbmltYXRpb24tbmFtZTogd29iYmxlO1xufVxuXG5Aa2V5ZnJhbWVzIGplbGxvIHtcbiAgZnJvbSwgMTEuMSUsIHRvIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbiAgMjIuMiUge1xuICAgIHRyYW5zZm9ybTogc2tld1goLTEyLjVkZWcpIHNrZXdZKC0xMi41ZGVnKTtcbiAgfVxuICAzMy4zJSB7XG4gICAgdHJhbnNmb3JtOiBza2V3WCg2LjI1ZGVnKSBza2V3WSg2LjI1ZGVnKTtcbiAgfVxuICA0NC40JSB7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgtMy4xMjVkZWcpIHNrZXdZKC0zLjEyNWRlZyk7XG4gIH1cbiAgNTUuNSUge1xuICAgIHRyYW5zZm9ybTogc2tld1goMS41NjI1ZGVnKSBza2V3WSgxLjU2MjVkZWcpO1xuICB9XG4gIDY2LjYlIHtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKC0wLjc4MTI1ZGVnKSBza2V3WSgtMC43ODEyNWRlZyk7XG4gIH1cbiAgNzcuNyUge1xuICAgIHRyYW5zZm9ybTogc2tld1goMC4zOTA2MjVkZWcpIHNrZXdZKDAuMzkwNjI1ZGVnKTtcbiAgfVxuICA4OC44JSB7XG4gICAgdHJhbnNmb3JtOiBza2V3WCgtMC4xOTUzMTI1ZGVnKSBza2V3WSgtMC4xOTUzMTI1ZGVnKTtcbiAgfVxufVxuLmplbGxvIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGplbGxvO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlSW4ge1xuICBmcm9tLCAyMCUsIDQwJSwgNjAlLCA4MCUsIHRvIHtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgfVxuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7XG4gIH1cbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMS4xLCAxLjEsIDEuMSk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC45LCAwLjksIDAuOSk7XG4gIH1cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgxLjAzLCAxLjAzLCAxLjAzKTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjk3LCAwLjk3LCAwLjk3KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMSwgMSwgMSk7XG4gIH1cbn1cbi5ib3VuY2VJbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbjtcbn1cblxuQGtleWZyYW1lcyBib3VuY2VJbkRvd24ge1xuICBmcm9tLCA2MCUsIDc1JSwgOTAlLCB0byB7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XG4gIH1cbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMzAwMHB4LCAwKTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyNXB4LCAwKTtcbiAgfVxuICA3NSUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwcHgsIDApO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA1cHgsIDApO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi5ib3VuY2VJbkRvd24ge1xuICBhbmltYXRpb24tbmFtZTogYm91bmNlSW5Eb3duO1xufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZUluTGVmdCB7XG4gIGZyb20sIDYwJSwgNzUlLCA5MCUsIHRvIHtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgfVxuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zMDAwcHgsIDAsIDApO1xuICB9XG4gIDYwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDI1cHgsIDAsIDApO1xuICB9XG4gIDc1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTBweCwgMCwgMCk7XG4gIH1cbiAgOTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDVweCwgMCwgMCk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuLmJvdW5jZUluTGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJbkxlZnQ7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlSW5SaWdodCB7XG4gIGZyb20sIDYwJSwgNzUlLCA5MCUsIHRvIHtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4yMTUsIDAuNjEsIDAuMzU1LCAxKTtcbiAgfVxuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMzAwMHB4LCAwLCAwKTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjVweCwgMCwgMCk7XG4gIH1cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApO1xuICB9XG4gIDkwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtNXB4LCAwLCAwKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG4uYm91bmNlSW5SaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VJblJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZUluVXAge1xuICBmcm9tLCA2MCUsIDc1JSwgOTAlLCB0byB7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSk7XG4gIH1cbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDMwMDBweCwgMCk7XG4gIH1cbiAgNjAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTIwcHgsIDApO1xuICB9XG4gIDc1JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMHB4LCAwKTtcbiAgfVxuICA5MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTVweCwgMCk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cbi5ib3VuY2VJblVwIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZUluVXA7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlT3V0IHtcbiAgMjAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC45LCAwLjksIDAuOSk7XG4gIH1cbiAgNTAlLCA1NSUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDEuMSwgMS4xLCAxLjEpO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTtcbiAgfVxufVxuLmJvdW5jZU91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBib3VuY2VPdXQ7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlT3V0RG93biB7XG4gIDIwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMHB4LCAwKTtcbiAgfVxuICA0MCUsIDQ1JSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMHB4LCAwKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDIwMDBweCwgMCk7XG4gIH1cbn1cbi5ib3VuY2VPdXREb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dERvd247XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlT3V0TGVmdCB7XG4gIDIwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIwcHgsIDAsIDApO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIwMDBweCwgMCwgMCk7XG4gIH1cbn1cbi5ib3VuY2VPdXRMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dExlZnQ7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlT3V0UmlnaHQge1xuICAyMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjBweCwgMCwgMCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApO1xuICB9XG59XG4uYm91bmNlT3V0UmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogYm91bmNlT3V0UmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgYm91bmNlT3V0VXAge1xuICAyMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwcHgsIDApO1xuICB9XG4gIDQwJSwgNDUlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjBweCwgMCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKTtcbiAgfVxufVxuLmJvdW5jZU91dFVwIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGJvdW5jZU91dFVwO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5mYWRlSW4ge1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuLmZhZGVJbkRvd24ge1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluRG93bjtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5Eb3duQmlnIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMDAwcHgsIDApO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuLmZhZGVJbkRvd25CaWcge1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluRG93bkJpZztcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5MZWZ0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi5mYWRlSW5MZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnQ7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluTGVmdEJpZyB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi5mYWRlSW5MZWZ0QmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJbkxlZnRCaWc7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluUmlnaHQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG4uZmFkZUluUmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogZmFkZUluUmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluUmlnaHRCaWcge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi5mYWRlSW5SaWdodEJpZyB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5SaWdodEJpZztcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5VcCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAxMDAlLCAwKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gIH1cbn1cbi5mYWRlSW5VcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlSW5VcDtcbn1cblxuQGtleWZyYW1lcyBmYWRlSW5VcEJpZyB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAyMDAwcHgsIDApO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgfVxufVxuLmZhZGVJblVwQmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVJblVwQmlnO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4uZmFkZU91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0O1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXREb3duIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG4uZmFkZU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogZmFkZU91dERvd247XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dERvd25CaWcge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTtcbiAgfVxufVxuLmZhZGVPdXREb3duQmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXREb3duQmlnO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXRMZWZ0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgfVxufVxuLmZhZGVPdXRMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRMZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXRMZWZ0QmlnIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0yMDAwcHgsIDAsIDApO1xuICB9XG59XG4uZmFkZU91dExlZnRCaWcge1xuICBhbmltYXRpb24tbmFtZTogZmFkZU91dExlZnRCaWc7XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dFJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApO1xuICB9XG59XG4uZmFkZU91dFJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRSaWdodDtcbn1cblxuQGtleWZyYW1lcyBmYWRlT3V0UmlnaHRCaWcge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjAwMHB4LCAwLCAwKTtcbiAgfVxufVxuLmZhZGVPdXRSaWdodEJpZyB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0UmlnaHRCaWc7XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dFVwIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgfVxufVxuLmZhZGVPdXRVcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0VXA7XG59XG5cbkBrZXlmcmFtZXMgZmFkZU91dFVwQmlnIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0yMDAwcHgsIDApO1xuICB9XG59XG4uZmFkZU91dFVwQmlnIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGZhZGVPdXRVcEJpZztcbn1cblxuQGtleWZyYW1lcyBmbGlwIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTM2MGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGUzZCgwLCAwLCAxNTBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTE5MGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGUzZCgwLCAwLCAxNTBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTE3MGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHNjYWxlM2QoMC45NSwgMC45NSwgMC45NSk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgfVxufVxuLmFuaW1hdGVkLmZsaXAge1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IHZpc2libGU7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbGlwO1xufVxuXG5Aa2V5ZnJhbWVzIGZsaXBJblgge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCA5MGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgLTIwZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMSwgMCwgMCwgMTBkZWcpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAtNWRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpO1xuICB9XG59XG4uZmxpcEluWCB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbGlwSW5YO1xufVxuXG5Aa2V5ZnJhbWVzIGZsaXBJblkge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCA5MGRlZyk7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDQwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgLTIwZGVnKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xuICB9XG4gIDYwJSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgMTBkZWcpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgwLCAxLCAwLCAtNWRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpO1xuICB9XG59XG4uZmxpcEluWSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbGlwSW5ZO1xufVxuXG5Aa2V5ZnJhbWVzIGZsaXBPdXRYIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCk7XG4gIH1cbiAgMzAlIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGUzZCgxLCAwLCAwLCAtMjBkZWcpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDEsIDAsIDAsIDkwZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4uZmxpcE91dFgge1xuICBhbmltYXRpb24tbmFtZTogZmxpcE91dFg7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG59XG5cbkBrZXlmcmFtZXMgZmxpcE91dFkge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDQwMHB4KTtcbiAgfVxuICAzMCUge1xuICAgIHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZTNkKDAsIDEsIDAsIC0xNWRlZyk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlM2QoMCwgMSwgMCwgOTBkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbi5mbGlwT3V0WSB7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiB2aXNpYmxlICFpbXBvcnRhbnQ7XG4gIGFuaW1hdGlvbi1uYW1lOiBmbGlwT3V0WTtcbn1cblxuQGtleWZyYW1lcyBsaWdodFNwZWVkSW4ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHNrZXdYKC0zMGRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICA2MCUge1xuICAgIHRyYW5zZm9ybTogc2tld1goMjBkZWcpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgODAlIHtcbiAgICB0cmFuc2Zvcm06IHNrZXdYKC01ZGVnKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLmxpZ2h0U3BlZWRJbiB7XG4gIGFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkSW47XG4gIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2Utb3V0O1xufVxuXG5Aa2V5ZnJhbWVzIGxpZ2h0U3BlZWRPdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDEwMCUsIDAsIDApIHNrZXdYKDMwZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4ubGlnaHRTcGVlZE91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBsaWdodFNwZWVkT3V0O1xuICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluO1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZUluIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTIwMGRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4ucm90YXRlSW4ge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlSW47XG59XG5cbkBrZXlmcmFtZXMgcm90YXRlSW5Eb3duTGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLnJvdGF0ZUluRG93bkxlZnQge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5Eb3duTGVmdDtcbn1cblxuQGtleWZyYW1lcyByb3RhdGVJbkRvd25SaWdodCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5yb3RhdGVJbkRvd25SaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVJbkRvd25SaWdodDtcbn1cblxuQGtleWZyYW1lcyByb3RhdGVJblVwTGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgNDVkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4ucm90YXRlSW5VcExlZnQge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5VcExlZnQ7XG59XG5cbkBrZXlmcmFtZXMgcm90YXRlSW5VcFJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTkwZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5yb3RhdGVJblVwUmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlSW5VcFJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZU91dCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAyMDBkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbi5yb3RhdGVPdXQge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0O1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZU91dERvd25MZWZ0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCBib3R0b207XG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA0NWRlZyk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuLnJvdGF0ZU91dERvd25MZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dERvd25MZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZU91dERvd25SaWdodCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBib3R0b207XG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCAtNDVkZWcpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbi5yb3RhdGVPdXREb3duUmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogcm90YXRlT3V0RG93blJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZU91dFVwTGVmdCB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgYm90dG9tO1xuICAgIHRyYW5zZm9ybTogcm90YXRlM2QoMCwgMCwgMSwgLTQ1ZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4ucm90YXRlT3V0VXBMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHJvdGF0ZU91dFVwTGVmdDtcbn1cblxuQGtleWZyYW1lcyByb3RhdGVPdXRVcFJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgYm90dG9tO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGJvdHRvbTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDkwZGVnKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4ucm90YXRlT3V0VXBSaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiByb3RhdGVPdXRVcFJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIGhpbmdlIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHRvcCBsZWZ0O1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xuICB9XG4gIDIwJSwgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZTNkKDAsIDAsIDEsIDgwZGVnKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcbiAgfVxuICA0MCUsIDgwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUzZCgwLCAwLCAxLCA2MGRlZyk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogdG9wIGxlZnQ7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbi1vdXQ7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA3MDBweCwgMCk7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuLmhpbmdlIHtcbiAgYW5pbWF0aW9uLW5hbWU6IGhpbmdlO1xufVxuXG5Aa2V5ZnJhbWVzIGphY2tJblRoZUJveCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjEpIHJvdGF0ZSgzMGRlZyk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC0xMGRlZyk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzZGVnKTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG4uamFja0luVGhlQm94IHtcbiAgYW5pbWF0aW9uLW5hbWU6IGphY2tJblRoZUJveDtcbn1cblxuLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovXG5Aa2V5ZnJhbWVzIHJvbGxJbiB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgLTEyMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBub25lO1xuICB9XG59XG4ucm9sbEluIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHJvbGxJbjtcbn1cblxuLyogb3JpZ2luYWxseSBhdXRob3JlZCBieSBOaWNrIFBldHRpdCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9uaWNrcGV0dGl0L2dsaWRlICovXG5Aa2V5ZnJhbWVzIHJvbGxPdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTAwJSwgMCwgMCkgcm90YXRlM2QoMCwgMCwgMSwgMTIwZGVnKTtcbiAgfVxufVxuLnJvbGxPdXQge1xuICBhbmltYXRpb24tbmFtZTogcm9sbE91dDtcbn1cblxuQGtleWZyYW1lcyB6b29tSW4ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjMsIDAuMywgMC4zKTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi56b29tSW4ge1xuICBhbmltYXRpb24tbmFtZTogem9vbUluO1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21JbkRvd24ge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgwLCAtMTAwMHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIDYwcHgsIDApO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpO1xuICB9XG59XG4uem9vbUluRG93biB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5Eb3duO1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21JbkxlZnQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjEsIDAuMSwgMC4xKSB0cmFuc2xhdGUzZCgtMTAwMHB4LCAwLCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDEwcHgsIDAsIDApO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpO1xuICB9XG59XG4uem9vbUluTGVmdCB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tSW5MZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21JblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMTAwMHB4LCAwLCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKC0xMHB4LCAwLCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTtcbiAgfVxufVxuLnpvb21JblJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21JblJpZ2h0O1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21JblVwIHtcbiAgZnJvbSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgMTAwMHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcbiAgfVxuICA2MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIC02MHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTtcbiAgfVxufVxuLnpvb21JblVwIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21JblVwO1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21PdXQge1xuICBmcm9tIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4zLCAwLjMsIDAuMyk7XG4gIH1cbiAgdG8ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbi56b29tT3V0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21PdXQ7XG59XG5cbkBrZXlmcmFtZXMgem9vbU91dERvd24ge1xuICA0MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDAsIC02MHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEpO1xuICB9XG59XG4uem9vbU91dERvd24ge1xuICBhbmltYXRpb24tbmFtZTogem9vbU91dERvd247XG59XG5cbkBrZXlmcmFtZXMgem9vbU91dExlZnQge1xuICA0MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAuNDc1LCAwLjQ3NSwgMC40NzUpIHRyYW5zbGF0ZTNkKDQycHgsIDAsIDApO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC4xKSB0cmFuc2xhdGUzZCgtMjAwMHB4LCAwLCAwKTtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjtcbiAgfVxufVxuLnpvb21PdXRMZWZ0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHpvb21PdXRMZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIHpvb21PdXRSaWdodCB7XG4gIDQwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoLTQycHgsIDAsIDApO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC4xKSB0cmFuc2xhdGUzZCgyMDAwcHgsIDAsIDApO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjtcbiAgfVxufVxuLnpvb21PdXRSaWdodCB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0UmlnaHQ7XG59XG5cbkBrZXlmcmFtZXMgem9vbU91dFVwIHtcbiAgNDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgwLCA2MHB4LCAwKTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTtcbiAgfVxuICB0byB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgLTIwMDBweCwgMCk7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTtcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTtcbiAgfVxufVxuLnpvb21PdXRVcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiB6b29tT3V0VXA7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkRvd24ge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIC0xMDAlLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG4uc2xpZGVJbkRvd24ge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkRvd247XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJbkxlZnQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG4uc2xpZGVJbkxlZnQge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJbkxlZnQ7XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVJblJpZ2h0IHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG59XG4uc2xpZGVJblJpZ2h0IHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlSW5SaWdodDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZUluVXAge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbn1cbi5zbGlkZUluVXAge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVJblVwO1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0RG93biB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cbiAgdG8ge1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDEwMCUsIDApO1xuICB9XG59XG4uc2xpZGVPdXREb3duIHtcbiAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlT3V0RG93bjtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dExlZnQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTAwJSwgMCwgMCk7XG4gIH1cbn1cbi5zbGlkZU91dExlZnQge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRMZWZ0O1xufVxuXG5Aa2V5ZnJhbWVzIHNsaWRlT3V0UmlnaHQge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICB9XG4gIHRvIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxMDAlLCAwLCAwKTtcbiAgfVxufVxuLnNsaWRlT3V0UmlnaHQge1xuICBhbmltYXRpb24tbmFtZTogc2xpZGVPdXRSaWdodDtcbn1cblxuQGtleWZyYW1lcyBzbGlkZU91dFVwIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuICB0byB7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgLTEwMCUsIDApO1xuICB9XG59XG4uc2xpZGVPdXRVcCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBzbGlkZU91dFVwO1xufVxuXG4vKipcbiAqIFByb2ZvdW5kIEdyaWRcbiAqXG4gKiBCdWlsdCBpbiBTYXNzIChTQ1NTKSB0aGlzIHJlc3BvbnNpdmUvYWRhcHRpdmUgZ3JpZCBzdXBwb3J0cyBib3RoIGZpeGVkIGFuZCBmbHVpZCBsYXlvdXRzLFxuICogcmVsYXRpdmUgYW5kIGZpeGVkIGd1dHRlcnMsIGFzIHdlbGwgYXMgeW91ciBjaG9pY2Ugb2Ygc2VtYW50aWMgbWFya3VwIG9yIGdlbmVyaWMgJy5ncmlkLXgnIGNsYXNzZXMuXG4gKlxuICogVGhlIGJpZ2dlc3QgZGlmZmVyZW5jZSB0byBvdGhlciBncmlkIHN5c3RlbXMgaXMgdGhlIHVzZSBvZiBuZWdhdGl2ZSBtYXJnaW5zIGZvciBjb2x1bW5cbiAqIHBsYWNlbWVudHMsIGF2b2lkaW5nIHRoZSBzdWJwaXhlbCByb3VuZGluZyBpc3N1ZXMgdGhhdCB1c3VhbGx5IGJyZWFrL3VnbGlmeSBmbHVpZCBsYXlvdXRzXG4gKiBpbiBzb21lIGJyb3dzZXJzLlxuICpcbiAqIE5lc3RlZCBjb2x1bW5zIGFyZSBzdXBwb3J0ZWQgdG9vLCB3aXRob3V0IGhhdmluZyB0byByZXNldCB0aGUgZ3JpZCBvbiBlYWNoIGxldmVsLlxuICpcbiAqIENyZWRpdHMvSW5zcGlyYXRpb246XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZW1hbnRpYyBHcmlkOiBodHRwOi8vd3d3LnNlbWFudGljLmdzXG4gKiBTdXN5OiBodHRwOi8vc3VzeS5vZGRiaXJkLm5ldFxuICogTmVnYXRpdmUgR3JpZDogaHR0cDovL2NocmlzcGxhbmV0YS5jb20vZnJlZWJpZXMvbmVnYXRpdmVncmlkLWZsdWlkLWNzcy1ncmlkLWJ5LWNocmlzLXBsYW5ldGEvXG4gKlxuICogQGF1dGhvciBQcm9mb3VuZCBDcmVhdGl2ZSBTdHVkaW9cbiAqIEB1cmwgaHR0cDovL3d3dy5wcm9mb3VuZGdyaWQuY29tXG4gKiBAdXJsIGh0dHA6Ly93d3cud2VhcmVwcm9mb3VuZC5jb21cbiAqL1xuLyoqXG4gKiBDbGVhcmZpeFxuICovXG4vKipcbiAqIExlZ2FjeSBDbGVhcmZpeFxuICovXG4vKipcbiAqIEVzdGFibGlzaCB0aGUgZ3JpZC1jb250YWluaW5nIGVsZW1lbnQuXG4gKi9cbi8qKlxuICogQWxpZ24gYW4gZWxlbWVudCB0byB0aGUgZ3JpZC5cbiAqL1xuLyoqXG4gKiBBcHBseSB0byBhbnkgY29sdW1uIHRvIG1ha2UgaXQgdGhlIGxhc3Qgb25lIG9mIHRoZSBjdXJyZW50IHJvdy5cbiAqL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJBU0UvX0xJTktTLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuYTpob3ZlciwgYTpmb2N1cyB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCQVNFL19MSVNUUy5TQ1NTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xub2wge1xuICBtYXJnaW4tbGVmdDogMS41ZW07XG59XG5cbnVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJBU0UvX01FRElBLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5pbWcsIG9iamVjdCB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG5pZnJhbWUge1xuICBtYXJnaW4tYm90dG9tOiAxZW07XG59XG5cbmZpZ3VyZSB7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbn1cbmZpZ3VyZSBpbWcge1xuICBtYXJnaW4tYm90dG9tOiAwLjI1ZW07XG59XG5cbmZpZ2NhcHRpb24ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbnZpZGVvIHtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IGF1dG87XG4gIGxlZnQ6IDA7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1MCU7XG4gIHdpZHRoOiAxMDB2dztcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICB6LWluZGV4OiAtMTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICB2aWRlbyB7XG4gICAgbGVmdDogNTAlO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWluLWhlaWdodDogMTAwdmg7XG4gICAgbWluLXdpZHRoOiAxMDB2dztcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJBU0UvX0ZPTlRTLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBAaW1wb3J0IG11c3QgYmUgYXQgdG9wIG9mIGZpbGUsIG90aGVyd2lzZSBDU1Mgd2lsbCBub3Qgd29yayAqL1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRnV0dXJhJztcbiAgc3JjOiB1cmwoXCIvX3VpL2ZvbnRzLzM0QTc1OF8wXzAuZW90XCIpO1xuICBzcmM6IHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzBfMC5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLCB1cmwoXCIvX3VpL2ZvbnRzLzM0QTc1OF8wXzAud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzBfMC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzBfMC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0Z1dHVyYSc7XG4gIHNyYzogdXJsKFwiL191aS9mb250cy8zNEE3NThfMV8wLmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIvX3VpL2ZvbnRzLzM0QTc1OF8xXzAuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgdXJsKFwiL191aS9mb250cy8zNEE3NThfMV8wLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCB1cmwoXCIvX3VpL2ZvbnRzLzM0QTc1OF8xXzAud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIvX3VpL2ZvbnRzLzM0QTc1OF8xXzAudHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpO1xuICBmb250LXdlaWdodDogMzAwO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdGdXR1cmEnO1xuICBzcmM6IHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzNfMC5lb3RcIik7XG4gIHNyYzogdXJsKFwiL191aS9mb250cy8zNEE3NThfM18wLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzNfMC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiL191aS9mb250cy8zNEE3NThfM18wLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiL191aS9mb250cy8zNEE3NThfM18wLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRnV0dXJhJztcbiAgc3JjOiB1cmwoXCIvX3VpL2ZvbnRzLzM0QTc1OF8yXzAuZW90XCIpO1xuICBzcmM6IHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzJfMC5lb3Q/I2llZml4XCIpIGZvcm1hdChcImVtYmVkZGVkLW9wZW50eXBlXCIpLCB1cmwoXCIvX3VpL2ZvbnRzLzM0QTc1OF8yXzAud29mZjJcIikgZm9ybWF0KFwid29mZjJcIiksIHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzJfMC53b2ZmXCIpIGZvcm1hdChcIndvZmZcIiksIHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzJfMC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIik7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ0Z1dHVyYSc7XG4gIHNyYzogdXJsKFwiL191aS9mb250cy8zNEQwRTBfMF8wLmVvdFwiKTtcbiAgc3JjOiB1cmwoXCIvX3VpL2ZvbnRzLzM0RDBFMF8wXzAuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSwgdXJsKFwiL191aS9mb250cy8zNEQwRTBfMF8wLndvZmYyXCIpIGZvcm1hdChcIndvZmYyXCIpLCB1cmwoXCIvX3VpL2ZvbnRzLzM0RDBFMF8wXzAud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLCB1cmwoXCIvX3VpL2ZvbnRzLzM0RDBFMF8wXzAudHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpO1xuICBmb250LXdlaWdodDogNzAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdGdXR1cmEnO1xuICBzcmM6IHVybChcIi9fdWkvZm9udHMvMzREMEUwXzFfMC5lb3RcIik7XG4gIHNyYzogdXJsKFwiL191aS9mb250cy8zNEQwRTBfMV8wLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi9fdWkvZm9udHMvMzREMEUwXzFfMC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiL191aS9mb250cy8zNEQwRTBfMV8wLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiL191aS9mb250cy8zNEQwRTBfMV8wLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRGlkb3QnO1xuICBzcmM6IHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzRfMC5lb3RcIik7XG4gIHNyYzogdXJsKFwiL191aS9mb250cy8zNEE3NThfNF8wLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi9fdWkvZm9udHMvMzRBNzU4XzRfMC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiL191aS9mb250cy8zNEE3NThfNF8wLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiL191aS9mb250cy8zNEE3NThfNF8wLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbn1cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ1RyYWRlR290aGljTFQtQm9sZENvbmRUd2VudHknO1xuICBzcmM6IHVybChcIi9fdWkvZm9udHMvMzRBQTdDXzBfMC5lb3RcIik7XG4gIHNyYzogdXJsKFwiL191aS9mb250cy8zNEFBN0NfMF8wLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksIHVybChcIi9fdWkvZm9udHMvMzRBQTdDXzBfMC53b2ZmMlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKSwgdXJsKFwiL191aS9mb250cy8zNEFBN0NfMF8wLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSwgdXJsKFwiL191aS9mb250cy8zNEFBN0NfMF8wLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuLyoqXG4gKiBAbGljZW5zZVxuICogTXlGb250cyBXZWJmb250IEJ1aWxkIElEIDM0NTA3MTIsIDIwMTctMDktMTJUMTE6NDU6MTAtMDQwMFxuICogTXlGb250cyBXZWJmb250IEJ1aWxkIElEIDM0NTE1MTYsIDIwMTctMDktMTRUMTE6MDk6MzAtMDQwMFxuICpcbiAqIFRoZSBmb250cyBsaXN0ZWQgaW4gdGhpcyBub3RpY2UgYXJlIHN1YmplY3QgdG8gdGhlIEVuZCBVc2VyIExpY2Vuc2VcbiAqIEFncmVlbWVudChzKSBlbnRlcmVkIGludG8gYnkgdGhlIHdlYnNpdGUgb3duZXIuIEFsbCBvdGhlciBwYXJ0aWVzIGFyZVxuICogZXhwbGljaXRseSByZXN0cmljdGVkIGZyb20gdXNpbmcgdGhlIExpY2Vuc2VkIFdlYmZvbnRzKHMpLlxuICpcbiAqIFlvdSBtYXkgb2J0YWluIGEgdmFsaWQgbGljZW5zZSBhdCB0aGUgVVJMcyBiZWxvdy5cbiAqXG4gKiBXZWJmb250OiBGdXR1cmFTdGQtQm9vayBieSBMaW5vdHlwZVxuICogVVJMOiBodHRwczovL3d3dy5teWZvbnRzLmNvbS9mb250cy9saW5vdHlwZS9mdXR1cmEvYm9vay9cbiAqIENvcHlyaWdodDogQ29weXJpZ2h0ICYjeDAwQTk7IDE5ODcsIDE5OTEsIDE5OTMsIDIwMDIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFdlYmZvbnQ6IEZ1dHVyYVN0ZC1Cb29rT2JsaXF1ZSBieSBMaW5vdHlwZVxuICogVVJMOiBodHRwczovL3d3dy5teWZvbnRzLmNvbS9mb250cy9saW5vdHlwZS9mdXR1cmEvYm9vay1vYmxpcXVlL1xuICogQ29weXJpZ2h0OiBDb3B5cmlnaHQgJiN4MDBBOTsgMTk4NywgMTk5MSwgMTk5MywgMjAwMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogV2ViZm9udDogRnV0dXJhU3RkLUhlYXZ5T2JsaXF1ZSBieSBMaW5vdHlwZVxuICogVVJMOiBodHRwczovL3d3dy5teWZvbnRzLmNvbS9mb250cy9saW5vdHlwZS9mdXR1cmEvaGVhdnktb2JsaXF1ZS9cbiAqIENvcHlyaWdodDogQ29weXJpZ2h0ICYjeDAwQTk7IDE5ODcsIDE5OTEsIDE5OTMsIDIwMDIgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuICBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFdlYmZvbnQ6IEZ1dHVyYVN0ZC1IZWF2eSBieSBMaW5vdHlwZVxuICogVVJMOiBodHRwczovL3d3dy5teWZvbnRzLmNvbS9mb250cy9saW5vdHlwZS9mdXR1cmEvaGVhdnkvXG4gKiBDb3B5cmlnaHQ6IENvcHlyaWdodCAmI3gwMEE5OyAxOTg3LCAxOTkxLCAxOTkzLCAyMDAyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBXZWJmb250OiBEaWRvdExUUHJvLUhlYWRsaW5lIGJ5IExpbm90eXBlXG4gKiBVUkw6IGh0dHBzOi8vd3d3Lm15Zm9udHMuY29tL2ZvbnRzL2xpbm90eXBlL2RpZG90L3Byby1oZWFkbGluZS1yb21hbi9cbiAqIENvcHlyaWdodDogUGFydCBvZiB0aGUgZGlnaXRhbGx5IGVuY29kZWQgbWFjaGluZSByZWFkYWJsZSBvdXRsaW5lIGRhdGEgZm9yIHByb2R1Y2luZyB0aGUgVHlwZWZhY2VzIHByb3ZpZGVkIGlzIGNvcHlyaWdodGVkICYjeDAwQTk7IDIwMDggTGlub3R5cGUgR21iSCwgd3d3Lmxpbm90eXBlLmNvbS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBzb2Z0d2FyZSBpcyB0aGUgcHJvcGVydHkgb2YgTGlub3R5cGUgR21iSCwgYW5kIG1heSBub3QgYmUgcmVwcm9kdWNlZCxcbiAqXG4gKlxuICogTGljZW5zZTogaHR0cHM6Ly93d3cubXlmb250cy5jb20vdmlld2xpY2Vuc2U/dHlwZT13ZWImYnVpbGRpZD0zNDUwNzEyXG4gKiBMaWNlbnNlZCBwYWdldmlld3M6IDIsNTAwLDAwMFxuICpcbiAqIFdlYmZvbnQ6IFRyYWRlR290aGljTFQtQm9sZENvbmRUd2VudHkgYnkgTGlub3R5cGVcbiAqIFVSTDogaHR0cHM6Ly93d3cubXlmb250cy5jb20vZm9udHMvbGlub3R5cGUvdHJhZGUtZ290aGljL2JvbGQtY29uZGVuc2VkLW5vLTIwLTYzODgyL1xuICogQ29weXJpZ2h0OiBQYXJ0IG9mIHRoZSBkaWdpdGFsbHkgZW5jb2RlZCBtYWNoaW5lIHJlYWRhYmxlIG91dGxpbmUgZGF0YSBmb3IgcHJvZHVjaW5nIHRoZSBUeXBlZmFjZXMgcHJvdmlkZWQgaXMgY29weXJpZ2h0ZWQgKGMpIDE5ODksIDE5OTIsIDIwMDMgTGlub3R5cGUgTGlicmFyeSBHbWJILCB3d3cubGlub3R5cGUuY29tLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHNvZnR3YXJlIGlzIHRoZSBwcm9wZXJ0eSBvZiBMaW5vdHlwZSBMaWJyYXJ5IEdtYkgsIGFuZFxuICogTGljZW5zZWQgcGFnZXZpZXdzOiAyLDUwMCwwMDBcbiAqXG4gKlxuICogTGljZW5zZTogaHR0cHM6Ly93d3cubXlmb250cy5jb20vdmlld2xpY2Vuc2U/dHlwZT13ZWImYnVpbGRpZD0zNDUxNTE2XG4gKiDCqSAyMDE3IE15Rm9udHMgSW5jXG4gKlxuICogQGxpY2Vuc2VcbiAqIE15Rm9udHMgV2ViZm9udCBCdWlsZCBJRCAzNDYxMzQ0LCAyMDE3LTEwLTA2VDE3OjM1OjEzLTA0MDBcbiAqXG4gKiBXZWJmb250OiBGdXR1cmFTdGQtQm9sZCBieSBMaW5vdHlwZVxuICogVVJMOiBodHRwczovL3d3dy5teWZvbnRzLmNvbS9mb250cy9saW5vdHlwZS9mdXR1cmEvYm9sZC9cbiAqXG4gKiBXZWJmb250OiBGdXR1cmFTdGQtQm9sZE9ibGlxdWUgYnkgTGlub3R5cGVcbiAqIFVSTDogaHR0cHM6Ly93d3cubXlmb250cy5jb20vZm9udHMvbGlub3R5cGUvZnV0dXJhL2JvbGQtb2JsaXF1ZS9cbiAqXG4gKlxuICogTGljZW5zZTogaHR0cHM6Ly93d3cubXlmb250cy5jb20vdmlld2xpY2Vuc2U/dHlwZT13ZWImYnVpbGRpZD0zNDYxMzQ0XG4gKiBMaWNlbnNlZCBwYWdldmlld3M6IDIsNTAwLDAwMFxuICogV2ViZm9udHMgY29weXJpZ2h0OiBDb3B5cmlnaHQgJiN4MDBBOTsgMTk4NywgMTk5MSwgMTk5MywgMjAwMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuKi9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCQVNFL19CVVRUT05TLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5idXR0b24ge1xuICBmb250LXNpemU6IDFlbTtcbn1cblxuLmJ0biB7XG4gIGNvbG9yOiAjOTg2OTRjO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMWVtO1xuICBwYWRkaW5nOiAxZW0gMS41ZW0gMC44ZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG4uYnRuIC5sZWFkLWxpbmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiA1MHB4O1xuICBtYXJnaW46IC02NHB4IGF1dG8gMWVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxcHg7XG59XG4uYnRuIC5sZWFkLWxpbmU6OmJlZm9yZSB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbnRlbnQ6ICcnO1xuICBoZWlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMjVzIGVhc2Utb3V0O1xuICB3aWR0aDogMTAwJTtcbn1cbi5idG4gLnRleHQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uYnRuOjpiZWZvcmUsIC5idG46OmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG59XG4uYnRuOjpiZWZvcmUge1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG59XG4uYnRuOjphZnRlciB7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG59XG4uYnRuLmRyYXcge1xuICBjb2xvcjogIzk4Njk0Yztcbn1cbi5idG4uZHJhdyAubGVhZC1saW5lOjpiZWZvcmUge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzk4Njk0YztcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmJ0bi5kcmF3OjpiZWZvcmUsIC5idG4uZHJhdzo6YWZ0ZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuLmJ0bi5kcmF3OjpiZWZvcmUge1xuICBib3JkZXItdG9wLWNvbG9yOiAjOTg2OTRjO1xuICBib3JkZXItcmlnaHQtY29sb3I6ICM5ODY5NGM7XG4gIHRyYW5zaXRpb246IHdpZHRoIDAuMjVzIGVhc2Utb3V0IDAuMjVzLCBoZWlnaHQgMC4yNXMgZWFzZS1vdXQgMC41cztcbn1cbi5idG4uZHJhdzo6YWZ0ZXIge1xuICBib3JkZXItYm90dG9tLWNvbG9yOiAjOTg2OTRjO1xuICBib3JkZXItbGVmdC1jb2xvcjogIzk4Njk0YztcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDBzIGVhc2Utb3V0IDAuNXMsIHdpZHRoIDAuMjVzIGVhc2Utb3V0IDAuNXMsIGhlaWdodCAwLjI1cyBlYXNlLW91dCAwLjc1cztcbn1cbi5idG4uZHJhdzpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5ODY5NGM7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmJ0bi5hbHQge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5idG4uYWx0LmRyYXcge1xuICBjb2xvcjogI2ZmZjtcbn1cbi5idG4uYWx0LmRyYXcgLmxlYWQtbGluZTo6YmVmb3JlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZmY7XG59XG4uYnRuLmFsdC5kcmF3OjpiZWZvcmUge1xuICBib3JkZXItdG9wLWNvbG9yOiAjZmZmO1xuICBib3JkZXItcmlnaHQtY29sb3I6ICNmZmY7XG59XG4uYnRuLmFsdC5kcmF3OjphZnRlciB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmO1xufVxuLmJ0bi5hbHQuZHJhdzpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjOTg2OTRjO1xufVxuXG4ucGx1cy1ib3gge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTg2OTRjO1xuICBib3JkZXI6IDFweCBzb2xpZCAjOTg2OTRjO1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiA0MHB4O1xuICBwYWRkaW5nOiA5cHg7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXMgZWFzZS1vdXQ7XG4gIHdpZHRoOiA0MHB4O1xufVxuLnBsdXMtYm94IC5wbHVzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMjBweDtcbn1cbi5wbHVzLWJveCAucGx1cyAudmVydGljYWwge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDlweDtcbiAgd2lkdGg6IDJweDtcbn1cbi5wbHVzLWJveCAucGx1cyAudmVydGljYWw6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICcnO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBoZWlnaHQ6IDAlO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zaXRpb246IGhlaWdodCAyNTBtcyBlYXNlLW91dCA1MDBtcztcbiAgd2lkdGg6IDJweDtcbn1cbi5wbHVzLWJveCAucGx1cyAuaG9yaXpvbnRhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAycHg7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDlweDtcbiAgbGVmdDogMDtcbn1cbi5wbHVzLWJveCAucGx1cyAuaG9yaXpvbnRhbDo6YmVmb3JlIHtcbiAgY29udGVudDogJyc7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGhlaWdodDogMnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRyYW5zaXRpb246IHdpZHRoIDI1MG1zIGVhc2Utb3V0IDc1MG1zO1xuICB3aWR0aDogMCU7XG59XG4ucGx1cy1ib3ggLnBsdXMuYW5pbWF0ZSAuaG9yaXpvbnRhbDo6YmVmb3JlIHtcbiAgd2lkdGg6IDEwMCU7XG59XG4ucGx1cy1ib3ggLnBsdXMuYW5pbWF0ZSAudmVydGljYWw6OmJlZm9yZSB7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuI3pvb20tYnRuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbiAgd2lkdGg6IDI1cHg7XG4gIGhlaWdodDogMjVweDtcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDI1cHg7XG4gIGxlZnQ6IDI1cHg7XG4gIHRyYW5zaXRpb246IGhlaWdodCAyNTBtcyBlYXNlLW91dCwgd2lkdGggMjUwbXMgZWFzZS1vdXQsIHRyYW5zZm9ybSAyNTBtcyBlYXNlLW91dCwgb3BhY2l0eSAyNTBtcyBlYXNlLW91dDtcbiAgei1pbmRleDogMTUwO1xufVxuI3pvb20tYnRuOmhvdmVyLCAjem9vbS1idG46Zm9jdXMge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHdpZHRoOiAzMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IDA7XG59XG4jem9vbS1idG4gLnpvb20tYm90dG9tLCAjem9vbS1idG4gLnpvb20tdG9wIHtcbiAgaGVpZ2h0OiA1MCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cbiN6b29tLWJ0biAuem9vbS10b3Age1xuICB0b3A6IDA7XG4gIGJvdHRvbTogNTAlO1xuICBsZWZ0OiAwO1xuICByaWdodDogNTAlO1xuICB3aWR0aDogNTAlO1xuICBib3JkZXItdG9wOiAycHggc29saWQgI2ZmZjtcbiAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjZmZmO1xuICB0cmFuc2l0aW9uOiB0b3AgMjUwbXMgZWFzZS1vdXQsIHJpZ2h0IDI1MG1zIGVhc2Utb3V0LCBib3R0b20gMjUwbXMgZWFzZS1vdXQsIGxlZnQgMjUwbXMgZWFzZS1vdXQ7XG59XG4jem9vbS1idG4gLnpvb20tYm90dG9tIHtcbiAgYm90dG9tOiAwO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IDUwJTtcbiAgd2lkdGg6IDUwJTtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmZmY7XG4gIGJvcmRlci1yaWdodDogMnB4IHNvbGlkICNmZmY7XG4gIHRyYW5zaXRpb246IHRvcCAyNTBtcyBlYXNlLW91dCwgcmlnaHQgMjUwbXMgZWFzZS1vdXQsIGJvdHRvbSAyNTBtcyBlYXNlLW91dCwgbGVmdCAyNTBtcyBlYXNlLW91dDtcbn1cbiN6b29tLWJ0bi5hY3RpdmUge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG59XG4jem9vbS1idG4uYWN0aXZlIC56b29tLXRvcCB7XG4gIGJvdHRvbTogMDtcbiAgdG9wOiA0OCU7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiA0OCU7XG59XG4jem9vbS1idG4uYWN0aXZlIC56b29tLWJvdHRvbSB7XG4gIHRvcDogMDtcbiAgYm90dG9tOiA1MSU7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiA1MSU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcbiAgI3pvb20tYnRuIHtcbiAgICB0b3A6IGF1dG87XG4gICAgbGVmdDogYXV0bztcbiAgICBib3R0b206IDI1cHg7XG4gICAgcmlnaHQ6IDMwcHg7XG4gIH1cbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCQVNFL19VVElMSVRZLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmhpZGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4udmlzaWJpbGl0eS1oaWRkZW4ge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5vZmZzY3JlZW4ge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbGVmdDogLTk5OTk5OXB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTk5OTk5OXB4O1xufVxuXG4uYmctd2hpdGUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuXG4uY2xlYXJmaXgge1xuICAqem9vbTogMTtcbn1cblxuLmNsZWFyZml4OmJlZm9yZSwgLmNsZWFyZml4OmFmdGVyIHtcbiAgY29udGVudDogXCIgXCI7XG4gIC8qIDEgKi9cbiAgZGlzcGxheTogdGFibGU7XG4gIC8qIDIgKi9cbn1cblxuLmNsZWFyZml4OmFmdGVyIHtcbiAgY2xlYXI6IGJvdGg7XG59XG5cbi5oaWRlLW1vYi1iciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MGVtKSB7XG4gIC5oaWRlLW1vYi1iciB7XG4gICAgZGlzcGxheTogaW5saW5lO1xuICB9XG59XG5cbi5wcm9ncmVzcyB7XG4gIGJhY2tncm91bmQ6ICM5ODY5NGM7XG4gIGJvdHRvbTogMDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogNHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXM7XG4gIHdpZHRoOiAwO1xufVxuXG4ubGluZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDEwMHB4O1xuICBtYXJnaW46IDEwJSBhdXRvIDEwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMXB4O1xufVxuLmxpbmU6OmJlZm9yZSB7XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGNvbnRlbnQ6ICcnO1xuICBoZWlnaHQ6IDA7XG4gIGxlZnQ6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICB0cmFuc2l0aW9uOiBoZWlnaHQgNzUwbXMgZWFzZS1vdXQ7XG59XG4ubGluZS5kcmF3OjpiZWZvcmUge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzk4Njk0YztcbiAgaGVpZ2h0OiAxMDBweDtcbn1cblxuLnBhZ2Utbm90LWZvdW5kICNjb250ZW50ID4gZGl2IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLnBhZ2Utbm90LWZvdW5kICNjb250ZW50ID4gZGl2IC5sYXJnZS11bmRlcmxpbmUge1xuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAucHJvZ3Jlc3Mge1xuICAgIGhlaWdodDogOHB4O1xuICB9XG5cbiAgLmxpbmUge1xuICAgIGhlaWdodDogMjAwcHg7XG4gICAgbWFyZ2luOiAyJSBhdXRvO1xuICB9XG4gIC5saW5lLmRyYXc6OmJlZm9yZSB7XG4gICAgaGVpZ2h0OiAyMDBweDtcbiAgfVxufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEJBU0UvX0xBWU9VVC5TQ1NTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLm5ldy1yZXN1bHRzLWRpdiB7XG4gIGhlaWdodDogMTAwJTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcyBsaW5lYXIsIGhlaWdodCAyNTBtcyBsaW5lYXI7XG4gIHotaW5kZXg6IDI7XG59XG4ubmV3LXJlc3VsdHMtZGl2LnRyYW5zaXRpb24taW4ge1xuICBoZWlnaHQ6IDEwMHZoO1xufVxuLm5ldy1yZXN1bHRzLWRpdi50cmFuc2l0aW9uLW91dCB7XG4gIG9wYWNpdHk6IDA7XG59XG5cbi5zZWNvbmRhcnktcmVzdWx0cy1kaXYge1xuICBsZWZ0OiAwO1xuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgei1pbmRleDogMTA7XG59XG4uc2Vjb25kYXJ5LXJlc3VsdHMtZGl2LnRyYW5zaXRpb24taW4ge1xuICBvcGFjaXR5OiAxO1xufVxuXG4uanMtbWFpbiB7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgNTAwbXMgZWFzZS1vdXQ7XG59XG5cbmZvb3RlciB7XG4gIGJvdHRvbTogMDtcbiAgY29sb3I6ICNmZmY7XG4gIGxlZnQ6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbn1cbmZvb3RlciBzbWFsbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmb250LXNpemU6IDEuNGVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBtYXJnaW46IDFlbSAwIDJlbTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBib2R5IHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cblxuICBmb290ZXIgLndvcmRtYXJrIHtcbiAgICBib3R0b206IDJlbTtcbiAgICBsZWZ0OiAyZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG4gIGZvb3RlciBzbWFsbCB7XG4gICAgYm90dG9tOiAxZW07XG4gICAgZm9udC1zaXplOiAxLjRlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMmVtO1xuICB9XG5cbiAgLmZsZXgge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW46IDAgMTAlO1xuICB9XG4gIC5mbGV4IC5oYWxmIHtcbiAgICB3aWR0aDogNTAlO1xuICB9XG4gIC5mbGV4IC5oYWxmLmxlZnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cbiAgLmZsZXggLmhhbGYucmlnaHQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICB9XG4gIC5mbGV4IC5oYWxmLmZpcnN0IHtcbiAgICBvcmRlcjogMTtcbiAgfVxuICAuZmxleCAuaGFsZi5zZWNvbmQge1xuICAgIG9yZGVyOiAyO1xuICB9XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQkFTRS9fVFlQT0dSQVBIWS5TQ1NTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBcIkZ1dHVyYVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDYyLjUlO1xuICBjb2xvcjogIzk4Njk0Yztcbn1cblxuOjpzZWxlY3Rpb24ge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDE0MiwgMTMwLCAxMjEsIDAuNCk7XG4gIC8qIFdlYktpdC9CbGluayBCcm93c2VycyAqL1xufVxuXG46Oi1tb3otc2VsZWN0aW9uIHtcbiAgYmFja2dyb3VuZDogcmdiYSgxNDIsIDEzMCwgMTIxLCAwLjQpO1xuICAvKiBHZWNrbyBCcm93c2VycyAqL1xufVxuXG5oMSwgLmgxIHtcbiAgZm9udC1zaXplOiA0LjVlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTBlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuaDIsIC5oMiB7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbmgzLCAuaDMge1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4ubGFyZ2UtdW5kZXJsaW5lIHtcbiAgZm9udC1zaXplOiA1ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjAxNWVtO1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbn1cbi5sYXJnZS11bmRlcmxpbmUgc3BhbiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTg2OTRjO1xufVxuXG4uYWNjZW50LWhlYWRlciB7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgZm9udC1mYW1pbHk6IFwiVHJhZGVHb3RoaWNMVC1Cb2xkQ29uZFR3ZW50eVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIGZvbnQtc2l6ZTogMi4yZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAwLjFlbTtcbn1cblxuLmdsYW1vdXIge1xuICBmb250LXNpemU6IDIuOGVtO1xuICBmb250LWZhbWlseTogXCJEaWRvdFwiLCBzYW5zLXNlcmlmO1xuICBmb250LXdlaWdodDogMzAwO1xufVxuXG5wIHtcbiAgZm9udC1zaXplOiAxLjZlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBsZXR0ZXItc3BhY2luZzogMC4wMTVlbTtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxucCAubm9icmVhayB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5wLmFpcnkge1xuICBsaW5lLWhlaWdodDogMS44ZW07XG4gIG1heC13aWR0aDogNTAwcHg7XG59XG5cbi5pbnRybyB7XG4gIGZvbnQtc2l6ZTogM2VtO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uY2FwdGlvbiB7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgZm9udC1mYW1pbHk6IFwiRGlkb3RcIiwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBsZXR0ZXItc3BhY2luZzogMC4wNWVtO1xuICBsaW5lLWhlaWdodDogMS42ZW07XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ2LjhlbSkge1xuICAuaW50cm8ge1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogNTAlO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MGVtKSB7XG4gIC5oMSB7XG4gICAgZm9udC1zaXplOiAxMmVtO1xuICB9XG5cbiAgLmxhcmdlLXVuZGVybGluZSB7XG4gICAgZm9udC1zaXplOiA3LjhlbTtcbiAgfVxuXG4gIC5pbnRybyB7XG4gICAgZm9udC1zaXplOiA2LjNlbTtcbiAgfVxuXG4gIHAge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xuICB9XG5cbiAgLmdsYW1vdXIge1xuICAgIGZvbnQtc2l6ZTogNC44ZW07XG4gIH1cblxuICAuY2FwdGlvbi5sYXJnZSB7XG4gICAgZm9udC1zaXplOiAyLjRlbTtcbiAgfVxuXG4gIC5hY2NlbnQtaGVhZGVyIHtcbiAgICBmb250LXNpemU6IDMuMmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NmVtKSB7XG4gIC5oMSB7XG4gICAgZm9udC1zaXplOiAxNWVtO1xuICB9XG5cbiAgLmxhcmdlLXVuZGVybGluZSB7XG4gICAgZm9udC1zaXplOiA5LjJlbTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzNlbSkge1xuICAubGFyZ2UtdW5kZXJsaW5lIHtcbiAgICBmb250LXNpemU6IDEwLjRlbTtcbiAgfVxufVxuQHN1cHBvcnRzIChwZXJzcGVjdGl2ZTogMXB4KSBhbmQgKG5vdCAob3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaCkpIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjZlbSkge1xuICAgIC5wcmluY2kgLmxhcmdlLXVuZGVybGluZSxcbiAgICAub2ZmZXJpbmdzIC5sYXJnZS11bmRlcmxpbmUsXG4gICAgLnJvY2NvLXByaW5jaSAubGFyZ2UtdW5kZXJsaW5lIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwLjFweCkgc2NhbGUoMC45KTtcbiAgICAgIHotaW5kZXg6IDEwMDtcbiAgICB9XG4gIH1cbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDT01QT05FTlRTL19OQVYuU0NTU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiNoYW1idXJnZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG4jaGFtYnVyZ2VyOjpiZWZvcmUsXG4jaGFtYnVyZ2VyIHNwYW4sICNoYW1idXJnZXI6OmFmdGVyIHtcbiAgYmFja2dyb3VuZDogIzk4Njk0YztcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDJweDtcbiAgbGVmdDogMHB4O1xuICBtYXJnaW46IDAgMCA2cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAwcHg7XG4gIHRyYW5zaXRpb246IC4yNXMgZWFzZS1pbi1vdXQ7XG4gIHdpZHRoOiAxMDAlO1xufVxuI2hhbWJ1cmdlcjo6YmVmb3JlIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogLjVzO1xufVxuI2hhbWJ1cmdlciBzcGFuIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogLjYyNXM7XG59XG4jaGFtYnVyZ2VyOjphZnRlciB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IC43NXM7XG59XG5cbiNjcm9zcyB7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIHdpZHRoOiAxMDAlO1xufVxuI2Nyb3NzOjpiZWZvcmUsICNjcm9zczo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kOiAjOTg2OTRjO1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2l0aW9uOiAuMjVzIGVhc2UtaW4tb3V0O1xufVxuI2Nyb3NzOjpiZWZvcmUge1xuICBoZWlnaHQ6IDAlO1xuICBsZWZ0OiAxMnB4O1xuICB0b3A6IDEwJTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIHdpZHRoOiAycHg7XG59XG4jY3Jvc3M6OmFmdGVyIHtcbiAgaGVpZ2h0OiAycHg7XG4gIGxlZnQ6IDEwJTtcbiAgdG9wOiAxMnB4O1xuICB0cmFuc2l0aW9uLWRlbGF5OiAuMjVzO1xuICB3aWR0aDogMCU7XG59XG5cbi50cmlnZ2VyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMjVweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMzBweDtcbiAgdG9wOiAzMHB4O1xuICB3aWR0aDogMjVweDtcbn1cbi50cmlnZ2VyLmFjdGl2ZSAjaGFtYnVyZ2VyOjpiZWZvcmUsIC50cmlnZ2VyLmFjdGl2ZSAjaGFtYnVyZ2VyIHNwYW4sIC50cmlnZ2VyLmFjdGl2ZSAjaGFtYnVyZ2VyOmFmdGVyIHtcbiAgd2lkdGg6IDAlO1xufVxuLnRyaWdnZXIuYWN0aXZlICNoYW1idXJnZXI6OmJlZm9yZSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xufVxuLnRyaWdnZXIuYWN0aXZlICNoYW1idXJnZXIgc3BhbiB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IC4xMjVzO1xufVxuLnRyaWdnZXIuYWN0aXZlICNoYW1idXJnZXI6OmFmdGVyIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogLjI1cztcbn1cbi50cmlnZ2VyLmFjdGl2ZSAjY3Jvc3M6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGhlaWdodDogODAlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAuNjI1cztcbn1cbi50cmlnZ2VyLmFjdGl2ZSAjY3Jvc3M6OmFmdGVyIHtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgdHJhbnNpdGlvbi1kZWxheTogLjM3NXM7XG4gIHdpZHRoOiA4MCU7XG59XG5cbi50b3AtYmFyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTtcbiAgaGVpZ2h0OiA3MHB4O1xuICBvcGFjaXR5OiAxO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA1MDBtcyBsaW5lYXIsIG1hcmdpbiAuMTVzIGxpbmVhcjtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDQ7XG4gIHotaW5kZXg6IDY7XG4gIG1hcmdpbi10b3A6IDVyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MjBweCkge1xuICAudG9wLWJhciB7XG4gICAgbWFyZ2luLXRvcDogM3JlbTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC50b3AtYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAzcmVtO1xuICB9XG59XG4udG9wLWJhci5oaWRkZW4ge1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi50b3AtYmFyLmFjdGl2ZSB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIHotaW5kZXg6IDEwMDtcbn1cbi50b3AtYmFyIGEge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xufVxuLnRvcC1iYXIgLnRhZ2xpbmUge1xuICBsZWZ0OiAwO1xufVxuLnRvcC1iYXIgLmxvZ28ge1xuICBoZWlnaHQ6IDY2cHg7XG4gIGxlZnQ6IDUwJTtcbiAgdG9wOiAtMWVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHdpZHRoOiAxNDBweDtcbiAgei1pbmRleDogNjA7XG59XG4udG9wLWJhciAubG9nbyBzdmcge1xuICBmaWxsOiAjOTg2OTRjO1xuICB0cmFuc2l0aW9uOiBmaWxsIDI1MG1zIGVhc2UtaW4tb3V0O1xufVxuLnRvcC1iYXIud2hpdGUgLmxvZ28gc3ZnIHtcbiAgZmlsbDogI2ZmZjtcbn1cblxuLmZvb2QtZGV0YWlscy1wYWdlIC50b3AtYmFyIHtcbiAgei1pbmRleDogMjtcbn1cblxuLm1lbnUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTg2OTRjO1xuICBjb2xvcjogI2ZmZjtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRvcDogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2Utb3V0LCB2aXNpYmlsaXR5IDBzIDAuNXM7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgd2lkdGg6IDEwMHZ3O1xuICB6LWluZGV4OiA1O1xufVxuLm1lbnUuYWN0aXZlIHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB6LWluZGV4OiA1MDtcbn1cbi5tZW51LmFjdGl2ZSAuZWRnZS1tZW51IHtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbn1cbi5tZW51LmFjdGl2ZSAjbGFuZ3VhZ2Uge1xuICBmb250LXNpemU6IDEuNGVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG4gIHRyYW5zaXRpb24tZGVsYXk6IC41cztcbn1cbi5tZW51LmFjdGl2ZSAjbWFpbiB7XG4gIG1hcmdpbi1ib3R0b206IDFlbTtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMXM7XG59XG4ubWVudS5hY3RpdmUgI3NvY2lhbCB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEuNXM7XG59XG4ubWVudS5hY3RpdmUgI3NlY29uZGFyeSB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEuNXM7XG59XG4ubWVudSBhIHtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cbi5tZW51ICNtYWluIHtcbiAgZm9udC1zaXplOiA0LjJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuMTBlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNGVtO1xuICBvcGFjaXR5OiAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNSUpIHNrZXcoLTEwZGVnKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC41cyBlYXNlLW91dCwgb3BhY2l0eSAuNXMgZWFzZS1vdXQ7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiA0O1xufVxuLm1lbnUgI21haW4gYTpob3ZlciwgLm1lbnUgI21haW4gYTpmb2N1cyB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cbi5tZW51IC5uYXYtaG92ZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1lbnUgLmVkZ2UtbWVudSB7XG4gIGZvbnQtc2l6ZTogMS40ZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyNXB4KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC41cyBlYXNlLW91dCwgb3BhY2l0eSAuNXMgZWFzZS1vdXQ7XG4gIHotaW5kZXg6IDQ7XG59XG4ubWVudSAuZWRnZS1tZW51IGxpIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDFlbTtcbn1cbi5tZW51IC5lZGdlLW1lbnUgYSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5tZW51IC5lZGdlLW1lbnUgYTo6YWZ0ZXIge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvdHRvbTogMDtcbiAgY29udGVudDogJyc7XG4gIGhlaWdodDogMDtcbiAgbGVmdDogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAuNXMgZWFzZS1vdXQ7XG4gIHdpZHRoOiAwO1xufVxuLm1lbnUgLmVkZ2UtbWVudSBhOmhvdmVyOjphZnRlciwgLm1lbnUgLmVkZ2UtbWVudSBhOmZvY3VzOjphZnRlciB7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1MGVtKSB7XG4gIC5tZW51IC5tb2JpbGUtZ3JvdXBpbmcge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgd2lkdGg6IDkwJTtcbiAgfVxuICAubWVudSAjbWFpbiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUlKTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAudHJpZ2dlciB7XG4gICAgcmlnaHQ6IDY1cHg7XG4gICAgdG9wOiA1NXB4O1xuICB9XG5cbiAgLnRvcC1iYXIge1xuICAgIGhlaWdodDogMTIwcHg7XG4gIH1cbiAgLnRvcC1iYXIgLmxvZ28ge1xuICAgIGhlaWdodDogOTBweDtcbiAgICB3aWR0aDogMTg1cHg7XG4gIH1cbiAgLnRvcC1iYXIgLmxvZ28gc3ZnIHtcbiAgICBoZWlnaHQ6IDkwcHg7XG4gICAgd2lkdGg6IDE4NXB4O1xuICB9XG5cbiAgLm1lbnUgI21haW4ge1xuICAgIGZvbnQtc2l6ZTogNy4yZW07XG4gICAgbGVmdDogNTAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNDAlKTtcbiAgICB3aWR0aDogOTB2dztcbiAgfVxuICAubWVudS5hY3RpdmUgI21haW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IC41cztcbiAgfVxuICAubWVudS5hY3RpdmUgI2xhbmd1YWdlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpIHRyYW5zbGF0ZVkoMCUpO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDFzO1xuICB9XG4gIC5tZW51LmFjdGl2ZSAjc2Vjb25kYXJ5IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwJSk7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMS4yNXM7XG4gIH1cbiAgLm1lbnUuYWN0aXZlICNzb2NpYWwge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVZKDAlKTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAxLjVzO1xuICB9XG4gIC5tZW51IC5uYXYtaG92ZXIge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHBhZGRpbmc6IDV2aDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHotaW5kZXg6IDM7XG4gIH1cbiAgLm1lbnUgLm5hdi1ob3ZlciAuaW1nIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbGVmdDogMDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcyBlYXNlLW91dDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuICAubWVudSAubmF2LWhvdmVyIC5pbWcuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIC5tZW51IC5uYXYtaG92ZXIgLmltZy5yb2Njby1wcmluY2kge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgvX3VpL2ltZy9nbG9iYWwvcHJpbmNpLW5hdi1yb2Njby0xLmpwZyk7XG4gIH1cbiAgLm1lbnUgLm5hdi1ob3ZlciAuaW1nLm9mZmVyaW5ncyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC9fdWkvaW1nL2dsb2JhbC9wcmluY2ktbmF2LW9mZmVyaW5ncy0xLmpwZyk7XG4gIH1cbiAgLm1lbnUgLm5hdi1ob3ZlciAuaW1nLmxvY2F0aW9ucyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC9fdWkvaW1nL2dsb2JhbC9wcmluY2ktbmF2LWxvY2F0aW9ucy0xLmpwZyk7XG4gIH1cbiAgLm1lbnUgLmVkZ2UtbWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICB9XG4gIC5tZW51IC5lZGdlLW1lbnUgbGk6Zmlyc3QtY2hpbGQge1xuICAgIG1hcmdpbjogMCAxZW0gMCAwO1xuICB9XG4gIC5tZW51ICNsYW5ndWFnZSB7XG4gICAgbGVmdDogMWVtO1xuICAgIHRvcDogNTAlO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZykgdHJhbnNsYXRlWSgtMjUlKTtcbiAgfVxuICAubWVudSAjc2Vjb25kYXJ5IHtcbiAgICBib3R0b206IDJlbTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTI1JSk7XG4gIH1cbiAgLm1lbnUgI3NvY2lhbCB7XG4gICAgcmlnaHQ6IDFlbTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlWSgtMjUlKTtcbiAgfVxufVxuLypcbiAqICBPd2wgQ2Fyb3VzZWwgLSBDb3JlXG4gKi9cbi5vd2wtY2Fyb3VzZWwge1xuICBkaXNwbGF5OiBub25lO1xuICB3aWR0aDogMTAwJTtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLyogcG9zaXRpb24gcmVsYXRpdmUgYW5kIHotaW5kZXggZml4IHdlYmtpdCByZW5kZXJpbmcgZm9udHMgaXNzdWUgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxO1xufVxuLm93bC1jYXJvdXNlbCAub3dsLXN0YWdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAtbXMtdG91Y2gtYWN0aW9uOiBwYW4tWTtcbiAgLW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIC8qIGZpeCBmaXJlZm94IGFuaW1hdGlvbiBnbGl0Y2ggKi9cbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1zdGFnZTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiLlwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgY2xlYXI6IGJvdGg7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgbGluZS1oZWlnaHQ6IDA7XG4gIGhlaWdodDogMDtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1zdGFnZS1vdXRlciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLyogZml4IGZvciBmbGFzaGluZyBiYWNrZ3JvdW5kICovXG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwcHgsIDBweCwgMHB4KTtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC13cmFwcGVyLFxuLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0ge1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLW1vei1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIC1tcy1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApO1xuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtaW4taGVpZ2h0OiAxcHg7XG4gIGZsb2F0OiBsZWZ0O1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lO1xufVxuLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gaW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuLm93bC1jYXJvdXNlbCAub3dsLW5hdi5kaXNhYmxlZCxcbi5vd2wtY2Fyb3VzZWwgLm93bC1kb3RzLmRpc2FibGVkIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1uYXYgLm93bC1wcmV2LFxuLm93bC1jYXJvdXNlbCAub3dsLW5hdiAub3dsLW5leHQsXG4ub3dsLWNhcm91c2VsIC5vd2wtZG90IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBjdXJzb3I6IGhhbmQ7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1uYXYge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1uYXYgLm93bC1wcmV2LFxuLm93bC1jYXJvdXNlbCAub3dsLW5hdiAub3dsLW5leHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDUwJTtcbiAgdGV4dC1pbmRlbnQ6IC05OTk5OTlweDtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1uYXYgLm93bC1wcmV2OmhvdmVyIHtcbiAgY3Vyc29yOiB1cmwoL191aS9pbWcvZ2xvYmFsL3ByaW5jaS1sZWZ0LWFycm93LnN2ZyksIGRlZmF1bHQ7XG59XG4ub3dsLWNhcm91c2VsIC5vd2wtbmF2IC5vd2wtbmV4dDpob3ZlciB7XG4gIGN1cnNvcjogdXJsKC9fdWkvaW1nL2dsb2JhbC9wcmluY2ktcmlnaHQtYXJyb3cuc3ZnKSwgYXV0bztcbn1cbi5vd2wtY2Fyb3VzZWwub3dsLWxvYWRlZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLm93bC1jYXJvdXNlbC5vd2wtbG9hZGluZyB7XG4gIG9wYWNpdHk6IDA7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuLm93bC1jYXJvdXNlbC5vd2wtaGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbn1cbi5vd2wtY2Fyb3VzZWwub3dsLXJlZnJlc2ggLm93bC1pdGVtIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLm93bC1jYXJvdXNlbC5vd2wtZHJhZyAub3dsLWl0ZW0ge1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIHVzZXItc2VsZWN0OiBub25lO1xufVxuLm93bC1jYXJvdXNlbC5vd2wtZ3JhYiB7XG4gIGN1cnNvcjogbW92ZTtcbiAgY3Vyc29yOiBncmFiO1xufVxuLm93bC1jYXJvdXNlbC5vd2wtcnRsIHtcbiAgZGlyZWN0aW9uOiBydGw7XG59XG4ub3dsLWNhcm91c2VsLm93bC1ydGwgLm93bC1pdGVtIHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuXG4vKiBObyBKcyAqL1xuLm5vLWpzIC5vd2wtY2Fyb3VzZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLypcbiAqICBPd2wgQ2Fyb3VzZWwgLSBBbmltYXRlIFBsdWdpblxuICovXG4ub3dsLWNhcm91c2VsIC5hbmltYXRlZCB7XG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogMTAwMG1zO1xuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xufVxuLm93bC1jYXJvdXNlbCAub3dsLWFuaW1hdGVkLWluIHtcbiAgei1pbmRleDogMDtcbn1cbi5vd2wtY2Fyb3VzZWwgLm93bC1hbmltYXRlZC1vdXQge1xuICB6LWluZGV4OiAxO1xufVxuLm93bC1jYXJvdXNlbCAuZmFkZU91dCB7XG4gIGFuaW1hdGlvbi1uYW1lOiBmYWRlT3V0O1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG4vKlxuICogXHRPd2wgQ2Fyb3VzZWwgLSBBdXRvIEhlaWdodCBQbHVnaW5cbiAqL1xuLm93bC1oZWlnaHQge1xuICB0cmFuc2l0aW9uOiBoZWlnaHQgNTAwbXMgZWFzZS1pbi1vdXQ7XG59XG5cbi8qXG4gKiBcdE93bCBDYXJvdXNlbCAtIExhenkgTG9hZCBQbHVnaW5cbiAqL1xuLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gLm93bC1sYXp5IHtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlO1xufVxuLm93bC1jYXJvdXNlbCAub3dsLWl0ZW0gaW1nLm93bC1sYXp5IHtcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbn1cblxuLmFjY29yZGlvbi10cmlnZ2VyOmhvdmVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYWNjb3JkaW9uLWNvbnRlbnQge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDMwMG1zIGVhc2U7XG59XG4uYWNjb3JkaW9uLWNvbnRlbnQuaGlkZGVuIHtcbiAgb3BhY2l0eTogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENPTVBPTkVOVFMvX0hPTUVQQUdFLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKiBUaGVzZSBhcmUgdGhlIGJhc2Ugc3R5bGVzIGZvciBmb250cyBhbmQgc2l6aW5nIHRoYXQgYWxzbyBhY3QgYXMgYSBiYWNrdXAgdG8gdGhlIHBhcmFsbGF4IHN0eWxlcyAqL1xuI2ludHJvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgcGFkZGluZy10b3A6IDEwMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG59XG4jaW50cm8gLmhlYWRsaW5lIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuI2ludHJvIC5oZWFkbGluZSAuaDEgc3BhbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cbiNpbnRybyAuaGVhZGxpbmUgLmgxIHNwYW46bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDM0MHB4O1xufVxuI2ludHJvIC5oZWFkbGluZSAuaDEgc3BhbiBzdXAge1xuICBmb250LXNpemU6IDEwJTtcbiAgdG9wOiAtMjVweDtcbn1cbiNpbnRybyAuaGVybyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgvX3VpL2ltZy9ob21lcGFnZS9oZXJvLmpwZyk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDM3MHB4O1xuICBtYXJnaW4tdG9wOiAxMzVweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuI2ludHJvIC5pbnRyb2R1Y3Rpb24ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBwYWRkaW5nLWJvdHRvbTogMTAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4jaW50cm8gLmludHJvZHVjdGlvbiAudGl0bGUge1xuICBtYXJnaW46IDAgYXV0bztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4jY3RhLWdyb3VwIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgcGFkZGluZy10b3A6IDIwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4jY3RhLWdyb3VwIC5nbGFtb3VyIHtcbiAgbWFyZ2luOiAxMCUgYXV0byAwO1xuICBtYXgtd2lkdGg6IDY0NXB4O1xuICB3aWR0aDogOTAlO1xufVxuI2N0YS1ncm91cCAuY3RhLWhvbWUge1xuICBwYWRkaW5nLWJvdHRvbTogMjUlO1xufVxuI2N0YS1ncm91cCAucG9ydHJhaXQge1xuICBtYXgtd2lkdGg6IDY1JTtcbn1cbiNjdGEtZ3JvdXAgLmxhbmRzY2FwZSB7XG4gIHdpZHRoOiA4MCU7XG59XG4jY3RhLWdyb3VwIC5jYXB0aW9uIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuI2N0YS1ncm91cCAubGFyZ2UtdW5kZXJsaW5lIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuI2N0YS1ncm91cCAuYnRuIHtcbiAgbWFyZ2luLXRvcDogNzBweDtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAjaW50cm8ge1xuICAgIHBhZGRpbmctdG9wOiAxNTBweDtcbiAgfVxuICAjaW50cm8gLmhlYWRsaW5lIC5oMSBzcGFuOmxhc3QtY2hpbGQge1xuICAgIG1hcmdpbi10b3A6IDUwMHB4O1xuICB9XG4gICNpbnRybyAuaGVhZGxpbmUgLmgxIHNwYW46bGFzdC1jaGlsZCBzdXAge1xuICAgIGxlZnQ6IC0yMHB4O1xuICAgIHRvcDogLTc1cHg7XG4gIH1cbiAgI2ludHJvIC5oZXJvIHtcbiAgICBoZWlnaHQ6IDYwMHB4O1xuICAgIG1hcmdpbi10b3A6IDI1MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NmVtKSB7XG4gICNpbnRybyB7XG4gICAgcGFkZGluZy10b3A6IDE3MHB4O1xuICB9XG4gICNpbnRybyAuaGVhZGxpbmUgLmgxIHNwYW46bGFzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXRvcDogNTYwcHg7XG4gIH1cbiAgI2ludHJvIC5oZWFkbGluZSAuaDEgc3BhbjpsYXN0LWNoaWxkIHN1cCB7XG4gICAgdG9wOiAtMTAwcHg7XG4gIH1cbiAgI2ludHJvIC5oZXJvIHtcbiAgICBoZWlnaHQ6IDY1NXB4O1xuICAgIG1hcmdpbi10b3A6IDI5MHB4O1xuICB9XG5cbiAgI2N0YS1ncm91cCB7XG4gICAgcGFkZGluZy10b3A6IDE4JTtcbiAgfVxuICAjY3RhLWdyb3VwIC5sYXJnZS11bmRlcmxpbmUge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBsZWZ0OiAxMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTEuMmVtO1xuICAgIHdpZHRoOiA4MCU7XG4gICAgei1pbmRleDogMTAwO1xuICB9XG4gICNjdGEtZ3JvdXAgLmN0YS1ob21lIHtcbiAgICBtYXJnaW46IDAgNSU7XG4gICAgcGFkZGluZy1ib3R0b206IDEzJTtcbiAgfVxuICAjY3RhLWdyb3VwIC5jdGEtaG9tZSAuZWRnZSB7XG4gICAgcGFkZGluZy1sZWZ0OiAwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDYwJTtcbiAgfVxuICAjY3RhLWdyb3VwIC5wb3J0cmFpdCB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG4gICNjdGEtZ3JvdXAgLmxhbmRzY2FwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNyU7XG4gIH1cbiAgI2N0YS1ncm91cCAuZ2xhbW91ciB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbiAgI2N0YS1ncm91cCAuY3RhLWxvY2F0aW9ucyB7XG4gICAgcGFkZGluZy10b3A6IDI1JTtcbiAgfVxuICAjY3RhLWdyb3VwIC5jdGEtbG9jYXRpb25zIC5sYW5kc2NhcGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbiAgI2N0YS1ncm91cCAuY3RhLWxvY2F0aW9ucyAuY2FwdGlvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDI1JTtcbiAgICBtYXgtd2lkdGg6IDgwJTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG5cbiAgI2N0YS1mb29kIC5jdGEtaG9tZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICAjY3RhLWZvb2QgLmN0YS1ob21lIC5mb29kLWNvcHkge1xuICAgIG9yZGVyOiAxO1xuICB9XG4gICNjdGEtZm9vZCAuY3RhLWhvbWUgLmZvb2QtY29weSAuYnRuIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxMCU7XG4gIH1cbiAgI2N0YS1mb29kIC5jdGEtaG9tZSAub3dsLWNhcm91c2VsIHtcbiAgICBtYXJnaW4tYm90dG9tOiA1JTtcbiAgICBvcmRlcjogMjtcbiAgfVxufVxuQHN1cHBvcnRzIG5vdCAoLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoKSB7XG4gIC8qIENTUyBmb3Igb3RoZXIgdGhhbiBpT1MgZGV2aWNlcyAqL1xuICAucGFyYWxsYXgge1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiB2aXNpYmxlO1xuICAgIHBlcnNwZWN0aXZlOiAxcHg7XG4gICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB3aWR0aDogMTAwdnc7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcbiAgfVxuICAucGFyYWxsYXgsIC5wYXJhbGxheCAqIHtcbiAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICB9XG59XG5Ac3VwcG9ydHMgKHBlcnNwZWN0aXZlOiAxcHgpIGFuZCAobm90IChvdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoKSkge1xuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MGVtKSB7XG4gICAgLnBhcmFsbGF4OjpiZWZvcmUge1xuICAgICAgY29udGVudDogJ3RydWUnO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB3aWR0aDogMDtcbiAgICB9XG5cbiAgICBoZWFkZXIgLm1vYmlsZS1ncm91cGluZyB7XG4gICAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogZmxhdDtcbiAgICB9XG4gIH1cbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDT01QT05FTlRTL19ST0NDTy5TQ1NTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2hlcml0YWdlLWhlcm8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBwYWRkaW5nOiAxMjBweCA1JSAxMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG4jaGVyaXRhZ2UtaGVybyAuY29weSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB6LWluZGV4OiA0O1xufVxuI2hlcml0YWdlLWhlcm8gLmgxIHtcbiAgcGFkZGluZy1ib3R0b206IDAuMjVlbTtcbn1cbiNoZXJpdGFnZS1oZXJvIC5saW5lIHtcbiAgbWFyZ2luLXRvcDogMzMwcHg7XG59XG4jaGVyaXRhZ2UtaGVybyAuaW50cm8ge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuI2hlcml0YWdlLWhlcm8gLmltZyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIG1hcmdpbi10b3A6IDMyMHB4O1xuICByaWdodDogMDtcbiAgei1pbmRleDogMTtcbn1cblxuLnNwbGl0LXBpYyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAxOCUgNSU7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG4gIHotaW5kZXg6IDEwMDtcbn1cbi5zcGxpdC1waWM6bnRoLWNoaWxkKDUpIHtcbiAgcGFkZGluZy1ib3R0b206IDUlO1xufVxuLnNwbGl0LXBpYzpudGgtY2hpbGQoNikge1xuICBwYWRkaW5nLXRvcDogMDtcbn1cbi5zcGxpdC1waWMgLmxhcmdlLXVuZGVybGluZSB7XG4gIHBhZGRpbmctYm90dG9tOiAxZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5zcGxpdC1waWMgLmNhcHRpb24ge1xuICBwYWRkaW5nLXRvcDogMWVtO1xufVxuLnNwbGl0LXBpYyAuY29weSBwIHtcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xufVxuLnNwbGl0LXBpYyAuaW1nIHtcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xufVxuXG4ub3dsLWNhcm91c2VsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDYuOGVtKSB7XG4gICNoZXJpdGFnZS1oZXJvIHtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luOiAwIGF1dG8gMTIwcHg7XG4gICAgcGFkZGluZzogMTcwcHggNSUgMTAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuICAjaGVyaXRhZ2UtaGVybyAuY29weSBoMSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB3aWR0aDogNTB2dztcbiAgICB6LWluZGV4OiA1O1xuICB9XG4gICNoZXJpdGFnZS1oZXJvIC5jb3B5IC5pbnRybyB7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gIH1cbiAgI2hlcml0YWdlLWhlcm8gLmNvcHkgLmNhcHRpb24ge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cbiAgI2hlcml0YWdlLWhlcm8gLmNvcHkgLmNhcHRpb24gc3BhbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xuICB9XG4gICNoZXJpdGFnZS1oZXJvIC5pbWcge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogMjAwcHg7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiA3NSU7XG4gICAgei1pbmRleDogMTtcbiAgfVxuXG4gIC5zcGxpdC1waWMge1xuICAgIHBhZGRpbmc6IDE4JSA1JSAxMCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIC5zcGxpdC1waWMgLnNwbGl0LWZsZXgge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICAuc3BsaXQtcGljIC5sYXJnZS11bmRlcmxpbmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwJTtcbiAgICBsZWZ0OiAxMCU7XG4gICAgd2lkdGg6IDgwJTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgei1pbmRleDogMjtcbiAgfVxuICAuc3BsaXQtcGljIC5jb3B5IHtcbiAgICBvcmRlcjogMTtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwJTtcbiAgICB3aWR0aDogNTAlO1xuICB9XG4gIC5zcGxpdC1waWMgLmNvcHkgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuICAuc3BsaXQtcGljIC5pbWcge1xuICAgIG9yZGVyOiAyO1xuICAgIG1heC13aWR0aDogNDAlO1xuICB9XG4gIC5zcGxpdC1waWMuZmxpcCAuY29weSB7XG4gICAgb3JkZXI6IDI7XG4gICAgbWFyZ2luLWxlZnQ6IDEwJTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbiAgLnNwbGl0LXBpYy5mbGlwIC5pbWcge1xuICAgIG9yZGVyOiAxO1xuICAgIG1hcmdpbi10b3A6IDE1JTtcbiAgfVxuICAuc3BsaXQtcGljLmZsaXAgLmltZy5lZGdlIHtcbiAgICBtYXJnaW46IDE1JSAwIDAgLTYlO1xuICB9XG4gIC5zcGxpdC1waWMuZmxpcCAuaW1nLmVkZ2UgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEzMyU7XG4gIH1cbiAgLnNwbGl0LXBpYy5mbGlwIC5pbWcuZWRnZSAuY2FwdGlvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDE1JTtcbiAgfVxuICAuc3BsaXQtcGljOm50aC1jaGlsZCg2KSB7XG4gICAgcGFkZGluZy10b3A6IDE4JTtcbiAgfVxuICAuc3BsaXQtcGljI3B1cnN1aXQgLmNvcHkge1xuICAgIG1hcmdpbjogMTAlIDAgMCAyMCU7XG4gICAgbWF4LXdpZHRoOiA0MCU7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY2ZW0pIHtcbiAgI2hlcml0YWdlLWhlcm8gLmNvcHkgLmludHJvIHtcbiAgICBtYXJnaW4tdG9wOiAxMDBweDtcbiAgfVxuICAjaGVyaXRhZ2UtaGVybyAuaW1nIHtcbiAgICBtYXJnaW4tdG9wOiAyNDBweDtcbiAgfVxufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENPTVBPTkVOVFMvX0NBUkVFUlMuU0NTU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jYXJlZXJzIC5zcGxpdC1waWMgLmJ0biB7XG4gIG1hcmdpbjogMmVtIDA7XG59XG4uY2FyZWVycyAjcm9sZXMge1xuICBwYWRkaW5nLWJvdHRvbTogNGVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uY2FyZWVycyAjcm9sZXMgYSB7XG4gIGNvbG9yOiAjOTg2OTRjO1xufVxuLmNhcmVlcnMgI3JvbGVzIC5hY2NlbnQtaGVhZGVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xufVxuLmNhcmVlcnMgI3JvbGVzIC5sYXJnZS11bmRlcmxpbmUge1xuICBkaXNwbGF5OiBibG9jaztcbn1cbi5jYXJlZXJzICNyb2xlcyAubGFyZ2UtdW5kZXJsaW5lIHNwYW4ge1xuICBib3JkZXItYm90dG9tOiAwO1xufVxuLmNhcmVlcnMgI3JvbGVzIC5sYXJnZS11bmRlcmxpbmU6bGFzdC1vZi10eXBlIHtcbiAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuLmNhcmVlcnMgI3JvbGVzIC5sYXJnZS11bmRlcmxpbmU6aG92ZXIgc3BhbiwgLmNhcmVlcnMgI3JvbGVzIC5sYXJnZS11bmRlcmxpbmU6Zm9jdXMgc3BhbiB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTg2OTRjO1xufVxuLmNhcmVlcnMgI3JvbGVzIHAgYSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjOTg2OTRjO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MGVtKSB7XG4gIC5jYXJlZXJzIC5zcGxpdC1waWMge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICB9XG4gIC5jYXJlZXJzIC5zcGxpdC1waWMgLmltZy5lZGdlIGltZyB7XG4gICAgbWF4LXdpZHRoOiAxMTUlO1xuICB9XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ09NUE9ORU5UUy9fT0ZGRVJJTkdTLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uZm9vZC1oZXJvIHtcbiAgbWFyZ2luOiAxMjBweCBhdXRvIDYwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5mb29kLWhlcm8gLmgxIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbi5mb29kLWhlcm8gLmludHJvIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuLmZvb2QtaGVybyAuc3RhbmRhcmQge1xuICBwYWRkaW5nOiAwIDUlO1xufVxuLmZvb2QtaGVybyAub3dsLWNhcm91c2VsIHtcbiAgbWFyZ2luLXRvcDogLTE3cHg7XG59XG5cbi5mb29kcyAuYWNjZW50LWhlYWRlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4uZm9vZHMgLnR5cGUge1xuICBtYXJnaW4tYm90dG9tOiAyNSU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtcG9zaXRpb24gMXMgZWFzZS1vdXQ7XG59XG4uZm9vZHMgLnR5cGUuYnJlYWtmYXN0IHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogNzAlIHRvcDtcbn1cbi5mb29kcyAudHlwZS5waXp6YSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IHRvcDtcbn1cbi5mb29kcyAudHlwZS5icmVha2Zhc3QuY2VudGVyLWJhY2tncm91bmQsIC5mb29kcyAudHlwZS5waXp6YS5jZW50ZXItYmFja2dyb3VuZCB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG59XG4uZm9vZHMgLnR5cGUgLmNvcHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uZm9vZHMgLnR5cGUgLmNvcHkgLmNhcHRpb24ge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBwYWRkaW5nOiAxZW0gMCAzZW0gMDtcbn1cbi5mb29kcyAudHlwZSAubWFzayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2l0aW9uOiBoZWlnaHQgLjVzIGVhc2Utb3V0LCBib3JkZXItbGVmdC13aWR0aCAuNXMgZWFzZS1vdXQsIGJvcmRlci1yaWdodC13aWR0aCAuNXMgZWFzZS1vdXQ7XG4gIHdpZHRoOiAxMDB2dztcbn1cbi5mb29kcyAudHlwZSAubWFzay50cmFuc2l0aW9uIHtcbiAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgaGVpZ2h0OiAxMDB2aDtcbn1cblxuLnBsdXMtYm94IHtcbiAgbGVmdDogY2FsYyg1MCUgLSAyMHB4KTtcbiAgbWFyZ2luLXRvcDogLTIwcHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDYuOGVtKSB7XG4gIC5mb29kcyAudHlwZSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogYm90dG9tIHJpZ2h0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxMDB2aDtcbiAgfVxuICAuZm9vZHMgLnR5cGUuY2VudGVyLWJhY2tncm91bmQge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGJvdHRvbSBjZW50ZXI7XG4gIH1cbiAgLmZvb2RzIC5tYXNrIHtcbiAgICBib3JkZXItbGVmdDogNXZ3IHNvbGlkICNmZmY7XG4gICAgYm9yZGVyLXJpZ2h0OiA1dncgc29saWQgI2ZmZjtcbiAgICBoZWlnaHQ6IDI1MHB4O1xuICB9XG4gIC5mb29kcyAubWFzay5wb3J0cmFpdCB7XG4gICAgYm9yZGVyLWxlZnQ6IDIwdncgc29saWQgI2ZmZjtcbiAgICBib3JkZXItcmlnaHQ6IDIwdncgc29saWQgI2ZmZjtcbiAgICBoZWlnaHQ6IDM1MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0Ni44ZW0pIHtcbiAgLmZvb2QtaGVybyB7XG4gICAgbWFyZ2luOiAxMjBweCBhdXRvIDA7XG4gICAgcGFkZGluZy1ib3R0b206IDQlO1xuICAgIHBhZGRpbmctdG9wOiA0JTtcbiAgfVxuICAuZm9vZC1oZXJvIC5zdGFuZGFyZCB7XG4gICAgbWFyZ2luOiA0ZW0gMCAxZW0gNSU7XG4gICAgbWF4LXdpZHRoOiAzNy41JTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cblxuICAuZm9vZHMgLnR5cGUge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgaGVpZ2h0OiA1MDBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMCU7XG4gICAgdHJhbnNpdGlvbjogaGVpZ2h0IDFzIGVhc2Utb3V0LCBtYXJnaW4tYm90dG9tIDFzIGVhc2Utb3V0LCB0cmFuc2Zvcm0gMXMgZWFzZS1vdXQ7XG4gIH1cbiAgLmZvb2RzIC50eXBlIC5jb3B5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvcmRlcjogMTtcbiAgICBwYWRkaW5nLWxlZnQ6IDEwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgZWFzZS1vdXQ7XG4gICAgd2lkdGg6IDUwJTtcbiAgfVxuICAuZm9vZHMgLnR5cGUgLmNvcHkgPiBkaXYge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgLmZvb2RzIC50eXBlIC5tYXNrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgYm9yZGVyLWNvbG9yOiAjZmZmO1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1yaWdodC13aWR0aDogNXZ3O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3JkZXI6IDI7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgNTAwbXMgZWFzZS1vdXQsIGhlaWdodCAuNXMgZWFzZS1vdXQsIGJvcmRlci1sZWZ0LXdpZHRoIC41cyBlYXNlLW91dCwgYm9yZGVyLXJpZ2h0LXdpZHRoIC41cyBlYXNlLW91dDtcbiAgICB3aWR0aDogNTAlO1xuICB9XG4gIC5mb29kcyAudHlwZSAubWFzay5yZXZlYWwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTUyLCAxMDUsIDc2LCAwKTtcbiAgfVxuICAuZm9vZHMgLnR5cGUgLm1hc2s6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTUyLCAxMDUsIDc2LCAwLjY1KTtcbiAgfVxuICAuZm9vZHMgLnR5cGUgLm1hc2subm8taG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTUyLCAxMDUsIDc2LCAwKSAhaW1wb3J0YW50O1xuICB9XG4gIC5mb29kcyAudHlwZSAubWFzayAucGx1cy1ib3gge1xuICAgIGxlZnQ6IDA7XG4gICAgdG9wOiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgLmZvb2RzIC50eXBlIC5tYXNrLmVkZ2Uge1xuICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgfVxuICAuZm9vZHMgLnR5cGUucG9ydHJhaXQge1xuICAgIGhlaWdodDogNzAwcHg7XG4gIH1cbiAgLmZvb2RzIC50eXBlLnBvcnRyYWl0LmNlbnRlci1iYWNrZ3JvdW5kIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgfVxuICAuZm9vZHMgLnR5cGUucG9ydHJhaXQuY2VudGVyLWJhY2tncm91bmQgLmNvcHkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxuICAuZm9vZHMgLnR5cGUucG9ydHJhaXQuY2VudGVyLWJhY2tncm91bmQgLm1hc2sge1xuICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgfVxuICAuZm9vZHMgLnR5cGUucG9ydHJhaXQuY2VudGVyLWJhY2tncm91bmQgLm1hc2sgLnBsdXMtYm94IHtcbiAgICBsZWZ0OiAyMTAlO1xuICB9XG4gIC5mb29kcyAudHlwZTpudGgtY2hpbGQoZXZlbikgLmNvcHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvcmRlcjogMjtcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gIH1cbiAgLmZvb2RzIC50eXBlOm50aC1jaGlsZChldmVuKSAubWFzayB7XG4gICAgYm9yZGVyLWxlZnQ6IDA7XG4gICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxMHZ3O1xuICAgIG9yZGVyOiAxO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgNTAwbXMgZWFzZS1vdXQsIGhlaWdodCAuNXMgZWFzZS1vdXQsIGJvcmRlci1sZWZ0LXdpZHRoIC41cyBlYXNlLW91dDtcbiAgfVxuICAuZm9vZHMgLnR5cGU6bnRoLWNoaWxkKGV2ZW4pIC5tYXNrLnBvcnRyYWl0IHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogNXZ3O1xuICAgIGhlaWdodDogNzAwcHg7XG4gIH1cbiAgLmZvb2RzIC50eXBlOm50aC1jaGlsZChldmVuKSAubWFzay5wb3J0cmFpdC5lZGdlIHtcbiAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgfVxuICAuZm9vZHMgLnR5cGU6bnRoLWNoaWxkKGV2ZW4pIC5tYXNrLnBvcnRyYWl0IC5wbHVzLWJveCB7XG4gICAgbGVmdDogMTAwJTtcbiAgfVxuICAuZm9vZHMgLnR5cGUuY2VudGVyLWJhY2tncm91bmQge1xuICAgIGhlaWdodDogMTAwdmg7XG4gIH1cbiAgLmZvb2RzIC50eXBlLmNlbnRlci1iYWNrZ3JvdW5kIC5jb3B5IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICB9XG4gIC5mb29kcyAudHlwZS5jZW50ZXItYmFja2dyb3VuZCAubWFzayAucGx1cy1ib3gge1xuICAgIGxlZnQ6IC0xMTAlO1xuICB9XG4gIC5mb29kcyAudHlwZS5jZW50ZXItYmFja2dyb3VuZDpudGgtY2hpbGQoZXZlbikucG9ydHJhaXQgLmNvcHkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxuICAuZm9vZHMgLnR5cGUuY2VudGVyLWJhY2tncm91bmQ6bnRoLWNoaWxkKGV2ZW4pLnBvcnRyYWl0IC5tYXNrIC5wbHVzLWJveCB7XG4gICAgbGVmdDogMjEwJTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAuZm9vZC1oZXJvIC5vd2wtY2Fyb3VzZWwge1xuICAgIG1hcmdpbi10b3A6IC00MHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2NmVtKSB7XG4gIC5mb29kLWhlcm8gLm93bC1jYXJvdXNlbCB7XG4gICAgbWFyZ2luLXRvcDogLTUycHg7XG4gIH1cbn1cbkBzdXBwb3J0cyAocGVyc3BlY3RpdmU6IDFweCkgYW5kIChub3QgKC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaCkpIHtcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjZlbSkge1xuICAgIC5mb29kcyAudHlwZTpudGgtY2hpbGQob2RkKSAuY29weSAuY2FwdGlvbiB7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMC4xcHgpIHNjYWxlKDAuOSk7XG4gICAgICB6LWluZGV4OiAxMDA7XG4gICAgfVxuICAgIC5mb29kcyAudHlwZTpudGgtY2hpbGQoZXZlbikgLmNvcHkgLmNhcHRpb24ge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDAuMXB4KSBzY2FsZSgwLjkpO1xuICAgICAgei1pbmRleDogMTAwO1xuICAgIH1cbiAgICAuZm9vZHMgLmFjY2VudC1oZWFkZXIge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDAuMjVweCkgc2NhbGUoMC43NSk7XG4gICAgICB6LWluZGV4OiAyNTA7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zIGVhc2Utb3V0O1xuICAgICAgei1pbmRleDogMSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuZm9vZHMgLmFjY2VudC1oZWFkZXIubGVmdCB7XG4gICAgICBsZWZ0OiAyNSU7XG4gICAgfVxuICAgIC5mb29kcyAuYWNjZW50LWhlYWRlci5yaWdodCB7XG4gICAgICBsZWZ0OiA0NSU7XG4gICAgfVxuICAgIC5mb29kcyAuYWNjZW50LWhlYWRlci5vbmUge1xuICAgICAgdG9wOiAxNCU7XG4gICAgfVxuICAgIC5mb29kcyAuYWNjZW50LWhlYWRlci50d28ge1xuICAgICAgdG9wOiA3MyU7XG4gICAgfVxuICAgIC5mb29kcyAuYWNjZW50LWhlYWRlci50aHJlZSB7XG4gICAgICB0b3A6IDg5JTtcbiAgICB9XG4gICAgLmZvb2RzIC5hY2NlbnQtaGVhZGVyLmhpZGUge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDT01QT05FTlRTL19GT09ELURFVEFJTFMuU0NTU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5mb29kLXR5cGUge1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICBoZWlnaHQ6IDEwMHZoO1xuICB3aWR0aDogMTAwdnc7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgei1pbmRleDogNztcbn1cbi5mb29kLXR5cGUuYWN0aXZlIHtcbiAgei1pbmRleDogMTAwMDA7XG59XG5cbi5mb29kLWRldGFpbHMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTg2OTRjO1xuICBjb2xvcjogI2ZmZjtcbiAgaGVpZ2h0OiBhdXRvO1xuICBib3R0b206IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xufVxuLmZvb2QtZGV0YWlscyAjY3Jvc3Mge1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBoZWlnaHQ6IDI1cHg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgcmlnaHQ6IDFlbTtcbiAgdG9wOiAxZW07XG4gIHdpZHRoOiAyNXB4O1xufVxuLmZvb2QtZGV0YWlscyAjY3Jvc3M6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGhlaWdodDogODAlO1xufVxuLmZvb2QtZGV0YWlscyAjY3Jvc3M6OmFmdGVyIHtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgd2lkdGg6IDgwJTtcbn1cbi5mb29kLWRldGFpbHMgPiBkaXYge1xuICBtYXJnaW46IDI1cHggMCAyNXB4O1xuICBtYXgtd2lkdGg6IDEwMHZ3O1xuICBwYWRkaW5nOiAwIDUlO1xufVxuLmZvb2QtZGV0YWlscyBoMSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uZm9vZC1kZXRhaWxzIGgxIHNwYW4ge1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2ZmZjtcbn1cbi5mb29kLWRldGFpbHMgLmFpcnkge1xuICBtYXJnaW46IDAgYXV0bztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmZvb2QtZGV0YWlscyAuY2FwdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1MGVtKSB7XG4gIC5mb29kLXR5cGUge1xuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byAxMDB2aDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwdmgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMgZWFzZS1pbi1vdXQ7XG4gIH1cbiAgLmZvb2QtdHlwZS5hY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxuXG4gIC5mb29kLWRldGFpbHMge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg2MHZoKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjVzIGVhc2UtaW4tb3V0O1xuICB9XG4gIC5mb29kLWRldGFpbHMuYWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDUwZW0pIHtcbiAgLmZvb2QtdHlwZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMgZWFzZS1pbi1vdXQ7XG4gIH1cbiAgLmZvb2QtdHlwZS5hY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxuXG4gIC5mb29kLWRldGFpbHMge1xuICAgIHRvcDogMDtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICAgIGxlZnQ6IDA7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMgZWFzZS1pbi1vdXQ7XG4gICAgd2lkdGg6IDUwdnc7XG4gIH1cbiAgLmZvb2QtZGV0YWlscy5hY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxuICAuZm9vZC1kZXRhaWxzID4gZGl2IHtcbiAgICBtYXJnaW46IDE1MHB4IGF1dG87XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gIH1cbiAgLmZvb2QtZGV0YWlscyBoMSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMC4yNWVtO1xuICB9XG59XG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ09NUE9ORU5UUy9fQ1RBLlNDU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uYm90dG9tLWN0YSB7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5ib3R0b20tY3RhLnJvY2NvLWN0YSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCgvX3VpL2ltZy9nbG9iYWwvcHJpbmNpLW5hdi1yb2Njby0xLmpwZyk7XG59XG4uYm90dG9tLWN0YS5vZmZlcmluZ3MtY3RhIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC9fdWkvaW1nL2dsb2JhbC9wcmluY2ktbmF2LW9mZmVyaW5ncy0xLmpwZyk7XG59XG4uYm90dG9tLWN0YS5sb2NhdGlvbnMtY3RhIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC9fdWkvaW1nL2dsb2JhbC9wcmluY2ktbmF2LWxvY2F0aW9ucy0xLmpwZyk7XG59XG5cbi5ib3R0b20tY3RhLWxpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgb3BhY2l0eTogMTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjI1cyBlYXNlLW91dDtcbn1cbi5ib3R0b20tY3RhLWxpbmsgLmN0YS1jb250YWluZXIge1xuICBsZWZ0OiA1MCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICB3aWR0aDogMTAwJTtcbn1cbi5ib3R0b20tY3RhLWxpbmsgaDIge1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiA1ZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAwLjEwZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG4uYm90dG9tLWN0YS1saW5rIC5idG4ge1xuICBtYXJnaW4tdG9wOiA3MHB4O1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1MGVtKSB7XG4gIC5ib3R0b20tY3RhLWxpbmsge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM5ODY5NGM7XG4gICAgbWF4LWhlaWdodDogNzAwcHg7XG4gIH1cbiAgLmJvdHRvbS1jdGEtbGluazpob3ZlciwgLmJvdHRvbS1jdGEtbGluazpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cbiAgLmJvdHRvbS1jdGEtbGluayBoMiB7XG4gICAgZm9udC1zaXplOiA5LjZlbTtcbiAgfVxufVxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENPTVBPTkVOVFMvX0xPQ0FUSU9OUy5TQ1NTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLmNpdHkge1xuICBtYXJnaW4tYm90dG9tOiAxMCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5jaXR5IC5sb2NhdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IDRlbTtcbn1cbi5jaXR5IC5jYXB0aW9uIHtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuLmNpdHkgLmRpc2NsYWltZXIge1xuICBmb250LXNpemU6IDFlbTtcbiAgbWFyZ2luLXRvcDogMjUlO1xufVxuLmNpdHkgPiBkaXYge1xuICBtYXJnaW46IDEwJSBhdXRvO1xufVxuLmNpdHkgYWRkcmVzcyxcbi5jaXR5IC5jb250YWluZWQtd2l0aGluIHtcbiAgZm9udC1zaXplOiAxLjZlbTtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbn1cbi5jaXR5IC50ZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cbi5jaXR5IC50ZWwgYSB7XG4gIGNvbG9yOiAjOTg2OTRjO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uY2l0eSBwIHtcbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgbWFyZ2luLXRvcDogMWVtO1xufVxuLmNpdHkgLmJ0biB7XG4gIG1hcmdpbi10b3A6IDUwcHg7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ2LjhlbSkge1xuICAuZm9vZC1oZXJvIC5vd2wtY2Fyb3VzZWwubG9jYXRpb25zIHtcbiAgICBtYXJnaW4tdG9wOiA1JTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTBlbSkge1xuICAuY2l0eSB7XG4gICAgbWFyZ2luLWJvdHRvbTogNiU7XG4gIH1cbiAgLmNpdHkgLmRpc2NsYWltZXIge1xuICAgIG1hcmdpbi10b3A6IDEwJTtcbiAgfVxuICAuY2l0eSA+IGRpdiB7XG4gICAgbWFyZ2luOiA1JSBhdXRvO1xuICB9XG4gIC5jaXR5IGFkZHJlc3MsXG4gIC5jaXR5IC5jb250YWluZWQtd2l0aGluIHtcbiAgICBmb250LXNpemU6IDIuNGVtO1xuICB9XG4gIC5jaXR5IC50ZWwge1xuICAgIGZvbnQtc2l6ZTogMS42ZW07XG4gIH1cbiAgLmNpdHkgLmxvY2F0aW9uLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMCAyLjUlO1xuICB9XG4gIC5jaXR5IC5sb2NhdGlvbi1ncm91cC5taWxhbiAubG9jYXRpb24ge1xuICAgIHBhZGRpbmc6IDAgMi41JSA1JTtcbiAgICB3aWR0aDogMjguMzMzMzMzJTtcbiAgfVxuICAuY2l0eSAubG9jYXRpb24tZ3JvdXAubWlsYW4gLmxvY2F0aW9uOm50aC1jaGlsZCgzKTphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgb3JkZXI6IDE7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbiAgLmNpdHkgcCB7XG4gICAgZm9udC1zaXplOiAxLjZlbTtcbiAgfVxufVxuLml0YWxpYW4tc3VtbWVyIC53cmFwcGVyIHtcbiAgbWF4LXdpZHRoOiAxMTgwcHg7XG4gIG1hcmdpbjogYXV0bztcbn1cbi5pdGFsaWFuLXN1bW1lciAjaW50cm8ge1xuICBwYWRkaW5nLXRvcDogMTE1cHg7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAuaXRhbGlhbi1zdW1tZXIgI2ludHJvIHtcbiAgICBwYWRkaW5nLXRvcDogMTM1cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuaXRhbGlhbi1zdW1tZXIgI2ludHJvIHtcbiAgICBwYWRkaW5nLXRvcDogMTQ1cHg7XG4gIH1cbn1cbi5pdGFsaWFuLXN1bW1lcl9faGVybyB7XG4gIGJhY2tncm91bmQ6IHVybChcIi9fdWkvaW1nL2l0YWxpYW4tc3VtbWVyL3N1bW1lci1pbnRyby5qcGdcIikgbm8tcmVwZWF0IGNlbnRlci9jb3ZlcjtcbiAgbWluLWhlaWdodDogMzAwcHg7XG4gIG1hcmdpbi10b3A6IC0xMjBweDtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lcl9faGVybyB7XG4gICAgbWluLWhlaWdodDogNTUwcHg7XG4gICAgbWFyZ2luLXRvcDogLTIxMHB4O1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLml0YWxpYW4tc3VtbWVyX19oZXJvIHtcbiAgICBtaW4taGVpZ2h0OiA2MDBweDtcbiAgICBtYXJnaW4tdG9wOiAtMjc1cHg7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAuaXRhbGlhbi1zdW1tZXJfX2hlcm8ge1xuICAgIG1pbi1oZWlnaHQ6IDcwMHB4O1xuICAgIG1hcmdpbi10b3A6IC0yNjBweDtcbiAgfVxufVxuLml0YWxpYW4tc3VtbWVyX190YWdsaW5lIHtcbiAgbWF4LXdpZHRoOiAzMDBweDtcbiAgbWFyZ2luOiBhdXRvO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDEwMDtcbiAgcGFkZGluZzogMCAxcmVtO1xuICBkaXNwbGF5OiBibG9jaztcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lcl9fdGFnbGluZSB7XG4gICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lcl9fdGFnbGluZSB7XG4gICAgbWF4LXdpZHRoOiA2MjBweDtcbiAgfVxufVxuLml0YWxpYW4tc3VtbWVyX19jZWxlYnJhdGUge1xuICBwYWRkaW5nOiAzcmVtIDFyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiA5NTBweDtcbiAgbWFyZ2luOiBhdXRvO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLml0YWxpYW4tc3VtbWVyX19jZWxlYnJhdGUge1xuICAgIHBhZGRpbmc6IDRyZW0gMXJlbTtcbiAgfVxufVxuLml0YWxpYW4tc3VtbWVyX19taWxhbiB7XG4gIHBhZGRpbmc6IDJyZW0gMDtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lcl9fbWlsYW4ge1xuICAgIHBhZGRpbmc6IDNyZW0gMDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lcl9fbWlsYW4ge1xuICAgIHBhZGRpbmc6IDRyZW0gMDtcbiAgfVxufVxuLml0YWxpYW4tc3VtbWVyX19pbnN0YSB7XG4gIGJhY2tncm91bmQ6ICNGRjVDMzU7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDNyZW0gMXJlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lcl9faW5zdGEge1xuICAgIHBhZGRpbmc6IDRyZW0gMXJlbTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lcl9faW5zdGEge1xuICAgIHBhZGRpbmc6IDZyZW0gMXJlbTtcbiAgfVxufVxuLml0YWxpYW4tc3VtbWVyX19sb2dvcyB7XG4gIHBhZGRpbmc6IDRyZW0gMXJlbTtcbn1cbi5pdGFsaWFuLXN1bW1lciBmb290ZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBiYWNrZ3JvdW5kOiAjOTg2OTRjO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIHBhZGRpbmc6IDJyZW0gMnJlbTtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuLml0YWxpYW4tc3VtbWVyIGZvb3RlciBzbWFsbCB7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIG1hcmdpbjogMDtcbn1cbi5pdGFsaWFuLXN1bW1lciAud29yZG1hcmsge1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLml0YWxpYW4tc3VtbWVyIC53b3JkbWFyayB7XG4gICAgbWFyZ2luLXJpZ2h0OiAuNzVyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuLml0YWxpYW4tc3VtbWVyIC5mb290ZXJfX2xlZnQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWF4LXdpZHRoOiAyMDBweDtcbiAgZmxleDogMSAxIDIwMHB4O1xuICBtYXJnaW46IGF1dG87XG4gIGZsZXgtd3JhcDogd3JhcDtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5pdGFsaWFuLXN1bW1lciAuZm9vdGVyX19sZWZ0IHtcbiAgICBtYXgtd2lkdGg6IDI4NXB4O1xuICAgIGZsZXg6IDEgMSAyODVweDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cbi5pdGFsaWFuLXN1bW1lciAubm90aWNlIHtcbiAgbWFyZ2luLXRvcDogLjI1cmVtO1xufVxuLml0YWxpYW4tc3VtbWVyIC5jb3B5cmlnaHQge1xuICBmbGV4OiAxIDEgMzUwcHg7XG4gIG1heC13aWR0aDogMzUwcHg7XG4gIG1hcmdpbjogMS41cmVtIGF1dG8gMDtcbiAgZm9udC1zaXplOiAuNzVyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAuaXRhbGlhbi1zdW1tZXIgLmNvcHlyaWdodCB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi5jZWxlYnJhdGVfX2hlYWRpbmcge1xuICBjb2xvcjogI0ZGNUMzNTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDJyZW07XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIGZvbnQtZmFtaWx5OiBcIlRyYWRlR290aGljTFQtQm9sZENvbmRUd2VudHlcIiwgc2Fucy1zZXJpZjtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5jZWxlYnJhdGVfX2hlYWRpbmcge1xuICAgIGZvbnQtc2l6ZTogMi4yNXJlbTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5jZWxlYnJhdGVfX2hlYWRpbmcge1xuICAgIGZvbnQtc2l6ZTogMi44NzVyZW07XG4gIH1cbn1cbi5jZWxlYnJhdGVfX2xvY2F0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgcGFkZGluZzogM3JlbSAwIDJyZW07XG59XG4uY2VsZWJyYXRlX19sb2NhdGlvbiB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgY29sb3I6ICNGRjVDMzU7XG4gIGZsZXg6IDEgMSAyNTBweDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cbi5jZWxlYnJhdGVfX2FkZHJlc3Mge1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LWZhbWlseTogXCJUcmFkZUdvdGhpY0xULUJvbGRDb25kVHdlbnR5XCIsIHNhbnMtc2VyaWY7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG59XG4uY2VsZWJyYXRlX19kYXRlcyB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xuICBmb250LWZhbWlseTogXCJUcmFkZUdvdGhpY0xULUJvbGRDb25kVHdlbnR5XCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG4uY2VsZWJyYXRlX19idG4ge1xuICBib3JkZXI6IDFweCBzb2xpZCAjRkY1QzM1O1xuICBjb2xvcjogI0ZGNUMzNTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIHBhZGRpbmc6IC43NXJlbSAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRyYW5zaXRpb246IGFsbCAuMnMgZWFzZS1pbi1vdXQ7XG4gIGZvbnQtZmFtaWx5OiBcIlRyYWRlR290aGljTFQtQm9sZENvbmRUd2VudHlcIiwgc2Fucy1zZXJpZjtcbn1cbi5jZWxlYnJhdGVfX2J0bjpob3ZlciwgLmNlbGVicmF0ZV9fYnRuOmZvY3VzIHtcbiAgYmFja2dyb3VuZDogI0ZGNUMzNTtcbiAgY29sb3I6ICNmZmY7XG59XG5cbi5taWxhbl9fYmxvY2sge1xuICBwYWRkaW5nOiAwIDAgM3JlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5taWxhbl9fYmxvY2sge1xuICAgIHBhZGRpbmc6IDAgMCA0cmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIG1heC13aWR0aDogMTE4MHB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5taWxhbl9fYmxvY2s6bnRoLW9mLXR5cGUoMm4pIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gIH1cbn1cbi5taWxhbl9fYmxvY2s6bnRoLW9mLXR5cGUoMm4pIC5taWxhbl9faGVybyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9fdWkvaW1nL2l0YWxpYW4tc3VtbWVyL3N1bW1lci10cmlwLmpwZ1wiKTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5taWxhbl9fYmxvY2s6bnRoLW9mLXR5cGUoMm4pIC5taWxhbl9faGVybyB7XG4gICAgbWluLWhlaWdodDogNTc1cHg7XG4gICAgd2lkdGg6IDkwJTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5taWxhbl9fYmxvY2s6bnRoLW9mLXR5cGUoMm4pIC5taWxhbl9faGVybyB7XG4gICAgbWluLWhlaWdodDogNjc1cHg7XG4gIH1cbn1cbi5taWxhbl9faGVybyB7XG4gIGJhY2tncm91bmQ6IHVybChcIi9fdWkvaW1nL2l0YWxpYW4tc3VtbWVyL3N1bW1lci1taWxhbi5qcGdcIikgbm8tcmVwZWF0IGNlbnRlci9jb3ZlcjtcbiAgbWluLWhlaWdodDogMjUwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAubWlsYW5fX2hlcm8ge1xuICAgIG1pbi1oZWlnaHQ6IDQ1MHB4O1xuICAgIHdpZHRoOiA5MCU7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubWlsYW5fX2hlcm8ge1xuICAgIG1pbi1oZWlnaHQ6IDUwMHB4O1xuICB9XG59XG4ubWlsYW5fX2luZm8ge1xuICBjb2xvcjogI0ZGNUMzNTtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgd2lkdGg6IDEwMCU7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAubWlsYW5fX2luZm8ge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuLm1pbGFuX19oZWFkaW5nIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1zaXplOiAxLjEyNXJlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbWFyZ2luOiAwIGF1dG8gMS43NXJlbTtcbiAgZm9udC1mYW1pbHk6IFwiVHJhZGVHb3RoaWNMVC1Cb2xkQ29uZFR3ZW50eVwiLCBzYW5zLXNlcmlmO1xufVxuLm1pbGFuX19jb250ZW50IHtcbiAgbWF4LXdpZHRoOiAyNzVweDtcbiAgbWFyZ2luOiBhdXRvO1xuICBwYWRkaW5nOiAwIDFyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAubWlsYW5fX2NvbnRlbnQge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cbi5taWxhbl9fY29weSB7XG4gIG1hcmdpbjogMCBhdXRvIDJyZW07XG4gIGZvbnQtc2l6ZTogLjg3NXJlbTtcbiAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjU7XG59XG4ubWlsYW5fX2J0biB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNGRjVDMzU7XG4gIGNvbG9yOiAjRkY1QzM1O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGZvbnQtc2l6ZTogLjg3NXJlbTtcbiAgcGFkZGluZzogMXJlbSAycmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2UtaW4tb3V0O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiBcIlRyYWRlR290aGljTFQtQm9sZENvbmRUd2VudHlcIiwgc2Fucy1zZXJpZjtcbn1cbi5taWxhbl9fYnRuOmhvdmVyLCAubWlsYW5fX2J0bjpmb2N1cyB7XG4gIGJhY2tncm91bmQ6ICNGRjVDMzU7XG4gIGNvbG9yOiAjZmZmO1xufVxuLm1pbGFuX19kaXNjbGFpbWVyIHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgZm9udC1mYW1pbHk6IFwiVHJhZGVHb3RoaWNMVC1Cb2xkQ29uZFR3ZW50eVwiLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IC42NXJlbTtcbn1cblxuLmxvZ29zX193cmFwIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBtYXgtd2lkdGg6IDk4MHB4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbjogYXV0bztcbn1cbi5sb2dvc19faW1nIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBmbGV4OiAxIDEgMjUwcHg7XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgbWFyZ2luOiAxcmVtIGF1dG8gMnJlbTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkge1xuICAubG9nb3NfX2ltZyB7XG4gICAgbWFyZ2luOiAxcmVtIGF1dG87XG4gIH1cbn1cblxuLmluc3RhX19pbWcge1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG4uaW5zdGFfX3NsaWRlciB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuLmluc3RhX19zdGFnZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cbi5pbnN0YV9faGVhZGluZyB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogM3JlbTtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC1mYW1pbHk6IFwiVHJhZGVHb3RoaWNMVC1Cb2xkQ29uZFR3ZW50eVwiLCBzYW5zLXNlcmlmO1xufVxuLmluc3RhX190YWdzIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgZm9udC1zaXplOiAxLjJyZW07XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIG1hcmdpbi1ib3R0b206IDNyZW07XG4gIGZvbnQtZmFtaWx5OiBcIlRyYWRlR290aGljTFQtQm9sZENvbmRUd2VudHlcIiwgc2Fucy1zZXJpZjtcbn1cblxuLml0LXN1bW1lci1zbmlwZSB7XG4gIGJhY2tncm91bmQ6ICNGRjVDMzU7XG4gIHBhZGRpbmc6IC43NXJlbTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAxMDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLml0LXN1bW1lci1zbmlwZV9fd3JhcCB7XG4gIG1heC13aWR0aDogOTI1cHg7XG4gIG1hcmdpbjogYXV0bztcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDkyMHB4KSB7XG4gIC5pdC1zdW1tZXItc25pcGVfX3dyYXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgfVxufVxuLml0LXN1bW1lci1zbmlwZV9fbGVmdCwgLml0LXN1bW1lci1zbmlwZV9fcmlnaHQge1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1mYW1pbHk6IFwiRnV0dXJhXCIsIHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAuNjc1cmVtO1xuICBsZXR0ZXItc3BhY2luZzogMnB4O1xuICBmbGV4OiAxIDEgYXV0bztcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAuaXQtc3VtbWVyLXNuaXBlX19sZWZ0LCAuaXQtc3VtbWVyLXNuaXBlX19yaWdodCB7XG4gICAgZm9udC1zaXplOiAuODc1cmVtO1xuICB9XG59XG4uaXQtc3VtbWVyLXNuaXBlX19sZWZ0IHtcbiAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA5MjBweCkge1xuICAuaXQtc3VtbWVyLXNuaXBlX19sZWZ0IHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG4gIC5pdC1zdW1tZXItc25pcGVfX2xlZnQ6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICd8JztcbiAgICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgfVxufVxuLml0LXN1bW1lci1zbmlwZV9fbGluayB7XG4gIGNvbG9yOiAjZmZmO1xufVxuLml0LXN1bW1lci1zbmlwZV9fc3VtbWVyIHtcbiAgbWF4LXdpZHRoOiA1NXB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogLjI1cmVtO1xufVxuXG4ubm8tc25pcGUge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuIl0sImZpbGUiOiJtYWluLmNzcyIsInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
