ng-agm-core-lib
Version:
Angular components for Google Maps
94 lines • 14.6 kB
JavaScript
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "./../google-maps-api-wrapper";
export class MarkerManager {
_mapsWrapper;
_zone;
_markers = new Map();
constructor(_mapsWrapper, _zone) {
this._mapsWrapper = _mapsWrapper;
this._zone = _zone;
}
async convertAnimation(uiAnim) {
if (uiAnim === null) {
return null;
}
else {
return this._mapsWrapper.getNativeMap().then(() => google.maps.Animation[uiAnim]);
}
}
deleteMarker(markerDirective) {
const markerPromise = this._markers.get(markerDirective);
if (markerPromise == null) {
// marker already deleted
return Promise.resolve();
}
return markerPromise.then((marker) => {
return this._zone.run(() => {
marker.setMap(null);
this._markers.delete(markerDirective);
});
});
}
updateMarkerPosition(marker) {
return this._markers.get(marker).then((m) => m.setPosition({ lat: marker.latitude, lng: marker.longitude }));
}
updateTitle(marker) {
return this._markers.get(marker).then((m) => m.setTitle(marker.title));
}
updateLabel(marker) {
return this._markers.get(marker).then((m) => { m.setLabel(marker.label); });
}
updateDraggable(marker) {
return this._markers.get(marker).then((m) => m.setDraggable(marker.draggable));
}
updateIcon(marker) {
return this._markers.get(marker).then((m) => m.setIcon(marker.iconUrl));
}
updateOpacity(marker) {
return this._markers.get(marker).then((m) => m.setOpacity(marker.opacity));
}
updateVisible(marker) {
return this._markers.get(marker).then((m) => m.setVisible(marker.visible));
}
updateZIndex(marker) {
return this._markers.get(marker).then((m) => m.setZIndex(marker.zIndex));
}
updateClickable(marker) {
return this._markers.get(marker).then((m) => m.setClickable(marker.clickable));
}
async updateAnimation(marker) {
const m = await this._markers.get(marker);
m.setAnimation(await this.convertAnimation(marker.animation));
}
addMarker(marker) {
const markerPromise = new Promise(async (resolve) => this._mapsWrapper.createMarker({
position: { lat: marker.latitude, lng: marker.longitude },
label: marker.label,
draggable: marker.draggable,
icon: marker.iconUrl,
opacity: marker.opacity,
visible: marker.visible,
zIndex: marker.zIndex,
title: marker.title,
clickable: marker.clickable,
animation: await this.convertAnimation(marker.animation),
}).then(resolve));
this._markers.set(marker, markerPromise);
}
getNativeMarker(marker) {
return this._markers.get(marker);
}
createEventObservable(eventName, marker) {
return new Observable(observer => {
this._markers.get(marker).then(m => m.addListener(eventName, e => this._zone.run(() => observer.next(e))));
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkerManager, deps: [{ token: i1.GoogleMapsAPIWrapper }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkerManager });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkerManager, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.GoogleMapsAPIWrapper }, { type: i0.NgZone }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3NyYy9saWIvc2VydmljZXMvbWFuYWdlcnMvbWFya2VyLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFPbEMsTUFBTSxPQUFPLGFBQWE7SUFJRjtJQUE4QztJQUgxRCxRQUFRLEdBQ2QsSUFBSSxHQUFHLEVBQTBDLENBQUM7SUFFdEQsWUFBc0IsWUFBa0MsRUFBWSxLQUFhO1FBQTNELGlCQUFZLEdBQVosWUFBWSxDQUFzQjtRQUFZLFVBQUssR0FBTCxLQUFLLENBQVE7SUFBRyxDQUFDO0lBRXJGLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFpRDtRQUN0RSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLGVBQTBCO1FBQ3JDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELElBQUksYUFBYSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzFCLHlCQUF5QjtZQUN6QixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBMEIsRUFBRSxFQUFFO1lBQ3ZELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUN6QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWlCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUNqQyxDQUFDLENBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWlCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWlCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWlCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBcUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFpQjtRQUNyQyxNQUFNLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFpQjtRQUN6QixNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sQ0FBcUIsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ3ZFLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO1lBQzVCLFFBQVEsRUFBRSxFQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsU0FBUyxFQUFDO1lBQ3ZELEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3BCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87WUFDdkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7WUFDM0IsU0FBUyxFQUFFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7U0FDekQsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWlCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELHFCQUFxQixDQUNqQixTQUF1RixFQUN2RixNQUFpQjtRQUNuQixPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqQyxDQUFDLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN0RSxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3dHQW5HVSxhQUFhOzRHQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWdtTWFya2VyIH0gZnJvbSAnLi8uLi8uLi9kaXJlY3RpdmVzL21hcmtlcic7XG5cbmltcG9ydCB7IEdvb2dsZU1hcHNBUElXcmFwcGVyIH0gZnJvbSAnLi8uLi9nb29nbGUtbWFwcy1hcGktd3JhcHBlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXJrZXJNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIF9tYXJrZXJzOiBNYXA8QWdtTWFya2VyLCBQcm9taXNlPGdvb2dsZS5tYXBzLk1hcmtlcj4+ID1cbiAgICAgIG5ldyBNYXA8QWdtTWFya2VyLCBQcm9taXNlPGdvb2dsZS5tYXBzLk1hcmtlcj4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9tYXBzV3JhcHBlcjogR29vZ2xlTWFwc0FQSVdyYXBwZXIsIHByb3RlY3RlZCBfem9uZTogTmdab25lKSB7fVxuXG4gIGFzeW5jIGNvbnZlcnRBbmltYXRpb24odWlBbmltOiBrZXlvZiB0eXBlb2YgZ29vZ2xlLm1hcHMuQW5pbWF0aW9uIHwgbnVsbCkge1xuICAgIGlmICh1aUFuaW0gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fbWFwc1dyYXBwZXIuZ2V0TmF0aXZlTWFwKCkudGhlbigoKSA9PiBnb29nbGUubWFwcy5BbmltYXRpb25bdWlBbmltXSk7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlTWFya2VyKG1hcmtlckRpcmVjdGl2ZTogQWdtTWFya2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbWFya2VyUHJvbWlzZSA9IHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlckRpcmVjdGl2ZSk7XG4gICAgaWYgKG1hcmtlclByb21pc2UgPT0gbnVsbCkge1xuICAgICAgLy8gbWFya2VyIGFscmVhZHkgZGVsZXRlZFxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgICByZXR1cm4gbWFya2VyUHJvbWlzZS50aGVuKChtYXJrZXI6IGdvb2dsZS5tYXBzLk1hcmtlcikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgbWFya2VyLnNldE1hcChudWxsKTtcbiAgICAgICAgdGhpcy5fbWFya2Vycy5kZWxldGUobWFya2VyRGlyZWN0aXZlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTWFya2VyUG9zaXRpb24obWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKS50aGVuKFxuICAgICAgICAobTogZ29vZ2xlLm1hcHMuTWFya2VyKSA9PiBtLnNldFBvc2l0aW9uKHtsYXQ6IG1hcmtlci5sYXRpdHVkZSwgbG5nOiBtYXJrZXIubG9uZ2l0dWRlfSkpO1xuICB9XG5cbiAgdXBkYXRlVGl0bGUobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKS50aGVuKChtOiBnb29nbGUubWFwcy5NYXJrZXIpID0+IG0uc2V0VGl0bGUobWFya2VyLnRpdGxlKSk7XG4gIH1cblxuICB1cGRhdGVMYWJlbChtYXJrZXI6IEFnbU1hcmtlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpLnRoZW4oKG06IGdvb2dsZS5tYXBzLk1hcmtlcikgPT4geyBtLnNldExhYmVsKG1hcmtlci5sYWJlbCk7IH0pO1xuICB9XG5cbiAgdXBkYXRlRHJhZ2dhYmxlKG1hcmtlcjogQWdtTWFya2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcikudGhlbigobTogZ29vZ2xlLm1hcHMuTWFya2VyKSA9PiBtLnNldERyYWdnYWJsZShtYXJrZXIuZHJhZ2dhYmxlKSk7XG4gIH1cblxuICB1cGRhdGVJY29uKG1hcmtlcjogQWdtTWFya2VyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcikudGhlbigobTogZ29vZ2xlLm1hcHMuTWFya2VyKSA9PiBtLnNldEljb24obWFya2VyLmljb25VcmwpKTtcbiAgfVxuXG4gIHVwZGF0ZU9wYWNpdHkobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKS50aGVuKChtOiBnb29nbGUubWFwcy5NYXJrZXIpID0+IG0uc2V0T3BhY2l0eShtYXJrZXIub3BhY2l0eSkpO1xuICB9XG5cbiAgdXBkYXRlVmlzaWJsZShtYXJrZXI6IEFnbU1hcmtlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpLnRoZW4oKG06IGdvb2dsZS5tYXBzLk1hcmtlcikgPT4gbS5zZXRWaXNpYmxlKG1hcmtlci52aXNpYmxlKSk7XG4gIH1cblxuICB1cGRhdGVaSW5kZXgobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2Vycy5nZXQobWFya2VyKS50aGVuKChtOiBnb29nbGUubWFwcy5NYXJrZXIpID0+IG0uc2V0WkluZGV4KG1hcmtlci56SW5kZXgpKTtcbiAgfVxuXG4gIHVwZGF0ZUNsaWNrYWJsZShtYXJrZXI6IEFnbU1hcmtlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpLnRoZW4oKG06IGdvb2dsZS5tYXBzLk1hcmtlcikgPT4gbS5zZXRDbGlja2FibGUobWFya2VyLmNsaWNrYWJsZSkpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQW5pbWF0aW9uKG1hcmtlcjogQWdtTWFya2VyKSB7XG4gICAgY29uc3QgbSA9IGF3YWl0IHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcik7XG4gICAgbS5zZXRBbmltYXRpb24oYXdhaXQgdGhpcy5jb252ZXJ0QW5pbWF0aW9uKG1hcmtlci5hbmltYXRpb24pKTtcbiAgfVxuXG4gIGFkZE1hcmtlcihtYXJrZXI6IEFnbU1hcmtlcikge1xuICAgIGNvbnN0IG1hcmtlclByb21pc2UgPSBuZXcgUHJvbWlzZTxnb29nbGUubWFwcy5NYXJrZXI+KGFzeW5jIChyZXNvbHZlKSA9PlxuICAgICB0aGlzLl9tYXBzV3JhcHBlci5jcmVhdGVNYXJrZXIoe1xuICAgICAgICBwb3NpdGlvbjoge2xhdDogbWFya2VyLmxhdGl0dWRlLCBsbmc6IG1hcmtlci5sb25naXR1ZGV9LFxuICAgICAgICBsYWJlbDogbWFya2VyLmxhYmVsLFxuICAgICAgICBkcmFnZ2FibGU6IG1hcmtlci5kcmFnZ2FibGUsXG4gICAgICAgIGljb246IG1hcmtlci5pY29uVXJsLFxuICAgICAgICBvcGFjaXR5OiBtYXJrZXIub3BhY2l0eSxcbiAgICAgICAgdmlzaWJsZTogbWFya2VyLnZpc2libGUsXG4gICAgICAgIHpJbmRleDogbWFya2VyLnpJbmRleCxcbiAgICAgICAgdGl0bGU6IG1hcmtlci50aXRsZSxcbiAgICAgICAgY2xpY2thYmxlOiBtYXJrZXIuY2xpY2thYmxlLFxuICAgICAgICBhbmltYXRpb246IGF3YWl0IHRoaXMuY29udmVydEFuaW1hdGlvbihtYXJrZXIuYW5pbWF0aW9uKSxcbiAgICAgIH0pLnRoZW4ocmVzb2x2ZSkpO1xuICAgIHRoaXMuX21hcmtlcnMuc2V0KG1hcmtlciwgbWFya2VyUHJvbWlzZSk7XG4gIH1cblxuICBnZXROYXRpdmVNYXJrZXIobWFya2VyOiBBZ21NYXJrZXIpOiBQcm9taXNlPGdvb2dsZS5tYXBzLk1hcmtlcj4ge1xuICAgIHJldHVybiB0aGlzLl9tYXJrZXJzLmdldChtYXJrZXIpO1xuICB9XG5cbiAgY3JlYXRlRXZlbnRPYnNlcnZhYmxlPFQgZXh0ZW5kcyAoZ29vZ2xlLm1hcHMuTW91c2VFdmVudCB8IHZvaWQpPihcbiAgICAgIGV2ZW50TmFtZTogZ29vZ2xlLm1hcHMuTWFya2VyTW91c2VFdmVudE5hbWVzIHwgZ29vZ2xlLm1hcHMuTWFya2VyQ2hhbmdlT3B0aW9uRXZlbnROYW1lcyxcbiAgICAgIG1hcmtlcjogQWdtTWFya2VyKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIHRoaXMuX21hcmtlcnMuZ2V0KG1hcmtlcikudGhlbihtID0+XG4gICAgICAgIG0uYWRkTGlzdGVuZXIoZXZlbnROYW1lLCBlID0+IHRoaXMuX3pvbmUucnVuKCgpID0+IG9ic2VydmVyLm5leHQoZSkpKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuIl19