@foblex/flow
Version:
An Angular library designed to simplify the creation and manipulation of dynamic flow. Provides components for flows, nodes, and connections, automating node manipulation and inter-node connections.
79 lines • 13.3 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { FExternalItemFinalizeRequest } from './f-external-item-finalize.request';
import { FExecutionRegister, FMediator } from '@foblex/mediator';
import { FComponentsStore } from '../../../f-storage';
import { FExternalItemDragHandler } from '../f-external-item.drag-handler';
import { FCreateNodeEvent } from '../f-create-node.event';
import { GetNormalizedElementRectRequest } from '../../../domain';
import { FDraggableDataContext, FDragHandlerResult, FNodeDropToGroupDragHandler } from '../../../f-draggable';
import { BrowserService } from '@foblex/platform';
import * as i0 from "@angular/core";
let FExternalItemFinalizeExecution = class FExternalItemFinalizeExecution {
_fResult = inject(FDragHandlerResult);
_fMediator = inject(FMediator);
_fComponentsStore = inject(FComponentsStore);
_fDraggableDataContext = inject(FDraggableDataContext);
_fBrowser = inject(BrowserService);
get _fHost() {
return this._fComponentsStore.fFlow.hostElement;
}
get _fCreateNode() {
return this._fComponentsStore.fDraggable.fCreateNode;
}
get _fDragHandler() {
return this._fDraggableDataContext.draggableItems[0];
}
handle(request) {
if (!this._isValid()) {
return;
}
const destinationNodeOrGroupId = this._getDestinationNodeOrGroupId();
this._emitEvent(this._getElementsFromPoint(request.event.getPosition()), destinationNodeOrGroupId, request.event.getPosition());
this._fDragHandler.onPointerUp();
this._fDraggableDataContext.draggableItems = [];
}
_isValid() {
return this._fDraggableDataContext.draggableItems.some((x) => x instanceof FExternalItemDragHandler);
}
_getDestinationNodeOrGroupId() {
const dropToGroupHandler = this._getDropToGroupHandler();
let result = dropToGroupHandler.fNodeWithRect?.node.fId;
dropToGroupHandler.onPointerUp?.();
return result;
}
_getDropToGroupHandler() {
const result = this._fDraggableDataContext.draggableItems
.find((x) => x instanceof FNodeDropToGroupDragHandler);
if (!result) {
throw new Error('NodeDragToParentDragHandler not found');
}
return result;
}
_getElementsFromPoint(position) {
return this._fBrowser.document.elementsFromPoint(position.x, position.y)
.filter(x => !x.closest('.f-external-item')
&& !x.closest('.f-external-item-preview'));
}
_emitEvent(elements, destinationNodeOrGroupId, eventPosition) {
if (this.isPointerInCanvasRect(elements)) {
this._fCreateNode.emit(new FCreateNodeEvent(this._getPreviewRect(), this._fResult.getData().fExternalItem.fData, destinationNodeOrGroupId, destinationNodeOrGroupId ? eventPosition : undefined));
}
}
isPointerInCanvasRect(elements) {
return elements.length ? this._fHost.contains(elements[0]) : false;
}
_getPreviewRect() {
return this._fMediator.execute(new GetNormalizedElementRectRequest(this._fResult.getData().preview));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FExternalItemFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FExternalItemFinalizeExecution });
};
FExternalItemFinalizeExecution = __decorate([
FExecutionRegister(FExternalItemFinalizeRequest)
], FExternalItemFinalizeExecution);
export { FExternalItemFinalizeExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FExternalItemFinalizeExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1leHRlcm5hbC1pdGVtLWZpbmFsaXplLmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1leHRlcm5hbC1pdGVtL2RvbWFpbi9maW5hbGl6ZS9mLWV4dGVybmFsLWl0ZW0tZmluYWxpemUuZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUVoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzVCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUt6QyxJQUFNLDhCQUE4QixHQUFwQyxNQUFNLDhCQUE4QjtJQUV4QixRQUFRLEdBQWlELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXBGLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0Msc0JBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdkQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVwRCxJQUFZLE1BQU07UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBTSxDQUFDLFdBQVcsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBWSxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVcsQ0FBQyxXQUFXLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQVksYUFBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUE2QixDQUFDO0lBQ25GLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBcUM7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUVyRSxJQUFJLENBQUMsVUFBVSxDQUNiLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ3ZELHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQ3RELENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFTyxRQUFRO1FBQ2QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDcEQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSx3QkFBd0IsQ0FDN0MsQ0FBQztJQUNKLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN4RCxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1FBQ25DLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWM7YUFDdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFlBQVksMkJBQTJCLENBQUMsQ0FBQTtRQUN4RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxRQUFnQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNyRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7ZUFDdEMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQWtCLENBQUM7SUFDbEUsQ0FBQztJQUVPLFVBQVUsQ0FBQyxRQUF1QixFQUFFLHdCQUE0QyxFQUFFLGFBQXFCO1FBQzdHLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3BCLElBQUksZ0JBQWdCLENBQ2xCLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQ25FLHdCQUF3QixFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDL0UsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxRQUF1QjtRQUNuRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckUsQ0FBQztJQUVPLGVBQWU7UUFDckIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBUSxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDO3dHQWxGVSw4QkFBOEI7NEdBQTlCLDhCQUE4Qjs7QUFBOUIsOEJBQThCO0lBRDFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDO0dBQ3BDLDhCQUE4QixDQW1GMUM7OzRGQW5GWSw4QkFBOEI7a0JBRjFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RkV4dGVybmFsSXRlbUZpbmFsaXplUmVxdWVzdH0gZnJvbSAnLi9mLWV4dGVybmFsLWl0ZW0tZmluYWxpemUucmVxdWVzdCc7XG5pbXBvcnQge0lQb2ludCwgSVJlY3R9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHtGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbn0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQge0ZDb21wb25lbnRzU3RvcmV9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQge0ZFeHRlcm5hbEl0ZW1EcmFnSGFuZGxlcn0gZnJvbSAnLi4vZi1leHRlcm5hbC1pdGVtLmRyYWctaGFuZGxlcic7XG5pbXBvcnQge0ZDcmVhdGVOb2RlRXZlbnR9IGZyb20gJy4uL2YtY3JlYXRlLW5vZGUuZXZlbnQnO1xuaW1wb3J0IHtHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0fSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHtcbiAgRkRyYWdnYWJsZURhdGFDb250ZXh0LFxuICBGRHJhZ0hhbmRsZXJSZXN1bHQsXG4gIEZOb2RlRHJvcFRvR3JvdXBEcmFnSGFuZGxlclxufSBmcm9tICcuLi8uLi8uLi9mLWRyYWdnYWJsZSc7XG5pbXBvcnQge0Jyb3dzZXJTZXJ2aWNlfSBmcm9tICdAZm9ibGV4L3BsYXRmb3JtJztcbmltcG9ydCB7SUZFeHRlcm5hbEl0ZW1EcmFnUmVzdWx0fSBmcm9tICcuLi9pLWYtZXh0ZXJuYWwtaXRlbS1kcmFnLXJlc3VsdCc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoRkV4dGVybmFsSXRlbUZpbmFsaXplUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBGRXh0ZXJuYWxJdGVtRmluYWxpemVFeGVjdXRpb24gaW1wbGVtZW50cyBJRXhlY3V0aW9uPEZFeHRlcm5hbEl0ZW1GaW5hbGl6ZVJlcXVlc3QsIHZvaWQ+IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mUmVzdWx0OiBGRHJhZ0hhbmRsZXJSZXN1bHQ8SUZFeHRlcm5hbEl0ZW1EcmFnUmVzdWx0PiA9IGluamVjdChGRHJhZ0hhbmRsZXJSZXN1bHQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mQ29tcG9uZW50c1N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mRHJhZ2dhYmxlRGF0YUNvbnRleHQgPSBpbmplY3QoRkRyYWdnYWJsZURhdGFDb250ZXh0KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZkJyb3dzZXIgPSBpbmplY3QoQnJvd3NlclNlcnZpY2UpO1xuXG4gIHByaXZhdGUgZ2V0IF9mSG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkZsb3chLmhvc3RFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2ZDcmVhdGVOb2RlKCk6IEV2ZW50RW1pdHRlcjxGQ3JlYXRlTm9kZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkRyYWdnYWJsZSEuZkNyZWF0ZU5vZGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZkRyYWdIYW5kbGVyKCk6IEZFeHRlcm5hbEl0ZW1EcmFnSGFuZGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZEcmFnZ2FibGVEYXRhQ29udGV4dC5kcmFnZ2FibGVJdGVtc1swXSBhcyBGRXh0ZXJuYWxJdGVtRHJhZ0hhbmRsZXI7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IEZFeHRlcm5hbEl0ZW1GaW5hbGl6ZVJlcXVlc3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVzdGluYXRpb25Ob2RlT3JHcm91cElkID0gdGhpcy5fZ2V0RGVzdGluYXRpb25Ob2RlT3JHcm91cElkKCk7XG5cbiAgICB0aGlzLl9lbWl0RXZlbnQoXG4gICAgICB0aGlzLl9nZXRFbGVtZW50c0Zyb21Qb2ludChyZXF1ZXN0LmV2ZW50LmdldFBvc2l0aW9uKCkpLFxuICAgICAgZGVzdGluYXRpb25Ob2RlT3JHcm91cElkLCByZXF1ZXN0LmV2ZW50LmdldFBvc2l0aW9uKClcbiAgICApO1xuXG4gICAgdGhpcy5fZkRyYWdIYW5kbGVyLm9uUG9pbnRlclVwKCk7XG4gICAgdGhpcy5fZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zID0gW107XG4gIH1cblxuICBwcml2YXRlIF9pc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZHJhZ2dhYmxlSXRlbXMuc29tZShcbiAgICAgICh4KSA9PiB4IGluc3RhbmNlb2YgRkV4dGVybmFsSXRlbURyYWdIYW5kbGVyXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc3RpbmF0aW9uTm9kZU9yR3JvdXBJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRyb3BUb0dyb3VwSGFuZGxlciA9IHRoaXMuX2dldERyb3BUb0dyb3VwSGFuZGxlcigpO1xuICAgIGxldCByZXN1bHQgPSBkcm9wVG9Hcm91cEhhbmRsZXIuZk5vZGVXaXRoUmVjdD8ubm9kZS5mSWQ7XG4gICAgZHJvcFRvR3JvdXBIYW5kbGVyLm9uUG9pbnRlclVwPy4oKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RHJvcFRvR3JvdXBIYW5kbGVyKCk6IEZOb2RlRHJvcFRvR3JvdXBEcmFnSGFuZGxlciB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zXG4gICAgICAuZmluZCgoeCkgPT4geCBpbnN0YW5jZW9mIEZOb2RlRHJvcFRvR3JvdXBEcmFnSGFuZGxlcilcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlRHJhZ1RvUGFyZW50RHJhZ0hhbmRsZXIgbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXRFbGVtZW50c0Zyb21Qb2ludChwb3NpdGlvbjogSVBvaW50KTogSFRNTEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZCcm93c2VyLmRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KHBvc2l0aW9uLngsIHBvc2l0aW9uLnkpXG4gICAgICAuZmlsdGVyKHggPT4gIXguY2xvc2VzdCgnLmYtZXh0ZXJuYWwtaXRlbScpXG4gICAgICAgICYmICF4LmNsb3Nlc3QoJy5mLWV4dGVybmFsLWl0ZW0tcHJldmlldycpKSBhcyBIVE1MRWxlbWVudFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdEV2ZW50KGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdLCBkZXN0aW5hdGlvbk5vZGVPckdyb3VwSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgZXZlbnRQb3NpdGlvbjogSVBvaW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNQb2ludGVySW5DYW52YXNSZWN0KGVsZW1lbnRzKSkge1xuICAgICAgdGhpcy5fZkNyZWF0ZU5vZGUuZW1pdChcbiAgICAgICAgbmV3IEZDcmVhdGVOb2RlRXZlbnQoXG4gICAgICAgICAgdGhpcy5fZ2V0UHJldmlld1JlY3QoKSwgdGhpcy5fZlJlc3VsdC5nZXREYXRhKCkuZkV4dGVybmFsSXRlbS5mRGF0YSxcbiAgICAgICAgICBkZXN0aW5hdGlvbk5vZGVPckdyb3VwSWQsIGRlc3RpbmF0aW9uTm9kZU9yR3JvdXBJZCA/IGV2ZW50UG9zaXRpb24gOiB1bmRlZmluZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUG9pbnRlckluQ2FudmFzUmVjdChlbGVtZW50czogSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGggPyB0aGlzLl9mSG9zdC5jb250YWlucyhlbGVtZW50c1swXSkgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFByZXZpZXdSZWN0KCk6IElSZWN0IHtcbiAgICByZXR1cm4gdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGU8SVJlY3Q+KG5ldyBHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0KHRoaXMuX2ZSZXN1bHQuZ2V0RGF0YSgpLnByZXZpZXcpKTtcbiAgfVxufVxuIl19