/*!**********************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/00_reset.css ***!
  \**********************************************************************************************************************/
*, ::after, ::before {
    box-sizing: border-box;
}

body {
    margin: 0;
}

ul {
    list-style-type: none;
    padding-inline-start: 0;
}
/*!*********************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/10_font.css ***!
  \*********************************************************************************************************************/
html {
    /* Il est interdit de rajouter des couleurs sans demander l'accord du PO */
    --cBlanc1: var(--cBlanc);
    /* inutilisé 2026-06-13  --cBlanc1p: #E0E0E0; */
    --cBlanc02: #F5F5F5;
    --cBlanc2: #F0F0F0;
    --cBlanc03: #dce1ea;
    --cBlanc3: #CCCFCC;
    /* inutilisé 2026-06-13  --cBlanc4: #AAAFAA; */
    --cBlanc5: #999C99;


    /* ============================================
       COULEURS TEXTE NOIR - UTILISATION OBLIGATOIRE
       ============================================ */

    /* --cNoir1 : ÉLÉMENTS D'EMPHASE
       - Titres : h1, h2, h3
       - Texte des boutons (quand pas de couleur définie)
       - Labels obligatoires (required)
       - Menus de navigation
       - Checkbox et radio boutons
       - Valeur principale dans les compteurs (ex: "3" dans "3 / 5")
    */
    --cNoir1: #181818;
    /* inutilisé 2026-06-13  --cNoir1o: #18181855; */

    /* --cNoir2 : CORPS DE TEXTE
       - Paragraphes <p>
       - Listes <li>, énumérations
       - Labels facultatifs
       - Texte saisi dans les inputs
       - Titres h4, h5, h6
       - Valeur secondaire dans les compteurs (ex: "/ 5" dans "3 / 5")
    */
    --cNoir2: #282828;

    /* --cNoir3 : TEXTE TERTIAIRE
       - Placeholders
       - Messages d'aide discrets
       - Texte désactivé
    */
    --cNoir3: #555;

    /* --cNoir4-5 : TEXTE TRÈS ATTÉNUÉ
       - Éléments désactivés
       - Texte décoratif
    */
    --cNoir4: #999;
    --cNoir5: #BBB;
    --cBlanc: #FFF;
    --cNoir: #000;
    --cTexte1: #222;
    /* inutilisé 2026-06-13  --cTexte2: #444; */
    --cForm: #000;
    /* inutilisé 2026-06-13  --cForm_b: #555; */

    /* ============================================
       PALETTES DE RÔLE — une seule forme, 8 paliers, toujours nommés pareil
       0 fond très pâle · 1 fond pâle · 2 bordure / moyen · 3 couleur pleine (bouton, lien,
       onglet actif, indicateur) · 4 foncé / survol · _a dégradé · _ah dégradé au survol ·
       t texte posé sur la couleur pleine.
       Accent est la couleur de l'espace où l'on est : elle change par une classe sur <body>
       (voir le bloc après html{}). Or, Rouge et Succes ne changent jamais.
       Décision PO 2026-09-05. Aucune autre couleur de rôle n'est admise.
       ============================================ */

    /* Accent : voir le bloc body { } après html { }. Elle vit sur body, pas ici — une
       variable dérivée (dégradé, halo) se calcule là où elle est déclarée, et doit donc
       être déclarée sur le même élément que la classe qui change la couleur. */

    /* Or — s'inscrire, connexion, tarif, mise en avant */
    --cOr0: #fefce8;
    --cOr1: #fef3c7;
    --cOr2: #f5d96b;
    --cOr3: #FFD814; /* l'or d'Amazon, texte foncé dessus (décision chef de projet 2026-10-07) */
    --cOr4: #FFCE12; /* son survol */
    --cOr_a: linear-gradient(to bottom, var(--cOr3), var(--cOr4) 100%);
    --cOr_ah: linear-gradient(to bottom, var(--cOr3), var(--cOr3) 100%);
    --cOrt: #181818; /* foncé : le blanc sur --cOr3 ne faisait que 2,0:1 de contraste, 8,8:1 ainsi (décision chef de projet 2026-10-07) */

    /* Rouge — erreur, alerte, suppression, geste dangereux */
    --cRouge0: #fdf3f2;
    --cRouge1: #fbe2df;
    --cRouge2: #f5aaa3;
    --cRouge3: #f15b4e;
    --cRouge4: #930000;
    --cRouge_a: linear-gradient(to bottom, var(--cRouge3), var(--cRouge4) 100%);
    --cRouge_ah: linear-gradient(to bottom, var(--cRouge3), var(--cRouge3) 100%);
    --cRouget: #FFF;

    /* Cœur « J'aime » — un rouge à lui, sang, bordeaux foncé : le rouge de la famille dit
       l'alerte et le danger, pas l'affection (décision chef de projet 2026-09-16).
       Deux crans, comme les autres familles : le pâle du survol, la couleur du cœur. */
    --cCoeur0: #f6e4e7;
    --cCoeur3: #c1192f;

    /* Succes — validation, confirmation */
    --cSucces0: #f0fbff;
    --cSucces1: #ddf1fa;
    --cSucces2: #93d3ea;
    --cSucces3: #0e9dc9;
    --cSucces4: #0b5f7a;
    --cSucces_a: linear-gradient(to bottom, var(--cSucces3), var(--cSucces4) 100%);
    --cSucces_ah: linear-gradient(to bottom, var(--cSucces3), var(--cSucces3) 100%);
    --cSuccest: #FFF;

    --cBackground: var(--cBlanc);

    /* Le bandeau des aperçus (pageRubrique.css, ≥ 1600px). UN PLATEAU UNI AU CENTRE, le dégradé
       sur les bords seulement (décision chef de projet 2026-09-24) : l'ancien dégradé allait
       du gris des bords au blanc du centre, et des cartes blanches identiques paraissaient
       blanches sur le gris et ternes sur le blanc. Sur le plateau, toutes se détachent
       pareil. Deux halos de couleur, tenus dans les bords, donnent un peu de vie : le bleu
       du site en haut à gauche, l'orange des illustrations en bas à droite. */
    --cBackgroundGrand:
        radial-gradient(14% 40% at 0% 25%, #436bc11f, transparent),
        radial-gradient(14% 40% at 100% 75%, #f39c341f, transparent),
        linear-gradient(90deg, #E8EBF0 0%, #F4F5F7 12%, #F4F5F7 88%, #E8EBF0 100%);

    /* Layout */
    --largeur: 1360px;
    /* inutilisé 2026-06-13  --maxWidth: 760px; */
    --cBg: var(--cBlanc);
    /* inutilisé 2026-06-13  --cBg_b: #CCC; */

    /* Noir transparent — ombres */
    --cOmbre: #0002;            /* environ 15% */
    --cOmbreForte: #0004;       /* environ 30% */

    /* transparent — overlays */
    --cOverlay: #0008;          /* environ 50% */
    --cBlancOverlay: #FFFC;     /* environ 80% */
    --cBlancVerre: #FFFFFF8C;   /* environ 55% — verre dépoli, toujours avec un flou (barre et bulle de l'aperçu) */

    /* Ombres composées */
    --ombrePortee: 0 4px 12px var(--cOmbre);
    --ombrePortee2: 0 0px 25px #000;
    --ombreModale: 0 10px 40px var(--cOmbreForte);
    --ombreInterne: 0 0 10px 10px inset var(--cBlanc02);

    /* Couleurs Noir gradients */
    /* inutilisé 2026-06-13  --cNoir3_a: linear-gradient(to bottom, #505858, #303838 100%); */
    /* inutilisé 2026-06-13  --cNoir3_ah: linear-gradient(to bottom, #505858, #505858 100%); */
    /* inutilisé 2026-06-13  --cNoir3_ahLight: linear-gradient(to bottom, #707878, #707878 100%); */
    /* inutilisé 2026-06-13  --cNoir3_at: #FFF; */


    /* inutilisé 2026-06-13  --sAlerte_s: #DEC4C4; */
    /* inutilisé 2026-06-13  --cTuto: #C6F; */
    /* inutilisé 2026-06-13  --cTuto_t: #000; */
    /* inutilisé 2026-06-13  --cTuto_ah: #d79af2; */
    /* inutilisé 2026-06-13  --cBlanc1_t: #181818; */
    /* inutilisé 2026-06-13  --cPlacehoder: #888; */
    /* inutilisé 2026-06-13  --cForm_s: #FFF; */
    /* inutilisé 2026-06-13  --bsCta: 0 7px 14px #3352, 0 3px 6px #0001; */

    /* Formulaires utilisateur */
    /* inutilisé 2026-06-13  --cFormUsr: #EEFAFF; */
    /* inutilisé 2026-06-13  --cFormUsr_b: #334; */
    /* inutilisé 2026-06-13  --cFormUsr_h: #FFF; */
    /* inutilisé 2026-06-13  --cFormUsr_bf: #0AF; */
    /* inutilisé 2026-06-13  --cFormUsr_cb: #059; */
    /* inutilisé 2026-06-13  --cForm_bf: #3C0; */
    /* inutilisé 2026-06-13  --cForm_cb: #590; */
    /* inutilisé 2026-06-13  --cKo_b: #F88; */

    /* Logo */
    /* inutilisé 2026-06-13  --cLogo1: #EBF7E4; */
    /* inutilisé 2026-06-13  --cLogo2: #C6E9AF; */

    --ffBase: 'Noto Sans', Arial, sans-serif;
    --ffMono: 'JetBrainsMono', 'Verdana', monospace;
    /* Police standard de l'écran public (tout ce qui est projeté) — seule source, lue aussi
       par les canvas via policeEcran() (kitPlugin/shared/police.ts). Décision 2026-08-29 :
       Noto Sans seule, pas de Scada ni Montserrat sur ce que voit le public. */
    --ffEcran: 'Noto Sans', sans-serif;
    /* Police des chiffres de l'écran public (tirages, compte à rebours, panneaux à volets) —
       chiffres monolarges garantis aux deux familles, lue par les canvas via policeChiffres().
       Décision 2026-08-29 : remplace 'Courier New' (police machine, absente d'Android/Linux). */
    --ffChiffres: 'Ubuntu Sans', 'Noto Sans', sans-serif;

    /* Il est interdit de rajouter des styles typo sans demander l'accord du PO */
    /* inutilisé 2026-06-13  --fTitre: normal normal 700 32px 'Scada', sans-serif; */
    --fH1: normal normal 700 32px 'Scada', sans-serif;
    --fH2: normal normal 700 24px 'Scada', sans-serif;
    --fH3: normal normal 400 22px 'Scada', sans-serif;
    --fH4: normal normal 400 18px 'Scada', sans-serif;
    /* Titre de l'événement sur l'écran public (.zoneTitreTexte) : police de l'écran, pas Scada.
       La taille est recalée à l'affichage par GestionnaireFondEnTete. Décision chef de projet 2026-09-14. */
    --fTitreEcran: normal normal 700 32px var(--ffEcran);
    --fMenu14: normal normal 400 14px 'Montserrat', sans-serif;
    /* Cran compact de la barre de pilotage (AdaptationBarre.ts) : la barre redéfinit --fMenu14 avec
       celle-ci pour son seul périmètre. Décision du chef de projet 2026-09-03. */
    --fMenu13: normal normal 400 13px 'Montserrat', sans-serif;
    --fCta16: normal normal 700 18px 'Montserrat', sans-serif;
    /* Remise en service le 2026-09-16 (décision chef de projet) : le mono d'un LIBELLÉ, par
       opposition à --fMono24b qui est le mono d'un GROS CHIFFRE (codes d'accès, compteurs).
       Première usagère : l'étiquette d'une scène sur la Vitrine (composants/etiquetteJaime.css).
       Le repli 'Courier New' est une vraie chasse fixe — celui de --ffMono (Verdana) n'en est
       pas une. */
    --fMono16: normal normal 400 16px 'JetBrainsMono', 'Courier New', Courier, monospace;
    /* inutilisé 2026-06-13  --fMono24: normal normal 400 24px 'JetBrainsMono', 'Courier New', Courier, monospace; */
    --fMono24b: normal normal 700 24px 'JetBrainsMono', 'Courier New', Courier, monospace;
    --fCta20: normal normal 700 20px 'Montserrat', sans-serif;
    /* inutilisé 2026-06-13  --fLegend16: normal normal 400 20px 'Scada', sans-serif; */
    --fLight14: italic normal 200 14px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fMini11: italic normal 200 11px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fText16: normal normal 400 16px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fText16Strong: normal normal 700 16px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fItalic16: italic normal 400 16px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fAlerte16: italic small-caps 700 20px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;
    --fLabel: normal normal 400 14px 'Noto Sans', Verdana, Geneva, Arial, sans-serif;

    --border: 1px solid #dce1ea;
    --borderR0: 3px;
    --borderR1: 5px;
    --borderR2: 7px;
    --borderCarte: 1px solid var(--cNoir4);
    --borderForm: 1px solid var(--cNoir5);
    --borderInput: 1px solid var(--cNoir5);

    /* Espacements — nommés par rôle (comme les bordures), accord PO 2026-07-03.
       Migration progressive : ne remplacer une valeur en dur que si le rôle ET la valeur
       correspondent (no-op visuel) ; aligner une dérive de valeur = décision à part. */
    --gapListe: 32px;   /* entre les éléments d'une liste. La colonne qui borde la liste (ex. panneau de filtres) prend le MÊME gap : deux rythmes différents côte à côte, c'est moche */
    --paddingCorps: 20px;   /* intérieur d'un corps de bloc / panneau / modale */
    --gapDefaut: 8px;       /* espace standard entre éléments frères (flex/grid) */
    --gapReduit: 4px;       /* variante volontairement plus serrée : listes compactes, groupes de boutons */
    --gapMoyen: 12px;    /* espacement intermédiaire entre éléments frères */
    --gapLarge: 20px;    /* espacement généreux entre groupes d'éléments */
    --gapColonnes: 4rem; /* entre deux colonnes de page de nature différente : le texte et son image, le menu et son contenu (décision chef de projet 2026-09-17) */
    --gapBlocs: 10rem;   /* le blanc entre deux blocs empilés d'une même colonne de lecture : l'article, ses questions, ses scénarios ; deux chapitres (décision chef de projet 2026-09-17) */
    --paddingMiniDiv: 8px 16px; /* padding de tout les blocs avec fond colorées */
    --paddingEtiquette: 3px 6px; /* padding des span et autres etiquette */
    --paddingCarte: 16px 20px;   /* intérieur d'une CARTE — son corps comme sa barre d'actions. La carte existe en trois exemplaires jumeaux (blocs.css, ilotScenarios.css, 55_scenariosCompatibles.css) : chacun recopiait le chiffre, ils lisent maintenant la même variable (décision chef de projet 2026-09-07) */
    --paddingCarteEtroit: 12px 20px; /* la même carte en fenêtre étroite, quand la barre d'actions passe sous le corps */
    --paddingCta: 15px 20px;     /* LE grand bouton : pleine largeur, min-width 180px, fonte --fCta16. La silhouette compacte, elle, prend --paddingCta14 (décision chef de projet 2026-09-07) */
    --paddingBadge: 4px 16px;    /* un badge en pilule, posé sur un bloc — pas la petite étiquette inline d'un récap, qui garde --paddingEtiquette */
    --paddingPastille: 6px 14px; /* une pastille NON cliquable : une étape, un état, un filtre posé */
    --paddingInput: 10px 12px;   /* l'intérieur d'un champ de saisie (--borderInput dit sa bordure) */
    --paddingCellule: 8px 16px 8px 0; /* une cellule de tableau : rien à gauche, la colonne commence au texte */
    --paddingCode: 12px 16px;    /* un bloc de code à recopier */
    --paddingLigneListe: 16px 0; /* une ligne LARGE d'une liste — une question qu'on déplie, un état vide. Les lignes ordinaires prennent --gapDefaut 0 */
    --paddingRecap: 10px 14px;   /* le rythme intérieur du récapitulatif de composition (blocs, actions, encadrés) */
    --paddingPage: 30px 40px;    /* l'enveloppe d'une page : .contenu, et les colonnes du bas de page */
    --paddingCarteLarge: 30px 25px; /* une carte qui doit respirer : une offre, une catégorie d'aperçu */
    --paddingRappel: 20px 40px 25px; /* une carte de rappel du compte (.divRappel), et tout bloc posé à côté d'elles sur la même page (.aide, .enAttente) : les titres et les textes tombent à l'aplomb */
    --paddingBandeau: 4rem;      /* le bandeau des aperçus, qui traverse la fenêtre sur grand écran */
    --retraitListeCourt: 20px;   /* le retrait d'un ul de liste courte — récap, progression, ul générique. Le retrait FRANC du rédactionnel est --retraitListe */
    --retraitListe: 40px;        /* le retrait d'un ul rédactionnel — article, chapitre, réponse de FAQ. Ce retrait franc dit que ces lignes sont un bloc à part, et non la suite du paragraphe */

    /* Boutons : un bouton ne choisit NI son padding, NI sa bordure, NI sa couleur
       (décision PO 2026-07-18). Il prend ces variables — ou pas de bordure, ou la
       couleur d'un rôle (primaire, danger, aperçu) — jamais une valeur à lui. */
    --paddingCta14V: 8px;                 /* l'air vertical d'un bouton compact, seul : la barre de pilotage en déduit sa hauteur (_studioIntegree.css) */
    --paddingCta14: var(--paddingCta14V) 16px; /* padding de tout bouton compact (.cta14, .ctaDiscret, toggles) */
    --borderCta: 1px solid var(--cNoir4); /* LA bordure d'un bouton : celle-ci ou aucune */
    --cCtaTexte: var(--cNoir2);         /* LE texte d'un bouton neutre : ce noir ou une couleur de rôle */
}

/* ============================================
   ACCENT — la couleur de l'espace où l'on est. Déclarée sur body, JAMAIS sur html
   ou :root : une variable dérivée (--cAccent_a, --cFormFocusHalo…) se calcule sur
   l'élément où elle est déclarée ; sur html elle figerait le bleu par défaut et la
   classe du body ne changerait plus que les valeurs directes.
   La classe du <body> choisit la teinte ; sans classe : bleu administration.
   Vitrine : baseVitrinePublic.twig pose bodyPageVitrine.
   Studio : studio/base.twig pose modeTester ou modeDiffuser selon l'onglet principal
   (la page se recharge à chaque changement de mode, pas de Turbo).
   Une règle qui a besoin d'Accent au niveau :root doit lire var(--cAccent…) sur
   l'élément concerné, pas déclarer une variable dérivée à la racine.
   ============================================ */

/* Bleu administration : compte, tarifs, données, Studio hors mode, onglet Préparer */
body {
    --cAccent0: #f1f4f8;
    --cAccent1: #e3eef8;
    --cAccent2: #accee8;
    --cAccent3: #436bc1;
    --cAccent4: #335bb1;
    --cAccent_a: linear-gradient(to bottom, var(--cAccent3), var(--cAccent4) 100%);
    --cAccent_ah: linear-gradient(to bottom, var(--cAccent3), var(--cAccent3) 100%);
    --cAccentt: #FFF;

    /* Focus des champs : l'accent, et son halo à 15 % */
    --cFormFocus: var(--cAccent3);
    --cFormFocusHalo: color-mix(in srgb, var(--cAccent3) 15%, transparent);
}

/* Vitrine, pages publiques : vert */
.bodyPageVitrine {
    --cAccent0: #f0f9f4;
    --cAccent1: #dcf2e5;
    --cAccent2: #9fd9b8;
    --cAccent3: #08914c;
    --cAccent4: #075524;
}

/* Studio, onglet Tester : violet */
.modeTester {
    --cAccent0: #f7f1f9;
    --cAccent1: #ecdcf3;
    --cAccent2: #d2a8e0;
    --cAccent3: #9b59b6;
    --cAccent4: #783b92;
}

/* Studio, onglet Diffuser : bleu diffusion */
.modeDiffuser {
    --cAccent0: #f0f6fb;
    --cAccent1: #e0eef8;
    --cAccent2: #a6cdea;
    --cAccent3: #308ed1;
    --cAccent4: #2572a9;
}

/* Bleu administration POSÉ SUR UN ÉLÉMENT, dans un autre espace (décision chef de projet
   2026-09-06) : un geste d'administration au milieu d'une page publique — créer un événement
   depuis la page d'une scène ou la page Configurer d'un scénario — se dit en bleu, pas dans
   la couleur de la page. Mêmes cinq valeurs que le body sans classe : c'est le même espace,
   ramené sur l'élément qui le porte (le bouton lui-même, pas sa barre : les voisins gardent
   la couleur de la page). Une règle qui lit var(--cAccent…) sur cet élément voit le bleu. */
.accentAdministration {
    --cAccent0: #f1f4f8;
    --cAccent1: #e3eef8;
    --cAccent2: #accee8;
    --cAccent3: #436bc1;
    --cAccent4: #335bb1;
}

/* ============================================
   TITRES ET TYPOGRAPHIE
   ============================================ */

h1, h2, h3 {
    color: var(--cNoir1);
}

h4 {
    color: var(--cNoir2);
}

h5, h6 {
    color: var(--cNoir3);
}

p, li {
    color: var(--cNoir2);
}

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

button {
    font: var(--fCta16);
}

h1 {
    font: var(--fH1);
    margin: 10px 15px 5px 0;
    padding: 0;
}

h2 {
    font: var(--fH2);
    margin: 15px 10px 5px 0;
    padding: 0;
}

h3 {
    font: var(--fH3);
    padding: 0;
    margin: 25px 0 15px;
}

h4, h5 {
    font: var(--fH4);
}

h4, h5, h6 {
    margin: 25px 0 7px;
}

/* <i> est utilisée comme balise de suffixe (#2, #3…) sur les noms d'éléments.
   La balise <em> remplace <i> pour l'italique sémantique. */
i {
    display: inline-block;
    font-size: 75%;
    font-weight: 700;
    font-style: italic;
    font-family: var(--ffMono);
}
/*!*********************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/30_base.css ***!
  \*********************************************************************************************************************/
/* inutilisé 2026-06-13
#divBody {
    max-width: 920px;
    margin: 0 auto;
    padding: 10px;
}
*/

.contenu {
    padding: 10px 40px;
}

.zoneFlash {
    max-width: 1155px;
    margin: 0 auto 20px;
    min-height: 38px; /* Hauteur d'un message flash (padding 12px * 2 + font 14px) */
}

/* Le message se détache sous le haut de page : centré, à la largeur de son texte, posé en
   ombre (décision chef de projet 2026-09-14). max-width : un message long revient à la ligne
   sur téléphone au lieu de déborder de l'écran. */
.zoneFlash .alertSucces,
.zoneFlash .alertErreur {
    margin: 20px auto 0;
    width: max-content;
    max-width: 100%;
    box-shadow: var(--ombrePortee);
}

/* Box de rappel (lecture seule) */
.divRappel {
    background: var(--cBlanc);
    border-left: var(--border);
    border-right: var(--border);
    padding: var(--paddingRappel);
    width: 335px;
    margin: 0;
}

/* L'aide masquable (composants/aide.css) prend le titre d'une carte : elle se pose à côté d'elles. */
.divRappel h3,
.aide h3 {
    padding: 0;
    margin: 0 0 var(--gapLarge) 0;
}

/* CTA dans les blocs divRappel : taille contenu, aligné à gauche */
.divRappel .ctaValider,
.divRappel .ctaSecondaire {
    width: fit-content;
    height: auto;
    text-align: left;
    justify-content: flex-start;
}

@media (max-width: 800px) {
    .contenu {
        padding: 10px 20px;
    }
}

/* inutilisé 2026-06-13
.divCentre {
    text-align: center;
    margin: 0 auto;
    max-width: 1200px;
    padding: 20px;
}
*/

body {
    font: var(--fText16);
    overflow-x: hidden;
    width: 100%;
    margin: 0;
    padding: 0;
    color: var(--cNoir1);
    background-color: var(--cBackground);
}

#bodyPage {
    max-width: 1280px;
    margin: 10px auto;
}

/* inutilisé 2026-06-13
.marge2 {
    margin: 5px auto;
    padding: 0 20px;
}
*/

@media all and (min-width: 750px) {
    /* inutilisé 2026-06-13
    .marge2 {
        margin: 10px auto;
        padding: 0 20px;
    }
    */
}

/* inutilisé 2026-06-13
#centrePage {
    max-width: 1440px;
    margin: 0 auto;
    width: 100%;
}

#divPage {
    margin: 25px 10px 50px;
    min-height: 25vh;
}

#quiSuisJe {
    display: flex;
    justify-content: space-between;
    flex-direction: row;
    font: var(--fLight14);
}
#quiSuisJeLogout {
    display: flex;
    align-items: center;
    gap: 6px;
    opacity: .7;
}

#quiSuisJeLogout:hover {
    background: transparent;
    color: var(--cAccent3);
    opacity: 1;
}
*/
/* inutilisé 2026-06-13
#divHeader {
    display: flex;
    align-items: center;
    justify-content: space-between;

}
*/
/* Liste à puces : le reset (00_reset.css) retire les puces de tout ul ; une liste qui doit
   les montrer le demande avec cette classe (décision chef de projet 2026-09-14) */
ul.listePuces {
    list-style-type: disc;
    padding-inline-start: var(--retraitListeCourt);
}

/*!********************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/31_cta.css ***!
  \********************************************************************************************************************/
button {
    user-select: none;
    -webkit-user-select: none;
    display: inline-block;
    cursor: pointer;
    margin: 0;
    color: var(--cAccent3);
    font: var(--fCta16);
    text-decoration: none;
}

button.ctaAnnuler {
    font: var(--fText16);
    color: var(--cAccent3);
    background: transparent;
    border: transparent;
    text-decoration: none;
}

/* button.lienBouton : un <button> qui a le visuel d'un lien (templates/CLAUDE.md, « Bouton
   ou lien ? ») — il prend exactement le style de a (décision chef de projet 2026-09-14) */
a,
button.lienBouton {
    color: var(--cAccent3);
    display: inline-block;
    text-decoration: none;
    padding: var(--gapReduit) 0;
}

button.lienBouton {
    font: var(--fText16);
    background: none;
    border: none;
}

a:focus,
button.lienBouton:focus {
    outline: none;
}

a:focus-visible,
button.lienBouton:focus-visible {
    box-shadow: 0 0 0 3px var(--cFormFocus);
}


button.ctaAnnuler,
a.ctaAnnuler {
    text-decoration: none;
    display: block;
    margin: 20px 0;
    padding: 0;
    color: var(--cNoir3);
}

button.btn, a.btn {
    min-width: 180px;
    cursor: pointer;
    border: 0;
    color: var(--cAccentt);
    background-color: var(--cAccent3);
    font: var(--fCta16);
    text-align: center;
    transition: all 0.3s;
    position: relative;
    padding: var(--paddingCta);
    margin: 10px 0;
    border-radius: var(--borderR1);
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    text-decoration: none;
    gap: var(--gapMoyen); /* aligné 10 -> 12px (échelle PO 2026-07-18) */
}

a.btn:hover, button.btn:hover {
    color: var(--cAccentt);
    background-color: var(--cAccent4);

}

/* inutilisé 2026-06-13
button.btn2, a.btn2 {
    min-width: 100px;
    display: block;
    cursor: pointer;
    border: 0;
    font: var(--fCta20);
    padding: 20px 40px;
    margin: 20px auto;
    text-align: center;
    transition: all 0.3s;
    color: var(--cTexte1);
    position: relative;
    background-repeat: round;
    width: fit-content;
    border-radius: 12px;
}

button#redirection.btn2 {
    background-color: transparent;
}

button#redirection.btn2:hover,
a.btn2:hover, button.btn2:hover {
    color: var(--cAccentt);
    background-color: var(--cAccent4);
}
*/

/* ============================================
   CTA COMPACT — socle .cta14

   LA silhouette des boutons d'action compacts (barres d'action, cartes) :
   forme, police, dimensions définies ici et nulle part ailleurs. Modèle :
   le bouton de la barre de contrôle aperçu (décision PO 2026-07-18).
   Se pose à côté du rôle qui apporte sa couleur : class="cta14 ctaPreviewControle".
   14 = la taille de police (--fMenu14). Silhouette formulaire à venir : .cta18.
   ============================================ */

.cta14 {
    display: inline-block; /* un <a> hors barre flex reste un bouton (padding vertical réel) */
    padding: var(--paddingCta14);
    font: var(--fMenu14);
    border: none;
    border-radius: var(--borderR1);
    cursor: pointer;
    /* Un bouton n'est jamais souligné, quelle que soit sa balise : la Vitrine souligne tous
       ses liens (vitrine.css, décision PO 2026-08-25), un <a class="cta14"> y était souligné
       comme un lien de paragraphe (décision chef de projet 2026-09-06). */
    text-decoration: none;
    transition: background 0.2s, color 0.2s, border-color 0.2s;
}

/* La silhouette compacte GAGNE sur un rôle qui porte aussi une silhouette : la page des
   tarifs de la Vitrine redéfinit .ctaOr en grand bouton de carte (offres.css : display block,
   grand padding, police 16), ce qui écrasait « cta14 ctaOr » — le petit bouton doré qui mène
   à l'offre du dessus (page « Mon studio », scènes réservées à une offre : décision chef de
   projet 2026-10-07). Même composition que « cta14 ctaPrimaire », même taille. */
.cta14.ctaOr {
    display: inline-block;
    width: auto;
    margin: 0;
    padding: var(--paddingCta14);
    font: var(--fMenu14);
    text-align: left;
    /* LE JAUNE PÂLE DU PETIT BOUTON (décision chef de projet 2026-10-08) : le jaune plein
       d'Amazon (--cOr3) est fait pour les gros boutons et l'onglet « Tarifs » ; sur un petit
       bouton posé dans une page aux tons neutres et pastel, il prenait le dessus sur tout le
       reste. Fond pâle (--cOr1), et une bordure jaune pour qu'on le voie comme un bouton et
       comme du jaune : c'est elle, plus que le fond, qui le détache de la page. Même épaisseur
       que les autres boutons (--borderCta), seule la couleur change. */
    background: var(--cOr1);
    border: var(--borderCta);
    border-color: var(--cOr3);
}

.cta14.ctaOr:hover {
    background: var(--cOr2);
    border-color: var(--cOr4);
}

/* LE PETIT BOUTON EN JAUNE PLEIN (décision chef de projet 2026-10-14) : la même silhouette
   compacte, les couleurs du gros bouton des tarifs (.ctaOr). Pour le bouton qui est SEUL et
   doit se voir : « Mon studio », la limite d'événements atteinte du Studio. Là où il revient
   souvent (vignettes, listes de scénarios, page d'une scène), le jaune pâle reste. */
.cta14.ctaOr.ctaOrPlein {
    background: var(--cOr3);
    border-color: var(--cOr3);
    color: var(--cOrt);
}

.cta14.ctaOr.ctaOrPlein:hover {
    background: var(--cOr4);
    border-color: var(--cOr4);
}

.cta14:disabled {
    opacity: 0.4;
    cursor: auto;
}

/* Rôle action principale : LE bouton qui fait la chose pour laquelle la page existe
   (créer un événement…), en Accent — la couleur de l'espace, ou celle qu'un
   .accentAdministration pose sur lui. Un seul rôle, défini ici et nulle part ailleurs
   (décision chef de projet 2026-09-06) : pas de CSS par bouton. */
.ctaPrimaire {
    background: var(--cAccent3);
    color: var(--cAccentt);
}

.ctaPrimaire:hover {
    background: var(--cAccent4);
    color: var(--cAccentt);
}

/* Rôle offre : LE bouton qui mène aux offres et aux tarifs — Or, la couleur du prix et de
   l'inscription (couleurs.md). L'encadré « limite d'événements » du Studio. */
.ctaOr {
    background: var(--cOr3);
    color: var(--cOrt);
}

.ctaOr:hover {
    background: var(--cOr4);
    color: var(--cOrt);
}

/* Rôle aperçu : LE bouton qui lance un aperçu — violet aperçu, partout
   (catalogue, page Modifier, fiches d'animation). Un aperçu = violet,
   décision PO 2026-07-18. */
.ctaPreview {
    background: var(--cAccent_a);
    color: var(--cBlanc);
}

.ctaPreview:hover {
    background: var(--cAccent_ah);
}

/* ============================================
   BADGE MODE TEST - Réutilisable partout
   ============================================ */

.badgeModeTest {
    display: inline-block;
    padding: var(--paddingBadge);
    font: var(--fLabel);
    color: var(--cBlanc);
    background: var(--cAccent3);
    border-radius: 10px;
    margin: 10px 0;
}
/*!******************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/form.css ***!
  \******************************************************************************************************************/
fieldset {
    background-color: var(--cBlanc);
    border: var(--border);
    border-radius: var(--borderR1);
    margin: 10px 0;
    padding: 20px;
}

fieldset h3 {
    margin: 0 0 0.9375rem;
    color: var(--cAccent3);
}

hr {
    margin: 30px 0;
    border-top: var(--border);
    border-bottom: none;
}

hr.mini {
    margin: 10px 0;
    border-top: var(--border);
    border-bottom: none;
}

/* inutilisé 2026-06-13
#imgForm {
    max-width: 690px;
    width: 100%;
    margin: 15px 0;
}

#imgForm > div:last-child {
    aspect-ratio: 1100/449;
    max-width: 690px;
    width: 100%;
    margin-top: 60px;
    margin-bottom: 200px;
    background-size: contain;
    border: none;
    display: none;
}

#divForm {
    max-width: 690px;
    padding: 0 5px;
}

#divGlobalForm {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    text-align: center;
    gap: 10px;
}
*/


@media all and (min-width: 1500px) {
    /* inutilisé 2026-06-13
    #divGlobalForm {
        flex-direction: row;
        align-items: center;
        justify-content: center;
        gap: 30px;
    }

    #divForm div:last-child {
        display: block;
    }

    #divForm {
        padding: 0 30px;
    }

    #imgForm div:last-child {
        display: block;
    }
    */
}

/* inutilisé 2026-06-13
input.phNoir::placeholder {
    color: var(--cNoir);
}
*/

label {
    display: flex;
    align-items: baseline;
    font: var(--fLabel);
    margin: 0 0 2px;
    padding: 0;
    color: var(--cNoir1);
    user-select: none;
}

/* Label facultatif : couleur atténuée */
label:has(.facultatif) {
    color: var(--cNoir3);
}

/* Conteneur désactivé (champ disabled) */
.disabledDiv {
    opacity: 0.5;
}

input, select, textarea {
    width: 100%;
    border: var(--borderInput);
    border-radius: var(--borderR1);
    padding: 7px 8px;
    font: var(--fText16);
    color: var(--cNoir2);
    box-sizing: border-box;
}

/* Inputs spéciaux : pas de width 100% */
input[type="color"],
input[type="checkbox"],
input[type="radio"],
input[type="range"] {
    width: auto;
}

/* Un nombre tient en huit chiffres : son champ a la même largeur partout et se lit comme un petit
   nombre (chef de projet, 2026-09-27). La largeur ajoute aux chiffres le retrait (8px de chaque
   côté) et les flèches. */
input[type="number"] {
    width: calc(8ch + 40px);
    max-width: 100%;
}

/* Un menu déroulant prend la largeur de son plus long choix, pas celle de la ligne.
   fit-content et non auto : dans un conteneur flex, auto laisse le menu s'étirer. */
select {
    width: fit-content;
    max-width: 100%;
}

/* Input couleur */
input[type="color"] {
    padding: 2px;
    height: 40px;
    min-width: 60px;
    cursor: pointer;
}

/* Champ désactivé — et champ brut d'un formulaire figé : les sections entrées et lots de
   la page « Configuration » d'un aperçu sont du HTML brut, sans attribut `disabled`. Même
   trait pointillé sur fond retiré : on lit la valeur, on voit qu'on ne la saisit pas. */
input:disabled,
select:disabled,
textarea:disabled,
.formulaireFige input:not([type="checkbox"]):not([type="radio"]),
.formulaireFige select,
.formulaireFige textarea {
    background: none;
    border: 1px dashed var(--cBlanc5);
    pointer-events: none;
}

input[type="file"] {
    padding: 5px;
    cursor: pointer;
    background: var(--cBlanc);
}

input[type="file"]::file-selector-button {
    font: var(--fText16);
    color: var(--cBlanc);
    background: var(--cAccent3);
    border: none;
    border-radius: var(--borderR1);
    padding: 6px 12px;
    cursor: pointer;
    margin-right: 10px;
}

input[type="file"]::file-selector-button:hover {
    background: var(--cAccent4);
}

input::placeholder,
textarea::placeholder {
    color: var(--cNoir5);
}

textarea::placeholder {
    white-space: pre-line;
}


label .facultatif /*, label .facultatifSpan, label .modifiable (inutilisé 2026-06-13) */ {
    display: inline;
    color: var(--cAccent4);
    font: var(--fLight14);
    padding-left: 10px;
    text-transform: lowercase;
}

/* Cacher "Facultatif" sur les champs conditionnels */
label.sansFacultatif .facultatif {
    display: none;
}

/* Textes d'aide */
form small,
form small a,
.help-text {
    color: var(--cNoir4);
    display: block;
    font: var(--fLight14);
    margin-left: 0;
    max-width: calc(100vw - 85px);
    padding: 2px 0;
}

.help-text.help-alerte {
    color: var(--cRouge4);
}
/* inutilisé 2026-06-13
div.cbForm input {
    cursor: pointer;
    width: auto;
    margin-top: 0;
}

div.cbForm label {
    cursor: pointer;
    text-align: justify;
}
*/

form {
    margin: 0 auto;
    padding: 0;
    text-align: left;
    max-width: 600px;
    min-width: auto;
    width: 100%;
}

/* Le formulaire du bouton d'action (_boutonAction.twig) n'est qu'un moyen d'envoyer un POST :
   il ne prend aucune place. Sans ça, il recevait la mise en page des formulaires de saisie
   (600px au plus, centré) et le bouton ne se dessinait pas comme le même bouton en lien : sur
   une carte d'offre en une colonne, « Accéder aux services » (un <button> dans ce formulaire)
   faisait 600px quand « Passer à Essential » (un lien) prenait toute la carte (vu par le chef
   de projet 2026-10-15). Le bouton se place désormais comme le ferait un lien au même endroit. */
form.formBoutonAction {
    display: contents;
}

/* inutilisé 2026-06-13
form > div > div.rowForm div {
    margin: 5px 0;
}

form > div.rowForm {
    margin: 0;
}

form > div.rowForm div.rowFormDownTxt {
    margin: 0 20px;
}

form > div.rowForm div.rowFormDownTxt > div {
    display: flex;
    justify-content: center;
    align-items: center;
    border: 3px solid var(--cBlanc03);
    border-radius: 10px;
    margin: 0;
    font: var(--fLight14);
    text-align: center;
    height: 100%;
    width: 100%;
    background-color: var(--cBlanc);
}
*/

/* inutilisé 2026-06-13
.infoLight {
    opacity: .8;
}
*/

/* inutilisé 2026-06-13
#formGainImg {
    grid-column: 1 / 2;
}

#formFormulaire {
    grid-column: 2 / 3;
    max-width: 320px;
}

p#pML {
    margin: 0 10% 0 38%;
    grid-column: 1/3;
}
*/

/* inutilisé 2026-06-13
.rowForm {
    display: grid;
    grid-template-columns: 100% 0%;
}

.rowForm ul {
    color: var(--cRouge3);
    margin-block-start: 3px;
    margin-block-end: 3px;
    padding: 10px 0 0;
}
*/

/* Checkbox (.divCb) - Structure : .divCb > input + label > .svgCb + texte */
.divCb {
    position: relative;
    margin: 5px 0;
}

.divCb input[type="checkbox"] {
    position: absolute;
    opacity: 0;
    cursor: pointer;
    width: 0;
    height: 0;
}

.divCb label {
    display: flex;
    align-items: center;
    gap: var(--gapDefaut);
    cursor: pointer;
    margin: 0;
}

/* Case à cocher ou bouton radio désactivé : même atténuation du label (SVG + texte) —
   sélecteur élargi au radio (.divRb), qui n'avait aucune marque de désactivation. */
.divCb input[type="checkbox"]:disabled ~ label,
.divRb input[type="radio"]:disabled ~ label {
    opacity: 0.65;
}

.svgCb {
    width: 22px;
    height: 22px;
    color: var(--cBlanc);
    flex-shrink: 0;
}

.svgCb .checked {
    display: none;
}

.svgCb .checked path {
    fill: var(--cNoir1);
}

input[type="checkbox"]:checked ~ label .svgCb .checked {
    display: block;
}

/* inutilisé 2026-08-09 — plus aucun _checkbox.svg (Studio ni Vitrine) ne porte de .fondCb
input[type="checkbox"]:checked ~ label .svgCb .fondCb {
    fill: var(--cForm);
}
*/

.divCbSupp input[type="checkbox"]:checked ~ label .svgCb svg .checked path {
    fill: var(--cRouge3);
}

/* Radio button (.divRb) - Structure : .divRb > input + label > .svgRb + texte */
.divRb {
    position: relative;
    margin: 8px 0 5px;
}

.divRb input[type="radio"] {
    position: absolute;
    opacity: 0;
    cursor: pointer;
    width: 0;
    height: 0;
}

.divRb label {
    display: flex;
    align-items: center;
    gap: var(--gapDefaut);
    cursor: pointer;
    margin: 0;
}

.svgRb {
    width: 22px;
    height: 22px;
    color: var(--cBlanc);
    flex-shrink: 0;
}

.svgRb .checked {
    display: none;
}

input[type="radio"]:checked ~ label .svgRb .checked {
    display: block;
}

input[type="radio"]:checked ~ label .svgRb .fondCb {
    fill: var(--cForm);
}

/* ==========================================================================
   FORMULAIRE FIGÉ — la page « Configuration » d'un aperçu (previewSceneConfig.twig)
   montre le formulaire d'une scène sans le rendre saisissable.
   ========================================================================== */

.formulaireFige {
    pointer-events: none;
    opacity: 0.85;
}

/* Toggles (sources de participants) et pilules (slots de lots) : HTML brut, sans attribut
   `disabled` — sans cette atténuation ils gardent l'apparence d'un contrôle actif. Même
   valeur que les cases à cocher et les boutons radio désactivés. */
.formulaireFige .toggleAvecLabel {
    opacity: 0.65;
}

/* inutilisé 2026-06-13
#uploadBtn1:focus {
    box-shadow: 0 0 0 2px var(--cForm);
}
*/

input:focus,
select:focus,
textarea:focus {
    border-color: var(--cFormFocus);
    outline: 2px solid var(--cFormFocus);
}

label small {
    display: inline-block;
    transform: translateY(-6px);
}

/* inutilisé 2026-06-13
.rowFormDownTxt {
    display: none;
}
*/

/* inutilisé 2026-06-13
#homeDivHaut {
    padding: 15px 15px 1px;
}

#homeDiv button.btn {
    bottom: 47px;
}

.formulaire #accrochePage {
    margin-bottom: -60px;
}

#homeDivBas {
    padding: 1px;
    margin: auto;
    width: 80%;
    text-align: center;
}
*/

/* inutilisé 2026-06-13
.rowOptin1,
.rowOptin2,
.rowOptin3,
.rowOptin4 {
    position: relative;
    margin: 5px 0;
}

.rowOptin1 label a {
    padding: 0;
}
*/


/* inutilisé 2026-06-13
#divForm div #loadingBarSpinner {
    display: none;
    justify-content: center;
    margin: 20px;
    font: var(--fLabel);
    color: var(--cTexte1);
    padding: 15px 30px;
}
*/

/* inutilisé 2026-06-13
#spinnerIcon {
    display: inline-block;
    width: 18px;
    height: 18px;
    margin-right: 10px;
    border: solid 2px transparent;
    border-top-color: var(--cTexte1);
    border-left-color: var(--cTexte1);
    border-radius: 50%;
    animation: animeSpinnerIcon 1000ms linear infinite;
}

@keyframes animeSpinnerIcon {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}
*/

.ctaSupprimer,
.ctaSecondaire,
.ctaValider /*, .ctaValider2 (inutilisé 2026-06-13) */ {
    width: 100%;
    /* Hauteur minimale, pas fixe : un libellé sur deux lignes (« Changer mon mot de passe »)
       se faisait couper en bas (vu en production le 2026-10-13). */
    min-height: 50px;
    padding: 10px 20px;
    margin-top: 20px;
    margin-bottom: 8px;
    cursor: pointer;
    font: var(--fCta16);
    border-radius: var(--borderR1);
}

.ctaSecondaire {
    display: block;
    text-align: center;
    border: 2px solid var(--cAccent3);
    background: var(--cBlanc);
    color: var(--cAccent3);
}

.ctaValider /*, .ctaValider2 (inutilisé 2026-06-13) */ {
    border: none;
    background: var(--cAccent_a);
    color: var(--cAccentt);
}

/* Un lien habillé en bouton de validation (« Aller à mon studio ») : un <button> centre son
   libellé tout seul, un <a> non — le texte restait en haut à gauche de la zone bleue
   (décision chef de projet 2026-10-14). */
a.ctaValider {
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

.ctaSupprimer {
    border: 2px solid var(--cBlanc03);
    color: var(--cRouge4);
}

.ctaValider:hover /*, .ctaValider2:hover (inutilisé 2026-06-13) */ {
    background: var(--cAccent_ah);
    color: var(--cAccentt);
}

.ctaValider:disabled,
/* .ctaValider2:disabled, (inutilisé 2026-06-13) */
.ctaSecondaire:disabled,
.ctaSupprimer:disabled {
    opacity: 0.4;
    cursor: wait;
    pointer-events: none;
    filter: grayscale(1);
}

.formulaire {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto;
}

@media (min-width: 650px) {

    .formulaire {
        grid-template-columns: 1fr 1fr;
        grid-template-rows: auto;
        gap: 0 var(--gapListe); /* aligné 30 -> 32px (échelle PO 2026-07-18) */
    }

    /* inutilisé 2026-06-13
    .formulaireBorne {
        grid-column: 1 / 2;
        grid-row: 1 / 2;
    }

    .formulaireDate {
        grid-column: 1 / 2;
        grid-row: 2 / 3;
    }

    .formulaireCommercial {
        grid-column: 1 / 2;
        grid-row: 3 / 4;
    }

    .formulaireMagasin {
        grid-column: 2 / 3;
        grid-row: 1 / 5;
        display: grid;
    }
    */

}

/* inutilisé 2026-06-13
p#messageDate {
    color: var(--cNoir3);
    font-style: italic;
}

p#messageDate.erreurDate,
p#messageDate2.erreurDate {
    color: var(--cRouge3);
    font-style: normal;
}
*/

fieldset ul {
    margin: 0 0 10px 0;
}

fieldset ul li {
    color: var(--cRouge3);
}

/* inutilisé 2026-06-13
.imgBorne {
    max-width: 100%;
    height: auto;
    margin: 0 auto;
    display: block;
}
*/

label.required {
    position: relative;
    width: max-content;
}
/* inutilisé 2026-06-13
label.required2:after {
    content: "*";
    margin-left: 3px;
    color: var(--cNoir2);
}
*/

textarea {
    width: 100%;
    height: 100px;
    resize: vertical;
    border-bottom-right-radius: 0;
}
/*!*********************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/42_auth.css ***!
  \*********************************************************************************************************************/
/* ==========================================================================
   Pages d'authentification (login, register, inscription)
   ========================================================================== */

.authForm {
    padding: 40px 20px 20px;
    display: flex;
    justify-content: center;
}

/* L'encadré et ce qui se pose SOUS lui, empilés et centrés (décision chef de projet
   2026-09-12). `.authForm` juste au-dessus est une RANGÉE : un second enfant s'y placerait à
   côté de la boîte, pas dessous. D'où cette colonne intermédiaire.
   Posée par la brique noyau/_/_boiteFormulaire.twig autour de chaque boîte ; les règles vivent
   ici parce que c'est le CSS des pages d'authentification, et le seul que ces pages chargent
   (entrée webpack `noyau`). */
.authColonne {
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* LA SORTIE, sous l'encadré blanc et centrée dessous : ces pages n'ont ni menu ni pied de
   page, sans elle on ne peut plus repartir. Marge courte — détachée de la boîte, mais assez
   proche pour se voir sans la chercher. */
.authRetourAccueil {
    margin: 16px 0 0;
    text-align: center;
    font: var(--fText16);
}

/* La phrase qui dit pourquoi on est là, quand on arrive du parcours « créer un événement ».
   Un paragraphe, pas un bandeau : rien n'a réussi, il reste une étape à franchir. */
.entreePourCreer {
    font: var(--fText16);
    text-align: center;
    margin: 0 0 20px;
}

/* Box de connexion / inscription */
.boxCenterForm {
    background: var(--cBlanc);
    border: var(--border);
    border-radius: var(--borderR2);
    padding: 30px 40px 40px;
    /* Une largeur fixe, pas un pourcentage : le parent (.authColonne) prend la largeur de son
       contenu, et 95 % de lui faisaient varier la boîte selon l'étape et la langue. Sur
       téléphone, l'écran moins les 2 × 20 px de .authForm. */
    width: min(400px, 100vw - 40px);
    box-shadow: 0 2px 10px var(--cOmbre);
    margin: 0;
}

.boxCenterForm h3 {
    padding: 0;
    margin: 0 0 20px 0;
    text-align: center;
}

/* inutilisé 2026-06-13
.boxCenterForm .sousTitre {
    font: var(--fLight14);
    text-align: center;
    margin: 0 0 20px 0;
}
*/

form > div {
    margin-bottom: 15px;
}

.boxCenterForm .ctaValider {
    margin-top: 5px;
}

/* Actions du formulaire (valider + annuler) */
.formActions {
    margin-top: 10px;
}

/* inutilisé 2026-06-13
.formActionsFlex {
    margin-top: 10px;
}

@media (min-width: 500px) {
    .formActionsFlex {
        display: flex;
        flex-direction: row-reverse;
        gap: 15px;
    }

    .formActionsFlex .ctaValider,
    .formActionsFlex .ctaSecondaire {
        width: auto;
        flex: 0 1 auto;
    }
}
*/

/* Alertes */
.alertErreur,
.alertErreurOAuth,
.alertSucces {
    background: var(--cRouge4);
    color: var(--cBlanc);
    padding: var(--paddingMiniDiv);
    margin-bottom: 20px;
    font: var(--fText16);
}

/* Message d'erreur inline OAuth */
.alertErreurOAuth {
    margin-top: 10px;
}

.alertSucces {
    background: var(--cSucces0);
    border: 1px solid var(--cSucces3);
    color: var(--cSucces4);
}

/* Lien vers autre page auth */
/* inutilisé 2026-06-13
.lienAuth {
    text-align: center;
    margin-top: 25px;
    padding-top: 20px;
    border-top: var(--border);
    font: var(--fLight14);
    font-style: normal;
}

.lienAuth a {
    color: var(--cAccent3);
}

.lienAuth a:hover {
    color: var(--cBlanc);
    background: var(--cAccent4);
}
*/

/* Séparateur OAuth */
.boxCenterForm hr {
    margin: 50px 0;
    border: none;
    border-top: var(--border);
}

/* Séparateur avec espace blanc */
hr.separateur {
    margin: 30px 0;
    border: none;
    border-top: var(--border);
}

/* Petit trait (hr.mini) dans la boîte : il garde sa marge réduite, que la règle du séparateur
   OAuth (.boxCenterForm hr, 50px) écraserait. Il sépare les notes du formulaire. */
.boxCenterForm hr.mini {
    margin: 20px 0 0;
}

/* Bouton OAuth */
.btnOAuth {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: flex-start;
    gap: var(--gapLarge); /* aligné 16 -> 20px (échelle PO 2026-07-18) */
    width: 100%;
    padding: 8px 12px;
    border: 1px solid var(--cNoir1);
    border-radius: var(--borderR1);
    background: var(--cBlanc);
    color: var(--cNoir1);
    font: var(--fCta16);
    text-align: left;
    cursor: pointer;
    transition: all 0.2s;
}

.btnOAuth:hover {
    background: var(--cAccent0);
    color: var(--cNoir1);
}

.btnOAuth svg {
    width: 40px;
    height: 40px;
}

/* État de chargement du formulaire */
.formEnChargement {
    pointer-events: none;
}

.formEnChargement input,
.formEnChargement select,
.formEnChargement textarea,
.formEnChargement label {
    opacity: 0.5;
}


/* Notes d'un formulaire, à la façon de Wikipédia : le libellé d'une case porte un « ¹ » en
   exposant, sans lien, et le document se lit dans la note sous le formulaire. Aucun lien dans
   le libellé : cliquer sur la case ne doit pas risquer d'ouvrir un document à la place
   (décision chef de projet 2026-10-15). */
.notesFormulaire {
    margin: var(--gapDefaut) 0 0;
    padding: 0 0 0 1.4em;
    font: var(--fText16);
    color: var(--cNoir2);
}

.notesFormulaire li {
    margin: 4px 0;
}

/*!***********************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./assets/noyau/css/composants/champCode6.css ***!
  \***********************************************************************************************************************************/
/**
 * Composant Champ de code à 6 chiffres
 *
 * Six cases dessinées (.champCode6Case), un seul vrai champ posé par-dessus, transparent :
 * voir ts/composants/champCode6.ts. Le champ n'est pas masqué (opacity) mais rendu
 * transparent : sur iPhone, un champ masqué ne propose plus « Coller » à l'appui long.
 */

.champCode6Cases {
    position: relative;
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: var(--gapDefaut);
}

.champCode6Case {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 4 / 5;
    border: var(--borderForm);
    border-radius: var(--borderR2);
    background: var(--cBlanc);
    color: var(--cNoir1);
    font: var(--fMono24b);
}

.champCode6Case.caseActive {
    border-color: var(--cFormFocus);
    box-shadow: 0 0 0 3px var(--cFormFocusHalo);
}

/* Le vrai champ couvre les six cases : un toucher n'importe où l'active, l'appui long y colle.
   16px : en dessous, iOS zoome sur le champ à la saisie. */
.champCode6Cases input.champCode6 {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    border: none;
    background: transparent;
    color: transparent;
    caret-color: transparent;
    font: var(--fText16);
    cursor: text;
}

.champCode6Cases input.champCode6::selection {
    background: transparent;
}

.champCode6Cases input.champCode6:focus {
    outline: none;
    box-shadow: none;
}

/* « Coller le code » : centré sous les cases */
button.champCode6Coller:not([hidden]) {
    display: block;
    margin: var(--gapMoyen) auto 0;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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LG9CQUFvQjtJQUNwQixvQkFBb0I7QUFDeEI7O0FBRUE7SUFDSSxhQUFhO0FBQ2pCOzs7OztBQzFOQTs7Ozs7O0VBTUU7O0FBRUY7SUFDSSxrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLHFDQUFxQztJQUNyQyxxQkFBcUI7QUFDekI7O0FBRUE7SUFDSSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixtQkFBbUI7SUFDbkIseUJBQXlCO0lBQ3pCLDhCQUE4QjtJQUM5Qix5QkFBeUI7SUFDekIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtBQUN6Qjs7QUFFQTtJQUNJLCtCQUErQjtJQUMvQiwyQ0FBMkM7QUFDL0M7O0FBRUE7MkRBQzJEO0FBQzNEO0lBQ0ksa0JBQWtCO0lBQ2xCLFFBQVE7SUFDUixXQUFXO0lBQ1gsWUFBWTtJQUNaLFNBQVM7SUFDVCxVQUFVO0lBQ1YsWUFBWTtJQUNaLHVCQUF1QjtJQUN2QixrQkFBa0I7SUFDbEIsd0JBQXdCO0lBQ3hCLG9CQUFvQjtJQUNwQixZQUFZO0FBQ2hCOztBQUVBO0lBQ0ksdUJBQXVCO0FBQzNCOztBQUVBO0lBQ0ksYUFBYTtJQUNiLGdCQUFnQjtBQUNwQjs7QUFFQSwrQ0FBK0M7QUFDL0M7SUFDSSxjQUFjO0lBQ2QsOEJBQThCO0FBQ2xDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc29mLy4vYXNzZXRzL25veWF1L2Nzcy8wMF9yZXNldC5jc3MiLCJ3ZWJwYWNrOi8vc29mLy4vYXNzZXRzL25veWF1L2Nzcy8xMF9mb250LmNzcyIsIndlYnBhY2s6Ly9zb2YvLi9hc3NldHMvbm95YXUvY3NzLzMwX2Jhc2UuY3NzIiwid2VicGFjazovL3NvZi8uL2Fzc2V0cy9ub3lhdS9jc3MvMzFfY3RhLmNzcyIsIndlYnBhY2s6Ly9zb2YvLi9hc3NldHMvbm95YXUvY3NzL2Zvcm0uY3NzIiwid2VicGFjazovL3NvZi8uL2Fzc2V0cy9ub3lhdS9jc3MvNDJfYXV0aC5jc3MiLCJ3ZWJwYWNrOi8vc29mLy4vYXNzZXRzL25veWF1L2Nzcy9jb21wb3NhbnRzL2NoYW1wQ29kZTYuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIiosIDo6YWZ0ZXIsIDo6YmVmb3JlIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5ib2R5IHtcbiAgICBtYXJnaW46IDA7XG59XG5cbnVsIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDA7XG59IiwiaHRtbCB7XG4gICAgLyogSWwgZXN0IGludGVyZGl0IGRlIHJham91dGVyIGRlcyBjb3VsZXVycyBzYW5zIGRlbWFuZGVyIGwnYWNjb3JkIGR1IFBPICovXG4gICAgLS1jQmxhbmMxOiB2YXIoLS1jQmxhbmMpO1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jQmxhbmMxcDogI0UwRTBFMDsgKi9cbiAgICAtLWNCbGFuYzAyOiAjRjVGNUY1O1xuICAgIC0tY0JsYW5jMjogI0YwRjBGMDtcbiAgICAtLWNCbGFuYzAzOiAjZGNlMWVhO1xuICAgIC0tY0JsYW5jMzogI0NDQ0ZDQztcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0JsYW5jNDogI0FBQUZBQTsgKi9cbiAgICAtLWNCbGFuYzU6ICM5OTlDOTk7XG5cblxuICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgQ09VTEVVUlMgVEVYVEUgTk9JUiAtIFVUSUxJU0FUSU9OIE9CTElHQVRPSVJFXG4gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAgIC8qIC0tY05vaXIxIDogw4lMw4lNRU5UUyBEJ0VNUEhBU0VcbiAgICAgICAtIFRpdHJlcyA6IGgxLCBoMiwgaDNcbiAgICAgICAtIFRleHRlIGRlcyBib3V0b25zIChxdWFuZCBwYXMgZGUgY291bGV1ciBkw6lmaW5pZSlcbiAgICAgICAtIExhYmVscyBvYmxpZ2F0b2lyZXMgKHJlcXVpcmVkKVxuICAgICAgIC0gTWVudXMgZGUgbmF2aWdhdGlvblxuICAgICAgIC0gQ2hlY2tib3ggZXQgcmFkaW8gYm91dG9uc1xuICAgICAgIC0gVmFsZXVyIHByaW5jaXBhbGUgZGFucyBsZXMgY29tcHRldXJzIChleDogXCIzXCIgZGFucyBcIjMgLyA1XCIpXG4gICAgKi9cbiAgICAtLWNOb2lyMTogIzE4MTgxODtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY05vaXIxbzogIzE4MTgxODU1OyAqL1xuXG4gICAgLyogLS1jTm9pcjIgOiBDT1JQUyBERSBURVhURVxuICAgICAgIC0gUGFyYWdyYXBoZXMgPHA+XG4gICAgICAgLSBMaXN0ZXMgPGxpPiwgw6ludW3DqXJhdGlvbnNcbiAgICAgICAtIExhYmVscyBmYWN1bHRhdGlmc1xuICAgICAgIC0gVGV4dGUgc2Fpc2kgZGFucyBsZXMgaW5wdXRzXG4gICAgICAgLSBUaXRyZXMgaDQsIGg1LCBoNlxuICAgICAgIC0gVmFsZXVyIHNlY29uZGFpcmUgZGFucyBsZXMgY29tcHRldXJzIChleDogXCIvIDVcIiBkYW5zIFwiMyAvIDVcIilcbiAgICAqL1xuICAgIC0tY05vaXIyOiAjMjgyODI4O1xuXG4gICAgLyogLS1jTm9pcjMgOiBURVhURSBURVJUSUFJUkVcbiAgICAgICAtIFBsYWNlaG9sZGVyc1xuICAgICAgIC0gTWVzc2FnZXMgZCdhaWRlIGRpc2NyZXRzXG4gICAgICAgLSBUZXh0ZSBkw6lzYWN0aXbDqVxuICAgICovXG4gICAgLS1jTm9pcjM6ICM1NTU7XG5cbiAgICAvKiAtLWNOb2lyNC01IDogVEVYVEUgVFLDiFMgQVRUw4lOVcOJXG4gICAgICAgLSDDiWzDqW1lbnRzIGTDqXNhY3RpdsOpc1xuICAgICAgIC0gVGV4dGUgZMOpY29yYXRpZlxuICAgICovXG4gICAgLS1jTm9pcjQ6ICM5OTk7XG4gICAgLS1jTm9pcjU6ICNCQkI7XG4gICAgLS1jQmxhbmM6ICNGRkY7XG4gICAgLS1jTm9pcjogIzAwMDtcbiAgICAtLWNUZXh0ZTE6ICMyMjI7XG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNUZXh0ZTI6ICM0NDQ7ICovXG4gICAgLS1jRm9ybTogIzAwMDtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0Zvcm1fYjogIzU1NTsgKi9cblxuICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgICAgUEFMRVRURVMgREUgUsOUTEUg4oCUIHVuZSBzZXVsZSBmb3JtZSwgOCBwYWxpZXJzLCB0b3Vqb3VycyBub21tw6lzIHBhcmVpbFxuICAgICAgIDAgZm9uZCB0csOocyBww6JsZSDCtyAxIGZvbmQgcMOibGUgwrcgMiBib3JkdXJlIC8gbW95ZW4gwrcgMyBjb3VsZXVyIHBsZWluZSAoYm91dG9uLCBsaWVuLFxuICAgICAgIG9uZ2xldCBhY3RpZiwgaW5kaWNhdGV1cikgwrcgNCBmb25jw6kgLyBzdXJ2b2wgwrcgX2EgZMOpZ3JhZMOpIMK3IF9haCBkw6lncmFkw6kgYXUgc3Vydm9sIMK3XG4gICAgICAgdCB0ZXh0ZSBwb3PDqSBzdXIgbGEgY291bGV1ciBwbGVpbmUuXG4gICAgICAgQWNjZW50IGVzdCBsYSBjb3VsZXVyIGRlIGwnZXNwYWNlIG/DuSBsJ29uIGVzdCA6IGVsbGUgY2hhbmdlIHBhciB1bmUgY2xhc3NlIHN1ciA8Ym9keT5cbiAgICAgICAodm9pciBsZSBibG9jIGFwcsOocyBodG1se30pLiBPciwgUm91Z2UgZXQgU3VjY2VzIG5lIGNoYW5nZW50IGphbWFpcy5cbiAgICAgICBEw6ljaXNpb24gUE8gMjAyNi0wOS0wNS4gQXVjdW5lIGF1dHJlIGNvdWxldXIgZGUgcsO0bGUgbidlc3QgYWRtaXNlLlxuICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbiAgICAvKiBBY2NlbnQgOiB2b2lyIGxlIGJsb2MgYm9keSB7IH0gYXByw6hzIGh0bWwgeyB9LiBFbGxlIHZpdCBzdXIgYm9keSwgcGFzIGljaSDigJQgdW5lXG4gICAgICAgdmFyaWFibGUgZMOpcml2w6llIChkw6lncmFkw6ksIGhhbG8pIHNlIGNhbGN1bGUgbMOgIG/DuSBlbGxlIGVzdCBkw6ljbGFyw6llLCBldCBkb2l0IGRvbmNcbiAgICAgICDDqnRyZSBkw6ljbGFyw6llIHN1ciBsZSBtw6ptZSDDqWzDqW1lbnQgcXVlIGxhIGNsYXNzZSBxdWkgY2hhbmdlIGxhIGNvdWxldXIuICovXG5cbiAgICAvKiBPciDigJQgcydpbnNjcmlyZSwgY29ubmV4aW9uLCB0YXJpZiwgbWlzZSBlbiBhdmFudCAqL1xuICAgIC0tY09yMDogI2ZlZmNlODtcbiAgICAtLWNPcjE6ICNmZWYzYzc7XG4gICAgLS1jT3IyOiAjZjVkOTZiO1xuICAgIC0tY09yMzogI0ZGRDgxNDsgLyogbCdvciBkJ0FtYXpvbiwgdGV4dGUgZm9uY8OpIGRlc3N1cyAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMTAtMDcpICovXG4gICAgLS1jT3I0OiAjRkZDRTEyOyAvKiBzb24gc3Vydm9sICovXG4gICAgLS1jT3JfYTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tY09yMyksIHZhcigtLWNPcjQpIDEwMCUpO1xuICAgIC0tY09yX2FoOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB2YXIoLS1jT3IzKSwgdmFyKC0tY09yMykgMTAwJSk7XG4gICAgLS1jT3J0OiAjMTgxODE4OyAvKiBmb25jw6kgOiBsZSBibGFuYyBzdXIgLS1jT3IzIG5lIGZhaXNhaXQgcXVlIDIsMDoxIGRlIGNvbnRyYXN0ZSwgOCw4OjEgYWluc2kgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTEwLTA3KSAqL1xuXG4gICAgLyogUm91Z2Ug4oCUIGVycmV1ciwgYWxlcnRlLCBzdXBwcmVzc2lvbiwgZ2VzdGUgZGFuZ2VyZXV4ICovXG4gICAgLS1jUm91Z2UwOiAjZmRmM2YyO1xuICAgIC0tY1JvdWdlMTogI2ZiZTJkZjtcbiAgICAtLWNSb3VnZTI6ICNmNWFhYTM7XG4gICAgLS1jUm91Z2UzOiAjZjE1YjRlO1xuICAgIC0tY1JvdWdlNDogIzkzMDAwMDtcbiAgICAtLWNSb3VnZV9hOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB2YXIoLS1jUm91Z2UzKSwgdmFyKC0tY1JvdWdlNCkgMTAwJSk7XG4gICAgLS1jUm91Z2VfYWg6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLWNSb3VnZTMpLCB2YXIoLS1jUm91Z2UzKSAxMDAlKTtcbiAgICAtLWNSb3VnZXQ6ICNGRkY7XG5cbiAgICAvKiBDxZN1ciDCqyBKJ2FpbWUgwrsg4oCUIHVuIHJvdWdlIMOgIGx1aSwgc2FuZywgYm9yZGVhdXggZm9uY8OpIDogbGUgcm91Z2UgZGUgbGEgZmFtaWxsZSBkaXRcbiAgICAgICBsJ2FsZXJ0ZSBldCBsZSBkYW5nZXIsIHBhcyBsJ2FmZmVjdGlvbiAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMTYpLlxuICAgICAgIERldXggY3JhbnMsIGNvbW1lIGxlcyBhdXRyZXMgZmFtaWxsZXMgOiBsZSBww6JsZSBkdSBzdXJ2b2wsIGxhIGNvdWxldXIgZHUgY8WTdXIuICovXG4gICAgLS1jQ29ldXIwOiAjZjZlNGU3O1xuICAgIC0tY0NvZXVyMzogI2MxMTkyZjtcblxuICAgIC8qIFN1Y2NlcyDigJQgdmFsaWRhdGlvbiwgY29uZmlybWF0aW9uICovXG4gICAgLS1jU3VjY2VzMDogI2YwZmJmZjtcbiAgICAtLWNTdWNjZXMxOiAjZGRmMWZhO1xuICAgIC0tY1N1Y2NlczI6ICM5M2QzZWE7XG4gICAgLS1jU3VjY2VzMzogIzBlOWRjOTtcbiAgICAtLWNTdWNjZXM0OiAjMGI1ZjdhO1xuICAgIC0tY1N1Y2Nlc19hOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB2YXIoLS1jU3VjY2VzMyksIHZhcigtLWNTdWNjZXM0KSAxMDAlKTtcbiAgICAtLWNTdWNjZXNfYWg6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLWNTdWNjZXMzKSwgdmFyKC0tY1N1Y2NlczMpIDEwMCUpO1xuICAgIC0tY1N1Y2Nlc3Q6ICNGRkY7XG5cbiAgICAtLWNCYWNrZ3JvdW5kOiB2YXIoLS1jQmxhbmMpO1xuXG4gICAgLyogTGUgYmFuZGVhdSBkZXMgYXBlcsOndXMgKHBhZ2VSdWJyaXF1ZS5jc3MsIOKJpSAxNjAwcHgpLiBVTiBQTEFURUFVIFVOSSBBVSBDRU5UUkUsIGxlIGTDqWdyYWTDqVxuICAgICAgIHN1ciBsZXMgYm9yZHMgc2V1bGVtZW50IChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQgMjAyNi0wOS0yNCkgOiBsJ2FuY2llbiBkw6lncmFkw6kgYWxsYWl0XG4gICAgICAgZHUgZ3JpcyBkZXMgYm9yZHMgYXUgYmxhbmMgZHUgY2VudHJlLCBldCBkZXMgY2FydGVzIGJsYW5jaGVzIGlkZW50aXF1ZXMgcGFyYWlzc2FpZW50XG4gICAgICAgYmxhbmNoZXMgc3VyIGxlIGdyaXMgZXQgdGVybmVzIHN1ciBsZSBibGFuYy4gU3VyIGxlIHBsYXRlYXUsIHRvdXRlcyBzZSBkw6l0YWNoZW50XG4gICAgICAgcGFyZWlsLiBEZXV4IGhhbG9zIGRlIGNvdWxldXIsIHRlbnVzIGRhbnMgbGVzIGJvcmRzLCBkb25uZW50IHVuIHBldSBkZSB2aWUgOiBsZSBibGV1XG4gICAgICAgZHUgc2l0ZSBlbiBoYXV0IMOgIGdhdWNoZSwgbCdvcmFuZ2UgZGVzIGlsbHVzdHJhdGlvbnMgZW4gYmFzIMOgIGRyb2l0ZS4gKi9cbiAgICAtLWNCYWNrZ3JvdW5kR3JhbmQ6XG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxNCUgNDAlIGF0IDAlIDI1JSwgIzQzNmJjMTFmLCB0cmFuc3BhcmVudCksXG4gICAgICAgIHJhZGlhbC1ncmFkaWVudCgxNCUgNDAlIGF0IDEwMCUgNzUlLCAjZjM5YzM0MWYsIHRyYW5zcGFyZW50KSxcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjRThFQkYwIDAlLCAjRjRGNUY3IDEyJSwgI0Y0RjVGNyA4OCUsICNFOEVCRjAgMTAwJSk7XG5cbiAgICAvKiBMYXlvdXQgKi9cbiAgICAtLWxhcmdldXI6IDEzNjBweDtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tbWF4V2lkdGg6IDc2MHB4OyAqL1xuICAgIC0tY0JnOiB2YXIoLS1jQmxhbmMpO1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jQmdfYjogI0NDQzsgKi9cblxuICAgIC8qIE5vaXIgdHJhbnNwYXJlbnQg4oCUIG9tYnJlcyAqL1xuICAgIC0tY09tYnJlOiAjMDAwMjsgICAgICAgICAgICAvKiBlbnZpcm9uIDE1JSAqL1xuICAgIC0tY09tYnJlRm9ydGU6ICMwMDA0OyAgICAgICAvKiBlbnZpcm9uIDMwJSAqL1xuXG4gICAgLyogdHJhbnNwYXJlbnQg4oCUIG92ZXJsYXlzICovXG4gICAgLS1jT3ZlcmxheTogIzAwMDg7ICAgICAgICAgIC8qIGVudmlyb24gNTAlICovXG4gICAgLS1jQmxhbmNPdmVybGF5OiAjRkZGQzsgICAgIC8qIGVudmlyb24gODAlICovXG4gICAgLS1jQmxhbmNWZXJyZTogI0ZGRkZGRjhDOyAgIC8qIGVudmlyb24gNTUlIOKAlCB2ZXJyZSBkw6lwb2xpLCB0b3Vqb3VycyBhdmVjIHVuIGZsb3UgKGJhcnJlIGV0IGJ1bGxlIGRlIGwnYXBlcsOndSkgKi9cblxuICAgIC8qIE9tYnJlcyBjb21wb3PDqWVzICovXG4gICAgLS1vbWJyZVBvcnRlZTogMCA0cHggMTJweCB2YXIoLS1jT21icmUpO1xuICAgIC0tb21icmVQb3J0ZWUyOiAwIDBweCAyNXB4ICMwMDA7XG4gICAgLS1vbWJyZU1vZGFsZTogMCAxMHB4IDQwcHggdmFyKC0tY09tYnJlRm9ydGUpO1xuICAgIC0tb21icmVJbnRlcm5lOiAwIDAgMTBweCAxMHB4IGluc2V0IHZhcigtLWNCbGFuYzAyKTtcblxuICAgIC8qIENvdWxldXJzIE5vaXIgZ3JhZGllbnRzICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNOb2lyM19hOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNTA1ODU4LCAjMzAzODM4IDEwMCUpOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jTm9pcjNfYWg6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM1MDU4NTgsICM1MDU4NTggMTAwJSk7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNOb2lyM19haExpZ2h0OiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNzA3ODc4LCAjNzA3ODc4IDEwMCUpOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jTm9pcjNfYXQ6ICNGRkY7ICovXG5cblxuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1zQWxlcnRlX3M6ICNERUM0QzQ7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNUdXRvOiAjQzZGOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jVHV0b190OiAjMDAwOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jVHV0b19haDogI2Q3OWFmMjsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0JsYW5jMV90OiAjMTgxODE4OyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jUGxhY2Vob2RlcjogIzg4ODsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0Zvcm1fczogI0ZGRjsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tYnNDdGE6IDAgN3B4IDE0cHggIzMzNTIsIDAgM3B4IDZweCAjMDAwMTsgKi9cblxuICAgIC8qIEZvcm11bGFpcmVzIHV0aWxpc2F0ZXVyICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNGb3JtVXNyOiAjRUVGQUZGOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jRm9ybVVzcl9iOiAjMzM0OyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jRm9ybVVzcl9oOiAjRkZGOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jRm9ybVVzcl9iZjogIzBBRjsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0Zvcm1Vc3JfY2I6ICMwNTk7ICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNGb3JtX2JmOiAjM0MwOyAqL1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xMyAgLS1jRm9ybV9jYjogIzU5MDsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0tvX2I6ICNGODg7ICovXG5cbiAgICAvKiBMb2dvICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWNMb2dvMTogI0VCRjdFNDsgKi9cbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tY0xvZ28yOiAjQzZFOUFGOyAqL1xuXG4gICAgLS1mZkJhc2U6ICdOb3RvIFNhbnMnLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAtLWZmTW9ubzogJ0pldEJyYWluc01vbm8nLCAnVmVyZGFuYScsIG1vbm9zcGFjZTtcbiAgICAvKiBQb2xpY2Ugc3RhbmRhcmQgZGUgbCfDqWNyYW4gcHVibGljICh0b3V0IGNlIHF1aSBlc3QgcHJvamV0w6kpIOKAlCBzZXVsZSBzb3VyY2UsIGx1ZSBhdXNzaVxuICAgICAgIHBhciBsZXMgY2FudmFzIHZpYSBwb2xpY2VFY3JhbigpIChraXRQbHVnaW4vc2hhcmVkL3BvbGljZS50cykuIETDqWNpc2lvbiAyMDI2LTA4LTI5IDpcbiAgICAgICBOb3RvIFNhbnMgc2V1bGUsIHBhcyBkZSBTY2FkYSBuaSBNb250c2VycmF0IHN1ciBjZSBxdWUgdm9pdCBsZSBwdWJsaWMuICovXG4gICAgLS1mZkVjcmFuOiAnTm90byBTYW5zJywgc2Fucy1zZXJpZjtcbiAgICAvKiBQb2xpY2UgZGVzIGNoaWZmcmVzIGRlIGwnw6ljcmFuIHB1YmxpYyAodGlyYWdlcywgY29tcHRlIMOgIHJlYm91cnMsIHBhbm5lYXV4IMOgIHZvbGV0cykg4oCUXG4gICAgICAgY2hpZmZyZXMgbW9ub2xhcmdlcyBnYXJhbnRpcyBhdXggZGV1eCBmYW1pbGxlcywgbHVlIHBhciBsZXMgY2FudmFzIHZpYSBwb2xpY2VDaGlmZnJlcygpLlxuICAgICAgIETDqWNpc2lvbiAyMDI2LTA4LTI5IDogcmVtcGxhY2UgJ0NvdXJpZXIgTmV3JyAocG9saWNlIG1hY2hpbmUsIGFic2VudGUgZCdBbmRyb2lkL0xpbnV4KS4gKi9cbiAgICAtLWZmQ2hpZmZyZXM6ICdVYnVudHUgU2FucycsICdOb3RvIFNhbnMnLCBzYW5zLXNlcmlmO1xuXG4gICAgLyogSWwgZXN0IGludGVyZGl0IGRlIHJham91dGVyIGRlcyBzdHlsZXMgdHlwbyBzYW5zIGRlbWFuZGVyIGwnYWNjb3JkIGR1IFBPICovXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzICAtLWZUaXRyZTogbm9ybWFsIG5vcm1hbCA3MDAgMzJweCAnU2NhZGEnLCBzYW5zLXNlcmlmOyAqL1xuICAgIC0tZkgxOiBub3JtYWwgbm9ybWFsIDcwMCAzMnB4ICdTY2FkYScsIHNhbnMtc2VyaWY7XG4gICAgLS1mSDI6IG5vcm1hbCBub3JtYWwgNzAwIDI0cHggJ1NjYWRhJywgc2Fucy1zZXJpZjtcbiAgICAtLWZIMzogbm9ybWFsIG5vcm1hbCA0MDAgMjJweCAnU2NhZGEnLCBzYW5zLXNlcmlmO1xuICAgIC0tZkg0OiBub3JtYWwgbm9ybWFsIDQwMCAxOHB4ICdTY2FkYScsIHNhbnMtc2VyaWY7XG4gICAgLyogVGl0cmUgZGUgbCfDqXbDqW5lbWVudCBzdXIgbCfDqWNyYW4gcHVibGljICguem9uZVRpdHJlVGV4dGUpIDogcG9saWNlIGRlIGwnw6ljcmFuLCBwYXMgU2NhZGEuXG4gICAgICAgTGEgdGFpbGxlIGVzdCByZWNhbMOpZSDDoCBsJ2FmZmljaGFnZSBwYXIgR2VzdGlvbm5haXJlRm9uZEVuVGV0ZS4gRMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMTQuICovXG4gICAgLS1mVGl0cmVFY3Jhbjogbm9ybWFsIG5vcm1hbCA3MDAgMzJweCB2YXIoLS1mZkVjcmFuKTtcbiAgICAtLWZNZW51MTQ6IG5vcm1hbCBub3JtYWwgNDAwIDE0cHggJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmO1xuICAgIC8qIENyYW4gY29tcGFjdCBkZSBsYSBiYXJyZSBkZSBwaWxvdGFnZSAoQWRhcHRhdGlvbkJhcnJlLnRzKSA6IGxhIGJhcnJlIHJlZMOpZmluaXQgLS1mTWVudTE0IGF2ZWNcbiAgICAgICBjZWxsZS1jaSBwb3VyIHNvbiBzZXVsIHDDqXJpbcOodHJlLiBEw6ljaXNpb24gZHUgY2hlZiBkZSBwcm9qZXQgMjAyNi0wOS0wMy4gKi9cbiAgICAtLWZNZW51MTM6IG5vcm1hbCBub3JtYWwgNDAwIDEzcHggJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmO1xuICAgIC0tZkN0YTE2OiBub3JtYWwgbm9ybWFsIDcwMCAxOHB4ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICAvKiBSZW1pc2UgZW4gc2VydmljZSBsZSAyMDI2LTA5LTE2IChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQpIDogbGUgbW9ubyBkJ3VuIExJQkVMTMOJLCBwYXJcbiAgICAgICBvcHBvc2l0aW9uIMOgIC0tZk1vbm8yNGIgcXVpIGVzdCBsZSBtb25vIGQndW4gR1JPUyBDSElGRlJFIChjb2RlcyBkJ2FjY8OocywgY29tcHRldXJzKS5cbiAgICAgICBQcmVtacOocmUgdXNhZ8OocmUgOiBsJ8OpdGlxdWV0dGUgZCd1bmUgc2PDqG5lIHN1ciBsYSBWaXRyaW5lIChjb21wb3NhbnRzL2V0aXF1ZXR0ZUphaW1lLmNzcykuXG4gICAgICAgTGUgcmVwbGkgJ0NvdXJpZXIgTmV3JyBlc3QgdW5lIHZyYWllIGNoYXNzZSBmaXhlIOKAlCBjZWx1aSBkZSAtLWZmTW9ubyAoVmVyZGFuYSkgbidlbiBlc3RcbiAgICAgICBwYXMgdW5lLiAqL1xuICAgIC0tZk1vbm8xNjogbm9ybWFsIG5vcm1hbCA0MDAgMTZweCAnSmV0QnJhaW5zTW9ubycsICdDb3VyaWVyIE5ldycsIENvdXJpZXIsIG1vbm9zcGFjZTtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tZk1vbm8yNDogbm9ybWFsIG5vcm1hbCA0MDAgMjRweCAnSmV0QnJhaW5zTW9ubycsICdDb3VyaWVyIE5ldycsIENvdXJpZXIsIG1vbm9zcGFjZTsgKi9cbiAgICAtLWZNb25vMjRiOiBub3JtYWwgbm9ybWFsIDcwMCAyNHB4ICdKZXRCcmFpbnNNb25vJywgJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlO1xuICAgIC0tZkN0YTIwOiBub3JtYWwgbm9ybWFsIDcwMCAyMHB4ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTMgIC0tZkxlZ2VuZDE2OiBub3JtYWwgbm9ybWFsIDQwMCAyMHB4ICdTY2FkYScsIHNhbnMtc2VyaWY7ICovXG4gICAgLS1mTGlnaHQxNDogaXRhbGljIG5vcm1hbCAyMDAgMTRweCAnTm90byBTYW5zJywgVmVyZGFuYSwgR2VuZXZhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAtLWZNaW5pMTE6IGl0YWxpYyBub3JtYWwgMjAwIDExcHggJ05vdG8gU2FucycsIFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgLS1mVGV4dDE2OiBub3JtYWwgbm9ybWFsIDQwMCAxNnB4ICdOb3RvIFNhbnMnLCBWZXJkYW5hLCBHZW5ldmEsIEFyaWFsLCBzYW5zLXNlcmlmO1xuICAgIC0tZlRleHQxNlN0cm9uZzogbm9ybWFsIG5vcm1hbCA3MDAgMTZweCAnTm90byBTYW5zJywgVmVyZGFuYSwgR2VuZXZhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAtLWZJdGFsaWMxNjogaXRhbGljIG5vcm1hbCA0MDAgMTZweCAnTm90byBTYW5zJywgVmVyZGFuYSwgR2VuZXZhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAtLWZBbGVydGUxNjogaXRhbGljIHNtYWxsLWNhcHMgNzAwIDIwcHggJ05vdG8gU2FucycsIFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgLS1mTGFiZWw6IG5vcm1hbCBub3JtYWwgNDAwIDE0cHggJ05vdG8gU2FucycsIFZlcmRhbmEsIEdlbmV2YSwgQXJpYWwsIHNhbnMtc2VyaWY7XG5cbiAgICAtLWJvcmRlcjogMXB4IHNvbGlkICNkY2UxZWE7XG4gICAgLS1ib3JkZXJSMDogM3B4O1xuICAgIC0tYm9yZGVyUjE6IDVweDtcbiAgICAtLWJvcmRlclIyOiA3cHg7XG4gICAgLS1ib3JkZXJDYXJ0ZTogMXB4IHNvbGlkIHZhcigtLWNOb2lyNCk7XG4gICAgLS1ib3JkZXJGb3JtOiAxcHggc29saWQgdmFyKC0tY05vaXI1KTtcbiAgICAtLWJvcmRlcklucHV0OiAxcHggc29saWQgdmFyKC0tY05vaXI1KTtcblxuICAgIC8qIEVzcGFjZW1lbnRzIOKAlCBub21tw6lzIHBhciByw7RsZSAoY29tbWUgbGVzIGJvcmR1cmVzKSwgYWNjb3JkIFBPIDIwMjYtMDctMDMuXG4gICAgICAgTWlncmF0aW9uIHByb2dyZXNzaXZlIDogbmUgcmVtcGxhY2VyIHVuZSB2YWxldXIgZW4gZHVyIHF1ZSBzaSBsZSByw7RsZSBFVCBsYSB2YWxldXJcbiAgICAgICBjb3JyZXNwb25kZW50IChuby1vcCB2aXN1ZWwpIDsgYWxpZ25lciB1bmUgZMOpcml2ZSBkZSB2YWxldXIgPSBkw6ljaXNpb24gw6AgcGFydC4gKi9cbiAgICAtLWdhcExpc3RlOiAzMnB4OyAgIC8qIGVudHJlIGxlcyDDqWzDqW1lbnRzIGQndW5lIGxpc3RlLiBMYSBjb2xvbm5lIHF1aSBib3JkZSBsYSBsaXN0ZSAoZXguIHBhbm5lYXUgZGUgZmlsdHJlcykgcHJlbmQgbGUgTcOKTUUgZ2FwIDogZGV1eCByeXRobWVzIGRpZmbDqXJlbnRzIGPDtHRlIMOgIGPDtHRlLCBjJ2VzdCBtb2NoZSAqL1xuICAgIC0tcGFkZGluZ0NvcnBzOiAyMHB4OyAgIC8qIGludMOpcmlldXIgZCd1biBjb3JwcyBkZSBibG9jIC8gcGFubmVhdSAvIG1vZGFsZSAqL1xuICAgIC0tZ2FwRGVmYXV0OiA4cHg7ICAgICAgIC8qIGVzcGFjZSBzdGFuZGFyZCBlbnRyZSDDqWzDqW1lbnRzIGZyw6hyZXMgKGZsZXgvZ3JpZCkgKi9cbiAgICAtLWdhcFJlZHVpdDogNHB4OyAgICAgICAvKiB2YXJpYW50ZSB2b2xvbnRhaXJlbWVudCBwbHVzIHNlcnLDqWUgOiBsaXN0ZXMgY29tcGFjdGVzLCBncm91cGVzIGRlIGJvdXRvbnMgKi9cbiAgICAtLWdhcE1veWVuOiAxMnB4OyAgICAvKiBlc3BhY2VtZW50IGludGVybcOpZGlhaXJlIGVudHJlIMOpbMOpbWVudHMgZnLDqHJlcyAqL1xuICAgIC0tZ2FwTGFyZ2U6IDIwcHg7ICAgIC8qIGVzcGFjZW1lbnQgZ8OpbsOpcmV1eCBlbnRyZSBncm91cGVzIGQnw6lsw6ltZW50cyAqL1xuICAgIC0tZ2FwQ29sb25uZXM6IDRyZW07IC8qIGVudHJlIGRldXggY29sb25uZXMgZGUgcGFnZSBkZSBuYXR1cmUgZGlmZsOpcmVudGUgOiBsZSB0ZXh0ZSBldCBzb24gaW1hZ2UsIGxlIG1lbnUgZXQgc29uIGNvbnRlbnUgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTA5LTE3KSAqL1xuICAgIC0tZ2FwQmxvY3M6IDEwcmVtOyAgIC8qIGxlIGJsYW5jIGVudHJlIGRldXggYmxvY3MgZW1waWzDqXMgZCd1bmUgbcOqbWUgY29sb25uZSBkZSBsZWN0dXJlIDogbCdhcnRpY2xlLCBzZXMgcXVlc3Rpb25zLCBzZXMgc2PDqW5hcmlvcyA7IGRldXggY2hhcGl0cmVzIChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQgMjAyNi0wOS0xNykgKi9cbiAgICAtLXBhZGRpbmdNaW5pRGl2OiA4cHggMTZweDsgLyogcGFkZGluZyBkZSB0b3V0IGxlcyBibG9jcyBhdmVjIGZvbmQgY29sb3LDqWVzICovXG4gICAgLS1wYWRkaW5nRXRpcXVldHRlOiAzcHggNnB4OyAvKiBwYWRkaW5nIGRlcyBzcGFuIGV0IGF1dHJlcyBldGlxdWV0dGUgKi9cbiAgICAtLXBhZGRpbmdDYXJ0ZTogMTZweCAyMHB4OyAgIC8qIGludMOpcmlldXIgZCd1bmUgQ0FSVEUg4oCUIHNvbiBjb3JwcyBjb21tZSBzYSBiYXJyZSBkJ2FjdGlvbnMuIExhIGNhcnRlIGV4aXN0ZSBlbiB0cm9pcyBleGVtcGxhaXJlcyBqdW1lYXV4IChibG9jcy5jc3MsIGlsb3RTY2VuYXJpb3MuY3NzLCA1NV9zY2VuYXJpb3NDb21wYXRpYmxlcy5jc3MpIDogY2hhY3VuIHJlY29waWFpdCBsZSBjaGlmZnJlLCBpbHMgbGlzZW50IG1haW50ZW5hbnQgbGEgbcOqbWUgdmFyaWFibGUgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTA5LTA3KSAqL1xuICAgIC0tcGFkZGluZ0NhcnRlRXRyb2l0OiAxMnB4IDIwcHg7IC8qIGxhIG3Dqm1lIGNhcnRlIGVuIGZlbsOqdHJlIMOpdHJvaXRlLCBxdWFuZCBsYSBiYXJyZSBkJ2FjdGlvbnMgcGFzc2Ugc291cyBsZSBjb3JwcyAqL1xuICAgIC0tcGFkZGluZ0N0YTogMTVweCAyMHB4OyAgICAgLyogTEUgZ3JhbmQgYm91dG9uIDogcGxlaW5lIGxhcmdldXIsIG1pbi13aWR0aCAxODBweCwgZm9udGUgLS1mQ3RhMTYuIExhIHNpbGhvdWV0dGUgY29tcGFjdGUsIGVsbGUsIHByZW5kIC0tcGFkZGluZ0N0YTE0IChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQgMjAyNi0wOS0wNykgKi9cbiAgICAtLXBhZGRpbmdCYWRnZTogNHB4IDE2cHg7ICAgIC8qIHVuIGJhZGdlIGVuIHBpbHVsZSwgcG9zw6kgc3VyIHVuIGJsb2Mg4oCUIHBhcyBsYSBwZXRpdGUgw6l0aXF1ZXR0ZSBpbmxpbmUgZCd1biByw6ljYXAsIHF1aSBnYXJkZSAtLXBhZGRpbmdFdGlxdWV0dGUgKi9cbiAgICAtLXBhZGRpbmdQYXN0aWxsZTogNnB4IDE0cHg7IC8qIHVuZSBwYXN0aWxsZSBOT04gY2xpcXVhYmxlIDogdW5lIMOpdGFwZSwgdW4gw6l0YXQsIHVuIGZpbHRyZSBwb3PDqSAqL1xuICAgIC0tcGFkZGluZ0lucHV0OiAxMHB4IDEycHg7ICAgLyogbCdpbnTDqXJpZXVyIGQndW4gY2hhbXAgZGUgc2Fpc2llICgtLWJvcmRlcklucHV0IGRpdCBzYSBib3JkdXJlKSAqL1xuICAgIC0tcGFkZGluZ0NlbGx1bGU6IDhweCAxNnB4IDhweCAwOyAvKiB1bmUgY2VsbHVsZSBkZSB0YWJsZWF1IDogcmllbiDDoCBnYXVjaGUsIGxhIGNvbG9ubmUgY29tbWVuY2UgYXUgdGV4dGUgKi9cbiAgICAtLXBhZGRpbmdDb2RlOiAxMnB4IDE2cHg7ICAgIC8qIHVuIGJsb2MgZGUgY29kZSDDoCByZWNvcGllciAqL1xuICAgIC0tcGFkZGluZ0xpZ25lTGlzdGU6IDE2cHggMDsgLyogdW5lIGxpZ25lIExBUkdFIGQndW5lIGxpc3RlIOKAlCB1bmUgcXVlc3Rpb24gcXUnb24gZMOpcGxpZSwgdW4gw6l0YXQgdmlkZS4gTGVzIGxpZ25lcyBvcmRpbmFpcmVzIHByZW5uZW50IC0tZ2FwRGVmYXV0IDAgKi9cbiAgICAtLXBhZGRpbmdSZWNhcDogMTBweCAxNHB4OyAgIC8qIGxlIHJ5dGhtZSBpbnTDqXJpZXVyIGR1IHLDqWNhcGl0dWxhdGlmIGRlIGNvbXBvc2l0aW9uIChibG9jcywgYWN0aW9ucywgZW5jYWRyw6lzKSAqL1xuICAgIC0tcGFkZGluZ1BhZ2U6IDMwcHggNDBweDsgICAgLyogbCdlbnZlbG9wcGUgZCd1bmUgcGFnZSA6IC5jb250ZW51LCBldCBsZXMgY29sb25uZXMgZHUgYmFzIGRlIHBhZ2UgKi9cbiAgICAtLXBhZGRpbmdDYXJ0ZUxhcmdlOiAzMHB4IDI1cHg7IC8qIHVuZSBjYXJ0ZSBxdWkgZG9pdCByZXNwaXJlciA6IHVuZSBvZmZyZSwgdW5lIGNhdMOpZ29yaWUgZCdhcGVyw6d1ICovXG4gICAgLS1wYWRkaW5nUmFwcGVsOiAyMHB4IDQwcHggMjVweDsgLyogdW5lIGNhcnRlIGRlIHJhcHBlbCBkdSBjb21wdGUgKC5kaXZSYXBwZWwpLCBldCB0b3V0IGJsb2MgcG9zw6kgw6AgY8O0dMOpIGQnZWxsZXMgc3VyIGxhIG3Dqm1lIHBhZ2UgKC5haWRlLCAuZW5BdHRlbnRlKSA6IGxlcyB0aXRyZXMgZXQgbGVzIHRleHRlcyB0b21iZW50IMOgIGwnYXBsb21iICovXG4gICAgLS1wYWRkaW5nQmFuZGVhdTogNHJlbTsgICAgICAvKiBsZSBiYW5kZWF1IGRlcyBhcGVyw6d1cywgcXVpIHRyYXZlcnNlIGxhIGZlbsOqdHJlIHN1ciBncmFuZCDDqWNyYW4gKi9cbiAgICAtLXJldHJhaXRMaXN0ZUNvdXJ0OiAyMHB4OyAgIC8qIGxlIHJldHJhaXQgZCd1biB1bCBkZSBsaXN0ZSBjb3VydGUg4oCUIHLDqWNhcCwgcHJvZ3Jlc3Npb24sIHVsIGfDqW7DqXJpcXVlLiBMZSByZXRyYWl0IEZSQU5DIGR1IHLDqWRhY3Rpb25uZWwgZXN0IC0tcmV0cmFpdExpc3RlICovXG4gICAgLS1yZXRyYWl0TGlzdGU6IDQwcHg7ICAgICAgICAvKiBsZSByZXRyYWl0IGQndW4gdWwgcsOpZGFjdGlvbm5lbCDigJQgYXJ0aWNsZSwgY2hhcGl0cmUsIHLDqXBvbnNlIGRlIEZBUS4gQ2UgcmV0cmFpdCBmcmFuYyBkaXQgcXVlIGNlcyBsaWduZXMgc29udCB1biBibG9jIMOgIHBhcnQsIGV0IG5vbiBsYSBzdWl0ZSBkdSBwYXJhZ3JhcGhlICovXG5cbiAgICAvKiBCb3V0b25zIDogdW4gYm91dG9uIG5lIGNob2lzaXQgTkkgc29uIHBhZGRpbmcsIE5JIHNhIGJvcmR1cmUsIE5JIHNhIGNvdWxldXJcbiAgICAgICAoZMOpY2lzaW9uIFBPIDIwMjYtMDctMTgpLiBJbCBwcmVuZCBjZXMgdmFyaWFibGVzIOKAlCBvdSBwYXMgZGUgYm9yZHVyZSwgb3UgbGFcbiAgICAgICBjb3VsZXVyIGQndW4gcsO0bGUgKHByaW1haXJlLCBkYW5nZXIsIGFwZXLDp3UpIOKAlCBqYW1haXMgdW5lIHZhbGV1ciDDoCBsdWkuICovXG4gICAgLS1wYWRkaW5nQ3RhMTRWOiA4cHg7ICAgICAgICAgICAgICAgICAvKiBsJ2FpciB2ZXJ0aWNhbCBkJ3VuIGJvdXRvbiBjb21wYWN0LCBzZXVsIDogbGEgYmFycmUgZGUgcGlsb3RhZ2UgZW4gZMOpZHVpdCBzYSBoYXV0ZXVyIChfc3R1ZGlvSW50ZWdyZWUuY3NzKSAqL1xuICAgIC0tcGFkZGluZ0N0YTE0OiB2YXIoLS1wYWRkaW5nQ3RhMTRWKSAxNnB4OyAvKiBwYWRkaW5nIGRlIHRvdXQgYm91dG9uIGNvbXBhY3QgKC5jdGExNCwgLmN0YURpc2NyZXQsIHRvZ2dsZXMpICovXG4gICAgLS1ib3JkZXJDdGE6IDFweCBzb2xpZCB2YXIoLS1jTm9pcjQpOyAvKiBMQSBib3JkdXJlIGQndW4gYm91dG9uIDogY2VsbGUtY2kgb3UgYXVjdW5lICovXG4gICAgLS1jQ3RhVGV4dGU6IHZhcigtLWNOb2lyMik7ICAgICAgICAgLyogTEUgdGV4dGUgZCd1biBib3V0b24gbmV1dHJlIDogY2Ugbm9pciBvdSB1bmUgY291bGV1ciBkZSByw7RsZSAqL1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQUNDRU5UIOKAlCBsYSBjb3VsZXVyIGRlIGwnZXNwYWNlIG/DuSBsJ29uIGVzdC4gRMOpY2xhcsOpZSBzdXIgYm9keSwgSkFNQUlTIHN1ciBodG1sXG4gICBvdSA6cm9vdCA6IHVuZSB2YXJpYWJsZSBkw6lyaXbDqWUgKC0tY0FjY2VudF9hLCAtLWNGb3JtRm9jdXNIYWxv4oCmKSBzZSBjYWxjdWxlIHN1clxuICAgbCfDqWzDqW1lbnQgb8O5IGVsbGUgZXN0IGTDqWNsYXLDqWUgOyBzdXIgaHRtbCBlbGxlIGZpZ2VyYWl0IGxlIGJsZXUgcGFyIGTDqWZhdXQgZXQgbGFcbiAgIGNsYXNzZSBkdSBib2R5IG5lIGNoYW5nZXJhaXQgcGx1cyBxdWUgbGVzIHZhbGV1cnMgZGlyZWN0ZXMuXG4gICBMYSBjbGFzc2UgZHUgPGJvZHk+IGNob2lzaXQgbGEgdGVpbnRlIDsgc2FucyBjbGFzc2UgOiBibGV1IGFkbWluaXN0cmF0aW9uLlxuICAgVml0cmluZSA6IGJhc2VWaXRyaW5lUHVibGljLnR3aWcgcG9zZSBib2R5UGFnZVZpdHJpbmUuXG4gICBTdHVkaW8gOiBzdHVkaW8vYmFzZS50d2lnIHBvc2UgbW9kZVRlc3RlciBvdSBtb2RlRGlmZnVzZXIgc2Vsb24gbCdvbmdsZXQgcHJpbmNpcGFsXG4gICAobGEgcGFnZSBzZSByZWNoYXJnZSDDoCBjaGFxdWUgY2hhbmdlbWVudCBkZSBtb2RlLCBwYXMgZGUgVHVyYm8pLlxuICAgVW5lIHLDqGdsZSBxdWkgYSBiZXNvaW4gZCdBY2NlbnQgYXUgbml2ZWF1IDpyb290IGRvaXQgbGlyZSB2YXIoLS1jQWNjZW504oCmKSBzdXJcbiAgIGwnw6lsw6ltZW50IGNvbmNlcm7DqSwgcGFzIGTDqWNsYXJlciB1bmUgdmFyaWFibGUgZMOpcml2w6llIMOgIGxhIHJhY2luZS5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qIEJsZXUgYWRtaW5pc3RyYXRpb24gOiBjb21wdGUsIHRhcmlmcywgZG9ubsOpZXMsIFN0dWRpbyBob3JzIG1vZGUsIG9uZ2xldCBQcsOpcGFyZXIgKi9cbmJvZHkge1xuICAgIC0tY0FjY2VudDA6ICNmMWY0Zjg7XG4gICAgLS1jQWNjZW50MTogI2UzZWVmODtcbiAgICAtLWNBY2NlbnQyOiAjYWNjZWU4O1xuICAgIC0tY0FjY2VudDM6ICM0MzZiYzE7XG4gICAgLS1jQWNjZW50NDogIzMzNWJiMTtcbiAgICAtLWNBY2NlbnRfYTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgdmFyKC0tY0FjY2VudDMpLCB2YXIoLS1jQWNjZW50NCkgMTAwJSk7XG4gICAgLS1jQWNjZW50X2FoOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCB2YXIoLS1jQWNjZW50MyksIHZhcigtLWNBY2NlbnQzKSAxMDAlKTtcbiAgICAtLWNBY2NlbnR0OiAjRkZGO1xuXG4gICAgLyogRm9jdXMgZGVzIGNoYW1wcyA6IGwnYWNjZW50LCBldCBzb24gaGFsbyDDoCAxNSAlICovXG4gICAgLS1jRm9ybUZvY3VzOiB2YXIoLS1jQWNjZW50Myk7XG4gICAgLS1jRm9ybUZvY3VzSGFsbzogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNBY2NlbnQzKSAxNSUsIHRyYW5zcGFyZW50KTtcbn1cblxuLyogVml0cmluZSwgcGFnZXMgcHVibGlxdWVzIDogdmVydCAqL1xuLmJvZHlQYWdlVml0cmluZSB7XG4gICAgLS1jQWNjZW50MDogI2YwZjlmNDtcbiAgICAtLWNBY2NlbnQxOiAjZGNmMmU1O1xuICAgIC0tY0FjY2VudDI6ICM5ZmQ5Yjg7XG4gICAgLS1jQWNjZW50MzogIzA4OTE0YztcbiAgICAtLWNBY2NlbnQ0OiAjMDc1NTI0O1xufVxuXG4vKiBTdHVkaW8sIG9uZ2xldCBUZXN0ZXIgOiB2aW9sZXQgKi9cbi5tb2RlVGVzdGVyIHtcbiAgICAtLWNBY2NlbnQwOiAjZjdmMWY5O1xuICAgIC0tY0FjY2VudDE6ICNlY2RjZjM7XG4gICAgLS1jQWNjZW50MjogI2QyYThlMDtcbiAgICAtLWNBY2NlbnQzOiAjOWI1OWI2O1xuICAgIC0tY0FjY2VudDQ6ICM3ODNiOTI7XG59XG5cbi8qIFN0dWRpbywgb25nbGV0IERpZmZ1c2VyIDogYmxldSBkaWZmdXNpb24gKi9cbi5tb2RlRGlmZnVzZXIge1xuICAgIC0tY0FjY2VudDA6ICNmMGY2ZmI7XG4gICAgLS1jQWNjZW50MTogI2UwZWVmODtcbiAgICAtLWNBY2NlbnQyOiAjYTZjZGVhO1xuICAgIC0tY0FjY2VudDM6ICMzMDhlZDE7XG4gICAgLS1jQWNjZW50NDogIzI1NzJhOTtcbn1cblxuLyogQmxldSBhZG1pbmlzdHJhdGlvbiBQT1PDiSBTVVIgVU4gw4lMw4lNRU5ULCBkYW5zIHVuIGF1dHJlIGVzcGFjZSAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0XG4gICAyMDI2LTA5LTA2KSA6IHVuIGdlc3RlIGQnYWRtaW5pc3RyYXRpb24gYXUgbWlsaWV1IGQndW5lIHBhZ2UgcHVibGlxdWUg4oCUIGNyw6llciB1biDDqXbDqW5lbWVudFxuICAgZGVwdWlzIGxhIHBhZ2UgZCd1bmUgc2PDqG5lIG91IGxhIHBhZ2UgQ29uZmlndXJlciBkJ3VuIHNjw6luYXJpbyDigJQgc2UgZGl0IGVuIGJsZXUsIHBhcyBkYW5zXG4gICBsYSBjb3VsZXVyIGRlIGxhIHBhZ2UuIE3Dqm1lcyBjaW5xIHZhbGV1cnMgcXVlIGxlIGJvZHkgc2FucyBjbGFzc2UgOiBjJ2VzdCBsZSBtw6ptZSBlc3BhY2UsXG4gICByYW1lbsOpIHN1ciBsJ8OpbMOpbWVudCBxdWkgbGUgcG9ydGUgKGxlIGJvdXRvbiBsdWktbcOqbWUsIHBhcyBzYSBiYXJyZSA6IGxlcyB2b2lzaW5zIGdhcmRlbnRcbiAgIGxhIGNvdWxldXIgZGUgbGEgcGFnZSkuIFVuZSByw6hnbGUgcXVpIGxpdCB2YXIoLS1jQWNjZW504oCmKSBzdXIgY2V0IMOpbMOpbWVudCB2b2l0IGxlIGJsZXUuICovXG4uYWNjZW50QWRtaW5pc3RyYXRpb24ge1xuICAgIC0tY0FjY2VudDA6ICNmMWY0Zjg7XG4gICAgLS1jQWNjZW50MTogI2UzZWVmODtcbiAgICAtLWNBY2NlbnQyOiAjYWNjZWU4O1xuICAgIC0tY0FjY2VudDM6ICM0MzZiYzE7XG4gICAgLS1jQWNjZW50NDogIzMzNWJiMTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIFRJVFJFUyBFVCBUWVBPR1JBUEhJRVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuaDEsIGgyLCBoMyB7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyMSk7XG59XG5cbmg0IHtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIyKTtcbn1cblxuaDUsIGg2IHtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIzKTtcbn1cblxucCwgbGkge1xuICAgIGNvbG9yOiB2YXIoLS1jTm9pcjIpO1xufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICBmb250OiB2YXIoLS1mSDEpO1xufVxuXG5idXR0b24ge1xuICAgIGZvbnQ6IHZhcigtLWZDdGExNik7XG59XG5cbmgxIHtcbiAgICBmb250OiB2YXIoLS1mSDEpO1xuICAgIG1hcmdpbjogMTBweCAxNXB4IDVweCAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbmgyIHtcbiAgICBmb250OiB2YXIoLS1mSDIpO1xuICAgIG1hcmdpbjogMTVweCAxMHB4IDVweCAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG5cbmgzIHtcbiAgICBmb250OiB2YXIoLS1mSDMpO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAyNXB4IDAgMTVweDtcbn1cblxuaDQsIGg1IHtcbiAgICBmb250OiB2YXIoLS1mSDQpO1xufVxuXG5oNCwgaDUsIGg2IHtcbiAgICBtYXJnaW46IDI1cHggMCA3cHg7XG59XG5cbi8qIDxpPiBlc3QgdXRpbGlzw6llIGNvbW1lIGJhbGlzZSBkZSBzdWZmaXhlICgjMiwgIzPigKYpIHN1ciBsZXMgbm9tcyBkJ8OpbMOpbWVudHMuXG4gICBMYSBiYWxpc2UgPGVtPiByZW1wbGFjZSA8aT4gcG91ciBsJ2l0YWxpcXVlIHPDqW1hbnRpcXVlLiAqL1xuaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mZk1vbm8pO1xufSIsIi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuI2RpdkJvZHkge1xuICAgIG1heC13aWR0aDogOTIwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMTBweDtcbn1cbiovXG5cbi5jb250ZW51IHtcbiAgICBwYWRkaW5nOiAxMHB4IDQwcHg7XG59XG5cbi56b25lRmxhc2gge1xuICAgIG1heC13aWR0aDogMTE1NXB4O1xuICAgIG1hcmdpbjogMCBhdXRvIDIwcHg7XG4gICAgbWluLWhlaWdodDogMzhweDsgLyogSGF1dGV1ciBkJ3VuIG1lc3NhZ2UgZmxhc2ggKHBhZGRpbmcgMTJweCAqIDIgKyBmb250IDE0cHgpICovXG59XG5cbi8qIExlIG1lc3NhZ2Ugc2UgZMOpdGFjaGUgc291cyBsZSBoYXV0IGRlIHBhZ2UgOiBjZW50csOpLCDDoCBsYSBsYXJnZXVyIGRlIHNvbiB0ZXh0ZSwgcG9zw6kgZW5cbiAgIG9tYnJlIChkw6ljaXNpb24gY2hlZiBkZSBwcm9qZXQgMjAyNi0wOS0xNCkuIG1heC13aWR0aCA6IHVuIG1lc3NhZ2UgbG9uZyByZXZpZW50IMOgIGxhIGxpZ25lXG4gICBzdXIgdMOpbMOpcGhvbmUgYXUgbGlldSBkZSBkw6lib3JkZXIgZGUgbCfDqWNyYW4uICovXG4uem9uZUZsYXNoIC5hbGVydFN1Y2Nlcyxcbi56b25lRmxhc2ggLmFsZXJ0RXJyZXVyIHtcbiAgICBtYXJnaW46IDIwcHggYXV0byAwO1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgYm94LXNoYWRvdzogdmFyKC0tb21icmVQb3J0ZWUpO1xufVxuXG4vKiBCb3ggZGUgcmFwcGVsIChsZWN0dXJlIHNldWxlKSAqL1xuLmRpdlJhcHBlbCB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0JsYW5jKTtcbiAgICBib3JkZXItbGVmdDogdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItcmlnaHQ6IHZhcigtLWJvcmRlcik7XG4gICAgcGFkZGluZzogdmFyKC0tcGFkZGluZ1JhcHBlbCk7XG4gICAgd2lkdGg6IDMzNXB4O1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogTCdhaWRlIG1hc3F1YWJsZSAoY29tcG9zYW50cy9haWRlLmNzcykgcHJlbmQgbGUgdGl0cmUgZCd1bmUgY2FydGUgOiBlbGxlIHNlIHBvc2Ugw6AgY8O0dMOpIGQnZWxsZXMuICovXG4uZGl2UmFwcGVsIGgzLFxuLmFpZGUgaDMge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tZ2FwTGFyZ2UpIDA7XG59XG5cbi8qIENUQSBkYW5zIGxlcyBibG9jcyBkaXZSYXBwZWwgOiB0YWlsbGUgY29udGVudSwgYWxpZ27DqSDDoCBnYXVjaGUgKi9cbi5kaXZSYXBwZWwgLmN0YVZhbGlkZXIsXG4uZGl2UmFwcGVsIC5jdGFTZWNvbmRhaXJlIHtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogODAwcHgpIHtcbiAgICAuY29udGVudSB7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICB9XG59XG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuLmRpdkNlbnRyZSB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIG1heC13aWR0aDogMTIwMHB4O1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG4qL1xuXG5ib2R5IHtcbiAgICBmb250OiB2YXIoLS1mVGV4dDE2KTtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY0JhY2tncm91bmQpO1xufVxuXG4jYm9keVBhZ2Uge1xuICAgIG1heC13aWR0aDogMTI4MHB4O1xuICAgIG1hcmdpbjogMTBweCBhdXRvO1xufVxuXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbi5tYXJnZTIge1xuICAgIG1hcmdpbjogNXB4IGF1dG87XG4gICAgcGFkZGluZzogMCAyMHB4O1xufVxuKi9cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNzUwcHgpIHtcbiAgICAvKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbiAgICAubWFyZ2UyIHtcbiAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICB9XG4gICAgKi9cbn1cblxuLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzXG4jY2VudHJlUGFnZSB7XG4gICAgbWF4LXdpZHRoOiAxNDQwcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbiNkaXZQYWdlIHtcbiAgICBtYXJnaW46IDI1cHggMTBweCA1MHB4O1xuICAgIG1pbi1oZWlnaHQ6IDI1dmg7XG59XG5cbiNxdWlTdWlzSmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZm9udDogdmFyKC0tZkxpZ2h0MTQpO1xufVxuI3F1aVN1aXNKZUxvZ291dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNnB4O1xuICAgIG9wYWNpdHk6IC43O1xufVxuXG4jcXVpU3Vpc0plTG9nb3V0OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogdmFyKC0tY0FjY2VudDMpO1xuICAgIG9wYWNpdHk6IDE7XG59XG4qL1xuLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzXG4jZGl2SGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG59XG4qL1xuLyogTGlzdGUgw6AgcHVjZXMgOiBsZSByZXNldCAoMDBfcmVzZXQuY3NzKSByZXRpcmUgbGVzIHB1Y2VzIGRlIHRvdXQgdWwgOyB1bmUgbGlzdGUgcXVpIGRvaXRcbiAgIGxlcyBtb250cmVyIGxlIGRlbWFuZGUgYXZlYyBjZXR0ZSBjbGFzc2UgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTA5LTE0KSAqL1xudWwubGlzdGVQdWNlcyB7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiB2YXIoLS1yZXRyYWl0TGlzdGVDb3VydCk7XG59XG4iLCJidXR0b24ge1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBtYXJnaW46IDA7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnQzKTtcbiAgICBmb250OiB2YXIoLS1mQ3RhMTYpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuYnV0dG9uLmN0YUFubnVsZXIge1xuICAgIGZvbnQ6IHZhcigtLWZUZXh0MTYpO1xuICAgIGNvbG9yOiB2YXIoLS1jQWNjZW50Myk7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiB0cmFuc3BhcmVudDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8qIGJ1dHRvbi5saWVuQm91dG9uIDogdW4gPGJ1dHRvbj4gcXVpIGEgbGUgdmlzdWVsIGQndW4gbGllbiAodGVtcGxhdGVzL0NMQVVERS5tZCwgwqsgQm91dG9uXG4gICBvdSBsaWVuID8gwrspIOKAlCBpbCBwcmVuZCBleGFjdGVtZW50IGxlIHN0eWxlIGRlIGEgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTA5LTE0KSAqL1xuYSxcbmJ1dHRvbi5saWVuQm91dG9uIHtcbiAgICBjb2xvcjogdmFyKC0tY0FjY2VudDMpO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgcGFkZGluZzogdmFyKC0tZ2FwUmVkdWl0KSAwO1xufVxuXG5idXR0b24ubGllbkJvdXRvbiB7XG4gICAgZm9udDogdmFyKC0tZlRleHQxNik7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IG5vbmU7XG59XG5cbmE6Zm9jdXMsXG5idXR0b24ubGllbkJvdXRvbjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuYTpmb2N1cy12aXNpYmxlLFxuYnV0dG9uLmxpZW5Cb3V0b246Zm9jdXMtdmlzaWJsZSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHZhcigtLWNGb3JtRm9jdXMpO1xufVxuXG5cbmJ1dHRvbi5jdGFBbm51bGVyLFxuYS5jdGFBbm51bGVyIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAyMHB4IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIzKTtcbn1cblxuYnV0dG9uLmJ0biwgYS5idG4ge1xuICAgIG1pbi13aWR0aDogMTgwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogdmFyKC0tY0FjY2VudHQpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNBY2NlbnQzKTtcbiAgICBmb250OiB2YXIoLS1mQ3RhMTYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogdmFyKC0tcGFkZGluZ0N0YSk7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyUjEpO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgZ2FwOiB2YXIoLS1nYXBNb3llbik7IC8qIGFsaWduw6kgMTAgLT4gMTJweCAow6ljaGVsbGUgUE8gMjAyNi0wNy0xOCkgKi9cbn1cblxuYS5idG46aG92ZXIsIGJ1dHRvbi5idG46aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jQWNjZW50dCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY0FjY2VudDQpO1xuXG59XG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuYnV0dG9uLmJ0bjIsIGEuYnRuMiB7XG4gICAgbWluLXdpZHRoOiAxMDBweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYm9yZGVyOiAwO1xuICAgIGZvbnQ6IHZhcigtLWZDdGEyMCk7XG4gICAgcGFkZGluZzogMjBweCA0MHB4O1xuICAgIG1hcmdpbjogMjBweCBhdXRvO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcbiAgICBjb2xvcjogdmFyKC0tY1RleHRlMSk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByb3VuZDtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbn1cblxuYnV0dG9uI3JlZGlyZWN0aW9uLmJ0bjIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG5idXR0b24jcmVkaXJlY3Rpb24uYnRuMjpob3ZlcixcbmEuYnRuMjpob3ZlciwgYnV0dG9uLmJ0bjI6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jQWNjZW50dCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY0FjY2VudDQpO1xufVxuKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIENUQSBDT01QQUNUIOKAlCBzb2NsZSAuY3RhMTRcblxuICAgTEEgc2lsaG91ZXR0ZSBkZXMgYm91dG9ucyBkJ2FjdGlvbiBjb21wYWN0cyAoYmFycmVzIGQnYWN0aW9uLCBjYXJ0ZXMpIDpcbiAgIGZvcm1lLCBwb2xpY2UsIGRpbWVuc2lvbnMgZMOpZmluaWVzIGljaSBldCBudWxsZSBwYXJ0IGFpbGxldXJzLiBNb2TDqGxlIDpcbiAgIGxlIGJvdXRvbiBkZSBsYSBiYXJyZSBkZSBjb250csO0bGUgYXBlcsOndSAoZMOpY2lzaW9uIFBPIDIwMjYtMDctMTgpLlxuICAgU2UgcG9zZSDDoCBjw7R0w6kgZHUgcsO0bGUgcXVpIGFwcG9ydGUgc2EgY291bGV1ciA6IGNsYXNzPVwiY3RhMTQgY3RhUHJldmlld0NvbnRyb2xlXCIuXG4gICAxNCA9IGxhIHRhaWxsZSBkZSBwb2xpY2UgKC0tZk1lbnUxNCkuIFNpbGhvdWV0dGUgZm9ybXVsYWlyZSDDoCB2ZW5pciA6IC5jdGExOC5cbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi5jdGExNCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiB1biA8YT4gaG9ycyBiYXJyZSBmbGV4IHJlc3RlIHVuIGJvdXRvbiAocGFkZGluZyB2ZXJ0aWNhbCByw6llbCkgKi9cbiAgICBwYWRkaW5nOiB2YXIoLS1wYWRkaW5nQ3RhMTQpO1xuICAgIGZvbnQ6IHZhcigtLWZNZW51MTQpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMSk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC8qIFVuIGJvdXRvbiBuJ2VzdCBqYW1haXMgc291bGlnbsOpLCBxdWVsbGUgcXVlIHNvaXQgc2EgYmFsaXNlIDogbGEgVml0cmluZSBzb3VsaWduZSB0b3VzXG4gICAgICAgc2VzIGxpZW5zICh2aXRyaW5lLmNzcywgZMOpY2lzaW9uIFBPIDIwMjYtMDgtMjUpLCB1biA8YSBjbGFzcz1cImN0YTE0XCI+IHkgw6l0YWl0IHNvdWxpZ27DqVxuICAgICAgIGNvbW1lIHVuIGxpZW4gZGUgcGFyYWdyYXBoZSAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMDYpLiAqL1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMsIGNvbG9yIDAuMnMsIGJvcmRlci1jb2xvciAwLjJzO1xufVxuXG4vKiBMYSBzaWxob3VldHRlIGNvbXBhY3RlIEdBR05FIHN1ciB1biByw7RsZSBxdWkgcG9ydGUgYXVzc2kgdW5lIHNpbGhvdWV0dGUgOiBsYSBwYWdlIGRlc1xuICAgdGFyaWZzIGRlIGxhIFZpdHJpbmUgcmVkw6lmaW5pdCAuY3RhT3IgZW4gZ3JhbmQgYm91dG9uIGRlIGNhcnRlIChvZmZyZXMuY3NzIDogZGlzcGxheSBibG9jayxcbiAgIGdyYW5kIHBhZGRpbmcsIHBvbGljZSAxNiksIGNlIHF1aSDDqWNyYXNhaXQgwqsgY3RhMTQgY3RhT3Igwrsg4oCUIGxlIHBldGl0IGJvdXRvbiBkb3LDqSBxdWkgbcOobmVcbiAgIMOgIGwnb2ZmcmUgZHUgZGVzc3VzIChwYWdlIMKrIE1vbiBzdHVkaW8gwrssIHNjw6huZXMgcsOpc2VydsOpZXMgw6AgdW5lIG9mZnJlIDogZMOpY2lzaW9uIGNoZWYgZGVcbiAgIHByb2pldCAyMDI2LTEwLTA3KS4gTcOqbWUgY29tcG9zaXRpb24gcXVlIMKrIGN0YTE0IGN0YVByaW1haXJlIMK7LCBtw6ptZSB0YWlsbGUuICovXG4uY3RhMTQuY3RhT3Ige1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogYXV0bztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogdmFyKC0tcGFkZGluZ0N0YTE0KTtcbiAgICBmb250OiB2YXIoLS1mTWVudTE0KTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIC8qIExFIEpBVU5FIFDDgkxFIERVIFBFVElUIEJPVVRPTiAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMTAtMDgpIDogbGUgamF1bmUgcGxlaW5cbiAgICAgICBkJ0FtYXpvbiAoLS1jT3IzKSBlc3QgZmFpdCBwb3VyIGxlcyBncm9zIGJvdXRvbnMgZXQgbCdvbmdsZXQgwqsgVGFyaWZzIMK7IDsgc3VyIHVuIHBldGl0XG4gICAgICAgYm91dG9uIHBvc8OpIGRhbnMgdW5lIHBhZ2UgYXV4IHRvbnMgbmV1dHJlcyBldCBwYXN0ZWwsIGlsIHByZW5haXQgbGUgZGVzc3VzIHN1ciB0b3V0IGxlXG4gICAgICAgcmVzdGUuIEZvbmQgcMOibGUgKC0tY09yMSksIGV0IHVuZSBib3JkdXJlIGphdW5lIHBvdXIgcXUnb24gbGUgdm9pZSBjb21tZSB1biBib3V0b24gZXRcbiAgICAgICBjb21tZSBkdSBqYXVuZSA6IGMnZXN0IGVsbGUsIHBsdXMgcXVlIGxlIGZvbmQsIHF1aSBsZSBkw6l0YWNoZSBkZSBsYSBwYWdlLiBNw6ptZSDDqXBhaXNzZXVyXG4gICAgICAgcXVlIGxlcyBhdXRyZXMgYm91dG9ucyAoLS1ib3JkZXJDdGEpLCBzZXVsZSBsYSBjb3VsZXVyIGNoYW5nZS4gKi9cbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jT3IxKTtcbiAgICBib3JkZXI6IHZhcigtLWJvcmRlckN0YSk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jT3IzKTtcbn1cblxuLmN0YTE0LmN0YU9yOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jT3IyKTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNPcjQpO1xufVxuXG4vKiBMRSBQRVRJVCBCT1VUT04gRU4gSkFVTkUgUExFSU4gKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTEwLTE0KSA6IGxhIG3Dqm1lIHNpbGhvdWV0dGVcbiAgIGNvbXBhY3RlLCBsZXMgY291bGV1cnMgZHUgZ3JvcyBib3V0b24gZGVzIHRhcmlmcyAoLmN0YU9yKS4gUG91ciBsZSBib3V0b24gcXVpIGVzdCBTRVVMIGV0XG4gICBkb2l0IHNlIHZvaXIgOiDCqyBNb24gc3R1ZGlvIMK7LCBsYSBsaW1pdGUgZCfDqXbDqW5lbWVudHMgYXR0ZWludGUgZHUgU3R1ZGlvLiBMw6Agb8O5IGlsIHJldmllbnRcbiAgIHNvdXZlbnQgKHZpZ25ldHRlcywgbGlzdGVzIGRlIHNjw6luYXJpb3MsIHBhZ2UgZCd1bmUgc2PDqG5lKSwgbGUgamF1bmUgcMOibGUgcmVzdGUuICovXG4uY3RhMTQuY3RhT3IuY3RhT3JQbGVpbiB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY09yMyk7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jT3IzKTtcbiAgICBjb2xvcjogdmFyKC0tY09ydCk7XG59XG5cbi5jdGExNC5jdGFPci5jdGFPclBsZWluOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jT3I0KTtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNPcjQpO1xufVxuXG4uY3RhMTQ6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgICBjdXJzb3I6IGF1dG87XG59XG5cbi8qIFLDtGxlIGFjdGlvbiBwcmluY2lwYWxlIDogTEUgYm91dG9uIHF1aSBmYWl0IGxhIGNob3NlIHBvdXIgbGFxdWVsbGUgbGEgcGFnZSBleGlzdGVcbiAgIChjcsOpZXIgdW4gw6l2w6luZW1lbnTigKYpLCBlbiBBY2NlbnQg4oCUIGxhIGNvdWxldXIgZGUgbCdlc3BhY2UsIG91IGNlbGxlIHF1J3VuXG4gICAuYWNjZW50QWRtaW5pc3RyYXRpb24gcG9zZSBzdXIgbHVpLiBVbiBzZXVsIHLDtGxlLCBkw6lmaW5pIGljaSBldCBudWxsZSBwYXJ0IGFpbGxldXJzXG4gICAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMDktMDYpIDogcGFzIGRlIENTUyBwYXIgYm91dG9uLiAqL1xuLmN0YVByaW1haXJlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jQWNjZW50Myk7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnR0KTtcbn1cblxuLmN0YVByaW1haXJlOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jQWNjZW50NCk7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnR0KTtcbn1cblxuLyogUsO0bGUgb2ZmcmUgOiBMRSBib3V0b24gcXVpIG3DqG5lIGF1eCBvZmZyZXMgZXQgYXV4IHRhcmlmcyDigJQgT3IsIGxhIGNvdWxldXIgZHUgcHJpeCBldCBkZVxuICAgbCdpbnNjcmlwdGlvbiAoY291bGV1cnMubWQpLiBMJ2VuY2FkcsOpIMKrIGxpbWl0ZSBkJ8OpdsOpbmVtZW50cyDCuyBkdSBTdHVkaW8uICovXG4uY3RhT3Ige1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNPcjMpO1xuICAgIGNvbG9yOiB2YXIoLS1jT3J0KTtcbn1cblxuLmN0YU9yOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jT3I0KTtcbiAgICBjb2xvcjogdmFyKC0tY09ydCk7XG59XG5cbi8qIFLDtGxlIGFwZXLDp3UgOiBMRSBib3V0b24gcXVpIGxhbmNlIHVuIGFwZXLDp3Ug4oCUIHZpb2xldCBhcGVyw6d1LCBwYXJ0b3V0XG4gICAoY2F0YWxvZ3VlLCBwYWdlIE1vZGlmaWVyLCBmaWNoZXMgZCdhbmltYXRpb24pLiBVbiBhcGVyw6d1ID0gdmlvbGV0LFxuICAgZMOpY2lzaW9uIFBPIDIwMjYtMDctMTguICovXG4uY3RhUHJldmlldyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0FjY2VudF9hKTtcbiAgICBjb2xvcjogdmFyKC0tY0JsYW5jKTtcbn1cblxuLmN0YVByZXZpZXc6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNBY2NlbnRfYWgpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgQkFER0UgTU9ERSBURVNUIC0gUsOpdXRpbGlzYWJsZSBwYXJ0b3V0XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4uYmFkZ2VNb2RlVGVzdCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IHZhcigtLXBhZGRpbmdCYWRnZSk7XG4gICAgZm9udDogdmFyKC0tZkxhYmVsKTtcbiAgICBjb2xvcjogdmFyKC0tY0JsYW5jKTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jQWNjZW50Myk7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBtYXJnaW46IDEwcHggMDtcbn0iLCJmaWVsZHNldCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY0JsYW5jKTtcbiAgICBib3JkZXI6IHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyUjEpO1xuICAgIG1hcmdpbjogMTBweCAwO1xuICAgIHBhZGRpbmc6IDIwcHg7XG59XG5cbmZpZWxkc2V0IGgzIHtcbiAgICBtYXJnaW46IDAgMCAwLjkzNzVyZW07XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnQzKTtcbn1cblxuaHIge1xuICAgIG1hcmdpbjogMzBweCAwO1xuICAgIGJvcmRlci10b3A6IHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cblxuaHIubWluaSB7XG4gICAgbWFyZ2luOiAxMHB4IDA7XG4gICAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyKTtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xufVxuXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbiNpbWdGb3JtIHtcbiAgICBtYXgtd2lkdGg6IDY5MHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1hcmdpbjogMTVweCAwO1xufVxuXG4jaW1nRm9ybSA+IGRpdjpsYXN0LWNoaWxkIHtcbiAgICBhc3BlY3QtcmF0aW86IDExMDAvNDQ5O1xuICAgIG1heC13aWR0aDogNjkwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luLXRvcDogNjBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMDBweDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbiNkaXZGb3JtIHtcbiAgICBtYXgtd2lkdGg6IDY5MHB4O1xuICAgIHBhZGRpbmc6IDAgNXB4O1xufVxuXG4jZGl2R2xvYmFsRm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBnYXA6IDEwcHg7XG59XG4qL1xuXG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDE1MDBweCkge1xuICAgIC8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuICAgICNkaXZHbG9iYWxGb3JtIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGdhcDogMzBweDtcbiAgICB9XG5cbiAgICAjZGl2Rm9ybSBkaXY6bGFzdC1jaGlsZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgICNkaXZGb3JtIHtcbiAgICAgICAgcGFkZGluZzogMCAzMHB4O1xuICAgIH1cblxuICAgICNpbWdGb3JtIGRpdjpsYXN0LWNoaWxkIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgICovXG59XG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuaW5wdXQucGhOb2lyOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyKTtcbn1cbiovXG5cbmxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgICBmb250OiB2YXIoLS1mTGFiZWwpO1xuICAgIG1hcmdpbjogMCAwIDJweDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiB2YXIoLS1jTm9pcjEpO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuXG4vKiBMYWJlbCBmYWN1bHRhdGlmIDogY291bGV1ciBhdHTDqW51w6llICovXG5sYWJlbDpoYXMoLmZhY3VsdGF0aWYpIHtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIzKTtcbn1cblxuLyogQ29udGVuZXVyIGTDqXNhY3RpdsOpIChjaGFtcCBkaXNhYmxlZCkgKi9cbi5kaXNhYmxlZERpdiB7XG4gICAgb3BhY2l0eTogMC41O1xufVxuXG5pbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyOiB2YXIoLS1ib3JkZXJJbnB1dCk7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyUjEpO1xuICAgIHBhZGRpbmc6IDdweCA4cHg7XG4gICAgZm9udDogdmFyKC0tZlRleHQxNik7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyMik7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLyogSW5wdXRzIHNww6ljaWF1eCA6IHBhcyBkZSB3aWR0aCAxMDAlICovXG5pbnB1dFt0eXBlPVwiY29sb3JcIl0sXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0sXG5pbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xuICAgIHdpZHRoOiBhdXRvO1xufVxuXG4vKiBVbiBub21icmUgdGllbnQgZW4gaHVpdCBjaGlmZnJlcyA6IHNvbiBjaGFtcCBhIGxhIG3Dqm1lIGxhcmdldXIgcGFydG91dCBldCBzZSBsaXQgY29tbWUgdW4gcGV0aXRcbiAgIG5vbWJyZSAoY2hlZiBkZSBwcm9qZXQsIDIwMjYtMDktMjcpLiBMYSBsYXJnZXVyIGFqb3V0ZSBhdXggY2hpZmZyZXMgbGUgcmV0cmFpdCAoOHB4IGRlIGNoYXF1ZVxuICAgY8O0dMOpKSBldCBsZXMgZmzDqGNoZXMuICovXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcbiAgICB3aWR0aDogY2FsYyg4Y2ggKyA0MHB4KTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8qIFVuIG1lbnUgZMOpcm91bGFudCBwcmVuZCBsYSBsYXJnZXVyIGRlIHNvbiBwbHVzIGxvbmcgY2hvaXgsIHBhcyBjZWxsZSBkZSBsYSBsaWduZS5cbiAgIGZpdC1jb250ZW50IGV0IG5vbiBhdXRvIDogZGFucyB1biBjb250ZW5ldXIgZmxleCwgYXV0byBsYWlzc2UgbGUgbWVudSBzJ8OpdGlyZXIuICovXG5zZWxlY3Qge1xuICAgIHdpZHRoOiBmaXQtY29udGVudDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8qIElucHV0IGNvdWxldXIgKi9cbmlucHV0W3R5cGU9XCJjb2xvclwiXSB7XG4gICAgcGFkZGluZzogMnB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtaW4td2lkdGg6IDYwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vKiBDaGFtcCBkw6lzYWN0aXbDqSDigJQgZXQgY2hhbXAgYnJ1dCBkJ3VuIGZvcm11bGFpcmUgZmlnw6kgOiBsZXMgc2VjdGlvbnMgZW50csOpZXMgZXQgbG90cyBkZVxuICAgbGEgcGFnZSDCqyBDb25maWd1cmF0aW9uIMK7IGQndW4gYXBlcsOndSBzb250IGR1IEhUTUwgYnJ1dCwgc2FucyBhdHRyaWJ1dCBgZGlzYWJsZWRgLiBNw6ptZVxuICAgdHJhaXQgcG9pbnRpbGzDqSBzdXIgZm9uZCByZXRpcsOpIDogb24gbGl0IGxhIHZhbGV1ciwgb24gdm9pdCBxdSdvbiBuZSBsYSBzYWlzaXQgcGFzLiAqL1xuaW5wdXQ6ZGlzYWJsZWQsXG5zZWxlY3Q6ZGlzYWJsZWQsXG50ZXh0YXJlYTpkaXNhYmxlZCxcbi5mb3JtdWxhaXJlRmlnZSBpbnB1dDpub3QoW3R5cGU9XCJjaGVja2JveFwiXSk6bm90KFt0eXBlPVwicmFkaW9cIl0pLFxuLmZvcm11bGFpcmVGaWdlIHNlbGVjdCxcbi5mb3JtdWxhaXJlRmlnZSB0ZXh0YXJlYSB7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tY0JsYW5jNSk7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbmlucHV0W3R5cGU9XCJmaWxlXCJdIHtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNCbGFuYyk7XG59XG5cbmlucHV0W3R5cGU9XCJmaWxlXCJdOjpmaWxlLXNlbGVjdG9yLWJ1dHRvbiB7XG4gICAgZm9udDogdmFyKC0tZlRleHQxNik7XG4gICAgY29sb3I6IHZhcigtLWNCbGFuYyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0FjY2VudDMpO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMSk7XG4gICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbn1cblxuaW5wdXRbdHlwZT1cImZpbGVcIl06OmZpbGUtc2VsZWN0b3ItYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jQWNjZW50NCk7XG59XG5cbmlucHV0OjpwbGFjZWhvbGRlcixcbnRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyNSk7XG59XG5cbnRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS1saW5lO1xufVxuXG5cbmxhYmVsIC5mYWN1bHRhdGlmIC8qLCBsYWJlbCAuZmFjdWx0YXRpZlNwYW4sIGxhYmVsIC5tb2RpZmlhYmxlIChpbnV0aWxpc8OpIDIwMjYtMDYtMTMpICovIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnQ0KTtcbiAgICBmb250OiB2YXIoLS1mTGlnaHQxNCk7XG4gICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7XG59XG5cbi8qIENhY2hlciBcIkZhY3VsdGF0aWZcIiBzdXIgbGVzIGNoYW1wcyBjb25kaXRpb25uZWxzICovXG5sYWJlbC5zYW5zRmFjdWx0YXRpZiAuZmFjdWx0YXRpZiB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogVGV4dGVzIGQnYWlkZSAqL1xuZm9ybSBzbWFsbCxcbmZvcm0gc21hbGwgYSxcbi5oZWxwLXRleHQge1xuICAgIGNvbG9yOiB2YXIoLS1jTm9pcjQpO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGZvbnQ6IHZhcigtLWZMaWdodDE0KTtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA4NXB4KTtcbiAgICBwYWRkaW5nOiAycHggMDtcbn1cblxuLmhlbHAtdGV4dC5oZWxwLWFsZXJ0ZSB7XG4gICAgY29sb3I6IHZhcigtLWNSb3VnZTQpO1xufVxuLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzXG5kaXYuY2JGb3JtIGlucHV0IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgbWFyZ2luLXRvcDogMDtcbn1cblxuZGl2LmNiRm9ybSBsYWJlbCB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRleHQtYWxpZ246IGp1c3RpZnk7XG59XG4qL1xuXG5mb3JtIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBwYWRkaW5nOiAwO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgbWF4LXdpZHRoOiA2MDBweDtcbiAgICBtaW4td2lkdGg6IGF1dG87XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIExlIGZvcm11bGFpcmUgZHUgYm91dG9uIGQnYWN0aW9uIChfYm91dG9uQWN0aW9uLnR3aWcpIG4nZXN0IHF1J3VuIG1veWVuIGQnZW52b3llciB1biBQT1NUIDpcbiAgIGlsIG5lIHByZW5kIGF1Y3VuZSBwbGFjZS4gU2FucyDDp2EsIGlsIHJlY2V2YWl0IGxhIG1pc2UgZW4gcGFnZSBkZXMgZm9ybXVsYWlyZXMgZGUgc2Fpc2llXG4gICAoNjAwcHggYXUgcGx1cywgY2VudHLDqSkgZXQgbGUgYm91dG9uIG5lIHNlIGRlc3NpbmFpdCBwYXMgY29tbWUgbGUgbcOqbWUgYm91dG9uIGVuIGxpZW4gOiBzdXJcbiAgIHVuZSBjYXJ0ZSBkJ29mZnJlIGVuIHVuZSBjb2xvbm5lLCDCqyBBY2PDqWRlciBhdXggc2VydmljZXMgwrsgKHVuIDxidXR0b24+IGRhbnMgY2UgZm9ybXVsYWlyZSlcbiAgIGZhaXNhaXQgNjAwcHggcXVhbmQgwqsgUGFzc2VyIMOgIEVzc2VudGlhbCDCuyAodW4gbGllbikgcHJlbmFpdCB0b3V0ZSBsYSBjYXJ0ZSAodnUgcGFyIGxlIGNoZWZcbiAgIGRlIHByb2pldCAyMDI2LTEwLTE1KS4gTGUgYm91dG9uIHNlIHBsYWNlIGTDqXNvcm1haXMgY29tbWUgbGUgZmVyYWl0IHVuIGxpZW4gYXUgbcOqbWUgZW5kcm9pdC4gKi9cbmZvcm0uZm9ybUJvdXRvbkFjdGlvbiB7XG4gICAgZGlzcGxheTogY29udGVudHM7XG59XG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuZm9ybSA+IGRpdiA+IGRpdi5yb3dGb3JtIGRpdiB7XG4gICAgbWFyZ2luOiA1cHggMDtcbn1cblxuZm9ybSA+IGRpdi5yb3dGb3JtIHtcbiAgICBtYXJnaW46IDA7XG59XG5cbmZvcm0gPiBkaXYucm93Rm9ybSBkaXYucm93Rm9ybURvd25UeHQge1xuICAgIG1hcmdpbjogMCAyMHB4O1xufVxuXG5mb3JtID4gZGl2LnJvd0Zvcm0gZGl2LnJvd0Zvcm1Eb3duVHh0ID4gZGl2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyOiAzcHggc29saWQgdmFyKC0tY0JsYW5jMDMpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIGZvbnQ6IHZhcigtLWZMaWdodDE0KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNCbGFuYyk7XG59XG4qL1xuXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbi5pbmZvTGlnaHQge1xuICAgIG9wYWNpdHk6IC44O1xufVxuKi9cblxuLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzXG4jZm9ybUdhaW5JbWcge1xuICAgIGdyaWQtY29sdW1uOiAxIC8gMjtcbn1cblxuI2Zvcm1Gb3JtdWxhaXJlIHtcbiAgICBncmlkLWNvbHVtbjogMiAvIDM7XG4gICAgbWF4LXdpZHRoOiAzMjBweDtcbn1cblxucCNwTUwge1xuICAgIG1hcmdpbjogMCAxMCUgMCAzOCU7XG4gICAgZ3JpZC1jb2x1bW46IDEvMztcbn1cbiovXG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuLnJvd0Zvcm0ge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxMDAlIDAlO1xufVxuXG4ucm93Rm9ybSB1bCB7XG4gICAgY29sb3I6IHZhcigtLWNSb3VnZTMpO1xuICAgIG1hcmdpbi1ibG9jay1zdGFydDogM3B4O1xuICAgIG1hcmdpbi1ibG9jay1lbmQ6IDNweDtcbiAgICBwYWRkaW5nOiAxMHB4IDAgMDtcbn1cbiovXG5cbi8qIENoZWNrYm94ICguZGl2Q2IpIC0gU3RydWN0dXJlIDogLmRpdkNiID4gaW5wdXQgKyBsYWJlbCA+IC5zdmdDYiArIHRleHRlICovXG4uZGl2Q2Ige1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW46IDVweCAwO1xufVxuXG4uZGl2Q2IgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3BhY2l0eTogMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xufVxuXG4uZGl2Q2IgbGFiZWwge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IHZhcigtLWdhcERlZmF1dCk7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbjogMDtcbn1cblxuLyogQ2FzZSDDoCBjb2NoZXIgb3UgYm91dG9uIHJhZGlvIGTDqXNhY3RpdsOpIDogbcOqbWUgYXR0w6ludWF0aW9uIGR1IGxhYmVsIChTVkcgKyB0ZXh0ZSkg4oCUXG4gICBzw6lsZWN0ZXVyIMOpbGFyZ2kgYXUgcmFkaW8gKC5kaXZSYiksIHF1aSBuJ2F2YWl0IGF1Y3VuZSBtYXJxdWUgZGUgZMOpc2FjdGl2YXRpb24uICovXG4uZGl2Q2IgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmRpc2FibGVkIH4gbGFiZWwsXG4uZGl2UmIgaW5wdXRbdHlwZT1cInJhZGlvXCJdOmRpc2FibGVkIH4gbGFiZWwge1xuICAgIG9wYWNpdHk6IDAuNjU7XG59XG5cbi5zdmdDYiB7XG4gICAgd2lkdGg6IDIycHg7XG4gICAgaGVpZ2h0OiAyMnB4O1xuICAgIGNvbG9yOiB2YXIoLS1jQmxhbmMpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uc3ZnQ2IgLmNoZWNrZWQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5zdmdDYiAuY2hlY2tlZCBwYXRoIHtcbiAgICBmaWxsOiB2YXIoLS1jTm9pcjEpO1xufVxuXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCB+IGxhYmVsIC5zdmdDYiAuY2hlY2tlZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qIGludXRpbGlzw6kgMjAyNi0wOC0wOSDigJQgcGx1cyBhdWN1biBfY2hlY2tib3guc3ZnIChTdHVkaW8gbmkgVml0cmluZSkgbmUgcG9ydGUgZGUgLmZvbmRDYlxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgfiBsYWJlbCAuc3ZnQ2IgLmZvbmRDYiB7XG4gICAgZmlsbDogdmFyKC0tY0Zvcm0pO1xufVxuKi9cblxuLmRpdkNiU3VwcCBpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZCB+IGxhYmVsIC5zdmdDYiBzdmcgLmNoZWNrZWQgcGF0aCB7XG4gICAgZmlsbDogdmFyKC0tY1JvdWdlMyk7XG59XG5cbi8qIFJhZGlvIGJ1dHRvbiAoLmRpdlJiKSAtIFN0cnVjdHVyZSA6IC5kaXZSYiA+IGlucHV0ICsgbGFiZWwgPiAuc3ZnUmIgKyB0ZXh0ZSAqL1xuLmRpdlJiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiA4cHggMCA1cHg7XG59XG5cbi5kaXZSYiBpbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG59XG5cbi5kaXZSYiBsYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogdmFyKC0tZ2FwRGVmYXV0KTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luOiAwO1xufVxuXG4uc3ZnUmIge1xuICAgIHdpZHRoOiAyMnB4O1xuICAgIGhlaWdodDogMjJweDtcbiAgICBjb2xvcjogdmFyKC0tY0JsYW5jKTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnN2Z1JiIC5jaGVja2VkIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5pbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCB+IGxhYmVsIC5zdmdSYiAuY2hlY2tlZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbmlucHV0W3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkIH4gbGFiZWwgLnN2Z1JiIC5mb25kQ2Ige1xuICAgIGZpbGw6IHZhcigtLWNGb3JtKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgIEZPUk1VTEFJUkUgRklHw4kg4oCUIGxhIHBhZ2UgwqsgQ29uZmlndXJhdGlvbiDCuyBkJ3VuIGFwZXLDp3UgKHByZXZpZXdTY2VuZUNvbmZpZy50d2lnKVxuICAgbW9udHJlIGxlIGZvcm11bGFpcmUgZCd1bmUgc2PDqG5lIHNhbnMgbGUgcmVuZHJlIHNhaXNpc3NhYmxlLlxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmZvcm11bGFpcmVGaWdlIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjg1O1xufVxuXG4vKiBUb2dnbGVzIChzb3VyY2VzIGRlIHBhcnRpY2lwYW50cykgZXQgcGlsdWxlcyAoc2xvdHMgZGUgbG90cykgOiBIVE1MIGJydXQsIHNhbnMgYXR0cmlidXRcbiAgIGBkaXNhYmxlZGAg4oCUIHNhbnMgY2V0dGUgYXR0w6ludWF0aW9uIGlscyBnYXJkZW50IGwnYXBwYXJlbmNlIGQndW4gY29udHLDtGxlIGFjdGlmLiBNw6ptZVxuICAgdmFsZXVyIHF1ZSBsZXMgY2FzZXMgw6AgY29jaGVyIGV0IGxlcyBib3V0b25zIHJhZGlvIGTDqXNhY3RpdsOpcy4gKi9cbi5mb3JtdWxhaXJlRmlnZSAudG9nZ2xlQXZlY0xhYmVsIHtcbiAgICBvcGFjaXR5OiAwLjY1O1xufVxuXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbiN1cGxvYWRCdG4xOmZvY3VzIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tY0Zvcm0pO1xufVxuKi9cblxuaW5wdXQ6Zm9jdXMsXG5zZWxlY3Q6Zm9jdXMsXG50ZXh0YXJlYTpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jRm9ybUZvY3VzKTtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdmFyKC0tY0Zvcm1Gb2N1cyk7XG59XG5cbmxhYmVsIHNtYWxsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpO1xufVxuXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbi5yb3dGb3JtRG93blR4dCB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbiovXG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuI2hvbWVEaXZIYXV0IHtcbiAgICBwYWRkaW5nOiAxNXB4IDE1cHggMXB4O1xufVxuXG4jaG9tZURpdiBidXR0b24uYnRuIHtcbiAgICBib3R0b206IDQ3cHg7XG59XG5cbi5mb3JtdWxhaXJlICNhY2Nyb2NoZVBhZ2Uge1xuICAgIG1hcmdpbi1ib3R0b206IC02MHB4O1xufVxuXG4jaG9tZURpdkJhcyB7XG4gICAgcGFkZGluZzogMXB4O1xuICAgIG1hcmdpbjogYXV0bztcbiAgICB3aWR0aDogODAlO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiovXG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuLnJvd09wdGluMSxcbi5yb3dPcHRpbjIsXG4ucm93T3B0aW4zLFxuLnJvd09wdGluNCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogNXB4IDA7XG59XG5cbi5yb3dPcHRpbjEgbGFiZWwgYSB7XG4gICAgcGFkZGluZzogMDtcbn1cbiovXG5cblxuLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzXG4jZGl2Rm9ybSBkaXYgI2xvYWRpbmdCYXJTcGlubmVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIG1hcmdpbjogMjBweDtcbiAgICBmb250OiB2YXIoLS1mTGFiZWwpO1xuICAgIGNvbG9yOiB2YXIoLS1jVGV4dGUxKTtcbiAgICBwYWRkaW5nOiAxNXB4IDMwcHg7XG59XG4qL1xuXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbiNzcGlubmVySWNvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgYm9yZGVyOiBzb2xpZCAycHggdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tY1RleHRlMSk7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWNUZXh0ZTEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbmltYXRpb246IGFuaW1lU3Bpbm5lckljb24gMTAwMG1zIGxpbmVhciBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBhbmltZVNwaW5uZXJJY29uIHtcbiAgICAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG59XG4qL1xuXG4uY3RhU3VwcHJpbWVyLFxuLmN0YVNlY29uZGFpcmUsXG4uY3RhVmFsaWRlciAvKiwgLmN0YVZhbGlkZXIyIChpbnV0aWxpc8OpIDIwMjYtMDYtMTMpICovIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICAvKiBIYXV0ZXVyIG1pbmltYWxlLCBwYXMgZml4ZSA6IHVuIGxpYmVsbMOpIHN1ciBkZXV4IGxpZ25lcyAowqsgQ2hhbmdlciBtb24gbW90IGRlIHBhc3NlIMK7KVxuICAgICAgIHNlIGZhaXNhaXQgY291cGVyIGVuIGJhcyAodnUgZW4gcHJvZHVjdGlvbiBsZSAyMDI2LTEwLTEzKS4gKi9cbiAgICBtaW4taGVpZ2h0OiA1MHB4O1xuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udDogdmFyKC0tZkN0YTE2KTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMSk7XG59XG5cbi5jdGFTZWNvbmRhaXJlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY0FjY2VudDMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNCbGFuYyk7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnQzKTtcbn1cblxuLmN0YVZhbGlkZXIgLyosIC5jdGFWYWxpZGVyMiAoaW51dGlsaXPDqSAyMDI2LTA2LTEzKSAqLyB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNBY2NlbnRfYSk7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnR0KTtcbn1cblxuLyogVW4gbGllbiBoYWJpbGzDqSBlbiBib3V0b24gZGUgdmFsaWRhdGlvbiAowqsgQWxsZXIgw6AgbW9uIHN0dWRpbyDCuykgOiB1biA8YnV0dG9uPiBjZW50cmUgc29uXG4gICBsaWJlbGzDqSB0b3V0IHNldWwsIHVuIDxhPiBub24g4oCUIGxlIHRleHRlIHJlc3RhaXQgZW4gaGF1dCDDoCBnYXVjaGUgZGUgbGEgem9uZSBibGV1ZVxuICAgKGTDqWNpc2lvbiBjaGVmIGRlIHByb2pldCAyMDI2LTEwLTE0KS4gKi9cbmEuY3RhVmFsaWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLmN0YVN1cHByaW1lciB7XG4gICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY0JsYW5jMDMpO1xuICAgIGNvbG9yOiB2YXIoLS1jUm91Z2U0KTtcbn1cblxuLmN0YVZhbGlkZXI6aG92ZXIgLyosIC5jdGFWYWxpZGVyMjpob3ZlciAoaW51dGlsaXPDqSAyMDI2LTA2LTEzKSAqLyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0FjY2VudF9haCk7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnR0KTtcbn1cblxuLmN0YVZhbGlkZXI6ZGlzYWJsZWQsXG4vKiAuY3RhVmFsaWRlcjI6ZGlzYWJsZWQsIChpbnV0aWxpc8OpIDIwMjYtMDYtMTMpICovXG4uY3RhU2Vjb25kYWlyZTpkaXNhYmxlZCxcbi5jdGFTdXBwcmltZXI6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNDtcbiAgICBjdXJzb3I6IHdhaXQ7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgZmlsdGVyOiBncmF5c2NhbGUoMSk7XG59XG5cbi5mb3JtdWxhaXJlIHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDY1MHB4KSB7XG5cbiAgICAuZm9ybXVsYWlyZSB7XG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBhdXRvO1xuICAgICAgICBnYXA6IDAgdmFyKC0tZ2FwTGlzdGUpOyAvKiBhbGlnbsOpIDMwIC0+IDMycHggKMOpY2hlbGxlIFBPIDIwMjYtMDctMTgpICovXG4gICAgfVxuXG4gICAgLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzXG4gICAgLmZvcm11bGFpcmVCb3JuZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMjtcbiAgICAgICAgZ3JpZC1yb3c6IDEgLyAyO1xuICAgIH1cblxuICAgIC5mb3JtdWxhaXJlRGF0ZSB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMjtcbiAgICAgICAgZ3JpZC1yb3c6IDIgLyAzO1xuICAgIH1cblxuICAgIC5mb3JtdWxhaXJlQ29tbWVyY2lhbCB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAxIC8gMjtcbiAgICAgICAgZ3JpZC1yb3c6IDMgLyA0O1xuICAgIH1cblxuICAgIC5mb3JtdWxhaXJlTWFnYXNpbiB7XG4gICAgICAgIGdyaWQtY29sdW1uOiAyIC8gMztcbiAgICAgICAgZ3JpZC1yb3c6IDEgLyA1O1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgIH1cbiAgICAqL1xuXG59XG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xucCNtZXNzYWdlRGF0ZSB7XG4gICAgY29sb3I6IHZhcigtLWNOb2lyMyk7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG5wI21lc3NhZ2VEYXRlLmVycmV1ckRhdGUsXG5wI21lc3NhZ2VEYXRlMi5lcnJldXJEYXRlIHtcbiAgICBjb2xvcjogdmFyKC0tY1JvdWdlMyk7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuKi9cblxuZmllbGRzZXQgdWwge1xuICAgIG1hcmdpbjogMCAwIDEwcHggMDtcbn1cblxuZmllbGRzZXQgdWwgbGkge1xuICAgIGNvbG9yOiB2YXIoLS1jUm91Z2UzKTtcbn1cblxuLyogaW51dGlsaXPDqSAyMDI2LTA2LTEzXG4uaW1nQm9ybmUge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG4qL1xuXG5sYWJlbC5yZXF1aXJlZCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiBtYXgtY29udGVudDtcbn1cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xubGFiZWwucmVxdWlyZWQyOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIipcIjtcbiAgICBtYXJnaW4tbGVmdDogM3B4O1xuICAgIGNvbG9yOiB2YXIoLS1jTm9pcjIpO1xufVxuKi9cblxudGV4dGFyZWEge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbn0iLCIvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgUGFnZXMgZCdhdXRoZW50aWZpY2F0aW9uIChsb2dpbiwgcmVnaXN0ZXIsIGluc2NyaXB0aW9uKVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLmF1dGhGb3JtIHtcbiAgICBwYWRkaW5nOiA0MHB4IDIwcHggMjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4vKiBMJ2VuY2FkcsOpIGV0IGNlIHF1aSBzZSBwb3NlIFNPVVMgbHVpLCBlbXBpbMOpcyBldCBjZW50csOpcyAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0XG4gICAyMDI2LTA5LTEyKS4gYC5hdXRoRm9ybWAganVzdGUgYXUtZGVzc3VzIGVzdCB1bmUgUkFOR8OJRSA6IHVuIHNlY29uZCBlbmZhbnQgcyd5IHBsYWNlcmFpdCDDoFxuICAgY8O0dMOpIGRlIGxhIGJvw650ZSwgcGFzIGRlc3NvdXMuIEQnb8O5IGNldHRlIGNvbG9ubmUgaW50ZXJtw6lkaWFpcmUuXG4gICBQb3PDqWUgcGFyIGxhIGJyaXF1ZSBub3lhdS9fL19ib2l0ZUZvcm11bGFpcmUudHdpZyBhdXRvdXIgZGUgY2hhcXVlIGJvw650ZSA7IGxlcyByw6hnbGVzIHZpdmVudFxuICAgaWNpIHBhcmNlIHF1ZSBjJ2VzdCBsZSBDU1MgZGVzIHBhZ2VzIGQnYXV0aGVudGlmaWNhdGlvbiwgZXQgbGUgc2V1bCBxdWUgY2VzIHBhZ2VzIGNoYXJnZW50XG4gICAoZW50csOpZSB3ZWJwYWNrIGBub3lhdWApLiAqL1xuLmF1dGhDb2xvbm5lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyogTEEgU09SVElFLCBzb3VzIGwnZW5jYWRyw6kgYmxhbmMgZXQgY2VudHLDqWUgZGVzc291cyA6IGNlcyBwYWdlcyBuJ29udCBuaSBtZW51IG5pIHBpZWQgZGVcbiAgIHBhZ2UsIHNhbnMgZWxsZSBvbiBuZSBwZXV0IHBsdXMgcmVwYXJ0aXIuIE1hcmdlIGNvdXJ0ZSDigJQgZMOpdGFjaMOpZSBkZSBsYSBib8OudGUsIG1haXMgYXNzZXpcbiAgIHByb2NoZSBwb3VyIHNlIHZvaXIgc2FucyBsYSBjaGVyY2hlci4gKi9cbi5hdXRoUmV0b3VyQWNjdWVpbCB7XG4gICAgbWFyZ2luOiAxNnB4IDAgMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udDogdmFyKC0tZlRleHQxNik7XG59XG5cbi8qIExhIHBocmFzZSBxdWkgZGl0IHBvdXJxdW9pIG9uIGVzdCBsw6AsIHF1YW5kIG9uIGFycml2ZSBkdSBwYXJjb3VycyDCqyBjcsOpZXIgdW4gw6l2w6luZW1lbnQgwrsuXG4gICBVbiBwYXJhZ3JhcGhlLCBwYXMgdW4gYmFuZGVhdSA6IHJpZW4gbidhIHLDqXVzc2ksIGlsIHJlc3RlIHVuZSDDqXRhcGUgw6AgZnJhbmNoaXIuICovXG4uZW50cmVlUG91ckNyZWVyIHtcbiAgICBmb250OiB2YXIoLS1mVGV4dDE2KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAwIDAgMjBweDtcbn1cblxuLyogQm94IGRlIGNvbm5leGlvbiAvIGluc2NyaXB0aW9uICovXG4uYm94Q2VudGVyRm9ybSB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0JsYW5jKTtcbiAgICBib3JkZXI6IHZhcigtLWJvcmRlcik7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyUjIpO1xuICAgIHBhZGRpbmc6IDMwcHggNDBweCA0MHB4O1xuICAgIC8qIFVuZSBsYXJnZXVyIGZpeGUsIHBhcyB1biBwb3VyY2VudGFnZSA6IGxlIHBhcmVudCAoLmF1dGhDb2xvbm5lKSBwcmVuZCBsYSBsYXJnZXVyIGRlIHNvblxuICAgICAgIGNvbnRlbnUsIGV0IDk1ICUgZGUgbHVpIGZhaXNhaWVudCB2YXJpZXIgbGEgYm/DrnRlIHNlbG9uIGwnw6l0YXBlIGV0IGxhIGxhbmd1ZS4gU3VyXG4gICAgICAgdMOpbMOpcGhvbmUsIGwnw6ljcmFuIG1vaW5zIGxlcyAyIMOXIDIwIHB4IGRlIC5hdXRoRm9ybS4gKi9cbiAgICB3aWR0aDogbWluKDQwMHB4LCAxMDB2dyAtIDQwcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggdmFyKC0tY09tYnJlKTtcbiAgICBtYXJnaW46IDA7XG59XG5cbi5ib3hDZW50ZXJGb3JtIGgzIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbjogMCAwIDIwcHggMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8qIGludXRpbGlzw6kgMjAyNi0wNi0xM1xuLmJveENlbnRlckZvcm0gLnNvdXNUaXRyZSB7XG4gICAgZm9udDogdmFyKC0tZkxpZ2h0MTQpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW46IDAgMCAyMHB4IDA7XG59XG4qL1xuXG5mb3JtID4gZGl2IHtcbiAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuXG4uYm94Q2VudGVyRm9ybSAuY3RhVmFsaWRlciB7XG4gICAgbWFyZ2luLXRvcDogNXB4O1xufVxuXG4vKiBBY3Rpb25zIGR1IGZvcm11bGFpcmUgKHZhbGlkZXIgKyBhbm51bGVyKSAqL1xuLmZvcm1BY3Rpb25zIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xufVxuXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbi5mb3JtQWN0aW9uc0ZsZXgge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA1MDBweCkge1xuICAgIC5mb3JtQWN0aW9uc0ZsZXgge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgICAgIGdhcDogMTVweDtcbiAgICB9XG5cbiAgICAuZm9ybUFjdGlvbnNGbGV4IC5jdGFWYWxpZGVyLFxuICAgIC5mb3JtQWN0aW9uc0ZsZXggLmN0YVNlY29uZGFpcmUge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgZmxleDogMCAxIGF1dG87XG4gICAgfVxufVxuKi9cblxuLyogQWxlcnRlcyAqL1xuLmFsZXJ0RXJyZXVyLFxuLmFsZXJ0RXJyZXVyT0F1dGgsXG4uYWxlcnRTdWNjZXMge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNSb3VnZTQpO1xuICAgIGNvbG9yOiB2YXIoLS1jQmxhbmMpO1xuICAgIHBhZGRpbmc6IHZhcigtLXBhZGRpbmdNaW5pRGl2KTtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIGZvbnQ6IHZhcigtLWZUZXh0MTYpO1xufVxuXG4vKiBNZXNzYWdlIGQnZXJyZXVyIGlubGluZSBPQXV0aCAqL1xuLmFsZXJ0RXJyZXVyT0F1dGgge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG59XG5cbi5hbGVydFN1Y2NlcyB7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY1N1Y2NlczApO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNTdWNjZXMzKTtcbiAgICBjb2xvcjogdmFyKC0tY1N1Y2NlczQpO1xufVxuXG4vKiBMaWVuIHZlcnMgYXV0cmUgcGFnZSBhdXRoICovXG4vKiBpbnV0aWxpc8OpIDIwMjYtMDYtMTNcbi5saWVuQXV0aCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyKTtcbiAgICBmb250OiB2YXIoLS1mTGlnaHQxNCk7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG4ubGllbkF1dGggYSB7XG4gICAgY29sb3I6IHZhcigtLWNBY2NlbnQzKTtcbn1cblxuLmxpZW5BdXRoIGE6aG92ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1jQmxhbmMpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNBY2NlbnQ0KTtcbn1cbiovXG5cbi8qIFPDqXBhcmF0ZXVyIE9BdXRoICovXG4uYm94Q2VudGVyRm9ybSBociB7XG4gICAgbWFyZ2luOiA1MHB4IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJvcmRlci10b3A6IHZhcigtLWJvcmRlcik7XG59XG5cbi8qIFPDqXBhcmF0ZXVyIGF2ZWMgZXNwYWNlIGJsYW5jICovXG5oci5zZXBhcmF0ZXVyIHtcbiAgICBtYXJnaW46IDMwcHggMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyKTtcbn1cblxuLyogUGV0aXQgdHJhaXQgKGhyLm1pbmkpIGRhbnMgbGEgYm/DrnRlIDogaWwgZ2FyZGUgc2EgbWFyZ2UgcsOpZHVpdGUsIHF1ZSBsYSByw6hnbGUgZHUgc8OpcGFyYXRldXJcbiAgIE9BdXRoICguYm94Q2VudGVyRm9ybSBociwgNTBweCkgw6ljcmFzZXJhaXQuIElsIHPDqXBhcmUgbGVzIG5vdGVzIGR1IGZvcm11bGFpcmUuICovXG4uYm94Q2VudGVyRm9ybSBoci5taW5pIHtcbiAgICBtYXJnaW46IDIwcHggMCAwO1xufVxuXG4vKiBCb3V0b24gT0F1dGggKi9cbi5idG5PQXV0aCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGdhcDogdmFyKC0tZ2FwTGFyZ2UpOyAvKiBhbGlnbsOpIDE2IC0+IDIwcHggKMOpY2hlbGxlIFBPIDIwMjYtMDctMTgpICovXG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY05vaXIxKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMSk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0JsYW5jKTtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIxKTtcbiAgICBmb250OiB2YXIoLS1mQ3RhMTYpO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzO1xufVxuXG4uYnRuT0F1dGg6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWNBY2NlbnQwKTtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIxKTtcbn1cblxuLmJ0bk9BdXRoIHN2ZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xufVxuXG4vKiDDiXRhdCBkZSBjaGFyZ2VtZW50IGR1IGZvcm11bGFpcmUgKi9cbi5mb3JtRW5DaGFyZ2VtZW50IHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmZvcm1FbkNoYXJnZW1lbnQgaW5wdXQsXG4uZm9ybUVuQ2hhcmdlbWVudCBzZWxlY3QsXG4uZm9ybUVuQ2hhcmdlbWVudCB0ZXh0YXJlYSxcbi5mb3JtRW5DaGFyZ2VtZW50IGxhYmVsIHtcbiAgICBvcGFjaXR5OiAwLjU7XG59XG5cblxuLyogTm90ZXMgZCd1biBmb3JtdWxhaXJlLCDDoCBsYSBmYcOnb24gZGUgV2lraXDDqWRpYSA6IGxlIGxpYmVsbMOpIGQndW5lIGNhc2UgcG9ydGUgdW4gwqsgwrkgwrsgZW5cbiAgIGV4cG9zYW50LCBzYW5zIGxpZW4sIGV0IGxlIGRvY3VtZW50IHNlIGxpdCBkYW5zIGxhIG5vdGUgc291cyBsZSBmb3JtdWxhaXJlLiBBdWN1biBsaWVuIGRhbnNcbiAgIGxlIGxpYmVsbMOpIDogY2xpcXVlciBzdXIgbGEgY2FzZSBuZSBkb2l0IHBhcyByaXNxdWVyIGQnb3V2cmlyIHVuIGRvY3VtZW50IMOgIGxhIHBsYWNlXG4gICAoZMOpY2lzaW9uIGNoZWYgZGUgcHJvamV0IDIwMjYtMTAtMTUpLiAqL1xuLm5vdGVzRm9ybXVsYWlyZSB7XG4gICAgbWFyZ2luOiB2YXIoLS1nYXBEZWZhdXQpIDAgMDtcbiAgICBwYWRkaW5nOiAwIDAgMCAxLjRlbTtcbiAgICBmb250OiB2YXIoLS1mVGV4dDE2KTtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIyKTtcbn1cblxuLm5vdGVzRm9ybXVsYWlyZSBsaSB7XG4gICAgbWFyZ2luOiA0cHggMDtcbn1cbiIsIi8qKlxuICogQ29tcG9zYW50IENoYW1wIGRlIGNvZGUgw6AgNiBjaGlmZnJlc1xuICpcbiAqIFNpeCBjYXNlcyBkZXNzaW7DqWVzICguY2hhbXBDb2RlNkNhc2UpLCB1biBzZXVsIHZyYWkgY2hhbXAgcG9zw6kgcGFyLWRlc3N1cywgdHJhbnNwYXJlbnQgOlxuICogdm9pciB0cy9jb21wb3NhbnRzL2NoYW1wQ29kZTYudHMuIExlIGNoYW1wIG4nZXN0IHBhcyBtYXNxdcOpIChvcGFjaXR5KSBtYWlzIHJlbmR1XG4gKiB0cmFuc3BhcmVudCA6IHN1ciBpUGhvbmUsIHVuIGNoYW1wIG1hc3F1w6kgbmUgcHJvcG9zZSBwbHVzIMKrIENvbGxlciDCuyDDoCBsJ2FwcHVpIGxvbmcuXG4gKi9cblxuLmNoYW1wQ29kZTZDYXNlcyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNiwgMWZyKTtcbiAgICBnYXA6IHZhcigtLWdhcERlZmF1dCk7XG59XG5cbi5jaGFtcENvZGU2Q2FzZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFzcGVjdC1yYXRpbzogNCAvIDU7XG4gICAgYm9yZGVyOiB2YXIoLS1ib3JkZXJGb3JtKTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXJSMik7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY0JsYW5jKTtcbiAgICBjb2xvcjogdmFyKC0tY05vaXIxKTtcbiAgICBmb250OiB2YXIoLS1mTW9ubzI0Yik7XG59XG5cbi5jaGFtcENvZGU2Q2FzZS5jYXNlQWN0aXZlIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWNGb3JtRm9jdXMpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1jRm9ybUZvY3VzSGFsbyk7XG59XG5cbi8qIExlIHZyYWkgY2hhbXAgY291dnJlIGxlcyBzaXggY2FzZXMgOiB1biB0b3VjaGVyIG4naW1wb3J0ZSBvw7kgbCdhY3RpdmUsIGwnYXBwdWkgbG9uZyB5IGNvbGxlLlxuICAgMTZweCA6IGVuIGRlc3NvdXMsIGlPUyB6b29tZSBzdXIgbGUgY2hhbXAgw6AgbGEgc2Fpc2llLiAqL1xuLmNoYW1wQ29kZTZDYXNlcyBpbnB1dC5jaGFtcENvZGU2IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgaW5zZXQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgY2FyZXQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGZvbnQ6IHZhcigtLWZUZXh0MTYpO1xuICAgIGN1cnNvcjogdGV4dDtcbn1cblxuLmNoYW1wQ29kZTZDYXNlcyBpbnB1dC5jaGFtcENvZGU2OjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uY2hhbXBDb2RlNkNhc2VzIGlucHV0LmNoYW1wQ29kZTY6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbn1cblxuLyogwqsgQ29sbGVyIGxlIGNvZGUgwrsgOiBjZW50csOpIHNvdXMgbGVzIGNhc2VzICovXG5idXR0b24uY2hhbXBDb2RlNkNvbGxlcjpub3QoW2hpZGRlbl0pIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW46IHZhcigtLWdhcE1veWVuKSBhdXRvIDA7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/