@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
88 lines • 15.7 kB
JavaScript
import { CommonModule } from '@angular/common';
import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
import { DsfrI18nPipe } from '../../shared';
import { DsfrNoticeTypeConst } from './notice.model';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class DsfrNoticeComponent {
constructor(hostElement) {
this.hostElement = hostElement;
/**
* Permet d'afficher le bouton servant à fermer le bandeau d'information.<br>
* La valeur 'controlled' permet d'afficher le bouton de fermeture, mais c'est vous qui devez contrôler l'action de
* fermeture du bandeau.
*/
this.closeable = false;
/**
* @since 1.12 Permet d'enlever l'icône du bandeau d'information
*/
this.noIcon = false;
/**
* @since 1.12 Sévérité du message
*/
this.type = DsfrNoticeTypeConst.INFO;
/**
* Signale la fermeture manuelle du bandeau d'information.
*/
this.noticeClose = new EventEmitter();
}
get iconClass() {
return this.icon ?? '';
}
/** @deprecated since 1.12 use `closeable`instead. */
get closable() {
return this.closeable;
}
/** @deprecated since 1.12 use `heading` instead. */
get message() {
return this.heading;
}
/** @deprecated since 1.12 use `closeable`instead. */
set closable(value) {
this.closeable = value;
}
/**
* Le message qui sera affiché dans le bandeau.
*
* Renseigner le message via l'input est prioritaire sur le slot.
*
* @deprecated since 1.12 use `heading` instead.
*/
set message(value) {
this.heading = value;
}
/** @internal */
onClose() {
if (this.closeable && this.closeable !== 'controlled') {
this.hostElement.nativeElement.parentNode?.removeChild(this.hostElement.nativeElement);
}
this.noticeClose.emit(this.hostElement);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrNoticeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DsfrNoticeComponent, isStandalone: true, selector: "dsfr-notice", inputs: { heading: "heading", headingLevel: "headingLevel", closeable: "closeable", noIcon: "noIcon", icon: "icon", description: "description", type: "type", closable: "closable", message: "message" }, outputs: { noticeClose: "noticeClose" }, ngImport: i0, template: "<div\n class=\"fr-notice\"\n [class]=\"'fr-notice--' + type\"\n [ngClass]=\"{\n 'fr-notice--no-icon': noIcon === true\n }\">\n <div class=\"fr-container\">\n <div class=\"fr-notice__body\">\n <p>\n @if (heading) {\n <!-- Titre obligatoire -->\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n } @else {\n <span class=\"fr-notice__title\" [ngClass]=\"iconClass\"><ng-content></ng-content></span>\n }\n\n @if (description) {\n <span class=\"fr-notice__desc\" [innerHTML]=\"description\"></span>\n }\n\n <ng-content select=\"[link]\"></ng-content>\n </p>\n\n @if (closable) {\n <button type=\"button\" class=\"fr-btn--close fr-btn\" title=\"{{ 'notice.close' | dsfrI18n }}\" (click)=\"onClose()\">\n {{ 'notice.close' | dsfrI18n }}\n </button>\n }\n </div>\n </div>\n</div>\n\n<!-- Templates ----------------------------------------------------------------------------------------------------- -->\n\n<ng-template #headingTemplate>\n @switch (headingLevel) {\n @case ('H2') {\n <h2 class=\"fr-notice__title\">{{ heading }}</h2>\n }\n @case ('H3') {\n <h3 class=\"fr-notice__title\">{{ heading }}</h3>\n }\n @case ('H4') {\n <h4 class=\"fr-notice__title\">{{ heading }}</h4>\n }\n @case ('H5') {\n <h5 class=\"fr-notice__title\">{{ heading }}</h5>\n }\n @case ('H6') {\n <h6 class=\"fr-notice__title\">{{ heading }}</h6>\n }\n @default {\n <span class=\"fr-notice__title\">{{ heading }}</span>\n }\n }\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DsfrI18nPipe, name: "dsfrI18n" }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrNoticeComponent, decorators: [{
type: Component,
args: [{ selector: 'dsfr-notice', encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, DsfrI18nPipe], template: "<div\n class=\"fr-notice\"\n [class]=\"'fr-notice--' + type\"\n [ngClass]=\"{\n 'fr-notice--no-icon': noIcon === true\n }\">\n <div class=\"fr-container\">\n <div class=\"fr-notice__body\">\n <p>\n @if (heading) {\n <!-- Titre obligatoire -->\n <ng-container [ngTemplateOutlet]=\"headingTemplate\"></ng-container>\n } @else {\n <span class=\"fr-notice__title\" [ngClass]=\"iconClass\"><ng-content></ng-content></span>\n }\n\n @if (description) {\n <span class=\"fr-notice__desc\" [innerHTML]=\"description\"></span>\n }\n\n <ng-content select=\"[link]\"></ng-content>\n </p>\n\n @if (closable) {\n <button type=\"button\" class=\"fr-btn--close fr-btn\" title=\"{{ 'notice.close' | dsfrI18n }}\" (click)=\"onClose()\">\n {{ 'notice.close' | dsfrI18n }}\n </button>\n }\n </div>\n </div>\n</div>\n\n<!-- Templates ----------------------------------------------------------------------------------------------------- -->\n\n<ng-template #headingTemplate>\n @switch (headingLevel) {\n @case ('H2') {\n <h2 class=\"fr-notice__title\">{{ heading }}</h2>\n }\n @case ('H3') {\n <h3 class=\"fr-notice__title\">{{ heading }}</h3>\n }\n @case ('H4') {\n <h4 class=\"fr-notice__title\">{{ heading }}</h4>\n }\n @case ('H5') {\n <h5 class=\"fr-notice__title\">{{ heading }}</h5>\n }\n @case ('H6') {\n <h6 class=\"fr-notice__title\">{{ heading }}</h6>\n }\n @default {\n <span class=\"fr-notice__title\">{{ heading }}</span>\n }\n }\n</ng-template>\n" }]
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { heading: [{
type: Input
}], headingLevel: [{
type: Input
}], closeable: [{
type: Input
}], noIcon: [{
type: Input
}], icon: [{
type: Input
}], description: [{
type: Input
}], type: [{
type: Input
}], noticeClose: [{
type: Output
}], closable: [{
type: Input
}], message: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kc2ZyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL25vdGljZS9ub3RpY2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvbm90aWNlL25vdGljZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQW9CLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RCxPQUFPLEVBQWtCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQVNyRSxNQUFNLE9BQU8sbUJBQW1CO0lBNEM5QixZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWhDM0M7Ozs7V0FJRztRQUNNLGNBQVMsR0FBMkIsS0FBSyxDQUFDO1FBRW5EOztXQUVHO1FBQ00sV0FBTSxHQUFHLEtBQUssQ0FBQztRQVl4Qjs7V0FFRztRQUNNLFNBQUksR0FBbUIsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1FBRXpEOztXQUVHO1FBQ2dCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztJQUVsQixDQUFDO0lBRS9DLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxJQUFhLFFBQVEsQ0FBQyxLQUE2QjtRQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBYSxPQUFPLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLE9BQU87UUFDTCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQWxGVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwwVENaaEMsNG1EQXdEQSwyQ0Q5Q1ksWUFBWSwrUkFBRSxZQUFZOzs0RkFFekIsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGFBQWEsaUJBRVIsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDOytFQU81QixPQUFPO3NCQUFmLEtBQUs7Z0JBS0csWUFBWTtzQkFBcEIsS0FBSztnQkFPRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLE1BQU07c0JBQWQsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS2EsV0FBVztzQkFBN0IsTUFBTTtnQkFtQk0sUUFBUTtzQkFBcEIsS0FBSztnQkFXTyxPQUFPO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHNmckhlYWRpbmdMZXZlbCwgRHNmckkxOG5QaXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IERzZnJOb3RpY2VUeXBlLCBEc2ZyTm90aWNlVHlwZUNvbnN0IH0gZnJvbSAnLi9ub3RpY2UubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkc2ZyLW5vdGljZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpY2UuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEc2ZySTE4blBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBEc2ZyTm90aWNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIExlIG1lc3NhZ2UgcXVpIHNlcmEgYWZmaWNow6kgZGFucyBsZSBiYW5kZWF1LlxuICAgKiBSZW5zZWlnbmVyIGxlIHRpdHJlIHZpYSBsJ2lucHV0IGVzdCBwcmlvcml0YWlyZSBzdXIgbGUgc2xvdC5cbiAgICovXG4gIEBJbnB1dCgpIGhlYWRpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogTGUgbml2ZWF1IGR1IHRpdHJlLCBgPHNwYW4+YCBwYXIgZMOpZmF1dC5cbiAgICovXG4gIEBJbnB1dCgpIGhlYWRpbmdMZXZlbDogRHNmckhlYWRpbmdMZXZlbDtcblxuICAvKipcbiAgICogUGVybWV0IGQnYWZmaWNoZXIgbGUgYm91dG9uIHNlcnZhbnQgw6AgZmVybWVyIGxlIGJhbmRlYXUgZCdpbmZvcm1hdGlvbi48YnI+XG4gICAqIExhIHZhbGV1ciAnY29udHJvbGxlZCcgcGVybWV0IGQnYWZmaWNoZXIgbGUgYm91dG9uIGRlIGZlcm1ldHVyZSwgbWFpcyBjJ2VzdCB2b3VzIHF1aSBkZXZleiBjb250csO0bGVyIGwnYWN0aW9uIGRlXG4gICAqIGZlcm1ldHVyZSBkdSBiYW5kZWF1LlxuICAgKi9cbiAgQElucHV0KCkgY2xvc2VhYmxlOiBib29sZWFuIHwgJ2NvbnRyb2xsZWQnID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBzaW5jZSAxLjEyIFBlcm1ldCBkJ2VubGV2ZXIgbCdpY8O0bmUgZHUgYmFuZGVhdSBkJ2luZm9ybWF0aW9uXG4gICAqL1xuICBASW5wdXQoKSBub0ljb24gPSBmYWxzZTtcblxuICAvKipcbiAgICogQHNpbmNlIDEuMTIgUGVybWV0IGRlIHBlcnNvbm5hbGlzZXIgbCdpY8O0bmUgZHUgYmFuZGVhdS4gSHRtbCBwb3NzaWJsZS5cbiAgICovXG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcblxuICAvKipcbiAgICogQHNpbmNlIDEuMTIgVGV4dGUgY29tcGzDqW1lbnRhaXJlIGF1IHRpdHJlXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2luY2UgMS4xMiBTw6l2w6lyaXTDqSBkdSBtZXNzYWdlXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBEc2ZyTm90aWNlVHlwZSA9IERzZnJOb3RpY2VUeXBlQ29uc3QuSU5GTztcblxuICAvKipcbiAgICogU2lnbmFsZSBsYSBmZXJtZXR1cmUgbWFudWVsbGUgZHUgYmFuZGVhdSBkJ2luZm9ybWF0aW9uLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IG5vdGljZUNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxFbGVtZW50UmVmPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWYpIHt9XG5cbiAgZ2V0IGljb25DbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmljb24gPz8gJyc7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgc2luY2UgMS4xMiB1c2UgYGNsb3NlYWJsZWBpbnN0ZWFkLiAqL1xuICBnZXQgY2xvc2FibGUoKTogYm9vbGVhbiB8ICdjb250cm9sbGVkJyB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VhYmxlO1xuICB9XG5cbiAgLyoqIEBkZXByZWNhdGVkIHNpbmNlIDEuMTIgdXNlIGBoZWFkaW5nYCBpbnN0ZWFkLiAqL1xuICBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmhlYWRpbmc7XG4gIH1cblxuICAvKiogQGRlcHJlY2F0ZWQgc2luY2UgMS4xMiB1c2UgYGNsb3NlYWJsZWBpbnN0ZWFkLiAqL1xuICBASW5wdXQoKSBzZXQgY2xvc2FibGUodmFsdWU6IGJvb2xlYW4gfCAnY29udHJvbGxlZCcpIHtcbiAgICB0aGlzLmNsb3NlYWJsZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIExlIG1lc3NhZ2UgcXVpIHNlcmEgYWZmaWNow6kgZGFucyBsZSBiYW5kZWF1LlxuICAgKlxuICAgKiBSZW5zZWlnbmVyIGxlIG1lc3NhZ2UgdmlhIGwnaW5wdXQgZXN0IHByaW9yaXRhaXJlIHN1ciBsZSBzbG90LlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBzaW5jZSAxLjEyIHVzZSBgaGVhZGluZ2AgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpIHNldCBtZXNzYWdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmhlYWRpbmcgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb25DbG9zZSgpIHtcbiAgICBpZiAodGhpcy5jbG9zZWFibGUgJiYgdGhpcy5jbG9zZWFibGUgIT09ICdjb250cm9sbGVkJykge1xuICAgICAgdGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU/LnJlbW92ZUNoaWxkKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMubm90aWNlQ2xvc2UuZW1pdCh0aGlzLmhvc3RFbGVtZW50KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImZyLW5vdGljZVwiXG4gIFtjbGFzc109XCInZnItbm90aWNlLS0nICsgdHlwZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnZnItbm90aWNlLS1uby1pY29uJzogbm9JY29uID09PSB0cnVlXG4gIH1cIj5cbiAgPGRpdiBjbGFzcz1cImZyLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmci1ub3RpY2VfX2JvZHlcIj5cbiAgICAgIDxwPlxuICAgICAgICBAaWYgKGhlYWRpbmcpIHtcbiAgICAgICAgICA8IS0tIFRpdHJlIG9ibGlnYXRvaXJlIC0tPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnItbm90aWNlX190aXRsZVwiIFtuZ0NsYXNzXT1cImljb25DbGFzc1wiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L3NwYW4+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmci1ub3RpY2VfX2Rlc2NcIiBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uXCI+PC9zcGFuPlxuICAgICAgICB9XG5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2xpbmtdXCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9wPlxuXG4gICAgICBAaWYgKGNsb3NhYmxlKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZnItYnRuLS1jbG9zZSBmci1idG5cIiB0aXRsZT1cInt7ICdub3RpY2UuY2xvc2UnIHwgZHNmckkxOG4gfX1cIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgICAge3sgJ25vdGljZS5jbG9zZScgfCBkc2ZySTE4biB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBUZW1wbGF0ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XG5cbjxuZy10ZW1wbGF0ZSAjaGVhZGluZ1RlbXBsYXRlPlxuICBAc3dpdGNoIChoZWFkaW5nTGV2ZWwpIHtcbiAgICBAY2FzZSAoJ0gyJykge1xuICAgICAgPGgyIGNsYXNzPVwiZnItbm90aWNlX190aXRsZVwiPnt7IGhlYWRpbmcgfX08L2gyPlxuICAgIH1cbiAgICBAY2FzZSAoJ0gzJykge1xuICAgICAgPGgzIGNsYXNzPVwiZnItbm90aWNlX190aXRsZVwiPnt7IGhlYWRpbmcgfX08L2gzPlxuICAgIH1cbiAgICBAY2FzZSAoJ0g0Jykge1xuICAgICAgPGg0IGNsYXNzPVwiZnItbm90aWNlX190aXRsZVwiPnt7IGhlYWRpbmcgfX08L2g0PlxuICAgIH1cbiAgICBAY2FzZSAoJ0g1Jykge1xuICAgICAgPGg1IGNsYXNzPVwiZnItbm90aWNlX190aXRsZVwiPnt7IGhlYWRpbmcgfX08L2g1PlxuICAgIH1cbiAgICBAY2FzZSAoJ0g2Jykge1xuICAgICAgPGg2IGNsYXNzPVwiZnItbm90aWNlX190aXRsZVwiPnt7IGhlYWRpbmcgfX08L2g2PlxuICAgIH1cbiAgICBAZGVmYXVsdCB7XG4gICAgICA8c3BhbiBjbGFzcz1cImZyLW5vdGljZV9fdGl0bGVcIj57eyBoZWFkaW5nIH19PC9zcGFuPlxuICAgIH1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==