/*!********************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/styles/responsive-components.css ***!
  \********************************************************************************************************************************/
/* ========================================
   COMPOSANTS RESPONSIFS SPÉCIALISÉS
   ======================================== */

/* ===== BREAKPOINTS SPÉCIFIQUES POUR APPAREILS TESTÉS ===== */

/* ===== BREAKPOINTS BOOTSTRAP STANDARDS MANQUANTS ===== */

/* Smartphones (576px et moins) */
@media (max-width: 575.98px) {
    /* Formulaires responsifs */
    .row.g-3 > [class*="col-"] {
        margin-bottom: 1rem;
    }

    /* Boutons en pleine largeur sur mobile */
    .d-flex.gap-2.flex-wrap .btn {
        flex: 1;
        min-width: 120px;
    }

    /* Cards avec moins de padding */
    .card-body {
        padding: 1rem 0.75rem;
    }

    /* Texte plus petit pour les labels */
    .form-label {
        font-size: 0.9rem;
        margin-bottom: 0.25rem;
    }

    /* Inputs plus compacts */
    .form-control, .form-select {
        padding: 0.5rem 0.75rem;
        font-size: 0.9rem;
    }

    /* Navigation responsive */
    .d-flex.justify-content-between {
        flex-direction: column;
        gap: 1rem;
    }

    .d-flex.gap-2 {
        justify-content: center !important;
    }

    /* Diagnostics DB - Styles spécifiques pour smartphones */
    .card-header .btn-group {
        flex-direction: column;
        width: 100%;
    }

    .card-header .btn-group .btn {
        border-radius: 0.375rem !important;
        margin-bottom: 0.25rem;
    }

    /* Tables en mode mobile - scroll horizontal */
    .table-responsive {
        max-height: 400px;
        overflow-y: auto;
    }

    .table-responsive .table {
        min-width: 600px; /* Force le scroll horizontal */
    }

    /* Résumé des paramètres plus compact */
    .card-body .d-flex.flex-wrap {
        flex-direction: column;
        gap: 0.5rem;
    }

    .card-body .d-flex.flex-wrap span {
        display: block;
        padding: 0.25rem 0;
        border-bottom: 1px solid #eee;
    }
}

/* Tablettes portrait (768px et moins) */
@media (max-width: 767.98px) {
    /* Réduction des marges */
    .container-fluid {
        padding: 0.5rem;
    }

    /* Formulaires en colonnes simples */
    .row.g-3 > [class*="col-xl-"],
    .row.g-3 > [class*="col-lg-"] {
        flex: 0 0 100%;
        max-width: 100%;
    }

    /* Boutons plus compacts */
    .btn-sm {
        padding: 0.25rem 0.5rem;
        font-size: 0.8rem;
    }

    /* Tables responsives */
    .table-responsive {
        font-size: 0.85rem;
        border-radius: 0.25rem;
    }

    /* Tables de diagnostics spécifiques */
    .table-responsive .table th,
    .table-responsive .table td {
        padding: 0.5rem 0.25rem;
        font-size: 0.8rem;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max-width: 150px;
    }

    .table-responsive .table th code,
    .table-responsive .table td code {
        font-size: 0.7rem;
        padding: 0.125rem 0.25rem;
    }

    /* Badges plus compacts */
    .badge {
        font-size: 0.7rem;
        padding: 0.25rem 0.5rem;
    }

    /* Headers plus compacts */
    .h3 {
        font-size: 1.5rem;
    }
}

/* Tablettes paysage (992px et moins) */
@media (max-width: 991.98px) {
    /* Sidebar collapse automatique */
    .sidebar {
        transform: translateX(-100%);
    }

    /* Contenu principal en pleine largeur */
    .main-content {
        margin-left: 0;
    }

    /* Navigation adaptée */
    .d-flex.justify-content-lg-end {
        justify-content: center !important;
    }
}

/* JioPhone 2 et appareils ultra-compacts (240x320) */
@media (max-width: 240px) {
    .container-fluid {
        padding: 0.125rem !important;
    }

    .card {
        margin: 0.125rem 0;
        border-radius: 0.25rem;
    }

    .btn {
        padding: 0.25rem 0.375rem;
        font-size: 0.7rem;
        min-width: 32px;
        min-height: 32px;
    }

    .app-logo {
        max-height: 24px !important;
    }

    .header-content {
        gap: 0.125rem !important;
        padding: 0.125rem !important;
    }

    .logo-section {
        gap: 0.125rem !important;
    }

    .nav-section {
        gap: 0.125rem !important;
    }

    /* Texte ultra-compact */
    .d-none.d-sm-inline {
        display: none !important;
    }

    .btn-theme-toggle span,
    .btn span {
        display: none !important;
    }

    /* Navigation compacte */
    .admin-sidebar {
        width: 200px !important;
    }

    .nav-link {
        padding: 0.25rem 0.5rem;
        font-size: 0.7rem;
    }
}

/* Nokia Lumia 520 Landscape et appareils 320px largeur */
@media (max-width: 320px) and (min-width: 241px) {
    .container-fluid {
        padding: 0.25rem !important;
    }

    .card {
        margin: 0.25rem 0;
        border-radius: 0.375rem;
    }

    .btn {
        padding: 0.25rem 0.5rem;
        font-size: 0.75rem;
        min-width: 36px;
        min-height: 36px;
    }

    .app-logo {
        max-height: 28px !important;
    }

    .header-content {
        gap: 0.25rem !important;
        padding: 0.25rem !important;
    }

    .logo-section {
        gap: 0.25rem !important;
    }

    .nav-section {
        gap: 0.25rem !important;
    }

    /* Texte adaptatif pour 320px */
    .text-320-compact {
        font-size: 0.75rem;
    }

    .btn-320-compact {
        padding: 0.25rem 0.375rem;
        font-size: 0.7rem;
    }
}

/* Google Pixel 4 et appareils 353px largeur */
@media (max-width: 353px) and (min-width: 321px) {
    .container-fluid {
        padding: 0.375rem !important;
    }

    .header-content {
        gap: 0.375rem !important;
    }

    .logo-section {
        gap: 0.375rem !important;
    }

    .app-logo {
        max-height: 32px !important;
    }

    .btn {
        min-width: 38px;
        min-height: 38px;
    }
}

/* Samsung Galaxy S8/S3/S5 et appareils 360px largeur */
@media (max-width: 360px) and (min-width: 354px) {
    .container-fluid {
        padding: 0.5rem !important;
    }

    .header-content {
        gap: 0.5rem !important;
    }

    .logo-section {
        gap: 0.5rem !important;
    }

    .app-logo {
        max-height: 34px !important;
    }

    .btn {
        min-width: 40px;
        min-height: 40px;
    }

    /* Optimisations spécifiques Samsung */
    .samsung-optimized {
        font-size: 0.85rem;
    }
}

/* iPhone 6/7/8/SE et appareils 375px largeur */
@media (max-width: 375px) and (min-width: 361px) {
    .container-fluid {
        padding: 0.5rem !important;
    }

    .header-content {
        gap: 0.5rem !important;
    }

    .logo-section {
        gap: 0.5rem !important;
    }

    .app-logo {
        max-height: 36px !important;
    }

    .btn {
        min-width: 42px;
        min-height: 42px;
    }

    /* Optimisations iPhone standard */
    .iphone-standard {
        font-size: 0.9rem;
    }

    .d-375-inline {
        display: inline !important;
    }

    .d-375-none {
        display: none !important;
    }
}

/* LG Optimus L70 et appareils 384px largeur */
@media (max-width: 384px) and (min-width: 376px) {
    .container-fluid {
        padding: 0.5rem !important;
    }

    .header-content {
        gap: 0.5rem !important;
    }

    .logo-section {
        gap: 0.5rem !important;
    }

    .app-logo {
        max-height: 38px !important;
    }

    .btn {
        min-width: 42px;
        min-height: 42px;
    }

    /* Optimisations Android medium */
    .android-medium {
        font-size: 0.9rem;
    }
}

/* Google Pixel 3 XL et appareils 393px largeur */
@media (max-width: 393px) and (min-width: 385px) {
    .container-fluid {
        padding: 0.5rem !important;
    }

    .header-content {
        gap: 0.5rem !important;
    }

    .logo-section {
        gap: 0.5rem !important;
    }

    .app-logo {
        max-height: 40px !important;
    }

    .btn {
        min-width: 44px;
        min-height: 44px;
    }

    /* Optimisations Pixel large */
    .pixel-large {
        font-size: 0.95rem;
    }

    .d-393-inline {
        display: inline !important;
    }
}

/* Nokia Lumia 520 Landscape (520x320) */
@media (max-width: 520px) and (min-width: 394px) and (max-height: 400px) {
    /* Mode paysage spécial */
    .header-content {
        flex-direction: row !important;
        justify-content: space-between !important;
        align-items: center !important;
        gap: 1rem !important;
    }

    .logo-section {
        flex-direction: row !important;
        gap: 0.75rem !important;
    }

    .nav-section {
        flex-direction: row !important;
        gap: 0.5rem !important;
    }

    .app-logo {
        max-height: 32px !important;
    }

    /* Optimisations landscape */
    .landscape-mode {
        height: auto !important;
        min-height: auto !important;
    }

    .main-content {
        padding: 0.5rem !important;
    }

    .admin-sidebar {
        width: 180px !important;
    }

    /* Header navbar corrections pour landscape */
    .navbar {
        padding: 0.125rem 0.25rem !important;
    }

    .navbar .container-fluid {
        gap: 0.25rem;
    }

    .navbar-brand span {
        font-size: 0.9rem;
    }

    .btn-sm {
        padding: 0.125rem 0.25rem;
        font-size: 0.75rem;
    }
}

/* Optimisations pour hauteurs spécifiques */

/* iPhone X et appareils 812px hauteur */
@media (max-height: 812px) and (min-height: 700px) {
    .main-content {
        min-height: calc(100vh - 120px);
    }

    .admin-sidebar {
        max-height: calc(100vh - 80px);
        overflow-y: auto;
    }
}

/* Samsung Galaxy S8 et appareils 740px hauteur */
@media (max-height: 740px) and (min-height: 650px) {
    .main-content {
        min-height: calc(100vh - 100px);
    }

    .card {
        margin-bottom: 0.75rem;
    }
}

/* iPhone 6/7/8 et appareils 667px hauteur */
@media (max-height: 667px) and (min-height: 600px) {
    .main-content {
        min-height: calc(100vh - 90px);
    }

    .card {
        margin-bottom: 0.5rem;
    }

    .app-header {
        padding: 0.5rem !important;
    }
}

/* Samsung Galaxy S3/S5 et appareils 640px hauteur */
@media (max-height: 640px) and (min-height: 500px) {
    .main-content {
        min-height: calc(100vh - 80px);
        padding: 0.5rem !important;
    }

    .card {
        margin-bottom: 0.5rem;
    }

    .app-header {
        padding: 0.375rem !important;
    }

    .admin-sidebar {
        max-height: calc(100vh - 60px);
    }
}

/* JioPhone 2 et appareils 320px hauteur */
@media (max-height: 320px) {
    .main-content {
        min-height: calc(100vh - 60px);
        padding: 0.25rem !important;
    }

    .card {
        margin-bottom: 0.25rem;
        padding: 0.5rem;
    }

    .app-header {
        padding: 0.25rem !important;
    }

    .admin-sidebar {
        max-height: calc(100vh - 40px);
        width: 160px !important;
    }

    .nav-link {
        padding: 0.125rem 0.25rem;
        font-size: 0.65rem;
    }
}

/* Corrections spécifiques pour largeur 320px et moins */
@media (max-width: 320px) {
    .navbar {
        padding: 0.125rem 0.25rem !important;
        min-height: 50px;
    }

    .navbar .container-fluid {
        gap: 0.25rem;
        flex-wrap: nowrap;
    }

    .navbar-brand {
        font-size: 1rem;
        max-width: 120px;
        display: flex;
        align-items: center;
        gap: 0.25rem;
    }

    .navbar-brand img {
        max-height: 24px !important;
        max-width: 32px !important;
        flex-shrink: 0;
    }

    .navbar-brand span {
        font-size: 0.8rem;
        line-height: 1.2;
    }

    .navbar-nav {
        gap: 0.25rem;
        align-items: center;
    }

    .btn-sm {
        padding: 0.25rem 0.375rem;
        font-size: 0.7rem;
        min-width: 36px;
        min-height: 36px;
        display: flex;
        align-items: center;
        justify-content: center;
        line-height: 1;
    }

    .btn-sm i {
        font-size: 0.8rem;
        line-height: 1;
    }

    .dropdown-toggle::after {
        margin-left: 0.25rem;
        font-size: 0.6rem;
    }

    .nav-link {
        padding: 0.25rem 0.375rem;
        font-size: 0.7rem;
        display: flex;
        align-items: center;
        line-height: 1;
    }

    .nav-link i {
        font-size: 0.8rem;
        margin-right: 0.25rem;
        line-height: 1;
    }

    /* Masquer le texte sur très petits écrans */
    .d-none.d-sm-inline {
        display: none !important;
    }

    .d-none.d-md-inline {
        display: none !important;
    }
}

/* Corrections pour très petites largeurs (240px-320px) */
@media (max-width: 320px) and (min-width: 240px) {
    .navbar-brand {
        max-width: 100px;
    }

    .navbar-brand span.fw-bold {
        font-size: 0.75rem;
    }

    .sidebar-toggle {
        padding: 0.125rem 0.25rem;
        font-size: 0.7rem;
    }

    .btn-outline-secondary,
    .btn-outline-primary,
    .btn-primary {
        padding: 0.125rem 0.25rem;
        font-size: 0.65rem;
        border-width: 1px;
    }

    /* Forcer l'alignement horizontal */
    .navbar .container-fluid {
        justify-content: space-between;
        align-items: center;
        flex-direction: row;
        flex-wrap: nowrap;
    }

    .navbar-nav.d-flex.flex-row {
        flex-direction: row !important;
        align-items: center !important;
        justify-content: flex-end !important;
    }

    /* Amélioration de l'affichage des icônes et texte */
    .navbar-nav .nav-item {
        display: flex;
        align-items: center;
    }

    .navbar-nav .btn {
        display: flex;
        align-items: center;
        justify-content: center;
        line-height: 1;
    }

    .navbar-nav .btn i {
        font-size: 0.7rem;
        line-height: 1;
    }

    .nav-link {
        display: flex;
        align-items: center;
        line-height: 1;
        padding: 0.25rem 0.375rem !important;
    }

    .nav-link i {
        font-size: 0.7rem;
        margin-right: 0.125rem;
    }

    /* Dropdown menu amélioré */
    .dropdown-toggle {
        display: flex;
        align-items: center;
        gap: 0.125rem;
    }

    .dropdown-toggle::after {
        margin-left: 0.125rem;
        font-size: 0.6rem;
    }
}

/* Corrections pour résolutions moyennes (321px-576px) */
@media (min-width: 321px) and (max-width: 576px) {
    .navbar {
        padding: 0.25rem 0.5rem !important;
    }

    .navbar .container-fluid {
        gap: 0.5rem;
    }

    .navbar-brand {
        display: flex;
        align-items: center;
        gap: 0.375rem;
    }

    .navbar-brand img {
        max-height: 28px !important;
        max-width: 36px !important;
    }

    .navbar-brand span {
        font-size: 0.9rem;
        line-height: 1.2;
    }

    .btn-sm {
        padding: 0.25rem 0.5rem;
        font-size: 0.75rem;
        min-height: 32px;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 0.25rem;
    }

    .btn-sm i {
        font-size: 0.8rem;
        line-height: 1;
    }

    .nav-link {
        padding: 0.25rem 0.5rem;
        font-size: 0.75rem;
        display: flex;
        align-items: center;
        gap: 0.25rem;
    }

    .nav-link i {
        font-size: 0.8rem;
        line-height: 1;
    }

    .dropdown-toggle {
        gap: 0.25rem;
    }
}

/* Corrections pour la visibilité des icônes et thème */
.navbar-nav .btn,
.navbar-nav .nav-link {
    color: inherit !important;
}

.navbar-nav .btn i,
.navbar-nav .nav-link i {
    color: inherit !important;
    opacity: 1 !important;
}

/* Variables CSS tenant */
:root {
    --primary-color: var(--bs-primary, #007bff);
    --secondary-color: var(--bs-secondary, #6c757d);
    --success-color: var(--bs-success, #28a745);
    --warning-color: var(--bs-warning, #ffc107);
    --danger-color: var(--bs-danger, #dc3545);
}

/* Boutons utilisant les variables tenant */
.btn-custom-primary {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    color: white;
}

.btn-custom-primary:hover {
    background-color: var(--primary-color);
    filter: brightness(0.9);
}

/* Mode clair - icônes visibles */
body:not(.theme-dark) .navbar-nav .btn,
body:not(.theme-dark) .navbar-nav .nav-link {
    color: #495057 !important;
}

body:not(.theme-dark) .navbar-nav .btn i,
body:not(.theme-dark) .navbar-nav .nav-link i {
    color: #495057 !important;
}

body:not(.theme-dark) .btn-outline-secondary {
    border-color: #6c757d !important;
    color: #6c757d !important;
}

body:not(.theme-dark) .btn-outline-primary {
    border-color: #0d6efd !important;
    color: #0d6efd !important;
}

body:not(.theme-dark) .btn-primary {
    background-color: #0d6efd !important;
    border-color: #0d6efd !important;
    color: #ffffff !important;
}

/* Mode sombre - icônes visibles */
body.theme-dark .navbar-nav .btn,
body.theme-dark .navbar-nav .nav-link {
    color: #e9ecef !important;
}

body.theme-dark .navbar-nav .btn i,
body.theme-dark .navbar-nav .nav-link i {
    color: #e9ecef !important;
}

body.theme-dark .btn-outline-secondary {
    border-color: #adb5bd !important;
    color: #adb5bd !important;
}

body.theme-dark .btn-outline-primary {
    border-color: #6ea8fe !important;
    color: #6ea8fe !important;
}

body.theme-dark .btn-primary {
    background-color: #0d6efd !important;
    border-color: #0d6efd !important;
    color: #ffffff !important;
}

/* Navigation d'authentification responsive */
.auth-nav-btn {
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
}

/* Très petits écrans (JioPhone 2, etc.) */
@media (max-width: 239.98px) {
    .auth-nav-btn {
        padding: 0.25rem;
        font-size: 0.75rem;
        min-width: 36px;
        min-height: 36px;
    }
}

/* Petits écrans (iPhone 4, Nokia Lumia) */
@media (min-width: 240px) and (max-width: 319.98px) {
    .auth-nav-btn {
        padding: 0.375rem;
        font-size: 0.8rem;
        min-width: 40px;
        min-height: 40px;
    }
}

/* Écrans moyens-petits (iPhone 5/SE, Galaxy S9+) */
@media (min-width: 320px) and (max-width: 359.98px) {
    .auth-nav-btn {
        padding: 0.4rem;
        font-size: 0.85rem;
    }
}

/* Écrans Galaxy standard (S21, S3/S5, S8) */
@media (min-width: 360px) and (max-width: 374.98px) {
    .auth-nav-btn {
        padding: 0.45rem;
        font-size: 0.875rem;
    }
}

/* iPhone 6/7/8/SE, iPhone X */
@media (min-width: 375px) and (max-width: 575.98px) {
    .auth-nav-btn .d-none.d-sm-inline {
        display: none !important;
    }

    .auth-nav-btn {
        padding: 0.5rem;
        font-size: 0.875rem;
    }
}

/* Header responsive avec logo */
.app-header {
    position: sticky;
    top: 0;
    z-index: 1020;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

.header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: nowrap;
    gap: 1rem;
    min-height: 60px;
}

/* Corrections spécifiques pour le header navbar */
.navbar {
    padding: 0.25rem 0.5rem !important;
}

.navbar .container-fluid {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.5rem;
}

.navbar-brand {
    flex-shrink: 0;
    max-width: none;
    margin-right: auto;
}

.navbar-nav {
    flex-direction: row !important;
    align-items: center;
    gap: 0.25rem;
    flex-shrink: 0;
}

.navbar-nav .nav-item {
    margin: 0;
}

.navbar-toggler {
    order: 3;
    margin-left: 0.5rem;
}

@media (max-width: 767.98px) {
    .header-content {
        flex-direction: column;
        text-align: center;
        gap: 0.5rem;
        min-height: auto;
        padding: 0.5rem 0;
    }
}

.logo-section {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-shrink: 0;
}

@media (max-width: 575.98px) {
    .logo-section {
        flex-direction: column;
        gap: 0.5rem;
    }
}

.app-logo {
    height: 50px;
    width: auto;
    object-fit: contain;
    transition: height 0.3s ease;
}

@media (max-width: 767.98px) {
    .app-logo {
        height: 40px;
    }
}

@media (max-width: 575.98px) {
    .app-logo {
        height: 35px;
    }
}

/* Dashboard cards responsives */
.dashboard-grid {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

@media (max-width: 575.98px) {
    .dashboard-grid {
        grid-template-columns: 1fr;
        gap: 1rem;
    }
}

.dashboard-card {
    background: var(--bs-body-bg);
    border-radius: 0.75rem;
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    border: 1px solid var(--bs-border-color);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    overflow: hidden;
}

.dashboard-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}

@media (max-width: 575.98px) {
    .dashboard-card:hover {
        transform: none; /* Désactive l'effet hover sur mobile */
    }
}

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

@media (max-width: 575.98px) {
    .dashboard-card-body {
        padding: 1rem;
    }
}

/* Métriques responsives */
.metric-card {
    text-align: center;
    padding: 1.5rem;
    border-radius: 0.5rem;
    background: linear-gradient(135deg, var(--bs-primary) 0%, var(--bs-info) 100%);
    color: white;
    position: relative;
    overflow: hidden;
}

.metric-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(255, 255, 255, 0.1);
    opacity: 0;
    transition: opacity 0.3s ease;
}

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

@media (max-width: 575.98px) {
    .metric-card {
        padding: 1rem;
    }
    
    .metric-card:hover::before {
        opacity: 0; /* Désactive l'effet hover sur mobile */
    }
}

.metric-value {
    font-size: 2.5rem;
    font-weight: 700;
    line-height: 1;
    margin-bottom: 0.5rem;
}

@media (max-width: 767.98px) {
    .metric-value {
        font-size: 2rem;
    }
}

@media (max-width: 575.98px) {
    .metric-value {
        font-size: 1.75rem;
    }
}

.metric-label {
    font-size: 0.875rem;
    opacity: 0.9;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Tableaux responsifs avancés */
.table-container {
    background: var(--bs-body-bg);
    border-radius: 0.5rem;
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    overflow: hidden;
}

.table-responsive {
    border-radius: inherit;
}

@media (max-width: 767.98px) {
    .table-responsive {
        font-size: 0.875rem;
    }
    
    .table th,
    .table td {
        padding: 0.5rem 0.25rem;
        vertical-align: middle;
    }
    
    /* Masquer certaines colonnes sur mobile */
    .table .d-none.d-md-table-cell {
        display: none !important;
    }
}

/* Formulaires responsifs avancés */
.form-floating {
    position: relative;
}

.form-floating > .form-control,
.form-floating > .form-select {
    height: calc(3.5rem + 2px);
    padding: 1rem 0.75rem;
}

@media (max-width: 575.98px) {
    .form-floating > .form-control,
    .form-floating > .form-select {
        height: calc(3rem + 2px);
        padding: 0.75rem 0.5rem;
        font-size: 16px; /* Évite le zoom sur iOS */
    }
}

/* Sidebar responsive avancée */
.sidebar {
    width: 280px;
    background: var(--bs-body-bg);
    border-right: 1px solid var(--bs-border-color);
    transition: transform 0.3s ease-in-out;
}

.sidebar-content {
    padding: 1rem;
    height: 100%;
    overflow-y: auto;
}

.sidebar-menu .nav-link {
    color: var(--bs-body-color);
    padding: 0.75rem 1rem;
    border-radius: 0.375rem;
    margin-bottom: 0.25rem;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
}

.sidebar-menu .nav-link:hover {
    background-color: var(--bs-secondary-bg);
    color: var(--bs-primary);
}

.sidebar-menu .nav-link.active {
    background-color: var(--bs-primary);
    color: white;
}

.sidebar-heading {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.sidebar-toggle {
    display: none;
    background: var(--bs-primary);
    color: white;
    border: none;
    border-radius: 0.375rem;
    padding: 0.5rem;
    box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1);
    transition: all 0.2s ease;
}

.sidebar-toggle:hover {
    background: var(--bs-primary);
    transform: translateY(-1px);
    box-shadow: 0 0.375rem 0.75rem rgba(0, 0, 0, 0.15);
}

@media (max-width: 991.98px) {
    .sidebar-toggle {
        display: block;
    }
}

/* Optimisations mobile pour la sidebar */
@media (max-width: 575.98px) {
    .sidebar-menu .nav-link {
        padding: 0.5rem 0.75rem;
        font-size: 0.875rem;
    }

    .sidebar-heading {
        font-size: 0.7rem;
        padding: 0 0.75rem;
    }

    .offcanvas {
        width: 85vw !important;
        max-width: 280px;
    }
}

@media (min-width: 240px) and (max-width: 319.98px) {
    .sidebar-menu .nav-link {
        padding: 0.4rem 0.6rem;
        font-size: 0.8rem;
    }

    .sidebar-heading {
        font-size: 0.65rem;
        padding: 0 0.6rem;
    }

    .offcanvas {
        width: 90vw !important;
        max-width: 240px;
    }
}

/* Breadcrumb responsive */
.breadcrumb {
    background: transparent;
    padding: 0;
    margin-bottom: 1rem;
    font-size: 0.875rem;
}

@media (max-width: 575.98px) {
    .breadcrumb {
        font-size: 0.75rem;
        flex-wrap: wrap;
    }
    
    .breadcrumb-item {
        max-width: 150px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
}

/* Pagination responsive */
.pagination {
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.25rem;
}

@media (max-width: 575.98px) {
    .pagination .page-item:not(.active):not(.disabled) {
        display: none;
    }
    
    .pagination .page-item.active,
    .pagination .page-item.disabled,
    .pagination .page-item:first-child,
    .pagination .page-item:last-child {
        display: block;
    }
}

/* Tooltips et popovers responsifs */
@media (max-width: 767.98px) {
    .tooltip,
    .popover {
        font-size: 0.75rem;
    }
}

/* Offcanvas responsive */
@media (max-width: 575.98px) {
    .offcanvas {
        width: 90vw !important;
        max-width: 320px;
    }
}

/* Accordéons responsifs */
.accordion-button {
    padding: 1rem 1.25rem;
    font-size: 1rem;
}

@media (max-width: 575.98px) {
    .accordion-button {
        padding: 0.75rem 1rem;
        font-size: 0.875rem;
    }
}

/* Badges responsifs */
.badge {
    font-size: 0.75em;
    padding: 0.35em 0.65em;
}

@media (max-width: 575.98px) {
    .badge {
        font-size: 0.65em;
        padding: 0.25em 0.5em;
    }
}

/* Carousels responsifs */
.carousel-item img {
    width: 100%;
    height: auto;
    object-fit: cover;
}

@media (max-width: 767.98px) {
    .carousel-caption {
        padding: 1rem;
        font-size: 0.875rem;
    }
    
    .carousel-caption h5 {
        font-size: 1rem;
    }
}

/* Progress bars responsives */
.progress {
    height: 1rem;
    border-radius: 0.5rem;
}

@media (max-width: 575.98px) {
    .progress {
        height: 0.75rem;
    }
}

/* Spinners responsifs */
.spinner-border,
.spinner-grow {
    width: 2rem;
    height: 2rem;
}

@media (max-width: 575.98px) {
    .spinner-border,
    .spinner-grow {
        width: 1.5rem;
        height: 1.5rem;
    }
}

/* ========================================
   ZONES DE TOUCH OPTIMISÉES PAR BREAKPOINT
   ======================================== */

/* Très petits écrans - zones de touch réduites mais utilisables */
@media (max-width: 239.98px) {
    .btn,
    .form-control,
    .form-select {
        min-height: 36px;
        min-width: 36px;
        font-size: 0.75rem;
        padding: 0.25rem 0.5rem;
    }

    .nav-link {
        padding: 0.5rem 0.75rem;
        font-size: 0.75rem;
    }

    .card-body {
        padding: 0.75rem;
    }

    .modal-dialog {
        margin: 0.25rem;
    }
}

/* Petits écrans - zones de touch intermédiaires */
@media (min-width: 240px) and (max-width: 319.98px) {
    .btn,
    .form-control,
    .form-select {
        min-height: 40px;
        min-width: 40px;
        font-size: 0.8rem;
        padding: 0.3rem 0.6rem;
    }

    .nav-link {
        padding: 0.6rem 0.8rem;
        font-size: 0.8rem;
    }

    .card-body {
        padding: 0.875rem;
    }
}

/* Écrans moyens-petits - zones de touch standard */
@media (min-width: 320px) and (max-width: 374.98px) {
    .btn,
    .form-control,
    .form-select {
        min-height: 42px;
        min-width: 42px;
        font-size: 0.85rem;
        padding: 0.35rem 0.7rem;
    }

    .nav-link {
        padding: 0.65rem 0.9rem;
        font-size: 0.85rem;
    }

    .card-body {
        padding: 1rem;
    }
}

/* Écrans mobiles standard et plus grands */
@media (min-width: 375px) and (max-width: 767.98px) {
    .btn,
    .form-control,
    .form-select {
        min-height: 44px;
        min-width: 44px;
    }

    .nav-link {
        padding: 0.75rem 1rem;
    }
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBRUEsMkNBQTJDO0FBQzNDO0lBQ0k7OztRQUdJLGdCQUFnQjtRQUNoQixlQUFlO0lBQ25COztJQUVBO1FBQ0kscUJBQXFCO0lBQ3pCO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3R5bGVzL3Jlc3BvbnNpdmUtY29tcG9uZW50cy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQ09NUE9TQU5UUyBSRVNQT05TSUZTIFNQw4lDSUFMSVPDiVNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyogPT09PT0gQlJFQUtQT0lOVFMgU1DDiUNJRklRVUVTIFBPVVIgQVBQQVJFSUxTIFRFU1TDiVMgPT09PT0gKi9cblxuLyogPT09PT0gQlJFQUtQT0lOVFMgQk9PVFNUUkFQIFNUQU5EQVJEUyBNQU5RVUFOVFMgPT09PT0gKi9cblxuLyogU21hcnRwaG9uZXMgKDU3NnB4IGV0IG1vaW5zKSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gICAgLyogRm9ybXVsYWlyZXMgcmVzcG9uc2lmcyAqL1xuICAgIC5yb3cuZy0zID4gW2NsYXNzKj1cImNvbC1cIl0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIH1cblxuICAgIC8qIEJvdXRvbnMgZW4gcGxlaW5lIGxhcmdldXIgc3VyIG1vYmlsZSAqL1xuICAgIC5kLWZsZXguZ2FwLTIuZmxleC13cmFwIC5idG4ge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDEyMHB4O1xuICAgIH1cblxuICAgIC8qIENhcmRzIGF2ZWMgbW9pbnMgZGUgcGFkZGluZyAqL1xuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxcmVtIDAuNzVyZW07XG4gICAgfVxuXG4gICAgLyogVGV4dGUgcGx1cyBwZXRpdCBwb3VyIGxlcyBsYWJlbHMgKi9cbiAgICAuZm9ybS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICAgIH1cblxuICAgIC8qIElucHV0cyBwbHVzIGNvbXBhY3RzICovXG4gICAgLmZvcm0tY29udHJvbCwgLmZvcm0tc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIH1cblxuICAgIC8qIE5hdmlnYXRpb24gcmVzcG9uc2l2ZSAqL1xuICAgIC5kLWZsZXguanVzdGlmeS1jb250ZW50LWJldHdlZW4ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgfVxuXG4gICAgLmQtZmxleC5nYXAtMiB7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLyogRGlhZ25vc3RpY3MgREIgLSBTdHlsZXMgc3DDqWNpZmlxdWVzIHBvdXIgc21hcnRwaG9uZXMgKi9cbiAgICAuY2FyZC1oZWFkZXIgLmJ0bi1ncm91cCB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5jYXJkLWhlYWRlciAuYnRuLWdyb3VwIC5idG4ge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbSAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICAgIH1cblxuICAgIC8qIFRhYmxlcyBlbiBtb2RlIG1vYmlsZSAtIHNjcm9sbCBob3Jpem9udGFsICovXG4gICAgLnRhYmxlLXJlc3BvbnNpdmUge1xuICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAudGFibGUtcmVzcG9uc2l2ZSAudGFibGUge1xuICAgICAgICBtaW4td2lkdGg6IDYwMHB4OyAvKiBGb3JjZSBsZSBzY3JvbGwgaG9yaXpvbnRhbCAqL1xuICAgIH1cblxuICAgIC8qIFLDqXN1bcOpIGRlcyBwYXJhbcOodHJlcyBwbHVzIGNvbXBhY3QgKi9cbiAgICAuY2FyZC1ib2R5IC5kLWZsZXguZmxleC13cmFwIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSAuZC1mbGV4LmZsZXgtd3JhcCBzcGFuIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG4gICAgfVxufVxuXG4vKiBUYWJsZXR0ZXMgcG9ydHJhaXQgKDc2OHB4IGV0IG1vaW5zKSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLyogUsOpZHVjdGlvbiBkZXMgbWFyZ2VzICovXG4gICAgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICB9XG5cbiAgICAvKiBGb3JtdWxhaXJlcyBlbiBjb2xvbm5lcyBzaW1wbGVzICovXG4gICAgLnJvdy5nLTMgPiBbY2xhc3MqPVwiY29sLXhsLVwiXSxcbiAgICAucm93LmctMyA+IFtjbGFzcyo9XCJjb2wtbGctXCJdIHtcbiAgICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvKiBCb3V0b25zIHBsdXMgY29tcGFjdHMgKi9cbiAgICAuYnRuLXNtIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgIH1cblxuICAgIC8qIFRhYmxlcyByZXNwb25zaXZlcyAqL1xuICAgIC50YWJsZS1yZXNwb25zaXZlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjI1cmVtO1xuICAgIH1cblxuICAgIC8qIFRhYmxlcyBkZSBkaWFnbm9zdGljcyBzcMOpY2lmaXF1ZXMgKi9cbiAgICAudGFibGUtcmVzcG9uc2l2ZSAudGFibGUgdGgsXG4gICAgLnRhYmxlLXJlc3BvbnNpdmUgLnRhYmxlIHRkIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuMjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgbWF4LXdpZHRoOiAxNTBweDtcbiAgICB9XG5cbiAgICAudGFibGUtcmVzcG9uc2l2ZSAudGFibGUgdGggY29kZSxcbiAgICAudGFibGUtcmVzcG9uc2l2ZSAudGFibGUgdGQgY29kZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjI1cmVtO1xuICAgIH1cblxuICAgIC8qIEJhZGdlcyBwbHVzIGNvbXBhY3RzICovXG4gICAgLmJhZGdlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICAgIH1cblxuICAgIC8qIEhlYWRlcnMgcGx1cyBjb21wYWN0cyAqL1xuICAgIC5oMyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIH1cbn1cblxuLyogVGFibGV0dGVzIHBheXNhZ2UgKDk5MnB4IGV0IG1vaW5zKSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7XG4gICAgLyogU2lkZWJhciBjb2xsYXBzZSBhdXRvbWF0aXF1ZSAqL1xuICAgIC5zaWRlYmFyIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICB9XG5cbiAgICAvKiBDb250ZW51IHByaW5jaXBhbCBlbiBwbGVpbmUgbGFyZ2V1ciAqL1xuICAgIC5tYWluLWNvbnRlbnQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAvKiBOYXZpZ2F0aW9uIGFkYXB0w6llICovXG4gICAgLmQtZmxleC5qdXN0aWZ5LWNvbnRlbnQtbGctZW5kIHtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8qIEppb1Bob25lIDIgZXQgYXBwYXJlaWxzIHVsdHJhLWNvbXBhY3RzICgyNDB4MzIwKSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDI0MHB4KSB7XG4gICAgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQge1xuICAgICAgICBtYXJnaW46IDAuMTI1cmVtIDA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC4zNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDMycHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDMycHg7XG4gICAgfVxuXG4gICAgLmFwcC1sb2dvIHtcbiAgICAgICAgbWF4LWhlaWdodDogMjRweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5oZWFkZXItY29udGVudCB7XG4gICAgICAgIGdhcDogMC4xMjVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMC4xMjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAubG9nby1zZWN0aW9uIHtcbiAgICAgICAgZ2FwOiAwLjEyNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5uYXYtc2VjdGlvbiB7XG4gICAgICAgIGdhcDogMC4xMjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvKiBUZXh0ZSB1bHRyYS1jb21wYWN0ICovXG4gICAgLmQtbm9uZS5kLXNtLWlubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYnRuLXRoZW1lLXRvZ2dsZSBzcGFuLFxuICAgIC5idG4gc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAvKiBOYXZpZ2F0aW9uIGNvbXBhY3RlICovXG4gICAgLmFkbWluLXNpZGViYXIge1xuICAgICAgICB3aWR0aDogMjAwcHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgfVxufVxuXG4vKiBOb2tpYSBMdW1pYSA1MjAgTGFuZHNjYXBlIGV0IGFwcGFyZWlscyAzMjBweCBsYXJnZXVyICovXG5AbWVkaWEgKG1heC13aWR0aDogMzIwcHgpIGFuZCAobWluLXdpZHRoOiAyNDFweCkge1xuICAgIC5jb250YWluZXItZmx1aWQge1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQge1xuICAgICAgICBtYXJnaW46IDAuMjVyZW0gMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4zNzVyZW07XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIG1pbi13aWR0aDogMzZweDtcbiAgICAgICAgbWluLWhlaWdodDogMzZweDtcbiAgICB9XG5cbiAgICAuYXBwLWxvZ28ge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmhlYWRlci1jb250ZW50IHtcbiAgICAgICAgZ2FwOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAubG9nby1zZWN0aW9uIHtcbiAgICAgICAgZ2FwOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLm5hdi1zZWN0aW9uIHtcbiAgICAgICAgZ2FwOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLyogVGV4dGUgYWRhcHRhdGlmIHBvdXIgMzIwcHggKi9cbiAgICAudGV4dC0zMjAtY29tcGFjdCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICB9XG5cbiAgICAuYnRuLTMyMC1jb21wYWN0IHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjM3NXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgfVxufVxuXG4vKiBHb29nbGUgUGl4ZWwgNCBldCBhcHBhcmVpbHMgMzUzcHggbGFyZ2V1ciAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDM1M3B4KSBhbmQgKG1pbi13aWR0aDogMzIxcHgpIHtcbiAgICAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuaGVhZGVyLWNvbnRlbnQge1xuICAgICAgICBnYXA6IDAuMzc1cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmxvZ28tc2VjdGlvbiB7XG4gICAgICAgIGdhcDogMC4zNzVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYXBwLWxvZ28ge1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmJ0biB7XG4gICAgICAgIG1pbi13aWR0aDogMzhweDtcbiAgICAgICAgbWluLWhlaWdodDogMzhweDtcbiAgICB9XG59XG5cbi8qIFNhbXN1bmcgR2FsYXh5IFM4L1MzL1M1IGV0IGFwcGFyZWlscyAzNjBweCBsYXJnZXVyICovXG5AbWVkaWEgKG1heC13aWR0aDogMzYwcHgpIGFuZCAobWluLXdpZHRoOiAzNTRweCkge1xuICAgIC5jb250YWluZXItZmx1aWQge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuaGVhZGVyLWNvbnRlbnQge1xuICAgICAgICBnYXA6IDAuNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5sb2dvLXNlY3Rpb24ge1xuICAgICAgICBnYXA6IDAuNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5hcHAtbG9nbyB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDM0cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYnRuIHtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiA0MHB4O1xuICAgIH1cblxuICAgIC8qIE9wdGltaXNhdGlvbnMgc3DDqWNpZmlxdWVzIFNhbXN1bmcgKi9cbiAgICAuc2Ftc3VuZy1vcHRpbWl6ZWQge1xuICAgICAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgfVxufVxuXG4vKiBpUGhvbmUgNi83LzgvU0UgZXQgYXBwYXJlaWxzIDM3NXB4IGxhcmdldXIgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAzNzVweCkgYW5kIChtaW4td2lkdGg6IDM2MXB4KSB7XG4gICAgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5oZWFkZXItY29udGVudCB7XG4gICAgICAgIGdhcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmxvZ28tc2VjdGlvbiB7XG4gICAgICAgIGdhcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmFwcC1sb2dvIHtcbiAgICAgICAgbWF4LWhlaWdodDogMzZweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBtaW4td2lkdGg6IDQycHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQycHg7XG4gICAgfVxuXG4gICAgLyogT3B0aW1pc2F0aW9ucyBpUGhvbmUgc3RhbmRhcmQgKi9cbiAgICAuaXBob25lLXN0YW5kYXJkIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgfVxuXG4gICAgLmQtMzc1LWlubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5kLTM3NS1ub25lIHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuLyogTEcgT3B0aW11cyBMNzAgZXQgYXBwYXJlaWxzIDM4NHB4IGxhcmdldXIgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAzODRweCkgYW5kIChtaW4td2lkdGg6IDM3NnB4KSB7XG4gICAgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5oZWFkZXItY29udGVudCB7XG4gICAgICAgIGdhcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmxvZ28tc2VjdGlvbiB7XG4gICAgICAgIGdhcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmFwcC1sb2dvIHtcbiAgICAgICAgbWF4LWhlaWdodDogMzhweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBtaW4td2lkdGg6IDQycHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQycHg7XG4gICAgfVxuXG4gICAgLyogT3B0aW1pc2F0aW9ucyBBbmRyb2lkIG1lZGl1bSAqL1xuICAgIC5hbmRyb2lkLW1lZGl1bSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgIH1cbn1cblxuLyogR29vZ2xlIFBpeGVsIDMgWEwgZXQgYXBwYXJlaWxzIDM5M3B4IGxhcmdldXIgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAzOTNweCkgYW5kIChtaW4td2lkdGg6IDM4NXB4KSB7XG4gICAgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5oZWFkZXItY29udGVudCB7XG4gICAgICAgIGdhcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmxvZ28tc2VjdGlvbiB7XG4gICAgICAgIGdhcDogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmFwcC1sb2dvIHtcbiAgICAgICAgbWF4LWhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5idG4ge1xuICAgICAgICBtaW4td2lkdGg6IDQ0cHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQ0cHg7XG4gICAgfVxuXG4gICAgLyogT3B0aW1pc2F0aW9ucyBQaXhlbCBsYXJnZSAqL1xuICAgIC5waXhlbC1sYXJnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICB9XG5cbiAgICAuZC0zOTMtaW5saW5lIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBOb2tpYSBMdW1pYSA1MjAgTGFuZHNjYXBlICg1MjB4MzIwKSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDUyMHB4KSBhbmQgKG1pbi13aWR0aDogMzk0cHgpIGFuZCAobWF4LWhlaWdodDogNDAwcHgpIHtcbiAgICAvKiBNb2RlIHBheXNhZ2Ugc3DDqWNpYWwgKi9cbiAgICAuaGVhZGVyLWNvbnRlbnQge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgICAgIGdhcDogMXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5sb2dvLXNlY3Rpb24ge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG4gICAgICAgIGdhcDogMC43NXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5uYXYtc2VjdGlvbiB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcbiAgICAgICAgZ2FwOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYXBwLWxvZ28ge1xuICAgICAgICBtYXgtaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLyogT3B0aW1pc2F0aW9ucyBsYW5kc2NhcGUgKi9cbiAgICAubGFuZHNjYXBlLW1vZGUge1xuICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5tYWluLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYWRtaW4tc2lkZWJhciB7XG4gICAgICAgIHdpZHRoOiAxODBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC8qIEhlYWRlciBuYXZiYXIgY29ycmVjdGlvbnMgcG91ciBsYW5kc2NhcGUgKi9cbiAgICAubmF2YmFyIHtcbiAgICAgICAgcGFkZGluZzogMC4xMjVyZW0gMC4yNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5uYXZiYXIgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICB9XG5cbiAgICAubmF2YmFyLWJyYW5kIHNwYW4ge1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICB9XG5cbiAgICAuYnRuLXNtIHtcbiAgICAgICAgcGFkZGluZzogMC4xMjVyZW0gMC4yNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIH1cbn1cblxuLyogT3B0aW1pc2F0aW9ucyBwb3VyIGhhdXRldXJzIHNww6ljaWZpcXVlcyAqL1xuXG4vKiBpUGhvbmUgWCBldCBhcHBhcmVpbHMgODEycHggaGF1dGV1ciAqL1xuQG1lZGlhIChtYXgtaGVpZ2h0OiA4MTJweCkgYW5kIChtaW4taGVpZ2h0OiA3MDBweCkge1xuICAgIC5tYWluLWNvbnRlbnQge1xuICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gMTIwcHgpO1xuICAgIH1cblxuICAgIC5hZG1pbi1zaWRlYmFyIHtcbiAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDgwcHgpO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbn1cblxuLyogU2Ftc3VuZyBHYWxheHkgUzggZXQgYXBwYXJlaWxzIDc0MHB4IGhhdXRldXIgKi9cbkBtZWRpYSAobWF4LWhlaWdodDogNzQwcHgpIGFuZCAobWluLWhlaWdodDogNjUwcHgpIHtcbiAgICAubWFpbi1jb250ZW50IHtcbiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDEwMHB4KTtcbiAgICB9XG5cbiAgICAuY2FyZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG4gICAgfVxufVxuXG4vKiBpUGhvbmUgNi83LzggZXQgYXBwYXJlaWxzIDY2N3B4IGhhdXRldXIgKi9cbkBtZWRpYSAobWF4LWhlaWdodDogNjY3cHgpIGFuZCAobWluLWhlaWdodDogNjAwcHgpIHtcbiAgICAubWFpbi1jb250ZW50IHtcbiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDkwcHgpO1xuICAgIH1cblxuICAgIC5jYXJkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIH1cblxuICAgIC5hcHAtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBTYW1zdW5nIEdhbGF4eSBTMy9TNSBldCBhcHBhcmVpbHMgNjQwcHggaGF1dGV1ciAqL1xuQG1lZGlhIChtYXgtaGVpZ2h0OiA2NDBweCkgYW5kIChtaW4taGVpZ2h0OiA1MDBweCkge1xuICAgIC5tYWluLWNvbnRlbnQge1xuICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gODBweCk7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5jYXJkIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgIH1cblxuICAgIC5hcHAtaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYWRtaW4tc2lkZWJhciB7XG4gICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA2MHB4KTtcbiAgICB9XG59XG5cbi8qIEppb1Bob25lIDIgZXQgYXBwYXJlaWxzIDMyMHB4IGhhdXRldXIgKi9cbkBtZWRpYSAobWF4LWhlaWdodDogMzIwcHgpIHtcbiAgICAubWFpbi1jb250ZW50IHtcbiAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNhcmQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgfVxuXG4gICAgLmFwcC1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmFkbWluLXNpZGViYXIge1xuICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDBweCk7XG4gICAgICAgIHdpZHRoOiAxNjBweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5uYXYtbGluayB7XG4gICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuMjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICB9XG59XG5cbi8qIENvcnJlY3Rpb25zIHNww6ljaWZpcXVlcyBwb3VyIGxhcmdldXIgMzIwcHggZXQgbW9pbnMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAzMjBweCkge1xuICAgIC5uYXZiYXIge1xuICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjI1cmVtICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgfVxuXG4gICAgLm5hdmJhciAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICB9XG5cbiAgICAubmF2YmFyLWJyYW5kIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBtYXgtd2lkdGg6IDEyMHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgfVxuXG4gICAgLm5hdmJhci1icmFuZCBpbWcge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1heC13aWR0aDogMzJweCAhaW1wb3J0YW50O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICB9XG5cbiAgICAubmF2YmFyLWJyYW5kIHNwYW4ge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB9XG5cbiAgICAubmF2YmFyLW5hdiB7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYnRuLXNtIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjM3NXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjdyZW07XG4gICAgICAgIG1pbi13aWR0aDogMzZweDtcbiAgICAgICAgbWluLWhlaWdodDogMzZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIH1cblxuICAgIC5idG4tc20gaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICB9XG5cbiAgICAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICB9XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuMzc1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIGkge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICB9XG5cbiAgICAvKiBNYXNxdWVyIGxlIHRleHRlIHN1ciB0csOocyBwZXRpdHMgw6ljcmFucyAqL1xuICAgIC5kLW5vbmUuZC1zbS1pbmxpbmUge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmQtbm9uZS5kLW1kLWlubGluZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8qIENvcnJlY3Rpb25zIHBvdXIgdHLDqHMgcGV0aXRlcyBsYXJnZXVycyAoMjQwcHgtMzIwcHgpICovXG5AbWVkaWEgKG1heC13aWR0aDogMzIwcHgpIGFuZCAobWluLXdpZHRoOiAyNDBweCkge1xuICAgIC5uYXZiYXItYnJhbmQge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMHB4O1xuICAgIH1cblxuICAgIC5uYXZiYXItYnJhbmQgc3Bhbi5mdy1ib2xkIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIH1cblxuICAgIC5zaWRlYmFyLXRvZ2dsZSB7XG4gICAgICAgIHBhZGRpbmc6IDAuMTI1cmVtIDAuMjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgIH1cblxuICAgIC5idG4tb3V0bGluZS1zZWNvbmRhcnksXG4gICAgLmJ0bi1vdXRsaW5lLXByaW1hcnksXG4gICAgLmJ0bi1wcmltYXJ5IHtcbiAgICAgICAgcGFkZGluZzogMC4xMjVyZW0gMC4yNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtO1xuICAgICAgICBib3JkZXItd2lkdGg6IDFweDtcbiAgICB9XG5cbiAgICAvKiBGb3JjZXIgbCdhbGlnbmVtZW50IGhvcml6b250YWwgKi9cbiAgICAubmF2YmFyIC5jb250YWluZXItZmx1aWQge1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIH1cblxuICAgIC5uYXZiYXItbmF2LmQtZmxleC5mbGV4LXJvdyB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLyogQW3DqWxpb3JhdGlvbiBkZSBsJ2FmZmljaGFnZSBkZXMgaWPDtG5lcyBldCB0ZXh0ZSAqL1xuICAgIC5uYXZiYXItbmF2IC5uYXYtaXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLm5hdmJhci1uYXYgLmJ0biB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICB9XG5cbiAgICAubmF2YmFyLW5hdiAuYnRuIGkge1xuICAgICAgICBmb250LXNpemU6IDAuN3JlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC4zNzVyZW0gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAubmF2LWxpbmsgaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMTI1cmVtO1xuICAgIH1cblxuICAgIC8qIERyb3Bkb3duIG1lbnUgYW3DqWxpb3LDqSAqL1xuICAgIC5kcm9wZG93bi10b2dnbGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMTI1cmVtO1xuICAgIH1cblxuICAgIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuMTI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuNnJlbTtcbiAgICB9XG59XG5cbi8qIENvcnJlY3Rpb25zIHBvdXIgcsOpc29sdXRpb25zIG1veWVubmVzICgzMjFweC01NzZweCkgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAzMjFweCkgYW5kIChtYXgtd2lkdGg6IDU3NnB4KSB7XG4gICAgLm5hdmJhciB7XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLm5hdmJhciAuY29udGFpbmVyLWZsdWlkIHtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgfVxuXG4gICAgLm5hdmJhci1icmFuZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMC4zNzVyZW07XG4gICAgfVxuXG4gICAgLm5hdmJhci1icmFuZCBpbWcge1xuICAgICAgICBtYXgtaGVpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1heC13aWR0aDogMzZweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5uYXZiYXItYnJhbmQgc3BhbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIH1cblxuICAgIC5idG4tc20ge1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBtaW4taGVpZ2h0OiAzMnB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjI1cmVtO1xuICAgIH1cblxuICAgIC5idG4tc20gaSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICB9XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDAuMjVyZW07XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIGkge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgfVxuXG4gICAgLmRyb3Bkb3duLXRvZ2dsZSB7XG4gICAgICAgIGdhcDogMC4yNXJlbTtcbiAgICB9XG59XG5cbi8qIENvcnJlY3Rpb25zIHBvdXIgbGEgdmlzaWJpbGl0w6kgZGVzIGljw7RuZXMgZXQgdGjDqG1lICovXG4ubmF2YmFyLW5hdiAuYnRuLFxuLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xufVxuXG4ubmF2YmFyLW5hdiAuYnRuIGksXG4ubmF2YmFyLW5hdiAubmF2LWxpbmsgaSB7XG4gICAgY29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7XG59XG5cbi8qIFZhcmlhYmxlcyBDU1MgdGVuYW50ICovXG46cm9vdCB7XG4gICAgLS1wcmltYXJ5LWNvbG9yOiB2YXIoLS1icy1wcmltYXJ5LCAjMDA3YmZmKTtcbiAgICAtLXNlY29uZGFyeS1jb2xvcjogdmFyKC0tYnMtc2Vjb25kYXJ5LCAjNmM3NTdkKTtcbiAgICAtLXN1Y2Nlc3MtY29sb3I6IHZhcigtLWJzLXN1Y2Nlc3MsICMyOGE3NDUpO1xuICAgIC0td2FybmluZy1jb2xvcjogdmFyKC0tYnMtd2FybmluZywgI2ZmYzEwNyk7XG4gICAgLS1kYW5nZXItY29sb3I6IHZhcigtLWJzLWRhbmdlciwgI2RjMzU0NSk7XG59XG5cbi8qIEJvdXRvbnMgdXRpbGlzYW50IGxlcyB2YXJpYWJsZXMgdGVuYW50ICovXG4uYnRuLWN1c3RvbS1wcmltYXJ5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpO1xuICAgIGNvbG9yOiB3aGl0ZTtcbn1cblxuLmJ0bi1jdXN0b20tcHJpbWFyeTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7XG4gICAgZmlsdGVyOiBicmlnaHRuZXNzKDAuOSk7XG59XG5cbi8qIE1vZGUgY2xhaXIgLSBpY8O0bmVzIHZpc2libGVzICovXG5ib2R5Om5vdCgudGhlbWUtZGFyaykgLm5hdmJhci1uYXYgLmJ0bixcbmJvZHk6bm90KC50aGVtZS1kYXJrKSAubmF2YmFyLW5hdiAubmF2LWxpbmsge1xuICAgIGNvbG9yOiAjNDk1MDU3ICFpbXBvcnRhbnQ7XG59XG5cbmJvZHk6bm90KC50aGVtZS1kYXJrKSAubmF2YmFyLW5hdiAuYnRuIGksXG5ib2R5Om5vdCgudGhlbWUtZGFyaykgLm5hdmJhci1uYXYgLm5hdi1saW5rIGkge1xuICAgIGNvbG9yOiAjNDk1MDU3ICFpbXBvcnRhbnQ7XG59XG5cbmJvZHk6bm90KC50aGVtZS1kYXJrKSAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5IHtcbiAgICBib3JkZXItY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50O1xufVxuXG5ib2R5Om5vdCgudGhlbWUtZGFyaykgLmJ0bi1vdXRsaW5lLXByaW1hcnkge1xuICAgIGJvcmRlci1jb2xvcjogIzBkNmVmZCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjMGQ2ZWZkICFpbXBvcnRhbnQ7XG59XG5cbmJvZHk6bm90KC50aGVtZS1kYXJrKSAuYnRuLXByaW1hcnkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwZDZlZmQgIWltcG9ydGFudDtcbiAgICBib3JkZXItY29sb3I6ICMwZDZlZmQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xufVxuXG4vKiBNb2RlIHNvbWJyZSAtIGljw7RuZXMgdmlzaWJsZXMgKi9cbmJvZHkudGhlbWUtZGFyayAubmF2YmFyLW5hdiAuYnRuLFxuYm9keS50aGVtZS1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluayB7XG4gICAgY29sb3I6ICNlOWVjZWYgIWltcG9ydGFudDtcbn1cblxuYm9keS50aGVtZS1kYXJrIC5uYXZiYXItbmF2IC5idG4gaSxcbmJvZHkudGhlbWUtZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsgaSB7XG4gICAgY29sb3I6ICNlOWVjZWYgIWltcG9ydGFudDtcbn1cblxuYm9keS50aGVtZS1kYXJrIC5idG4tb3V0bGluZS1zZWNvbmRhcnkge1xuICAgIGJvcmRlci1jb2xvcjogI2FkYjViZCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjYWRiNWJkICFpbXBvcnRhbnQ7XG59XG5cbmJvZHkudGhlbWUtZGFyayAuYnRuLW91dGxpbmUtcHJpbWFyeSB7XG4gICAgYm9yZGVyLWNvbG9yOiAjNmVhOGZlICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICM2ZWE4ZmUgIWltcG9ydGFudDtcbn1cblxuYm9keS50aGVtZS1kYXJrIC5idG4tcHJpbWFyeSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzBkNmVmZCAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1jb2xvcjogIzBkNmVmZCAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG59XG5cbi8qIE5hdmlnYXRpb24gZCdhdXRoZW50aWZpY2F0aW9uIHJlc3BvbnNpdmUgKi9cbi5hdXRoLW5hdi1idG4ge1xuICAgIG1pbi13aWR0aDogNDRweDtcbiAgICBtaW4taGVpZ2h0OiA0NHB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLyogVHLDqHMgcGV0aXRzIMOpY3JhbnMgKEppb1Bob25lIDIsIGV0Yy4pICovXG5AbWVkaWEgKG1heC13aWR0aDogMjM5Ljk4cHgpIHtcbiAgICAuYXV0aC1uYXYtYnRuIHtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDM2cHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDM2cHg7XG4gICAgfVxufVxuXG4vKiBQZXRpdHMgw6ljcmFucyAoaVBob25lIDQsIE5va2lhIEx1bWlhKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDI0MHB4KSBhbmQgKG1heC13aWR0aDogMzE5Ljk4cHgpIHtcbiAgICAuYXV0aC1uYXYtYnRuIHtcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgfVxufVxuXG4vKiDDiWNyYW5zIG1veWVucy1wZXRpdHMgKGlQaG9uZSA1L1NFLCBHYWxheHkgUzkrKSAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDMyMHB4KSBhbmQgKG1heC13aWR0aDogMzU5Ljk4cHgpIHtcbiAgICAuYXV0aC1uYXYtYnRuIHtcbiAgICAgICAgcGFkZGluZzogMC40cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgfVxufVxuXG4vKiDDiWNyYW5zIEdhbGF4eSBzdGFuZGFyZCAoUzIxLCBTMy9TNSwgUzgpICovXG5AbWVkaWEgKG1pbi13aWR0aDogMzYwcHgpIGFuZCAobWF4LXdpZHRoOiAzNzQuOThweCkge1xuICAgIC5hdXRoLW5hdi1idG4ge1xuICAgICAgICBwYWRkaW5nOiAwLjQ1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIH1cbn1cblxuLyogaVBob25lIDYvNy84L1NFLCBpUGhvbmUgWCAqL1xuQG1lZGlhIChtaW4td2lkdGg6IDM3NXB4KSBhbmQgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAuYXV0aC1uYXYtYnRuIC5kLW5vbmUuZC1zbS1pbmxpbmUge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmF1dGgtbmF2LWJ0biB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICB9XG59XG5cbi8qIEhlYWRlciByZXNwb25zaXZlIGF2ZWMgbG9nbyAqL1xuLmFwcC1oZWFkZXIge1xuICAgIHBvc2l0aW9uOiBzdGlja3k7XG4gICAgdG9wOiAwO1xuICAgIHotaW5kZXg6IDEwMjA7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4uaGVhZGVyLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgZ2FwOiAxcmVtO1xuICAgIG1pbi1oZWlnaHQ6IDYwcHg7XG59XG5cbi8qIENvcnJlY3Rpb25zIHNww6ljaWZpcXVlcyBwb3VyIGxlIGhlYWRlciBuYXZiYXIgKi9cbi5uYXZiYXIge1xuICAgIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtICFpbXBvcnRhbnQ7XG59XG5cbi5uYXZiYXIgLmNvbnRhaW5lci1mbHVpZCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBnYXA6IDAuNXJlbTtcbn1cblxuLm5hdmJhci1icmFuZCB7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgbWF4LXdpZHRoOiBub25lO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbn1cblxuLm5hdmJhci1uYXYge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMC4yNXJlbTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLm5hdmJhci1uYXYgLm5hdi1pdGVtIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5uYXZiYXItdG9nZ2xlciB7XG4gICAgb3JkZXI6IDM7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLmhlYWRlci1jb250ZW50IHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBnYXA6IDAuNXJlbTtcbiAgICAgICAgbWluLWhlaWdodDogYXV0bztcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDA7XG4gICAgfVxufVxuXG4ubG9nby1zZWN0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxcmVtO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAubG9nby1zZWN0aW9uIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgfVxufVxuXG4uYXBwLWxvZ28ge1xuICAgIGhlaWdodDogNTBweDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xuICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjNzIGVhc2U7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAgIC5hcHAtbG9nbyB7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkge1xuICAgIC5hcHAtbG9nbyB7XG4gICAgICAgIGhlaWdodDogMzVweDtcbiAgICB9XG59XG5cbi8qIERhc2hib2FyZCBjYXJkcyByZXNwb25zaXZlcyAqL1xuLmRhc2hib2FyZC1ncmlkIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdhcDogMS41cmVtO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAuZGFzaGJvYXJkLWdyaWQge1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgIH1cbn1cblxuLmRhc2hib2FyZC1jYXJkIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1icy1ib2R5LWJnKTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjc1cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1icy1ib3JkZXItY29sb3IpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UsIGJveC1zaGFkb3cgMC4ycyBlYXNlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5kYXNoYm9hcmQtY2FyZDpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMC41cmVtIDFyZW0gcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gICAgLmRhc2hib2FyZC1jYXJkOmhvdmVyIHtcbiAgICAgICAgdHJhbnNmb3JtOiBub25lOyAvKiBEw6lzYWN0aXZlIGwnZWZmZXQgaG92ZXIgc3VyIG1vYmlsZSAqL1xuICAgIH1cbn1cblxuLmRhc2hib2FyZC1jYXJkLWJvZHkge1xuICAgIHBhZGRpbmc6IDEuNXJlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gICAgLmRhc2hib2FyZC1jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgIH1cbn1cblxuLyogTcOpdHJpcXVlcyByZXNwb25zaXZlcyAqL1xuLm1ldHJpYy1jYXJkIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogMS41cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1icy1wcmltYXJ5KSAwJSwgdmFyKC0tYnMtaW5mbykgMTAwJSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubWV0cmljLWNhcmQ6OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcbn1cblxuLm1ldHJpYy1jYXJkOmhvdmVyOjpiZWZvcmUge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkge1xuICAgIC5tZXRyaWMtY2FyZCB7XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgfVxuICAgIFxuICAgIC5tZXRyaWMtY2FyZDpob3Zlcjo6YmVmb3JlIHtcbiAgICAgICAgb3BhY2l0eTogMDsgLyogRMOpc2FjdGl2ZSBsJ2VmZmV0IGhvdmVyIHN1ciBtb2JpbGUgKi9cbiAgICB9XG59XG5cbi5tZXRyaWMtdmFsdWUge1xuICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcbiAgICAubWV0cmljLXZhbHVlIHtcbiAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gICAgLm1ldHJpYy12YWx1ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS43NXJlbTtcbiAgICB9XG59XG5cbi5tZXRyaWMtbGFiZWwge1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgb3BhY2l0eTogMC45O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDAuMDVlbTtcbn1cblxuLyogVGFibGVhdXggcmVzcG9uc2lmcyBhdmFuY8OpcyAqL1xuLnRhYmxlLWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tYnMtYm9keS1iZyk7XG4gICAgYm9yZGVyLXJhZGl1czogMC41cmVtO1xuICAgIGJveC1zaGFkb3c6IDAgMC4xMjVyZW0gMC4yNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4udGFibGUtcmVzcG9uc2l2ZSB7XG4gICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7XG4gICAgLnRhYmxlLXJlc3BvbnNpdmUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIH1cbiAgICBcbiAgICAudGFibGUgdGgsXG4gICAgLnRhYmxlIHRkIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuMjVyZW07XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICAgIFxuICAgIC8qIE1hc3F1ZXIgY2VydGFpbmVzIGNvbG9ubmVzIHN1ciBtb2JpbGUgKi9cbiAgICAudGFibGUgLmQtbm9uZS5kLW1kLXRhYmxlLWNlbGwge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBGb3JtdWxhaXJlcyByZXNwb25zaWZzIGF2YW5jw6lzICovXG4uZm9ybS1mbG9hdGluZyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uZm9ybS1mbG9hdGluZyA+IC5mb3JtLWNvbnRyb2wsXG4uZm9ybS1mbG9hdGluZyA+IC5mb3JtLXNlbGVjdCB7XG4gICAgaGVpZ2h0OiBjYWxjKDMuNXJlbSArIDJweCk7XG4gICAgcGFkZGluZzogMXJlbSAwLjc1cmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAuZm9ybS1mbG9hdGluZyA+IC5mb3JtLWNvbnRyb2wsXG4gICAgLmZvcm0tZmxvYXRpbmcgPiAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBoZWlnaHQ6IGNhbGMoM3JlbSArIDJweCk7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMC41cmVtO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7IC8qIMOJdml0ZSBsZSB6b29tIHN1ciBpT1MgKi9cbiAgICB9XG59XG5cbi8qIFNpZGViYXIgcmVzcG9uc2l2ZSBhdmFuY8OpZSAqL1xuLnNpZGViYXIge1xuICAgIHdpZHRoOiAyODBweDtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1icy1ib2R5LWJnKTtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1icy1ib3JkZXItY29sb3IpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG4uc2lkZWJhci1jb250ZW50IHtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xufVxuXG4uc2lkZWJhci1tZW51IC5uYXYtbGluayB7XG4gICAgY29sb3I6IHZhcigtLWJzLWJvZHktY29sb3IpO1xuICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjM3NXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uc2lkZWJhci1tZW51IC5uYXYtbGluazpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnMtc2Vjb25kYXJ5LWJnKTtcbiAgICBjb2xvcjogdmFyKC0tYnMtcHJpbWFyeSk7XG59XG5cbi5zaWRlYmFyLW1lbnUgLm5hdi1saW5rLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnMtcHJpbWFyeSk7XG4gICAgY29sb3I6IHdoaXRlO1xufVxuXG4uc2lkZWJhci1oZWFkaW5nIHtcbiAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIGxldHRlci1zcGFjaW5nOiAwLjA1ZW07XG59XG5cbi5zaWRlYmFyLXRvZ2dsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1icy1wcmltYXJ5KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMzc1cmVtO1xuICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICBib3gtc2hhZG93OiAwIDAuMjVyZW0gMC41cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4uc2lkZWJhci10b2dnbGU6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWJzLXByaW1hcnkpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICBib3gtc2hhZG93OiAwIDAuMzc1cmVtIDAuNzVyZW0gcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7XG4gICAgLnNpZGViYXItdG9nZ2xlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4vKiBPcHRpbWlzYXRpb25zIG1vYmlsZSBwb3VyIGxhIHNpZGViYXIgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkge1xuICAgIC5zaWRlYmFyLW1lbnUgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgfVxuXG4gICAgLnNpZGViYXItaGVhZGluZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43cmVtO1xuICAgICAgICBwYWRkaW5nOiAwIDAuNzVyZW07XG4gICAgfVxuXG4gICAgLm9mZmNhbnZhcyB7XG4gICAgICAgIHdpZHRoOiA4NXZ3ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1heC13aWR0aDogMjgwcHg7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogMjQwcHgpIGFuZCAobWF4LXdpZHRoOiAzMTkuOThweCkge1xuICAgIC5zaWRlYmFyLW1lbnUgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogMC40cmVtIDAuNnJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgfVxuXG4gICAgLnNpZGViYXItaGVhZGluZyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgICAgICAgcGFkZGluZzogMCAwLjZyZW07XG4gICAgfVxuXG4gICAgLm9mZmNhbnZhcyB7XG4gICAgICAgIHdpZHRoOiA5MHZ3ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1heC13aWR0aDogMjQwcHg7XG4gICAgfVxufVxuXG4vKiBCcmVhZGNydW1iIHJlc3BvbnNpdmUgKi9cbi5icmVhZGNydW1iIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gICAgLmJyZWFkY3J1bWIge1xuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICB9XG4gICAgXG4gICAgLmJyZWFkY3J1bWItaXRlbSB7XG4gICAgICAgIG1heC13aWR0aDogMTUwcHg7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbn1cblxuLyogUGFnaW5hdGlvbiByZXNwb25zaXZlICovXG4ucGFnaW5hdGlvbiB7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogMC4yNXJlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gICAgLnBhZ2luYXRpb24gLnBhZ2UtaXRlbTpub3QoLmFjdGl2ZSk6bm90KC5kaXNhYmxlZCkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICBcbiAgICAucGFnaW5hdGlvbiAucGFnZS1pdGVtLmFjdGl2ZSxcbiAgICAucGFnaW5hdGlvbiAucGFnZS1pdGVtLmRpc2FibGVkLFxuICAgIC5wYWdpbmF0aW9uIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQsXG4gICAgLnBhZ2luYXRpb24gLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4vKiBUb29sdGlwcyBldCBwb3BvdmVycyByZXNwb25zaWZzICovXG5AbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHtcbiAgICAudG9vbHRpcCxcbiAgICAucG9wb3ZlciB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICB9XG59XG5cbi8qIE9mZmNhbnZhcyByZXNwb25zaXZlICovXG5AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAub2ZmY2FudmFzIHtcbiAgICAgICAgd2lkdGg6IDkwdncgIWltcG9ydGFudDtcbiAgICAgICAgbWF4LXdpZHRoOiAzMjBweDtcbiAgICB9XG59XG5cbi8qIEFjY29yZMOpb25zIHJlc3BvbnNpZnMgKi9cbi5hY2NvcmRpb24tYnV0dG9uIHtcbiAgICBwYWRkaW5nOiAxcmVtIDEuMjVyZW07XG4gICAgZm9udC1zaXplOiAxcmVtO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHtcbiAgICAuYWNjb3JkaW9uLWJ1dHRvbiB7XG4gICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICB9XG59XG5cbi8qIEJhZGdlcyByZXNwb25zaWZzICovXG4uYmFkZ2Uge1xuICAgIGZvbnQtc2l6ZTogMC43NWVtO1xuICAgIHBhZGRpbmc6IDAuMzVlbSAwLjY1ZW07XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkge1xuICAgIC5iYWRnZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC42NWVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1ZW0gMC41ZW07XG4gICAgfVxufVxuXG4vKiBDYXJvdXNlbHMgcmVzcG9uc2lmcyAqL1xuLmNhcm91c2VsLWl0ZW0gaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAgIC5jYXJvdXNlbC1jYXB0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICB9XG4gICAgXG4gICAgLmNhcm91c2VsLWNhcHRpb24gaDUge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgfVxufVxuXG4vKiBQcm9ncmVzcyBiYXJzIHJlc3BvbnNpdmVzICovXG4ucHJvZ3Jlc3Mge1xuICAgIGhlaWdodDogMXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkge1xuICAgIC5wcm9ncmVzcyB7XG4gICAgICAgIGhlaWdodDogMC43NXJlbTtcbiAgICB9XG59XG5cbi8qIFNwaW5uZXJzIHJlc3BvbnNpZnMgKi9cbi5zcGlubmVyLWJvcmRlcixcbi5zcGlubmVyLWdyb3cge1xuICAgIHdpZHRoOiAycmVtO1xuICAgIGhlaWdodDogMnJlbTtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7XG4gICAgLnNwaW5uZXItYm9yZGVyLFxuICAgIC5zcGlubmVyLWdyb3cge1xuICAgICAgICB3aWR0aDogMS41cmVtO1xuICAgICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICB9XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFpPTkVTIERFIFRPVUNIIE9QVElNSVPDiUVTIFBBUiBCUkVBS1BPSU5UXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIFRyw6hzIHBldGl0cyDDqWNyYW5zIC0gem9uZXMgZGUgdG91Y2ggcsOpZHVpdGVzIG1haXMgdXRpbGlzYWJsZXMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiAyMzkuOThweCkge1xuICAgIC5idG4sXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBtaW4taGVpZ2h0OiAzNnB4O1xuICAgICAgICBtaW4td2lkdGg6IDM2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjVyZW07XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNzVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICB9XG5cbiAgICAuY2FyZC1ib2R5IHtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbTtcbiAgICB9XG5cbiAgICAubW9kYWwtZGlhbG9nIHtcbiAgICAgICAgbWFyZ2luOiAwLjI1cmVtO1xuICAgIH1cbn1cblxuLyogUGV0aXRzIMOpY3JhbnMgLSB6b25lcyBkZSB0b3VjaCBpbnRlcm3DqWRpYWlyZXMgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAyNDBweCkgYW5kIChtYXgtd2lkdGg6IDMxOS45OHB4KSB7XG4gICAgLmJ0bixcbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG4gICAgICAgIG1pbi13aWR0aDogNDBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjZyZW07XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogMC42cmVtIDAuOHJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgfVxuXG4gICAgLmNhcmQtYm9keSB7XG4gICAgICAgIHBhZGRpbmc6IDAuODc1cmVtO1xuICAgIH1cbn1cblxuLyogw4ljcmFucyBtb3llbnMtcGV0aXRzIC0gem9uZXMgZGUgdG91Y2ggc3RhbmRhcmQgKi9cbkBtZWRpYSAobWluLXdpZHRoOiAzMjBweCkgYW5kIChtYXgtd2lkdGg6IDM3NC45OHB4KSB7XG4gICAgLmJ0bixcbiAgICAuZm9ybS1jb250cm9sLFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQycHg7XG4gICAgICAgIG1pbi13aWR0aDogNDJweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjM1cmVtIDAuN3JlbTtcbiAgICB9XG5cbiAgICAubmF2LWxpbmsge1xuICAgICAgICBwYWRkaW5nOiAwLjY1cmVtIDAuOXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtO1xuICAgIH1cblxuICAgIC5jYXJkLWJvZHkge1xuICAgICAgICBwYWRkaW5nOiAxcmVtO1xuICAgIH1cbn1cblxuLyogw4ljcmFucyBtb2JpbGVzIHN0YW5kYXJkIGV0IHBsdXMgZ3JhbmRzICovXG5AbWVkaWEgKG1pbi13aWR0aDogMzc1cHgpIGFuZCAobWF4LXdpZHRoOiA3NjcuOThweCkge1xuICAgIC5idG4sXG4gICAgLmZvcm0tY29udHJvbCxcbiAgICAuZm9ybS1zZWxlY3Qge1xuICAgICAgICBtaW4taGVpZ2h0OiA0NHB4O1xuICAgICAgICBtaW4td2lkdGg6IDQ0cHg7XG4gICAgfVxuXG4gICAgLm5hdi1saW5rIHtcbiAgICAgICAgcGFkZGluZzogMC43NXJlbSAxcmVtO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/