@edugouvfr/ngx-dsfr-ext
Version:
NgxDsfrExt est une extension au package @edugouvfr/ngx-dsfr (portage Angular des éléments DSFR)
319 lines • 30.7 kB
JavaScript
/**
* Constantes des identifiants d'actions de formatage supportés.
*/
export var FormatConst;
(function (FormatConst) {
FormatConst["ALIGN"] = "align";
FormatConst["BACKGROUND"] = "background";
FormatConst["BLOCKQUOTE"] = "blockquote";
FormatConst["BOLD"] = "bold";
FormatConst["CLEAN"] = "clean";
FormatConst["CODE_BLOCK"] = "code-block";
FormatConst["COLOR"] = "color";
FormatConst["DIRECTION"] = "direction";
FormatConst["HEADER"] = "header";
FormatConst["IMAGE"] = "image";
FormatConst["INDENT"] = "indent";
FormatConst["ITALIC"] = "italic";
FormatConst["LINK"] = "link";
FormatConst["LIST"] = "list";
FormatConst["SCRIPT"] = "script";
FormatConst["SIZE"] = "size";
FormatConst["STRIKE"] = "strike";
FormatConst["UNDERLINE"] = "underline";
})(FormatConst || (FormatConst = {}));
/**
* Mapping des clés d'internationalisation des libellés des actions de formatage.
*
* Selon le contexte, le libellé sera utilisé comme tooltip, libellé de champ ou transcription accessible.
*/
export const FORMAT_I18N_KEYS = {
'align': {
normal: 'editor.controls.align.left',
center: 'editor.controls.align.center',
right: 'editor.controls.align.right',
justify: 'editor.controls.align.justify',
},
'background': 'editor.controls.background',
'blockquote': 'editor.controls.blockquote',
'clean': 'editor.controls.clean',
'bold': 'editor.controls.bold',
'code-block': 'editor.controls.code',
'color': 'editor.controls.color',
'direction': { normal: 'editor.controls.direction.normal', rtl: 'editor.controls.direction.rtl' },
'header': {
'label': 'editor.controls.header.label',
'0': 'editor.controls.header.0',
'1': 'editor.controls.header.1',
'2': 'editor.controls.header.2',
'3': 'editor.controls.header.3',
'4': 'editor.controls.header.4',
'5': 'editor.controls.header.5',
'6': 'editor.controls.header.6',
},
'image': 'editor.controls.image.label',
'indent': { '-1': 'editor.controls.indent.-1', '+1': 'editor.controls.indent.+1' },
'italic': 'editor.controls.italic',
'link': 'editor.controls.link.label',
'list': {
ordered: 'editor.controls.list.ordered',
bullet: 'editor.controls.list.bullet',
unchecked: 'editor.controls.list.checkbox',
},
'script': { sub: 'editor.controls.script.sub', super: 'editor.controls.script.super' },
'size': {
label: 'editor.controls.size.label',
small: 'editor.controls.size.small',
normal: 'editor.controls.size.normal',
large: 'editor.controls.size.large',
huge: 'editor.controls.size.huge',
},
'strike': 'editor.controls.strike',
'underline': 'editor.controls.underline',
};
/**
* Mapping des icônes par défaut correspondant aux actions de formatage supportées.
*
* Note de conception (RPA+KGE) pour l'instant on décide de maintenir les icônes dans une structure à part afin de
* verrouiller le modèle. Si demain on souhaite donner à l'utilisateur la possibilité de surcharger les icônes des
* actions de formatage alors on pourra réintégrer les icônes au modèle en augmentant l'interface `BaseFormatControl`
* d'une propriété `icon` (rétrocompatible car la propriété aura une valeur par défaut dans le modèle par défaut)
*/
export const FORMAT_ICON = {
'align': {
normal: 'fr-icon-align-left',
center: 'fr-icon-align-center',
right: 'fr-icon-align-right',
justify: 'fr-icon-align-justify',
},
'background': 'fr-icon-brush-3-line',
'blockquote': 'fr-icon-quote-line',
'clean': 'fr-icon-clean',
'bold': 'fr-icon-bold',
'code-block': 'fr-icon-code-view',
'color': 'fr-icon-font-color',
'direction': 'fr-icon-direction-rtl',
'header': undefined,
'image': 'fr-icon-image-line',
'indent': { '-1': 'fr-icon-indent-decrease', '+1': 'fr-icon-indent-increase' },
'italic': 'fr-icon-italic',
'link': 'fr-icon-link',
'list': { ordered: 'fr-icon-list-ordered', bullet: 'fr-icon-list-unordered', unchecked: 'fr-icon-list-check' },
'script': { sub: 'fr-icon-subscript', super: 'fr-icon-superscript' },
'size': undefined,
'strike': 'fr-icon-strike',
'underline': 'fr-icon-underline',
};
/**
* Les différents mode supportés par les contrôles de formatage à valeur unique.
*/
export var ControlMode;
(function (ControlMode) {
/**
* Active/désactive le format.
*/
ControlMode["TOGGLE"] = "toggle";
/**
* Le format dépend de la capture d'un paramètre utilisateur.
*/
ControlMode["PROMPT"] = "prompt";
/**
* Action issue d'une des options d'une action multivaluée érigée en action unique autonome.
* Ex. je veux un bouton permettant de formater en Titre de niveau 1 (H1)
*/
ControlMode["CUSTOM"] = "custom";
/**
* Permet de représenter l'une des options d'une action multivaluée.
*/
ControlMode["VALUE"] = "valued";
/**
* Dénote une action de formatage multivaluée à afficher sous forme de selecteur.
*/
ControlMode["SELECT"] = "select";
/**
* Dénote une action de formatage multivaluée à afficher sous de groupe de bouton exclusif.
*/
ControlMode["RADIO"] = "radio";
/**
* Mode spécial dénotant le contrôle de réinitialisation.
*/
ControlMode["CLEAN"] = "clean";
})(ControlMode || (ControlMode = {}));
/**
* Les valeurs possibles pour le format 'size'.
*/
export var SizeValue;
(function (SizeValue) {
SizeValue["SMALL"] = "small";
SizeValue["NORMAL"] = "normal";
SizeValue["LARGE"] = "large";
SizeValue["HUGE"] = "huge";
})(SizeValue || (SizeValue = {}));
/**
* Les valeurs possibles pour le format 'header'.
*/
export var HeaderValue;
(function (HeaderValue) {
HeaderValue[HeaderValue["NORMAL"] = 0] = "NORMAL";
HeaderValue[HeaderValue["H1"] = 1] = "H1";
HeaderValue[HeaderValue["H2"] = 2] = "H2";
HeaderValue[HeaderValue["H3"] = 3] = "H3";
HeaderValue[HeaderValue["H4"] = 4] = "H4";
HeaderValue[HeaderValue["H5"] = 5] = "H5";
HeaderValue[HeaderValue["H6"] = 6] = "H6";
})(HeaderValue || (HeaderValue = {}));
/**
* Les valeurs possibles pour le format 'align'.
*/
export var AlignValue;
(function (AlignValue) {
AlignValue["LEFT"] = "normal";
AlignValue["CENTER"] = "center";
AlignValue["RIGHT"] = "right";
AlignValue["JUSTIFY"] = "justify";
})(AlignValue || (AlignValue = {}));
/**
* Les valeurs possibles pour le format 'list'.
*/
export var ListValue;
(function (ListValue) {
ListValue["ORDERED"] = "ordered";
ListValue["BULLET"] = "bullet";
ListValue["CHECKBOX"] = "unchecked";
})(ListValue || (ListValue = {}));
/**
* Les valeurs possibles pour le format 'script'.
*/
export var ScriptValue;
(function (ScriptValue) {
/**
* Subscript.
*/
ScriptValue["SUBSCRIPT"] = "sub";
/**
* Superscript.
*/
ScriptValue["SUPERSCRIPT"] = "super";
})(ScriptValue || (ScriptValue = {}));
/**
* Les valeurs possibles pour le format 'indent'.
*/
export var IndentValue;
(function (IndentValue) {
/**
* Decrease indent.
*/
IndentValue["DECREASE"] = "-1";
/**
* Increase indent.
*/
IndentValue["INCREASE"] = "+1";
})(IndentValue || (IndentValue = {}));
/**
* Les valeurs possibles pour le format 'direction'.
*/
export var DirectionValue;
(function (DirectionValue) {
/**
* De gauche à droite.
*/
DirectionValue["NORMAL"] = "normal";
/**
* De droite à gauche.
*/
DirectionValue["RTL"] = "rtl";
})(DirectionValue || (DirectionValue = {}));
/**
* Permet de sortir une des options de formatage d'une action multivaluée et d el'ériger en action unique autonome.
*/
//TODO: pas encore opérationnel, à re-travailler notamment sur la fourniture icône, libellés i18n, etc.
export class DsfrCustomFormatControl {
/**
* Construit une action de formatage valuée.
*
* @param name le format de cette action
* @param value la valeur spécifique de cette action de formatage
*/
constructor(name, value) {
this.name = name;
this.value = value;
/**
* Le mode d'une action avec valeur prédéfinie est forcément 'valued'.
*/
this.mode = ControlMode.CUSTOM;
}
}
/**
*
*/
export class DsfrToggleFormatControl {
constructor(name) {
this.name = name;
/**
* Le mode d'une action avec valeur prédéfinie est forcément 'toggle'.
*/
this.mode = ControlMode.TOGGLE;
}
}
/**
*
*/
export class DsfrPromptFormatControl {
constructor(name) {
this.name = name;
/**
* Le mode d'une action avec valeur prédéfinie est forcément 'prompt'.
*/
this.mode = ControlMode.PROMPT;
}
}
/**
* Représente une des actions possibles d'une méta-action multi-valuée.
*/
export class DsfrValueFormatControl {
/**
* Construit une action de formatage valuée.
*
* @param value la valeur spécifique de cette action de formatage
*/
constructor(value) {
this.value = value;
/**
* Le mode d'une action avec valeur prédéfinie est forcément 'valued'.
*/
this.mode = ControlMode.VALUE;
}
}
/**
* Représente une action multi-valuée en mode radio.
*/
export class RadioFormatControl {
/**
* Construit un control de type radio.
*
* @param values les différentes valeurs possibles pour le control de type radio
*/
constructor(name, values, group) {
this.name = name;
this.values = values;
this.group = group;
this.mode = ControlMode.RADIO;
}
}
/**
* Représente une action multi-valuée en mode select.
*/
export class SelectFormatControl {
/**
* Construit un control de type select.
*
* @param values les différentes valeurs possibles pour le control de type select.
*/
constructor(name, values) {
this.name = name;
this.values = values;
this.mode = ControlMode.SELECT;
this.group = false;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXRvb2xiYXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1leHQvZWRpdG9yL3NyYy9saWIvY29tcG9uZW50cy90b29sYmFyL2VkaXRvci10b29sYmFyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksV0FtQlg7QUFuQkQsV0FBWSxXQUFXO0lBQ3JCLDhCQUFlLENBQUE7SUFDZix3Q0FBeUIsQ0FBQTtJQUN6Qix3Q0FBeUIsQ0FBQTtJQUN6Qiw0QkFBYSxDQUFBO0lBQ2IsOEJBQWUsQ0FBQTtJQUNmLHdDQUF5QixDQUFBO0lBQ3pCLDhCQUFlLENBQUE7SUFDZixzQ0FBdUIsQ0FBQTtJQUN2QixnQ0FBaUIsQ0FBQTtJQUNqQiw4QkFBZSxDQUFBO0lBQ2YsZ0NBQWlCLENBQUE7SUFDakIsZ0NBQWlCLENBQUE7SUFDakIsNEJBQWEsQ0FBQTtJQUNiLDRCQUFhLENBQUE7SUFDYixnQ0FBaUIsQ0FBQTtJQUNqQiw0QkFBYSxDQUFBO0lBQ2IsZ0NBQWlCLENBQUE7SUFDakIsc0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQW5CVyxXQUFXLEtBQVgsV0FBVyxRQW1CdEI7QUFPRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQW9EO0lBQy9FLE9BQU8sRUFBRTtRQUNQLE1BQU0sRUFBRSw0QkFBNEI7UUFDcEMsTUFBTSxFQUFFLDhCQUE4QjtRQUN0QyxLQUFLLEVBQUUsNkJBQTZCO1FBQ3BDLE9BQU8sRUFBRSwrQkFBK0I7S0FDekM7SUFDRCxZQUFZLEVBQUUsNEJBQTRCO0lBQzFDLFlBQVksRUFBRSw0QkFBNEI7SUFDMUMsT0FBTyxFQUFFLHVCQUF1QjtJQUNoQyxNQUFNLEVBQUUsc0JBQXNCO0lBQzlCLFlBQVksRUFBRSxzQkFBc0I7SUFDcEMsT0FBTyxFQUFFLHVCQUF1QjtJQUNo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QUssR0FBTCxLQUFLLENBQVM7UUFWdkIsU0FBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFXdEIsQ0FBQztDQUNMO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBSTlCOzs7O09BSUc7SUFDSCxZQUNTLElBQVksRUFDWixNQUFnQztRQURoQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBMEI7UUFWekMsU0FBSSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDMUIsVUFBSyxHQUFHLEtBQUssQ0FBQztJQVVYLENBQUM7Q0FDTCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29uc3RhbnRlcyBkZXMgaWRlbnRpZmlhbnRzIGQnYWN0aW9ucyBkZSBmb3JtYXRhZ2Ugc3VwcG9ydMOpcy5cbiAqL1xuZXhwb3J0IGVudW0gRm9ybWF0Q29uc3Qge1xuICBBTElHTiA9ICdhbGlnbicsXG4gIEJBQ0tHUk9VTkQgPSAnYmFja2dyb3VuZCcsXG4gIEJMT0NLUVVPVEUgPSAnYmxvY2txdW90ZScsXG4gIEJPTEQgPSAnYm9sZCcsXG4gIENMRUFOID0gJ2NsZWFuJyxcbiAgQ09ERV9CTE9DSyA9ICdjb2RlLWJsb2NrJyxcbiAgQ09MT1IgPSAnY29sb3InLFxuICBESVJFQ1RJT04gPSAnZGlyZWN0aW9uJyxcbiAgSEVBREVSID0gJ2hlYWRlcicsXG4gIElNQUdFID0gJ2ltYWdlJyxcbiAgSU5ERU5UID0gJ2luZGVudCcsXG4gIElUQUxJQyA9ICdpdGFsaWMnLFxuICBMSU5LID0gJ2xpbmsnLFxuICBMSVNUID0gJ2xpc3QnLFxuICBTQ1JJUFQgPSAnc2NyaXB0JyxcbiAgU0laRSA9ICdzaXplJyxcbiAgU1RSSUtFID0gJ3N0cmlrZScsXG4gIFVOREVSTElORSA9ICd1bmRlcmxpbmUnLFxufVxuXG4vKipcbiAqIFR5cGUgY29ycmVzcG9uZGFudCBhdXggaWRlbnRpZmlhbnRzIGQnYWN0aW9ucyBkZSBmb3JtYXRhZ2Ugc3VwcG9ydMOpcy5cbiAqL1xuZXhwb3J0IHR5cGUgRm9ybWF0ID0gYCR7Rm9ybWF0Q29uc3R9YDtcblxuLyoqXG4gKiBNYXBwaW5nIGRlcyBjbMOpcyBkJ2ludGVybmF0aW9uYWxpc2F0aW9uIGRlcyBsaWJlbGzDqXMgZGVzIGFjdGlvbnMgZGUgZm9ybWF0YWdlLlxuICpcbiAqIFNlbG9uIGxlIGNvbnRleHRlLCBsZSBsaWJlbGzDqSBzZXJhIHV0aWxpc8OpIGNvbW1lIHRvb2x0aXAsIGxpYmVsbMOpIGRlIGNoYW1wIG91IHRyYW5zY3JpcHRpb24gYWNjZXNzaWJsZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEZPUk1BVF9JMThOX0tFWVM6IFJlY29yZDxGb3JtYXQsIHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICAnYWxpZ24nOiB7XG4gICAgbm9ybWFsOiAnZWRpdG9yLmNvbnRyb2xzLmFsaWduLmxlZnQnLFxuICAgIGNlbnRlcjogJ2VkaXRvci5jb250cm9scy5hbGlnbi5jZW50ZXInLFxuICAgIHJpZ2h0OiAnZWRpdG9yLmNvbnRyb2xzLmFsaWduLnJpZ2h0JyxcbiAgICBqdXN0aWZ5OiAnZWRpdG9yLmNvbnRyb2xzLmFsaWduLmp1c3RpZnknLFxuICB9LFxuICAnYmFja2dyb3VuZCc6ICdlZGl0b3IuY29udHJvbHMuYmFja2dyb3VuZCcsXG4gICdibG9ja3F1b3RlJzogJ2VkaXRvci5jb250cm9scy5ibG9ja3F1b3RlJyxcbiAgJ2NsZWFuJzogJ2VkaXRvci5jb250cm9scy5jbGVhbicsXG4gICdib2xkJzogJ2VkaXRvci5jb250cm9scy5ib2xkJyxcbiAgJ2NvZGUtYmxvY2snOiAnZWRpdG9yLmNvbnRyb2xzLmNvZGUnLFxuICAnY29sb3InOiAnZWRpdG9yLmNvbnRyb2xzLmNvbG9yJyxcbiAgJ2RpcmVjdGlvbic6IHsgbm9ybWFsOiAnZWRpdG9yLmNvbnRyb2xzLmRpcmVjdGlvbi5ub3JtYWwnLCBydGw6ICdlZGl0b3IuY29udHJvbHMuZGlyZWN0aW9uLnJ0bCcgfSxcbiAgJ2hlYWRlcic6IHtcbiAgICAnbGFiZWwnOiAnZWRpdG9yLmNvbnRyb2xzLmhlYWRlci5sYWJlbCcsXG4gICAgJzAnOiAnZWRpdG9yLmNvbnRyb2xzLmhlYWRlci4wJyxcbiAgICAnMSc6ICdlZGl0b3IuY29udHJvbHMuaGVhZGVyLjEnLFxuICAgICcyJzogJ2VkaXRvci5jb250cm9scy5oZWFkZXIuMicsXG4gICAgJzMnOiAnZWRpdG9yLmNvbnRyb2xzLmhlYWRlci4zJyxcbiAgICAnNCc6ICdlZGl0b3IuY29udHJvbHMuaGVhZGVyLjQnLFxuICAgICc1JzogJ2VkaXRvci5jb250cm9scy5oZWFkZXIuNScsXG4gICAgJzYnOiAnZWRpdG9yLmNvbnRyb2xzLmhlYWRlci42JyxcbiAgfSxcbiAgJ2ltYWdlJzogJ2VkaXRvci5jb250cm9scy5pbWFnZS5sYWJlbCcsXG4gICdpbmRlbnQnOiB7ICctMSc6ICdlZGl0b3IuY29udHJvbHMuaW5kZW50Li0xJywgJysxJzogJ2VkaXRvci5jb250cm9scy5pbmRlbnQuKzEnIH0sXG4gICdpdGFsaWMnOiAnZWRpdG9yLmNvbnRyb2xzLml0YWxpYycsXG4gICdsaW5rJzogJ2VkaXRvci5jb250cm9scy5saW5rLmxhYmVsJyxcbiAgJ2xpc3QnOiB7XG4gICAgb3JkZXJlZDogJ2VkaXRvci5jb250cm9scy5saXN0Lm9yZGVyZWQnLFxuICAgIGJ1bGxldDogJ2VkaXRvci5jb250cm9scy5saXN0LmJ1bGxldCcsXG4gICAgdW5jaGVja2VkOiAnZWRpdG9yLmNvbnRyb2xzLmxpc3QuY2hlY2tib3gnLFxuICB9LFxuICAnc2NyaXB0JzogeyBzdWI6ICdlZGl0b3IuY29udHJvbHMuc2NyaXB0LnN1YicsIHN1cGVyOiAnZWRpdG9yLmNvbnRyb2xzLnNjcmlwdC5zdXBlcicgfSxcbiAgJ3NpemUnOiB7XG4gICAgbGFiZWw6ICdlZGl0b3IuY29udHJvbHMuc2l6ZS5sYWJlbCcsXG4gICAgc21hbGw6ICdlZGl0b3IuY29udHJvbHMuc2l6ZS5zbWFsbCcsXG4gICAgbm9ybWFsOiAnZWRpdG9yLmNvbnRyb2xzLnNpemUubm9ybWFsJyxcbiAgICBsYXJnZTogJ2VkaXRvci5jb250cm9scy5zaXplLmxhcmdlJyxcbiAgICBodWdlOiAnZWRpdG9yLmNvbnRyb2xzLnNpemUuaHVnZScsXG4gIH0sXG4gICdzdHJpa2UnOiAnZWRpdG9yLmNvbnRyb2xzLnN0cmlrZScsXG4gICd1bmRlcmxpbmUnOiAnZWRpdG9yLmNvbnRyb2xzLnVuZGVybGluZScsXG59O1xuXG4vKipcbiAqIE1hcHBpbmcgZGVzIGljw7RuZXMgcGFyIGTDqWZhdXQgY29ycmVzcG9uZGFudCBhdXggYWN0aW9ucyBkZSBmb3JtYXRhZ2Ugc3VwcG9ydMOpZXMuXG4gKlxuICogTm90ZSBkZSBjb25jZXB0aW9uIChSUEErS0dFKSBwb3VyIGwnaW5zdGFudCBvbiBkw6ljaWRlIGRlIG1haW50ZW5pciBsZXMgaWPDtG5lcyBkYW5zIHVuZSBzdHJ1Y3R1cmUgw6AgcGFydCBhZmluIGRlXG4gKiB2ZXJyb3VpbGxlciBsZSBtb2TDqGxlLiBTaSBkZW1haW4gb24gc291aGFpdGUgZG9ubmVyIMOgIGwndXRpbGlzYXRldXIgbGEgcG9zc2liaWxpdMOpIGRlIHN1cmNoYXJnZXIgbGVzIGljw7RuZXMgZGVzXG4gKiBhY3Rpb25zIGRlIGZvcm1hdGFnZSBhbG9ycyBvbiBwb3VycmEgcsOpaW50w6lncmVyIGxlcyBpY8O0bmVzIGF1IG1vZMOobGUgZW4gYXVnbWVudGFudCBsJ2ludGVyZmFjZSBgQmFzZUZvcm1hdENvbnRyb2xgXG4gKiBkJ3VuZSBwcm9wcmnDqXTDqSBgaWNvbmAgKHLDqXRyb2NvbXBhdGlibGUgY2FyIGxhIHByb3ByacOpdMOpIGF1cmEgdW5lIHZhbGV1ciBwYXIgZMOpZmF1dCBkYW5zIGxlIG1vZMOobGUgcGFyIGTDqWZhdXQpXG4gKi9cbmV4cG9ydCBjb25zdCBGT1JNQVRfSUNPTjogUmVjb3JkPEZvcm1hdCwgc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZD4gPSB7XG4gICdhbGlnbic6IHtcbiAgICBub3JtYWw6ICdmci1pY29uLWFsaWduLWxlZnQnLFxuICAgIGNlbnRlcjogJ2ZyLWljb24tYWxpZ24tY2VudGVyJyxcbiAgICByaWdodDogJ2ZyLWljb24tYWxpZ24tcmlnaHQnLFxuICAgIGp1c3RpZnk6ICdmci1pY29uLWFsaWduLWp1c3RpZnknLFxuICB9LFxuICAnYmFja2dyb3VuZCc6ICdmci1pY29uLWJydXNoLTMtbGluZScsXG4gICdibG9ja3F1b3RlJzogJ2ZyLWljb24tcXVvdGUtbGluZScsXG4gICdjbGVhbic6ICdmci1pY29uLWNsZWFuJyxcbiAgJ2JvbGQnOiAnZnItaWNvbi1ib2xkJyxcbiAgJ2NvZGUtYmxvY2snOiAnZnItaWNvbi1jb2RlLXZpZXcnLFxuICAnY29sb3InOiAnZnItaWNvbi1mb250LWNvbG9yJyxcbiAgJ2RpcmVjdGlvbic6ICdmci1pY29uLWRpcmVjdGlvbi1ydGwnLFxuICAnaGVhZGVyJzogdW5kZWZpbmVkLFxuICAnaW1hZ2UnOiAnZnItaWNvbi1pbWFnZS1saW5lJyxcbiAgJ2luZGVudCc6IHsgJy0xJzogJ2ZyLWljb24taW5kZW50LWRlY3JlYXNlJywgJysxJzogJ2ZyLWljb24taW5kZW50LWluY3JlYXNlJyB9LFxuICAnaXRhbGljJzogJ2ZyLWljb24taXRhbGljJyxcbiAgJ2xpbmsnOiAnZnItaWNvbi1saW5rJyxcbiAgJ2xpc3QnOiB7IG9yZGVyZWQ6ICdmci1pY29uLWxpc3Qtb3JkZXJlZCcsIGJ1bGxldDogJ2ZyLWljb24tbGlzdC11bm9yZGVyZWQnLCB1bmNoZWNrZWQ6ICdmci1pY29uLWxpc3QtY2hlY2snIH0sXG4gICdzY3JpcHQnOiB7IHN1YjogJ2ZyLWljb24tc3Vic2NyaXB0Jywgc3VwZXI6ICdmci1pY29uLXN1cGVyc2NyaXB0JyB9LFxuICAnc2l6ZSc6IHVuZGVmaW5lZCxcbiAgJ3N0cmlrZSc6ICdmci1pY29uLXN0cmlrZScsXG4gICd1bmRlcmxpbmUnOiAnZnItaWNvbi11bmRlcmxpbmUnLFxufTtcblxuLyoqXG4gKiBMZXMgZGlmZsOpcmVudHMgbW9kZSBzdXBwb3J0w6lzIHBhciBsZXMgY29udHLDtGxlcyBkZSBmb3JtYXRhZ2Ugw6AgdmFsZXVyIHVuaXF1ZS5cbiAqL1xuZXhwb3J0IGVudW0gQ29udHJvbE1vZGUge1xuICAvKipcbiAgICogQWN0aXZlL2TDqXNhY3RpdmUgbGUgZm9ybWF0LlxuICAgKi9cbiAgVE9HR0xFID0gJ3RvZ2dsZScsXG4gIC8qKlxuICAgKiBMZSBmb3JtYXQgZMOpcGVuZCBkZSBsYSBjYXB0dXJlIGQndW4gcGFyYW3DqHRyZSB1dGlsaXNhdGV1ci5cbiAgICovXG4gIFBST01QVCA9ICdwcm9tcHQnLFxuICAvKipcbiAgICogQWN0aW9uIGlzc3VlIGQndW5lIGRlcyBvcHRpb25zIGQndW5lIGFjdGlvbiBtdWx0aXZhbHXDqWUgw6lyaWfDqWUgZW4gYWN0aW9uIHVuaXF1ZSBhdXRvbm9tZS5cbiAgICogRXguIGplIHZldXggdW4gYm91dG9uIHBlcm1ldHRhbnQgZGUgZm9ybWF0ZXIgZW4gVGl0cmUgZGUgbml2ZWF1IDEgKEgxKVxuICAgKi9cbiAgQ1VTVE9NID0gJ2N1c3RvbScsXG4gIC8qKlxuICAgKiBQZXJtZXQgZGUgcmVwcsOpc2VudGVyIGwndW5lIGRlcyBvcHRpb25zIGQndW5lIGFjdGlvbiBtdWx0aXZhbHXDqWUuXG4gICAqL1xuICBWQUxVRSA9ICd2YWx1ZWQnLFxuICAvKipcbiAgICogRMOpbm90ZSB1bmUgYWN0aW9uIGRlIGZvcm1hdGFnZSBtdWx0aXZhbHXDqWUgw6AgYWZmaWNoZXIgc291cyBmb3JtZSBkZSBzZWxlY3RldXIuXG4gICAqL1xuICBTRUxFQ1QgPSAnc2VsZWN0JyxcbiAgLyoqXG4gICAqIETDqW5vdGUgdW5lIGFjdGlvbiBkZSBmb3JtYXRhZ2UgbXVsdGl2YWx1w6llIMOgIGFmZmljaGVyIHNvdXMgZGUgZ3JvdXBlIGRlIGJvdXRvbiBleGNsdXNpZi5cbiAgICovXG4gIFJBRElPID0gJ3JhZGlvJyxcbiAgLyoqXG4gICAqIE1vZGUgc3DDqWNpYWwgZMOpbm90YW50IGxlIGNvbnRyw7RsZSBkZSByw6lpbml0aWFsaXNhdGlvbi5cbiAgICovXG4gIENMRUFOID0gJ2NsZWFuJyxcbn1cblxuLyoqXG4gKiBMZXMgdmFsZXVycyBwb3NzaWJsZXMgcG91ciBsZSBmb3JtYXQgJ3NpemUnLlxuICovXG5leHBvcnQgZW51bSBTaXplVmFsdWUge1xuICBTTUFMTCA9ICdzbWFsbCcsXG4gIE5PUk1BTCA9ICdub3JtYWwnLFxuICBMQVJHRSA9ICdsYXJnZScsXG4gIEhVR0UgPSAnaHVnZScsXG59XG5cbi8qKlxuICogTGVzIHZhbGV1cnMgcG9zc2libGVzIHBvdXIgbGUgZm9ybWF0ICdoZWFkZXInLlxuICovXG5leHBvcnQgZW51bSBIZWFkZXJWYWx1ZSB7XG4gIE5PUk1BTCA9IDAsXG4gIEgxID0gMSxcbiAgSDIgPSAyLFxuICBIMyA9IDMsXG4gIEg0ID0gNCxcbiAgSDUgPSA1LFxuICBINiA9IDYsXG59XG5cbi8qKlxuICogTGVzIHZhbGV1cnMgcG9zc2libGVzIHBvdXIgbGUgZm9ybWF0ICdhbGlnbicuXG4gKi9cbmV4cG9ydCBlbnVtIEFsaWduVmFsdWUge1xuICBMRUZUID0gJ25vcm1hbCcsXG4gIENFTlRFUiA9ICdjZW50ZXInLFxuICBSSUdIVCA9ICdyaWdodCcsXG4gIEpVU1RJRlkgPSAnanVzdGlmeScsXG59XG5cbi8qKlxuICogTGVzIHZhbGV1cnMgcG9zc2libGVzIHBvdXIgbGUgZm9ybWF0ICdsaXN0Jy5cbiAqL1xuZXhwb3J0IGVudW0gTGlzdFZhbHVlIHtcbiAgT1JERVJFRCA9ICdvcmRlcmVkJyxcbiAgQlVMTEVUID0gJ2J1bGxldCcsXG4gIENIRUNLQk9YID0gJ3VuY2hlY2tlZCcsXG59XG5cbi8qKlxuICogTGVzIHZhbGV1cnMgcG9zc2libGVzIHBvdXIgbGUgZm9ybWF0ICdzY3JpcHQnLlxuICovXG5leHBvcnQgZW51bSBTY3JpcHRWYWx1ZSB7XG4gIC8qKlxuICAgKiBTdWJzY3JpcHQuXG4gICAqL1xuICBTVUJTQ1JJUFQgPSAnc3ViJyxcbiAgLyoqXG4gICAqIFN1cGVyc2NyaXB0LlxuICAgKi9cbiAgU1VQRVJTQ1JJUFQgPSAnc3VwZXInLFxufVxuXG4vKipcbiAqIExlcyB2YWxldXJzIHBvc3NpYmxlcyBwb3VyIGxlIGZvcm1hdCAnaW5kZW50Jy5cbiAqL1xuZXhwb3J0IGVudW0gSW5kZW50VmFsdWUge1xuICAvKipcbiAgICogRGVjcmVhc2UgaW5kZW50LlxuICAgKi9cbiAgREVDUkVBU0UgPSAnLTEnLFxuICAvKipcbiAgICogSW5jcmVhc2UgaW5kZW50LlxuICAgKi9cbiAgSU5DUkVBU0UgPSAnKzEnLFxufVxuXG4vKipcbiAqIExlcyB2YWxldXJzIHBvc3NpYmxlcyBwb3VyIGxlIGZvcm1hdCAnZGlyZWN0aW9uJy5cbiAqL1xuZXhwb3J0IGVudW0gRGlyZWN0aW9uVmFsdWUge1xuICAvKipcbiAgICogRGUgZ2F1Y2hlIMOgIGRyb2l0ZS5cbiAgICovXG4gIE5PUk1BTCA9ICdub3JtYWwnLFxuXG4gIC8qKlxuICAgKiBEZSBkcm9pdGUgw6AgZ2F1Y2hlLlxuICAgKi9cbiAgUlRMID0gJ3J0bCcsXG59XG5cbi8qKlxuICogUmVwcsOpc2VudGUgdW5lIHTDomNoZSBkZSBmb3JtYXRhZ2UgZGUgYmFzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEc2ZyQmFzZUZvcm1hdENvbnRyb2wge1xuICAvKipcbiAgICogTCdpZGVudGlmaWFudCBRdWlsbCBkdSBmb3JtYXQuXG4gICAqL1xuICBuYW1lOiBGb3JtYXQ7XG5cbiAgLyoqXG4gICAqIExlIG1vZGUgZHUgY29udHLDtGxlIGRlIGZvcm1hdC5cbiAgICovXG4gIG1vZGU6IENvbnRyb2xNb2RlO1xufVxuXG4vKipcbiAqIFJlcHLDqXNlbnRlIHVuZSBhY3Rpb24gc2ltcGxlIChib3V0b24pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERzZnJTaW5nbGVGb3JtYXRDb250cm9sIGV4dGVuZHMgRHNmckJhc2VGb3JtYXRDb250cm9sIHtcbiAgLyoqXG4gICAqIE9wdGlvbm5lbCA6IHBlcm1ldCBkZSBzdXJjaGFyZ2VyIGwnaWPDtG5lIGlsbHVzdHJhdGl2ZS5cbiAgICogRG9pdCDDqnRyZSB1bmUgY2xhc3NlIENTUyBSZW1peCB3cmFwcMOpZSBEU0ZSLiBFeC4gJ2ZyLWljb24tYm9sZCcuXG4gICAqL1xuICBpY29uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBlcm1ldCBkZSBzb3J0aXIgdW5lIGRlcyBvcHRpb25zIGRlIGZvcm1hdGFnZSBkJ3VuZSBhY3Rpb24gbXVsdGl2YWx1w6llIGV0IGQgZWwnw6lyaWdlciBlbiBhY3Rpb24gdW5pcXVlIGF1dG9ub21lLlxuICovXG4vL1RPRE86IHBhcyBlbmNvcmUgb3DDqXJhdGlvbm5lbCwgw6AgcmUtdHJhdmFpbGxlciBub3RhbW1lbnQgc3VyIGxhIGZvdXJuaXR1cmUgaWPDtG5lLCBsaWJlbGzDqXMgaTE4biwgZXRjLlxuZXhwb3J0IGNsYXNzIERzZnJDdXN0b21Gb3JtYXRDb250cm9sIGltcGxlbWVudHMgRHNmclNpbmdsZUZvcm1hdENvbnRyb2wge1xuICAvKipcbiAgICogTGUgbW9kZSBkJ3VuZSBhY3Rpb24gYXZlYyB2YWxldXIgcHLDqWTDqWZpbmllIGVzdCBmb3Jjw6ltZW50ICd2YWx1ZWQnLlxuICAgKi9cbiAgbW9kZSA9IENvbnRyb2xNb2RlLkNVU1RPTTtcblxuICAvKipcbiAgICogQ29uc3RydWl0IHVuZSBhY3Rpb24gZGUgZm9ybWF0YWdlIHZhbHXDqWUuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIGxlIGZvcm1hdCBkZSBjZXR0ZSBhY3Rpb25cbiAgICogQHBhcmFtIHZhbHVlIGxhIHZhbGV1ciBzcMOpY2lmaXF1ZSBkZSBjZXR0ZSBhY3Rpb24gZGUgZm9ybWF0YWdlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogRm9ybWF0LFxuICAgIHB1YmxpYyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgZmFsc2UsXG4gICkge31cbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgY2xhc3MgRHNmclRvZ2dsZUZvcm1hdENvbnRyb2wgaW1wbGVtZW50cyBEc2ZyU2luZ2xlRm9ybWF0Q29udHJvbCB7XG4gIC8qKlxuICAgKiBMZSBtb2RlIGQndW5lIGFjdGlvbiBhdmVjIHZhbGV1ciBwcsOpZMOpZmluaWUgZXN0IGZvcmPDqW1lbnQgJ3RvZ2dsZScuXG4gICAqL1xuICBtb2RlID0gQ29udHJvbE1vZGUuVE9HR0xFO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBGb3JtYXQpIHt9XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIERzZnJQcm9tcHRGb3JtYXRDb250cm9sIGltcGxlbWVudHMgRHNmclNpbmdsZUZvcm1hdENvbnRyb2wge1xuICAvKipcbiAgICogTGUgbW9kZSBkJ3VuZSBhY3Rpb24gYXZlYyB2YWxldXIgcHLDqWTDqWZpbmllIGVzdCBmb3Jjw6ltZW50ICdwcm9tcHQnLlxuICAgKi9cbiAgbW9kZSA9IENvbnRyb2xNb2RlLlBST01QVDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogRm9ybWF0KSB7fVxufVxuXG4vKipcbiAqIFJlcHLDqXNlbnRlIHVuZSBkZXMgYWN0aW9ucyBwb3NzaWJsZXMgZCd1bmUgbcOpdGEtYWN0aW9uIG11bHRpLXZhbHXDqWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEc2ZyVmFsdWVGb3JtYXRDb250cm9sIGltcGxlbWVudHMgT21pdDxEc2ZyU2luZ2xlRm9ybWF0Q29udHJvbCwgJ25hbWUnPiB7XG4gIC8qKlxuICAgKiBMZSBtb2RlIGQndW5lIGFjdGlvbiBhdmVjIHZhbGV1ciBwcsOpZMOpZmluaWUgZXN0IGZvcmPDqW1lbnQgJ3ZhbHVlZCcuXG4gICAqL1xuICBtb2RlID0gQ29udHJvbE1vZGUuVkFMVUU7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVpdCB1bmUgYWN0aW9uIGRlIGZvcm1hdGFnZSB2YWx1w6llLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgbGEgdmFsZXVyIHNww6ljaWZpcXVlIGRlIGNldHRlIGFjdGlvbiBkZSBmb3JtYXRhZ2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgZmFsc2UpIHt9XG59XG5cbi8qKlxuICogUmVwcsOpc2VudGUgdW5lIG3DqXRhLXTDomNoZSBxdWkgcydhcHBsaXF1ZSDDoCB0cmF2ZXJzIGxhIHPDqWxlY3Rpb24gZCd1bmUgdmFsZXVyIGNvbmNyw6h0ZSBhdSBzZWluIGQndW5lIGxpc3RlIGRlIHZhbGV1cnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHNmck11bHRpdmFsdWVkRm9ybWF0Q29udHJvbCBleHRlbmRzIERzZnJCYXNlRm9ybWF0Q29udHJvbCB7XG4gIC8qKlxuICAgKiBQZXJtZXQgZCdpbmRpcXVlciBzaSBsZSBjb250csO0bGUgbXVsdGl2YWx1w6kgZG9pdCBzJ2FmZmljaGVyIGF1IHNlaW4gZCd1biBncm91cGUgZGFucyBsYSB0b29sYmFyLlxuICAgKi9cbiAgZ3JvdXA6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFZhbGV1cnMgcG9zc2libGVzIHBvdXIgY2V0dGUgYWN0aW9uIGRlIGZvcm1hdGFnZS5cbiAgICovXG4gIHZhbHVlczogRHNmclZhbHVlRm9ybWF0Q29udHJvbFtdO1xufVxuXG4vKipcbiAqIFJlcHLDqXNlbnRlIHVuZSBhY3Rpb24gbXVsdGktdmFsdcOpZSBlbiBtb2RlIHJhZGlvLlxuICovXG5leHBvcnQgY2xhc3MgUmFkaW9Gb3JtYXRDb250cm9sIGltcGxlbWVudHMgRHNmck11bHRpdmFsdWVkRm9ybWF0Q29udHJvbCB7XG4gIG1vZGUgPSBDb250cm9sTW9kZS5SQURJTztcblxuICAvKipcbiAgICogQ29uc3RydWl0IHVuIGNvbnRyb2wgZGUgdHlwZSByYWRpby5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlcyBsZXMgZGlmZsOpcmVudGVzIHZhbGV1cnMgcG9zc2libGVzIHBvdXIgbGUgY29udHJvbCBkZSB0eXBlIHJhZGlvXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbmFtZTogRm9ybWF0LFxuICAgIHB1YmxpYyB2YWx1ZXM6IERzZnJWYWx1ZUZvcm1hdENvbnRyb2xbXSxcbiAgICBwdWJsaWMgZ3JvdXA6IGJvb2xlYW4sXG4gICkge31cbn1cblxuLyoqXG4gKiBSZXByw6lzZW50ZSB1bmUgYWN0aW9uIG11bHRpLXZhbHXDqWUgZW4gbW9kZSBzZWxlY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWxlY3RGb3JtYXRDb250cm9sIGltcGxlbWVudHMgRHNmck11bHRpdmFsdWVkRm9ybWF0Q29udHJvbCB7XG4gIG1vZGUgPSBDb250cm9sTW9kZS5TRUxFQ1Q7XG4gIGdyb3VwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVpdCB1biBjb250cm9sIGRlIHR5cGUgc2VsZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVzIGxlcyBkaWZmw6lyZW50ZXMgdmFsZXVycyBwb3NzaWJsZXMgcG91ciBsZSBjb250cm9sIGRlIHR5cGUgc2VsZWN0LlxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hbWU6IEZvcm1hdCxcbiAgICBwdWJsaWMgdmFsdWVzOiBEc2ZyVmFsdWVGb3JtYXRDb250cm9sW10sXG4gICkge31cbn1cblxuLyoqXG4gKiBUeXBlIGfDqW7DqXJpcXVlIGVuY2Fwc3VsYW50IHRvdXRlcyBsZXMgdHlwZXMgZGUgdMOiY2hlcyBkZSBmb3JtYXRhZ2UuXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1hdENvbnRyb2wgPSBEc2ZyU2luZ2xlRm9ybWF0Q29udHJvbCB8IERzZnJNdWx0aXZhbHVlZEZvcm1hdENvbnRyb2w7XG5cbi8qKlxuICogVHlwZSBkw6ljcml2YW50IHVuIMOpbMOpbWVudCBkZSBsYSBiYXJyZSBkJ291dGlsIHF1aSBwZXV0IMOqdHJlIHNvaXQgdW5lIHTDomNoZSB1bml0YWlyZSBzb2l0IHVuIHJlZ3JvdXBlbWVudCBkZSB0w6JjaGVzLlxuICovXG5leHBvcnQgdHlwZSBUb29sYmFyQ29udHJvbCA9IEZvcm1hdENvbnRyb2wgfCBGb3JtYXRDb250cm9sW107XG4iXX0=