/**
* Template Name: Strategy
* Template URL: https://bootstrapmade.com/strategy-bootstrap-agency-template/
* Updated: Jun 06 2025 with Bootstrap v5.3.6
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
*/

/*--------------------------------------------------------------
# Font & Color Variables
# Help: https://bootstrapmade.com/color-system/
--------------------------------------------------------------*/
/* Fonts */
:root {
  --default-font: "Roboto",  system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --heading-font: "Nunito Sans",  sans-serif;
  --nav-font: "Raleway",  sans-serif;
}

/* Global Colors - Cores personalizadas do cliente */
:root { 
  --background-color: #031119; /* Mantido */
  --default-color: rgba(255, 255, 255, 0.8); /* Mantido */
  --heading-color: #EFE9FF; /* Lavanda claro */
  --accent-color: #D584DD; /* Roxo rosado */
  --surface-color: #1b262c; /* Mantido */
  --contrast-color: #ffffff; /* Mantido */

  /* Cores adicionais opcionais */
  --primary-color: #8E87BA; /* Roxo acinzentado */
  --highlight-color: #D584DD;
  --light-color: #EFE9FF;
}

/* Nav Menu Colors - Menu também com a identidade visual do cliente */
:root {
  --nav-color: rgba(255, 255, 255, 0.8); /* Mantido */
  --nav-hover-color: #D584DD; /* Hover roxo rosado */
  --nav-mobile-background-color: #29343a; /* Mantido */
  --nav-dropdown-background-color: #29343a; /* Mantido */
  --nav-dropdown-color: rgba(255, 255, 255, 0.8); /* Mantido */
  --nav-dropdown-hover-color: #D584DD; /* Hover roxo rosado */
}


/* Color Presets - These classes override global colors when applied to any section or element, providing reuse of the sam color scheme. */

.light-background {
  --background-color: #0d1d26;
  --surface-color: #16262f;
}

.dark-background {
  --background-color: #060606;
  --default-color: #ffffff;
  --heading-color: #ffffff;
  --surface-color: #252525;
  --contrast-color: #ffffff;
}

/* Smooth scroll */
:root {
  scroll-behavior: smooth;
}

/*--------------------------------------------------------------
# General Styling & Shared Classes
--------------------------------------------------------------*/
body {
  color: var(--default-color);
  background-color: var(--background-color);
  font-family: var(--default-font);
}

a {
  color: var(--accent-color);
  text-decoration: none;
  transition: 0.3s;
}

a:hover {
  color: color-mix(in srgb, var(--accent-color), transparent 25%);
  text-decoration: none;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  color: var(--heading-color);
  font-family: var(--heading-font);
}

/* PHP Email Form Messages
------------------------------*/
.php-email-form .error-message {
  display: none;
  background: #df1529;
  color: #ffffff;
  text-align: left;
  padding: 15px;
  margin-bottom: 24px;
  font-weight: 600;
}

.php-email-form .sent-message {
  display: none;
  color: #ffffff;
  background: #059652;
  text-align: center;
  padding: 15px;
  margin-bottom: 24px;
  font-weight: 600;
}

.php-email-form .loading {
  display: none;
  background: var(--surface-color);
  text-align: center;
  padding: 15px;
  margin-bottom: 24px;
}

.php-email-form .loading:before {
  content: "";
  display: inline-block;
  border-radius: 50%;
  width: 24px;
  height: 24px;
  margin: 0 10px -6px 0;
  border: 3px solid var(--accent-color);
  border-top-color: var(--surface-color);
  animation: php-email-form-loading 1s linear infinite;
}

@keyframes php-email-form-loading {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

/*--------------------------------------------------------------
# Global Header
--------------------------------------------------------------*/
.header {
  --background-color: rgba(255, 255, 255, 0);
  color: var(--default-color);
  background-color: var(--background-color);
  padding: 20px 0;
  transition: all 0.5s;
  z-index: 997;
}

.header .header-container {
  background: var(--surface-color);
  border-radius: 50px;
  padding: 5px 25px 5px 30px;
  box-shadow: 0px 2px 15px rgba(0, 0, 0, 0.1);
}

.header .logo {
  line-height: 1;
}

.header .logo img {
  max-height: 70px;
  margin-right: 8px;
}

.header .logo h1 {
  font-size: 20px;
  margin: 0;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: var(--heading-color);
}

.header .btn-getstarted,
.header .btn-getstarted:focus {
  color: var(--contrast-color);
  background: var(--accent-color);
  font-size: 14px;
  padding: 8px 20px;
  margin: 0 0 0 30px;
  border-radius: 50px;
  transition: 0.3s;
}

.header .btn-getstarted:hover,
.header .btn-getstarted:focus:hover {
  color: var(--contrast-color);
  background: color-mix(in srgb, var(--accent-color), transparent 15%);
}

@media (max-width: 1200px) {
  .header {
    padding-top: 10px;
  }

  .header .header-container {
    margin-left: 10px;
    margin-right: 10px;
    padding: 10px 5px 10px 15px;
  }

  .header .logo {
    order: 1;
  }

  .header .btn-getstarted {
    order: 2;
    margin: 0 10px 0 0;
    padding: 6px 15px;
  }

  .header .navmenu {
    order: 3;
  }
}

/*--------------------------------------------------------------
# Navigation Menu
--------------------------------------------------------------*/
/* Navmenu - Desktop */
@media (min-width: 1200px) {
  .navmenu {
    padding: 0;
  }

  .navmenu ul {
    margin: 0;
    padding: 0;
    display: flex;
    list-style: none;
    align-items: center;
  }

  .navmenu li {
    position: relative;
  }

  .navmenu a,
  .navmenu a:focus {
    color: var(--nav-color);
    padding: 18px 15px;
    font-size: 16px;
    font-family: var(--nav-font);
    font-weight: 400;
    display: flex;
    align-items: center;
    justify-content: space-between;
    white-space: nowrap;
    transition: 0.3s;
  }

  .navmenu a i,
  .navmenu a:focus i {
    font-size: 12px;
    line-height: 0;
    margin-left: 5px;
    transition: 0.3s;
  }

  .navmenu li:last-child a {
    padding-right: 0;
  }

  .navmenu li:hover>a,
  .navmenu .active,
  .navmenu .active:focus {
    color: var(--nav-hover-color);
  }

  .navmenu .dropdown ul {
    margin: 0;
    padding: 10px 0;
    background: var(--nav-dropdown-background-color);
    display: block;
    position: absolute;
    visibility: hidden;
    left: 14px;
    top: 130%;
    opacity: 0;
    transition: 0.3s;
    border-radius: 4px;
    z-index: 99;
    box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1);
  }

  .navmenu .dropdown ul li {
    min-width: 200px;
  }

  .navmenu .dropdown ul a {
    padding: 10px 20px;
    font-size: 15px;
    text-transform: none;
    color: var(--nav-dropdown-color);
  }

  .navmenu .dropdown ul a i {
    font-size: 12px;
  }

  .navmenu .dropdown ul a:hover,
  .navmenu .dropdown ul .active:hover,
  .navmenu .dropdown ul li:hover>a {
    color: var(--nav-dropdown-hover-color);
  }

  .navmenu .dropdown:hover>ul {
    opacity: 1;
    top: 100%;
    visibility: visible;
  }

  .navmenu .dropdown .dropdown ul {
    top: 0;
    left: -90%;
    visibility: hidden;
  }

  .navmenu .dropdown .dropdown:hover>ul {
    opacity: 1;
    top: 0;
    left: -100%;
    visibility: visible;
  }
}

/* Navmenu - Mobile */
@media (max-width: 1199px) {
  .mobile-nav-toggle {
    color: var(--nav-color);
    font-size: 28px;
    line-height: 0;
    margin-right: 10px;
    cursor: pointer;
    transition: color 0.3s;
  }

  .navmenu {
    padding: 0;
    z-index: 9997;
  }

  .navmenu ul {
    display: none;
    list-style: none;
    position: absolute;
    inset: 60px 20px 20px 20px;
    padding: 10px 0;
    margin: 0;
    border-radius: 6px;
    background-color: var(--nav-mobile-background-color);
    overflow-y: auto;
    transition: 0.3s;
    z-index: 9998;
    box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.1);
  }

  .navmenu a,
  .navmenu a:focus {
    color: var(--nav-dropdown-color);
    padding: 10px 20px;
    font-family: var(--nav-font);
    font-size: 17px;
    font-weight: 500;
    display: flex;
    align-items: center;
    justify-content: space-between;
    white-space: nowrap;
    transition: 0.3s;
  }

  .navmenu a i,
  .navmenu a:focus i {
    font-size: 12px;
    line-height: 0;
    margin-left: 5px;
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    transition: 0.3s;
    background-color: color-mix(in srgb, var(--accent-color), transparent 90%);
  }

  .navmenu a i:hover,
  .navmenu a:focus i:hover {
    background-color: var(--accent-color);
    color: var(--contrast-color);
  }

  .navmenu a:hover,
  .navmenu .active,
  .navmenu .active:focus {
    color: var(--nav-dropdown-hover-color);
  }

  .navmenu .active i,
  .navmenu .active:focus i {
    background-color: var(--accent-color);
    color: var(--contrast-color);
    transform: rotate(180deg);
  }

  .navmenu .dropdown ul {
    position: static;
    display: none;
    z-index: 99;
    padding: 10px 0;
    margin: 10px 20px;
    background-color: var(--nav-dropdown-background-color);
    border: 1px solid color-mix(in srgb, var(--default-color), transparent 90%);
    box-shadow: none;
    transition: all 0.5s ease-in-out;
  }

  .navmenu .dropdown ul ul {
    background-color: rgba(33, 37, 41, 0.1);
  }

  .navmenu .dropdown>.dropdown-active {
    display: block;
    background-color: rgba(33, 37, 41, 0.03);
  }

  .mobile-nav-active {
    overflow: hidden;
  }

  .mobile-nav-active .mobile-nav-toggle {
    color: #fff;
    position: absolute;
    font-size: 32px;
    top: 15px;
    right: 15px;
    margin-right: 0;
    z-index: 9999;
  }

  .mobile-nav-active .navmenu {
    position: fixed;
    overflow: hidden;
    inset: 0;
    background: rgba(33, 37, 41, 0.8);
    transition: 0.3s;
  }

  .mobile-nav-active .navmenu>ul {
    display: block;
  }

/* Redes sociais no header */
.header .social-links {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: 20px;
}

.header .social-links a {
  color: var(--accent-color);
  font-size: 18px;
  transition: 0.3s ease;
}

.header .social-links a:hover {
  color: var(--contrast-color);
  transform: scale(1.1);
}

@media (max-width: 768px) {
  .header .social-links {
    margin-top: 10px;
    justify-content: flex-start;
    flex-wrap: wrap;
  }
}

  


}

/*--------------------------------------------------------------
# Global Footer
--------------------------------------------------------------*/
.footer {
  color: var(--default-color);
  background-color: var(--background-color);
  font-size: 14px;
  padding-bottom: 50px;
  position: relative;
}

.footer .footer-top {
  padding-top: 50px;
  border-top: 1px solid color-mix(in srgb, var(--default-color), transparent 90%);
}

.footer .footer-about .logo {
  line-height: 1;
  margin-bottom: 25px;
}

.footer .footer-about .logo img {
  max-height: 40px;
  margin-right: 6px;
}

.footer .footer-about .logo span {
  color: var(--heading-color);
  font-size: 30px;
  font-weight: 700;
  letter-spacing: 1px;
  font-family: var(--heading-font);
}

.footer .footer-about p {
  font-size: 14px;
  font-family: var(--heading-font);
}

.footer .social-links a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--default-color), transparent 50%);
  font-size: 16px;
  color: color-mix(in srgb, var(--default-color), transparent 50%);
  margin-right: 10px;
  transition: 0.3s;
}

.footer .social-links a:hover {
  color: var(--accent-color);
  border-color: var(--accent-color);
}

.footer h4 {
  font-size: 16px;
  font-weight: bold;
  position: relative;
  padding-bottom: 12px;
}

.footer .footer-links {
  margin-bottom: 30px;
}

.footer .footer-links ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer .footer-links ul i {
  padding-right: 2px;
  font-size: 12px;
  line-height: 0;
}

.footer .footer-links ul li {
  padding: 10px 0;
  display: flex;
  align-items: center;
}

.footer .footer-links ul li:first-child {
  padding-top: 0;
}

.footer .footer-links ul a {
  color: color-mix(in srgb, var(--default-color), transparent 20%);
  display: inline-block;
  line-height: 1;
}

.footer .footer-links ul a:hover {
  color: var(--accent-color);
}

.footer .footer-contact p {
  margin-bottom: 5px;
}

.footer .copyright {
  padding-top: 25px;
  padding-bottom: 25px;
  background-color: color-mix(in srgb, var(--default-color), transparent 95%);
}

.footer .copyright p {
  margin-bottom: 0;
}

.footer .credits {
  margin-top: 6px;
  font-size: 13px;
}

/*--------------------------------------------------------------
# Preloader
--------------------------------------------------------------*/
#preloader {
  position: fixed;
  inset: 0;
  z-index: 999999;
  overflow: hidden;
  background: var(--background-color);
  transition: all 0.6s ease-out;
}

#preloader:before {
  content: "";
  position: fixed;
  top: calc(50% - 30px);
  left: calc(50% - 30px);
  border: 6px solid #ffffff;
  border-color: var(--accent-color) transparent var(--accent-color) transparent;
  border-radius: 50%;
  width: 60px;
  height: 60px;
  animation: animate-preloader 1.5s linear infinite;
}

@keyframes animate-preloader {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

/*--------------------------------------------------------------
# Scroll Top Button
--------------------------------------------------------------*/
.scroll-top {
  position: fixed;
  visibility: hidden;
  opacity: 0;
  right: 15px;
  bottom: -15px;
  z-index: 99999;
  background-color: var(--accent-color);
  width: 44px;
  height: 44px;
  border-radius: 50px;
  transition: all 0.4s;
}

.scroll-top i {
  font-size: 24px;
  color: var(--contrast-color);
  line-height: 0;
}

.scroll-top:hover {
  background-color: color-mix(in srgb, var(--accent-color), transparent 20%);
  color: var(--contrast-color);
}

.scroll-top.active {
  visibility: visible;
  opacity: 1;
  bottom: 15px;
}

/*--------------------------------------------------------------
# Disable aos animation delay on mobile devices
--------------------------------------------------------------*/
@media screen and (max-width: 768px) {
  [data-aos-delay] {
    transition-delay: 0 !important;
  }
}

/*--------------------------------------------------------------
# Global Page Titles & Breadcrumbs
--------------------------------------------------------------*/
.page-title {
  color: var(--default-color);
  background-color: var(--background-color);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  padding: 160px 0 80px 0;
  text-align: center;
  position: relative;
}

.page-title::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.02) 0px, rgba(255, 255, 255, 0.05) 1px, transparent 1px, transparent 10px);
  z-index: 1;
}

.page-title h1 {
  font-size: 42px;
  font-weight: 700;
  margin-bottom: 10px;
}

.page-title .breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  justify-content: center;
  padding: 0;
  margin: 0;
  font-size: 16px;
  font-weight: 400;
}

.page-title .breadcrumbs ol li+li {
  padding-left: 10px;
}

.page-title .breadcrumbs ol li+li::before {
  content: "/";
  display: inline-block;
  padding-right: 10px;
  color: color-mix(in srgb, var(--default-color), transparent 50%);
}

/*--------------------------------------------------------------
# Global Sections
--------------------------------------------------------------*/
section,
.section {
  color: var(--default-color);
  background-color: var(--background-color);
  padding: 60px 0;
  scroll-margin-top: 90px;
  overflow: clip;
}

@media (max-width: 1199px) {

  section,
  .section {
    scroll-margin-top: 66px;
  }
}

/*--------------------------------------------------------------
# Global Section Titles
--------------------------------------------------------------*/
.section-title {
  padding-bottom: 60px;
  position: relative;
}

.section-title h2 {
  font-size: 14px;
  font-weight: 500;
  padding: 0;
  line-height: 1px;
  margin: 0;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--default-color), transparent 50%);
  position: relative;
}

.section-title h2::after {
  content: "";
  width: 120px;
  height: 1px;
  display: inline-block;
  background: var(--accent-color);
  margin: 4px 10px;
}

.section-title div {
  color: var(--heading-color);
  margin: 0;
  margin: 0;
  font-size: 28px;
  font-weight: 700;
  text-transform: uppercase;
  font-family: var(--heading-font);
}

/*--------------------------------------------------------------
# Hero Section
--------------------------------------------------------------*/
.hero {
  position: relative;
  min-height: 100vh;
  width: 100%;
  display: flex;
  align-items: center;
  overflow: hidden;
  padding: 100px 0;
}

.hero::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-image: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.02) 0px, rgba(255, 255, 255, 0.05) 1px, transparent 1px, transparent 10px);
  z-index: 1;
}

.hero .container,
.hero .container-fluid {
  position: relative;
  z-index: 2;
}

.hero .content-col {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-right: 3rem;
}

@media (max-width: 991px) {
  .hero .content-col {
    padding-right: 15px;
    margin-bottom: 3rem;
  }
}

.hero .agency-name {
  margin-bottom: 1.5rem;
}

.hero .agency-name h5 {
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: 1px;
  color: var(--contrast-color);
  margin: 0;
}

.hero .main-heading {
  margin-bottom: 2rem;
}

.hero .main-heading h1 {
  font-size: 5rem;
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -1px;
  margin: 0;
}

@media (max-width: 1200px) {
  .hero .main-heading h1 {
    font-size: 4rem;
  }
}

@media (max-width: 767px) {
  .hero .main-heading h1 {
    font-size: 3rem;
  }
}

@media (max-width: 480px) {
  .hero .main-heading h1 {
    font-size: 2.5rem;
  }
}

.hero .divider {
  width: 60%;
  height: 1px;
  background-color: color-mix(in srgb, var(--default-color), transparent 85%);
  margin-bottom: 2rem;
}

@media (max-width: 767px) {
  .hero .divider {
    width: 100%;
  }
}

.hero .description {
  margin-bottom: 2.5rem;
}

.hero .description p {
  font-size: 1rem;
  line-height: 1.7;
  color: color-mix(in srgb, var(--default-color), transparent 20%);
  margin: 0;
}

.hero .cta-button .btn {
  display: inline-flex;
  align-items: center;
  background-color: transparent;
  border: 1px solid color-mix(in srgb, var(--default-color), transparent 40%);
  color: var(--default-color);
  padding: 0.75rem 1.5rem;
  border-radius: 50px;
  font-size: 0.9rem;
  font-weight: 600;
  letter-spacing: 1px;
  transition: all 0.3s ease;
}

.hero .cta-button .btn span {
  margin-right: 0.5rem;
}

.hero .cta-button .btn i {
  font-size: 1.2rem;
  transition: transform 0.3s ease;
}

.hero .cta-button .btn:hover {
  background-color: var(--accent-color);
  border-color: var(--accent-color);
  color: var(--contrast-color);
}

.hero .cta-button .btn:hover i {
  transform: translateX(5px);
}

.hero .visual-content {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

@media (max-width: 991px) {
  .hero .visual-content {
    flex-direction: column;
  }
}

.hero .fluid-shape {
  position: relative;
  width: 100%;
  margin: 0 auto;
}

.hero .fluid-shape .fluid-img {
  width: 100%;
  height: auto;
  animation: float 6s ease-in-out infinite;
}

@keyframes float {
  0% {
    transform: translateY(0px);
  }

  50% {
    transform: translateY(-15px);
  }

  100% {
    transform: translateY(0px);
  }
}

.hero .stats-card {
  position: absolute;
  bottom: 10%;
  right: 0;
  background-color: color-mix(in srgb, var(--surface-color), transparent 50%);
  backdrop-filter: blur(10px);
  border: 1px solid color-mix(in srgb, var(--default-color), transparent 90%);
  border-radius: 10px;
  padding: 1.5rem;
  width: 200px;
  display: flex;
  flex-direction: column;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
}

@media (max-width: 991px) {
  .hero .stats-card {
    position: relative;
    bottom: auto;
    right: auto;
    margin-top: 2rem;
    width: 90%;
  }
}

.hero .stats-card .stats-number h2 {
  font-size: 3rem;
  font-weight: 700;
  margin: 0;
  line-height: 1;
}

.hero .stats-card .stats-label {
  margin-top: 0.5rem;
}

.hero .stats-card .stats-label p {
  font-size: 0.9rem;
  margin: 0;
}

.hero .stats-card .stats-arrow {
  position: absolute;
  top: 1.5rem;
  right: 1.5rem;
}

.hero .stats-card .stats-arrow a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  background-color: var(--accent-color);
  border-radius: 50%;
  color: var(--contrast-color);
  font-size: 1rem;
  transition: all 0.3s ease;
}

.hero .stats-card .stats-arrow a:hover {
  transform: translateY(-3px);
  background-color: color-mix(in srgb, var(--accent-color), transparent 20%);
}

/* Estilo geral para os botões de apoio */
.btn-support {
  padding: 0.75rem 1.5rem;
  font-size: 1rem;
  font-weight: 600;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  transition: all 0.3s ease;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}

/* Botão de Sub */
.btn-twitch {
  background-color: #9146FF;
  color: #fff;
}
.btn-twitch:hover {
  background-color: #772ce8;
  transform: scale(1.05);
}

/* Botão de LivePix */
.btn-livepix {
  background-color: #FF69B4;
  color: #fff;
}
.btn-livepix:hover {
  background-color: #fa48a1;
  transform: scale(1.05);
}

.name {
  animation: glow 2s ease-in-out infinite alternate;
}

@keyframes glow {
  from {
    text-shadow: 0 0 5px #9146FF, 0 0 10px #9146FF;
  }
  to {
    text-shadow: 0 0 20px #9146FF, 0 0 40px #9146FF;
  }
}


/*--------------------------------------------------------------
# About Section
--------------------------------------------------------------*/
.about {
  padding-top: 60px;
  padding-bottom: 60px;
}

.about .about-image {
  border-radius: 8px;
  overflow: hidden;
}

.about .about-image .experience-badge {
  position: absolute;
  bottom: 30px;
  right: -30px;
  background: var(--accent-color);
  color: var(--contrast-color);
  padding: 1.5rem;
  border-radius: 8px;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
  text-align: center;
  min-width: 140px;
}

.about .about-image .experience-badge .years {
  font-size: 2.5rem;
  font-weight: 700;
  line-height: 1;
  display: block;
  margin-bottom: 5px;
}

.about .about-image .experience-badge .text {
  font-size: 0.9rem;
  text-transform: uppercase;
  letter-spacing: 1px;
}

@media (max-width: 768px) {
  .about .about-image .experience-badge {
    right: 0;
    bottom: 20px;
    padding: 1rem;
    min-width: 120px;
  }

  .about .about-image .experience-badge .years {
    font-size: 2rem;
  }
}

.about .about-content h2 {
  font-size: 2.2rem;
  margin-bottom: 1.25rem;
  font-weight: 700;
}

@media (max-width: 768px) {
  .about .about-content h2 {
    font-size: 1.8rem;
  }
}

.about .about-content .lead {
  font-size: 1.15rem;
  margin-bottom: 1.25rem;
  color: color-mix(in srgb, var(--heading-color), transparent 30%);
}

.about .about-content p {
  margin-bottom: 1rem;
}

.about .about-content .feature-item {
  padding: 1.25rem;
  background-color: var(--surface-color);
  border-radius: 8px;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
  height: 100%;
  transition: all 0.3s ease;
}

.about .about-content .feature-item:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
}

.about .about-content .feature-item i {
  font-size: 1.75rem;
  color: var(--accent-color);
  margin-bottom: 0.75rem;
  display: block;
}

.about .about-content .feature-item h5 {
  font-size: 1.15rem;
  margin-bottom: 0.75rem;
  font-weight: 600;
}

.about .about-content .feature-item p {
  font-size: 0.9rem;
  margin-bottom: 0;
}

.about .about-content .btn-primary {
  background-color: var(--accent-color);
  border-color: var(--accent-color);
  padding: 0.5rem 1.5rem;
  border-radius: 50px;
  font-weight: 500;
  color: var(--contrast-color);
}

.about .about-content .btn-primary:hover {
  background-color: color-mix(in srgb, var(--accent-color), black 10%);
  border-color: color-mix(in srgb, var(--accent-color), black 10%);
}

.about .testimonial-section {
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}

.about .testimonial-section .testimonial-intro h3 {
  font-size: 1.75rem;
  margin-bottom: 1.25rem;
  font-weight: 700;
}

.about .testimonial-section .testimonial-intro p {
  margin-bottom: 1.5rem;
}

.about .testimonial-section .testimonial-intro .swiper-nav-buttons {
  display: flex;
  gap: 10px;
}

.about .testimonial-section .testimonial-intro .swiper-nav-buttons button {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background-color: var(--surface-color);
  border: 1px solid rgba(0, 0, 0, 0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.3s ease;
}

.about .testimonial-section .testimonial-intro .swiper-nav-buttons button:hover {
  background-color: var(--accent-color);
  border-color: var(--accent-color);
  color: var(--contrast-color);
}

.about .testimonial-section .testimonial-intro .swiper-nav-buttons button i {
  font-size: 1.25rem;
}

.about .testimonial-section .testimonial-slider {
  overflow: hidden;
}

.about .testimonial-section .testimonial-slider .swiper-wrapper {
  height: auto !important;
}

.about .testimonial-section .testimonial-item {
  background-color: var(--surface-color);
  border-radius: 10px;
  padding: 2rem;
  box-shadow: 0 5px 30px rgba(0, 0, 0, 0.05);
  height: 100%;
}

.about .testimonial-section .testimonial-item .rating {
  color: #ffc107;
  font-size: 1rem;
}

.about .testimonial-section .testimonial-item p {
  font-style: italic;
  margin-bottom: 0;
  font-size: 1rem;
  line-height: 1.6;
}

.about .testimonial-section .testimonial-item .client-info .client-img {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  margin-right: 15px;
  object-fit: cover;
}

.about .testimonial-section .testimonial-item .client-info h6 {
  font-weight: 600;
}

.about .testimonial-section .testimonial-item .client-info span {
  font-size: 0.85rem;
  color: color-mix(in srgb, var(--default-color), transparent 40%);
}




/*--------------------------------------------------------------
# Portfolio Section
--------------------------------------------------------------*/
.portfolio .portfolio-filters {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 15px;
  padding: 0;
  margin: 0 0 40px;
  list-style: none;
}

.portfolio .portfolio-filters li {
  font-size: 15px;
  font-weight: 500;
  padding: 12px 25px;
  cursor: pointer;
  background: var(--surface-color);
  color: var(--default-color);
  border-radius: 30px;
  display: flex;
  align-items: center;
  gap: 8px;
  transition: all 0.3s ease;
}

.portfolio .portfolio-filters li i {
  font-size: 1.1em;
  transition: transform 0.3s ease;
}

.portfolio .portfolio-filters li:hover {
  color: var(--accent-color);
  transform: translateY(-2px);
  background: color-mix(in srgb, var(--accent-color), transparent 92%);
}

.portfolio .portfolio-filters li:hover i {
  transform: scale(1.1);
}

.portfolio .portfolio-filters li.filter-active {
  background: var(--accent-color);
  color: var(--contrast-color);
}

@media (max-width: 768px) {
  .portfolio .portfolio-filters {
    gap: 10px;
  }

  .portfolio .portfolio-filters li {
    padding: 8px 20px;
    font-size: 14px;
  }
}

.portfolio .portfolio-entry {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  background: var(--surface-color);
  box-shadow: 0 4px 30px rgba(0, 0, 0, 0.05);
}

.portfolio .portfolio-entry .entry-image iframe {
  width: 100%;
  height: 100%;
  border: 0;
}


.portfolio .portfolio-entry .entry-image {
  position: relative;
  margin: 0;
  overflow: hidden;
  aspect-ratio: 16/9;
}

.portfolio .portfolio-entry .entry-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.portfolio .portfolio-entry .entry-image .entry-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 0%, rgba(0, 0, 0, 0.8) 100%);
  display: flex;
  align-items: flex-end;
  padding: 30px;
  opacity: 0;
  transform: translateY(20px);
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.portfolio .portfolio-entry .entry-image .entry-overlay .overlay-content {
  width: 100%;
  transform: translateY(20px);
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.portfolio .portfolio-entry .entry-image .entry-overlay .entry-meta {
  color: var(--accent-color);
  font-size: 14px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 10px;
}

.portfolio .portfolio-entry .entry-image .entry-overlay .entry-title {
  color: var(--contrast-color);
  font-size: 24px;
  font-weight: 600;
  margin: 0 0 20px;
}

.portfolio .portfolio-entry .entry-image .entry-overlay .entry-links {
  display: flex;
  gap: 15px;
}

.portfolio .portfolio-entry .entry-image .entry-overlay .entry-links a {
  width: 46px;
  height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--surface-color);
  color: var(--accent-color);
  border-radius: 12px;
  font-size: 20px;
  transition: all 0.3s ease;
  opacity: 0;
  transform: translateY(20px);
}

.portfolio .portfolio-entry .entry-image .entry-overlay .entry-links a:hover {
  background: var(--accent-color);
  color: var(--contrast-color);
  transform: translateY(-2px);
}

.portfolio .portfolio-entry .entry-image .entry-overlay .entry-links a:nth-child(1) {
  transition-delay: 0.1s;
}

.portfolio .portfolio-entry .entry-image .entry-overlay .entry-links a:nth-child(2) {
  transition-delay: 0.2s;
}

.portfolio .portfolio-entry:hover .entry-image img {
  transform: scale(1.05);
}

.portfolio .portfolio-entry:hover .entry-image .entry-overlay {
  opacity: 1;
  transform: translateY(0);
}

.portfolio .portfolio-entry:hover .entry-image .entry-overlay .overlay-content {
  transform: translateY(0);
}

.portfolio .portfolio-entry:hover .entry-image .entry-overlay .entry-links a {
  opacity: 1;
  transform: translateY(0);
}

@media (max-width: 768px) {
  .portfolio .portfolio-entry .entry-image .entry-overlay {
    padding: 20px;
  }

  .portfolio .portfolio-entry .entry-image .entry-overlay .entry-title {
    font-size: 20px;
    margin-bottom: 15px;
  }

  .portfolio .portfolio-entry .entry-image .entry-overlay .entry-links a {
    width: 40px;
    height: 40px;
    font-size: 18px;
  }
}

.portfolio .portfolio-item .entry-image {
  aspect-ratio: 4/3;
}

@media (min-width: 1200px) {
  .portfolio .portfolio-item .entry-title {
    font-size: 20px;
  }
}

@media (min-width: 768px) {
  .portfolio .row {
    margin-left: -10px;
    margin-right: -10px;
  }

  .portfolio .row .portfolio-item {
    padding-left: 10px;
    padding-right: 10px;
  }
}

@media (min-width: 992px) {
  .portfolio .row {
    margin-left: -12px;
    margin-right: -12px;
  }

  .portfolio .row .portfolio-item {
    padding-left: 12px;
    padding-right: 12px;
  }
}

@media (min-width: 1200px) {
  .portfolio .row {
    margin-left: -15px;
    margin-right: -15px;
  }

  .portfolio .row .portfolio-item {
    padding-left: 15px;
    padding-right: 15px;
  }
}

@media (min-width: 1200px) {
  .portfolio .entry-overlay {
    padding: 25px;
  }
}

@media (min-width: 992px) and (max-width: 1199px) {
  .portfolio .entry-overlay {
    padding: 20px;
  }
}

@media (max-width: 991px) {
  .portfolio .entry-overlay {
    padding: 20px;
  }
}


/*--------------------------------------------------------------
# Portfolio Details Section
--------------------------------------------------------------*/
.portfolio-details {
  --section-spacing: 2.5rem;
}

.portfolio-details .portfolio-details-media {
  position: relative;
}

.portfolio-details .portfolio-details-media .main-image {
  margin-bottom: 1rem;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
}

.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider {
  position: relative;
}

.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-wrapper {
  height: auto !important;
}

.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-slide img {
  aspect-ratio: 3/2;
  object-fit: cover;
  width: 100%;
}

.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-next,
.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-prev {
  background-color: var(--contrast-color);
  width: 40px;
  height: 40px;
  border-radius: 50%;
  transition: all 0.3s ease;
}

.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-next:after,
.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-prev:after {
  font-size: 16px;
  color: var(--accent-color);
  font-weight: bold;
}

.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-next:hover,
.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-prev:hover {
  background-color: var(--accent-color);
}

.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-next:hover:after,
.portfolio-details .portfolio-details-media .main-image .portfolio-details-slider .swiper-button-prev:hover:after {
  color: var(--contrast-color);
}

.portfolio-details .portfolio-details-media .thumbnail-grid img {
  height: 80px;
  object-fit: cover;
  border-radius: 8px;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.05);
}

.portfolio-details .portfolio-details-media .thumbnail-grid img:hover {
  transform: translateY(-5px);
  box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
}

.portfolio-details .portfolio-details-media .tech-stack-badges {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 1.5rem;
}

.portfolio-details .portfolio-details-media .tech-stack-badges span {
  display: inline-block;
  padding: 6px 12px;
  font-size: 13px;
  font-weight: 500;
  border-radius: 20px;
  background-color: color-mix(in srgb, var(--heading-color), transparent 85%);
  color: var(--heading-color);
  transition: all 0.3s ease;
}

.portfolio-details .portfolio-details-media .tech-stack-badges span:hover {
  background-color: color-mix(in srgb, var(--heading-color), transparent 70%);
  transform: translateY(-2px);
}

.portfolio-details .portfolio-details-content {
  padding: 0 0 0 2rem;
  height: 100%;
  display: flex;
  flex-direction: column;
}

.portfolio-details .portfolio-details-content .project-meta {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  margin-bottom: 1.5rem;
}

.portfolio-details .portfolio-details-content .project-meta .badge-wrapper .project-badge {
  display: inline-block;
  padding: 8px 16px;
  background-color: color-mix(in srgb, var(--accent-color), transparent 90%);
  color: var(--accent-color);
  border-radius: 30px;
  font-weight: 600;
  font-size: 14px;
}

.portfolio-details .portfolio-details-content .project-meta .date-client {
  display: flex;
  gap: 1.5rem;
}

.portfolio-details .portfolio-details-content .project-meta .date-client .meta-item {
  display: flex;
  align-items: center;
  font-size: 14px;
  color: color-mix(in srgb, var(--default-color), transparent 30%);
}

.portfolio-details .portfolio-details-content .project-meta .date-client .meta-item i {
  margin-right: 6px;
  color: var(--accent-color);
}

.portfolio-details .portfolio-details-content .project-title {
  font-size: 2.2rem;
  margin-bottom: 1rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--heading-color);
}

.portfolio-details .portfolio-details-content .project-website {
  display: flex;
  align-items: center;
  margin-bottom: 1.5rem;
}

.portfolio-details .portfolio-details-content .project-website i {
  font-size: 22px;
  color: var(--accent-color);
  margin-right: 8px;
}

.portfolio-details .portfolio-details-content .project-website a {
  font-weight: 500;
  transition: all 0.3s;
}

.portfolio-details .portfolio-details-content .project-website a:hover {
  letter-spacing: 0.5px;
}

.portfolio-details .portfolio-details-content .project-overview {
  margin-bottom: var(--section-spacing);
}

.portfolio-details .portfolio-details-content .project-overview .lead {
  font-size: 1.1rem;
  line-height: 1.7;
  color: color-mix(in srgb, var(--default-color), transparent 15%);
  margin-bottom: 1.5rem;
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item {
  border: none;
  background: none;
  margin-bottom: 10px;
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item .accordion-header .accordion-button {
  padding: 1rem;
  font-weight: 600;
  font-size: 1rem;
  color: var(--heading-color);
  background-color: color-mix(in srgb, var(--surface-color), transparent 70%);
  border-radius: 8px !important;
  box-shadow: none;
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item .accordion-header .accordion-button:not(.collapsed) {
  background-color: var(--surface-color);
  color: var(--accent-color);
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.03);
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item .accordion-header .accordion-button:not(.collapsed) i {
  color: var(--accent-color);
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item .accordion-header .accordion-button::after {
  background-size: 14px;
  width: 14px;
  height: 14px;
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item .accordion-header .accordion-button i {
  font-size: 1.1rem;
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item .accordion-body {
  padding: 1rem;
  background-color: var(--surface-color);
  border-bottom-left-radius: 8px;
  border-bottom-right-radius: 8px;
}

.portfolio-details .portfolio-details-content .project-overview .project-accordion .accordion-item .accordion-body p {
  margin-bottom: 0;
  color: color-mix(in srgb, var(--default-color), transparent 25%);
  line-height: 1.6;
}

.portfolio-details .portfolio-details-content .project-features {
  margin-bottom: var(--section-spacing);
}

.portfolio-details .portfolio-details-content .project-features h3 {
  display: flex;
  align-items: center;
  font-size: 1.25rem;
  margin-bottom: 1.2rem;
}

.portfolio-details .portfolio-details-content .project-features h3 i {
  margin-right: 10px;
  color: var(--accent-color);
  font-size: 1.1em;
}

.portfolio-details .portfolio-details-content .project-features .feature-list {
  list-style: none;
  padding-left: 0;
}

.portfolio-details .portfolio-details-content .project-features .feature-list li {
  display: flex;
  align-items: center;
  padding: 8px 0;
  font-size: 15px;
  color: color-mix(in srgb, var(--default-color), transparent 15%);
}

.portfolio-details .portfolio-details-content .project-features .feature-list li i {
  color: var(--accent-color);
  margin-right: 10px;
  font-size: 1.1em;
}

.portfolio-details .portfolio-details-content .cta-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  margin-top: auto;
}

.portfolio-details .portfolio-details-content .cta-buttons .btn-view-project {
  padding: 12px 28px;
  background-color: var(--accent-color);
  color: var(--contrast-color);
  border-radius: 30px;
  font-weight: 500;
  transition: all 0.3s ease;
}

.portfolio-details .portfolio-details-content .cta-buttons .btn-view-project:hover {
  background-color: color-mix(in srgb, var(--accent-color), black 15%);
  transform: translateY(-3px);
  box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
}

.portfolio-details .portfolio-details-content .cta-buttons .btn-next-project {
  padding: 12px 28px;
  background-color: color-mix(in srgb, var(--heading-color), transparent 90%);
  color: var(--heading-color);
  border-radius: 30px;
  font-weight: 500;
  transition: all 0.3s ease;
  display: flex;
  align-items: center;
  gap: 8px;
}

.portfolio-details .portfolio-details-content .cta-buttons .btn-next-project i {
  transition: transform 0.3s ease;
}

.portfolio-details .portfolio-details-content .cta-buttons .btn-next-project:hover {
  background-color: color-mix(in srgb, var(--heading-color), transparent 80%);
}

.portfolio-details .portfolio-details-content .cta-buttons .btn-next-project:hover i {
  transform: translateX(3px);
}

@media (max-width: 1199.98px) {
  .portfolio-details .portfolio-details-content {
    padding-left: 1rem;
  }
}

@media (max-width: 991.98px) {
  .portfolio-details .portfolio-details-content {
    padding: 2rem 0 0 0;
  }

  .portfolio-details .portfolio-details-content .cta-buttons {
    margin-top: 2rem;
  }
}

@media (max-width: 767.98px) {
  .portfolio-details .project-meta {
    flex-direction: column;
    gap: 1rem;
  }

  .portfolio-details .project-meta .date-client {
    flex-direction: column;
    gap: 0.5rem;
  }

  .portfolio-details .cta-buttons {
    flex-direction: column;
    width: 100%;
  }

  .portfolio-details .cta-buttons a {
    width: 100%;
    text-align: center;
  }
}
/*--------------------------------------------------------------
# Starter Section AGENDA
--------------------------------------------------------------*/
.text-violet {
  color: #c38aff;
}

/* destaca o card da próxima live */
#agenda-card {
  background: var(--accent-color);
  color: var(--contrast-color);
}

/* força a descrição dentro do #agenda-card a ficar branca, tornando legível sobre o rosa */
#agenda-card .text-secondary {
  color: rgba(255, 255, 255, 0.9) !important;
}

/* cartões dos outros dias */
#agenda-cards .card {
  background: var(--surface-color);
  color: var(--default-color);
  transition: transform .2s;
}
#agenda-cards .card:hover {
  transform: translateY(-5px);
}

/* remove borders e uniformiza sombra */
.card {
  border-radius: 1rem;
}



/*--------------------------------------------------------------
# Starter Ranking
--------------------------------------------------------------*/

/* ====================================
   Estilos para o input de busca
   ==================================== */
.search-group .input-group-text,
.search-group .form-control,
.search-group .btn-clear {
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  color: #fff;
}

/* placeholder claro */
.search-group .form-control::placeholder {
  color: rgba(255, 255, 255, 0.6);
}

/* removendo sombra de foco */
.search-group .form-control:focus {
  box-shadow: none;
}

/* o “×” fica um pouco maior */
.btn-clear {
  font-size: 1.25rem;
  line-height: 1;
  padding: 0 0.75rem;
  border-left: none;
}

/* hover no botão de limpar */
.btn-clear:hover {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
  cursor: pointer;
}

/* =========================================================
   Estilo do SETUP
   ========================================================= */
/* Grid responsivo para as 4 imagens */

/* 1) Imagens da galeria */
.images-col .custom-img {
  width: 100%;
  aspect-ratio: 3/4;         /* mantém proporção retrato */
  object-fit: cover;
  border-radius: 12px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5);
  transition: transform .3s ease, box-shadow .3s ease;
}

.images-col .custom-img:hover {
  transform: scale(1.05);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.7);
}

/* 2) Garante que em telas ≥992px cada imagem ocupe metade da coluna */
@media (min-width: 992px) {
  .images-col .row > .col-sm-6 {
    flex: 0 0 50%;
    max-width: 50%;
  }
}



/*--------------------------------------------------------------
# Starter secao contato
--------------------------------------------------------------*/

/* =========================================================
   Estilo do Modal de Contato
   ========================================================= */
#contactModal .modal-content {
  background: var(--surface-color);
  border-radius: 1rem;
  overflow: hidden;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
}

/* Header: título centralizado e close no canto */
#contactModal .modal-header {
  background: var(--accent-color);
  border-bottom: none;
  color: var(--contrast-color);
  padding: 1rem 1.5rem;

  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
}

#contactModal .modal-title {
  margin: 0;
  font-size: 1.5rem;
  font-weight: 600;
}

#contactModal .btn-close {
  position: absolute;
  top: 50%;
  right: 1rem;
  transform: translateY(-50%);
  filter: invert(1);
  opacity: 0.8;
}
#contactModal .btn-close:hover {
  opacity: 1;
}

/* Corpo do formulário */
#contactModal .modal-body {
  padding: 1.5rem;
}

.contact-form .form-control {
  background: transparent;
  border: 1px solid var(--default-color);
  border-radius: 0.5rem;
  color: var(--default-color);
  padding: 0.75rem 1rem;
  margin-bottom: 1rem;
  transition: border-color 0.3s;
}

.contact-form .form-control:focus {
  border-color: var(--accent-color);
  box-shadow: none;
  background: rgba(0, 0, 0, 0.1);
}

/* Botão de enviar */
.contact-form .btn-primary {
  background: var(--accent-color);
  color: var(--contrast-color);
  border: none;
  border-radius: 0.5rem;
  padding: 0.75rem 1.5rem;
  font-weight: 600;
  transition: background 0.3s;
}

.contact-form .btn-primary:hover {
  background: color-mix(in srgb, var(--accent-color), transparent 20%);
}

/* Lista de contatos no modal */
.contact-info li i {
  font-size: 1.2rem;
  margin-right: 0.5rem;
  color: var(--accent-color);
}

.contact-info a {
  color: var(--default-color);
  transition: color 0.3s;
}

.contact-info a:hover {
  color: var(--accent-color);
}

/* Ícones sociais */
#contactModal .social-links a {
  width: 40px;
  height: 40px;
  background: var(--accent-color);
  color: var(--contrast-color);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: 0.5rem;
  transition: background 0.3s;
}

#contactModal .social-links a:hover {
  background: color-mix(in srgb, var(--accent-color), transparent 20%);
}


/*--------------------------------------------------------------
# Starter Section Section
--------------------------------------------------------------*/
.starter-section {
  /* Add your styles here */
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6Im1haW4ubWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuKiBUZW1wbGF0ZSBOYW1lOiBTdHJhdGVneVxuKiBUZW1wbGF0ZSBVUkw6IGh0dHBzOi8vYm9vdHN0cmFwbWFkZS5jb20vc3RyYXRlZ3ktYm9vdHN0cmFwLWFnZW5jeS10ZW1wbGF0ZS9cbiogVXBkYXRlZDogSnVuIDA2IDIwMjUgd2l0aCBCb290c3RyYXAgdjUuMy42XG4qIEF1dGhvcjogQm9vdHN0cmFwTWFkZS5jb21cbiogTGljZW5zZTogaHR0cHM6Ly9ib290c3RyYXBtYWRlLmNvbS9saWNlbnNlL1xuKi9cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBGb250ICYgQ29sb3IgVmFyaWFibGVzXG4jIEhlbHA6IGh0dHBzOi8vYm9vdHN0cmFwbWFkZS5jb20vY29sb3Itc3lzdGVtL1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyogRm9udHMgKi9cbjpyb290IHtcbiAgLS1kZWZhdWx0LWZvbnQ6IFwiUm9ib3RvXCIsICBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBcIk5vdG8gU2Fuc1wiLCBcIkxpYmVyYXRpb24gU2Fuc1wiLCBzYW5zLXNlcmlmLCBcIkFwcGxlIENvbG9yIEVtb2ppXCIsIFwiU2Vnb2UgVUkgRW1vamlcIiwgXCJTZWdvZSBVSSBTeW1ib2xcIiwgXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIC0taGVhZGluZy1mb250OiBcIk51bml0byBTYW5zXCIsICBzYW5zLXNlcmlmO1xuICAtLW5hdi1mb250OiBcIlJhbGV3YXlcIiwgIHNhbnMtc2VyaWY7XG59XG5cbi8qIEdsb2JhbCBDb2xvcnMgLSBDb3JlcyBwZXJzb25hbGl6YWRhcyBkbyBjbGllbnRlICovXG46cm9vdCB7IFxuICAtLWJhY2tncm91bmQtY29sb3I6ICMwMzExMTk7IC8qIE1hbnRpZG8gKi9cbiAgLS1kZWZhdWx0LWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7IC8qIE1hbnRpZG8gKi9cbiAgLS1oZWFkaW5nLWNvbG9yOiAjRUZFOUZGOyAvKiBMYXZhbmRhIGNsYXJvICovXG4gIC0tYWNjZW50LWNvbG9yOiAjRDU4NEREOyAvKiBSb3hvIHJvc2FkbyAqL1xuICAtLXN1cmZhY2UtY29sb3I6ICMxYjI2MmM7IC8qIE1hbnRpZG8gKi9cbiAgLS1jb250cmFzdC1jb2xvcjogI2ZmZmZmZjsgLyogTWFudGlkbyAqL1xuXG4gIC8qIENvcmVzIGFkaWNpb25haXMgb3BjaW9uYWlzICovXG4gIC0tcHJpbWFyeS1jb2xvcjogIzhFODdCQTsgLyogUm94byBhY2luemVudGFkbyAqL1xuICAtLWhpZ2hsaWdodC1jb2xvcjogI0Q1ODRERDtcbiAgLS1saWdodC1jb2xvcjogI0VGRTlGRjtcbn1cblxuLyogTmF2IE1lbnUgQ29sb3JzIC0gTWVudSB0YW1iw6ltIGNvbSBhIGlkZW50aWRhZGUgdmlzdWFsIGRvIGNsaWVudGUgKi9cbjpyb290IHtcbiAgLS1uYXYtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsgLyogTWFudGlkbyAqL1xuICAtLW5hdi1ob3Zlci1jb2xvcjogI0Q1ODRERDsgLyogSG92ZXIgcm94byByb3NhZG8gKi9cbiAgLS1uYXYtbW9iaWxlLWJhY2tncm91bmQtY29sb3I6ICMyOTM0M2E7IC8qIE1hbnRpZG8gKi9cbiAgLS1uYXYtZHJvcGRvd24tYmFja2dyb3VuZC1jb2xvcjogIzI5MzQzYTsgLyogTWFudGlkbyAqL1xuICAtLW5hdi1kcm9wZG93bi1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOyAvKiBNYW50aWRvICovXG4gIC0tbmF2LWRyb3Bkb3duLWhvdmVyLWNvbG9yOiAjRDU4NEREOyAvKiBIb3ZlciByb3hvIHJvc2FkbyAqL1xufVxuXG5cbi8qIENvbG9yIFByZXNldHMgLSBUaGVzZSBjbGFzc2VzIG92ZXJyaWRlIGdsb2JhbCBjb2xvcnMgd2hlbiBhcHBsaWVkIHRvIGFueSBzZWN0aW9uIG9yIGVsZW1lbnQsIHByb3ZpZGluZyByZXVzZSBvZiB0aGUgc2FtIGNvbG9yIHNjaGVtZS4gKi9cblxuLmxpZ2h0LWJhY2tncm91bmQge1xuICAtLWJhY2tncm91bmQtY29sb3I6ICMwZDFkMjY7XG4gIC0tc3VyZmFjZS1jb2xvcjogIzE2MjYyZjtcbn1cblxuLmRhcmstYmFja2dyb3VuZCB7XG4gIC0tYmFja2dyb3VuZC1jb2xvcjogIzA2MDYwNjtcbiAgLS1kZWZhdWx0LWNvbG9yOiAjZmZmZmZmO1xuICAtLWhlYWRpbmctY29sb3I6ICNmZmZmZmY7XG4gIC0tc3VyZmFjZS1jb2xvcjogIzI1MjUyNTtcbiAgLS1jb250cmFzdC1jb2xvcjogI2ZmZmZmZjtcbn1cblxuLyogU21vb3RoIHNjcm9sbCAqL1xuOnJvb3Qge1xuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBHZW5lcmFsIFN0eWxpbmcgJiBTaGFyZWQgQ2xhc3Nlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuYm9keSB7XG4gIGNvbG9yOiB2YXIoLS1kZWZhdWx0LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1kZWZhdWx0LWZvbnQpO1xufVxuXG5hIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogMC4zcztcbn1cblxuYTpob3ZlciB7XG4gIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYWNjZW50LWNvbG9yKSwgdHJhbnNwYXJlbnQgMjUlKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBjb2xvcjogdmFyKC0taGVhZGluZy1jb2xvcik7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1oZWFkaW5nLWZvbnQpO1xufVxuXG4vKiBQSFAgRW1haWwgRm9ybSBNZXNzYWdlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi5waHAtZW1haWwtZm9ybSAuZXJyb3ItbWVzc2FnZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICNkZjE1Mjk7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBwYWRkaW5nOiAxNXB4O1xuICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ucGhwLWVtYWlsLWZvcm0gLnNlbnQtbWVzc2FnZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBiYWNrZ3JvdW5kOiAjMDU5NjUyO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5waHAtZW1haWwtZm9ybSAubG9hZGluZyB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UtY29sb3IpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG59XG5cbi5waHAtZW1haWwtZm9ybSAubG9hZGluZzpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgd2lkdGg6IDI0cHg7XG4gIGhlaWdodDogMjRweDtcbiAgbWFyZ2luOiAwIDEwcHggLTZweCAwO1xuICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1zdXJmYWNlLWNvbG9yKTtcbiAgYW5pbWF0aW9uOiBwaHAtZW1haWwtZm9ybS1sb2FkaW5nIDFzIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBwaHAtZW1haWwtZm9ybS1sb2FkaW5nIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4jIEdsb2JhbCBIZWFkZXJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi5oZWFkZXIge1xuICAtLWJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMCk7XG4gIGNvbG9yOiB2YXIoLS1kZWZhdWx0LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XG4gIHBhZGRpbmc6IDIwcHggMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gIHotaW5kZXg6IDk5Nztcbn1cblxuLmhlYWRlciAuaGVhZGVyLWNvbnRhaW5lciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICBwYWRkaW5nOiA1cHggMjVweCA1cHggMzBweDtcbiAgYm94LXNoYWRvdzogMHB4IDJweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmhlYWRlciAubG9nbyB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uaGVhZGVyIC5sb2dvIGltZyB7XG4gIG1heC1oZWlnaHQ6IDcwcHg7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuXG4uaGVhZGVyIC5sb2dvIGgxIHtcbiAgZm9udC1zaXplOiAyMHB4O1xuICBtYXJnaW46IDA7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgY29sb3I6IHZhcigtLWhlYWRpbmctY29sb3IpO1xufVxuXG4uaGVhZGVyIC5idG4tZ2V0c3RhcnRlZCxcbi5oZWFkZXIgLmJ0bi1nZXRzdGFydGVkOmZvY3VzIHtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwYWRkaW5nOiA4cHggMjBweDtcbiAgbWFyZ2luOiAwIDAgMCAzMHB4O1xuICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICB0cmFuc2l0aW9uOiAwLjNzO1xufVxuXG4uaGVhZGVyIC5idG4tZ2V0c3RhcnRlZDpob3Zlcixcbi5oZWFkZXIgLmJ0bi1nZXRzdGFydGVkOmZvY3VzOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWFjY2VudC1jb2xvciksIHRyYW5zcGFyZW50IDE1JSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMjAwcHgpIHtcbiAgLmhlYWRlciB7XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gIH1cblxuICAuaGVhZGVyIC5oZWFkZXItY29udGFpbmVyIHtcbiAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgcGFkZGluZzogMTBweCA1cHggMTBweCAxNXB4O1xuICB9XG5cbiAgLmhlYWRlciAubG9nbyB7XG4gICAgb3JkZXI6IDE7XG4gIH1cblxuICAuaGVhZGVyIC5idG4tZ2V0c3RhcnRlZCB7XG4gICAgb3JkZXI6IDI7XG4gICAgbWFyZ2luOiAwIDEwcHggMCAwO1xuICAgIHBhZGRpbmc6IDZweCAxNXB4O1xuICB9XG5cbiAgLmhlYWRlciAubmF2bWVudSB7XG4gICAgb3JkZXI6IDM7XG4gIH1cbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBOYXZpZ2F0aW9uIE1lbnVcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qIE5hdm1lbnUgLSBEZXNrdG9wICovXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5uYXZtZW51IHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgLm5hdm1lbnUgdWwge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgLm5hdm1lbnUgbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5uYXZtZW51IGEsXG4gIC5uYXZtZW51IGE6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1uYXYtY29sb3IpO1xuICAgIHBhZGRpbmc6IDE4cHggMTVweDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW5hdi1mb250KTtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICB9XG5cbiAgLm5hdm1lbnUgYSBpLFxuICAubmF2bWVudSBhOmZvY3VzIGkge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gIH1cblxuICAubmF2bWVudSBsaTpsYXN0LWNoaWxkIGEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gIH1cblxuICAubmF2bWVudSBsaTpob3Zlcj5hLFxuICAubmF2bWVudSAuYWN0aXZlLFxuICAubmF2bWVudSAuYWN0aXZlOmZvY3VzIHtcbiAgICBjb2xvcjogdmFyKC0tbmF2LWhvdmVyLWNvbG9yKTtcbiAgfVxuXG4gIC5uYXZtZW51IC5kcm9wZG93biB1bCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDEwcHggMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXYtZHJvcGRvd24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICBsZWZ0OiAxNHB4O1xuICAgIHRvcDogMTMwJTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHotaW5kZXg6IDk5O1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cblxuICAubmF2bWVudSAuZHJvcGRvd24gdWwgbGkge1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gIH1cblxuICAubmF2bWVudSAuZHJvcGRvd24gdWwgYSB7XG4gICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBjb2xvcjogdmFyKC0tbmF2LWRyb3Bkb3duLWNvbG9yKTtcbiAgfVxuXG4gIC5uYXZtZW51IC5kcm9wZG93biB1bCBhIGkge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgfVxuXG4gIC5uYXZtZW51IC5kcm9wZG93biB1bCBhOmhvdmVyLFxuICAubmF2bWVudSAuZHJvcGRvd24gdWwgLmFjdGl2ZTpob3ZlcixcbiAgLm5hdm1lbnUgLmRyb3Bkb3duIHVsIGxpOmhvdmVyPmEge1xuICAgIGNvbG9yOiB2YXIoLS1uYXYtZHJvcGRvd24taG92ZXItY29sb3IpO1xuICB9XG5cbiAgLm5hdm1lbnUgLmRyb3Bkb3duOmhvdmVyPnVsIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRvcDogMTAwJTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB9XG5cbiAgLm5hdm1lbnUgLmRyb3Bkb3duIC5kcm9wZG93biB1bCB7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IC05MCU7XG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB9XG5cbiAgLm5hdm1lbnUgLmRyb3Bkb3duIC5kcm9wZG93bjpob3Zlcj51bCB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgfVxufVxuXG4vKiBOYXZtZW51IC0gTW9iaWxlICovXG5AbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5tb2JpbGUtbmF2LXRvZ2dsZSB7XG4gICAgY29sb3I6IHZhcigtLW5hdi1jb2xvcik7XG4gICAgZm9udC1zaXplOiAyOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcztcbiAgfVxuXG4gIC5uYXZtZW51IHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHotaW5kZXg6IDk5OTc7XG4gIH1cblxuICAubmF2bWVudSB1bCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogNjBweCAyMHB4IDIwcHggMjBweDtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1uYXYtbW9iaWxlLWJhY2tncm91bmQtY29sb3IpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgICB6LWluZGV4OiA5OTk4O1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIH1cblxuICAubmF2bWVudSBhLFxuICAubmF2bWVudSBhOmZvY3VzIHtcbiAgICBjb2xvcjogdmFyKC0tbmF2LWRyb3Bkb3duLWNvbG9yKTtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLW5hdi1mb250KTtcbiAgICBmb250LXNpemU6IDE3cHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgdHJhbnNpdGlvbjogMC4zcztcbiAgfVxuXG4gIC5uYXZtZW51IGEgaSxcbiAgLm5hdm1lbnUgYTpmb2N1cyBpIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgICB3aWR0aDogMzBweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0cmFuc2l0aW9uOiAwLjNzO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hY2NlbnQtY29sb3IpLCB0cmFuc3BhcmVudCA5MCUpO1xuICB9XG5cbiAgLm5hdm1lbnUgYSBpOmhvdmVyLFxuICAubmF2bWVudSBhOmZvY3VzIGk6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gICAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgfVxuXG4gIC5uYXZtZW51IGE6aG92ZXIsXG4gIC5uYXZtZW51IC5hY3RpdmUsXG4gIC5uYXZtZW51IC5hY3RpdmU6Zm9jdXMge1xuICAgIGNvbG9yOiB2YXIoLS1uYXYtZHJvcGRvd24taG92ZXItY29sb3IpO1xuICB9XG5cbiAgLm5hdm1lbnUgLmFjdGl2ZSBpLFxuICAubmF2bWVudSAuYWN0aXZlOmZvY3VzIGkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gICAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xuICB9XG5cbiAgLm5hdm1lbnUgLmRyb3Bkb3duIHVsIHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgei1pbmRleDogOTk7XG4gICAgcGFkZGluZzogMTBweCAwO1xuICAgIG1hcmdpbjogMTBweCAyMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW5hdi1kcm9wZG93bi1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZGVmYXVsdC1jb2xvciksIHRyYW5zcGFyZW50IDkwJSk7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLWluLW91dDtcbiAgfVxuXG4gIC5uYXZtZW51IC5kcm9wZG93biB1bCB1bCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzMywgMzcsIDQxLCAwLjEpO1xuICB9XG5cbiAgLm5hdm1lbnUgLmRyb3Bkb3duPi5kcm9wZG93bi1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzMsIDM3LCA0MSwgMC4wMyk7XG4gIH1cblxuICAubW9iaWxlLW5hdi1hY3RpdmUge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cblxuICAubW9iaWxlLW5hdi1hY3RpdmUgLm1vYmlsZS1uYXYtdG9nZ2xlIHtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgZm9udC1zaXplOiAzMnB4O1xuICAgIHRvcDogMTVweDtcbiAgICByaWdodDogMTVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgei1pbmRleDogOTk5OTtcbiAgfVxuXG4gIC5tb2JpbGUtbmF2LWFjdGl2ZSAubmF2bWVudSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaW5zZXQ6IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgzMywgMzcsIDQxLCAwLjgpO1xuICAgIHRyYW5zaXRpb246IDAuM3M7XG4gIH1cblxuICAubW9iaWxlLW5hdi1hY3RpdmUgLm5hdm1lbnU+dWwge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG5cbi8qIFJlZGVzIHNvY2lhaXMgbm8gaGVhZGVyICovXG4uaGVhZGVyIC5zb2NpYWwtbGlua3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDEwcHg7XG4gIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4uaGVhZGVyIC5zb2NpYWwtbGlua3MgYSB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBmb250LXNpemU6IDE4cHg7XG4gIHRyYW5zaXRpb246IDAuM3MgZWFzZTtcbn1cblxuLmhlYWRlciAuc29jaWFsLWxpbmtzIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuaGVhZGVyIC5zb2NpYWwtbGlua3Mge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgfVxufVxuXG4gIFxuXG5cbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBHbG9iYWwgRm9vdGVyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4uZm9vdGVyIHtcbiAgY29sb3I6IHZhcigtLWRlZmF1bHQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBwYWRkaW5nLWJvdHRvbTogNTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZm9vdGVyIC5mb290ZXItdG9wIHtcbiAgcGFkZGluZy10b3A6IDUwcHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZGVmYXVsdC1jb2xvciksIHRyYW5zcGFyZW50IDkwJSk7XG59XG5cbi5mb290ZXIgLmZvb3Rlci1hYm91dCAubG9nbyB7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xufVxuXG4uZm9vdGVyIC5mb290ZXItYWJvdXQgLmxvZ28gaW1nIHtcbiAgbWF4LWhlaWdodDogNDBweDtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG59XG5cbi5mb290ZXIgLmZvb3Rlci1hYm91dCAubG9nbyBzcGFuIHtcbiAgY29sb3I6IHZhcigtLWhlYWRpbmctY29sb3IpO1xuICBmb250LXNpemU6IDMwcHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1oZWFkaW5nLWZvbnQpO1xufVxuXG4uZm9vdGVyIC5mb290ZXItYWJvdXQgcCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWhlYWRpbmctZm9udCk7XG59XG5cbi5mb290ZXIgLnNvY2lhbC1saW5rcyBhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCA1MCUpO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZGVmYXVsdC1jb2xvciksIHRyYW5zcGFyZW50IDUwJSk7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgdHJhbnNpdGlvbjogMC4zcztcbn1cblxuLmZvb3RlciAuc29jaWFsLWxpbmtzIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuXG4uZm9vdGVyIGg0IHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWJvdHRvbTogMTJweDtcbn1cblxuLmZvb3RlciAuZm9vdGVyLWxpbmtzIHtcbiAgbWFyZ2luLWJvdHRvbTogMzBweDtcbn1cblxuLmZvb3RlciAuZm9vdGVyLWxpbmtzIHVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuXG4uZm9vdGVyIC5mb290ZXItbGlua3MgdWwgaSB7XG4gIHBhZGRpbmctcmlnaHQ6IDJweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBsaW5lLWhlaWdodDogMDtcbn1cblxuLmZvb3RlciAuZm9vdGVyLWxpbmtzIHVsIGxpIHtcbiAgcGFkZGluZzogMTBweCAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZm9vdGVyIC5mb290ZXItbGlua3MgdWwgbGk6Zmlyc3QtY2hpbGQge1xuICBwYWRkaW5nLXRvcDogMDtcbn1cblxuLmZvb3RlciAuZm9vdGVyLWxpbmtzIHVsIGEge1xuICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCAyMCUpO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uZm9vdGVyIC5mb290ZXItbGlua3MgdWwgYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuXG4uZm9vdGVyIC5mb290ZXItY29udGFjdCBwIHtcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uZm9vdGVyIC5jb3B5cmlnaHQge1xuICBwYWRkaW5nLXRvcDogMjVweDtcbiAgcGFkZGluZy1ib3R0b206IDI1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kZWZhdWx0LWNvbG9yKSwgdHJhbnNwYXJlbnQgOTUlKTtcbn1cblxuLmZvb3RlciAuY29weXJpZ2h0IHAge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uZm9vdGVyIC5jcmVkaXRzIHtcbiAgbWFyZ2luLXRvcDogNnB4O1xuICBmb250LXNpemU6IDEzcHg7XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgUHJlbG9hZGVyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4jcHJlbG9hZGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBpbnNldDogMDtcbiAgei1pbmRleDogOTk5OTk5O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZS1vdXQ7XG59XG5cbiNwcmVsb2FkZXI6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IGNhbGMoNTAlIC0gMzBweCk7XG4gIGxlZnQ6IGNhbGMoNTAlIC0gMzBweCk7XG4gIGJvcmRlcjogNnB4IHNvbGlkICNmZmZmZmY7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKSB0cmFuc3BhcmVudCB2YXIoLS1hY2NlbnQtY29sb3IpIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA2MHB4O1xuICBoZWlnaHQ6IDYwcHg7XG4gIGFuaW1hdGlvbjogYW5pbWF0ZS1wcmVsb2FkZXIgMS41cyBsaW5lYXIgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgYW5pbWF0ZS1wcmVsb2FkZXIge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgU2Nyb2xsIFRvcCBCdXR0b25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi5zY3JvbGwtdG9wIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIG9wYWNpdHk6IDA7XG4gIHJpZ2h0OiAxNXB4O1xuICBib3R0b206IC0xNXB4O1xuICB6LWluZGV4OiA5OTk5OTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgd2lkdGg6IDQ0cHg7XG4gIGhlaWdodDogNDRweDtcbiAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNHM7XG59XG5cbi5zY3JvbGwtdG9wIGkge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGNvbG9yOiB2YXIoLS1jb250cmFzdC1jb2xvcik7XG4gIGxpbmUtaGVpZ2h0OiAwO1xufVxuXG4uc2Nyb2xsLXRvcDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hY2NlbnQtY29sb3IpLCB0cmFuc3BhcmVudCAyMCUpO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xufVxuXG4uc2Nyb2xsLXRvcC5hY3RpdmUge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBvcGFjaXR5OiAxO1xuICBib3R0b206IDE1cHg7XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgRGlzYWJsZSBhb3MgYW5pbWF0aW9uIGRlbGF5IG9uIG1vYmlsZSBkZXZpY2VzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICBbZGF0YS1hb3MtZGVsYXldIHtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBHbG9iYWwgUGFnZSBUaXRsZXMgJiBCcmVhZGNydW1ic1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLnBhZ2UtdGl0bGUge1xuICBjb2xvcjogdmFyKC0tZGVmYXVsdC1jb2xvcik7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIHBhZGRpbmc6IDE2MHB4IDAgODBweCAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnBhZ2UtdGl0bGU6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBib3R0b206IDA7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMikgMHB4LCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIDFweCwgdHJhbnNwYXJlbnQgMXB4LCB0cmFuc3BhcmVudCAxMHB4KTtcbiAgei1pbmRleDogMTtcbn1cblxuLnBhZ2UtdGl0bGUgaDEge1xuICBmb250LXNpemU6IDQycHg7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIG1hcmdpbi1ib3R0b206IDEwcHg7XG59XG5cbi5wYWdlLXRpdGxlIC5icmVhZGNydW1icyBvbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4ucGFnZS10aXRsZSAuYnJlYWRjcnVtYnMgb2wgbGkrbGkge1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG5cbi5wYWdlLXRpdGxlIC5icmVhZGNydW1icyBvbCBsaStsaTo6YmVmb3JlIHtcbiAgY29udGVudDogXCIvXCI7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kZWZhdWx0LWNvbG9yKSwgdHJhbnNwYXJlbnQgNTAlKTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBHbG9iYWwgU2VjdGlvbnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbnNlY3Rpb24sXG4uc2VjdGlvbiB7XG4gIGNvbG9yOiB2YXIoLS1kZWZhdWx0LWNvbG9yKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XG4gIHBhZGRpbmc6IDYwcHggMDtcbiAgc2Nyb2xsLW1hcmdpbi10b3A6IDkwcHg7XG4gIG92ZXJmbG93OiBjbGlwO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogMTE5OXB4KSB7XG5cbiAgc2VjdGlvbixcbiAgLnNlY3Rpb24ge1xuICAgIHNjcm9sbC1tYXJnaW4tdG9wOiA2NnB4O1xuICB9XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgR2xvYmFsIFNlY3Rpb24gVGl0bGVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4uc2VjdGlvbi10aXRsZSB7XG4gIHBhZGRpbmctYm90dG9tOiA2MHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zZWN0aW9uLXRpdGxlIGgyIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBwYWRkaW5nOiAwO1xuICBsaW5lLWhlaWdodDogMXB4O1xuICBtYXJnaW46IDA7XG4gIGxldHRlci1zcGFjaW5nOiAxLjVweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kZWZhdWx0LWNvbG9yKSwgdHJhbnNwYXJlbnQgNTAlKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2VjdGlvbi10aXRsZSBoMjo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICB3aWR0aDogMTIwcHg7XG4gIGhlaWdodDogMXB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIG1hcmdpbjogNHB4IDEwcHg7XG59XG5cbi5zZWN0aW9uLXRpdGxlIGRpdiB7XG4gIGNvbG9yOiB2YXIoLS1oZWFkaW5nLWNvbG9yKTtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMjhweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWhlYWRpbmctZm9udCk7XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgSGVybyBTZWN0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4uaGVybyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAxMDBweCAwO1xufVxuXG4uaGVybzo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCg0NWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAyKSAwcHgsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgMXB4LCB0cmFuc3BhcmVudCAxcHgsIHRyYW5zcGFyZW50IDEwcHgpO1xuICB6LWluZGV4OiAxO1xufVxuXG4uaGVybyAuY29udGFpbmVyLFxuLmhlcm8gLmNvbnRhaW5lci1mbHVpZCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbn1cblxuLmhlcm8gLmNvbnRlbnQtY29sIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHBhZGRpbmctcmlnaHQ6IDNyZW07XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA5OTFweCkge1xuICAuaGVybyAuY29udGVudC1jb2wge1xuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbiAgfVxufVxuXG4uaGVybyAuYWdlbmN5LW5hbWUge1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5oZXJvIC5hZ2VuY3ktbmFtZSBoNSB7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgbWFyZ2luOiAwO1xufVxuXG4uaGVybyAubWFpbi1oZWFkaW5nIHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLmhlcm8gLm1haW4taGVhZGluZyBoMSB7XG4gIGZvbnQtc2l6ZTogNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDgwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7XG4gIG1hcmdpbjogMDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEyMDBweCkge1xuICAuaGVybyAubWFpbi1oZWFkaW5nIGgxIHtcbiAgICBmb250LXNpemU6IDRyZW07XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gIC5oZXJvIC5tYWluLWhlYWRpbmcgaDEge1xuICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgLmhlcm8gLm1haW4taGVhZGluZyBoMSB7XG4gICAgZm9udC1zaXplOiAyLjVyZW07XG4gIH1cbn1cblxuLmhlcm8gLmRpdmlkZXIge1xuICB3aWR0aDogNjAlO1xuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCA4NSUpO1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmhlcm8gLmRpdmlkZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi5oZXJvIC5kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi1ib3R0b206IDIuNXJlbTtcbn1cblxuLmhlcm8gLmRlc2NyaXB0aW9uIHAge1xuICBmb250LXNpemU6IDFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjc7XG4gIGNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tZGVmYXVsdC1jb2xvciksIHRyYW5zcGFyZW50IDIwJSk7XG4gIG1hcmdpbjogMDtcbn1cblxuLmhlcm8gLmN0YS1idXR0b24gLmJ0biB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAxcHggc29saWQgY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCA0MCUpO1xuICBjb2xvcjogdmFyKC0tZGVmYXVsdC1jb2xvcik7XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuICBib3JkZXItcmFkaXVzOiA1MHB4O1xuICBmb250LXNpemU6IDAuOXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLmhlcm8gLmN0YS1idXR0b24gLmJ0biBzcGFuIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG59XG5cbi5oZXJvIC5jdGEtYnV0dG9uIC5idG4gaSB7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlO1xufVxuXG4uaGVybyAuY3RhLWJ1dHRvbiAuYnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xufVxuXG4uaGVybyAuY3RhLWJ1dHRvbiAuYnRuOmhvdmVyIGkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTtcbn1cblxuLmhlcm8gLnZpc3VhbC1jb250ZW50IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gIC5oZXJvIC52aXN1YWwtY29udGVudCB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxufVxuXG4uaGVybyAuZmx1aWQtc2hhcGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmhlcm8gLmZsdWlkLXNoYXBlIC5mbHVpZC1pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xuICBhbmltYXRpb246IGZsb2F0IDZzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIGZsb2F0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpO1xuICB9XG5cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7XG4gIH1cbn1cblxuLmhlcm8gLnN0YXRzLWNhcmQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMTAlO1xuICByaWdodDogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLXN1cmZhY2UtY29sb3IpLCB0cmFuc3BhcmVudCA1MCUpO1xuICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1kZWZhdWx0LWNvbG9yKSwgdHJhbnNwYXJlbnQgOTAlKTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgcGFkZGluZzogMS41cmVtO1xuICB3aWR0aDogMjAwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gIC5oZXJvIC5zdGF0cy1jYXJkIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm90dG9tOiBhdXRvO1xuICAgIHJpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi10b3A6IDJyZW07XG4gICAgd2lkdGg6IDkwJTtcbiAgfVxufVxuXG4uaGVybyAuc3RhdHMtY2FyZCAuc3RhdHMtbnVtYmVyIGgyIHtcbiAgZm9udC1zaXplOiAzcmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBtYXJnaW46IDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uaGVybyAuc3RhdHMtY2FyZCAuc3RhdHMtbGFiZWwge1xuICBtYXJnaW4tdG9wOiAwLjVyZW07XG59XG5cbi5oZXJvIC5zdGF0cy1jYXJkIC5zdGF0cy1sYWJlbCBwIHtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIG1hcmdpbjogMDtcbn1cblxuLmhlcm8gLnN0YXRzLWNhcmQgLnN0YXRzLWFycm93IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDEuNXJlbTtcbiAgcmlnaHQ6IDEuNXJlbTtcbn1cblxuLmhlcm8gLnN0YXRzLWNhcmQgLnN0YXRzLWFycm93IGEge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgd2lkdGg6IDMycHg7XG4gIGhlaWdodDogMzJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xuICBmb250LXNpemU6IDFyZW07XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5oZXJvIC5zdGF0cy1jYXJkIC5zdGF0cy1hcnJvdyBhOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYWNjZW50LWNvbG9yKSwgdHJhbnNwYXJlbnQgMjAlKTtcbn1cblxuLyogRXN0aWxvIGdlcmFsIHBhcmEgb3MgYm90w7VlcyBkZSBhcG9pbyAqL1xuLmJ0bi1zdXBwb3J0IHtcbiAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVyZW07XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4vKiBCb3TDo28gZGUgU3ViICovXG4uYnRuLXR3aXRjaCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM5MTQ2RkY7XG4gIGNvbG9yOiAjZmZmO1xufVxuLmJ0bi10d2l0Y2g6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzcyY2U4O1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4vKiBCb3TDo28gZGUgTGl2ZVBpeCAqL1xuLmJ0bi1saXZlcGl4IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGNjlCNDtcbiAgY29sb3I6ICNmZmY7XG59XG4uYnRuLWxpdmVwaXg6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmE0OGExO1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuXG4ubmFtZSB7XG4gIGFuaW1hdGlvbjogZ2xvdyAycyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG5cbkBrZXlmcmFtZXMgZ2xvdyB7XG4gIGZyb20ge1xuICAgIHRleHQtc2hhZG93OiAwIDAgNXB4ICM5MTQ2RkYsIDAgMCAxMHB4ICM5MTQ2RkY7XG4gIH1cbiAgdG8ge1xuICAgIHRleHQtc2hhZG93OiAwIDAgMjBweCAjOTE0NkZGLCAwIDAgNDBweCAjOTE0NkZGO1xuICB9XG59XG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBBYm91dCBTZWN0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4uYWJvdXQge1xuICBwYWRkaW5nLXRvcDogNjBweDtcbiAgcGFkZGluZy1ib3R0b206IDYwcHg7XG59XG5cbi5hYm91dCAuYWJvdXQtaW1hZ2Uge1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5hYm91dCAuYWJvdXQtaW1hZ2UgLmV4cGVyaWVuY2UtYmFkZ2Uge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMzBweDtcbiAgcmlnaHQ6IC0zMHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xuICBwYWRkaW5nOiAxLjVyZW07XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1pbi13aWR0aDogMTQwcHg7XG59XG5cbi5hYm91dCAuYWJvdXQtaW1hZ2UgLmV4cGVyaWVuY2UtYmFkZ2UgLnllYXJzIHtcbiAgZm9udC1zaXplOiAyLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogNXB4O1xufVxuXG4uYWJvdXQgLmFib3V0LWltYWdlIC5leHBlcmllbmNlLWJhZGdlIC50ZXh0IHtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuYWJvdXQgLmFib3V0LWltYWdlIC5leHBlcmllbmNlLWJhZGdlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDIwcHg7XG4gICAgcGFkZGluZzogMXJlbTtcbiAgICBtaW4td2lkdGg6IDEyMHB4O1xuICB9XG5cbiAgLmFib3V0IC5hYm91dC1pbWFnZSAuZXhwZXJpZW5jZS1iYWRnZSAueWVhcnMge1xuICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgfVxufVxuXG4uYWJvdXQgLmFib3V0LWNvbnRlbnQgaDIge1xuICBmb250LXNpemU6IDIuMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5hYm91dCAuYWJvdXQtY29udGVudCBoMiB7XG4gICAgZm9udC1zaXplOiAxLjhyZW07XG4gIH1cbn1cblxuLmFib3V0IC5hYm91dC1jb250ZW50IC5sZWFkIHtcbiAgZm9udC1zaXplOiAxLjE1cmVtO1xuICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWhlYWRpbmctY29sb3IpLCB0cmFuc3BhcmVudCAzMCUpO1xufVxuXG4uYWJvdXQgLmFib3V0LWNvbnRlbnQgcCB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5hYm91dCAuYWJvdXQtY29udGVudCAuZmVhdHVyZS1pdGVtIHtcbiAgcGFkZGluZzogMS4yNXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3VyZmFjZS1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm94LXNoYWRvdzogMCA1cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5hYm91dCAuYWJvdXQtY29udGVudCAuZmVhdHVyZS1pdGVtOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xuICBib3gtc2hhZG93OiAwIDEwcHggMjVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5hYm91dCAuYWJvdXQtY29udGVudCAuZmVhdHVyZS1pdGVtIGkge1xuICBmb250LXNpemU6IDEuNzVyZW07XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmFib3V0IC5hYm91dC1jb250ZW50IC5mZWF0dXJlLWl0ZW0gaDUge1xuICBmb250LXNpemU6IDEuMTVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5hYm91dCAuYWJvdXQtY29udGVudCAuZmVhdHVyZS1pdGVtIHAge1xuICBmb250LXNpemU6IDAuOXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmFib3V0IC5hYm91dC1jb250ZW50IC5idG4tcHJpbWFyeSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgcGFkZGluZzogMC41cmVtIDEuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogNTBweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbn1cblxuLmFib3V0IC5hYm91dC1jb250ZW50IC5idG4tcHJpbWFyeTpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hY2NlbnQtY29sb3IpLCBibGFjayAxMCUpO1xuICBib3JkZXItY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1hY2NlbnQtY29sb3IpLCBibGFjayAxMCUpO1xufVxuXG4uYWJvdXQgLnRlc3RpbW9uaWFsLXNlY3Rpb24ge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjA4KTtcbn1cblxuLmFib3V0IC50ZXN0aW1vbmlhbC1zZWN0aW9uIC50ZXN0aW1vbmlhbC1pbnRybyBoMyB7XG4gIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuLmFib3V0IC50ZXN0aW1vbmlhbC1zZWN0aW9uIC50ZXN0aW1vbmlhbC1pbnRybyBwIHtcbiAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xufVxuXG4uYWJvdXQgLnRlc3RpbW9uaWFsLXNlY3Rpb24gLnRlc3RpbW9uaWFsLWludHJvIC5zd2lwZXItbmF2LWJ1dHRvbnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDEwcHg7XG59XG5cbi5hYm91dCAudGVzdGltb25pYWwtc2VjdGlvbiAudGVzdGltb25pYWwtaW50cm8gLnN3aXBlci1uYXYtYnV0dG9ucyBidXR0b24ge1xuICB3aWR0aDogNDRweDtcbiAgaGVpZ2h0OiA0NHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN1cmZhY2UtY29sb3IpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4uYWJvdXQgLnRlc3RpbW9uaWFsLXNlY3Rpb24gLnRlc3RpbW9uaWFsLWludHJvIC5zd2lwZXItbmF2LWJ1dHRvbnMgYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xufVxuXG4uYWJvdXQgLnRlc3RpbW9uaWFsLXNlY3Rpb24gLnRlc3RpbW9uaWFsLWludHJvIC5zd2lwZXItbmF2LWJ1dHRvbnMgYnV0dG9uIGkge1xuICBmb250LXNpemU6IDEuMjVyZW07XG59XG5cbi5hYm91dCAudGVzdGltb25pYWwtc2VjdGlvbiAudGVzdGltb25pYWwtc2xpZGVyIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmFib3V0IC50ZXN0aW1vbmlhbC1zZWN0aW9uIC50ZXN0aW1vbmlhbC1zbGlkZXIgLnN3aXBlci13cmFwcGVyIHtcbiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG59XG5cbi5hYm91dCAudGVzdGltb25pYWwtc2VjdGlvbiAudGVzdGltb25pYWwtaXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN1cmZhY2UtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBwYWRkaW5nOiAycmVtO1xuICBib3gtc2hhZG93OiAwIDVweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIGhlaWdodDogMTAwJTtcbn1cblxuLmFib3V0IC50ZXN0aW1vbmlhbC1zZWN0aW9uIC50ZXN0aW1vbmlhbC1pdGVtIC5yYXRpbmcge1xuICBjb2xvcjogI2ZmYzEwNztcbiAgZm9udC1zaXplOiAxcmVtO1xufVxuXG4uYWJvdXQgLnRlc3RpbW9uaWFsLXNlY3Rpb24gLnRlc3RpbW9uaWFsLWl0ZW0gcCB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgbWFyZ2luLWJvdHRvbTogMDtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4uYWJvdXQgLnRlc3RpbW9uaWFsLXNlY3Rpb24gLnRlc3RpbW9uaWFsLWl0ZW0gLmNsaWVudC1pbmZvIC5jbGllbnQtaW1nIHtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4uYWJvdXQgLnRlc3RpbW9uaWFsLXNlY3Rpb24gLnRlc3RpbW9uaWFsLWl0ZW0gLmNsaWVudC1pbmZvIGg2IHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmFib3V0IC50ZXN0aW1vbmlhbC1zZWN0aW9uIC50ZXN0aW1vbmlhbC1pdGVtIC5jbGllbnQtaW5mbyBzcGFuIHtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xuICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCA0MCUpO1xufVxuXG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4jIFBvcnRmb2xpbyBTZWN0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4ucG9ydGZvbGlvIC5wb3J0Zm9saW8tZmlsdGVycyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogMTVweDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwIDAgNDBweDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWZpbHRlcnMgbGkge1xuICBmb250LXNpemU6IDE1cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHBhZGRpbmc6IDEycHggMjVweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZmF1bHQtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWZpbHRlcnMgbGkgaSB7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1maWx0ZXJzIGxpOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWFjY2VudC1jb2xvciksIHRyYW5zcGFyZW50IDkyJSk7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1maWx0ZXJzIGxpOmhvdmVyIGkge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1maWx0ZXJzIGxpLmZpbHRlci1hY3RpdmUge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLnBvcnRmb2xpbyAucG9ydGZvbGlvLWZpbHRlcnMge1xuICAgIGdhcDogMTBweDtcbiAgfVxuXG4gIC5wb3J0Zm9saW8gLnBvcnRmb2xpby1maWx0ZXJzIGxpIHtcbiAgICBwYWRkaW5nOiA4cHggMjBweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWVudHJ5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogMCA0cHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xufVxuXG4ucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnkgLmVudHJ5LWltYWdlIGlmcmFtZSB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlcjogMDtcbn1cblxuXG4ucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnkgLmVudHJ5LWltYWdlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGFzcGVjdC1yYXRpbzogMTYvOTtcbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWVudHJ5IC5lbnRyeS1pbWFnZSBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNnMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWVudHJ5IC5lbnRyeS1pbWFnZSAuZW50cnktb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQ6IDA7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50IDAlLCByZ2JhKDAsIDAsIDAsIDAuOCkgMTAwJSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgcGFkZGluZzogMzBweDtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC40cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuXG4ucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnkgLmVudHJ5LWltYWdlIC5lbnRyeS1vdmVybGF5IC5vdmVybGF5LWNvbnRlbnQge1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC40cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpO1xufVxuXG4ucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnkgLmVudHJ5LWltYWdlIC5lbnRyeS1vdmVybGF5IC5lbnRyeS1tZXRhIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWVudHJ5IC5lbnRyeS1pbWFnZSAuZW50cnktb3ZlcmxheSAuZW50cnktdGl0bGUge1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xuICBmb250LXNpemU6IDI0cHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIG1hcmdpbjogMCAwIDIwcHg7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1lbnRyeSAuZW50cnktaW1hZ2UgLmVudHJ5LW92ZXJsYXkgLmVudHJ5LWxpbmtzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxNXB4O1xufVxuXG4ucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnkgLmVudHJ5LWltYWdlIC5lbnRyeS1vdmVybGF5IC5lbnRyeS1saW5rcyBhIHtcbiAgd2lkdGg6IDQ2cHg7XG4gIGhlaWdodDogNDZweDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgZm9udC1zaXplOiAyMHB4O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICBvcGFjaXR5OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1lbnRyeSAuZW50cnktaW1hZ2UgLmVudHJ5LW92ZXJsYXkgLmVudHJ5LWxpbmtzIGE6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1lbnRyeSAuZW50cnktaW1hZ2UgLmVudHJ5LW92ZXJsYXkgLmVudHJ5LWxpbmtzIGE6bnRoLWNoaWxkKDEpIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMC4xcztcbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWVudHJ5IC5lbnRyeS1pbWFnZSAuZW50cnktb3ZlcmxheSAuZW50cnktbGlua3MgYTpudGgtY2hpbGQoMikge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwLjJzO1xufVxuXG4ucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnk6aG92ZXIgLmVudHJ5LWltYWdlIGltZyB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1lbnRyeTpob3ZlciAuZW50cnktaW1hZ2UgLmVudHJ5LW92ZXJsYXkge1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1lbnRyeTpob3ZlciAuZW50cnktaW1hZ2UgLmVudHJ5LW92ZXJsYXkgLm92ZXJsYXktY29udGVudCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuLnBvcnRmb2xpbyAucG9ydGZvbGlvLWVudHJ5OmhvdmVyIC5lbnRyeS1pbWFnZSAuZW50cnktb3ZlcmxheSAuZW50cnktbGlua3MgYSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5wb3J0Zm9saW8gLnBvcnRmb2xpby1lbnRyeSAuZW50cnktaW1hZ2UgLmVudHJ5LW92ZXJsYXkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cblxuICAucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnkgLmVudHJ5LWltYWdlIC5lbnRyeS1vdmVybGF5IC5lbnRyeS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gIH1cblxuICAucG9ydGZvbGlvIC5wb3J0Zm9saW8tZW50cnkgLmVudHJ5LWltYWdlIC5lbnRyeS1vdmVybGF5IC5lbnRyeS1saW5rcyBhIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICB9XG59XG5cbi5wb3J0Zm9saW8gLnBvcnRmb2xpby1pdGVtIC5lbnRyeS1pbWFnZSB7XG4gIGFzcGVjdC1yYXRpbzogNC8zO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5wb3J0Zm9saW8gLnBvcnRmb2xpby1pdGVtIC5lbnRyeS10aXRsZSB7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAucG9ydGZvbGlvIC5yb3cge1xuICAgIG1hcmdpbi1sZWZ0OiAtMTBweDtcbiAgICBtYXJnaW4tcmlnaHQ6IC0xMHB4O1xuICB9XG5cbiAgLnBvcnRmb2xpbyAucm93IC5wb3J0Zm9saW8taXRlbSB7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5wb3J0Zm9saW8gLnJvdyB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xMnB4O1xuICAgIG1hcmdpbi1yaWdodDogLTEycHg7XG4gIH1cblxuICAucG9ydGZvbGlvIC5yb3cgLnBvcnRmb2xpby1pdGVtIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XG4gICAgcGFkZGluZy1yaWdodDogMTJweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5wb3J0Zm9saW8gLnJvdyB7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xuICAgIG1hcmdpbi1yaWdodDogLTE1cHg7XG4gIH1cblxuICAucG9ydGZvbGlvIC5yb3cgLnBvcnRmb2xpby1pdGVtIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gIC5wb3J0Zm9saW8gLmVudHJ5LW92ZXJsYXkge1xuICAgIHBhZGRpbmc6IDI1cHg7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSBhbmQgKG1heC13aWR0aDogMTE5OXB4KSB7XG4gIC5wb3J0Zm9saW8gLmVudHJ5LW92ZXJsYXkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gIC5wb3J0Zm9saW8gLmVudHJ5LW92ZXJsYXkge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gIH1cbn1cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4jIFBvcnRmb2xpbyBEZXRhaWxzIFNlY3Rpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi5wb3J0Zm9saW8tZGV0YWlscyB7XG4gIC0tc2VjdGlvbi1zcGFjaW5nOiAyLjVyZW07XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtbWVkaWEge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtbWVkaWEgLm1haW4taW1hZ2Uge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLW1lZGlhIC5tYWluLWltYWdlIC5wb3J0Zm9saW8tZGV0YWlscy1zbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtbWVkaWEgLm1haW4taW1hZ2UgLnBvcnRmb2xpby1kZXRhaWxzLXNsaWRlciAuc3dpcGVyLXdyYXBwZXIge1xuICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1tZWRpYSAubWFpbi1pbWFnZSAucG9ydGZvbGlvLWRldGFpbHMtc2xpZGVyIC5zd2lwZXItc2xpZGUgaW1nIHtcbiAgYXNwZWN0LXJhdGlvOiAzLzI7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1tZWRpYSAubWFpbi1pbWFnZSAucG9ydGZvbGlvLWRldGFpbHMtc2xpZGVyIC5zd2lwZXItYnV0dG9uLW5leHQsXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLW1lZGlhIC5tYWluLWltYWdlIC5wb3J0Zm9saW8tZGV0YWlscy1zbGlkZXIgLnN3aXBlci1idXR0b24tcHJldiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLW1lZGlhIC5tYWluLWltYWdlIC5wb3J0Zm9saW8tZGV0YWlscy1zbGlkZXIgLnN3aXBlci1idXR0b24tbmV4dDphZnRlcixcbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtbWVkaWEgLm1haW4taW1hZ2UgLnBvcnRmb2xpby1kZXRhaWxzLXNsaWRlciAuc3dpcGVyLWJ1dHRvbi1wcmV2OmFmdGVyIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtbWVkaWEgLm1haW4taW1hZ2UgLnBvcnRmb2xpby1kZXRhaWxzLXNsaWRlciAuc3dpcGVyLWJ1dHRvbi1uZXh0OmhvdmVyLFxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1tZWRpYSAubWFpbi1pbWFnZSAucG9ydGZvbGlvLWRldGFpbHMtc2xpZGVyIC5zd2lwZXItYnV0dG9uLXByZXY6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLW1lZGlhIC5tYWluLWltYWdlIC5wb3J0Zm9saW8tZGV0YWlscy1zbGlkZXIgLnN3aXBlci1idXR0b24tbmV4dDpob3ZlcjphZnRlcixcbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtbWVkaWEgLm1haW4taW1hZ2UgLnBvcnRmb2xpby1kZXRhaWxzLXNsaWRlciAuc3dpcGVyLWJ1dHRvbi1wcmV2OmhvdmVyOmFmdGVyIHtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1tZWRpYSAudGh1bWJuYWlsLWdyaWQgaW1nIHtcbiAgaGVpZ2h0OiA4MHB4O1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDEwcHggcmdiYSgwLCAwLCAwLCAwLjA1KTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1tZWRpYSAudGh1bWJuYWlsLWdyaWQgaW1nOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpO1xuICBib3gtc2hhZG93OiAwIDhweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1tZWRpYSAudGVjaC1zdGFjay1iYWRnZXMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGdhcDogMTBweDtcbiAgbWFyZ2luLXRvcDogMS41cmVtO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLW1lZGlhIC50ZWNoLXN0YWNrLWJhZGdlcyBzcGFuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taGVhZGluZy1jb2xvciksIHRyYW5zcGFyZW50IDg1JSk7XG4gIGNvbG9yOiB2YXIoLS1oZWFkaW5nLWNvbG9yKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1tZWRpYSAudGVjaC1zdGFjay1iYWRnZXMgc3Bhbjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1oZWFkaW5nLWNvbG9yKSwgdHJhbnNwYXJlbnQgNzAlKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQge1xuICBwYWRkaW5nOiAwIDAgMCAycmVtO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAucHJvamVjdC1tZXRhIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5wcm9qZWN0LW1ldGEgLmJhZGdlLXdyYXBwZXIgLnByb2plY3QtYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDhweCAxNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tYWNjZW50LWNvbG9yKSwgdHJhbnNwYXJlbnQgOTAlKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IDMwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5wcm9qZWN0LW1ldGEgLmRhdGUtY2xpZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxLjVyZW07XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAucHJvamVjdC1tZXRhIC5kYXRlLWNsaWVudCAubWV0YS1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCAzMCUpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3QtbWV0YSAuZGF0ZS1jbGllbnQgLm1ldGEtaXRlbSBpIHtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3QtdGl0bGUge1xuICBmb250LXNpemU6IDIuMnJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgY29sb3I6IHZhcigtLWhlYWRpbmctY29sb3IpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3Qtd2Vic2l0ZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5wcm9qZWN0LXdlYnNpdGUgaSB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIG1hcmdpbi1yaWdodDogOHB4O1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3Qtd2Vic2l0ZSBhIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAucHJvamVjdC13ZWJzaXRlIGE6aG92ZXIge1xuICBsZXR0ZXItc3BhY2luZzogMC41cHg7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAucHJvamVjdC1vdmVydmlldyB7XG4gIG1hcmdpbi1ib3R0b206IHZhcigtLXNlY3Rpb24tc3BhY2luZyk7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAucHJvamVjdC1vdmVydmlldyAubGVhZCB7XG4gIGZvbnQtc2l6ZTogMS4xcmVtO1xuICBsaW5lLWhlaWdodDogMS43O1xuICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCAxNSUpO1xuICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAucHJvamVjdC1vdmVydmlldyAucHJvamVjdC1hY2NvcmRpb24gLmFjY29yZGlvbi1pdGVtIHtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3Qtb3ZlcnZpZXcgLnByb2plY3QtYWNjb3JkaW9uIC5hY2NvcmRpb24taXRlbSAuYWNjb3JkaW9uLWhlYWRlciAuYWNjb3JkaW9uLWJ1dHRvbiB7XG4gIHBhZGRpbmc6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgY29sb3I6IHZhcigtLWhlYWRpbmctY29sb3IpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0tc3VyZmFjZS1jb2xvciksIHRyYW5zcGFyZW50IDcwJSk7XG4gIGJvcmRlci1yYWRpdXM6IDhweCAhaW1wb3J0YW50O1xuICBib3gtc2hhZG93OiBub25lO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3Qtb3ZlcnZpZXcgLnByb2plY3QtYWNjb3JkaW9uIC5hY2NvcmRpb24taXRlbSAuYWNjb3JkaW9uLWhlYWRlciAuYWNjb3JkaW9uLWJ1dHRvbjpub3QoLmNvbGxhcHNlZCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zdXJmYWNlLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogMCA0cHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDMpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3Qtb3ZlcnZpZXcgLnByb2plY3QtYWNjb3JkaW9uIC5hY2NvcmRpb24taXRlbSAuYWNjb3JkaW9uLWhlYWRlciAuYWNjb3JkaW9uLWJ1dHRvbjpub3QoLmNvbGxhcHNlZCkgaSB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3Qtb3ZlcnZpZXcgLnByb2plY3QtYWNjb3JkaW9uIC5hY2NvcmRpb24taXRlbSAuYWNjb3JkaW9uLWhlYWRlciAuYWNjb3JkaW9uLWJ1dHRvbjo6YWZ0ZXIge1xuICBiYWNrZ3JvdW5kLXNpemU6IDE0cHg7XG4gIHdpZHRoOiAxNHB4O1xuICBoZWlnaHQ6IDE0cHg7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAucHJvamVjdC1vdmVydmlldyAucHJvamVjdC1hY2NvcmRpb24gLmFjY29yZGlvbi1pdGVtIC5hY2NvcmRpb24taGVhZGVyIC5hY2NvcmRpb24tYnV0dG9uIGkge1xuICBmb250LXNpemU6IDEuMXJlbTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5wcm9qZWN0LW92ZXJ2aWV3IC5wcm9qZWN0LWFjY29yZGlvbiAuYWNjb3JkaW9uLWl0ZW0gLmFjY29yZGlvbi1ib2R5IHtcbiAgcGFkZGluZzogMXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3VyZmFjZS1jb2xvcik7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDhweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDhweDtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5wcm9qZWN0LW92ZXJ2aWV3IC5wcm9qZWN0LWFjY29yZGlvbiAuYWNjb3JkaW9uLWl0ZW0gLmFjY29yZGlvbi1ib2R5IHAge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCAyNSUpO1xuICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3QtZmVhdHVyZXMge1xuICBtYXJnaW4tYm90dG9tOiB2YXIoLS1zZWN0aW9uLXNwYWNpbmcpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3QtZmVhdHVyZXMgaDMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IDEuMnJlbTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5wcm9qZWN0LWZlYXR1cmVzIGgzIGkge1xuICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBmb250LXNpemU6IDEuMWVtO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3QtZmVhdHVyZXMgLmZlYXR1cmUtbGlzdCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5wcm9qZWN0LWZlYXR1cmVzIC5mZWF0dXJlLWxpc3QgbGkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiA4cHggMDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBjb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWRlZmF1bHQtY29sb3IpLCB0cmFuc3BhcmVudCAxNSUpO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLnByb2plY3QtZmVhdHVyZXMgLmZlYXR1cmUtbGlzdCBsaSBpIHtcbiAgY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcik7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgZm9udC1zaXplOiAxLjFlbTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5jdGEtYnV0dG9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiAxcmVtO1xuICBtYXJnaW4tdG9wOiBhdXRvO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLmN0YS1idXR0b25zIC5idG4tdmlldy1wcm9qZWN0IHtcbiAgcGFkZGluZzogMTJweCAyOHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xufVxuXG4ucG9ydGZvbGlvLWRldGFpbHMgLnBvcnRmb2xpby1kZXRhaWxzLWNvbnRlbnQgLmN0YS1idXR0b25zIC5idG4tdmlldy1wcm9qZWN0OmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWFjY2VudC1jb2xvciksIGJsYWNrIDE1JSk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgYm94LXNoYWRvdzogMCA4cHggMTVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAuY3RhLWJ1dHRvbnMgLmJ0bi1uZXh0LXByb2plY3Qge1xuICBwYWRkaW5nOiAxMnB4IDI4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1oZWFkaW5nLWNvbG9yKSwgdHJhbnNwYXJlbnQgOTAlKTtcbiAgY29sb3I6IHZhcigtLWhlYWRpbmctY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDhweDtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5jdGEtYnV0dG9ucyAuYnRuLW5leHQtcHJvamVjdCBpIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5jdGEtYnV0dG9ucyAuYnRuLW5leHQtcHJvamVjdDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1oZWFkaW5nLWNvbG9yKSwgdHJhbnNwYXJlbnQgODAlKTtcbn1cblxuLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IC5jdGEtYnV0dG9ucyAuYnRuLW5leHQtcHJvamVjdDpob3ZlciBpIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDNweCk7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHtcbiAgLnBvcnRmb2xpby1kZXRhaWxzIC5wb3J0Zm9saW8tZGV0YWlscy1jb250ZW50IHtcbiAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7XG4gIC5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCB7XG4gICAgcGFkZGluZzogMnJlbSAwIDAgMDtcbiAgfVxuXG4gIC5wb3J0Zm9saW8tZGV0YWlscyAucG9ydGZvbGlvLWRldGFpbHMtY29udGVudCAuY3RhLWJ1dHRvbnMge1xuICAgIG1hcmdpbi10b3A6IDJyZW07XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gIC5wb3J0Zm9saW8tZGV0YWlscyAucHJvamVjdC1tZXRhIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMXJlbTtcbiAgfVxuXG4gIC5wb3J0Zm9saW8tZGV0YWlscyAucHJvamVjdC1tZXRhIC5kYXRlLWNsaWVudCB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDAuNXJlbTtcbiAgfVxuXG4gIC5wb3J0Zm9saW8tZGV0YWlscyAuY3RhLWJ1dHRvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAucG9ydGZvbGlvLWRldGFpbHMgLmN0YS1idXR0b25zIGEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBTdGFydGVyIFNlY3Rpb24gQUdFTkRBXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4udGV4dC12aW9sZXQge1xuICBjb2xvcjogI2MzOGFmZjtcbn1cblxuLyogZGVzdGFjYSBvIGNhcmQgZGEgcHLDs3hpbWEgbGl2ZSAqL1xuI2FnZW5kYS1jYXJkIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbn1cblxuLyogZm9yw6dhIGEgZGVzY3Jpw6fDo28gZGVudHJvIGRvICNhZ2VuZGEtY2FyZCBhIGZpY2FyIGJyYW5jYSwgdG9ybmFuZG8gbGVnw612ZWwgc29icmUgbyByb3NhICovXG4jYWdlbmRhLWNhcmQgLnRleHQtc2Vjb25kYXJ5IHtcbiAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KSAhaW1wb3J0YW50O1xufVxuXG4vKiBjYXJ0w7VlcyBkb3Mgb3V0cm9zIGRpYXMgKi9cbiNhZ2VuZGEtY2FyZHMgLmNhcmQge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZmF1bHQtY29sb3IpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjJzO1xufVxuI2FnZW5kYS1jYXJkcyAuY2FyZDpob3ZlciB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTtcbn1cblxuLyogcmVtb3ZlIGJvcmRlcnMgZSB1bmlmb3JtaXphIHNvbWJyYSAqL1xuLmNhcmQge1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xufVxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBTdGFydGVyIFJhbmtpbmdcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBFc3RpbG9zIHBhcmEgbyBpbnB1dCBkZSBidXNjYVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4uc2VhcmNoLWdyb3VwIC5pbnB1dC1ncm91cC10ZXh0LFxuLnNlYXJjaC1ncm91cCAuZm9ybS1jb250cm9sLFxuLnNlYXJjaC1ncm91cCAuYnRuLWNsZWFyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4vKiBwbGFjZWhvbGRlciBjbGFybyAqL1xuLnNlYXJjaC1ncm91cCAuZm9ybS1jb250cm9sOjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XG59XG5cbi8qIHJlbW92ZW5kbyBzb21icmEgZGUgZm9jbyAqL1xuLnNlYXJjaC1ncm91cCAuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLyogbyDigJzDl+KAnSBmaWNhIHVtIHBvdWNvIG1haW9yICovXG4uYnRuLWNsZWFyIHtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBsaW5lLWhlaWdodDogMTtcbiAgcGFkZGluZzogMCAwLjc1cmVtO1xuICBib3JkZXItbGVmdDogbm9uZTtcbn1cblxuLyogaG92ZXIgbm8gYm90w6NvIGRlIGxpbXBhciAqL1xuLmJ0bi1jbGVhcjpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgY29sb3I6ICNmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBFc3RpbG8gZG8gU0VUVVBcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuLyogR3JpZCByZXNwb25zaXZvIHBhcmEgYXMgNCBpbWFnZW5zICovXG5cbi8qIDEpIEltYWdlbnMgZGEgZ2FsZXJpYSAqL1xuLmltYWdlcy1jb2wgLmN1c3RvbS1pbWcge1xuICB3aWR0aDogMTAwJTtcbiAgYXNwZWN0LXJhdGlvOiAzLzQ7ICAgICAgICAgLyogbWFudMOpbSBwcm9wb3LDp8OjbyByZXRyYXRvICovXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyBlYXNlLCBib3gtc2hhZG93IC4zcyBlYXNlO1xufVxuXG4uaW1hZ2VzLWNvbCAuY3VzdG9tLWltZzpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gIGJveC1zaGFkb3c6IDAgMTJweCAyOHB4IHJnYmEoMCwgMCwgMCwgMC43KTtcbn1cblxuLyogMikgR2FyYW50ZSBxdWUgZW0gdGVsYXMg4omlOTkycHggY2FkYSBpbWFnZW0gb2N1cGUgbWV0YWRlIGRhIGNvbHVuYSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5pbWFnZXMtY29sIC5yb3cgPiAuY29sLXNtLTYge1xuICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgbWF4LXdpZHRoOiA1MCU7XG4gIH1cbn1cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiMgU3RhcnRlciBzZWNhbyBjb250YXRvXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRXN0aWxvIGRvIE1vZGFsIGRlIENvbnRhdG9cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2NvbnRhY3RNb2RhbCAubW9kYWwtY29udGVudCB7XG4gIGJhY2tncm91bmQ6IHZhcigtLXN1cmZhY2UtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuLyogSGVhZGVyOiB0w610dWxvIGNlbnRyYWxpemFkbyBlIGNsb3NlIG5vIGNhbnRvICovXG4jY29udGFjdE1vZGFsIC5tb2RhbC1oZWFkZXIge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBib3JkZXItYm90dG9tOiBub25lO1xuICBjb2xvcjogdmFyKC0tY29udHJhc3QtY29sb3IpO1xuICBwYWRkaW5nOiAxcmVtIDEuNXJlbTtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4jY29udGFjdE1vZGFsIC5tb2RhbC10aXRsZSB7XG4gIG1hcmdpbjogMDtcbiAgZm9udC1zaXplOiAxLjVyZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbiNjb250YWN0TW9kYWwgLmJ0bi1jbG9zZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiA1MCU7XG4gIHJpZ2h0OiAxcmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIGZpbHRlcjogaW52ZXJ0KDEpO1xuICBvcGFjaXR5OiAwLjg7XG59XG4jY29udGFjdE1vZGFsIC5idG4tY2xvc2U6aG92ZXIge1xuICBvcGFjaXR5OiAxO1xufVxuXG4vKiBDb3JwbyBkbyBmb3JtdWzDoXJpbyAqL1xuI2NvbnRhY3RNb2RhbCAubW9kYWwtYm9keSB7XG4gIHBhZGRpbmc6IDEuNXJlbTtcbn1cblxuLmNvbnRhY3QtZm9ybSAuZm9ybS1jb250cm9sIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWRlZmF1bHQtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIGNvbG9yOiB2YXIoLS1kZWZhdWx0LWNvbG9yKTtcbiAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcztcbn1cblxuLmNvbnRhY3QtZm9ybSAuZm9ybS1jb250cm9sOmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xuICBib3gtc2hhZG93OiBub25lO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi8qIEJvdMOjbyBkZSBlbnZpYXIgKi9cbi5jb250YWN0LWZvcm0gLmJ0bi1wcmltYXJ5IHtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtO1xuICBmb250LXdlaWdodDogNjAwO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3M7XG59XG5cbi5jb250YWN0LWZvcm0gLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWFjY2VudC1jb2xvciksIHRyYW5zcGFyZW50IDIwJSk7XG59XG5cbi8qIExpc3RhIGRlIGNvbnRhdG9zIG5vIG1vZGFsICovXG4uY29udGFjdC1pbmZvIGxpIGkge1xuICBmb250LXNpemU6IDEuMnJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuXG4uY29udGFjdC1pbmZvIGEge1xuICBjb2xvcjogdmFyKC0tZGVmYXVsdC1jb2xvcik7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7XG59XG5cbi5jb250YWN0LWluZm8gYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpO1xufVxuXG4vKiDDjWNvbmVzIHNvY2lhaXMgKi9cbiNjb250YWN0TW9kYWwgLnNvY2lhbC1saW5rcyBhIHtcbiAgd2lkdGg6IDQwcHg7XG4gIGhlaWdodDogNDBweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tYWNjZW50LWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWNvbnRyYXN0LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuM3M7XG59XG5cbiNjb250YWN0TW9kYWwgLnNvY2lhbC1saW5rcyBhOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWFjY2VudC1jb2xvciksIHRyYW5zcGFyZW50IDIwJSk7XG59XG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIyBTdGFydGVyIFNlY3Rpb24gU2VjdGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLnN0YXJ0ZXItc2VjdGlvbiB7XG4gIC8qIEFkZCB5b3VyIHN0eWxlcyBoZXJlICovXG59Il19 */