UNPKG

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
/** * @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