/* ================================================================
   Health Wellness Basics — Premium Design System
   ================================================================ */

/* --- Google Fonts Import --- */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Inter:wght@300;400;500;600;700&display=swap');

/* --- CSS Custom Properties --- */
:root {
    /* Color Palette */
    --clr-primary: #2E7D5B;
    /* Deep forest green */
    --clr-primary-light: #4AAD80;
    /* Vibrant green */
    --clr-primary-dark: #1A5C42;
    /* Dark green */
    --clr-accent: #F0A500;
    /* Warm gold */
    --clr-accent-light: #FFD166;
    /* Soft gold */
    --clr-teal: #2196A7;
    /* Healing teal */
    --clr-teal-light: #40C9D8;
    /* Light teal */
    --clr-coral: #E8614D;
    /* Energetic coral */

    /* Neutrals */
    --clr-dark: #0F1F1A;
    /* Near black */
    --clr-gray-900: #1C2B24;
    --clr-gray-700: #3D5248;
    --clr-gray-500: #6B8C7A;
    --clr-gray-300: #B8CFBF;
    --clr-gray-100: #EDF5EF;
    --clr-white: #FFFFFF;

    /* Surfaces */
    --clr-surface: #F7FCF9;
    --clr-surface-alt: #EEFAF3;

    /* Typography */
    --ff-serif: 'Playfair Display', Georgia, serif;
    --ff-sans: 'Inter', system-ui, sans-serif;

    /* Sizing */
    --nav-h: 92px;
    --nav-offset: 10px;
    --section-gap: 6.5rem;
    --radius-sm: 8px;
    --radius-md: 16px;
    --radius-lg: 28px;
    --radius-pill: 999px;

    /* Shadows */
    --shadow-sm: 0 2px 8px rgba(0, 0, 0, .06);
    --shadow-md: 0 8px 32px rgba(0, 0, 0, .1);
    --shadow-lg: 0 20px 60px rgba(0, 0, 0, .14);
    --shadow-green: 0 8px 32px rgba(46, 125, 91, .25);

    /* Transitions */
    --ease: cubic-bezier(.4, 0, .2, 1);
    --duration: .3s;
}

/* --- Reset & Base --- */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    font-size: 16px;
}

body {
    font-family: var(--ff-sans);
    color: var(--clr-dark);
    background: var(--clr-white);
    line-height: 1.7;
    overflow-x: hidden;
}

img {
    display: block;
    max-width: 100%;
}

a {
    text-decoration: none;
    color: inherit;
}

ul {
    list-style: none;
}

button {
    border: none;
    cursor: pointer;
    font-family: inherit;
}

/* --- Typography Scale --- */
h1,
h2,
h3,
h4 {
    font-family: var(--ff-serif);
    line-height: 1.2;
}

h1 {
    font-size: clamp(2.5rem, 5vw, 4.5rem);
}

h2 {
    font-size: clamp(1.8rem, 3.5vw, 2.8rem);
}

h3 {
    font-size: clamp(1.2rem, 2vw, 1.5rem);
}

p {
    font-size: clamp(.95rem, 1.5vw, 1.05rem);
    color: var(--clr-gray-700);
}

/* ================================================================
   UTILITY CLASSES
   ================================================================ */
.container {
    width: min(1200px, 92%);
    margin-inline: auto;
}

section[id] {
    scroll-margin-top: calc(var(--nav-h) + var(--nav-offset) + 1.25rem);
}

a:focus-visible,
button:focus-visible {
    outline: 3px solid rgba(74, 173, 128, .45);
    outline-offset: 3px;
}

.section-label {
    display: inline-block;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--clr-primary);
    background: rgba(46, 125, 91, .1);
    padding: .35rem .9rem;
    border-radius: var(--radius-pill);
    margin-bottom: 1rem;
}

.section-label--light {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.2);
    border-color: rgba(255, 255, 255, 0.3);
}

.blog-hero-content .section-label--light {
    color: #ffffff;
    background: rgba(255, 255, 255, 0.25);
    backdrop-filter: blur(4px);
    border: 1px solid rgba(255, 255, 255, 0.35);
    font-weight: 700;
    letter-spacing: 0.15em;
}

.btn {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .75rem 1.75rem;
    border-radius: var(--radius-pill);
    font-size: .95rem;
    font-weight: 600;
    letter-spacing: .01em;
    transition: transform var(--duration) var(--ease),
        box-shadow var(--duration) var(--ease),
        background var(--duration) var(--ease);
}

.btn-primary {
    background: var(--clr-primary);
    color: var(--clr-white);
    box-shadow: var(--shadow-green);
}

.btn-primary:hover {
    background: var(--clr-primary-dark);
    transform: translateY(-2px);
    box-shadow: 0 12px 40px rgba(46, 125, 91, .35);
}

.btn-outline {
    background: transparent;
    color: var(--clr-primary);
    border: 2px solid var(--clr-primary);
}

.btn-outline:hover {
    background: var(--clr-primary);
    color: var(--clr-white);
    transform: translateY(-2px);
}

.btn-white {
    background: var(--clr-white);
    color: var(--clr-primary);
    box-shadow: var(--shadow-md);
}

.btn-white:hover {
    background: var(--clr-surface);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.btn-accent {
    background: var(--clr-accent);
    color: var(--clr-dark);
    box-shadow: 0 8px 24px rgba(240, 165, 0, .3);
}

.btn-accent:hover {
    background: #d99200;
    transform: translateY(-2px);
}

/* Grid helpers */
.grid-2 {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 2rem;
}

.grid-3 {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 2rem;
}

.grid-4 {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1.5rem;
}

/* ================================================================
   NAVIGATION
   ================================================================ */
#navbar {
    position: fixed;
    top: var(--nav-offset);
    left: 12px;
    right: 12px;
    width: calc(100% - 24px);
    z-index: 1000;
    height: var(--nav-h);
    padding: .55rem 1.1rem;
    border-radius: 20px;
    border: 1px solid rgba(255, 255, 255, .22);
    background: linear-gradient(135deg, rgba(16, 35, 27, .36), rgba(16, 35, 27, .2));
    box-shadow: 0 10px 28px rgba(9, 24, 18, .18);
    display: flex;
    align-items: center;
    transition: background var(--duration) var(--ease),
        border-color var(--duration) var(--ease),
        box-shadow var(--duration) var(--ease),
        backdrop-filter var(--duration) var(--ease);
}

#navbar.scrolled {
    background: rgba(255, 255, 255, .94);
    backdrop-filter: blur(12px);
    border-color: rgba(46, 125, 91, .18);
    box-shadow: 0 10px 24px rgba(12, 30, 21, .12);
}

.nav-inner {
    width: min(1280px, 96%);
    margin-inline: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.nav-brand {
    display: flex;
    align-items: center;
    gap: .75rem;
    height: auto;
    padding-block: 0;
    overflow: visible;
}

.nav-brand-img {
    --logo-scale: 1.14;
    height: clamp(56px, 4vw, 66px);
    width: auto;
    object-fit: contain;
    transform: scale(var(--logo-scale));
    transform-origin: left center;
    transition: transform var(--duration) var(--ease), filter var(--duration) var(--ease), height var(--duration) var(--ease);
}

#navbar.scrolled .nav-brand-img {
    --logo-scale: 1.06;
    height: clamp(54px, 3.8vw, 62px);
}

#navbar:not(.scrolled) .nav-brand-icon,
#navbar:not(.scrolled) .nav-brand-img {
    filter: brightness(0) invert(1);
}

.nav-brand:hover .nav-brand-icon,
.nav-brand:hover .nav-brand-img {
    transform: scale(calc(var(--logo-scale) + .06));
}

.nav-links {
    display: flex;
    align-items: center;
    gap: .15rem;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.nav-links a {
    display: block;
    padding: .42rem .62rem;
    border-radius: var(--radius-sm);
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .01em;
    color: var(--clr-gray-700);
    transition: color var(--duration), background var(--duration);
    position: relative;
}

#navbar:not(.scrolled) .nav-links a {
    color: rgba(255, 255, 255, .88);
}

#navbar:not(.scrolled) .nav-links a.active,
#navbar:not(.scrolled) .nav-links a:hover {
    color: white;
    background: rgba(255, 255, 255, .15);
}

.nav-links a::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    right: 50%;
    height: 2px;
    background: var(--clr-primary);
    border-radius: 2px;
    transition: left var(--duration) var(--ease), right var(--duration) var(--ease);
}

#navbar.scrolled .nav-links a.active::after,
#navbar.scrolled .nav-links a:hover::after {
    left: .75rem;
    right: .75rem;
}

#navbar.scrolled .nav-links a.active,
#navbar.scrolled .nav-links a:hover {
    color: var(--clr-primary);
}

.hamburger {
    display: none;
    flex-direction: column;
    gap: 5px;
    background: transparent;
    padding: .4rem;
    border-radius: var(--radius-sm);
    cursor: pointer;
}

.hamburger span {
    display: block;
    width: 24px;
    height: 2px;
    background: var(--clr-gray-700);
    border-radius: 2px;
    transition: transform var(--duration) var(--ease), opacity var(--duration);
}

.hamburger.open span:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
}

.hamburger.open span:nth-child(2) {
    opacity: 0;
}

.hamburger.open span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
}

/* ================================================================
   HERO SECTION
   ================================================================ */
#home {
    position: relative;
    height: 100svh;
    min-height: 680px;
    padding-top: calc(var(--nav-h) + var(--nav-offset) + .75rem);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    text-align: center;
}

.hero-bg {
    position: absolute;
    inset: 0;
    background-image: url('assets/real-hero.jpg');
    background-size: cover;
    background-position: center top;
    transform: scale(1.05);
    transition: transform 12s ease-out;
}

.hero-bg.loaded {
    transform: scale(1);
}

.hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom,
            rgba(15, 31, 26, 0.7) 0%,
            rgba(15, 31, 26, 0.4) 50%,
            rgba(15, 31, 26, 0.8) 100%);
}

.hero-content {
    position: relative;
    z-index: 2;
    padding: 2.1rem 1.8rem;
    max-width: 860px;
}

/* ================================================================
   BLOG PREVIEW STRIP
   ================================================================ */
#latest-blog {
    padding: calc(var(--section-gap) - 1rem) 0 var(--section-gap);
    background: var(--clr-white);
}

.blog-preview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 1.25rem;
}

.blog-preview-card {
    background: white;
    border: 1px solid rgba(46, 125, 91, .1);
    border-radius: var(--radius-md);
    padding: 1.2rem;
    box-shadow: var(--shadow-sm);
    transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}

.blog-preview-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
}

.blog-preview-card h3 {
    font-family: var(--ff-sans);
    font-size: 1rem;
    margin-bottom: .45rem;
}

.blog-preview-card p {
    font-size: .9rem;
    margin-bottom: .85rem;
}

.blog-preview-card a {
    color: var(--clr-primary);
    font-weight: 700;
    font-size: .88rem;
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    background: rgba(255, 255, 255, .12);
    backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, .2);
    color: white;
    padding: .4rem 1.1rem;
    border-radius: var(--radius-pill);
    font-size: .8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .12em;
    margin-bottom: 1.5rem;
    animation: fadeDown .8s var(--ease) both;
}

.hero-badge .dot {
    width: 8px;
    height: 8px;
    background: var(--clr-accent-light);
    border-radius: 50%;
    animation: pulse 2s infinite;
}

.hero-title {
    color: white;
    margin-bottom: 1.25rem;
    animation: fadeUp .9s .15s var(--ease) both;
    text-shadow: 0 2px 20px rgba(0, 0, 0, .3);
}

.hero-title em {
    font-style: italic;
    color: var(--clr-accent-light);
}

.hero-desc {
    color: rgba(255, 255, 255, .87);
    font-size: clamp(1rem, 2vw, 1.15rem);
    margin-bottom: 2rem;
    animation: fadeUp 1s .3s var(--ease) both;
    max-width: 600px;
    margin-inline: auto;
    margin-bottom: 2rem;
}

.hero-cta {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
    animation: fadeUp 1s .45s var(--ease) both;
}

.hero-scroll {
    position: absolute;
    bottom: 2rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
    color: rgba(255, 255, 255, .7);
    font-size: .75rem;
    letter-spacing: .1em;
    animation: fadeIn 1.5s 1s both;
}

.scroll-arrow {
    width: 36px;
    height: 36px;
    border: 2px solid rgba(255, 255, 255, .4);
    border-radius: 50%;
    display: grid;
    place-items: center;
    animation: bounce 2s infinite;
}

/* ================================================================
   STATS STRIP
   ================================================================ */
#stats {
    background: linear-gradient(135deg, var(--clr-primary-dark), var(--clr-primary));
    padding: 3.5rem 0;
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 2rem;
    text-align: center;
}

.stat-item {
    color: white;
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: var(--radius-md);
    padding: 1.25rem 1rem;
    transition: transform var(--duration) var(--ease), background var(--duration) var(--ease);
}

.stat-item:hover {
    transform: translateY(-4px);
    background: rgba(255, 255, 255, .1);
}

.stat-number {
    font-family: var(--ff-serif);
    font-size: 2.8rem;
    font-weight: 700;
    line-height: 1;
    color: var(--clr-accent-light);
    margin-bottom: .25rem;
}

.stat-label {
    font-size: .85rem;
    color: rgba(255, 255, 255, .8);
    text-transform: uppercase;
    letter-spacing: .08em;
}

/* ================================================================
   INTRO / ABOUT SECTION
   ================================================================ */
#workplace,
#about {
    padding: var(--section-gap) 0;
    background: var(--clr-white);
}

.about-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2.2rem, 4vw, 4.5rem);
    align-items: center;
}

.about-visual {
    position: relative;
}

.about-img-wrap {
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-lg);
    aspect-ratio: 4/5;
    border: 1px solid rgba(46, 125, 91, .08);
}

.about-img-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .6s var(--ease);
}

.about-img-wrap:hover img {
    transform: scale(1.04);
}

.about-badge {
    position: absolute;
    bottom: -1.5rem;
    right: -1.5rem;
    background: white;
    border-radius: var(--radius-md);
    padding: 1.25rem 1.5rem;
    box-shadow: var(--shadow-md);
    text-align: center;
    animation: float 4s ease-in-out infinite;
}

.about-badge .big-num {
    font-family: var(--ff-serif);
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--clr-primary);
    line-height: 1;
}

.about-badge .small-txt {
    font-size: .78rem;
    color: var(--clr-gray-500);
    font-weight: 600;
}

.about-text h2 {
    margin-bottom: 1.25rem;
    color: var(--clr-dark);
}

.about-text p {
    margin-bottom: 1.5rem;
    max-width: 60ch;
}

.feature-list {
    margin: 1.5rem 0;
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.feature-item {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    background: var(--clr-surface);
    border: 1px solid rgba(46, 125, 91, .08);
    border-radius: var(--radius-md);
    padding: .85rem .95rem;
    transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}

.feature-item:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-sm);
}

.feature-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    background: var(--clr-surface-alt);
    border-radius: var(--radius-sm);
    display: grid;
    place-items: center;
    color: var(--clr-primary);
}

.feature-item p {
    margin: 0;
    font-size: .9rem;
}

/* ================================================================
   HEALTH TIPS SECTION
   ================================================================ */
#health-tips {
    padding: var(--section-gap) 0;
    background: var(--clr-surface);
}

.section-header {
    text-align: center;
    margin-bottom: 4rem;
}

.section-header h2 {
    margin-bottom: .75rem;
}

.section-header p {
    max-width: 620px;
    margin-inline: auto;
    font-size: clamp(1rem, 1.7vw, 1.08rem);
}

.tips-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.75rem;
}

.tip-card {
    background: white;
    border-radius: var(--radius-md);
    padding: 2rem;
    box-shadow: var(--shadow-sm);
    transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
    border: 1px solid rgba(46, 125, 91, .08);
    position: relative;
    overflow: hidden;
}

.tip-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--clr-primary-light), var(--clr-teal-light));
    opacity: 0;
    transition: opacity var(--duration);
}

.tip-card:hover {
    transform: translateY(-6px);
    box-shadow: var(--shadow-md);
}

.tip-card:hover::before {
    opacity: 1;
}

.tip-icon {
    width: 52px;
    height: 52px;
    background: var(--clr-surface-alt);
    border-radius: var(--radius-md);
    display: grid;
    place-items: center;
    margin-bottom: 1.25rem;
    color: var(--clr-primary);
    transition: background var(--duration), color var(--duration);
}

.tip-card:hover .tip-icon {
    background: var(--clr-primary);
    color: white;
}

.tip-card h3 {
    font-size: 1.1rem;
    margin-bottom: .6rem;
    color: var(--clr-dark);
}

.tip-card p {
    font-size: .9rem;
    margin: 0;
}

/* ================================================================
   MENTAL HEALTH SECTION
   ================================================================ */
#mental-health {
    padding: var(--section-gap) 0;
    background: linear-gradient(135deg, #0F2318 0%, #1A3D2B 100%);
    color: white;
    position: relative;
    overflow: hidden;
}

#mental-health::before {
    content: '';
    position: absolute;
    width: 600px;
    height: 600px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(74, 173, 128, .15) 0%, transparent 70%);
    top: -200px;
    right: -200px;
    pointer-events: none;
}

.mental-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2.2rem, 4vw, 4.7rem);
    align-items: center;
}

.mental-content h2 {
    color: white;
    margin-bottom: 1rem;
}

.mental-content p {
    color: rgba(255, 255, 255, .8);
    margin-bottom: 1.5rem;
    max-width: 60ch;
}

.mental-cards {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.mental-card {
    background: rgba(255, 255, 255, .06);
    backdrop-filter: blur(8px);
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: var(--radius-md);
    padding: 1.25rem 1.5rem;
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    transition: background var(--duration), border-color var(--duration);
}

.mental-card:hover {
    background: rgba(255, 255, 255, .1);
    border-color: rgba(255, 255, 255, .25);
    transform: translateY(-3px);
}

.mental-card-icon {
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    background: rgba(74, 173, 128, .2);
    border-radius: var(--radius-sm);
    display: grid;
    place-items: center;
    color: var(--clr-primary-light);
}

.mental-card h3 {
    font-family: var(--ff-sans);
    font-size: 1rem;
    font-weight: 600;
    color: white;
    margin-bottom: .25rem;
}

.mental-card p {
    font-size: .87rem;
    color: rgba(255, 255, 255, .7);
    margin: 0;
}

.mental-visual {
    position: relative;
    border-radius: var(--radius-lg);
    overflow: hidden;
    aspect-ratio: 1;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .4);
}

.mental-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.mental-visual-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(15, 35, 24, .8), transparent);
    display: flex;
    align-items: flex-end;
    padding: 1.5rem;
}

.mental-visual-overlay blockquote {
    color: white;
    font-family: var(--ff-serif);
    font-style: italic;
    font-size: 1.05rem;
    line-height: 1.5;
    border-left: 3px solid var(--clr-accent-light);
    padding-left: 1rem;
}

/* ================================================================
   FITNESS TIPS
   ================================================================ */
#fitness-tips {
    padding: var(--section-gap) 0;
    background: var(--clr-white);
}

.fitness-hero-banner {
    border-radius: var(--radius-lg);
    overflow: hidden;
    position: relative;
    margin-bottom: 3rem;
    max-height: 380px;
}

.fitness-hero-banner img {
    width: 100%;
    height: 380px;
    object-fit: cover;
    object-position: center 30%;
}

.fitness-banner-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(15, 31, 26, .85) 40%, transparent);
    display: flex;
    align-items: center;
    padding: 3rem;
}

.fitness-banner-text {
    max-width: 480px;
    color: white;
}

.fitness-banner-text h2 {
    color: white;
    margin-bottom: .75rem;
}

.fitness-banner-text p {
    color: rgba(255, 255, 255, .85);
    margin-bottom: 1.5rem;
}

.step-cards {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 1rem;
}

.step-card {
    background: var(--clr-surface);
    border-radius: var(--radius-md);
    padding: 1.75rem;
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
    border: 1px solid rgba(46, 125, 91, .1);
    transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}

.step-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
}

.step-num {
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    background: linear-gradient(135deg, var(--clr-primary-light), var(--clr-primary));
    border-radius: 50%;
    display: grid;
    place-items: center;
    color: white;
    font-weight: 700;
    font-size: .9rem;
    box-shadow: var(--shadow-green);
}

.step-card h3 {
    font-size: 1rem;
    margin-bottom: .35rem;
}

.step-card p {
    font-size: .88rem;
    margin: 0;
}

/* ================================================================
   PROBIOTICS
   ================================================================ */
#probiotics {
    padding: var(--section-gap) 0;
    background: var(--clr-surface);
}

.probiotic-split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2.1rem, 4vw, 4rem);
    align-items: center;
}

.probiotic-text h2 {
    margin-bottom: 1rem;
}

.probiotic-text p {
    margin-bottom: 1.5rem;
    max-width: 60ch;
}

.food-pills {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    margin: 1.25rem 0;
}

.food-pill {
    background: white;
    border: 1.5px solid var(--clr-primary);
    color: var(--clr-primary);
    border-radius: var(--radius-pill);
    padding: .4rem 1rem;
    font-size: .85rem;
    font-weight: 600;
    transition: background var(--duration), color var(--duration);
}

.food-pill:hover {
    background: var(--clr-primary);
    color: white;
}

.benefit-chips {
    display: flex;
    flex-direction: column;
    gap: .65rem;
}

.benefit-chip {
    display: flex;
    align-items: center;
    gap: .75rem;
    background: white;
    border-radius: var(--radius-sm);
    padding: .75rem 1rem;
    font-size: .9rem;
    box-shadow: var(--shadow-sm);
    border: 1px solid rgba(46, 125, 91, .08);
    transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}

.benefit-chip:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.benefit-chip svg {
    color: var(--clr-primary);
    flex-shrink: 0;
}

.probiotic-visual {
    border-radius: var(--radius-lg);
    overflow: hidden;
    aspect-ratio: 1;
    box-shadow: var(--shadow-lg);
}

.probiotic-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ================================================================
   CARDIOVASCULAR DISEASE
   ================================================================ */
#cardiovascular {
    padding: var(--section-gap) 0;
    background: var(--clr-white);
}

.cardio-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2.2rem, 4vw, 4.7rem);
    align-items: center;
}

.cardio-visual {
    border-radius: var(--radius-lg);
    overflow: hidden;
    aspect-ratio: 4/3;
    box-shadow: var(--shadow-lg);
    position: relative;
}

.cardio-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.heart-tips {
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
    margin: 1.5rem 0;
}

.heart-tip {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    background: var(--clr-surface);
    border-radius: var(--radius-md);
    padding: 1.1rem 1.25rem;
    border-left: 4px solid var(--clr-coral);
    transition: transform var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}

.heart-tip:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-sm);
}

.heart-tip-icon {
    color: var(--clr-coral);
    flex-shrink: 0;
    margin-top: .1rem;
}

.heart-tip h3 {
    font-family: var(--ff-sans);
    font-size: .95rem;
    font-weight: 600;
    margin-bottom: .2rem;
}

.heart-tip p {
    font-size: .86rem;
    margin: 0;
}

/* ================================================================
   HEALTHY EATING
   ================================================================ */
#healthy-eating {
    padding: var(--section-gap) 0;
    background: linear-gradient(135deg, var(--clr-primary-dark), #0F2318);
    color: white;
    position: relative;
    overflow: hidden;
}

#healthy-eating::after {
    content: '';
    position: absolute;
    bottom: -100px;
    left: -100px;
    width: 500px;
    height: 500px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(240, 165, 0, .12) 0%, transparent 70%);
}

.eating-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2.2rem, 4vw, 4.7rem);
    align-items: center;
    position: relative;
    z-index: 1;
}

.eating-text h2 {
    color: white;
    margin-bottom: 1rem;
}

.eating-text p {
    color: rgba(255, 255, 255, .8);
    margin-bottom: 1.5rem;
    max-width: 58ch;
}

.fitness-hero-banner,
.about-img-wrap,
.mental-visual,
.probiotic-visual,
.cardio-visual,
.eating-visual {
    position: relative;
    isolation: isolate;
}

.fitness-hero-banner img,
.mental-visual img,
.probiotic-visual img,
.cardio-visual img,
.eating-visual img {
    transition: transform .75s var(--ease), filter .75s var(--ease);
}

.fitness-hero-banner:hover img,
.mental-visual:hover img,
.probiotic-visual:hover img,
.cardio-visual:hover img,
.eating-visual:hover img {
    transform: scale(1.035);
    filter: saturate(1.06);
}

.nutrition-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.nutrition-card {
    background: rgba(255, 255, 255, .07);
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--radius-md);
    padding: 1.25rem;
    text-align: center;
    transition: background var(--duration), border-color var(--duration);
}

.nutrition-card:hover {
    background: rgba(255, 255, 255, .12);
    border-color: rgba(255, 255, 255, .25);
    transform: translateY(-3px);
}

.nutrition-card .nc-icon {
    font-size: 2rem;
    margin-bottom: .5rem;
}

.nutrition-card h3 {
    font-family: var(--ff-sans);
    font-size: .9rem;
    font-weight: 600;
    color: white;
    margin-bottom: .25rem;
}

.nutrition-card p {
    font-size: .8rem;
    color: rgba(255, 255, 255, .7);
    margin: 0;
}

.eating-visual {
    border-radius: var(--radius-lg);
    overflow: hidden;
    aspect-ratio: 4/5;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .4);
}

.eating-visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ================================================================
   WEIGHT LOSS
   ================================================================ */
#weight-loss {
    padding: var(--section-gap) 0;
    background: var(--clr-surface);
}

.wl-hero {
    border-radius: var(--radius-lg);
    overflow: hidden;
    background: linear-gradient(135deg, var(--clr-teal) 0%, var(--clr-primary) 100%);
    padding: 3.5rem;
    margin-bottom: 3rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    position: relative;
    overflow: hidden;
}

.wl-hero::before {
    content: '';
    position: absolute;
    top: -80px;
    right: -80px;
    width: 300px;
    height: 300px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
}

.wl-hero-text {
    color: white;
    max-width: 420px;
    z-index: 1;
}

.wl-hero-text h2 {
    color: white;
    margin-bottom: .75rem;
}

.wl-hero-text p {
    color: rgba(255, 255, 255, .85);
    margin-bottom: 1.5rem;
}

.wl-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1.5rem;
}

.wl-card {
    background: white;
    border-radius: var(--radius-md);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    transition: transform var(--duration), box-shadow var(--duration);
}

.wl-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-md);
}

.wl-card-top {
    height: 6px;
    background: linear-gradient(90deg, var(--clr-teal), var(--clr-primary-light));
}

.wl-card-body {
    padding: 1.5rem;
}

.wl-card-body h3 {
    font-size: 1rem;
    margin-bottom: .5rem;
}

.wl-card-body p {
    font-size: .87rem;
    margin-bottom: 1rem;
}

.wl-tag {
    display: inline-block;
    background: var(--clr-surface-alt);
    color: var(--clr-primary);
    font-size: .75rem;
    font-weight: 700;
    padding: .2rem .7rem;
    border-radius: var(--radius-pill);
}

/* ================================================================
   NEWSLETTER / CTA STRIP
   ================================================================ */
#newsletter {
    padding: 5rem 0;
    background: linear-gradient(135deg, var(--clr-accent) 0%, #F5C842 100%);
    text-align: center;
}

.newsletter-inner h2 {
    color: var(--clr-dark);
    margin-bottom: .75rem;
}

.newsletter-inner p {
    color: rgba(15, 31, 26, .75);
    margin-bottom: 2rem;
    max-width: 520px;
    margin-inline: auto;
    margin-bottom: 2rem;
}

.newsletter-form {
    display: flex;
    gap: .5rem;
    justify-content: center;
    flex-wrap: wrap;
    max-width: 520px;
    margin-inline: auto;
}

.newsletter-form input {
    flex: 1;
    min-width: 240px;
    padding: .85rem 1.5rem;
    border: none;
    border-radius: var(--radius-pill);
    font-family: var(--ff-sans);
    font-size: .95rem;
    background: white;
    box-shadow: var(--shadow-sm);
    outline: none;
    transition: box-shadow var(--duration);
}

.newsletter-form input:focus {
    box-shadow: 0 0 0 3px rgba(46, 125, 91, .25);
}

.newsletter-form button {
    padding: .85rem 1.75rem;
    background: var(--clr-primary-dark);
    color: white;
    border-radius: var(--radius-pill);
    font-weight: 700;
    font-size: .95rem;
    transition: background var(--duration), transform var(--duration);
}

.newsletter-form button:hover {
    background: var(--clr-dark);
    transform: translateY(-2px);
}

.newsletter-success {
    display: none;
    color: var(--clr-primary-dark);
    font-weight: 700;
    font-size: 1.1rem;
    padding: 1rem;
}

/* ================================================================
   FOOTER
   ================================================================ */
footer {
    background: var(--clr-gray-900);
    color: rgba(255, 255, 255, .8);
    padding: 4rem 0 2rem;
}

.footer-grid {
    display: grid;
    grid-template-columns: 1.6fr 1fr 1fr 1fr;
    gap: 3rem;
    margin-bottom: 3rem;
}

.footer-logo {
    height: 45px;
    width: auto;
    object-fit: contain;
    display: block;
}

.footer-brand p {
    font-size: .88rem;
    margin: .75rem 0 1.5rem;
    color: rgba(255, 255, 255, .6);
    line-height: 1.7;
}

.social-links {
    display: flex;
    gap: .65rem;
}

.social-link {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
    display: grid;
    place-items: center;
    color: rgba(255, 255, 255, .7);
    transition: background var(--duration), color var(--duration), transform var(--duration);
}

.social-link:hover {
    background: var(--clr-primary);
    color: white;
    transform: translateY(-3px);
}

.footer-col h4 {
    font-family: var(--ff-sans);
    font-size: .85rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: white;
    margin-bottom: 1.1rem;
}

.footer-col ul {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.footer-col ul a {
    font-size: .87rem;
    color: rgba(255, 255, 255, .6);
    transition: color var(--duration), padding-left var(--duration);
    display: block;
}

.footer-col ul a:hover {
    color: var(--clr-primary-light);
    padding-left: .35rem;
}

.footer-bottom {
    border-top: 1px solid rgba(255, 255, 255, .1);
    padding-top: 1.5rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    font-size: .83rem;
    color: rgba(255, 255, 255, .45);
}

.footer-bottom-links {
    display: flex;
    gap: 1.5rem;
}

.footer-bottom-links a {
    color: rgba(255, 255, 255, .45);
    transition: color var(--duration);
}

.footer-bottom-links a:hover {
    color: rgba(255, 255, 255, .8);
}

/* ================================================================
   BACK TO TOP
   ================================================================ */
#back-to-top {
    position: fixed;
    bottom: 2rem;
    right: 2rem;
    width: 48px;
    height: 48px;
    background: var(--clr-primary);
    color: white;
    border-radius: 50%;
    display: grid;
    place-items: center;
    box-shadow: var(--shadow-green);
    opacity: 0;
    pointer-events: none;
    transform: translateY(10px);
    transition: opacity var(--duration), transform var(--duration);
    z-index: 999;
}

#back-to-top.visible {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

#back-to-top:hover {
    background: var(--clr-primary-dark);
    transform: translateY(-3px);
}

/* ================================================================
   SCROLL-REVEAL ANIMATIONS
   ================================================================ */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity .7s var(--ease), transform .7s var(--ease);
}

.reveal.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Stagger children */
.stagger>* {
    transition-delay: calc(var(--i, 0) * .1s);
}

/* ================================================================
   KEYFRAME ANIMATIONS
   ================================================================ */
@keyframes fadeDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes bounce {

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

    50% {
        transform: translateY(8px);
    }
}

@keyframes float {

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

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

@keyframes pulse {

    0%,
    100% {
        opacity: 1;
        transform: scale(1);
    }

    50% {
        opacity: .6;
        transform: scale(.75);
    }
}

/* ================================================================
   MOBILE NAV OVERLAY
   ================================================================ */
.mobile-nav {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: rgba(10, 28, 18, .97);
    backdrop-filter: blur(16px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
    transform: translateX(100%);
    transition: transform .4s var(--ease);
}

.mobile-nav.open {
    transform: translateX(0);
}

.mobile-nav a {
    font-family: var(--ff-serif);
    font-size: 2rem;
    color: rgba(255, 255, 255, .85);
    transition: color var(--duration);
}

.mobile-nav a:hover {
    color: var(--clr-primary-light);
}

.mobile-nav-close {
    position: absolute;
    top: 1.5rem;
    right: 1.5rem;
    background: transparent;
    color: white;
    font-size: 2rem;
    line-height: 1;
    padding: .5rem;
}

/* ================================================================
   GENERIC INNER PAGES (BLOG / TERMS / PRIVACY / CONTACT)
   ================================================================ */
.page-shell {
    min-height: 100svh;
    background: var(--clr-surface);
}

.page-hero {
    padding: calc(var(--nav-h) + 2.5rem) 0 2.2rem;
    background: linear-gradient(145deg, #103325 0%, #1d6548 100%);
    color: white;
}

.page-hero h1 {
    color: white;
    margin-bottom: .65rem;
}

.page-hero p {
    color: rgba(255, 255, 255, .85);
    max-width: 70ch;
}

.page-main {
    padding: 2.4rem 0 var(--section-gap);
}

.policy-content,
.contact-panel,
.blog-listing {
    background: white;
    border: 1px solid rgba(46, 125, 91, .1);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
    padding: clamp(1.1rem, 2vw, 2rem);
}

.policy-content h2,
.policy-content h3 {
    margin-bottom: .6rem;
}

.policy-content p,
.policy-content li {
    margin-bottom: .8rem;
}

.policy-content ul {
    list-style: disc;
    margin-left: 1.2rem;
}

.blog-listing {
    display: grid;
    gap: 1rem;
}

.blog-card {
    border: 1px solid rgba(46, 125, 91, .1);
    border-radius: var(--radius-md);
    padding: 1rem 1rem 1.15rem;
    background: var(--clr-surface);
}

.blog-meta {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    margin-bottom: .4rem;
}

.blog-tag {
    background: rgba(46, 125, 91, .12);
    color: var(--clr-primary);
    font-size: .74rem;
    font-weight: 700;
    padding: .2rem .6rem;
    border-radius: var(--radius-pill);
}

.contact-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.2rem;
}

.contact-panel h2 {
    margin-bottom: .55rem;
}

.contact-info-list {
    display: grid;
    gap: .75rem;
}

.contact-form {
    display: grid;
    gap: .8rem;
}

.contact-form input,
.contact-form textarea {
    width: 100%;
    border: 1px solid rgba(46, 125, 91, .24);
    border-radius: 12px;
    padding: .8rem .95rem;
    font-family: var(--ff-sans);
}

.contact-form textarea {
    min-height: 130px;
    resize: vertical;
}

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media (max-width: 1024px) {

    :root {
        --nav-h: 88px;
        --nav-offset: 8px;
    }

    .about-grid,
    .mental-grid,
    .probiotic-split,
    .cardio-grid,
    .eating-grid {
        grid-template-columns: 1fr;
    }

    .mental-grid .mental-visual,
    .eating-grid .eating-visual {
        order: -1;
    }

    .footer-grid {
        grid-template-columns: 1fr 1fr;
    }

    .about-badge {
        right: .5rem;
        bottom: .5rem;
    }

    .nav-brand-img {
        --logo-scale: 1.08;
        height: clamp(52px, 6.8vw, 62px);
    }

    #navbar.scrolled .nav-brand-img {
        --logo-scale: 1.02;
        height: clamp(50px, 6.3vw, 58px);
    }

    .nav-links a {
        font-size: .75rem;
        padding: .4rem .5rem;
    }

    .contact-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 768px) {
    :root {
        --section-gap: 4rem;
        --nav-h: 80px;
        --nav-offset: 6px;
    }

    #navbar {
        left: 8px;
        right: 8px;
        width: calc(100% - 16px);
        border-radius: 14px;
        padding: .45rem .8rem;
    }

    .nav-brand-img,
    #navbar.scrolled .nav-brand-img {
        --logo-scale: .98;
        height: 48px;
    }

    .nav-links {
        display: none;
    }

    .hamburger {
        display: flex;
    }

    .wl-hero {
        flex-direction: column;
        padding: 2rem;
    }

    .eating-grid .nutrition-cards {
        grid-template-columns: repeat(2, 1fr);
    }

    .footer-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

    .footer-bottom {
        flex-direction: column;
        text-align: center;
    }

    .hero-cta {
        gap: .75rem;
    }

    .fitness-banner-overlay {
        padding: 1.5rem;
    }

    #home {
        min-height: 620px;
        padding-top: calc(var(--nav-h) + var(--nav-offset) + .65rem);
    }

    .page-hero {
        padding: calc(var(--nav-h) + 2rem) 0 1.8rem;
    }

    .mobile-nav a {
        font-size: 1.5rem;
    }
}

@media (max-width: 480px) {
    .nutrition-cards {
        grid-template-columns: 1fr !important;
    }

    .newsletter-form {
        flex-direction: column;
    }

    .newsletter-form input {
        min-width: unset;
    }

    .hero-cta .btn {
        width: 100%;
        justify-content: center;
    }

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

    .blog-preview-grid {
        grid-template-columns: 1fr;
    }

    .hero-content {
        padding: 1.7rem 1rem;
    }

    .page-main {
        padding-top: 1.3rem;
    }
}

/* =========================
   BLOG EXPERIENCE (ADVANCED)
   ========================= */

.blog-page-main {
  padding: clamp(2rem, 4vw, 4rem) 0 clamp(3rem, 6vw, 6rem);
}

.blog-hero {
  position: relative;
  min-height: 42vh;
  display: grid;
  place-items: center;
  border-radius: 24px;
  overflow: hidden;
  margin: 1.25rem auto 0;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}
.blog-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(120deg, rgba(5, 20, 17, 0.75), rgba(7, 40, 32, 0.45));
}
.blog-hero-content {
  position: relative;
  z-index: 1;
  color: #fff;
  text-align: center;
  max-width: 820px;
  padding: 2rem;
}
.blog-hero-content h1 {
  font-size: clamp(2rem, 5vw, 3.5rem);
  line-height: 1.1;
  margin-bottom: 0.75rem;
}
.blog-hero-content p {
  opacity: 0.95;
}

.blog-overview {
    margin-top: 1rem;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .85rem;
}

.blog-overview-pill {
    background: var(--clr-white);
    border: 1px solid rgba(46, 125, 91, .14);
    border-radius: 14px;
    padding: .85rem 1rem;
    box-shadow: var(--shadow-sm);
    display: flex;
    flex-direction: column;
    gap: .1rem;
}

.blog-overview-pill strong {
    font-size: 1.45rem;
    line-height: 1;
    color: var(--clr-primary);
    font-family: var(--ff-serif);
}

.blog-overview-pill span {
    font-size: .82rem;
    color: var(--clr-gray-500);
    font-weight: 600;
}

.blog-category-strip {
    margin-top: 1rem;
    background: linear-gradient(135deg, var(--clr-surface-alt), var(--clr-surface));
    border: 1px solid rgba(46, 125, 91, .12);
    border-radius: 16px;
    padding: 1rem;
}

.blog-category-strip h3 {
    font-family: var(--ff-sans);
    font-size: .92rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--clr-primary-dark);
    margin-bottom: .7rem;
}

.category-chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.category-chip {
    border-radius: var(--radius-pill);
    background: var(--clr-white);
    border: 1px solid rgba(46, 125, 91, .18);
    color: var(--clr-primary);
    font-size: .79rem;
    font-weight: 700;
    padding: .3rem .7rem;
}

.featured-post-strip {
    margin-top: 1.15rem;
}

.featured-post-card {
    position: relative;
    border-radius: var(--radius-lg);
    overflow: hidden;
    min-height: 380px;
    box-shadow: 0 24px 60px rgba(13, 36, 27, .2);
}

.featured-post-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    position: absolute;
    inset: 0;
}

.featured-post-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, rgba(11, 28, 20, .85) 0%, rgba(11, 28, 20, .42) 65%, rgba(11, 28, 20, .25) 100%);
}

.featured-post-content {
    position: relative;
    z-index: 1;
    color: var(--clr-white);
    max-width: 650px;
    padding: clamp(1.2rem, 3vw, 2.2rem);
}

.featured-post-content h2 {
    color: var(--clr-white);
    margin: .25rem 0 .7rem;
}

.featured-post-content p {
    color: rgba(255, 255, 255);
    margin-bottom: .95rem;
}

.blog-meta-row--light {
    color: rgba(255, 255, 255, .84);
    margin-bottom: 1rem;
}

.blog-section-header {
    margin-bottom: 1.6rem;
}

.blog-listing-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 1.25rem;
}

.blog-card {
  grid-column: span 4;
  background: rgba(255, 255, 255, 0.75);
  border: 1px solid rgba(255, 255, 255, 0.55);
  border-radius: 20px;
  overflow: hidden;
  backdrop-filter: blur(8px);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.blog-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 40px rgba(10, 40, 32, 0.18);
}
.blog-card-cover {
  aspect-ratio: 16/9;
  width: 100%;
  object-fit: cover;
}
.blog-card-body {
  padding: 1rem 1rem 1.1rem;
}

.blog-card p {
    margin-bottom: .9rem;
}
.blog-card h2 {
  margin: 0.4rem 0 0.6rem;
  font-size: 1.15rem;
  line-height: 1.35;
}
.blog-card h2 a {
  color: var(--text-dark, #17231f);
  text-decoration: none;
}
.blog-card h2 a:hover {
  color: var(--primary, #1b7f63);
}

.blog-card-cta-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.blog-read-time {
    font-size: .8rem;
    color: var(--clr-gray-500);
    font-weight: 600;
}

.blog-meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  font-size: 0.85rem;
  color: #4d5d56;
}
.blog-tag {
  background: #ecf7f2;
  color: #15634e;
  border: 1px solid #cdeadd;
  border-radius: 999px;
  padding: 0.2rem 0.6rem;
  font-weight: 600;
}

.article-shell {
  max-width: 860px;
  margin: 0 auto;
}

.article-breadcrumb {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .45rem;
    margin: .6rem 0 .9rem;
    color: var(--clr-gray-500);
    font-size: .82rem;
    font-weight: 600;
}

.article-breadcrumb a {
    color: var(--clr-primary);
}
.article-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin: 0.75rem 0 1.25rem;
  color: #4b5d55;
  font-size: 0.92rem;
}
.article-cover {
  width: 100%;
  border-radius: 18px;
  margin: 0.75rem 0 1.5rem;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.2);
}

.article-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(0, .85fr);
    gap: 1.1rem;
    align-items: start;
}

.article-main {
    min-width: 0;
}

.article-sidebar {
    position: sticky;
    top: calc(var(--nav-h) + 1.4rem);
    display: grid;
    gap: .8rem;
}

.article-sidebar-card {
    background: var(--clr-white);
    border: 1px solid rgba(46, 125, 91, .14);
    border-radius: 14px;
    padding: .85rem .95rem;
    box-shadow: var(--shadow-sm);
}

.article-sidebar-card h4 {
    font-family: var(--ff-sans);
    font-size: .88rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--clr-primary-dark);
    margin-bottom: .55rem;
}

.article-sidebar-card ul {
    display: grid;
    gap: .45rem;
}

.article-sidebar-card a {
    font-size: .85rem;
    color: var(--clr-gray-700);
}

.article-sidebar-card a:hover {
    color: var(--clr-primary);
}

.article-sidebar-card--cta p {
    font-size: .86rem;
    margin-bottom: .8rem;
}

.article-lead-box {
    background: linear-gradient(140deg, var(--clr-surface-alt), var(--clr-surface));
    border: 1px solid rgba(46, 125, 91, .12);
    border-left: 5px solid var(--clr-primary);
    border-radius: 14px;
    padding: .85rem 1rem;
    margin-bottom: 1rem;
}

.article-lead-box h3 {
    font-family: var(--ff-sans);
    font-size: .92rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--clr-primary-dark);
    margin-bottom: .4rem;
}
.article-content {
  font-size: 1.06rem;
  line-height: 1.82;
  color: #1f2b26;
}
.article-content h2 {
  margin-top: 1.7rem;
  margin-bottom: 0.55rem;
  line-height: 1.3;
    scroll-margin-top: calc(var(--nav-h) + 1rem);
}
.article-content a {
  color: var(--primary, #1b7f63);
  text-decoration: none;
  border-bottom: 1px dashed rgba(27, 127, 99, 0.45);
}
.article-content a:hover {
  border-bottom-style: solid;
}

.related-posts {
  margin-top: 2.2rem;
  padding-top: 1.1rem;
  border-top: 1px solid rgba(20, 40, 35, 0.15);
}
.related-posts-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.9rem;
}
.related-post-item {
  border: 1px solid rgba(22, 56, 46, 0.15);
  border-radius: 14px;
  padding: 0.8rem;
  background: #fbfdfc;
    display: flex;
    flex-direction: column;
    gap: .45rem;
}
.related-post-item a {
  text-decoration: none;
  color: #173128;
  font-weight: 600;
}

.related-post-item span {
    font-size: .78rem;
    color: var(--clr-gray-500);
    font-weight: 600;
}

.article-highlights {
    margin-top: 1.4rem;
    padding: .95rem 1rem;
    border-radius: 14px;
    background: rgba(74, 173, 128, .08);
    border: 1px solid rgba(74, 173, 128, .2);
}

.article-highlights ul {
    margin-top: .35rem;
    display: grid;
    gap: .4rem;
}

.blog-newsletter-cta {
    margin-top: 2.1rem;
}

.blog-newsletter-box {
    border-radius: var(--radius-lg);
    padding: 1.3rem;
    border: 1px solid rgba(255, 209, 102, .5);
    background: linear-gradient(135deg, rgba(255, 209, 102, .2), rgba(240, 165, 0, .18));
}

.blog-newsletter-box h2 {
    margin-bottom: .4rem;
}

.blog-newsletter-box p {
    margin-bottom: .9rem;
}

@media (max-width: 1024px) {
  .blog-card { grid-column: span 6; }

    .article-layout {
        grid-template-columns: 1fr;
    }

    .article-sidebar {
        position: static;
    }
}
@media (max-width: 768px) {
    .blog-overview {
        grid-template-columns: 1fr;
    }

    .featured-post-card {
        min-height: 320px;
    }

  .blog-card { grid-column: span 12; }
  .related-posts-grid { grid-template-columns: 1fr; }
  .blog-hero { min-height: 35vh; border-radius: 18px; }

    .blog-card-cta-row {
        flex-direction: column;
        align-items: stretch;
    }

    .blog-card-cta-row .btn {
        width: 100%;
        justify-content: center;
    }
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEiLCJmaWxlIjoic3R5bGVzLm1pbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBIZWFsdGggV2VsbG5lc3MgQmFzaWNzIOKAlCBQcmVtaXVtIERlc2lnbiBTeXN0ZW1cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogLS0tIEdvb2dsZSBGb250cyBJbXBvcnQgLS0tICovXG5AaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1QbGF5ZmFpcitEaXNwbGF5Oml0YWwsd2dodEAwLDQwMDswLDcwMDsxLDQwMCZmYW1pbHk9SW50ZXI6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCcpO1xuXG4vKiAtLS0gQ1NTIEN1c3RvbSBQcm9wZXJ0aWVzIC0tLSAqL1xuOnJvb3Qge1xuICAgIC8qIENvbG9yIFBhbGV0dGUgKi9cbiAgICAtLWNsci1wcmltYXJ5OiAjMkU3RDVCO1xuICAgIC8qIERlZXAgZm9yZXN0IGdyZWVuICovXG4gICAgLS1jbHItcHJpbWFyeS1saWdodDogIzRBQUQ4MDtcbiAgICAvKiBWaWJyYW50IGdyZWVuICovXG4gICAgLS1jbHItcHJpbWFyeS1kYXJrOiAjMUE1QzQyO1xuICAgIC8qIERhcmsgZ3JlZW4gKi9cbiAgICAtLWNsci1hY2NlbnQ6ICNGMEE1MDA7XG4gICAgLyogV2FybSBnb2xkICovXG4gICAgLS1jbHItYWNjZW50LWxpZ2h0OiAjRkZEMTY2O1xuICAgIC8qIFNvZnQgZ29sZCAqL1xuICAgIC0tY2xyLXRlYWw6ICMyMTk2QTc7XG4gICAgLyogSGVhbGluZyB0ZWFsICovXG4gICAgLS1jbHItdGVhbC1saWdodDogIzQwQzlEODtcbiAgICAvKiBMaWdodCB0ZWFsICovXG4gICAgLS1jbHItY29yYWw6ICNFODYxNEQ7XG4gICAgLyogRW5lcmdldGljIGNvcmFsICovXG5cbiAgICAvKiBOZXV0cmFscyAqL1xuICAgIC0tY2xyLWRhcms6ICMwRjFGMUE7XG4gICAgLyogTmVhciBibGFjayAqL1xuICAgIC0tY2xyLWdyYXktOTAwOiAjMUMyQjI0O1xuICAgIC0tY2xyLWdyYXktNzAwOiAjM0Q1MjQ4O1xuICAgIC0tY2xyLWdyYXktNTAwOiAjNkI4QzdBO1xuICAgIC0tY2xyLWdyYXktMzAwOiAjQjhDRkJGO1xuICAgIC0tY2xyLWdyYXktMTAwOiAjRURGNUVGO1xuICAgIC0tY2xyLXdoaXRlOiAjRkZGRkZGO1xuXG4gICAgLyogU3VyZmFjZXMgKi9cbiAgICAtLWNsci1zdXJmYWNlOiAjRjdGQ0Y5O1xuICAgIC0tY2xyLXN1cmZhY2UtYWx0OiAjRUVGQUYzO1xuXG4gICAgLyogVHlwb2dyYXBoeSAqL1xuICAgIC0tZmYtc2VyaWY6ICdQbGF5ZmFpciBEaXNwbGF5JywgR2VvcmdpYSwgc2VyaWY7XG4gICAgLS1mZi1zYW5zOiAnSW50ZXInLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG5cbiAgICAvKiBTaXppbmcgKi9cbiAgICAtLW5hdi1oOiA5MnB4O1xuICAgIC0tbmF2LW9mZnNldDogMTBweDtcbiAgICAtLXNlY3Rpb24tZ2FwOiA2LjVyZW07XG4gICAgLS1yYWRpdXMtc206IDhweDtcbiAgICAtLXJhZGl1cy1tZDogMTZweDtcbiAgICAtLXJhZGl1cy1sZzogMjhweDtcbiAgICAtLXJhZGl1cy1waWxsOiA5OTlweDtcblxuICAgIC8qIFNoYWRvd3MgKi9cbiAgICAtLXNoYWRvdy1zbTogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgLjA2KTtcbiAgICAtLXNoYWRvdy1tZDogMCA4cHggMzJweCByZ2JhKDAsIDAsIDAsIC4xKTtcbiAgICAtLXNoYWRvdy1sZzogMCAyMHB4IDYwcHggcmdiYSgwLCAwLCAwLCAuMTQpO1xuICAgIC0tc2hhZG93LWdyZWVuOiAwIDhweCAzMnB4IHJnYmEoNDYsIDEyNSwgOTEsIC4yNSk7XG5cbiAgICAvKiBUcmFuc2l0aW9ucyAqL1xuICAgIC0tZWFzZTogY3ViaWMtYmV6aWVyKC40LCAwLCAuMiwgMSk7XG4gICAgLS1kdXJhdGlvbjogLjNzO1xufVxuXG4vKiAtLS0gUmVzZXQgJiBCYXNlIC0tLSAqL1xuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5odG1sIHtcbiAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcbiAgICBmb250LXNpemU6IDE2cHg7XG59XG5cbmJvZHkge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1zYW5zKTtcbiAgICBjb2xvcjogdmFyKC0tY2xyLWRhcmspO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci13aGl0ZSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbmltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG5hIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6IGluaGVyaXQ7XG59XG5cbnVsIHtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG5idXR0b24ge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG59XG5cbi8qIC0tLSBUeXBvZ3JhcGh5IFNjYWxlIC0tLSAqL1xuaDEsXG5oMixcbmgzLFxuaDQge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1zZXJpZik7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbn1cblxuaDEge1xuICAgIGZvbnQtc2l6ZTogY2xhbXAoMi41cmVtLCA1dncsIDQuNXJlbSk7XG59XG5cbmgyIHtcbiAgICBmb250LXNpemU6IGNsYW1wKDEuOHJlbSwgMy41dncsIDIuOHJlbSk7XG59XG5cbmgzIHtcbiAgICBmb250LXNpemU6IGNsYW1wKDEuMnJlbSwgMnZ3LCAxLjVyZW0pO1xufVxuXG5wIHtcbiAgICBmb250LXNpemU6IGNsYW1wKC45NXJlbSwgMS41dncsIDEuMDVyZW0pO1xuICAgIGNvbG9yOiB2YXIoLS1jbHItZ3JheS03MDApO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBVVElMSVRZIENMQVNTRVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5jb250YWluZXIge1xuICAgIHdpZHRoOiBtaW4oMTIwMHB4LCA5MiUpO1xuICAgIG1hcmdpbi1pbmxpbmU6IGF1dG87XG59XG5cbnNlY3Rpb25baWRdIHtcbiAgICBzY3JvbGwtbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1uYXYtaCkgKyB2YXIoLS1uYXYtb2Zmc2V0KSArIDEuMjVyZW0pO1xufVxuXG5hOmZvY3VzLXZpc2libGUsXG5idXR0b246Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogM3B4IHNvbGlkIHJnYmEoNzQsIDE3MywgMTI4LCAuNDUpO1xuICAgIG91dGxpbmUtb2Zmc2V0OiAzcHg7XG59XG5cbi5zZWN0aW9uLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLjE1ZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnkpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoNDYsIDEyNSwgOTEsIC4xKTtcbiAgICBwYWRkaW5nOiAuMzVyZW0gLjlyZW07XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXBpbGwpO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5zZWN0aW9uLWxhYmVsLS1saWdodCB7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xufVxuXG4uYmxvZy1oZXJvLWNvbnRlbnQgLnNlY3Rpb24tbGFiZWwtLWxpZ2h0IHtcbiAgICBjb2xvcjogI2ZmZmZmZjtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig0cHgpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zNSk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogMC4xNWVtO1xufVxuXG4uYnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogLjVyZW07XG4gICAgcGFkZGluZzogLjc1cmVtIDEuNzVyZW07XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXBpbGwpO1xuICAgIGZvbnQtc2l6ZTogLjk1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4wMWVtO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksXG4gICAgICAgIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2UpLFxuICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uKSB2YXIoLS1lYXNlKTtcbn1cblxuLmJ0bi1wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNsci13aGl0ZSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LWdyZWVuKTtcbn1cblxuLmJ0bi1wcmltYXJ5OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItcHJpbWFyeS1kYXJrKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogMCAxMnB4IDQwcHggcmdiYSg0NiwgMTI1LCA5MSwgLjM1KTtcbn1cblxuLmJ0bi1vdXRsaW5lIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnkpO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNsci1wcmltYXJ5KTtcbn1cblxuLmJ0bi1vdXRsaW5lOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNsci13aGl0ZSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4uYnRuLXdoaXRlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItd2hpdGUpO1xuICAgIGNvbG9yOiB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLmJ0bi13aGl0ZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXN1cmZhY2UpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xufVxuXG4uYnRuLWFjY2VudCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLWFjY2VudCk7XG4gICAgY29sb3I6IHZhcigtLWNsci1kYXJrKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMjQwLCAxNjUsIDAsIC4zKTtcbn1cblxuLmJ0bi1hY2NlbnQ6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNkOTkyMDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4vKiBHcmlkIGhlbHBlcnMgKi9cbi5ncmlkLTIge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMDBweCwgMWZyKSk7XG4gICAgZ2FwOiAycmVtO1xufVxuXG4uZ3JpZC0zIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjYwcHgsIDFmcikpO1xuICAgIGdhcDogMnJlbTtcbn1cblxuLmdyaWQtNCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTtcbiAgICBnYXA6IDEuNXJlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTkFWSUdBVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI25hdmJhciB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogdmFyKC0tbmF2LW9mZnNldCk7XG4gICAgbGVmdDogMTJweDtcbiAgICByaWdodDogMTJweDtcbiAgICB3aWR0aDogY2FsYygxMDAlIC0gMjRweCk7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBoZWlnaHQ6IHZhcigtLW5hdi1oKTtcbiAgICBwYWRkaW5nOiAuNTVyZW0gMS4xcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMjIpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMTYsIDM1LCAyNywgLjM2KSwgcmdiYSgxNiwgMzUsIDI3LCAuMikpO1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAyOHB4IHJnYmEoOSwgMjQsIDE4LCAuMTgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uKSB2YXIoLS1lYXNlKSxcbiAgICAgICAgYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uKSB2YXIoLS1lYXNlKSxcbiAgICAgICAgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksXG4gICAgICAgIGJhY2tkcm9wLWZpbHRlciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSk7XG59XG5cbiNuYXZiYXIuc2Nyb2xsZWQge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjk0KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTJweCk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDQ2LCAxMjUsIDkxLCAuMTgpO1xuICAgIGJveC1zaGFkb3c6IDAgMTBweCAyNHB4IHJnYmEoMTIsIDMwLCAyMSwgLjEyKTtcbn1cblxuLm5hdi1pbm5lciB7XG4gICAgd2lkdGg6IG1pbigxMjgwcHgsIDk2JSk7XG4gICAgbWFyZ2luLWlubGluZTogYXV0bztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGdhcDogMXJlbTtcbn1cblxuLm5hdi1icmFuZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogLjc1cmVtO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBwYWRkaW5nLWJsb2NrOiAwO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG4ubmF2LWJyYW5kLWltZyB7XG4gICAgLS1sb2dvLXNjYWxlOiAxLjE0O1xuICAgIGhlaWdodDogY2xhbXAoNTZweCwgNHZ3LCA2NnB4KTtcbiAgICB3aWR0aDogYXV0bztcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgIHRyYW5zZm9ybTogc2NhbGUodmFyKC0tbG9nby1zY2FsZSkpO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksIGZpbHRlciB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksIGhlaWdodCB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSk7XG59XG5cbiNuYXZiYXIuc2Nyb2xsZWQgLm5hdi1icmFuZC1pbWcge1xuICAgIC0tbG9nby1zY2FsZTogMS4wNjtcbiAgICBoZWlnaHQ6IGNsYW1wKDU0cHgsIDMuOHZ3LCA2MnB4KTtcbn1cblxuI25hdmJhcjpub3QoLnNjcm9sbGVkKSAubmF2LWJyYW5kLWljb24sXG4jbmF2YmFyOm5vdCguc2Nyb2xsZWQpIC5uYXYtYnJhbmQtaW1nIHtcbiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoMCkgaW52ZXJ0KDEpO1xufVxuXG4ubmF2LWJyYW5kOmhvdmVyIC5uYXYtYnJhbmQtaWNvbixcbi5uYXYtYnJhbmQ6aG92ZXIgLm5hdi1icmFuZC1pbWcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoY2FsYyh2YXIoLS1sb2dvLXNjYWxlKSArIC4wNikpO1xufVxuXG4ubmF2LWxpbmtzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAuMTVyZW07XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG59XG5cbi5uYXYtbGlua3MgYSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogLjQycmVtIC42MnJlbTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLjAxZW07XG4gICAgY29sb3I6IHZhcigtLWNsci1ncmF5LTcwMCk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tZHVyYXRpb24pLCBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbiNuYXZiYXI6bm90KC5zY3JvbGxlZCkgLm5hdi1saW5rcyBhIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuODgpO1xufVxuXG4jbmF2YmFyOm5vdCguc2Nyb2xsZWQpIC5uYXYtbGlua3MgYS5hY3RpdmUsXG4jbmF2YmFyOm5vdCguc2Nyb2xsZWQpIC5uYXYtbGlua3MgYTpob3ZlciB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjE1KTtcbn1cblxuLm5hdi1saW5rcyBhOjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgcmlnaHQ6IDUwJTtcbiAgICBoZWlnaHQ6IDJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIHRyYW5zaXRpb246IGxlZnQgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2UpLCByaWdodCB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSk7XG59XG5cbiNuYXZiYXIuc2Nyb2xsZWQgLm5hdi1saW5rcyBhLmFjdGl2ZTo6YWZ0ZXIsXG4jbmF2YmFyLnNjcm9sbGVkIC5uYXYtbGlua3MgYTpob3Zlcjo6YWZ0ZXIge1xuICAgIGxlZnQ6IC43NXJlbTtcbiAgICByaWdodDogLjc1cmVtO1xufVxuXG4jbmF2YmFyLnNjcm9sbGVkIC5uYXYtbGlua3MgYS5hY3RpdmUsXG4jbmF2YmFyLnNjcm9sbGVkIC5uYXYtbGlua3MgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5KTtcbn1cblxuLmhhbWJ1cmdlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogNXB4O1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIHBhZGRpbmc6IC40cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uaGFtYnVyZ2VyIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGhlaWdodDogMnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1ncmF5LTcwMCk7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksIG9wYWNpdHkgdmFyKC0tZHVyYXRpb24pO1xufVxuXG4uaGFtYnVyZ2VyLm9wZW4gc3BhbjpudGgtY2hpbGQoMSkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg3cHgpIHJvdGF0ZSg0NWRlZyk7XG59XG5cbi5oYW1idXJnZXIub3BlbiBzcGFuOm50aC1jaGlsZCgyKSB7XG4gICAgb3BhY2l0eTogMDtcbn1cblxuLmhhbWJ1cmdlci5vcGVuIHNwYW46bnRoLWNoaWxkKDMpIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTdweCkgcm90YXRlKC00NWRlZyk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhFUk8gU0VDVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2hvbWUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDEwMHN2aDtcbiAgICBtaW4taGVpZ2h0OiA2ODBweDtcbiAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1uYXYtaCkgKyB2YXIoLS1uYXYtb2Zmc2V0KSArIC43NXJlbSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uaGVyby1iZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnYXNzZXRzL3JlYWwtaGVyby5qcGcnKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciB0b3A7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTJzIGVhc2Utb3V0O1xufVxuXG4uaGVyby1iZy5sb2FkZWQge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG59XG5cbi5oZXJvLW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLFxuICAgICAgICAgICAgcmdiYSgxNSwgMzEsIDI2LCAwLjcpIDAlLFxuICAgICAgICAgICAgcmdiYSgxNSwgMzEsIDI2LCAwLjQpIDUwJSxcbiAgICAgICAgICAgIHJnYmEoMTUsIDMxLCAyNiwgMC44KSAxMDAlKTtcbn1cblxuLmhlcm8tY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDI7XG4gICAgcGFkZGluZzogMi4xcmVtIDEuOHJlbTtcbiAgICBtYXgtd2lkdGg6IDg2MHB4O1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBCTE9HIFBSRVZJRVcgU1RSSVBcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiNsYXRlc3QtYmxvZyB7XG4gICAgcGFkZGluZzogY2FsYyh2YXIoLS1zZWN0aW9uLWdhcCkgLSAxcmVtKSAwIHZhcigtLXNlY3Rpb24tZ2FwKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItd2hpdGUpO1xufVxuXG4uYmxvZy1wcmV2aWV3LWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNTBweCwgMWZyKSk7XG4gICAgZ2FwOiAxLjI1cmVtO1xufVxuXG4uYmxvZy1wcmV2aWV3LWNhcmQge1xuICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDYsIDEyNSwgOTEsIC4xKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IDEuMnJlbTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2UpO1xufVxuXG4uYmxvZy1wcmV2aWV3LWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4uYmxvZy1wcmV2aWV3LWNhcmQgaDMge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1zYW5zKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogLjQ1cmVtO1xufVxuXG4uYmxvZy1wcmV2aWV3LWNhcmQgcCB7XG4gICAgZm9udC1zaXplOiAuOXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAuODVyZW07XG59XG5cbi5ibG9nLXByZXZpZXctY2FyZCBhIHtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnkpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAuODhyZW07XG59XG5cbi5oZXJvLWJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogLjVyZW07XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTIpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjIpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAuNHJlbSAxLjFyZW07XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXBpbGwpO1xuICAgIGZvbnQtc2l6ZTogLjhyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMTJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gICAgYW5pbWF0aW9uOiBmYWRlRG93biAuOHMgdmFyKC0tZWFzZSkgYm90aDtcbn1cblxuLmhlcm8tYmFkZ2UgLmRvdCB7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItYWNjZW50LWxpZ2h0KTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTtcbn1cblxuLmhlcm8tdGl0bGUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjI1cmVtO1xuICAgIGFuaW1hdGlvbjogZmFkZVVwIC45cyAuMTVzIHZhcigtLWVhc2UpIGJvdGg7XG4gICAgdGV4dC1zaGFkb3c6IDAgMnB4IDIwcHggcmdiYSgwLCAwLCAwLCAuMyk7XG59XG5cbi5oZXJvLXRpdGxlIGVtIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgY29sb3I6IHZhcigtLWNsci1hY2NlbnQtbGlnaHQpO1xufVxuXG4uaGVyby1kZXNjIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuODcpO1xuICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMnZ3LCAxLjE1cmVtKTtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIGFuaW1hdGlvbjogZmFkZVVwIDFzIC4zcyB2YXIoLS1lYXNlKSBib3RoO1xuICAgIG1heC13aWR0aDogNjAwcHg7XG4gICAgbWFyZ2luLWlubGluZTogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG4uaGVyby1jdGEge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAxcmVtO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbmltYXRpb246IGZhZGVVcCAxcyAuNDVzIHZhcigtLWVhc2UpIGJvdGg7XG59XG5cbi5oZXJvLXNjcm9sbCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogMnJlbTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIHotaW5kZXg6IDI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAuNXJlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNyk7XG4gICAgZm9udC1zaXplOiAuNzVyZW07XG4gICAgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG4gICAgYW5pbWF0aW9uOiBmYWRlSW4gMS41cyAxcyBib3RoO1xufVxuXG4uc2Nyb2xsLWFycm93IHtcbiAgICB3aWR0aDogMzZweDtcbiAgICBoZWlnaHQ6IDM2cHg7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuNCk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBhbmltYXRpb246IGJvdW5jZSAycyBpbmZpbml0ZTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgU1RBVFMgU1RSSVBcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiNzdGF0cyB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY2xyLXByaW1hcnktZGFyayksIHZhcigtLWNsci1wcmltYXJ5KSk7XG4gICAgcGFkZGluZzogMy41cmVtIDA7XG59XG5cbi5zdGF0cy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMTgwcHgsIDFmcikpO1xuICAgIGdhcDogMnJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zdGF0LWl0ZW0ge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC4wNik7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogMS4yNXJlbSAxcmVtO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksIGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2UpO1xufVxuXG4uc3RhdC1pdGVtOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7XG59XG5cbi5zdGF0LW51bWJlciB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXNlcmlmKTtcbiAgICBmb250LXNpemU6IDIuOHJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIGNvbG9yOiB2YXIoLS1jbHItYWNjZW50LWxpZ2h0KTtcbiAgICBtYXJnaW4tYm90dG9tOiAuMjVyZW07XG59XG5cbi5zdGF0LWxhYmVsIHtcbiAgICBmb250LXNpemU6IC44NXJlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuOCk7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBsZXR0ZXItc3BhY2luZzogLjA4ZW07XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIElOVFJPIC8gQUJPVVQgU0VDVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI3dvcmtwbGFjZSxcbiNhYm91dCB7XG4gICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbi1nYXApIDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXdoaXRlKTtcbn1cblxuLmFib3V0LWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogY2xhbXAoMi4ycmVtLCA0dncsIDQuNXJlbSk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmFib3V0LXZpc3VhbCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYWJvdXQtaW1nLXdyYXAge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbGcpO1xuICAgIGFzcGVjdC1yYXRpbzogNC81O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDYsIDEyNSwgOTEsIC4wOCk7XG59XG5cbi5hYm91dC1pbWctd3JhcCBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjZzIHZhcigtLWVhc2UpO1xufVxuXG4uYWJvdXQtaW1nLXdyYXA6aG92ZXIgaW1nIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDQpO1xufVxuXG4uYWJvdXQtYmFkZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC0xLjVyZW07XG4gICAgcmlnaHQ6IC0xLjVyZW07XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiAxLjI1cmVtIDEuNXJlbTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBhbmltYXRpb246IGZsb2F0IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG4uYWJvdXQtYmFkZ2UgLmJpZy1udW0ge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1zZXJpZik7XG4gICAgZm9udC1zaXplOiAyLjVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnkpO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xufVxuXG4uYWJvdXQtYmFkZ2UgLnNtYWxsLXR4dCB7XG4gICAgZm9udC1zaXplOiAuNzhyZW07XG4gICAgY29sb3I6IHZhcigtLWNsci1ncmF5LTUwMCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmFib3V0LXRleHQgaDIge1xuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gICAgY29sb3I6IHZhcigtLWNsci1kYXJrKTtcbn1cblxuLmFib3V0LXRleHQgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgIG1heC13aWR0aDogNjBjaDtcbn1cblxuLmZlYXR1cmUtbGlzdCB7XG4gICAgbWFyZ2luOiAxLjVyZW0gMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAuNzVyZW07XG59XG5cbi5mZWF0dXJlLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgZ2FwOiAuNzVyZW07XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXN1cmZhY2UpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDYsIDEyNSwgOTEsIC4wOCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiAuODVyZW0gLjk1cmVtO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2UpO1xufVxuXG4uZmVhdHVyZS1pdGVtOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbn1cblxuLmZlYXR1cmUtaWNvbiB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgd2lkdGg6IDM2cHg7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1zdXJmYWNlLWFsdCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5KTtcbn1cblxuLmZlYXR1cmUtaXRlbSBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAuOXJlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgSEVBTFRIIFRJUFMgU0VDVElPTlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI2hlYWx0aC10aXBzIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zZWN0aW9uLWdhcCkgMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItc3VyZmFjZSk7XG59XG5cbi5zZWN0aW9uLWhlYWRlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDRyZW07XG59XG5cbi5zZWN0aW9uLWhlYWRlciBoMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogLjc1cmVtO1xufVxuXG4uc2VjdGlvbi1oZWFkZXIgcCB7XG4gICAgbWF4LXdpZHRoOiA2MjBweDtcbiAgICBtYXJnaW4taW5saW5lOiBhdXRvO1xuICAgIGZvbnQtc2l6ZTogY2xhbXAoMXJlbSwgMS43dncsIDEuMDhyZW0pO1xufVxuXG4udGlwcy1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpO1xuICAgIGdhcDogMS43NXJlbTtcbn1cblxuLnRpcC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IDJyZW07XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2UpLCBib3gtc2hhZG93IHZhcigtLWR1cmF0aW9uKSB2YXIoLS1lYXNlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ2LCAxMjUsIDkxLCAuMDgpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udGlwLWNhcmQ6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tY2xyLXByaW1hcnktbGlnaHQpLCB2YXIoLS1jbHItdGVhbC1saWdodCkpO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbik7XG59XG5cbi50aXAtY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZCk7XG59XG5cbi50aXAtY2FyZDpob3Zlcjo6YmVmb3JlIHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4udGlwLWljb24ge1xuICAgIHdpZHRoOiA1MnB4O1xuICAgIGhlaWdodDogNTJweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItc3VyZmFjZS1hbHQpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIG1hcmdpbi1ib3R0b206IDEuMjVyZW07XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5KTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uKSwgY29sb3IgdmFyKC0tZHVyYXRpb24pO1xufVxuXG4udGlwLWNhcmQ6aG92ZXIgLnRpcC1pY29uIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4udGlwLWNhcmQgaDMge1xuICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgIG1hcmdpbi1ib3R0b206IC42cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jbHItZGFyayk7XG59XG5cbi50aXAtY2FyZCBwIHtcbiAgICBmb250LXNpemU6IC45cmVtO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTUVOVEFMIEhFQUxUSCBTRUNUSU9OXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4jbWVudGFsLWhlYWx0aCB7XG4gICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbi1nYXApIDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzBGMjMxOCAwJSwgIzFBM0QyQiAxMDAlKTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiNtZW50YWwtaGVhbHRoOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogNjAwcHg7XG4gICAgaGVpZ2h0OiA2MDBweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSwgcmdiYSg3NCwgMTczLCAxMjgsIC4xNSkgMCUsIHRyYW5zcGFyZW50IDcwJSk7XG4gICAgdG9wOiAtMjAwcHg7XG4gICAgcmlnaHQ6IC0yMDBweDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLm1lbnRhbC1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IGNsYW1wKDIuMnJlbSwgNHZ3LCA0LjdyZW0pO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5tZW50YWwtY29udGVudCBoMiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5tZW50YWwtY29udGVudCBwIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuOCk7XG4gICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgIG1heC13aWR0aDogNjBjaDtcbn1cblxuLm1lbnRhbC1jYXJkcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMXJlbTtcbn1cblxuLm1lbnRhbC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC4wNik7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiAxLjI1cmVtIDEuNXJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogMXJlbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uKSwgYm9yZGVyLWNvbG9yIHZhcigtLWR1cmF0aW9uKTtcbn1cblxuLm1lbnRhbC1jYXJkOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjI1KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG59XG5cbi5tZW50YWwtY2FyZC1pY29uIHtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICB3aWR0aDogNDJweDtcbiAgICBoZWlnaHQ6IDQycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTczLCAxMjgsIC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnktbGlnaHQpO1xufVxuXG4ubWVudGFsLWNhcmQgaDMge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1zYW5zKTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLWJvdHRvbTogLjI1cmVtO1xufVxuXG4ubWVudGFsLWNhcmQgcCB7XG4gICAgZm9udC1zaXplOiAuODdyZW07XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjcpO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm1lbnRhbC12aXN1YWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgIGJveC1zaGFkb3c6IDAgMzBweCA4MHB4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG4ubWVudGFsLXZpc3VhbCBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLm1lbnRhbC12aXN1YWwtb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMTUsIDM1LCAyNCwgLjgpLCB0cmFuc3BhcmVudCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgcGFkZGluZzogMS41cmVtO1xufVxuXG4ubWVudGFsLXZpc3VhbC1vdmVybGF5IGJsb2NrcXVvdGUge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZmYtc2VyaWYpO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBmb250LXNpemU6IDEuMDVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLWNsci1hY2NlbnQtbGlnaHQpO1xuICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRklUTkVTUyBUSVBTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4jZml0bmVzcy10aXBzIHtcbiAgICBwYWRkaW5nOiB2YXIoLS1zZWN0aW9uLWdhcCkgMDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItd2hpdGUpO1xufVxuXG4uZml0bmVzcy1oZXJvLWJhbm5lciB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICAgIG1heC1oZWlnaHQ6IDM4MHB4O1xufVxuXG4uZml0bmVzcy1oZXJvLWJhbm5lciBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMzgwcHg7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgb2JqZWN0LXBvc2l0aW9uOiBjZW50ZXIgMzAlO1xufVxuXG4uZml0bmVzcy1iYW5uZXItb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgcmdiYSgxNSwgMzEsIDI2LCAuODUpIDQwJSwgdHJhbnNwYXJlbnQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzcmVtO1xufVxuXG4uZml0bmVzcy1iYW5uZXItdGV4dCB7XG4gICAgbWF4LXdpZHRoOiA0ODBweDtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5maXRuZXNzLWJhbm5lci10ZXh0IGgyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLWJvdHRvbTogLjc1cmVtO1xufVxuXG4uZml0bmVzcy1iYW5uZXItdGV4dCBwIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuODUpO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLnN0ZXAtY2FyZHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDFyZW07XG4gICAgbWFyZ2luLXRvcDogMXJlbTtcbn1cblxuLnN0ZXAtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXN1cmZhY2UpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogMS43NXJlbTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMS4yNXJlbTtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ2LCAxMjUsIDkxLCAuMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uKSB2YXIoLS1lYXNlKSwgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSk7XG59XG5cbi5zdGVwLWNhcmQ6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWQpO1xufVxuXG4uc3RlcC1udW0ge1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIHdpZHRoOiA0MnB4O1xuICAgIGhlaWdodDogNDJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jbHItcHJpbWFyeS1saWdodCksIHZhcigtLWNsci1wcmltYXJ5KSk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgcGxhY2UtaXRlbXM6IGNlbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IC45cmVtO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1ncmVlbik7XG59XG5cbi5zdGVwLWNhcmQgaDMge1xuICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAuMzVyZW07XG59XG5cbi5zdGVwLWNhcmQgcCB7XG4gICAgZm9udC1zaXplOiAuODhyZW07XG4gICAgbWFyZ2luOiAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBQUk9CSU9USUNTXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4jcHJvYmlvdGljcyB7XG4gICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbi1nYXApIDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXN1cmZhY2UpO1xufVxuXG4ucHJvYmlvdGljLXNwbGl0IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICBnYXA6IGNsYW1wKDIuMXJlbSwgNHZ3LCA0cmVtKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4ucHJvYmlvdGljLXRleHQgaDIge1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5wcm9iaW90aWMtdGV4dCBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07XG4gICAgbWF4LXdpZHRoOiA2MGNoO1xufVxuXG4uZm9vZC1waWxscyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAuNnJlbTtcbiAgICBtYXJnaW46IDEuMjVyZW0gMDtcbn1cblxuLmZvb2QtcGlsbCB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtcGlsbCk7XG4gICAgcGFkZGluZzogLjRyZW0gMXJlbTtcbiAgICBmb250LXNpemU6IC44NXJlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24pLCBjb2xvciB2YXIoLS1kdXJhdGlvbik7XG59XG5cbi5mb29kLXBpbGw6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5iZW5lZml0LWNoaXBzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAuNjVyZW07XG59XG5cbi5iZW5lZml0LWNoaXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IC43NXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pO1xuICAgIHBhZGRpbmc6IC43NXJlbSAxcmVtO1xuICAgIGZvbnQtc2l6ZTogLjlyZW07XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ2LCAxMjUsIDkxLCAuMDgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSksIGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24pIHZhcigtLWVhc2UpO1xufVxuXG4uYmVuZWZpdC1jaGlwOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLmJlbmVmaXQtY2hpcCBzdmcge1xuICAgIGNvbG9yOiB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5wcm9iaW90aWMtdmlzdWFsIHtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbGcpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG59XG5cbi5wcm9iaW90aWMtdmlzdWFsIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBDQVJESU9WQVNDVUxBUiBESVNFQVNFXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4jY2FyZGlvdmFzY3VsYXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXNlY3Rpb24tZ2FwKSAwO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci13aGl0ZSk7XG59XG5cbi5jYXJkaW8tZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiBjbGFtcCgyLjJyZW0sIDR2dywgNC43cmVtKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uY2FyZGlvLXZpc3VhbCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGFzcGVjdC1yYXRpbzogNC8zO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1sZyk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2FyZGlvLXZpc3VhbCBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLmhlYXJ0LXRpcHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDEuMXJlbTtcbiAgICBtYXJnaW46IDEuNXJlbSAwO1xufVxuXG4uaGVhcnQtdGlwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogMXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItc3VyZmFjZSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBwYWRkaW5nOiAxLjFyZW0gMS4yNXJlbTtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWNsci1jb3JhbCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uKSB2YXIoLS1lYXNlKSwgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbikgdmFyKC0tZWFzZSk7XG59XG5cbi5oZWFydC10aXA6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xufVxuXG4uaGVhcnQtdGlwLWljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1jbHItY29yYWwpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG1hcmdpbi10b3A6IC4xcmVtO1xufVxuXG4uaGVhcnQtdGlwIGgzIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZmYtc2Fucyk7XG4gICAgZm9udC1zaXplOiAuOTVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW4tYm90dG9tOiAuMnJlbTtcbn1cblxuLmhlYXJ0LXRpcCBwIHtcbiAgICBmb250LXNpemU6IC44NnJlbTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEhFQUxUSFkgRUFUSU5HXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4jaGVhbHRoeS1lYXRpbmcge1xuICAgIHBhZGRpbmc6IHZhcigtLXNlY3Rpb24tZ2FwKSAwO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNsci1wcmltYXJ5LWRhcmspLCAjMEYyMzE4KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbiNoZWFsdGh5LWVhdGluZzo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC0xMDBweDtcbiAgICBsZWZ0OiAtMTAwcHg7XG4gICAgd2lkdGg6IDUwMHB4O1xuICAgIGhlaWdodDogNTAwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIHJnYmEoMjQwLCAxNjUsIDAsIC4xMikgMCUsIHRyYW5zcGFyZW50IDcwJSk7XG59XG5cbi5lYXRpbmctZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgZ2FwOiBjbGFtcCgyLjJyZW0sIDR2dywgNC43cmVtKTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xufVxuXG4uZWF0aW5nLXRleHQgaDIge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uZWF0aW5nLXRleHQgcCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjgpO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbiAgICBtYXgtd2lkdGg6IDU4Y2g7XG59XG5cbi5maXRuZXNzLWhlcm8tYmFubmVyLFxuLmFib3V0LWltZy13cmFwLFxuLm1lbnRhbC12aXN1YWwsXG4ucHJvYmlvdGljLXZpc3VhbCxcbi5jYXJkaW8tdmlzdWFsLFxuLmVhdGluZy12aXN1YWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XG59XG5cbi5maXRuZXNzLWhlcm8tYmFubmVyIGltZyxcbi5tZW50YWwtdmlzdWFsIGltZyxcbi5wcm9iaW90aWMtdmlzdWFsIGltZyxcbi5jYXJkaW8tdmlzdWFsIGltZyxcbi5lYXRpbmctdmlzdWFsIGltZyB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC43NXMgdmFyKC0tZWFzZSksIGZpbHRlciAuNzVzIHZhcigtLWVhc2UpO1xufVxuXG4uZml0bmVzcy1oZXJvLWJhbm5lcjpob3ZlciBpbWcsXG4ubWVudGFsLXZpc3VhbDpob3ZlciBpbWcsXG4ucHJvYmlvdGljLXZpc3VhbDpob3ZlciBpbWcsXG4uY2FyZGlvLXZpc3VhbDpob3ZlciBpbWcsXG4uZWF0aW5nLXZpc3VhbDpob3ZlciBpbWcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMzUpO1xuICAgIGZpbHRlcjogc2F0dXJhdGUoMS4wNik7XG59XG5cbi5udXRyaXRpb24tY2FyZHMge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogMXJlbTtcbn1cblxuLm51dHJpdGlvbi1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC4wNyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTIpO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1tZCk7XG4gICAgcGFkZGluZzogMS4yNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCB2YXIoLS1kdXJhdGlvbiksIGJvcmRlci1jb2xvciB2YXIoLS1kdXJhdGlvbik7XG59XG5cbi5udXRyaXRpb24tY2FyZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMTIpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMjUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTtcbn1cblxuLm51dHJpdGlvbi1jYXJkIC5uYy1pY29uIHtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG59XG5cbi5udXRyaXRpb24tY2FyZCBoMyB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXNhbnMpO1xuICAgIGZvbnQtc2l6ZTogLjlyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgbWFyZ2luLWJvdHRvbTogLjI1cmVtO1xufVxuXG4ubnV0cml0aW9uLWNhcmQgcCB7XG4gICAgZm9udC1zaXplOiAuOHJlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNyk7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uZWF0aW5nLXZpc3VhbCB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGFzcGVjdC1yYXRpbzogNC81O1xuICAgIGJveC1zaGFkb3c6IDAgMzBweCA4MHB4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG4uZWF0aW5nLXZpc3VhbCBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3Zlcjtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgV0VJR0hUIExPU1NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiN3ZWlnaHQtbG9zcyB7XG4gICAgcGFkZGluZzogdmFyKC0tc2VjdGlvbi1nYXApIDA7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXN1cmZhY2UpO1xufVxuXG4ud2wtaGVybyB7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLWxnKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNsci10ZWFsKSAwJSwgdmFyKC0tY2xyLXByaW1hcnkpIDEwMCUpO1xuICAgIHBhZGRpbmc6IDMuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAzcmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgZ2FwOiAycmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ud2wtaGVybzo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtODBweDtcbiAgICByaWdodDogLTgwcHg7XG4gICAgd2lkdGg6IDMwMHB4O1xuICAgIGhlaWdodDogMzAwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA4KTtcbn1cblxuLndsLWhlcm8tdGV4dCB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1heC13aWR0aDogNDIwcHg7XG4gICAgei1pbmRleDogMTtcbn1cblxuLndsLWhlcm8tdGV4dCBoMiB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG1hcmdpbi1ib3R0b206IC43NXJlbTtcbn1cblxuLndsLWhlcm8tdGV4dCBwIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuODUpO1xuICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTtcbn1cblxuLndsLWNhcmRzIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjQwcHgsIDFmcikpO1xuICAgIGdhcDogMS41cmVtO1xufVxuXG4ud2wtY2FyZCB7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uKSwgYm94LXNoYWRvdyB2YXIoLS1kdXJhdGlvbik7XG59XG5cbi53bC1jYXJkOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1kKTtcbn1cblxuLndsLWNhcmQtdG9wIHtcbiAgICBoZWlnaHQ6IDZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWNsci10ZWFsKSwgdmFyKC0tY2xyLXByaW1hcnktbGlnaHQpKTtcbn1cblxuLndsLWNhcmQtYm9keSB7XG4gICAgcGFkZGluZzogMS41cmVtO1xufVxuXG4ud2wtY2FyZC1ib2R5IGgzIHtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogLjVyZW07XG59XG5cbi53bC1jYXJkLWJvZHkgcCB7XG4gICAgZm9udC1zaXplOiAuODdyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLndsLXRhZyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1zdXJmYWNlLWFsdCk7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IC43NXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHBhZGRpbmc6IC4ycmVtIC43cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgTkVXU0xFVFRFUiAvIENUQSBTVFJJUFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuI25ld3NsZXR0ZXIge1xuICAgIHBhZGRpbmc6IDVyZW0gMDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jbHItYWNjZW50KSAwJSwgI0Y1Qzg0MiAxMDAlKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5uZXdzbGV0dGVyLWlubmVyIGgyIHtcbiAgICBjb2xvcjogdmFyKC0tY2xyLWRhcmspO1xuICAgIG1hcmdpbi1ib3R0b206IC43NXJlbTtcbn1cblxuLm5ld3NsZXR0ZXItaW5uZXIgcCB7XG4gICAgY29sb3I6IHJnYmEoMTUsIDMxLCAyNiwgLjc1KTtcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICAgIG1heC13aWR0aDogNTIwcHg7XG4gICAgbWFyZ2luLWlubGluZTogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG4ubmV3c2xldHRlci1mb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogLjVyZW07XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIG1heC13aWR0aDogNTIwcHg7XG4gICAgbWFyZ2luLWlubGluZTogYXV0bztcbn1cblxuLm5ld3NsZXR0ZXItZm9ybSBpbnB1dCB7XG4gICAgZmxleDogMTtcbiAgICBtaW4td2lkdGg6IDI0MHB4O1xuICAgIHBhZGRpbmc6IC44NXJlbSAxLjVyZW07XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsKTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZmYtc2Fucyk7XG4gICAgZm9udC1zaXplOiAuOTVyZW07XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtKTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJveC1zaGFkb3cgdmFyKC0tZHVyYXRpb24pO1xufVxuXG4ubmV3c2xldHRlci1mb3JtIGlucHV0OmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg0NiwgMTI1LCA5MSwgLjI1KTtcbn1cblxuLm5ld3NsZXR0ZXItZm9ybSBidXR0b24ge1xuICAgIHBhZGRpbmc6IC44NXJlbSAxLjc1cmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1wcmltYXJ5LWRhcmspO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtcGlsbCk7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBmb250LXNpemU6IC45NXJlbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uKSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uKTtcbn1cblxuLm5ld3NsZXR0ZXItZm9ybSBidXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1kYXJrKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5uZXdzbGV0dGVyLXN1Y2Nlc3Mge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5LWRhcmspO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zaXplOiAxLjFyZW07XG4gICAgcGFkZGluZzogMXJlbTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgRk9PVEVSXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5mb290ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1ncmF5LTkwMCk7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjgpO1xuICAgIHBhZGRpbmc6IDRyZW0gMCAycmVtO1xufVxuXG4uZm9vdGVyLWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjZmciAxZnIgMWZyIDFmcjtcbiAgICBnYXA6IDNyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogM3JlbTtcbn1cblxuLmZvb3Rlci1sb2dvIHtcbiAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmZvb3Rlci1icmFuZCBwIHtcbiAgICBmb250LXNpemU6IC44OHJlbTtcbiAgICBtYXJnaW46IC43NXJlbSAwIDEuNXJlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNik7XG4gICAgbGluZS1oZWlnaHQ6IDEuNztcbn1cblxuLnNvY2lhbC1saW5rcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IC42NXJlbTtcbn1cblxuLnNvY2lhbC1saW5rIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjA4KTtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjcpO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24pLCBjb2xvciB2YXIoLS1kdXJhdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbik7XG59XG5cbi5zb2NpYWwtbGluazpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7XG59XG5cbi5mb290ZXItY29sIGg0IHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZmYtc2Fucyk7XG4gICAgZm9udC1zaXplOiAuODVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMWVtO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjFyZW07XG59XG5cbi5mb290ZXItY29sIHVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAuNnJlbTtcbn1cblxuLmZvb3Rlci1jb2wgdWwgYSB7XG4gICAgZm9udC1zaXplOiAuODdyZW07XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjYpO1xuICAgIHRyYW5zaXRpb246IGNvbG9yIHZhcigtLWR1cmF0aW9uKSwgcGFkZGluZy1sZWZ0IHZhcigtLWR1cmF0aW9uKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmZvb3Rlci1jb2wgdWwgYTpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5LWxpZ2h0KTtcbiAgICBwYWRkaW5nLWxlZnQ6IC4zNXJlbTtcbn1cblxuLmZvb3Rlci1ib3R0b20ge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4xKTtcbiAgICBwYWRkaW5nLXRvcDogMS41cmVtO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogMXJlbTtcbiAgICBmb250LXNpemU6IC44M3JlbTtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAuNDUpO1xufVxuXG4uZm9vdGVyLWJvdHRvbS1saW5rcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDEuNXJlbTtcbn1cblxuLmZvb3Rlci1ib3R0b20tbGlua3MgYSB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjQ1KTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbik7XG59XG5cbi5mb290ZXItYm90dG9tLWxpbmtzIGE6aG92ZXIge1xuICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIC44KTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQkFDSyBUTyBUT1BcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbiNiYWNrLXRvLXRvcCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJvdHRvbTogMnJlbTtcbiAgICByaWdodDogMnJlbTtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXByaW1hcnkpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1ncmVlbik7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTBweCk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1kdXJhdGlvbiksIHRyYW5zZm9ybSB2YXIoLS1kdXJhdGlvbik7XG4gICAgei1pbmRleDogOTk5O1xufVxuXG4jYmFjay10by10b3AudmlzaWJsZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbiNiYWNrLXRvLXRvcDpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXByaW1hcnktZGFyayk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBTQ1JPTEwtUkVWRUFMIEFOSU1BVElPTlNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5yZXZlYWwge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjdzIHZhcigtLWVhc2UpLCB0cmFuc2Zvcm0gLjdzIHZhcigtLWVhc2UpO1xufVxuXG4ucmV2ZWFsLnZpc2libGUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiBTdGFnZ2VyIGNoaWxkcmVuICovXG4uc3RhZ2dlcj4qIHtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiBjYWxjKHZhcigtLWksIDApICogLjFzKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgS0VZRlJBTUUgQU5JTUFUSU9OU1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuQGtleWZyYW1lcyBmYWRlRG93biB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XG4gICAgfVxuXG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZhZGVVcCB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIGJvdW5jZSB7XG5cbiAgICAwJSxcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cblxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg4cHgpO1xuICAgIH1cbn1cblxuQGtleWZyYW1lcyBmbG9hdCB7XG5cbiAgICAwJSxcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xuICAgIH1cblxuICAgIDUwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHB1bHNlIHtcblxuICAgIDAlLFxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIH1cblxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IC42O1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC43NSk7XG4gICAgfVxufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBNT0JJTEUgTkFWIE9WRVJMQVlcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5tb2JpbGUtbmF2IHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogOTk5O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAsIDI4LCAxOCwgLjk3KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTZweCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiAxLjVyZW07XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNHMgdmFyKC0tZWFzZSk7XG59XG5cbi5tb2JpbGUtbmF2Lm9wZW4ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbn1cblxuLm1vYmlsZS1uYXYgYSB7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXNlcmlmKTtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjg1KTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciB2YXIoLS1kdXJhdGlvbik7XG59XG5cbi5tb2JpbGUtbmF2IGE6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jbHItcHJpbWFyeS1saWdodCk7XG59XG5cbi5tb2JpbGUtbmF2LWNsb3NlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxLjVyZW07XG4gICAgcmlnaHQ6IDEuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC1zaXplOiAycmVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIHBhZGRpbmc6IC41cmVtO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBHRU5FUklDIElOTkVSIFBBR0VTIChCTE9HIC8gVEVSTVMgLyBQUklWQUNZIC8gQ09OVEFDVClcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi5wYWdlLXNoZWxsIHtcbiAgICBtaW4taGVpZ2h0OiAxMDBzdmg7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXN1cmZhY2UpO1xufVxuXG4ucGFnZS1oZXJvIHtcbiAgICBwYWRkaW5nOiBjYWxjKHZhcigtLW5hdi1oKSArIDIuNXJlbSkgMCAyLjJyZW07XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgIzEwMzMyNSAwJSwgIzFkNjU0OCAxMDAlKTtcbiAgICBjb2xvcjogd2hpdGU7XG59XG5cbi5wYWdlLWhlcm8gaDEge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBtYXJnaW4tYm90dG9tOiAuNjVyZW07XG59XG5cbi5wYWdlLWhlcm8gcCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjg1KTtcbiAgICBtYXgtd2lkdGg6IDcwY2g7XG59XG5cbi5wYWdlLW1haW4ge1xuICAgIHBhZGRpbmc6IDIuNHJlbSAwIHZhcigtLXNlY3Rpb24tZ2FwKTtcbn1cblxuLnBvbGljeS1jb250ZW50LFxuLmNvbnRhY3QtcGFuZWwsXG4uYmxvZy1saXN0aW5nIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ2LCAxMjUsIDkxLCAuMSk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLW1kKTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xuICAgIHBhZGRpbmc6IGNsYW1wKDEuMXJlbSwgMnZ3LCAycmVtKTtcbn1cblxuLnBvbGljeS1jb250ZW50IGgyLFxuLnBvbGljeS1jb250ZW50IGgzIHtcbiAgICBtYXJnaW4tYm90dG9tOiAuNnJlbTtcbn1cblxuLnBvbGljeS1jb250ZW50IHAsXG4ucG9saWN5LWNvbnRlbnQgbGkge1xuICAgIG1hcmdpbi1ib3R0b206IC44cmVtO1xufVxuXG4ucG9saWN5LWNvbnRlbnQgdWwge1xuICAgIGxpc3Qtc3R5bGU6IGRpc2M7XG4gICAgbWFyZ2luLWxlZnQ6IDEuMnJlbTtcbn1cblxuLmJsb2ctbGlzdGluZyB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBnYXA6IDFyZW07XG59XG5cbi5ibG9nLWNhcmQge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDYsIDEyNSwgOTEsIC4xKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtbWQpO1xuICAgIHBhZGRpbmc6IDFyZW0gMXJlbSAxLjE1cmVtO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci1zdXJmYWNlKTtcbn1cblxuLmJsb2ctbWV0YSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IC41cmVtO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBtYXJnaW4tYm90dG9tOiAuNHJlbTtcbn1cblxuLmJsb2ctdGFnIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDQ2LCAxMjUsIDkxLCAuMTIpO1xuICAgIGNvbG9yOiB2YXIoLS1jbHItcHJpbWFyeSk7XG4gICAgZm9udC1zaXplOiAuNzRyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBwYWRkaW5nOiAuMnJlbSAuNnJlbTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtcGlsbCk7XG59XG5cbi5jb250YWN0LWdyaWQge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgIGdhcDogMS4ycmVtO1xufVxuXG4uY29udGFjdC1wYW5lbCBoMiB7XG4gICAgbWFyZ2luLWJvdHRvbTogLjU1cmVtO1xufVxuXG4uY29udGFjdC1pbmZvLWxpc3Qge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiAuNzVyZW07XG59XG5cbi5jb250YWN0LWZvcm0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiAuOHJlbTtcbn1cblxuLmNvbnRhY3QtZm9ybSBpbnB1dCxcbi5jb250YWN0LWZvcm0gdGV4dGFyZWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDYsIDEyNSwgOTEsIC4yNCk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBwYWRkaW5nOiAuOHJlbSAuOTVyZW07XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZmLXNhbnMpO1xufVxuXG4uY29udGFjdC1mb3JtIHRleHRhcmVhIHtcbiAgICBtaW4taGVpZ2h0OiAxMzBweDtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBSRVNQT05TSVZFXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7XG5cbiAgICA6cm9vdCB7XG4gICAgICAgIC0tbmF2LWg6IDg4cHg7XG4gICAgICAgIC0tbmF2LW9mZnNldDogOHB4O1xuICAgIH1cblxuICAgIC5hYm91dC1ncmlkLFxuICAgIC5tZW50YWwtZ3JpZCxcbiAgICAucHJvYmlvdGljLXNwbGl0LFxuICAgIC5jYXJkaW8tZ3JpZCxcbiAgICAuZWF0aW5nLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAubWVudGFsLWdyaWQgLm1lbnRhbC12aXN1YWwsXG4gICAgLmVhdGluZy1ncmlkIC5lYXRpbmctdmlzdWFsIHtcbiAgICAgICAgb3JkZXI6IC0xO1xuICAgIH1cblxuICAgIC5mb290ZXItZ3JpZCB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICB9XG5cbiAgICAuYWJvdXQtYmFkZ2Uge1xuICAgICAgICByaWdodDogLjVyZW07XG4gICAgICAgIGJvdHRvbTogLjVyZW07XG4gICAgfVxuXG4gICAgLm5hdi1icmFuZC1pbWcge1xuICAgICAgICAtLWxvZ28tc2NhbGU6IDEuMDg7XG4gICAgICAgIGhlaWdodDogY2xhbXAoNTJweCwgNi44dncsIDYycHgpO1xuICAgIH1cblxuICAgICNuYXZiYXIuc2Nyb2xsZWQgLm5hdi1icmFuZC1pbWcge1xuICAgICAgICAtLWxvZ28tc2NhbGU6IDEuMDI7XG4gICAgICAgIGhlaWdodDogY2xhbXAoNTBweCwgNi4zdncsIDU4cHgpO1xuICAgIH1cblxuICAgIC5uYXYtbGlua3MgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogLjc1cmVtO1xuICAgICAgICBwYWRkaW5nOiAuNHJlbSAuNXJlbTtcbiAgICB9XG5cbiAgICAuY29udGFjdC1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICA6cm9vdCB7XG4gICAgICAgIC0tc2VjdGlvbi1nYXA6IDRyZW07XG4gICAgICAgIC0tbmF2LWg6IDgwcHg7XG4gICAgICAgIC0tbmF2LW9mZnNldDogNnB4O1xuICAgIH1cblxuICAgICNuYXZiYXIge1xuICAgICAgICBsZWZ0OiA4cHg7XG4gICAgICAgIHJpZ2h0OiA4cHg7XG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxNnB4KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgICAgICAgcGFkZGluZzogLjQ1cmVtIC44cmVtO1xuICAgIH1cblxuICAgIC5uYXYtYnJhbmQtaW1nLFxuICAgICNuYXZiYXIuc2Nyb2xsZWQgLm5hdi1icmFuZC1pbWcge1xuICAgICAgICAtLWxvZ28tc2NhbGU6IC45ODtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cblxuICAgIC5uYXYtbGlua3Mge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC5oYW1idXJnZXIge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cblxuICAgIC53bC1oZXJvIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICB9XG5cbiAgICAuZWF0aW5nLWdyaWQgLm51dHJpdGlvbi1jYXJkcyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gICAgfVxuXG4gICAgLmZvb3Rlci1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogMnJlbTtcbiAgICB9XG5cbiAgICAuZm9vdGVyLWJvdHRvbSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuaGVyby1jdGEge1xuICAgICAgICBnYXA6IC43NXJlbTtcbiAgICB9XG5cbiAgICAuZml0bmVzcy1iYW5uZXItb3ZlcmxheSB7XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICB9XG5cbiAgICAjaG9tZSB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDYyMHB4O1xuICAgICAgICBwYWRkaW5nLXRvcDogY2FsYyh2YXIoLS1uYXYtaCkgKyB2YXIoLS1uYXYtb2Zmc2V0KSArIC42NXJlbSk7XG4gICAgfVxuXG4gICAgLnBhZ2UtaGVybyB7XG4gICAgICAgIHBhZGRpbmc6IGNhbGModmFyKC0tbmF2LWgpICsgMnJlbSkgMCAxLjhyZW07XG4gICAgfVxuXG4gICAgLm1vYmlsZS1uYXYgYSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4gICAgLm51dHJpdGlvbi1jYXJkcyB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLm5ld3NsZXR0ZXItZm9ybSB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuXG4gICAgLm5ld3NsZXR0ZXItZm9ybSBpbnB1dCB7XG4gICAgICAgIG1pbi13aWR0aDogdW5zZXQ7XG4gICAgfVxuXG4gICAgLmhlcm8tY3RhIC5idG4ge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLndsLWhlcm8ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmJsb2ctcHJldmlldy1ncmlkIHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLmhlcm8tY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDEuN3JlbSAxcmVtO1xuICAgIH1cblxuICAgIC5wYWdlLW1haW4ge1xuICAgICAgICBwYWRkaW5nLXRvcDogMS4zcmVtO1xuICAgIH1cbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQkxPRyBFWFBFUklFTkNFIChBRFZBTkNFRClcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmJsb2ctcGFnZS1tYWluIHtcbiAgcGFkZGluZzogY2xhbXAoMnJlbSwgNHZ3LCA0cmVtKSAwIGNsYW1wKDNyZW0sIDZ2dywgNnJlbSk7XG59XG5cbi5ibG9nLWhlcm8ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1pbi1oZWlnaHQ6IDQydmg7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHBsYWNlLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDI0cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbjogMS4yNXJlbSBhdXRvIDA7XG4gIGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG4uYmxvZy1oZXJvOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0OiAwO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCByZ2JhKDUsIDIwLCAxNywgMC43NSksIHJnYmEoNywgNDAsIDMyLCAwLjQ1KSk7XG59XG4uYmxvZy1oZXJvLWNvbnRlbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1heC13aWR0aDogODIwcHg7XG4gIHBhZGRpbmc6IDJyZW07XG59XG4uYmxvZy1oZXJvLWNvbnRlbnQgaDEge1xuICBmb250LXNpemU6IGNsYW1wKDJyZW0sIDV2dywgMy41cmVtKTtcbiAgbGluZS1oZWlnaHQ6IDEuMTtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cbi5ibG9nLWhlcm8tY29udGVudCBwIHtcbiAgb3BhY2l0eTogMC45NTtcbn1cblxuLmJsb2ctb3ZlcnZpZXcge1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCBtaW5tYXgoMCwgMWZyKSk7XG4gICAgZ2FwOiAuODVyZW07XG59XG5cbi5ibG9nLW92ZXJ2aWV3LXBpbGwge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNsci13aGl0ZSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NiwgMTI1LCA5MSwgLjE0KTtcbiAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICAgIHBhZGRpbmc6IC44NXJlbSAxcmVtO1xuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogLjFyZW07XG59XG5cbi5ibG9nLW92ZXJ2aWV3LXBpbGwgc3Ryb25nIHtcbiAgICBmb250LXNpemU6IDEuNDVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5KTtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZmYtc2VyaWYpO1xufVxuXG4uYmxvZy1vdmVydmlldy1waWxsIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogLjgycmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jbHItZ3JheS01MDApO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5ibG9nLWNhdGVnb3J5LXN0cmlwIHtcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNsci1zdXJmYWNlLWFsdCksIHZhcigtLWNsci1zdXJmYWNlKSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg0NiwgMTI1LCA5MSwgLjEyKTtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIHBhZGRpbmc6IDFyZW07XG59XG5cbi5ibG9nLWNhdGVnb3J5LXN0cmlwIGgzIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZmYtc2Fucyk7XG4gICAgZm9udC1zaXplOiAuOTJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMDhlbTtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnktZGFyayk7XG4gICAgbWFyZ2luLWJvdHRvbTogLjdyZW07XG59XG5cbi5jYXRlZ29yeS1jaGlwLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiAuNXJlbTtcbn1cblxuLmNhdGVnb3J5LWNoaXAge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1waWxsKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jbHItd2hpdGUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNDYsIDEyNSwgOTEsIC4xOCk7XG4gICAgY29sb3I6IHZhcigtLWNsci1wcmltYXJ5KTtcbiAgICBmb250LXNpemU6IC43OXJlbTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHBhZGRpbmc6IC4zcmVtIC43cmVtO1xufVxuXG4uZmVhdHVyZWQtcG9zdC1zdHJpcCB7XG4gICAgbWFyZ2luLXRvcDogMS4xNXJlbTtcbn1cblxuLmZlYXR1cmVkLXBvc3QtY2FyZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtaW4taGVpZ2h0OiAzODBweDtcbiAgICBib3gtc2hhZG93OiAwIDI0cHggNjBweCByZ2JhKDEzLCAzNiwgMjcsIC4yKTtcbn1cblxuLmZlYXR1cmVkLXBvc3QtaW1hZ2Uge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG59XG5cbi5mZWF0dXJlZC1wb3N0LW92ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldDogMDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCByZ2JhKDExLCAyOCwgMjAsIC44NSkgMCUsIHJnYmEoMTEsIDI4LCAyMCwgLjQyKSA2NSUsIHJnYmEoMTEsIDI4LCAyMCwgLjI1KSAxMDAlKTtcbn1cblxuLmZlYXR1cmVkLXBvc3QtY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDE7XG4gICAgY29sb3I6IHZhcigtLWNsci13aGl0ZSk7XG4gICAgbWF4LXdpZHRoOiA2NTBweDtcbiAgICBwYWRkaW5nOiBjbGFtcCgxLjJyZW0sIDN2dywgMi4ycmVtKTtcbn1cblxuLmZlYXR1cmVkLXBvc3QtY29udGVudCBoMiB7XG4gICAgY29sb3I6IHZhcigtLWNsci13aGl0ZSk7XG4gICAgbWFyZ2luOiAuMjVyZW0gMCAuN3JlbTtcbn1cblxuLmZlYXR1cmVkLXBvc3QtY29udGVudCBwIHtcbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1KTtcbiAgICBtYXJnaW4tYm90dG9tOiAuOTVyZW07XG59XG5cbi5ibG9nLW1ldGEtcm93LS1saWdodCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgLjg0KTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uYmxvZy1zZWN0aW9uLWhlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS42cmVtO1xufVxuXG4uYmxvZy1saXN0aW5nLWdyaWQge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKTtcbiAgZ2FwOiAxLjI1cmVtO1xufVxuXG4uYmxvZy1jYXJkIHtcbiAgZ3JpZC1jb2x1bW46IHNwYW4gNDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjc1KTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KTtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyBlYXNlLCBib3gtc2hhZG93IDAuMjVzIGVhc2U7XG59XG4uYmxvZy1jYXJkOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xuICBib3gtc2hhZG93OiAwIDE2cHggNDBweCByZ2JhKDEwLCA0MCwgMzIsIDAuMTgpO1xufVxuLmJsb2ctY2FyZC1jb3ZlciB7XG4gIGFzcGVjdC1yYXRpbzogMTYvOTtcbiAgd2lkdGg6IDEwMCU7XG4gIG9iamVjdC1maXQ6IGNvdmVyO1xufVxuLmJsb2ctY2FyZC1ib2R5IHtcbiAgcGFkZGluZzogMXJlbSAxcmVtIDEuMXJlbTtcbn1cblxuLmJsb2ctY2FyZCBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAuOXJlbTtcbn1cbi5ibG9nLWNhcmQgaDIge1xuICBtYXJnaW46IDAuNHJlbSAwIDAuNnJlbTtcbiAgZm9udC1zaXplOiAxLjE1cmVtO1xuICBsaW5lLWhlaWdodDogMS4zNTtcbn1cbi5ibG9nLWNhcmQgaDIgYSB7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LWRhcmssICMxNzIzMWYpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uYmxvZy1jYXJkIGgyIGE6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tcHJpbWFyeSwgIzFiN2Y2Myk7XG59XG5cbi5ibG9nLWNhcmQtY3RhLXJvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBnYXA6IC43NXJlbTtcbn1cblxuLmJsb2ctcmVhZC10aW1lIHtcbiAgICBmb250LXNpemU6IC44cmVtO1xuICAgIGNvbG9yOiB2YXIoLS1jbHItZ3JheS01MDApO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5ibG9nLW1ldGEtcm93IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IDAuNXJlbTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xuICBjb2xvcjogIzRkNWQ1Njtcbn1cbi5ibG9nLXRhZyB7XG4gIGJhY2tncm91bmQ6ICNlY2Y3ZjI7XG4gIGNvbG9yOiAjMTU2MzRlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2RlYWRkO1xuICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgcGFkZGluZzogMC4ycmVtIDAuNnJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmFydGljbGUtc2hlbGwge1xuICBtYXgtd2lkdGg6IDg2MHB4O1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmFydGljbGUtYnJlYWRjcnVtYiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IC40NXJlbTtcbiAgICBtYXJnaW46IC42cmVtIDAgLjlyZW07XG4gICAgY29sb3I6IHZhcigtLWNsci1ncmF5LTUwMCk7XG4gICAgZm9udC1zaXplOiAuODJyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmFydGljbGUtYnJlYWRjcnVtYiBhIHtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnkpO1xufVxuLmFydGljbGUtbWV0YSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZ2FwOiAwLjc1cmVtO1xuICBtYXJnaW46IDAuNzVyZW0gMCAxLjI1cmVtO1xuICBjb2xvcjogIzRiNWQ1NTtcbiAgZm9udC1zaXplOiAwLjkycmVtO1xufVxuLmFydGljbGUtY292ZXIge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgbWFyZ2luOiAwLjc1cmVtIDAgMS41cmVtO1xuICBib3gtc2hhZG93OiAwIDEycHggMzBweCByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbi5hcnRpY2xlLWxheW91dCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxLjdmcikgbWlubWF4KDAsIC44NWZyKTtcbiAgICBnYXA6IDEuMXJlbTtcbiAgICBhbGlnbi1pdGVtczogc3RhcnQ7XG59XG5cbi5hcnRpY2xlLW1haW4ge1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmFydGljbGUtc2lkZWJhciB7XG4gICAgcG9zaXRpb246IHN0aWNreTtcbiAgICB0b3A6IGNhbGModmFyKC0tbmF2LWgpICsgMS40cmVtKTtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogLjhyZW07XG59XG5cbi5hcnRpY2xlLXNpZGViYXItY2FyZCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY2xyLXdoaXRlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ2LCAxMjUsIDkxLCAuMTQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgcGFkZGluZzogLjg1cmVtIC45NXJlbTtcbiAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc20pO1xufVxuXG4uYXJ0aWNsZS1zaWRlYmFyLWNhcmQgaDQge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1zYW5zKTtcbiAgICBmb250LXNpemU6IC44OHJlbTtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAuMDhlbTtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnktZGFyayk7XG4gICAgbWFyZ2luLWJvdHRvbTogLjU1cmVtO1xufVxuXG4uYXJ0aWNsZS1zaWRlYmFyLWNhcmQgdWwge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiAuNDVyZW07XG59XG5cbi5hcnRpY2xlLXNpZGViYXItY2FyZCBhIHtcbiAgICBmb250LXNpemU6IC44NXJlbTtcbiAgICBjb2xvcjogdmFyKC0tY2xyLWdyYXktNzAwKTtcbn1cblxuLmFydGljbGUtc2lkZWJhci1jYXJkIGE6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jbHItcHJpbWFyeSk7XG59XG5cbi5hcnRpY2xlLXNpZGViYXItY2FyZC0tY3RhIHAge1xuICAgIGZvbnQtc2l6ZTogLjg2cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IC44cmVtO1xufVxuXG4uYXJ0aWNsZS1sZWFkLWJveCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0MGRlZywgdmFyKC0tY2xyLXN1cmZhY2UtYWx0KSwgdmFyKC0tY2xyLXN1cmZhY2UpKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDQ2LCAxMjUsIDkxLCAuMTIpO1xuICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgdmFyKC0tY2xyLXByaW1hcnkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgcGFkZGluZzogLjg1cmVtIDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLmFydGljbGUtbGVhZC1ib3ggaDMge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1zYW5zKTtcbiAgICBmb250LXNpemU6IC45MnJlbTtcbiAgICBsZXR0ZXItc3BhY2luZzogLjA2ZW07XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBjb2xvcjogdmFyKC0tY2xyLXByaW1hcnktZGFyayk7XG4gICAgbWFyZ2luLWJvdHRvbTogLjRyZW07XG59XG4uYXJ0aWNsZS1jb250ZW50IHtcbiAgZm9udC1zaXplOiAxLjA2cmVtO1xuICBsaW5lLWhlaWdodDogMS44MjtcbiAgY29sb3I6ICMxZjJiMjY7XG59XG4uYXJ0aWNsZS1jb250ZW50IGgyIHtcbiAgbWFyZ2luLXRvcDogMS43cmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjU1cmVtO1xuICBsaW5lLWhlaWdodDogMS4zO1xuICAgIHNjcm9sbC1tYXJnaW4tdG9wOiBjYWxjKHZhcigtLW5hdi1oKSArIDFyZW0pO1xufVxuLmFydGljbGUtY29udGVudCBhIHtcbiAgY29sb3I6IHZhcigtLXByaW1hcnksICMxYjdmNjMpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQgcmdiYSgyNywgMTI3LCA5OSwgMC40NSk7XG59XG4uYXJ0aWNsZS1jb250ZW50IGE6aG92ZXIge1xuICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbn1cblxuLnJlbGF0ZWQtcG9zdHMge1xuICBtYXJnaW4tdG9wOiAyLjJyZW07XG4gIHBhZGRpbmctdG9wOiAxLjFyZW07XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDIwLCA0MCwgMzUsIDAuMTUpO1xufVxuLnJlbGF0ZWQtcG9zdHMtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIG1pbm1heCgwLCAxZnIpKTtcbiAgZ2FwOiAwLjlyZW07XG59XG4ucmVsYXRlZC1wb3N0LWl0ZW0ge1xuICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIyLCA1NiwgNDYsIDAuMTUpO1xuICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICBwYWRkaW5nOiAwLjhyZW07XG4gIGJhY2tncm91bmQ6ICNmYmZkZmM7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogLjQ1cmVtO1xufVxuLnJlbGF0ZWQtcG9zdC1pdGVtIGEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiAjMTczMTI4O1xuICBmb250LXdlaWdodDogNjAwO1xufVxuXG4ucmVsYXRlZC1wb3N0LWl0ZW0gc3BhbiB7XG4gICAgZm9udC1zaXplOiAuNzhyZW07XG4gICAgY29sb3I6IHZhcigtLWNsci1ncmF5LTUwMCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmFydGljbGUtaGlnaGxpZ2h0cyB7XG4gICAgbWFyZ2luLXRvcDogMS40cmVtO1xuICAgIHBhZGRpbmc6IC45NXJlbSAxcmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTczLCAxMjgsIC4wOCk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTczLCAxMjgsIC4yKTtcbn1cblxuLmFydGljbGUtaGlnaGxpZ2h0cyB1bCB7XG4gICAgbWFyZ2luLXRvcDogLjM1cmVtO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ2FwOiAuNHJlbTtcbn1cblxuLmJsb2ctbmV3c2xldHRlci1jdGEge1xuICAgIG1hcmdpbi10b3A6IDIuMXJlbTtcbn1cblxuLmJsb2ctbmV3c2xldHRlci1ib3gge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1sZyk7XG4gICAgcGFkZGluZzogMS4zcmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyMDksIDEwMiwgLjUpO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyMDksIDEwMiwgLjIpLCByZ2JhKDI0MCwgMTY1LCAwLCAuMTgpKTtcbn1cblxuLmJsb2ctbmV3c2xldHRlci1ib3ggaDIge1xuICAgIG1hcmdpbi1ib3R0b206IC40cmVtO1xufVxuXG4uYmxvZy1uZXdzbGV0dGVyLWJveCBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAuOXJlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAuYmxvZy1jYXJkIHsgZ3JpZC1jb2x1bW46IHNwYW4gNjsgfVxuXG4gICAgLmFydGljbGUtbGF5b3V0IHtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgfVxuXG4gICAgLmFydGljbGUtc2lkZWJhciB7XG4gICAgICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gICAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmJsb2ctb3ZlcnZpZXcge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICB9XG5cbiAgICAuZmVhdHVyZWQtcG9zdC1jYXJkIHtcbiAgICAgICAgbWluLWhlaWdodDogMzIwcHg7XG4gICAgfVxuXG4gIC5ibG9nLWNhcmQgeyBncmlkLWNvbHVtbjogc3BhbiAxMjsgfVxuICAucmVsYXRlZC1wb3N0cy1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH1cbiAgLmJsb2ctaGVybyB7IG1pbi1oZWlnaHQ6IDM1dmg7IGJvcmRlci1yYWRpdXM6IDE4cHg7IH1cblxuICAgIC5ibG9nLWNhcmQtY3RhLXJvdyB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xuICAgIH1cblxuICAgIC5ibG9nLWNhcmQtY3RhLXJvdyAuYnRuIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIH1cbn0iXX0= */