UNPKG

ngx-moveable

Version:

An Angular Component that create Moveable, Draggable, Resizable, Scalable, Rotatable, Warpable, Pinchable, Groupable, Snappable.

386 lines 28.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, EventEmitter, Output } from '@angular/core'; import Moveable, { PROPERTIES, EVENTS, } from 'moveable'; import { NgxMoveableInterface } from './ngx-moveable.interface'; // @dynamic var NgxMoveableComponent = /** @class */ (function (_super) { tslib_1.__extends(NgxMoveableComponent, _super); function NgxMoveableComponent() { var _this = _super.call(this) || this; EVENTS.forEach((/** * @param {?} name * @return {?} */ function (name) { _this[name] = new EventEmitter(); })); return _this; } /** * @return {?} */ NgxMoveableComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var options = {}; /** @type {?} */ var events = {}; PROPERTIES.forEach((/** * @param {?} name * @return {?} */ function (name) { ((/** @type {?} */ (options)))[name] = _this[name]; })); EVENTS.forEach((/** * @param {?} name * @return {?} */ function (name) { events[name] = (/** * @param {?} e * @return {?} */ function (e) { _this[name].emit(e); }); })); this.moveable = new Moveable(this.container || document.body, options); this.moveable.on(events); }; /** * @param {?} changes * @return {?} */ NgxMoveableComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { /** @type {?} */ var moveable = this.moveable; if (!moveable) { return; } for (var name_1 in changes) { var _a = changes[name_1], previousValue = _a.previousValue, currentValue = _a.currentValue; if (previousValue === currentValue) { continue; } moveable[name_1] = currentValue; } }; /** * @return {?} */ NgxMoveableComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.moveable.destroy(); }; NgxMoveableComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-moveable', template: '' }] } ]; /** @nocollapse */ NgxMoveableComponent.ctorParameters = function () { return []; }; NgxMoveableComponent.propDecorators = { draggable: [{ type: Input }], resizable: [{ type: Input }], scalable: [{ type: Input }], rotatable: [{ type: Input }], warpable: [{ type: Input }], pinchable: [{ type: Input }], snappable: [{ type: Input }], origin: [{ type: Input }], target: [{ type: Input }], container: [{ type: Input }], throttleDrag: [{ type: Input }], throttleDragRotate: [{ type: Input }], throttleResize: [{ type: Input }], throttleScale: [{ type: Input }], throttleRotate: [{ type: Input }], keepRatio: [{ type: Input }], edge: [{ type: Input }], pinchThreshold: [{ type: Input }], snapCenter: [{ type: Input }], snapVertical: [{ type: Input }], snapElement: [{ type: Input }], snapHorizontal: [{ type: Input }], snapThreshold: [{ type: Input }], horizontalGuidelines: [{ type: Input }], verticalGuidelines: [{ type: Input }], elementGuidelines: [{ type: Input }], bounds: [{ type: Input }], dragArea: [{ type: Input }], rotationPosition: [{ type: Input }], baseDirection: [{ type: Input }], defaultGroupRotate: [{ type: Input }], ables: [{ type: Input }], className: [{ type: Input }], renderDirections: [{ type: Input }], scrollable: [{ type: Input }], scrollContainer: [{ type: Input }], scrollThreshold: [{ type: Input }], getScrollPosition: [{ type: Input }], rootContainer: [{ type: Input }], zoom: [{ type: Input }], transformOrigin: [{ type: Input }], snapDigit: [{ type: Input }], isDisplaySnapDigit: [{ type: Input }], innerBounds: [{ type: Input }], triggerAblesSimultaneously: [{ type: Input }], snapGap: [{ type: Input }], pinchOutside: [{ type: Input }], padding: [{ type: Input }], snapDistFormat: [{ type: Input }], dragTarget: [{ type: Input }], dragStart: [{ type: Output }], drag: [{ type: Output }], dragEnd: [{ type: Output }], dragGroupStart: [{ type: Output }], dragGroup: [{ type: Output }], dragGroupEnd: [{ type: Output }], resizeStart: [{ type: Output }], resize: [{ type: Output }], resizeEnd: [{ type: Output }], resizeGroupStart: [{ type: Output }], resizeGroup: [{ type: Output }], resizeGroupEnd: [{ type: Output }], scaleStart: [{ type: Output }], scale: [{ type: Output }], scaleEnd: [{ type: Output }], scaleGroupStart: [{ type: Output }], scaleGroup: [{ type: Output }], scaleGroupEnd: [{ type: Output }], rotateStart: [{ type: Output }], rotate: [{ type: Output }], rotateEnd: [{ type: Output }], rotateGroupStart: [{ type: Output }], rotateGroup: [{ type: Output }], rotateGroupEnd: [{ type: Output }], warpStart: [{ type: Output }], warp: [{ type: Output }], warpEnd: [{ type: Output }], pinchStart: [{ type: Output }], pinch: [{ type: Output }], pinchEnd: [{ type: Output }], pinchGroupStart: [{ type: Output }], pinchGroup: [{ type: Output }], pinchGroupEnd: [{ type: Output }], click: [{ type: Output }], clickGroup: [{ type: Output }], renderStart: [{ type: Output }], render: [{ type: Output }], renderEnd: [{ type: Output }], renderGroupStart: [{ type: Output }], renderGroup: [{ type: Output }], renderGroupEnd: [{ type: Output }], scroll: [{ type: Output }], scrollGroup: [{ type: Output }], snap: [{ type: Output }] }; return NgxMoveableComponent; }(NgxMoveableInterface)); export { NgxMoveableComponent }; if (false) { /** @type {?} */ NgxMoveableComponent.prototype.draggable; /** @type {?} */ NgxMoveableComponent.prototype.resizable; /** @type {?} */ NgxMoveableComponent.prototype.scalable; /** @type {?} */ NgxMoveableComponent.prototype.rotatable; /** @type {?} */ NgxMoveableComponent.prototype.warpable; /** @type {?} */ NgxMoveableComponent.prototype.pinchable; /** @type {?} */ NgxMoveableComponent.prototype.snappable; /** @type {?} */ NgxMoveableComponent.prototype.origin; /** @type {?} */ NgxMoveableComponent.prototype.target; /** @type {?} */ NgxMoveableComponent.prototype.container; /** @type {?} */ NgxMoveableComponent.prototype.throttleDrag; /** @type {?} */ NgxMoveableComponent.prototype.throttleDragRotate; /** @type {?} */ NgxMoveableComponent.prototype.throttleResize; /** @type {?} */ NgxMoveableComponent.prototype.throttleScale; /** @type {?} */ NgxMoveableComponent.prototype.throttleRotate; /** @type {?} */ NgxMoveableComponent.prototype.keepRatio; /** @type {?} */ NgxMoveableComponent.prototype.edge; /** @type {?} */ NgxMoveableComponent.prototype.pinchThreshold; /** @type {?} */ NgxMoveableComponent.prototype.snapCenter; /** @type {?} */ NgxMoveableComponent.prototype.snapVertical; /** @type {?} */ NgxMoveableComponent.prototype.snapElement; /** @type {?} */ NgxMoveableComponent.prototype.snapHorizontal; /** @type {?} */ NgxMoveableComponent.prototype.snapThreshold; /** @type {?} */ NgxMoveableComponent.prototype.horizontalGuidelines; /** @type {?} */ NgxMoveableComponent.prototype.verticalGuidelines; /** @type {?} */ NgxMoveableComponent.prototype.elementGuidelines; /** @type {?} */ NgxMoveableComponent.prototype.bounds; /** @type {?} */ NgxMoveableComponent.prototype.dragArea; /** @type {?} */ NgxMoveableComponent.prototype.rotationPosition; /** @type {?} */ NgxMoveableComponent.prototype.baseDirection; /** @type {?} */ NgxMoveableComponent.prototype.defaultGroupRotate; /** @type {?} */ NgxMoveableComponent.prototype.ables; /** @type {?} */ NgxMoveableComponent.prototype.className; /** @type {?} */ NgxMoveableComponent.prototype.renderDirections; /** @type {?} */ NgxMoveableComponent.prototype.scrollable; /** @type {?} */ NgxMoveableComponent.prototype.scrollContainer; /** @type {?} */ NgxMoveableComponent.prototype.scrollThreshold; /** @type {?} */ NgxMoveableComponent.prototype.getScrollPosition; /** @type {?} */ NgxMoveableComponent.prototype.rootContainer; /** @type {?} */ NgxMoveableComponent.prototype.zoom; /** @type {?} */ NgxMoveableComponent.prototype.transformOrigin; /** @type {?} */ NgxMoveableComponent.prototype.snapDigit; /** @type {?} */ NgxMoveableComponent.prototype.isDisplaySnapDigit; /** @type {?} */ NgxMoveableComponent.prototype.innerBounds; /** @type {?} */ NgxMoveableComponent.prototype.triggerAblesSimultaneously; /** @type {?} */ NgxMoveableComponent.prototype.snapGap; /** @type {?} */ NgxMoveableComponent.prototype.pinchOutside; /** @type {?} */ NgxMoveableComponent.prototype.padding; /** @type {?} */ NgxMoveableComponent.prototype.snapDistFormat; /** @type {?} */ NgxMoveableComponent.prototype.dragTarget; /** @type {?} */ NgxMoveableComponent.prototype.dragStart; /** @type {?} */ NgxMoveableComponent.prototype.drag; /** @type {?} */ NgxMoveableComponent.prototype.dragEnd; /** @type {?} */ NgxMoveableComponent.prototype.dragGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.dragGroup; /** @type {?} */ NgxMoveableComponent.prototype.dragGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.resizeStart; /** @type {?} */ NgxMoveableComponent.prototype.resize; /** @type {?} */ NgxMoveableComponent.prototype.resizeEnd; /** @type {?} */ NgxMoveableComponent.prototype.resizeGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.resizeGroup; /** @type {?} */ NgxMoveableComponent.prototype.resizeGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.scaleStart; /** @type {?} */ NgxMoveableComponent.prototype.scale; /** @type {?} */ NgxMoveableComponent.prototype.scaleEnd; /** @type {?} */ NgxMoveableComponent.prototype.scaleGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.scaleGroup; /** @type {?} */ NgxMoveableComponent.prototype.scaleGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.rotateStart; /** @type {?} */ NgxMoveableComponent.prototype.rotate; /** @type {?} */ NgxMoveableComponent.prototype.rotateEnd; /** @type {?} */ NgxMoveableComponent.prototype.rotateGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.rotateGroup; /** @type {?} */ NgxMoveableComponent.prototype.rotateGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.warpStart; /** @type {?} */ NgxMoveableComponent.prototype.warp; /** @type {?} */ NgxMoveableComponent.prototype.warpEnd; /** @type {?} */ NgxMoveableComponent.prototype.pinchStart; /** @type {?} */ NgxMoveableComponent.prototype.pinch; /** @type {?} */ NgxMoveableComponent.prototype.pinchEnd; /** @type {?} */ NgxMoveableComponent.prototype.pinchGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.pinchGroup; /** @type {?} */ NgxMoveableComponent.prototype.pinchGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.click; /** @type {?} */ NgxMoveableComponent.prototype.clickGroup; /** @type {?} */ NgxMoveableComponent.prototype.renderStart; /** @type {?} */ NgxMoveableComponent.prototype.render; /** @type {?} */ NgxMoveableComponent.prototype.renderEnd; /** @type {?} */ NgxMoveableComponent.prototype.renderGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.renderGroup; /** @type {?} */ NgxMoveableComponent.prototype.renderGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.scroll; /** @type {?} */ NgxMoveableComponent.prototype.scrollGroup; /** @type {?} */ NgxMoveableComponent.prototype.snap; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1vdmVhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb3ZlYWJsZS8iLCJzb3VyY2VzIjpbIm5neC1tb3ZlYWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLEtBQUssRUFDa0IsWUFBWSxFQUFFLE1BQU0sRUFDdkQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxRQUFRLEVBQUUsRUFDZixVQUFVLEVBQUUsTUFBTSxHQUVuQixNQUFNLFVBQVUsQ0FBQztBQUlsQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFJaEU7SUFLVSxnREFBb0I7SUErRzVCO1FBQUEsWUFDRSxpQkFBTyxTQUlSO1FBSEMsTUFBTSxDQUFDLE9BQU87Ozs7UUFBQyxVQUFBLElBQUk7WUFDakIsS0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdkMsQ0FBQyxFQUFDLENBQUM7O0lBQ0wsQ0FBQzs7OztJQUNELHVDQUFROzs7SUFBUjtRQUFBLGlCQWVDOztZQWRPLE9BQU8sR0FBb0IsRUFBRTs7WUFDN0IsTUFBTSxHQUFpQixFQUFFO1FBRS9CLFVBQVUsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQSxJQUFJO1lBQ3JCLENBQUMsbUJBQUEsT0FBTyxFQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxFQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsSUFBSTtZQUNqQixNQUFNLENBQUMsSUFBSSxDQUFDOzs7O1lBQUcsVUFBQSxDQUFDO2dCQUNkLEtBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFBLENBQUM7UUFDSixDQUFDLEVBQUMsQ0FBQztRQUVILElBQUks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QUFpRjs7SUFFakYseUNBQXVFOztJQUN2RSxvQ0FBNkQ7O0lBQzdELHVDQUFtRTs7SUFFbkUsMENBQXlFOztJQUN6RSxxQ0FBK0Q7O0lBQy9ELHdDQUFxRTs7SUFDckUsK0NBQW1GOztJQUNuRiwwQ0FBeUU7O0lBQ3pFLDZDQUErRTs7SUFFL0UscUNBQStEOztJQUMvRCwwQ0FBeUU7O0lBRXpFLDJDQUEyRTs7SUFDM0Usc0NBQWlFOztJQUNqRSx5Q0FBdUU7O0lBQ3ZFLGdEQUFxRjs7SUFDckYsMkNBQTJFOztJQUMzRSw4Q0FBaUY7O0lBRWpGLHNDQUFpRDs7SUFDakQsMkNBQTJEOztJQUUzRCxvQ0FBNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBNb3ZlYWJsZSwge1xuICBQUk9QRVJUSUVTLCBFVkVOVFMsIE1vdmVhYmxlT3B0aW9ucyxcbiAgT25TY3JvbGxHcm91cCwgT25TY3JvbGwsIE1vdmVhYmxlRXZlbnRzLCBPblNuYXAsXG59IGZyb20gJ21vdmVhYmxlJztcbmltcG9ydCB7IElPYmplY3QgfSBmcm9tICdAZGF5YnJ1c2gvdXRpbHMnO1xuaW1wb3J0IHsgTmd4TW92ZWFibGVFdmVudHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFibGUgfSBmcm9tICdtb3ZlYWJsZSc7XG5pbXBvcnQgeyBOZ3hNb3ZlYWJsZUludGVyZmFjZSB9IGZyb20gJy4vbmd4LW1vdmVhYmxlLmludGVyZmFjZSc7XG5cblxuLy8gQGR5bmFtaWNcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1tb3ZlYWJsZScsXG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4TW92ZWFibGVDb21wb25lbnRcbiAgZXh0ZW5kcyBOZ3hNb3ZlYWJsZUludGVyZmFjZVxuICBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMsIFJlcXVpcmVkPE1vdmVhYmxlT3B0aW9ucz4sIE5neE1vdmVhYmxlRXZlbnRzIHtcbiAgQElucHV0KCkgcHVibGljIGRyYWdnYWJsZSE6IE1vdmVhYmxlT3B0aW9uc1snZHJhZ2dhYmxlJ107XG4gIEBJbnB1dCgpIHB1YmxpYyByZXNpemFibGUhOiBNb3ZlYWJsZU9wdGlvbnNbJ3Jlc2l6YWJsZSddO1xuICBASW5wdXQoKSBwdWJsaWMgc2NhbGFibGUhOiBNb3ZlYWJsZU9wdGlvbnNbJ3NjYWxhYmxlJ107XG4gIEBJbnB1dCgpIHB1YmxpYyByb3RhdGFibGUhOiBNb3ZlYWJsZU9wdGlvbnNbJ3JvdGF0YWJsZSddO1xuICBASW5wdXQoKSBwdWJsaWMgd2FycGFibGUhOiBNb3ZlYWJsZU9wdGlvbnNbJ3dhcnBhYmxlJ107XG4gIEBJbnB1dCgpIHB1YmxpYyBwaW5jaGFibGUhOiBib29sZWFuIHwgQXJyYXk8J3JvdGF0YWJsZScgfCAncmVzaXphYmxlJyB8ICdzY2FsYWJsZSc+O1xuICBASW5wdXQoKSBwdWJsaWMgc25hcHBhYmxlITogYm9vbGVhbiB8IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwdWJsaWMgb3JpZ2luITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHRhcmdldCE6IFNWR0VsZW1lbnQgfCBIVE1MRWxlbWVudCB8IEFycmF5PFNWR0VsZW1lbnQgfCBIVE1MRWxlbWVudD47XG4gIEBJbnB1dCgpIHB1YmxpYyBjb250YWluZXIhOiBTVkdFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCBudWxsO1xuICBASW5wdXQoKSBwdWJsaWMgdGhyb3R0bGVEcmFnITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgdGhyb3R0bGVEcmFnUm90YXRlITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgdGhyb3R0bGVSZXNpemUhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aHJvdHRsZVNjYWxlITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgdGhyb3R0bGVSb3RhdGUhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBrZWVwUmF0aW8hOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgZWRnZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBwaW5jaFRocmVzaG9sZCE6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIHNuYXBDZW50ZXIhOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgc25hcFZlcnRpY2FsITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNuYXBFbGVtZW50ITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNuYXBIb3Jpem9udGFsITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNuYXBUaHJlc2hvbGQhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBob3Jpem9udGFsR3VpZGVsaW5lcyE6IG51bWJlcltdO1xuICBASW5wdXQoKSBwdWJsaWMgdmVydGljYWxHdWlkZWxpbmVzITogbnVtYmVyW107XG4gIEBJbnB1dCgpIHB1YmxpYyBlbGVtZW50R3VpZGVsaW5lcyE6IEVsZW1lbnRbXTtcbiAgQElucHV0KCkgcHVibGljIGJvdW5kcyE6IHsgbGVmdD86IG51bWJlciwgdG9wPzogbnVtYmVyLCByaWdodD86IG51bWJlciwgYm90dG9tPzogbnVtYmVyIH07XG4gIEBJbnB1dCgpIHB1YmxpYyBkcmFnQXJlYSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyByb3RhdGlvblBvc2l0aW9uITogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBiYXNlRGlyZWN0aW9uITogbnVtYmVyW107XG4gIEBJbnB1dCgpIHB1YmxpYyBkZWZhdWx0R3JvdXBSb3RhdGUhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyBhYmxlcyE6IEFibGVbXTtcblxuICBASW5wdXQoKSBwdWJsaWMgY2xhc3NOYW1lITogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVuZGVyRGlyZWN0aW9ucyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwdWJsaWMgc2Nyb2xsYWJsZSE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBzY3JvbGxDb250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgQElucHV0KCkgcHVibGljIHNjcm9sbFRocmVzaG9sZCE6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGdldFNjcm9sbFBvc2l0aW9uITogTW92ZWFibGVPcHRpb25zWydnZXRTY3JvbGxQb3NpdGlvbiddO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByb290Q29udGFpbmVyITogTW92ZWFibGVPcHRpb25zWydyb290Q29udGFpbmVyJ107XG4gIEBJbnB1dCgpIHB1YmxpYyB6b29tITogTW92ZWFibGVPcHRpb25zWyd6b29tJ107XG4gIEBJbnB1dCgpIHB1YmxpYyB0cmFuc2Zvcm1PcmlnaW4hOiBNb3ZlYWJsZU9wdGlvbnNbJ3RyYW5zZm9ybU9yaWdpbiddO1xuICBASW5wdXQoKSBwdWJsaWMgc25hcERpZ2l0ITogTW92ZWFibGVPcHRpb25zWydzbmFwRGlnaXQnXTtcbiAgQElucHV0KCkgcHVibGljIGlzRGlzcGxheVNuYXBEaWdpdCE6IE1vdmVhYmxlT3B0aW9uc1snaXNEaXNwbGF5U25hcERpZ2l0J107XG4gIEBJbnB1dCgpIHB1YmxpYyBpbm5lckJvdW5kcyE6IE1vdmVhYmxlT3B0aW9uc1snaW5uZXJCb3VuZHMnXTtcblxuICBASW5wdXQoKSBwdWJsaWMgdHJpZ2dlckFibGVzU2ltdWx0YW5lb3VzbHkhOiBNb3ZlYWJsZU9wdGlvbnNbJ3RyaWdnZXJBYmxlc1NpbXVsdGFuZW91c2x5J107XG4gIEBJbnB1dCgpIHB1YmxpYyBzbmFwR2FwITogTW92ZWFibGVPcHRpb25zWydzbmFwR2FwJ107XG5cbiAgQElucHV0KCkgcHVibGljIHBpbmNoT3V0c2lkZSE6IE1vdmVhYmxlT3B0aW9uc1sncGluY2hPdXRzaWRlJ107XG4gIEBJbnB1dCgpIHB1YmxpYyBwYWRkaW5nITogTW92ZWFibGVPcHRpb25zWydwYWRkaW5nJ107XG4gIEBJbnB1dCgpIHB1YmxpYyBzbmFwRGlzdEZvcm1hdCE6IE1vdmVhYmxlT3B0aW9uc1snc25hcERpc3RGb3JtYXQnXTtcbiAgQElucHV0KCkgcHVibGljIGRyYWdUYXJnZXQhOiBNb3ZlYWJsZU9wdGlvbnNbJ2RyYWdUYXJnZXQnXTtcblxuICBAT3V0cHV0KCkgcHVibGljIGRyYWdTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snZHJhZ1N0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIGRyYWchOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ2RyYWcnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgZHJhZ0VuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snZHJhZ0VuZCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBkcmFnR3JvdXBTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snZHJhZ0dyb3VwU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgZHJhZ0dyb3VwITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydkcmFnR3JvdXAnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgZHJhZ0dyb3VwRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydkcmFnR3JvdXBFbmQnXT47XG5cbiAgQE91dHB1dCgpIHB1YmxpYyByZXNpemVTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVzaXplU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVzaXplITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZXNpemUnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVzaXplRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZXNpemVFbmQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVzaXplR3JvdXBTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVzaXplR3JvdXBTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNpemVHcm91cCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVzaXplR3JvdXAnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVzaXplR3JvdXBFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3Jlc2l6ZUdyb3VwRW5kJ10+O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2NhbGVTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snc2NhbGVTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBzY2FsZSE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snc2NhbGUnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2NhbGVFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3NjYWxlRW5kJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIHNjYWxlR3JvdXBTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snc2NhbGVHcm91cFN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHNjYWxlR3JvdXAhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3NjYWxlR3JvdXAnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2NhbGVHcm91cEVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snc2NhbGVHcm91cEVuZCddPjtcblxuICBAT3V0cHV0KCkgcHVibGljIHJvdGF0ZVN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyb3RhdGVTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByb3RhdGUhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JvdGF0ZSddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByb3RhdGVFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JvdGF0ZUVuZCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByb3RhdGVHcm91cFN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyb3RhdGVHcm91cFN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHJvdGF0ZUdyb3VwITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyb3RhdGVHcm91cCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByb3RhdGVHcm91cEVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncm90YXRlR3JvdXBFbmQnXT47XG5cbiAgQE91dHB1dCgpIHB1YmxpYyB3YXJwU3RhcnQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3dhcnBTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyB3YXJwITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWyd3YXJwJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIHdhcnBFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3dhcnBFbmQnXT47XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBwaW5jaFN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydwaW5jaFN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHBpbmNoITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydwaW5jaCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBwaW5jaEVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncGluY2hFbmQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGluY2hHcm91cFN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydwaW5jaEdyb3VwU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGluY2hHcm91cCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncGluY2hHcm91cCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBwaW5jaEdyb3VwRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydwaW5jaEdyb3VwRW5kJ10+O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xpY2shOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ2NsaWNrJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIGNsaWNrR3JvdXAhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ2NsaWNrR3JvdXAnXT47XG5cbiAgQE91dHB1dCgpIHB1YmxpYyByZW5kZXJTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVuZGVyU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVuZGVyITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZW5kZXInXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVuZGVyRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZW5kZXJFbmQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVuZGVyR3JvdXBTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVuZGVyR3JvdXBTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZW5kZXJHcm91cCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVuZGVyR3JvdXAnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVuZGVyR3JvdXBFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JlbmRlckdyb3VwRW5kJ10+O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2Nyb2xsITogRXZlbnRFbWl0dGVyPE9uU2Nyb2xsPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBzY3JvbGxHcm91cCE6IEV2ZW50RW1pdHRlcjxPblNjcm9sbEdyb3VwPjtcblxuICBAT3V0cHV0KCkgcHVibGljIHNuYXAhOiBFdmVudEVtaXR0ZXI8T25TbmFwPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIEVWRU5UUy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgdGhpc1tuYW1lXSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIH0pO1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnM6IE1vdmVhYmxlT3B0aW9ucyA9IHt9O1xuICAgIGNvbnN0IGV2ZW50czogSU9iamVjdDxhbnk+ID0ge307XG5cbiAgICBQUk9QRVJUSUVTLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICAob3B0aW9ucyBhcyBhbnkpW25hbWVdID0gdGhpc1tuYW1lXTtcbiAgICB9KTtcbiAgICBFVkVOVFMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIGV2ZW50c1tuYW1lXSA9IGUgPT4ge1xuICAgICAgICB0aGlzW25hbWVdLmVtaXQoZSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5tb3ZlYWJsZSA9IG5ldyBNb3ZlYWJsZSh0aGlzLmNvbnRhaW5lciB8fCBkb2N1bWVudC5ib2R5LCBvcHRpb25zKTtcbiAgICB0aGlzLm1vdmVhYmxlLm9uKGV2ZW50cyk7XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IG1vdmVhYmxlID0gdGhpcy5tb3ZlYWJsZTtcblxuICAgIGlmICghbW92ZWFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBuYW1lIGluIGNoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHsgcHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlIH0gPSBjaGFuZ2VzW25hbWVdO1xuXG4gICAgICBpZiAocHJldmlvdXNWYWx1ZSA9PT0gY3VycmVudFZhbHVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgbW92ZWFibGVbbmFtZV0gPSBjdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubW92ZWFibGUuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=