@schoolbelle/common
Version:
Demo library to showcase Angular packaging format
235 lines (225 loc) • 19.3 kB
JavaScript
import { Component, Input, EventEmitter, Injectable, NgModule } from '@angular/core';
import { BsModalRef } from 'ngx-bootstrap/modal/bs-modal-ref.service';
import { BsModalService, ModalModule } from 'ngx-bootstrap/modal';
import 'rxjs/add/operator/take';
import { CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class DialogAbstractComponent {
/**
* @param {?} modalRef
*/
constructor(modalRef) {
this.modalRef = modalRef;
this.action = new EventEmitter();
}
/**
* @param {?=} result
* @return {?}
*/
ok(result = true) {
this.modalRef.hide();
this.action.emit(result);
}
/**
* @return {?}
*/
cancel() {
this.modalRef.hide();
this.action.emit(false);
}
}
DialogAbstractComponent.decorators = [
{ type: Component, args: [{
template: ''
},] },
];
/** @nocollapse */
DialogAbstractComponent.ctorParameters = () => [
{ type: BsModalRef, },
];
DialogAbstractComponent.propDecorators = {
"title": [{ type: Input },],
"message": [{ type: Input },],
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class DialogConfirmComponent extends DialogAbstractComponent {
}
DialogConfirmComponent.decorators = [
{ type: Component, args: [{
selector: 'dialog-confirm',
template: `<div *ngIf="title" class="card-header" [innerHTML]="title"></div>
<div *ngIf="message" class="card-body" [innerHTML]="message"></div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-danger" (click)="modalRef.hide(); action.emit(false)" i18n>Cancel</button>
<button type="button" class="btn btn-outline-primary" (click)="modalRef.hide(); action.emit(true)" i18n>Confirm</button>
</div>
`
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class DialogAlertComponent extends DialogAbstractComponent {
}
DialogAlertComponent.decorators = [
{ type: Component, args: [{
selector: 'dialog-alert',
template: `<div class="card">
<div *ngIf="title" class="card-header" [innerHTML]="title"></div>
<div *ngIf="message" class="card-body" [innerHTML]="message"></div>
<div class="card-footer text-right">
<button type="button" class="btn btn-outline-danger" (click)="modalRef.hide(); action.emit(true)" i18n>Close</button>
</div>
</div>
`
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class DialogSelectComponent extends DialogAbstractComponent {
constructor() {
super(...arguments);
this.selections = [];
}
/**
* @param {?} i
* @return {?}
*/
select(i) {
this.modalRef.hide();
this.action.emit(i);
}
}
DialogSelectComponent.decorators = [
{ type: Component, args: [{
selector: 'dialog-select',
template: `<div *ngIf="title" class="card-header" [innerHTML]="title"></div>
<div class="card-body">
<button class="btn btn-block btn-outline-dark" *ngFor="let selection of selections; index as i" (click)="select(i)" [innerHTML]="selection.html" [ngClass]="selection.class"></button>
<button type="button" class="btn btn-block btn-outline-danger" (click)="cancel()" i18n>Cancel</button>
</div>
`
},] },
];
/** @nocollapse */
DialogSelectComponent.propDecorators = {
"selections": [{ type: Input },],
};
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class DialogService {
/**
* @param {?} modalService
*/
constructor(modalService) {
this.modalService = modalService;
}
/**
* @param {?=} title
* @param {?=} message
* @param {?=} options
* @return {?}
*/
confirm(title = '', message = '', options = {}) {
return new Promise((resolve, reject) => {
const /** @type {?} */ modalRef = this.modalService.show(DialogConfirmComponent, Object.assign({}, options, { backdrop: 'static' }));
modalRef.content.title = title;
modalRef.content.message = message;
modalRef.content.action.take(1).subscribe(result => {
if (result !== false)
resolve(result);
else
reject(result);
});
});
}
/**
* @param {?=} title
* @param {?=} message
* @param {?=} options
* @return {?}
*/
alert(title = '', message = '', options = {}) {
return new Promise((resolve, reject) => {
const /** @type {?} */ modalRef = this.modalService.show(DialogAlertComponent, Object.assign({}, options, { backdrop: 'static' }));
modalRef.content.title = title;
modalRef.content.message = message;
modalRef.content.action.take(1).subscribe(result => {
if (result !== false)
resolve(result);
else
reject(result);
});
});
}
/**
* @param {?=} title
* @param {?=} selections
* @param {?=} options
* @return {?}
*/
select(title = '', selections, options = {}) {
return new Promise((resolve, reject) => {
const /** @type {?} */ modalRef = this.modalService.show(DialogSelectComponent, Object.assign({}, options, { backdrop: 'static' }));
modalRef.content.title = title;
modalRef.content.selections = selections;
modalRef.content.action.take(1).subscribe(result => {
if (result !== false)
resolve(result);
else
reject(result);
});
});
}
}
DialogService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
DialogService.ctorParameters = () => [
{ type: BsModalService, },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
class DialogModule {
}
DialogModule.decorators = [
{ type: NgModule, args: [{
imports: [CommonModule, ModalModule.forRoot()],
entryComponents: [
DialogConfirmComponent,
DialogAlertComponent,
DialogSelectComponent
],
declarations: [
DialogAbstractComponent,
DialogConfirmComponent,
DialogAlertComponent,
DialogSelectComponent
],
providers: [DialogService]
},] },
];
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
export { DialogModule, DialogService, DialogAbstractComponent as ɵb, DialogAlertComponent as ɵc, DialogConfirmComponent as ɵa, DialogSelectComponent as ɵd };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29sYmVsbGUtY29tbW9uLXNlcnZpY2VzLWRpYWxvZy5qcy5tYXAiLCJzb3VyY2VzIjpbIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9zZXJ2aWNlcy9kaWFsb2cvYWJzdHJhY3QvZGlhbG9nLmFic3RyYWN0LmNvbXBvbmVudC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9zZXJ2aWNlcy9kaWFsb2cvY29uZmlybS9kaWFsb2cuY29uZmlybS5jb21wb25lbnQudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vc2VydmljZXMvZGlhbG9nL2FsZXJ0L2RpYWxvZy5hbGVydC5jb21wb25lbnQudHMiLCJuZzovL0BzY2hvb2xiZWxsZS9jb21tb24vc2VydmljZXMvZGlhbG9nL3NlbGVjdC9kaWFsb2cuc2VsZWN0LmNvbXBvbmVudC50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9zZXJ2aWNlcy9kaWFsb2cvc2VydmljZS9kaWFsb2cuc2VydmljZS50cyIsIm5nOi8vQHNjaG9vbGJlbGxlL2NvbW1vbi9zZXJ2aWNlcy9kaWFsb2cvZGlhbG9nLm1vZHVsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsL2JzLW1vZGFsLXJlZi5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nQWJzdHJhY3RDb21wb25lbnQge1xuICBASW5wdXQoKSB0aXRsZTtcbiAgQElucHV0KCkgbWVzc2FnZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxSZWY6IEJzTW9kYWxSZWYpIHt9XG4gIGFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgb2socmVzdWx0OiBhbnkgPSB0cnVlKSB7XG4gICAgdGhpcy5tb2RhbFJlZi5oaWRlKCk7XG4gICAgdGhpcy5hY3Rpb24uZW1pdChyZXN1bHQpO1xuICB9XG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLm1vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmFjdGlvbi5lbWl0KGZhbHNlKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEaWFsb2dBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4uL2Fic3RyYWN0L2RpYWxvZy5hYnN0cmFjdC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkaWFsb2ctY29uZmlybScsXG4gIHRlbXBsYXRlOiBgPGRpdiAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJjYXJkLWhlYWRlclwiIFtpbm5lckhUTUxdPVwidGl0bGVcIj48L2Rpdj5cbjxkaXYgKm5nSWY9XCJtZXNzYWdlXCIgY2xhc3M9XCJjYXJkLWJvZHlcIiBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VcIj48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtZGFuZ2VyXCIgKGNsaWNrKT1cIm1vZGFsUmVmLmhpZGUoKTsgYWN0aW9uLmVtaXQoZmFsc2UpXCIgaTE4bj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbFJlZi5oaWRlKCk7IGFjdGlvbi5lbWl0KHRydWUpXCIgaTE4bj5Db25maXJtPC9idXR0b24+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nQ29uZmlybUNvbXBvbmVudCBleHRlbmRzIERpYWxvZ0Fic3RyYWN0Q29tcG9uZW50IHt9XG4iLCJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ0Fic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QvZGlhbG9nLmFic3RyYWN0LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RpYWxvZy1hbGVydCcsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgPGRpdiAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJjYXJkLWhlYWRlclwiIFtpbm5lckhUTUxdPVwidGl0bGVcIj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm1lc3NhZ2VcIiBjbGFzcz1cImNhcmQtYm9keVwiIFtpbm5lckhUTUxdPVwibWVzc2FnZVwiPjwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgdGV4dC1yaWdodFwiPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLWRhbmdlclwiIChjbGljayk9XCJtb2RhbFJlZi5oaWRlKCk7IGFjdGlvbi5lbWl0KHRydWUpXCIgaTE4bj5DbG9zZTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PiAgXG5gXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ0FsZXJ0Q29tcG9uZW50IGV4dGVuZHMgRGlhbG9nQWJzdHJhY3RDb21wb25lbnQge31cbiIsImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ0Fic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QvZGlhbG9nLmFic3RyYWN0LmNvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkaWFsb2ctc2VsZWN0JyxcbiAgdGVtcGxhdGU6IGA8ZGl2ICpuZ0lmPVwidGl0bGVcIiBjbGFzcz1cImNhcmQtaGVhZGVyXCIgW2lubmVySFRNTF09XCJ0aXRsZVwiPjwvZGl2PlxuPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1ibG9jayBidG4tb3V0bGluZS1kYXJrXCIgKm5nRm9yPVwibGV0IHNlbGVjdGlvbiBvZiBzZWxlY3Rpb25zOyBpbmRleCBhcyBpXCIgKGNsaWNrKT1cInNlbGVjdChpKVwiIFtpbm5lckhUTUxdPVwic2VsZWN0aW9uLmh0bWxcIiBbbmdDbGFzc109XCJzZWxlY3Rpb24uY2xhc3NcIj48L2J1dHRvbj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWJsb2NrIGJ0bi1vdXRsaW5lLWRhbmdlclwiIChjbGljayk9XCJjYW5jZWwoKVwiIGkxOG4+Q2FuY2VsPC9idXR0b24+XG48L2Rpdj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRGlhbG9nQWJzdHJhY3RDb21wb25lbnQge1xuICBASW5wdXQoKSBzZWxlY3Rpb25zOiBBcnJheTxhbnk+ID0gW107XG5cbiAgc2VsZWN0KGk6IG51bWJlcikge1xuICAgIHRoaXMubW9kYWxSZWYuaGlkZSgpO1xuICAgIHRoaXMuYWN0aW9uLmVtaXQoaSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxTZXJ2aWNlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBEaWFsb2dDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS9kaWFsb2cuY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlhbG9nQWxlcnRDb21wb25lbnQgfSBmcm9tICcuLi9hbGVydC9kaWFsb2cuYWxlcnQuY29tcG9uZW50JztcbmltcG9ydCB7IERpYWxvZ1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC9kaWFsb2cuc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgJ3J4anMvYWRkL29wZXJhdG9yL3Rha2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGlhbG9nU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IEJzTW9kYWxTZXJ2aWNlKSB7fVxuXG4gIGNvbmZpcm0oXG4gICAgdGl0bGU6IHN0cmluZyA9ICcnLFxuICAgIG1lc3NhZ2U6IHN0cmluZyA9ICcnLFxuICAgIG9wdGlvbnM6IGFueSA9IHt9XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhcbiAgICAgICAgRGlhbG9nQ29uZmlybUNvbXBvbmVudCxcbiAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywgeyBiYWNrZHJvcDogJ3N0YXRpYycgfSlcbiAgICAgICk7XG4gICAgICBtb2RhbFJlZi5jb250ZW50LnRpdGxlID0gdGl0bGU7XG4gICAgICBtb2RhbFJlZi5jb250ZW50Lm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgbW9kYWxSZWYuY29udGVudC5hY3Rpb24udGFrZSgxKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UpIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgZWxzZSByZWplY3QocmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIGFsZXJ0KFxuICAgIHRpdGxlOiBzdHJpbmcgPSAnJyxcbiAgICBtZXNzYWdlOiBzdHJpbmcgPSAnJyxcbiAgICBvcHRpb25zOiBhbnkgPSB7fVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBtb2RhbFJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLnNob3coXG4gICAgICAgIERpYWxvZ0FsZXJ0Q29tcG9uZW50LFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7IGJhY2tkcm9wOiAnc3RhdGljJyB9KVxuICAgICAgKTtcbiAgICAgIG1vZGFsUmVmLmNvbnRlbnQudGl0bGUgPSB0aXRsZTtcbiAgICAgIG1vZGFsUmVmLmNvbnRlbnQubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICBtb2RhbFJlZi5jb250ZW50LmFjdGlvbi50YWtlKDEpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSkgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICBlbHNlIHJlamVjdChyZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbiAgc2VsZWN0KFxuICAgIHRpdGxlOiBzdHJpbmcgPSAnJyxcbiAgICBzZWxlY3Rpb25zOiBBcnJheTxhbnk+LFxuICAgIG9wdGlvbnM6IGFueSA9IHt9XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uuc2hvdyhcbiAgICAgICAgRGlhbG9nU2VsZWN0Q29tcG9uZW50LFxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7IGJhY2tkcm9wOiAnc3RhdGljJyB9KVxuICAgICAgKTtcbiAgICAgIG1vZGFsUmVmLmNvbnRlbnQudGl0bGUgPSB0aXRsZTtcbiAgICAgIG1vZGFsUmVmLmNvbnRlbnQuc2VsZWN0aW9ucyA9IHNlbGVjdGlvbnM7XG4gICAgICBtb2RhbFJlZi5jb250ZW50LmFjdGlvbi50YWtlKDEpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSkgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICBlbHNlIHJlamVjdChyZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcblxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBEaWFsb2dBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJy4vYWJzdHJhY3QvZGlhbG9nLmFic3RyYWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi9jb25maXJtL2RpYWxvZy5jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dBbGVydENvbXBvbmVudCB9IGZyb20gJy4vYWxlcnQvZGlhbG9nLmFsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaWFsb2dTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC9kaWFsb2cuc2VsZWN0LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1vZGFsTW9kdWxlLmZvclJvb3QoKV0sXG4gIGVudHJ5Q29tcG9uZW50czogW1xuICAgIERpYWxvZ0NvbmZpcm1Db21wb25lbnQsXG4gICAgRGlhbG9nQWxlcnRDb21wb25lbnQsXG4gICAgRGlhbG9nU2VsZWN0Q29tcG9uZW50XG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIERpYWxvZ0Fic3RyYWN0Q29tcG9uZW50LFxuICAgIERpYWxvZ0NvbmZpcm1Db21wb25lbnQsXG4gICAgRGlhbG9nQWxlcnRDb21wb25lbnQsXG4gICAgRGlhbG9nU2VsZWN0Q29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ01vZHVsZSB7fVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7OztJQVNFLFlBQW1CLFFBQW9CO1FB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