ad-custom-lib
Version:
This is an UI custom library based on Adminlte library with purpose for personal use, if you need a full template of Primeng please visit https://github.com/mledour/angular-admin-lte
609 lines • 42.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { BehaviorSubject } from 'rxjs';
import { distinctUntilChanged, pluck } from 'rxjs/operators';
/*
*
*/
var /*
*
*/
LayoutStore = /** @class */ (function () {
/**
* @method constructor
* @param layoutConfig [description]
*/
function LayoutStore(layoutConfig) {
this.initialLayoutState = {
isSidebarLeftCollapsed: false,
isSidebarLeftExpandOnOver: false,
isSidebarLeftMouseOver: false,
isSidebarLeftMini: true,
sidebarRightSkin: 'dark',
isSidebarRightCollapsed: true,
isSidebarRightOverContent: true,
layout: 'normal',
sidebarLeftMenu: [],
sidebarLeftMenuActiveUrl: '',
skin: 'blue'
};
if (layoutConfig) {
this.initialLayoutState = Object.assign(this.initialLayoutState, layoutConfig);
}
this._layoutState = new BehaviorSubject(this.initialLayoutState);
this.layoutState = this._layoutState.asObservable();
}
Object.defineProperty(LayoutStore.prototype, "windowInnerHeight", {
/**
* [windowInnerHeight description]
* @method windowInnerHeight
* @return [description]
*/
get: /**
* [windowInnerHeight description]
* \@method windowInnerHeight
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('windowInnerHeight'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "windowInnerWidth", {
/**
* [windowInnerWidth description]
* @method windowInnerWidth
* @return [description]
*/
get: /**
* [windowInnerWidth description]
* \@method windowInnerWidth
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('windowInnerWidth'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftCollapsed", {
/**
* [isSidebarLeftCollapsed description]
* @return [description]
*/
get: /**
* [isSidebarLeftCollapsed description]
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftCollapsed'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftExpandOnOver", {
/**
* [isSidebarLeftExpandOnOver description]
* @method isSidebarLeftExpandOnOver
* @return [description]
*/
get: /**
* [isSidebarLeftExpandOnOver description]
* \@method isSidebarLeftExpandOnOver
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftExpandOnOver'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftMouseOver", {
/**
* [isSidebarLeftMouseOver description]
* @method isSidebarLeftMouseOver
* @return [description]
*/
get: /**
* [isSidebarLeftMouseOver description]
* \@method isSidebarLeftMouseOver
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftMouseOver'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftMini", {
/**
* [isSidebarLeftMini description]
* @method isSidebarLeftMini
* @return [description]
*/
get: /**
* [isSidebarLeftMini description]
* \@method isSidebarLeftMini
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftMini'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarRightSkin", {
/**
* [sidebarRightSkin description]
* @method sidebarRightSkin
* @return [description]
*/
get: /**
* [sidebarRightSkin description]
* \@method sidebarRightSkin
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarRightSkin'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarRightCollapsed", {
/**
* [isSidebarRightCollapsed description]
* @return [description]
*/
get: /**
* [isSidebarRightCollapsed description]
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarRightCollapsed'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarRightOverContent", {
/**
* [isSidebarRightOverContent description]
* @method isSidebarRightOverContent
* @return [description]
*/
get: /**
* [isSidebarRightOverContent description]
* \@method isSidebarRightOverContent
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('isSidebarRightOverContent'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarLeftMenu", {
/**
* [sidebarLeftMenu description]
* @method sidebarLeftMenu
* @return [description]
*/
get: /**
* [sidebarLeftMenu description]
* \@method sidebarLeftMenu
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftMenu'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarLeftMenuActiveUrl", {
/**
* [sidebarLeftMenuActiveUrl description]
* @method sidebarLeftMenuActiveUrl
* @return [description]
*/
get: /**
* [sidebarLeftMenuActiveUrl description]
* \@method sidebarLeftMenuActiveUrl
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftMenuActiveUrl'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarLeftElementHeight", {
/**
* [sidebarLeftElementHeight description]
* @method sidebarLeftElementHeight
* @return [description]
*/
get: /**
* [sidebarLeftElementHeight description]
* \@method sidebarLeftElementHeight
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftElementHeight'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "layout", {
/**
* [layoutType description]
* @method layoutType
* @return [description]
*/
get: /**
* [layoutType description]
* \@method layoutType
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('layout'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "skin", {
/**
* [skin description]
* @method skin
* @return [description]
*/
get: /**
* [skin description]
* \@method skin
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('skin'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "wrapperClasses", {
/**
* [wrapperClasses description]
* @method wrapperClasses
* @return [description]
*/
get: /**
* [wrapperClasses description]
* \@method wrapperClasses
* @return {?} [description]
*/
function () {
return (/** @type {?} */ (this.layoutState.pipe(pluck('wrapperClasses'), distinctUntilChanged())));
},
enumerable: true,
configurable: true
});
/**
* [sidebarLeftCollapsed description]
* @method sidebarLeftCollapsed
* @param value [description]
*/
/**
* [sidebarLeftCollapsed description]
* \@method sidebarLeftCollapsed
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftCollapsed = /**
* [sidebarLeftCollapsed description]
* \@method sidebarLeftCollapsed
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftCollapsed: value }));
};
/**
* [sidebarLeftExpandOnOver description]
* @method sidebarLeftExpandOnOver
* @param value [description]
*/
/**
* [sidebarLeftExpandOnOver description]
* \@method sidebarLeftExpandOnOver
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftExpandOnOver = /**
* [sidebarLeftExpandOnOver description]
* \@method sidebarLeftExpandOnOver
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftExpandOnOver: value }));
};
/**
* [setSidebarLeftElementHeight description]
* @method setSidebarLeftElementHeight
* @param value [description]
*/
/**
* [setSidebarLeftElementHeight description]
* \@method setSidebarLeftElementHeight
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarLeftElementHeight = /**
* [setSidebarLeftElementHeight description]
* \@method setSidebarLeftElementHeight
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftElementHeight: value }));
};
/**
* [setSidebarRightSkin description]
* @method setSidebarRightSkin
* @param value [description]
*/
/**
* [setSidebarRightSkin description]
* \@method setSidebarRightSkin
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarRightSkin = /**
* [setSidebarRightSkin description]
* \@method setSidebarRightSkin
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarRightSkin: value }));
};
/**
* [sidebarLeftMouseOver description]
* @method sidebarLeftMouseOver
* @param value [description]
*/
/**
* [sidebarLeftMouseOver description]
* \@method sidebarLeftMouseOver
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftMouseOver = /**
* [sidebarLeftMouseOver description]
* \@method sidebarLeftMouseOver
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftMouseOver: value }));
};
/**
* [sidebarLeftMini description]
* @method sidebarLeftMini
* @param value [description]
*/
/**
* [sidebarLeftMini description]
* \@method sidebarLeftMini
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftMini = /**
* [sidebarLeftMini description]
* \@method sidebarLeftMini
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftMini: value }));
};
/**
* [sidebarRightCollapsed description]
* @method sidebarRightCollapsed
* @param value [description]
*/
/**
* [sidebarRightCollapsed description]
* \@method sidebarRightCollapsed
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarRightCollapsed = /**
* [sidebarRightCollapsed description]
* \@method sidebarRightCollapsed
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarRightCollapsed: value }));
};
/**
* [sidebarRightOverContent description]
* @method sidebarRightOverContent
* @param value [description]
*/
/**
* [sidebarRightOverContent description]
* \@method sidebarRightOverContent
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarRightOverContent = /**
* [sidebarRightOverContent description]
* \@method sidebarRightOverContent
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarRightOverContent: value }));
};
/**
* [setSidebarLeftMenu description]
* @method setSidebarLeftMenu
* @param value [description]
*/
/**
* [setSidebarLeftMenu description]
* \@method setSidebarLeftMenu
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarLeftMenu = /**
* [setSidebarLeftMenu description]
* \@method setSidebarLeftMenu
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftMenu: value }));
};
/**
* [setSidebarLeftMenuActiveUrl description]
* @method setSidebarLeftMenuActiveUrl
* @param value [description]
*/
/**
* [setSidebarLeftMenuActiveUrl description]
* \@method setSidebarLeftMenuActiveUrl
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarLeftMenuActiveUrl = /**
* [setSidebarLeftMenuActiveUrl description]
* \@method setSidebarLeftMenuActiveUrl
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftMenuActiveUrl: value }));
};
/**
* [setLayout description]
* @method setLayout
* @param value [description]
*/
/**
* [setLayout description]
* \@method setLayout
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setLayout = /**
* [setLayout description]
* \@method setLayout
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { layout: value }));
};
/**
* [setSkin description]
* @method setSkin
* @param value [description]
*/
/**
* [setSkin description]
* \@method setSkin
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSkin = /**
* [setSkin description]
* \@method setSkin
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { skin: value }));
};
/**
* [setWrapperClasses description]
* @method setWrapperClasses
* @param value [description]
*/
/**
* [setWrapperClasses description]
* \@method setWrapperClasses
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setWrapperClasses = /**
* [setWrapperClasses description]
* \@method setWrapperClasses
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { wrapperClasses: value }));
};
/**
* [setWindowInnerHeight description]
* @method setWindowInnerHeight
* @param value [description]
*/
/**
* [setWindowInnerHeight description]
* \@method setWindowInnerHeight
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setWindowInnerHeight = /**
* [setWindowInnerHeight description]
* \@method setWindowInnerHeight
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { windowInnerHeight: value }));
};
/**
* [setWindowInnerWidth description]
* @method setWindowInnerWidth
* @param value [description]
*/
/**
* [setWindowInnerWidth description]
* \@method setWindowInnerWidth
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setWindowInnerWidth = /**
* [setWindowInnerWidth description]
* \@method setWindowInnerWidth
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { windowInnerWidth: value }));
};
return LayoutStore;
}());
/*
*
*/
export { LayoutStore };
if (false) {
/** @type {?} */
LayoutStore.prototype.layoutState;
/**
* @type {?}
* @private
*/
LayoutStore.prototype._layoutState;
/**
* @type {?}
* @private
*/
LayoutStore.prototype.initialLayoutState;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnN0b3JlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWQtY3VzdG9tLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvbGF5b3V0LnN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQU83RDs7OztJQWtCSTs7O09BR0c7SUFDSCxxQkFBWSxZQUF5QjtRQWxCcEIsdUJBQWtCLEdBQWdCO1lBQy9DLHNCQUFzQixFQUFFLEtBQUs7WUFDN0IseUJBQXlCLEVBQUUsS0FBSztZQUNoQyxzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsZ0JBQWdCLEVBQUUsTUFBTTtZQUN4Qix1QkFBdUIsRUFBRSxJQUFJO1lBQzdCLHlCQUF5QixFQUFFLElBQUk7WUFDL0IsTUFBTSxFQUFFLFFBQVE7WUFDaEIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsd0JBQXdCLEVBQUUsRUFBRTtZQUM1QixJQUFJLEVBQUUsTUFBTTtTQUNmLENBQUM7UUFPRSxJQUFJLFlBQVksRUFBRTtZQUNkLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsQ0FBQztTQUNsRjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFPRCxzQkFBSSwwQ0FBaUI7UUFMckI7Ozs7V0FJRzs7Ozs7O1FBQ0g7WUFDSSxPQUFPLG1CQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENB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QUFJLENBQ2xCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FDMUQsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHOzs7Ozs7O0lBQ0ksdUNBQWlCOzs7Ozs7SUFBeEIsVUFBeUIsS0FBYTtRQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUNwRSxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSSwwQ0FBb0I7Ozs7OztJQUEzQixVQUE0QixLQUFhO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNsQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FDdkUsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHOzs7Ozs7O0lBQ0kseUNBQW1COzs7Ozs7SUFBMUIsVUFBMkIsS0FBYTtRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDbEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQ3RFLENBQUM7SUFDTixDQUFDO0lBQ0wsa0JBQUM7QUFBRCxDQUFDLEFBdlVELElBdVVDOzs7Ozs7O0lBdFVHLGtDQUFxRDs7Ozs7SUFFckQsbUNBQW1EOzs7OztJQUNuRCx5Q0FZRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgcGx1Y2sgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBMYXlvdXRTdGF0ZSB9IGZyb20gJy4vbGF5b3V0LnN0YXRlJztcclxuXHJcbi8qXHJcbiAqXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTGF5b3V0U3RvcmUge1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGxheW91dFN0YXRlOiBPYnNlcnZhYmxlPExheW91dFN0YXRlPjtcclxuXHJcbiAgICBwcml2YXRlIF9sYXlvdXRTdGF0ZTogQmVoYXZpb3JTdWJqZWN0PExheW91dFN0YXRlPjtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbExheW91dFN0YXRlOiBMYXlvdXRTdGF0ZSA9IHtcclxuICAgICAgICBpc1NpZGViYXJMZWZ0Q29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgICBpc1NpZGViYXJMZWZ0RXhwYW5kT25PdmVyOiBmYWxzZSxcclxuICAgICAgICBpc1NpZGViYXJMZWZ0TW91c2VPdmVyOiBmYWxzZSxcclxuICAgICAgICBpc1NpZGViYXJMZWZ0TWluaTogdHJ1ZSxcclxuICAgICAgICBzaWRlYmFyUmlnaHRTa2luOiAnZGFyaycsXHJcbiAgICAgICAgaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQ6IHRydWUsXHJcbiAgICAgICAgaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudDogdHJ1ZSxcclxuICAgICAgICBsYXlvdXQ6ICdub3JtYWwnLFxyXG4gICAgICAgIHNpZGViYXJMZWZ0TWVudTogW10sXHJcbiAgICAgICAgc2lkZWJhckxlZnRNZW51QWN0aXZlVXJsOiAnJyxcclxuICAgICAgICBza2luOiAnYmx1ZSdcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gbGF5b3V0Q29uZmlnIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IobGF5b3V0Q29uZmlnOiBMYXlvdXRTdGF0ZSkge1xyXG4gICAgICAgIGlmIChsYXlvdXRDb25maWcpIHtcclxuICAgICAgICAgICAgdGhpcy5pbml0aWFsTGF5b3V0U3RhdGUgPSBPYmplY3QuYXNzaWduKHRoaXMuaW5pdGlhbExheW91dFN0YXRlLCBsYXlvdXRDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5pbml0aWFsTGF5b3V0U3RhdGUpO1xyXG4gICAgICAgIHRoaXMubGF5b3V0U3RhdGUgPSB0aGlzLl9sYXlvdXRTdGF0ZS5hc09ic2VydmFibGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFt3aW5kb3dJbm5lckhlaWdodCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgd2luZG93SW5uZXJIZWlnaHRcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgd2luZG93SW5uZXJIZWlnaHQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8bnVtYmVyPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3dpbmRvd0lubmVySGVpZ2h0JyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3dpbmRvd0lubmVyV2lkdGggZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHdpbmRvd0lubmVyV2lkdGhcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgd2luZG93SW5uZXJXaWR0aCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxudW1iZXI+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnd2luZG93SW5uZXJXaWR0aCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtpc1NpZGViYXJMZWZ0Q29sbGFwc2VkIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJMZWZ0Q29sbGFwc2VkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRDb2xsYXBzZWQnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlciBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlclxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJMZWZ0RXhwYW5kT25PdmVyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRFeHBhbmRPbk92ZXInKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyTGVmdE1vdXNlT3ZlciBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaXNTaWRlYmFyTGVmdE1vdXNlT3ZlclxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJMZWZ0TW91c2VPdmVyKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRNb3VzZU92ZXInKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyTGVmdE1pbmkgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIGlzU2lkZWJhckxlZnRNaW5pXHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgZ2V0IGlzU2lkZWJhckxlZnRNaW5pKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhckxlZnRNaW5pJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJSaWdodFNraW4gZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJSaWdodFNraW5cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgc2lkZWJhclJpZ2h0U2tpbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnc2lkZWJhclJpZ2h0U2tpbicpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtpc1NpZGViYXJSaWdodENvbGxhcHNlZCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICAgICAgcmV0dXJuIDxPYnNlcnZhYmxlPGJvb2xlYW4+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2QgaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudFxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBpc1NpZGViYXJSaWdodE92ZXJDb250ZW50KCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxib29sZWFuPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ2lzU2lkZWJhclJpZ2h0T3ZlckNvbnRlbnQnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2lkZWJhckxlZnRNZW51IGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdE1lbnVcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgc2lkZWJhckxlZnRNZW51KCk6IE9ic2VydmFibGU8QXJyYXk8YW55Pj4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxBcnJheTxhbnk+Pj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3NpZGViYXJMZWZ0TWVudScpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmwgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0TWVudUFjdGl2ZVVybFxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBzaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmwoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8c3RyaW5nPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3NpZGViYXJMZWZ0TWVudUFjdGl2ZVVybCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0RWxlbWVudEhlaWdodFxyXG4gICAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIGdldCBzaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8bnVtYmVyPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3NpZGViYXJMZWZ0RWxlbWVudEhlaWdodCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtsYXlvdXRUeXBlIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBsYXlvdXRUeXBlXHJcbiAgICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgZ2V0IGxheW91dCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnbGF5b3V0JyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NraW4gZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNraW5cclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgc2tpbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnc2tpbicpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFt3cmFwcGVyQ2xhc3NlcyBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgd3JhcHBlckNsYXNzZXNcclxuICAgICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBnZXQgd3JhcHBlckNsYXNzZXMoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gPE9ic2VydmFibGU8c3RyaW5nPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3dyYXBwZXJDbGFzc2VzJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJMZWZ0Q29sbGFwc2VkIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdENvbGxhcHNlZFxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpZGViYXJMZWZ0Q29sbGFwc2VkKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgaXNTaWRlYmFyTGVmdENvbGxhcHNlZDogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJMZWZ0RXhwYW5kT25PdmVyIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdEV4cGFuZE9uT3ZlclxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNpZGViYXJMZWZ0RXhwYW5kT25PdmVyKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlcjogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NldFNpZGViYXJMZWZ0RWxlbWVudEhlaWdodCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2V0U2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0XHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0U2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7IHNpZGViYXJMZWZ0RWxlbWVudEhlaWdodDogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NldFNpZGViYXJSaWdodFNraW4gZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNldFNpZGViYXJSaWdodFNraW5cclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRTaWRlYmFyUmlnaHRTa2luKHZhbHVlPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyBzaWRlYmFyUmlnaHRTa2luOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2lkZWJhckxlZnRNb3VzZU92ZXIgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0TW91c2VPdmVyXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2lkZWJhckxlZnRNb3VzZU92ZXIodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyBpc1NpZGViYXJMZWZ0TW91c2VPdmVyOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2lkZWJhckxlZnRNaW5pIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzaWRlYmFyTGVmdE1pbmlcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaWRlYmFyTGVmdE1pbmkodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyBpc1NpZGViYXJMZWZ0TWluaTogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NpZGViYXJSaWdodENvbGxhcHNlZCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2lkZWJhclJpZ2h0Q29sbGFwc2VkXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2lkZWJhclJpZ2h0Q29sbGFwc2VkKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgaXNTaWRlYmFyUmlnaHRDb2xsYXBzZWQ6IHZhbHVlIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzaWRlYmFyUmlnaHRPdmVyQ29udGVudCBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2lkZWJhclJpZ2h0T3ZlckNvbnRlbnRcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaWRlYmFyUmlnaHRPdmVyQ29udGVudCh2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7IGlzU2lkZWJhclJpZ2h0T3ZlckNvbnRlbnQ6IHZhbHVlIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzZXRTaWRlYmFyTGVmdE1lbnUgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNldFNpZGViYXJMZWZ0TWVudVxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFNpZGViYXJMZWZ0TWVudSh2YWx1ZTogQXJyYXk8YW55Pik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgc2lkZWJhckxlZnRNZW51OiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0U2lkZWJhckxlZnRNZW51QWN0aXZlVXJsIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRTaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmxcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRTaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmwodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgc2lkZWJhckxlZnRNZW51QWN0aXZlVXJsOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0TGF5b3V0IGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRMYXlvdXRcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXRMYXlvdXQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgbGF5b3V0OiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0U2tpbiBkZXNjcmlwdGlvbl1cclxuICAgICAqIEBtZXRob2Qgc2V0U2tpblxyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFNraW4odmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgc2tpbjogdmFsdWUgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW3NldFdyYXBwZXJDbGFzc2VzIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRXcmFwcGVyQ2xhc3Nlc1xyXG4gICAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldFdyYXBwZXJDbGFzc2VzKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxyXG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7IHdyYXBwZXJDbGFzc2VzOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbc2V0V2luZG93SW5uZXJIZWlnaHQgZGVzY3JpcHRpb25dXHJcbiAgICAgKiBAbWV0aG9kIHNldFdpbmRvd0lubmVySGVpZ2h0XHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0V2luZG93SW5uZXJIZWlnaHQodmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXHJcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHsgd2luZG93SW5uZXJIZWlnaHQ6IHZhbHVlIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtzZXRXaW5kb3dJbm5lcldpZHRoIGRlc2NyaXB0aW9uXVxyXG4gICAgICogQG1ldGhvZCBzZXRXaW5kb3dJbm5lcldpZHRoXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0V2luZG93SW5uZXJXaWR0aCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcclxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwgeyB3aW5kb3dJbm5lcldpZHRoOiB2YWx1ZSB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19