UNPKG

@infordata-web/portal-common-component-lib

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.

93 lines 16.5 kB
import { Component, Output, Input, ApplicationRef, EventEmitter } from "@angular/core"; import { of, combineLatest, defer } from "rxjs"; import { Validators, FormControl, FormGroup } from "@angular/forms"; import { map, shareReplay, startWith, switchMap, tap, withLatestFrom } from "rxjs/operators"; import { MessageService } from "../../services/message.service"; import { TipologicheService } from "../../services/tipologiche/tipologiche.service"; import { ComponentOutputStatus } from "../../normalizzazione/component-output-status"; export class DatiTribunaleComponent { constructor(msg, tipologiche, appRef) { this.msg = msg; this.tipologiche = tipologiche; this.appRef = appRef; this.form = new FormGroup({}); this.done = new EventEmitter(); } ngOnDestroy() { if (this.$valuechangeTrib) { this.$valuechangeTrib.unsubscribe(); } if (this.$changeTribunale) { this.$changeTribunale.unsubscribe(); } } ngOnInit() { var _a, _b; const localitaProvinciaAC = new FormControl({ value: (_a = this === null || this === void 0 ? void 0 : this.autoritaOrdinante) === null || _a === void 0 ? void 0 : _a.codiceProvincia, disabled: false }, [Validators.required]); this.form.addControl("localitaProvinciaAC", localitaProvinciaAC); const tribunaleAC = new FormControl({ value: '', disabled: false }, c => { return String(c.value || '').length > 0 ? {} : { 'required': 'Il campo è obbligatorio.' }; }); this.form.addControl("tribunaleAC", tribunaleAC); /* const tribunaleCF = new FormControl( { value: "", disabled: true } ); this.form.addControl("tribunaleCF", tribunaleCF); */ //reccupero_tribunali this.tribunali$ = localitaProvinciaAC.valueChanges .pipe(startWith((_b = this.autoritaOrdinante) === null || _b === void 0 ? void 0 : _b.codiceProvincia), switchMap((value) => this.tipologiche.getTribunali$(value) .pipe(withLatestFrom(of(value)))), // tap(_ => console.log("outMergeMap", _)), //SE SI PROVIENE DALLE BOZZE => SI RESETTA IL TRIBUNALE tap(([tribunali, value]) => { var _a; if (value == ((_a = this.autoritaOrdinante) === null || _a === void 0 ? void 0 : _a.codiceProvincia)) { tribunaleAC.setValue(this.autoritaOrdinante.idTribunale); } else { tribunaleAC.setValue(null); } }), map(([tribunali, value]) => tribunali), shareReplay() // catchError(error=> ) ); //Build_output_steam const changeTribinali$ = defer(() => this.tribunali$); const streamOutput$ = combineLatest([ changeTribinali$, tribunaleAC.valueChanges ]) .pipe(map(([listaTribunali, tribunaleSelected]) => listaTribunali.find(tribunale => tribunale.id == tribunaleSelected)), map(tribunale => ComponentOutputStatus.of(this.form.valid, tribunale))); /* this.cf$ = tribunaleAC.valueChanges .pipe( tap(_ => console.log("cf$", _)), switchMap(value => this.tribunali$.pipe( map(trib => trib.find( tribunale => tribunale.codiceistat == value)?.codiceFiscale )) ) ) */ //OUTPUT_COMPONENT this.$valuechangeTrib = streamOutput$.pipe().subscribe(out => this.done.emit(out)); } resetTribunale() { } } DatiTribunaleComponent.decorators = [ { type: Component, args: [{ selector: 'lib-dati-tribunale', template: "<div class=\"row\" [formGroup]=\"form\">\r\n\t<div class=\"col-12\">\r\n\t\t<!-- <h4 class=\"h5\">{{'inserisci-dati-tribunale' | traduzione}}</h4> -->\r\n\t\t<h3 class=\"h5 mb-0\"><info-tip-label label=\"inserisci-dati-tribunale\"></info-tip-label></h3>\r\n\t</div>\r\n\t<div class=\"col-md-6\">\r\n\t\t<mat-form-field>\r\n\t\t\t<mat-label>{{'required' | traduzione}}{{'provincia' | traduzione}}</mat-label>\r\n\t\t\t<mat-select placeholder=\"{{'seleziona' | traduzione}}\" formControlName=\"localitaProvinciaAC\">\r\n\t\t\t\t<mat-option *ngFor=\"let provincia of province | async\" [value]=\"provincia.sigla\">\r\n\t\t\t\t\t{{provincia.denominazione}}\r\n\t\t\t\t</mat-option>\r\n\t\t\t</mat-select>\r\n\t\t\t<mat-error *ngIf=\"form.touched && form.controls[ 'localitaProvinciaAC'].invalid\">\r\n\t\t\t\t{{msg.produceMessage('obbligatorio', form.controls[ 'localitaProvinciaAC']) | traduzione}}\r\n\t\t\t</mat-error>\r\n\t\t\t<mat-hint *infoTip=\"'provincia'\"></mat-hint>\r\n\t\t</mat-form-field>\r\n\t</div>\r\n\t<div class=\"col-md-6\">\r\n\t\t<mat-form-field>\r\n\t\t\t<mat-label>{{'required' | traduzione}}{{'tribunale' | traduzione}}</mat-label>\r\n\t\t\t<mat-select formControlName=\"tribunaleAC\">\r\n\t\t\t\t<mat-option *ngFor=\"let tribunale of tribunali$ | async\" [value]=\"tribunale.id\">\r\n\t\t\t\t\t{{tribunale.nomeUfficio}}\r\n\t\t\t\t</mat-option>\r\n\t\t\t</mat-select>\r\n\t\t\t<mat-error *ngIf=\"form.controls[ 'tribunaleAC'].invalid\">\r\n\t\t\t\t{{msg.produceMessage('obbligatorio', form.controls[ 'tribunaleAC']) | traduzione}}\r\n\t\t\t</mat-error>\r\n\t\t\t<mat-hint *infoTip=\"'tribunale'\"></mat-hint>\r\n\t\t</mat-form-field>\r\n\t</div>\r\n\t<!-- <div class=\"col-md-4\" *ngIf=\"cf$ | async\">\r\n\t\t<mat-form-field>\r\n\t\t\t<mat-label>{{'codice-fiscale' | traduzione}}</mat-label>\r\n\t\t\t<input matInput formControlName=\"tribunaleCF\" [value]=\"cf$ | async\">\r\n\t\t</mat-form-field>\r\n\t</div> -->\r\n</div>\r\n", styles: [""] },] } ]; DatiTribunaleComponent.ctorParameters = () => [ { type: MessageService }, { type: TipologicheService }, { type: ApplicationRef } ]; DatiTribunaleComponent.propDecorators = { province: [{ type: Input }], autoritaOrdinante: [{ type: Input }], done: [{ type: Output }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0aS10cmlidW5hbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItdGVybmkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZXBvc2l0aS9jb21tb24tY29tcG9uZW50L2RhdGktdHJpYnVuYWxlL2RhdGktdHJpYnVuYWxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUE0QixFQUFFLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsR0FBRyxFQUFZLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDcEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFnQnRGLE1BQU0sT0FBTyxzQkFBc0I7SUFjbEMsWUFDUyxHQUFtQixFQUNuQixXQUErQixFQUMvQixNQUFzQjtRQUZ0QixRQUFHLEdBQUgsR0FBRyxDQUFnQjtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFYL0IsU0FBSSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFD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RSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFekU7Ozs7Ozs7O2dCQVFLO1FBRUwsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUN6QyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUdELGNBQWMsS0FBSyxDQUFDOzs7WUFuR3BCLFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUsb0JBQW9CO2dCQUM5QiwyNkRBQThDOzthQUU5Qzs7O1lBakJRLGNBQWM7WUFDZCxrQkFBa0I7WUFOMkIsY0FBYzs7O3VCQXdCbEUsS0FBSztnQ0FFTCxLQUFLO21CQU1MLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBPdXRwdXQsIElucHV0LCBBcHBsaWNhdGlvblJlZiwgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlLCBvZiwgY29tYmluZUxhdGVzdCwgZGVmZXIgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBQcm92aW5jaWFEVE8gfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb3ZpbmNpYS1kdG9cIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvbWVzc2FnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFRpcG9sb2dpY2hlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90aXBvbG9naWNoZS90aXBvbG9naWNoZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudE91dHB1dFN0YXR1cyB9IGZyb20gXCIuLi8uLi9ub3JtYWxpenphemlvbmUvY29tcG9uZW50LW91dHB1dC1zdGF0dXNcIjtcclxuaW1wb3J0IHsgVHJpYnVuYWxlRFRPIH0gZnJvbSBcIi4uLy4uL21vZGVscy90cmlidW5hbGUtZHRvXCI7XHJcbmltcG9ydCB7IEF1dG9yaXRhT3JkaW5hbnRlRFRPIH0gZnJvbSBcIi4uLy4uL21vZGVscy9hdXRvcml0YS1vcmRpbmFudGUtZHRvXCI7XHJcbnR5cGUgZXJyb3JTZXJ2aWNlRmFpbGVkID0ge1xyXG5cdGVycm9yOiBzdHJpbmdcclxufVxyXG50eXBlIHByb3ZpbmNpYUFuZFRyaWJ1bmFsaSA9IHtcclxuXHR0cmlidW5hbGk6IEFycmF5PFRyaWJ1bmFsZURUTz4sXHJcblx0c2lnbGFQcm92aW5jaWE6IHN0cmluZ1xyXG59XHJcbnR5cGUgT1VUUFVUX0NPTVBPTkVOVCA9IHN0cmluZyB8IENvbXBvbmVudE91dHB1dFN0YXR1czxUcmlidW5hbGVEVE8+IHwgQ29tcG9uZW50T3V0cHV0U3RhdHVzPGVycm9yU2VydmljZUZhaWxlZD5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItZGF0aS10cmlidW5hbGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9kYXRpLXRyaWJ1bmFsZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZGF0aS10cmlidW5hbGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEYXRpVHJpYnVuYWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBJbnB1dCgpXHJcblx0cHJvdmluY2U6IE9ic2VydmFibGU8QXJyYXk8UHJvdmluY2lhRFRPPj47XHJcblx0QElucHV0KClcclxuXHRhdXRvcml0YU9yZGluYW50ZTogQXV0b3JpdGFPcmRpbmFudGVEVE87XHJcblx0Y2YkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcblx0Zm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cdHRyaWJ1bmFsaSQ6IE9ic2VydmFibGU8VHJpYnVuYWxlRFRPW10+O1xyXG5cdCR2YWx1ZWNoYW5nZVRyaWI6IFN1YnNjcmlwdGlvbjtcclxuXHRAT3V0cHV0KClcclxuXHRkb25lOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdCRjaGFuZ2VUcmlidW5hbGU6IFN1YnNjcmlwdGlvbjtcclxuXHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSBtc2c6IE1lc3NhZ2VTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0aXBvbG9naWNoZTogVGlwb2xvZ2ljaGVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmXHJcblxyXG5cdCkgeyB9XHJcblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy4kdmFsdWVjaGFuZ2VUcmliKSB7XHJcblx0XHRcdHRoaXMuJHZhbHVlY2hhbmdlVHJpYi51bnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuJGNoYW5nZVRyaWJ1bmFsZSkge1xyXG5cdFx0XHR0aGlzLiRjaGFuZ2VUcmlidW5hbGUudW5zdWJzY3JpYmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0Y29uc3QgbG9jYWxpdGFQcm92aW5jaWFBQyA9IG5ldyBGb3JtQ29udHJvbChcclxuXHRcdFx0eyB2YWx1ZTogdGhpcz8uYXV0b3JpdGFPcmRpbmFudGU/LmNvZGljZVByb3ZpbmNpYSwgZGlzYWJsZWQ6IGZhbHNlIH0sXHJcblx0XHRcdFtWYWxpZGF0b3JzLnJlcXVpcmVkXVxyXG5cdFx0KTtcclxuXHRcdHRoaXMuZm9ybS5hZGRDb250cm9sKFwibG9jYWxpdGFQcm92aW5jaWFBQ1wiLCBsb2NhbGl0YVByb3ZpbmNpYUFDKTtcclxuXHJcblx0XHRjb25zdCB0cmlidW5hbGVBQyA9IG5ldyBGb3JtQ29udHJvbChcclxuXHRcdFx0eyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9LCBjID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gU3RyaW5nKGMudmFsdWUgfHwgJycpLmxlbmd0aCA+IDBcclxuXHRcdFx0XHRcdD8ge31cclxuXHRcdFx0XHRcdDogeyAncmVxdWlyZWQnOiAnSWwgY2FtcG8gw6ggb2JibGlnYXRvcmlvLicgfVxyXG5cdFx0XHR9KTtcclxuXHRcdHRoaXMuZm9ybS5hZGRDb250cm9sKFwidHJpYnVuYWxlQUNcIiwgdHJpYnVuYWxlQUMpO1xyXG5cclxuXHRcdC8qIGNvbnN0IHRyaWJ1bmFsZUNGID0gbmV3IEZvcm1Db250cm9sKFxyXG5cdFx0XHR7IHZhbHVlOiBcIlwiLCBkaXNhYmxlZDogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdFx0dGhpcy5mb3JtLmFkZENvbnRyb2woXCJ0cmlidW5hbGVDRlwiLCB0cmlidW5hbGVDRik7ICovXHJcblxyXG5cdFx0Ly9yZWNjdXBlcm9fdHJpYnVuYWxpXHJcblx0XHR0aGlzLnRyaWJ1bmFsaSQgPSBsb2NhbGl0YVByb3ZpbmNpYUFDLnZhbHVlQ2hhbmdlc1xyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzdGFydFdpdGgodGhpcy5hdXRvcml0YU9yZGluYW50ZT8uY29kaWNlUHJvdmluY2lhKSxcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHZhbHVlKSA9PiB0aGlzLnRpcG9sb2dpY2hlLmdldFRyaWJ1bmFsaSQodmFsdWUpXHJcblx0XHRcdFx0XHQucGlwZSh3aXRoTGF0ZXN0RnJvbShvZih2YWx1ZSkpKSksXHJcblx0XHRcdFx0Ly8gdGFwKF8gPT4gY29uc29sZS5sb2coXCJvdXRNZXJnZU1hcFwiLCBfKSksXHJcblx0XHRcdFx0Ly9TRSBTSSBQUk9WSUVORSBEQUxMRSBCT1paRSA9PiBTSSBSRVNFVFRBIElMIFRSSUJVTkFMRVxyXG5cdFx0XHRcdHRhcCgoW3RyaWJ1bmFsaSwgdmFsdWVdKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodmFsdWUgPT0gdGhpcy5hdXRvcml0YU9yZGluYW50ZT8uY29kaWNlUHJvdmluY2lhKSB7XHJcblx0XHRcdFx0XHRcdHRyaWJ1bmFsZUFDLnNldFZhbHVlKHRoaXMuYXV0b3JpdGFPcmRpbmFudGUuaWRUcmlidW5hbGUpXHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHR0cmlidW5hbGVBQy5zZXRWYWx1ZShudWxsKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KSxcclxuXHRcdFx0XHRtYXAoKFt0cmlidW5hbGksIHZhbHVlXSkgPT4gdHJpYnVuYWxpKSxcclxuXHRcdFx0XHRzaGFyZVJlcGxheSgpXHJcblx0XHRcdFx0Ly8gY2F0Y2hFcnJvcihlcnJvcj0+IClcclxuXHRcdFx0KTtcclxuXHJcblx0XHQvL0J1aWxkX291dHB1dF9zdGVhbVxyXG5cdFx0Y29uc3QgY2hhbmdlVHJpYmluYWxpJCA9IGRlZmVyKCgpID0+IHRoaXMudHJpYnVuYWxpJCk7XHJcblx0XHRjb25zdCBzdHJlYW1PdXRwdXQkID0gY29tYmluZUxhdGVzdChbXHJcblx0XHRcdGNoYW5nZVRyaWJpbmFsaSQsXHJcblx0XHRcdHRyaWJ1bmFsZUFDLnZhbHVlQ2hhbmdlc10pXHJcblx0XHRcdC5waXBlKG1hcCgoW2xpc3RhVHJpYnVuYWxpLCB0cmlidW5hbGVTZWxlY3RlZF0pID0+IGxpc3RhVHJpYnVuYWxpLmZpbmQoXHJcblx0XHRcdFx0dHJpYnVuYWxlID0+IHRyaWJ1bmFsZS5pZCA9PSB0cmlidW5hbGVTZWxlY3RlZCkpLFxyXG5cdFx0XHRcdG1hcCh0cmlidW5hbGUgPT4gQ29tcG9uZW50T3V0cHV0U3RhdHVzLm9mKHRoaXMuZm9ybS52YWxpZCwgdHJpYnVuYWxlKSkpXHJcblxyXG5cdFx0LyogdGhpcy5jZiQgPSB0cmlidW5hbGVBQy52YWx1ZUNoYW5nZXNcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKF8gPT4gY29uc29sZS5sb2coXCJjZiRcIiwgXykpLFxyXG5cdFx0XHRcdHN3aXRjaE1hcCh2YWx1ZSA9PiB0aGlzLnRyaWJ1bmFsaSQucGlwZShcclxuXHRcdFx0XHRcdG1hcCh0cmliID0+IHRyaWIuZmluZChcclxuXHRcdFx0XHRcdFx0dHJpYnVuYWxlID0+IHRyaWJ1bmFsZS5jb2RpY2Vpc3RhdCA9PSB2YWx1ZSk/LmNvZGljZUZpc2NhbGVcclxuXHRcdFx0XHRcdCkpXHJcblx0XHRcdFx0KVxyXG5cdFx0XHQpICovXHJcblxyXG5cdFx0Ly9PVVRQVVRfQ09NUE9ORU5UXHJcblx0XHR0aGlzLiR2YWx1ZWNoYW5nZVRyaWIgPSBzdHJlYW1PdXRwdXQkLnBpcGUoXHJcblx0XHQpLnN1YnNjcmliZShvdXQgPT4gdGhpcy5kb25lLmVtaXQob3V0KSlcclxuXHR9XHJcblxyXG5cclxuXHRyZXNldFRyaWJ1bmFsZSgpIHsgfVxyXG5cclxufSJdfQ==