@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
107 lines • 23.7 kB
JavaScript
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Input } from '@angular/core';
import { Component } from '@angular/core';
import { Subject } from 'rxjs';
import { tap } from 'rxjs/operators';
import { TranslatePipe } from '../../translate/translate.pipe';
import { TranslateService } from '../../translate/translate.service';
import { saveAs } from "file-saver";
import { ConfigurationService } from '../../configuration/configuration-service';
import { Output } from '@angular/core';
import { EventEmitter } from '@angular/core';
export class AllegatiComponent {
constructor(translateService, translatePipe, http, configurationService) {
this.translateService = translateService;
this.translatePipe = translatePipe;
this.http = http;
this.configurationService = configurationService;
this.documentoDownload$ = new Subject();
this.allegati = [];
this.colonne = [];
this.dettaglioDoc = new EventEmitter();
this.cl1 = false;
this.cl2 = false;
this.cl3 = false;
this.cl4 = false;
this.cl5 = false;
this.cl6 = false;
this.cl7 = false;
this.cl8 = false;
}
ngOnInit() {
this.documentaleServiceUrl = this.configurationService.servicePaths.get('DOCUMENTALE_MS_API_URL');
this.translatePipe.transform('');
this.translateService.traduzioniLib$
.pipe(tap(_ => _ ? this.loadingLinguage = true : null))
.subscribe();
// console.log('[colonne]', this.colonne);
this.cl1 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_1").visibile;
this.cl2 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_2").visibile;
this.cl3 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_3").visibile;
this.cl4 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_4").visibile;
this.cl5 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_5").visibile;
this.cl6 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_6").visibile;
this.cl7 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_7").visibile;
this.cl8 = this.colonne.find(tipoServizio => tipoServizio.chiave == "colonna_allegati_8").visibile;
// console.log('[colonne] - cl1', this.cl1);
// console.log('[colonne] - cl2', this.cl2);
// console.log('[colonne] - cl3', this.cl3);
// console.log('[colonne] - cl4', this.cl4);
// console.log('[colonne] - cl5', this.cl5);
// console.log('[colonne] - cl6', this.cl6);
// console.log('[colonne] - cl7', this.cl7);
// console.log('[colonne] - cl8', this.cl8);
}
downloadFile(documento) {
const url = this.documentaleServiceUrl + documento.url;
console.log('[url]', url);
const headers = new HttpHeaders();
headers.append('Accept', 'text/plain');
this.http.get(url, { headers: headers, responseType: 'blob' }).subscribe(response => this.saveFile(response, documento.nome));
}
saveFile(response, nomeFile) {
const blob = new Blob([response], { type: 'text/plain' });
saveAs(blob, nomeFile);
}
isValid(stato) {
if (stato.filter(s => s.lastState == true)) {
return true;
}
else {
return false;
}
}
visualizzaDettaglio(allegato) {
this.visualizzaDettagli = true;
try {
this.dataJson = JSON.parse(allegato.jsonMetadati);
}
catch (e) {
this.dataJson = null;
console.log('[error occored while you were typing the JSON]');
}
;
this.documentoSelezionato = allegato;
this.dettaglioDoc.emit(this.visualizzaDettagli);
}
}
AllegatiComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-allegati',
template: "<!-- <p>allegati works!</p> -->\r\n<div *ngIf=\"loadingLinguage\" class=\"row\">\r\n\t<div *ngIf=\"!visualizzaDettagli\" class=\"col-12\">\r\n\t\t<div class=\"table-responsive\">\r\n\t\t\t<table class=\"table border\">\r\n\t\t\t\t<thead>\r\n\t\t\t\t\t<tr>\r\n\t\t\t\t\t\t<th *ngIf=\"cl1\" scope=\"col\">{{'colonna_allegati_1' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl2\" scope=\"col\">{{'colonna_allegati_2' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl3\" scope=\"col\">{{'colonna_allegati_3' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl4\" scope=\"col\">{{'colonna_allegati_4' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl5\" scope=\"col\">{{'colonna_allegati_5' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl6\" scope=\"col\">{{'colonna_allegati_6' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl7\" scope=\"col\">{{'colonna_allegati_7' | traduzione}}</th>\r\n\t\t\t\t\t\t<th *ngIf=\"cl8\" scope=\"col\">{{'colonna_allegati_8' | traduzione}}</th>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t</thead>\r\n\t\t\t\t<tbody>\r\n\t\t\t\t\t<tr *ngFor=\"let allegato of allegati let i = index\">\r\n\t\t\t\t\t\t<td *ngIf=\"cl1\">{{allegato?.dataDocumento | date:'dd/MM/yyyy'}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl2\">{{allegato?.dataCreazione | date:'dd/MM/yyyy'}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl3\">{{allegato?.tipoServizio?.descrizione}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl4\">{{allegato.descrizione}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl5\">{{allegato.nome}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl6\">{{allegato?.tipoDocumento?.descrizione}}</td>\r\n\t\t\t\t\t\t<td *ngIf=\"cl7\">\r\n\t\t\t\t\t\t\t<button mat-flat-button color=\"\" class=\"btn btn-link\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"!isValid(allegato.statiDocumento)\"\r\n\t\t\t\t\t\t\t\t(click)=\"downloadFile(allegato)\"\r\n\t\t\t\t\t\t\t\t[attr.aria-label]=\"'bt-download-doc' | traduzione\"\r\n\t\t\t\t\t\t\t\ttitle=\"{{'bt-download-doc' | traduzione}}\">\r\n\t\t\t\t\t\t\t\t<span class=\"fas fa-download\" aria-hidden=\"true\"></span>\r\n\t\t\t\t\t\t\t\t<p class=\"sr-only\">{{'bt-download-doc' | traduzione}}</p>\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t<td *ngIf=\"allegato.jsonMetadati && cl8\">\r\n\t\t\t\t\t\t\t<button mat-flat-button color=\"\" class=\"btn btn-link\"\r\n\t\t\t\t\t\t\t\t(click)=\"visualizzaDettaglio(allegato)\"\r\n\t\t\t\t\t\t\t\t[attr.aria-label]=\"'bt-visualizza-dettaglio' | traduzione\"\r\n\t\t\t\t\t\t\t\ttitle=\"{{'bt-visualizza-dettaglio' | traduzione}}\">\r\n\t\t\t\t\t\t\t\t<span class=\"fas fa-eye ml-2\" aria-hidden=\"true\"></span>\r\n\t\t\t\t\t\t\t\t<p class=\"sr-only\">{{'bt-visualizza-dettaglio' | traduzione}}</p>\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</td>\r\n\t\t\t\t\t</tr>\r\n\t\t\t\t\t<!-- TODO -->\r\n\t\t\t\t\t<!-- <tr *ngIf=\"allegato.jsonMetadati\">\r\n\t\t\t\t\t\t<button mat-flat-button color=\"link\" class=\"btn btn-link\"\r\n\t\t\t\t\t\t\t(click)=\"visualizzaDettaglio(allegato)\">\r\n\t\t\t\t\t\t\t{{'colonna_allegati_8' | traduzione}}\r\n\t\t\t\t\t\t\t{{'Visualizza dettaglio' | traduzione}}\r\n\t\t\t\t\t\t\t<i class=\"fas fa-arrow-right ml-2\"></i>\r\n\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t<a (click)=\"visualizzaDettaglio(allegato)\" class=\"float\"\r\n\t\t\t\t\t\t\t>{{'Visualizza dettaglio' | traduzione}}\r\n\t\t\t\t\t\t\t<i class=\"bg-primary text-white fas fa-arrow-right ml-1 p-2 rounded \"></i>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t<lib-visualizza-dettagli\r\n\t\t\t\t\t\t\t\t[documentoSelezionato]=\"allegato\"\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t</lib-visualizza-dettagli>\r\n\t\t\t\t\t</tr> -->\r\n\t\t\t\t</tbody>\r\n\t\t\t</table>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div *ngIf=\"visualizzaDettagli\" class=\"card card-primary shadow\">\r\n\t\t\t\t<div class=\"card-header px-3 py-2\">\r\n\t\t\t\t\t<h4 class=\"card-title mb-0 font-weight-bold d-inline text-uppercase h5\">\r\n\t\t\t\t\t\t{{documentoSelezionato?.tipoServizio?.descrizione}}</h4>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"card-body px-3 py-2\">\r\n\t\t\t\t\t<div class=\"row mt-2 mb-3\">\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_1' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p >{{documentoSelezionato?.dataDocumento | date:'dd/MM/yyyy'}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_2' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p>{{documentoSelezionato?.dataCreazione | date:'dd/MM/yyyy'}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_3' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p >{{documentoSelezionato?.tipoServizio?.descrizione}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_5' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p>{{documentoSelezionato?.nome}}</p>\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_4' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p>{{documentoSelezionato?.descrizione}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">\r\n\t\t\t\t\t\t\t\t{{'colonna_allegati_6' | traduzione }}:\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t<p >{{documentoSelezionato?.tipoDocumento?.descrizione}}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-md-4 col-sm-6 col-xs-12 mb-3\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\"><strong>{{'colonna_allegati_7' | traduzione }}</strong></p>\r\n\t\t\t\t\t\t\t<button mat-flat-button color=\"link\" class=\"btn btn-primary\"\r\n\t\t\t\t\t\t\t\t[disabled]=\"!isValid(documentoSelezionato.statiDocumento)\"\r\n\t\t\t\t\t\t\t\t(click)=\"downloadFile(documentoSelezionato)\" aria-label=\"scarica il documento\">\r\n\t\t\t\t\t\t\t\tDownload <span class=\"fas fa-download fa-lg ml-2\" aria-hidden=\"true\"></span>\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t\t<p class=\"mb-0 font-weight-bold\" aria-labelledby=\"ulteriori_documento\">{{'Ulteriori Dettagli' | traduzione }}:</p>\r\n\t\t\t\t\t\t\t<ngx-json-viewer *ngIf=\"dataJson\"\r\n\t\t\t\t\t\t\t\t[json]=\"dataJson\"\r\n\t\t\t\t\t\t\t\t[expanded]=\"true\"\r\n\t\t\t\t\t\t\t\tid=\"ulteriori_documento\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</ngx-json-viewer>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n",
styles: [".card-primary>.card-header{background-color:#d3deea}.table>thead{background-color:#0a2644;color:#fff}.table td,.table th{border-top:0;padding:.75rem;vertical-align:top}.table tr{border-bottom:1px solid #dee2e6}.table tbody tr:hover{background-color:#dee2e6}.btn-link{color:#0061c2}.btn-link:hover{color:#053a9a}.btn-primary{background-color:#0061c2}.btn-primary:hover{background-color:#053a9a}"]
},] }
];
AllegatiComponent.ctorParameters = () => [
{ type: TranslateService },
{ type: TranslatePipe },
{ type: HttpClient },
{ type: ConfigurationService }
];
AllegatiComponent.propDecorators = {
allegati: [{ type: Input }],
visualizzaDettagli: [{ type: Input }],
colonne: [{ type: Input }],
dettaglioDoc: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsZWdhdGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItc29mdHdhcmVmYWN0b3J5L2NvbW1vbi1jb21wb25lbnQtbGliL3Byb2plY3RzL3BvcnRhbC1jb21tb24tY29tcG9uZW50LWxpYi9zcmMvIiwic291cmNlcyI6WyJsaWIvYWxsZWdhdGkvY29tcG9uZW50cy9hbGxlZ2F0aS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDakYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYTdDLE1BQU0sT0FBTyxpQkFBaUI7SUE2QjdCLFlBQW9CLGdCQUFrQyxFQUM3QyxhQUE0QixFQUM1QixJQUFnQixFQUNoQixvQkFBMEM7UUFIL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUM3QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUE3Qm5ELHVCQUFrQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFPeEMsYUFBUSxHQUF1QixFQUFFLENBQUM7UUFNbEMsWUFBTyxHQUFrQyxFQUFFLENBQUM7UUFFM0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTVELFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDckIsUUFBRyxHQUFZLEtBQUssQ0FBQztRQUNyQixRQUFHLEdBQVksS0FBSyxDQUFDO1FBQ3JCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDckIsUUFBRyxHQUFZLEtBQUssQ0FBQztRQUNyQixRQUFHLEdBQVksS0FBSyxDQUFDO1FBQ3JCLFFBQUcsR0FBWSxLQUFLLENBQUM7UUFDckIsUUFBRyxHQUFZLEtBQUssQ0FBQztJQUtrQyxDQUFDO0lBRXhELFFBQVE7UUFDUCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNsRyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYzthQUNsQyxJQUFJLENBQ0osR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ2hEO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFFZCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDbkcsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1Qyw0Q0FBNEM7UUFDNUMsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1Qyw0Q0FBNEM7UUFDNUMsNENBQTRDO1FBQzVDLDRDQUE0QztJQUM3QyxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQXVCO1FBQ25DLE1BQU0sR0FBRyxHQUFXLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQy9ELE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM5SCxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMxRCxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBK0I7UUFDdEMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQztTQUNaO2FBQU07WUFDTixPQUFPLEtBQUssQ0FBQztTQUNiO0lBQ0YsQ0FBQztJQUVELG1CQUFtQixDQUFDLFFBQVE7UUFDM0IsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztRQUMvQixJQUFJO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNsRDtRQUNELE9BQU8sQ0FBQyxFQUFFO1lBQ1QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQzlEO1FBQUEsQ0FBQztRQUNGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDakQsQ0FBQzs7O1lBbkdELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsY0FBYztnQkFDeEIseXVOQUF3Qzs7YUFFeEM7OztZQWxCUSxnQkFBZ0I7WUFEaEIsYUFBYTtZQUxiLFVBQVU7WUFVVixvQkFBb0I7Ozt1QkF3QjNCLEtBQUs7aUNBR0wsS0FBSztzQkFHTCxLQUFLOzJCQUdMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvdHJhbnNsYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRvRFRPIH0gZnJvbSAnLi4vbW9kZWxzL2RvY3VtZW50by1kdG8nO1xyXG5pbXBvcnQgeyBTdGF0b0RvY3VtZW50b0RUTyB9IGZyb20gJy4uL21vZGVscy9zdGF0by1kb2N1bWVudG8tZHRvJztcclxuaW1wb3J0IHsgc2F2ZUFzIH0gZnJvbSBcImZpbGUtc2F2ZXJcIjtcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24tc2VydmljZSc7XHJcbmltcG9ydCB7IE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9jdW1lbnRhbGUgfSBmcm9tICcuLi9tb2RlbHMvZG9jdW1lbnRhbGUnO1xyXG5cclxudHlwZSBDb2xvbm5lVGFiZWxsYUFsbGVnYXRpID0ge1xyXG5cdGNoaWF2ZTogc3RyaW5nLFxyXG5cdGRlc2NyaXppb25lOiBzdHJpbmcsXHJcblx0dmlzaWJpbGU6IGJvb2xlYW5cclxufVxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2xpYi1hbGxlZ2F0aScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2FsbGVnYXRpLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9hbGxlZ2F0aS5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFsbGVnYXRpQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0bG9hZGluZ0xpbmd1YWdlOiBib29sZWFuO1xyXG5cdGRvY3VtZW50b0Rvd25sb2FkJCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuXHRkb2N1bWVudGFsZVNlcnZpY2VVcmw6IHN0cmluZztcclxuXHRkZXR0YWdsaW86IGJvb2xlYW47XHJcblx0ZG9jdW1lbnRvU2VsZXppb25hdG86IERvY3VtZW50YWxlO1xyXG5cdGRhdGFKc29uOiBhbnk7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0YWxsZWdhdGk6IEFycmF5PERvY3VtZW50YWxlPiA9IFtdO1xyXG5cclxuXHRASW5wdXQoKVxyXG5cdHZpc3VhbGl6emFEZXR0YWdsaTogYm9vbGVhbjtcclxuXHJcblx0QElucHV0KClcclxuXHRjb2xvbm5lOiBBcnJheTxDb2xvbm5lVGFiZWxsYUFsbGVnYXRpPiA9IFtdO1xyXG5cclxuXHRAT3V0cHV0KCkgcHVibGljIGRldHRhZ2xpb0RvYyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuXHJcblx0Y2wxOiBib29sZWFuID0gZmFsc2U7XHJcblx0Y2wyOiBib29sZWFuID0gZmFsc2U7XHJcblx0Y2wzOiBib29sZWFuID0gZmFsc2U7XHJcblx0Y2w0OiBib29sZWFuID0gZmFsc2U7XHJcblx0Y2w1OiBib29sZWFuID0gZmFsc2U7XHJcblx0Y2w2OiBib29sZWFuID0gZmFsc2U7XHJcblx0Y2w3OiBib29sZWFuID0gZmFsc2U7XHJcblx0Y2w4OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsYXRlUGlwZTogVHJhbnNsYXRlUGlwZSxcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuXHRcdHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlKSB7IH1cclxuXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmRvY3VtZW50YWxlU2VydmljZVVybCA9IHRoaXMuY29uZmlndXJhdGlvblNlcnZpY2Uuc2VydmljZVBhdGhzLmdldCgnRE9DVU1FTlRBTEVfTVNfQVBJX1VSTCcpO1xyXG5cdFx0dGhpcy50cmFuc2xhdGVQaXBlLnRyYW5zZm9ybSgnJyk7XHJcblx0XHR0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhZHV6aW9uaUxpYiRcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKF8gPT4gXyA/IHRoaXMubG9hZGluZ0xpbmd1YWdlID0gdHJ1ZSA6IG51bGwpXHJcblx0XHRcdClcclxuXHRcdFx0LnN1YnNjcmliZSgpO1xyXG5cclxuXHRcdC8vIGNvbnNvbGUubG9nKCdbY29sb25uZV0nLCB0aGlzLmNvbG9ubmUpO1xyXG5cdFx0dGhpcy5jbDEgPSB0aGlzLmNvbG9ubmUuZmluZCh0aXBvU2Vydml6aW8gPT4gdGlwb1NlcnZpemlvLmNoaWF2ZSA9PSBcImNvbG9ubmFfYWxsZWdhdGlfMVwiKS52aXNpYmlsZTtcclxuXHRcdHRoaXMuY2wyID0gdGhpcy5jb2xvbm5lLmZpbmQodGlwb1NlcnZpemlvID0+IHRpcG9TZXJ2aXppby5jaGlhdmUgPT0gXCJjb2xvbm5hX2FsbGVnYXRpXzJcIikudmlzaWJpbGU7XHJcblx0XHR0aGlzLmNsMyA9IHRoaXMuY29sb25uZS5maW5kKHRpcG9TZXJ2aXppbyA9PiB0aXBvU2Vydml6aW8uY2hpYXZlID09IFwiY29sb25uYV9hbGxlZ2F0aV8zXCIpLnZpc2liaWxlO1xyXG5cdFx0dGhpcy5jbDQgPSB0aGlzLmNvbG9ubmUuZmluZCh0aXBvU2Vydml6aW8gPT4gdGlwb1NlcnZpemlvLmNoaWF2ZSA9PSBcImNvbG9ubmFfYWxsZWdhdGlfNFwiKS52aXNpYmlsZTtcclxuXHRcdHRoaXMuY2w1ID0gdGhpcy5jb2xvbm5lLmZpbmQodGlwb1NlcnZpemlvID0+IHRpcG9TZXJ2aXppby5jaGlhdmUgPT0gXCJjb2xvbm5hX2FsbGVnYXRpXzVcIikudmlzaWJpbGU7XHJcblx0XHR0aGlzLmNsNiA9IHRoaXMuY29sb25uZS5maW5kKHRpcG9TZXJ2aXppbyA9PiB0aXBvU2Vydml6aW8uY2hpYXZlID09IFwiY29sb25uYV9hbGxlZ2F0aV82XCIpLnZpc2liaWxlO1xyXG5cdFx0dGhpcy5jbDcgPSB0aGlzLmNvbG9ubmUuZmluZCh0aXBvU2Vydml6aW8gPT4gdGlwb1NlcnZpemlvLmNoaWF2ZSA9PSBcImNvbG9ubmFfYWxsZWdhdGlfN1wiKS52aXNpYmlsZTtcclxuXHRcdHRoaXMuY2w4ID0gdGhpcy5jb2xvbm5lLmZpbmQodGlwb1NlcnZpemlvID0+IHRpcG9TZXJ2aXppby5jaGlhdmUgPT0gXCJjb2xvbm5hX2FsbGVnYXRpXzhcIikudmlzaWJpbGU7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW2NvbG9ubmVdIC0gY2wxJywgdGhpcy5jbDEpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tjb2xvbm5lXSAtIGNsMicsIHRoaXMuY2wyKTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdbY29sb25uZV0gLSBjbDMnLCB0aGlzLmNsMyk7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW2NvbG9ubmVdIC0gY2w0JywgdGhpcy5jbDQpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tjb2xvbm5lXSAtIGNsNScsIHRoaXMuY2w1KTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKCdbY29sb25uZV0gLSBjbDYnLCB0aGlzLmNsNik7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW2NvbG9ubmVdIC0gY2w3JywgdGhpcy5jbDcpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tjb2xvbm5lXSAtIGNsOCcsIHRoaXMuY2w4KTtcclxuXHR9XHJcblxyXG5cdGRvd25sb2FkRmlsZShkb2N1bWVudG86IERvY3VtZW50b0RUTykge1xyXG5cdFx0Y29uc3QgdXJsOiBzdHJpbmcgPSB0aGlzLmRvY3VtZW50YWxlU2VydmljZVVybCArIGRvY3VtZW50by51cmw7XHJcblx0XHRjb25zb2xlLmxvZygnW3VybF0nLCB1cmwpO1xyXG5cdFx0Y29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0aGVhZGVycy5hcHBlbmQoJ0FjY2VwdCcsICd0ZXh0L3BsYWluJyk7XHJcblx0XHR0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzOiBoZWFkZXJzLCByZXNwb25zZVR5cGU6ICdibG9iJyB9KS5zdWJzY3JpYmUocmVzcG9uc2UgPT4gdGhpcy5zYXZlRmlsZShyZXNwb25zZSwgZG9jdW1lbnRvLm5vbWUpKVxyXG5cdH1cclxuXHJcblx0c2F2ZUZpbGUocmVzcG9uc2UsIG5vbWVGaWxlKSB7XHJcblx0XHRjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jlc3BvbnNlXSwgeyB0eXBlOiAndGV4dC9wbGFpbicgfSk7XHJcblx0XHRzYXZlQXMoYmxvYiwgbm9tZUZpbGUpO1xyXG5cdH1cclxuXHJcblx0aXNWYWxpZChzdGF0bzogQXJyYXk8U3RhdG9Eb2N1bWVudG9EVE8+KSB7XHJcblx0XHRpZiAoc3RhdG8uZmlsdGVyKHMgPT4gcy5sYXN0U3RhdGUgPT0gdHJ1ZSkpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR2aXN1YWxpenphRGV0dGFnbGlvKGFsbGVnYXRvKSB7XHJcblx0XHR0aGlzLnZpc3VhbGl6emFEZXR0YWdsaSA9IHRydWU7XHJcblx0XHR0cnkge1xyXG5cdFx0XHR0aGlzLmRhdGFKc29uID0gSlNPTi5wYXJzZShhbGxlZ2F0by5qc29uTWV0YWRhdGkpO1xyXG5cdFx0fVxyXG5cdFx0Y2F0Y2ggKGUpIHtcclxuXHRcdFx0dGhpcy5kYXRhSnNvbiA9IG51bGw7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdbZXJyb3Igb2Njb3JlZCB3aGlsZSB5b3Ugd2VyZSB0eXBpbmcgdGhlIEpTT05dJyk7XHJcblx0XHR9O1xyXG5cdFx0dGhpcy5kb2N1bWVudG9TZWxlemlvbmF0byA9IGFsbGVnYXRvO1xyXG5cdFx0dGhpcy5kZXR0YWdsaW9Eb2MuZW1pdCh0aGlzLnZpc3VhbGl6emFEZXR0YWdsaSk7XHJcblx0fVxyXG59XHJcbiJdfQ==