@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).
71 lines • 25 kB
JavaScript
import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
import { DsfrFormEmailComponent } from '../../forms';
import { DsfrHeadingLevelConst } from '../../shared';
import { DsfrFollowTypeConst } from './follow.model';
import * as i0 from "@angular/core";
import * as i1 from "../../shared";
import * as i2 from "@angular/common";
import * as i3 from "../../forms/form-email/form-email.component";
export class DsfrFollowComponent {
/** @internal */
constructor(i18n) {
this.i18n = i18n;
/**
* Niveau du titre, h2 par défaut
*/
this.headingLevel = DsfrHeadingLevelConst.H2;
/** Description (pour certains types seulement) optionnelle. */
this.description = '';
/** Email par défaut. */
this.email = '';
/** Message d'erreur concernant l'email. */
this.emailError = '';
/** Indique que l'inscription a bien été prise en compte. */
this.registered = false;
/** Type du composant, réseaux sociaux seuls par défaut */
this.type = DsfrFollowTypeConst.NETWORKS;
/** Abonnement si l'adresse est valide. */
this.subscribe = new EventEmitter();
/* Tous les types possibles du composant. */
/** @internal */ this.followType = DsfrFollowTypeConst;
/* Les entêtes. */
/** @internal */ this.headingNetworks = this.i18n.t('follow.networks.heading');
/** @internal */ this.headingNewsletter = this.i18n.t('follow.newsletter.heading');
/* Les données du champ email. */
/** @internal*/ this.inputPlaceholder = this.i18n.t('follow.newsletter.input.placeholder');
/** @internal*/ this.inputHint = this.i18n.t('follow.newsletter.input.hint');
/** @internal */ this.buttonLabel = this.i18n.t('follow.newsletter.button.label');
/** @internal */ this.buttonTitle = this.i18n.t('follow.newsletter.button.title');
this.type = DsfrFollowTypeConst.NETWORKS;
}
/** @internal */
onSubscribe(email) {
if (this.emailComponent?.isValid()) {
this.subscribe.emit(email);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DsfrFollowComponent, deps: [{ token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DsfrFollowComponent, selector: "dsfr-follow", inputs: { headingLevel: "headingLevel", description: "description", email: "email", emailError: "emailError", registered: "registered", type: "type" }, outputs: { subscribe: "subscribe" }, viewQueries: [{ propertyName: "emailComponent", first: true, predicate: DsfrFormEmailComponent, descendants: true }], ngImport: i0, template: "<div class=\"fr-follow\">\n <div class=\"fr-container\">\n <div class=\"fr-grid-row\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"followType.NETWORKS\" class=\"fr-col-12\">\n <ng-container [ngTemplateOutlet]=\"networksTemplate\"></ng-container>\n </div>\n <div *ngSwitchCase=\"followType.NEWSLETTER\" class=\"fr-col-12\">\n <ng-container [ngTemplateOutlet]=\"newsletterTemplate\"></ng-container>\n </div>\n <div *ngSwitchCase=\"followType.NEWSLETTER_MAIL\" class=\"fr-col-12\">\n <ng-container [ngTemplateOutlet]=\"newsletterWithMailTemplate\"></ng-container>\n </div>\n <ng-container\n *ngSwitchCase=\"followType.NEWSLETTER_NETWORKS\"\n [ngTemplateOutlet]=\"newsletterAndNetworksTemplate\"></ng-container>\n <ng-container\n *ngSwitchCase=\"followType.NEWSLETTER_NETWORKS_MAIL\"\n [ngTemplateOutlet]=\"networksAndNewsletterWithMailTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n\n<!-- R\u00E9seaux sociaux seuls -->\n<ng-template #networksTemplate>\n <div class=\"fr-follow__social\">\n <ng-container [ngTemplateOutlet]=\"heading\" [ngTemplateOutletContext]=\"{ heading: headingNetworks }\"></ng-container>\n <ul class=\"fr-btns-group\">\n <ng-content></ng-content>\n </ul>\n </div>\n</ng-template>\n\n<!-- Lettre d'info seule -->\n<ng-template #newsletterTemplate>\n <div class=\"fr-follow__newsletter\">\n <div>\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ heading: headingNewsletter }\"></ng-container>\n <p *ngIf=\"description\" class=\"fr-text--sm\" [innerHTML]=\"description\"></p>\n </div>\n <div>\n <ul class=\"fr-btns-group fr-btns-group--inline-md\">\n <li>\n <button type=\"button\" class=\"fr-btn\" [title]=\"buttonTitle\">{{ buttonLabel }}</button>\n </li>\n </ul>\n </div>\n </div>\n</ng-template>\n\n<!-- Lettre d'info seule avec formulaire -->\n<ng-template #newsletterWithMailTemplate>\n <div class=\"fr-follow__newsletter\">\n <div>\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ heading: headingNewsletter }\"></ng-container>\n <p *ngIf=\"description\" class=\"fr-text--sm\" [innerHTML]=\"description\"></p>\n </div>\n <div>\n <ng-container *ngIf=\"registered\">\n <div class=\"fr-alert fr-alert--success\">\n <p>{{ i18n.t('follow.newsletter.registration.success') }}</p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!registered\">\n <dsfr-form-email\n [value]=\"email\"\n [buttonLabel]=\"buttonLabel\"\n [buttonTooltipMessage]=\"buttonTitle\"\n buttonType=\"button\"\n [placeholder]=\"inputPlaceholder\"\n [title]=\"inputPlaceholder\"\n [error]=\"emailError\"\n (buttonSelect)=\"onSubscribe(email)\"></dsfr-form-email>\n <p class=\"fr-hint-text\" [innerHTML]=\"inputHint\"></p>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<!-- R\u00E9seaux sociaux et Lettre d'info mise en avant -->\n<ng-template #newsletterAndNetworksTemplate>\n <div class=\"fr-col-12 fr-col-md-8\">\n <ng-container *ngTemplateOutlet=\"newsletterTemplate\"></ng-container>\n </div>\n <div class=\"fr-col-12 fr-col-md-4\">\n <ng-container *ngTemplateOutlet=\"networksTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<!-- R\u00E9seaux sociaux et Lettre d'info avec formulaire -->\n<ng-template #networksAndNewsletterWithMailTemplate>\n <div class=\"fr-col-12 fr-col-md-8\">\n <ng-container *ngTemplateOutlet=\"newsletterWithMailTemplate\"></ng-container>\n </div>\n <div class=\"fr-col-12 fr-col-md-4\">\n <ng-container *ngTemplateOutlet=\"networksTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Heading -->\n<ng-template #heading let-heading=\"heading\">\n <ng-container [ngSwitch]=\"headingLevel\">\n <h3 *ngSwitchCase=\"'H3'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h3>\n <h4 *ngSwitchCase=\"'H4'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h4>\n <h5 *ngSwitchCase=\"'H5'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h5>\n <h6 *ngSwitchCase=\"'H6'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h6>\n <h2 *ngSwitchDefault class=\"fr-h5\" [innerHtml]=\"heading\"></h2>\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3.DsfrFormEmailComponent, selector: "dsfr-form-email" }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DsfrFollowComponent, decorators: [{
type: Component,
args: [{ selector: 'dsfr-follow', encapsulation: ViewEncapsulation.None, template: "<div class=\"fr-follow\">\n <div class=\"fr-container\">\n <div class=\"fr-grid-row\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"followType.NETWORKS\" class=\"fr-col-12\">\n <ng-container [ngTemplateOutlet]=\"networksTemplate\"></ng-container>\n </div>\n <div *ngSwitchCase=\"followType.NEWSLETTER\" class=\"fr-col-12\">\n <ng-container [ngTemplateOutlet]=\"newsletterTemplate\"></ng-container>\n </div>\n <div *ngSwitchCase=\"followType.NEWSLETTER_MAIL\" class=\"fr-col-12\">\n <ng-container [ngTemplateOutlet]=\"newsletterWithMailTemplate\"></ng-container>\n </div>\n <ng-container\n *ngSwitchCase=\"followType.NEWSLETTER_NETWORKS\"\n [ngTemplateOutlet]=\"newsletterAndNetworksTemplate\"></ng-container>\n <ng-container\n *ngSwitchCase=\"followType.NEWSLETTER_NETWORKS_MAIL\"\n [ngTemplateOutlet]=\"networksAndNewsletterWithMailTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n\n<!-- R\u00E9seaux sociaux seuls -->\n<ng-template #networksTemplate>\n <div class=\"fr-follow__social\">\n <ng-container [ngTemplateOutlet]=\"heading\" [ngTemplateOutletContext]=\"{ heading: headingNetworks }\"></ng-container>\n <ul class=\"fr-btns-group\">\n <ng-content></ng-content>\n </ul>\n </div>\n</ng-template>\n\n<!-- Lettre d'info seule -->\n<ng-template #newsletterTemplate>\n <div class=\"fr-follow__newsletter\">\n <div>\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ heading: headingNewsletter }\"></ng-container>\n <p *ngIf=\"description\" class=\"fr-text--sm\" [innerHTML]=\"description\"></p>\n </div>\n <div>\n <ul class=\"fr-btns-group fr-btns-group--inline-md\">\n <li>\n <button type=\"button\" class=\"fr-btn\" [title]=\"buttonTitle\">{{ buttonLabel }}</button>\n </li>\n </ul>\n </div>\n </div>\n</ng-template>\n\n<!-- Lettre d'info seule avec formulaire -->\n<ng-template #newsletterWithMailTemplate>\n <div class=\"fr-follow__newsletter\">\n <div>\n <ng-container\n [ngTemplateOutlet]=\"heading\"\n [ngTemplateOutletContext]=\"{ heading: headingNewsletter }\"></ng-container>\n <p *ngIf=\"description\" class=\"fr-text--sm\" [innerHTML]=\"description\"></p>\n </div>\n <div>\n <ng-container *ngIf=\"registered\">\n <div class=\"fr-alert fr-alert--success\">\n <p>{{ i18n.t('follow.newsletter.registration.success') }}</p>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!registered\">\n <dsfr-form-email\n [value]=\"email\"\n [buttonLabel]=\"buttonLabel\"\n [buttonTooltipMessage]=\"buttonTitle\"\n buttonType=\"button\"\n [placeholder]=\"inputPlaceholder\"\n [title]=\"inputPlaceholder\"\n [error]=\"emailError\"\n (buttonSelect)=\"onSubscribe(email)\"></dsfr-form-email>\n <p class=\"fr-hint-text\" [innerHTML]=\"inputHint\"></p>\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<!-- R\u00E9seaux sociaux et Lettre d'info mise en avant -->\n<ng-template #newsletterAndNetworksTemplate>\n <div class=\"fr-col-12 fr-col-md-8\">\n <ng-container *ngTemplateOutlet=\"newsletterTemplate\"></ng-container>\n </div>\n <div class=\"fr-col-12 fr-col-md-4\">\n <ng-container *ngTemplateOutlet=\"networksTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<!-- R\u00E9seaux sociaux et Lettre d'info avec formulaire -->\n<ng-template #networksAndNewsletterWithMailTemplate>\n <div class=\"fr-col-12 fr-col-md-8\">\n <ng-container *ngTemplateOutlet=\"newsletterWithMailTemplate\"></ng-container>\n </div>\n <div class=\"fr-col-12 fr-col-md-4\">\n <ng-container *ngTemplateOutlet=\"networksTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<!-- Heading -->\n<ng-template #heading let-heading=\"heading\">\n <ng-container [ngSwitch]=\"headingLevel\">\n <h3 *ngSwitchCase=\"'H3'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h3>\n <h4 *ngSwitchCase=\"'H4'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h4>\n <h5 *ngSwitchCase=\"'H5'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h5>\n <h6 *ngSwitchCase=\"'H6'\" class=\"fr-h5\" [innerHtml]=\"heading\"></h6>\n <h2 *ngSwitchDefault class=\"fr-h5\" [innerHtml]=\"heading\"></h2>\n </ng-container>\n</ng-template>\n" }]
}], ctorParameters: function () { return [{ type: i1.I18nService }]; }, propDecorators: { emailComponent: [{
type: ViewChild,
args: [DsfrFormEmailComponent]
}], headingLevel: [{
type: Input
}], description: [{
type: Input
}], email: [{
type: Input
}], emailError: [{
type: Input
}], registered: [{
type: Input
}], type: [{
type: Input
}], subscribe: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1kc2ZyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZvbGxvdy9mb2xsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZm9sbG93L2ZvbGxvdy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFvQixxQkFBcUIsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNwRixPQUFPLEVBQWtCLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBT3JFLE1BQU0sT0FBTyxtQkFBbUI7SUF3QzlCLGdCQUFnQjtJQUNoQixZQUFtQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBckNwQzs7V0FFRztRQUNNLGlCQUFZLEdBQXFCLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztRQUVuRSwrREFBK0Q7UUFDdEQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUIsd0JBQXdCO1FBQ2YsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVwQiwyQ0FBMkM7UUFDbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUV6Qiw0REFBNEQ7UUFDbkQsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUU1QiwyREFBMkQ7UUFDbEQsU0FBSSxHQUFtQixtQkFBbUIsQ0FBQyxRQUFRLENBQUM7UUFFN0QsMENBQTBDO1FBQ2hDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRWpELDRDQUE0QztRQUM1QyxnQkFBZ0IsQ0FBQyxlQUFVLEdBQUcsbUJBQW1CLENBQUM7UUFFbEQsa0JBQWtCO1FBQ2xCLGdCQUFnQixDQUFVLG9CQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNuRixnQkFBZ0IsQ0FBVSxzQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXZGLGlDQUFpQztRQUNqQyxlQUFlLENBQVUscUJBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUMvRixlQUFlLENBQVUsY0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDakYsZ0JBQWdCLENBQVUsZ0JBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3RGLGdCQUFnQixDQUFVLGdCQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUlwRixJQUFJLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZ0JBQWdCO0lBQ2hCLFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7K0dBbERVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGdTQUVuQixzQkFBc0IsZ0RDWm5DLHEzSUFrSEE7OzRGRHhHYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYSxpQkFFUixpQkFBaUIsQ0FBQyxJQUFJO2tHQUlGLGNBQWM7c0JBQWhELFNBQVM7dUJBQUMsc0JBQXNCO2dCQUt4QixZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxJQUFJO3NCQUFaLEtBQUs7Z0JBR0ksU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEc2ZyRm9ybUVtYWlsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZm9ybXMnO1xuaW1wb3J0IHsgRHNmckhlYWRpbmdMZXZlbCwgRHNmckhlYWRpbmdMZXZlbENvbnN0LCBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBEc2ZyRm9sbG93VHlwZSwgRHNmckZvbGxvd1R5cGVDb25zdCB9IGZyb20gJy4vZm9sbG93Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHNmci1mb2xsb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9sbG93LmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRHNmckZvbGxvd0NvbXBvbmVudCB7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZChEc2ZyRm9ybUVtYWlsQ29tcG9uZW50KSBlbWFpbENvbXBvbmVudDogRHNmckZvcm1FbWFpbENvbXBvbmVudDtcblxuICAvKipcbiAgICogTml2ZWF1IGR1IHRpdHJlLCBoMiBwYXIgZMOpZmF1dFxuICAgKi9cbiAgQElucHV0KCkgaGVhZGluZ0xldmVsOiBEc2ZySGVhZGluZ0xldmVsID0gRHNmckhlYWRpbmdMZXZlbENvbnN0LkgyO1xuXG4gIC8qKiBEZXNjcmlwdGlvbiAocG91ciBjZXJ0YWlucyB0eXBlcyBzZXVsZW1lbnQpIG9wdGlvbm5lbGxlLiAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbiA9ICcnO1xuXG4gIC8qKiBFbWFpbCBwYXIgZMOpZmF1dC4gKi9cbiAgQElucHV0KCkgZW1haWwgPSAnJztcblxuICAvKiogTWVzc2FnZSBkJ2VycmV1ciBjb25jZXJuYW50IGwnZW1haWwuICovXG4gIEBJbnB1dCgpIGVtYWlsRXJyb3IgPSAnJztcblxuICAvKiogSW5kaXF1ZSBxdWUgbCdpbnNjcmlwdGlvbiBhIGJpZW4gw6l0w6kgcHJpc2UgZW4gY29tcHRlLiAqL1xuICBASW5wdXQoKSByZWdpc3RlcmVkID0gZmFsc2U7XG5cbiAgLyoqIFR5cGUgZHUgY29tcG9zYW50LCByw6lzZWF1eCBzb2NpYXV4IHNldWxzIHBhciBkw6lmYXV0ICAqL1xuICBASW5wdXQoKSB0eXBlOiBEc2ZyRm9sbG93VHlwZSA9IERzZnJGb2xsb3dUeXBlQ29uc3QuTkVUV09SS1M7XG5cbiAgLyoqIEFib25uZW1lbnQgc2kgbCdhZHJlc3NlIGVzdCB2YWxpZGUuICovXG4gIEBPdXRwdXQoKSBzdWJzY3JpYmUgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiBUb3VzIGxlcyB0eXBlcyBwb3NzaWJsZXMgZHUgY29tcG9zYW50LiAqL1xuICAvKiogQGludGVybmFsICovIGZvbGxvd1R5cGUgPSBEc2ZyRm9sbG93VHlwZUNvbnN0O1xuXG4gIC8qIExlcyBlbnTDqnRlcy4gKi9cbiAgLyoqIEBpbnRlcm5hbCAqLyByZWFkb25seSBoZWFkaW5nTmV0d29ya3MgPSB0aGlzLmkxOG4udCgnZm9sbG93Lm5ldHdvcmtzLmhlYWRpbmcnKTtcbiAgLyoqIEBpbnRlcm5hbCAqLyByZWFkb25seSBoZWFkaW5nTmV3c2xldHRlciA9IHRoaXMuaTE4bi50KCdmb2xsb3cubmV3c2xldHRlci5oZWFkaW5nJyk7XG5cbiAgLyogTGVzIGRvbm7DqWVzIGR1IGNoYW1wIGVtYWlsLiAqL1xuICAvKiogQGludGVybmFsKi8gcmVhZG9ubHkgaW5wdXRQbGFjZWhvbGRlciA9IHRoaXMuaTE4bi50KCdmb2xsb3cubmV3c2xldHRlci5pbnB1dC5wbGFjZWhvbGRlcicpO1xuICAvKiogQGludGVybmFsKi8gcmVhZG9ubHkgaW5wdXRIaW50ID0gdGhpcy5pMThuLnQoJ2ZvbGxvdy5uZXdzbGV0dGVyLmlucHV0LmhpbnQnKTtcbiAgLyoqIEBpbnRlcm5hbCAqLyByZWFkb25seSBidXR0b25MYWJlbCA9IHRoaXMuaTE4bi50KCdmb2xsb3cubmV3c2xldHRlci5idXR0b24ubGFiZWwnKTtcbiAgLyoqIEBpbnRlcm5hbCAqLyByZWFkb25seSBidXR0b25UaXRsZSA9IHRoaXMuaTE4bi50KCdmb2xsb3cubmV3c2xldHRlci5idXR0b24udGl0bGUnKTtcblxuICAvKiogQGludGVybmFsICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBJMThuU2VydmljZSkge1xuICAgIHRoaXMudHlwZSA9IERzZnJGb2xsb3dUeXBlQ29uc3QuTkVUV09SS1M7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uU3Vic2NyaWJlKGVtYWlsOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5lbWFpbENvbXBvbmVudD8uaXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLnN1YnNjcmliZS5lbWl0KGVtYWlsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmci1mb2xsb3dcIj5cbiAgPGRpdiBjbGFzcz1cImZyLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmci1ncmlkLXJvd1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJmb2xsb3dUeXBlLk5FVFdPUktTXCIgY2xhc3M9XCJmci1jb2wtMTJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5ldHdvcmtzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cImZvbGxvd1R5cGUuTkVXU0xFVFRFUlwiIGNsYXNzPVwiZnItY29sLTEyXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJuZXdzbGV0dGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cImZvbGxvd1R5cGUuTkVXU0xFVFRFUl9NQUlMXCIgY2xhc3M9XCJmci1jb2wtMTJcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm5ld3NsZXR0ZXJXaXRoTWFpbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImZvbGxvd1R5cGUuTkVXU0xFVFRFUl9ORVRXT1JLU1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibmV3c2xldHRlckFuZE5ldHdvcmtzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJmb2xsb3dUeXBlLk5FV1NMRVRURVJfTkVUV09SS1NfTUFJTFwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibmV0d29ya3NBbmROZXdzbGV0dGVyV2l0aE1haWxUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gUsOpc2VhdXggc29jaWF1eCBzZXVscyAtLT5cbjxuZy10ZW1wbGF0ZSAjbmV0d29ya3NUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZyLWZvbGxvd19fc29jaWFsXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkaW5nXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgaGVhZGluZzogaGVhZGluZ05ldHdvcmtzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8dWwgY2xhc3M9XCJmci1idG5zLWdyb3VwXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIExldHRyZSBkJ2luZm8gc2V1bGUgLS0+XG48bmctdGVtcGxhdGUgI25ld3NsZXR0ZXJUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZyLWZvbGxvd19fbmV3c2xldHRlclwiPlxuICAgIDxkaXY+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRpbmdcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBoZWFkaW5nOiBoZWFkaW5nTmV3c2xldHRlciB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8cCAqbmdJZj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJmci10ZXh0LS1zbVwiIFtpbm5lckhUTUxdPVwiZGVzY3JpcHRpb25cIj48L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDx1bCBjbGFzcz1cImZyLWJ0bnMtZ3JvdXAgZnItYnRucy1ncm91cC0taW5saW5lLW1kXCI+XG4gICAgICAgIDxsaT5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImZyLWJ0blwiIFt0aXRsZV09XCJidXR0b25UaXRsZVwiPnt7IGJ1dHRvbkxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gTGV0dHJlIGQnaW5mbyBzZXVsZSBhdmVjIGZvcm11bGFpcmUgLS0+XG48bmctdGVtcGxhdGUgI25ld3NsZXR0ZXJXaXRoTWFpbFRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnItZm9sbG93X19uZXdzbGV0dGVyXCI+XG4gICAgPGRpdj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGluZ1wiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGhlYWRpbmc6IGhlYWRpbmdOZXdzbGV0dGVyIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxwICpuZ0lmPVwiZGVzY3JpcHRpb25cIiBjbGFzcz1cImZyLXRleHQtLXNtXCIgW2lubmVySFRNTF09XCJkZXNjcmlwdGlvblwiPjwvcD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJlZ2lzdGVyZWRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZyLWFsZXJ0IGZyLWFsZXJ0LS1zdWNjZXNzXCI+XG4gICAgICAgICAgPHA+e3sgaTE4bi50KCdmb2xsb3cubmV3c2xldHRlci5yZWdpc3RyYXRpb24uc3VjY2VzcycpIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFyZWdpc3RlcmVkXCI+XG4gICAgICAgIDxkc2ZyLWZvcm0tZW1haWxcbiAgICAgICAgICBbdmFsdWVdPVwiZW1haWxcIlxuICAgICAgICAgIFtidXR0b25MYWJlbF09XCJidXR0b25MYWJlbFwiXG4gICAgICAgICAgW2J1dHRvblRvb2x0aXBNZXNzYWdlXT1cImJ1dHRvblRpdGxlXCJcbiAgICAgICAgICBidXR0b25UeXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiaW5wdXRQbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3RpdGxlXT1cImlucHV0UGxhY2Vob2xkZXJcIlxuICAgICAgICAgIFtlcnJvcl09XCJlbWFpbEVycm9yXCJcbiAgICAgICAgICAoYnV0dG9uU2VsZWN0KT1cIm9uU3Vic2NyaWJlKGVtYWlsKVwiPjwvZHNmci1mb3JtLWVtYWlsPlxuICAgICAgICA8cCBjbGFzcz1cImZyLWhpbnQtdGV4dFwiIFtpbm5lckhUTUxdPVwiaW5wdXRIaW50XCI+PC9wPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBSw6lzZWF1eCBzb2NpYXV4IGV0IExldHRyZSBkJ2luZm8gbWlzZSBlbiBhdmFudCAtLT5cbjxuZy10ZW1wbGF0ZSAjbmV3c2xldHRlckFuZE5ldHdvcmtzVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmci1jb2wtMTIgZnItY29sLW1kLThcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmV3c2xldHRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZnItY29sLTEyIGZyLWNvbC1tZC00XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5ldHdvcmtzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFLDqXNlYXV4IHNvY2lhdXggZXQgTGV0dHJlIGQnaW5mbyBhdmVjIGZvcm11bGFpcmUgLS0+XG48bmctdGVtcGxhdGUgI25ldHdvcmtzQW5kTmV3c2xldHRlcldpdGhNYWlsVGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmci1jb2wtMTIgZnItY29sLW1kLThcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmV3c2xldHRlcldpdGhNYWlsVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmci1jb2wtMTIgZnItY29sLW1kLTRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibmV0d29ya3NUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gSGVhZGluZyAtLT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGluZyBsZXQtaGVhZGluZz1cImhlYWRpbmdcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiaGVhZGluZ0xldmVsXCI+XG4gICAgPGgzICpuZ1N3aXRjaENhc2U9XCInSDMnXCIgY2xhc3M9XCJmci1oNVwiIFtpbm5lckh0bWxdPVwiaGVhZGluZ1wiPjwvaDM+XG4gICAgPGg0ICpuZ1N3aXRjaENhc2U9XCInSDQnXCIgY2xhc3M9XCJmci1oNVwiIFtpbm5lckh0bWxdPVwiaGVhZGluZ1wiPjwvaDQ+XG4gICAgPGg1ICpuZ1N3aXRjaENhc2U9XCInSDUnXCIgY2xhc3M9XCJmci1oNVwiIFtpbm5lckh0bWxdPVwiaGVhZGluZ1wiPjwvaDU+XG4gICAgPGg2ICpuZ1N3aXRjaENhc2U9XCInSDYnXCIgY2xhc3M9XCJmci1oNVwiIFtpbm5lckh0bWxdPVwiaGVhZGluZ1wiPjwvaDY+XG4gICAgPGgyICpuZ1N3aXRjaERlZmF1bHQgY2xhc3M9XCJmci1oNVwiIFtpbm5lckh0bWxdPVwiaGVhZGluZ1wiPjwvaDI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==