UNPKG

sic-mapping-toolkit

Version:

SICMapping Toolkit es una biblioteca para Angular que permite la creación de aplicaciones de Web Mapping por medio de OpenLayers

111 lines 13.3 kB
import { Injectable } from '@angular/core'; import { SICMap } from '../models/map'; import { Map as olMap, View } from 'ol'; import * as i0 from "@angular/core"; export class MapService { constructor() { this.mapas = new Map(); } createMap(target, center = [0, 0], projection = 'EPSG:4326', id) { const view = new View({ center: center, zoom: 15, projection: projection }); const map = new olMap({ target: target, view: view, layers: [] }); const mapa = SICMap.initMap(map, { id }); this.mapas.set(mapa.Id, mapa); if (!this.default) { this.default = mapa.Id; } return mapa; } setDefaultMapa(id) { this.default = this.mapas.has(id) ? id : this.default; } getMapById(id) { return this.getMapa(id); } setBaseLayer(glayer, mapaId) { const mapa = this.getMapa(mapaId); return mapa.setBaseLayer(glayer); } clearBaseLayer(mapaId) { const mapa = this.getMapa(mapaId); mapa.clearBaseLayer(); } addLayer(glayer, mapaId) { const mapa = this.getMapa(mapaId); return mapa.addLayer(glayer); } removeLayer(idLayer, mapaId) { const mapa = this.getMapa(mapaId); mapa.removeLayer(idLayer); } addEventHandler(type, handler, priority, mapaId) { const mapa = this.getMapa(mapaId); return mapa.addEventHandler(type, handler, priority); } removeEventHandler(handlerId, mapaId) { const mapa = this.getMapa(mapaId); mapa.removeEventHandler(handlerId); } addOverlay(overlay, mapaId) { const mapa = this.getMapa(mapaId); mapa.addOverlay(overlay); } removeOverlay(overlay, mapaId) { const mapa = this.getMapa(mapaId); mapa.removeOverlay(overlay); } addInteraction(interaction, mapaId) { const mapa = this.getMapa(mapaId); mapa.addInteraction(interaction); } removeInteraction(interaction, mapaId) { const mapa = this.getMapa(mapaId); mapa.removeInteraction(interaction); } addControl(control, mapaId) { const mapa = this.getMapa(mapaId); mapa.addControl(control); } removeControl(control, mapaId) { const mapa = this.getMapa(mapaId); mapa.removeControl(control); } drawFeature(feature, style, mapaId) { const mapa = this.getMapa(mapaId); mapa.drawFeatures([feature], style); } clearDrawings(featureIdPrefix, mapaId) { const mapa = this.getMapa(mapaId); mapa.clearFeatures(featureIdPrefix); } // Utilidades getMapa(mapaId) { if (!mapaId) { mapaId = this.default; } if (!this.mapas.has(mapaId)) { throw new Error('No existe SICMap con el id proporcionado'); } const mapa = this.mapas.get(mapaId); if (!mapa) { throw new Error('No se pudo recuperar el SICMap'); } return mapa; } } MapService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MapService_Factory() { return new MapService(); }, token: MapService, providedIn: "root" }); MapService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; MapService.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWMtbWFwcGluZy10b29sa2l0L3NyYy9saWIvc2VydmljZXMvbWFwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxHQUFHLElBQUksS0FBSyxFQUFTLElBQUksRUFBeUMsTUFBTSxJQUFJLENBQUM7O0FBU3RGLE1BQU0sT0FBTyxVQUFVO0lBSXJCO1FBQ0UsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztJQUN6QyxDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWMsRUFBRSxTQUEyQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFxQixXQUFXLEVBQUUsRUFBVztRQUN4RyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQztZQUNwQixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxFQUFFO1lBQ1IsVUFBVSxFQUFFLFVBQVU7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUM7WUFDcEIsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQVU7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hELENBQUM7SUFFRCxVQUFVLENBQUMsRUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFnQixFQUFFLE1BQWU7UUFDNUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFlO1FBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBZ0IsRUFBRSxNQUFlO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZSxFQUFFLE1BQWU7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBa0IsRUFBRSxPQUFpQyxFQUFFLFFBQWlDLEVBQUUsTUFBZTtRQUN2SCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLE1BQWU7UUFDbkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFnQixFQUFFLE1BQWU7UUFDMUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxNQUFlO1FBQzdDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXdCLEVBQUUsTUFBZTtRQUN0RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFdBQXdCLEVBQUUsTUFBZTtRQUN6RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWdCLEVBQUUsTUFBZTtRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQixFQUFFLE1BQWU7UUFDN0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZ0IsRUFBRSxLQUFZLEVBQUUsTUFBZTtRQUN6RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLGVBQXVCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGFBQWE7SUFDTCxPQUFPLENBQUMsTUFBYztRQUM1QixJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDdkI7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsTUFBTSxJQUFJLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7OztZQS9IRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTSUNNYXAgfSBmcm9tICcuLi9tb2RlbHMvbWFwJztcblxuaW1wb3J0IHsgTWFwIGFzIG9sTWFwLCBsYXllciwgVmlldywgRmVhdHVyZSwgRXh0ZW50LCBPdmVybGF5LCBJbnRlcmFjdGlvbiB9IGZyb20gJ29sJztcbmltcG9ydCBDb250cm9sIGZyb20gJ29sL2NvbnRyb2wvQ29udHJvbCc7XG5pbXBvcnQgU3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xuaW1wb3J0IHsgU0lDTGF5ZXIgfSBmcm9tICcuLi9tb2RlbHMvbGF5ZXInO1xuaW1wb3J0IHsgTWFwRXZlbnRUeXBlLCBNYXBFdmVudEhhbmRsZXJQcmlvcml0eSB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hcFNlcnZpY2Uge1xuICBkZWZhdWx0OiBzdHJpbmc7XG4gIG1hcGFzOiBNYXA8c3RyaW5nLCBTSUNNYXA+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubWFwYXMgPSBuZXcgTWFwPHN0cmluZywgU0lDTWFwPigpO1xuICB9XG5cbiAgY3JlYXRlTWFwKHRhcmdldDogc3RyaW5nLCBjZW50ZXI6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMF0sIHByb2plY3Rpb246IHN0cmluZyA9ICdFUFNHOjQzMjYnLCBpZD86IHN0cmluZyk6IFNJQ01hcCB7XG4gICAgY29uc3QgdmlldyA9IG5ldyBWaWV3KHtcbiAgICAgIGNlbnRlcjogY2VudGVyLFxuICAgICAgem9vbTogMTUsXG4gICAgICBwcm9qZWN0aW9uOiBwcm9qZWN0aW9uXG4gICAgfSk7XG4gICAgY29uc3QgbWFwID0gbmV3IG9sTWFwKHtcbiAgICAgIHRhcmdldDogdGFyZ2V0LFxuICAgICAgdmlldzogdmlldyxcbiAgICAgIGxheWVyczogW11cbiAgICB9KTtcblxuICAgIGNvbnN0IG1hcGEgPSBTSUNNYXAuaW5pdE1hcChtYXAsIHsgaWQgfSk7XG4gICAgdGhpcy5tYXBhcy5zZXQobWFwYS5JZCwgbWFwYSk7XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdCkge1xuICAgICAgdGhpcy5kZWZhdWx0ID0gbWFwYS5JZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwYTtcbiAgfVxuXG4gIHNldERlZmF1bHRNYXBhKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRlZmF1bHQgPSB0aGlzLm1hcGFzLmhhcyhpZCkgPyBpZCA6IHRoaXMuZGVmYXVsdDtcbiAgfVxuXG4gIGdldE1hcEJ5SWQoaWQ6IHN0cmluZyk6IFNJQ01hcCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWFwYShpZCk7XG4gIH1cblxuICBzZXRCYXNlTGF5ZXIoZ2xheWVyOiBTSUNMYXllciwgbWFwYUlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgcmV0dXJuIG1hcGEuc2V0QmFzZUxheWVyKGdsYXllcik7XG4gIH1cblxuICBjbGVhckJhc2VMYXllcihtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5jbGVhckJhc2VMYXllcigpO1xuICB9XG5cbiAgYWRkTGF5ZXIoZ2xheWVyOiBTSUNMYXllciwgbWFwYUlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgcmV0dXJuIG1hcGEuYWRkTGF5ZXIoZ2xheWVyKTtcbiAgfVxuXG4gIHJlbW92ZUxheWVyKGlkTGF5ZXI6IHN0cmluZywgbWFwYUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFwYSA9IHRoaXMuZ2V0TWFwYShtYXBhSWQpO1xuICAgIG1hcGEucmVtb3ZlTGF5ZXIoaWRMYXllcik7XG4gIH1cblxuICBhZGRFdmVudEhhbmRsZXIodHlwZTogTWFwRXZlbnRUeXBlLCBoYW5kbGVyOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQsIHByaW9yaXR5OiBNYXBFdmVudEhhbmRsZXJQcmlvcml0eSwgbWFwYUlkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgcmV0dXJuIG1hcGEuYWRkRXZlbnRIYW5kbGVyKHR5cGUsIGhhbmRsZXIsIHByaW9yaXR5KTtcbiAgfVxuXG4gIHJlbW92ZUV2ZW50SGFuZGxlcihoYW5kbGVySWQ6IHN0cmluZywgbWFwYUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFwYSA9IHRoaXMuZ2V0TWFwYShtYXBhSWQpO1xuICAgIG1hcGEucmVtb3ZlRXZlbnRIYW5kbGVyKGhhbmRsZXJJZCk7XG4gIH1cblxuICBhZGRPdmVybGF5KG92ZXJsYXk6IE92ZXJsYXksIG1hcGFJZD86IHN0cmluZykge1xuICAgIGNvbnN0IG1hcGEgPSB0aGlzLmdldE1hcGEobWFwYUlkKTtcbiAgICBtYXBhLmFkZE92ZXJsYXkob3ZlcmxheSk7XG4gIH1cblxuICByZW1vdmVPdmVybGF5KG92ZXJsYXk6IE92ZXJsYXksIG1hcGFJZD86IHN0cmluZykge1xuICAgIGNvbnN0IG1hcGEgPSB0aGlzLmdldE1hcGEobWFwYUlkKTtcbiAgICBtYXBhLnJlbW92ZU92ZXJsYXkob3ZlcmxheSk7XG4gIH1cblxuICBhZGRJbnRlcmFjdGlvbihpbnRlcmFjdGlvbjogSW50ZXJhY3Rpb24sIG1hcGFJZD86IHN0cmluZykge1xuICAgIGNvbnN0IG1hcGEgPSB0aGlzLmdldE1hcGEobWFwYUlkKTtcbiAgICBtYXBhLmFkZEludGVyYWN0aW9uKGludGVyYWN0aW9uKTtcbiAgfVxuXG4gIHJlbW92ZUludGVyYWN0aW9uKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbiwgbWFwYUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbWFwYSA9IHRoaXMuZ2V0TWFwYShtYXBhSWQpO1xuICAgIG1hcGEucmVtb3ZlSW50ZXJhY3Rpb24oaW50ZXJhY3Rpb24pO1xuICB9XG5cbiAgYWRkQ29udHJvbChjb250cm9sOiBDb250cm9sLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5hZGRDb250cm9sKGNvbnRyb2wpO1xuICB9XG5cbiAgcmVtb3ZlQ29udHJvbChjb250cm9sOiBDb250cm9sLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5yZW1vdmVDb250cm9sKGNvbnRyb2wpO1xuICB9XG5cbiAgZHJhd0ZlYXR1cmUoZmVhdHVyZTogRmVhdHVyZSwgc3R5bGU6IFN0eWxlLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5kcmF3RmVhdHVyZXMoW2ZlYXR1cmVdLCBzdHlsZSk7XG4gIH1cblxuICBjbGVhckRyYXdpbmdzKGZlYXR1cmVJZFByZWZpeDogc3RyaW5nLCBtYXBhSWQ/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYXBhID0gdGhpcy5nZXRNYXBhKG1hcGFJZCk7XG4gICAgbWFwYS5jbGVhckZlYXR1cmVzKGZlYXR1cmVJZFByZWZpeCk7XG4gIH1cblxuICAvLyBVdGlsaWRhZGVzXG4gIHByaXZhdGUgZ2V0TWFwYShtYXBhSWQ6IHN0cmluZyk6IFNJQ01hcCB7XG4gICAgaWYgKCFtYXBhSWQpIHtcbiAgICAgIG1hcGFJZCA9IHRoaXMuZGVmYXVsdDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWFwYXMuaGFzKG1hcGFJZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZXhpc3RlIFNJQ01hcCBjb24gZWwgaWQgcHJvcG9yY2lvbmFkbycpO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcGE6IFNJQ01hcCA9IHRoaXMubWFwYXMuZ2V0KG1hcGFJZCk7XG4gICAgaWYgKCFtYXBhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNlIHB1ZG8gcmVjdXBlcmFyIGVsIFNJQ01hcCcpO1xuICAgIH1cblxuICAgIHJldHVybiBtYXBhO1xuICB9XG59XG4iXX0=