UNPKG

moh-common-lib

Version:

A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).

225 lines 15.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; /** * @record */ export function PageList() { } if (false) { /** @type {?} */ PageList.prototype.index; /** @type {?} */ PageList.prototype.path; /** @type {?} */ PageList.prototype.isComplete; /* Skipping unhandled member: [key: string]: any;*/ } export class PageStateService { /** * @param {?} router */ constructor(router) { this.router = router; this.pageList = []; } /** * @param {?} arr * @param {?} routeListConst * @param {?=} fn * @return {?} */ setPages(arr, routeListConst, fn) { if (this.pageList && !this.pageList.length) { /** @type {?} */ const routeConst = Object.keys(routeListConst).map((/** * @param {?} x * @return {?} */ x => routeListConst[x])); /** @type {?} */ let cnt = 0; this.pageList = arr.filter((/** * @param {?} itm * @return {?} */ (itm) => !itm.redirectTo)) .map((/** * @param {?} itm * @return {?} */ (itm) => { /** @type {?} */ const val = routeConst.find((/** * @param {?} x * @return {?} */ x => x.path === itm.path)); cnt = cnt + 1; // count for indices // count for indices // Page List to be returned /** @type {?} */ let obj = { index: cnt, path: val.path, isComplete: false, }; if (fn) { obj = Object.assign(obj, fn(val)); } return obj; })); } return this.pageList; } // Returns index parameter value /** * @param {?=} url * @return {?} */ findIndex(url = null) { /** @type {?} */ let idx = 0; if (this.pageList) { /** @type {?} */ const obj = this._find(url ? url : this.router.url); if (obj) { idx = obj.index; } } return idx; } /** * @param {?} idx * @return {?} */ getPageAtIndex(idx) { /** @type {?} */ const index = idx - 1; if (this.pageList && index >= 0 && this.pageList.length > index) { return this.pageList[index]; } return null; } /** * @param {?=} url * @return {?} */ setPageIncomplete(url = null) { /** @type {?} */ const obj = this._find(url ? url : this.router.url); if (obj) { obj.isComplete = false; // Set future pages to not complete this.pageList.map((/** * @param {?} x * @return {?} */ x => { if (obj.index < x.index && x.isComplete) { x.isComplete = false; } })); } } /** * @param {?=} path * @return {?} */ setPageComplete(path = null) { /** @type {?} */ const obj = this._find(path ? path : this.router.url); if (obj) { obj.isComplete = true; } } /** * @param {?=} path * @return {?} */ canNavigateToPage(path = null) { /** @type {?} */ let complete = false; /** @type {?} */ const obj = this._find(path ? path : this.router.url); if (obj) { // Can navigate to first play whether complete or not /** @type {?} */ const prevIdx = obj.index - 1; complete = (prevIdx === 0 ? true : this.pageList[prevIdx - 1].isComplete); } return complete; } /** * @return {?} */ clearCompletePages() { this.pageList.map((/** * @param {?} x * @return {?} */ x => { x.isComplete = false; })); } /** * @return {?} */ pageListIsClear() { /** @type {?} */ let isClear = true; if (this.pageList.length > 0) { isClear = this.pageList.every((/** * @param {?} x * @return {?} */ x => x.isComplete === false)); } return isClear; } // Redirect /** * @param {?} path * @return {?} */ navigateByUrl(path) { this.router.navigateByUrl(path); } // Find item in list /** * @private * @param {?} path * @return {?} */ _find(path) { return this.pageList.find((/** * @param {?} x * @return {?} */ x => path.includes(x.path) || path.endsWith(x.path))); } } PageStateService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ PageStateService.ctorParameters = () => [ { type: Router } ]; /** @nocollapse */ PageStateService.ngInjectableDef = i0.defineInjectable({ factory: function PageStateService_Factory() { return new PageStateService(i0.inject(i1.Router)); }, token: PageStateService, providedIn: "root" }); if (false) { /** @type {?} */ PageStateService.prototype.pageList; /** * @type {?} * @protected */ PageStateService.prototype.router; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvcGFnZS1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBUyxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBRWhELDhCQUtDOzs7SUFKQyx5QkFBYzs7SUFDZCx3QkFBYTs7SUFDYiw4QkFBb0I7OztBQU90QixNQUFNLE9BQU8sZ0JBQWdCOzs7O0lBSTNCLFlBQXVCLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRnJDLGFBQVEsR0FBZSxFQUFFLENBQUM7SUFFZ0IsQ0FBQzs7Ozs7OztJQUUzQyxRQUFRLENBQUUsR0FBWSxFQUNaLGNBQW1CLEVBQ25CLEVBQXFDO1FBRTdDLElBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFHOztrQkFFdEMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUUsY0FBYyxDQUFFLENBQUMsR0FBRzs7OztZQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFOztnQkFFMUUsR0FBRyxHQUFHLENBQUM7WUFDWCxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxNQUFNOzs7O1lBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBQztpQkFDdEQsR0FBRzs7OztZQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7O3NCQUNWLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSTs7OztnQkFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksRUFBRTtnQkFFdkQsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7Ozs7b0JBRy9CLEdBQUcsR0FBRztvQkFDUixLQUFLLEVBQUUsR0FBRztvQkFDVixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCO2dCQUVELElBQUssRUFBRSxFQUFHO29CQUNSLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFFLEdBQUcsRUFBRSxFQUFFLENBQUUsR0FBRyxDQUFFLENBQUUsQ0FBQztpQkFDdkM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUMsQ0FBQztTQUNOO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7Ozs7OztJQUdELFNBQVMsQ0FBRSxNQUFjLElBQUk7O1lBQ3ZCLEdBQUcsR0FBRyxDQUFDO1FBQ1gsSUFBSyxJQUFJLENBQUMsUUFBUSxFQUFHOztrQkFDYixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDbkQsSUFBSyxHQUFHLEVBQUc7Z0JBQ1QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7YUFDakI7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7Ozs7SUFFRCxjQUFjLENBQUUsR0FBVzs7Y0FDbkIsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLElBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRztZQUNqRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7O0lBRUQsaUJBQWlCLENBQUUsTUFBYyxJQUFJOztjQUM3QixHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDbkQsSUFBSyxHQUFHLEVBQUc7WUFDVCxHQUFHLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN2QixtQ0FBbUM7WUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHOzs7O1lBQUUsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3JCLElBQUssR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUc7b0JBQ3pDLENBQUMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUN0QjtZQUNILENBQUMsRUFBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDOzs7OztJQUVELGVBQWUsQ0FBRSxPQUFlLElBQUk7O2NBQzVCLEdBQUcsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUN0RCxJQUFLLEdBQUcsRUFBRztZQUNULEdBQUcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQzs7Ozs7SUFFRCxpQkFBaUIsQ0FBRSxPQUFnQixJQUFJOztZQUNqQyxRQUFRLEdBQUcsS0FBSzs7Y0FDZCxHQUFHLEdBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDdEQsSUFBSyxHQUFHLEVBQUc7OztrQkFFSCxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDO1lBQzdCLFFBQVEsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFFLENBQUM7U0FDNUU7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzs7O0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztRQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ25CLENBQUMsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUdELGVBQWU7O1lBQ1QsT0FBTyxHQUFHLElBQUk7UUFDbEIsSUFBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUc7WUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSzs7OztZQUFFLENBQUMsQ0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztTQUMvRDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Ozs7OztJQUlELGFBQWEsQ0FBRSxJQUFZO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQ3BDLENBQUM7Ozs7Ozs7SUFHTyxLQUFLLENBQUUsSUFBWTtRQUN6QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTs7OztRQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQztJQUNsRixDQUFDOzs7WUFuSEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7O1lBWGUsTUFBTTs7Ozs7SUFjcEIsb0NBQTBCOzs7OztJQUViLGtDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VMaXN0IHtcclxuICBpbmRleDogbnVtYmVyO1xyXG4gIHBhdGg6IHN0cmluZztcclxuICBpc0NvbXBsZXRlOiBib29sZWFuO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFnZVN0YXRlU2VydmljZSB7XHJcblxyXG4gIHBhZ2VMaXN0OiBQYWdlTGlzdFtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCBwcm90ZWN0ZWQgcm91dGVyOiBSb3V0ZXIgKSB7IH1cclxuXHJcbiAgc2V0UGFnZXMoIGFycjogUm91dGVbXSxcclxuICAgICAgICAgICAgcm91dGVMaXN0Q29uc3Q6IGFueSxcclxuICAgICAgICAgICAgZm4/OiAoeDogYW55KSA9PiB7W2tleTogc3RyaW5nXTogYW55fSApOiBQYWdlTGlzdFtdIHtcclxuXHJcbiAgICBpZiAoIHRoaXMucGFnZUxpc3QgJiYgIXRoaXMucGFnZUxpc3QubGVuZ3RoICkge1xyXG5cclxuICAgICAgY29uc3Qgcm91dGVDb25zdCA9IE9iamVjdC5rZXlzKCByb3V0ZUxpc3RDb25zdCApLm1hcCggeCA9PiByb3V0ZUxpc3RDb25zdFt4XSApO1xyXG5cclxuICAgICAgbGV0IGNudCA9IDA7XHJcbiAgICAgIHRoaXMucGFnZUxpc3QgPSBhcnIuZmlsdGVyKChpdG06IGFueSkgPT4gIWl0bS5yZWRpcmVjdFRvKVxyXG4gICAgICAgIC5tYXAoKGl0bTogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB2YWwgPSByb3V0ZUNvbnN0LmZpbmQoIHggPT4geC5wYXRoID09PSBpdG0ucGF0aCApO1xyXG5cclxuICAgICAgICAgIGNudCA9IGNudCArIDE7IC8vIGNvdW50IGZvciBpbmRpY2VzXHJcblxyXG4gICAgICAgICAgLy8gUGFnZSBMaXN0IHRvIGJlIHJldHVybmVkXHJcbiAgICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgICBpbmRleDogY250LFxyXG4gICAgICAgICAgICBwYXRoOiB2YWwucGF0aCxcclxuICAgICAgICAgICAgaXNDb21wbGV0ZTogZmFsc2UsXHJcbiAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgIGlmICggZm4gKSB7XHJcbiAgICAgICAgICAgIG9iaiA9IE9iamVjdC5hc3NpZ24oIG9iaiwgZm4oIHZhbCApICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMucGFnZUxpc3Q7XHJcbiAgfVxyXG5cclxuICAvLyBSZXR1cm5zIGluZGV4IHBhcmFtZXRlciB2YWx1ZVxyXG4gIGZpbmRJbmRleCggdXJsOiBzdHJpbmcgPSBudWxsICk6IG51bWJlciB7XHJcbiAgICBsZXQgaWR4ID0gMDtcclxuICAgIGlmICggdGhpcy5wYWdlTGlzdCApIHtcclxuICAgICAgY29uc3Qgb2JqID0gdGhpcy5fZmluZCh1cmwgPyB1cmwgOiB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgICBpZiAoIG9iaiApIHtcclxuICAgICAgICBpZHggPSBvYmouaW5kZXg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpZHg7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdlQXRJbmRleCggaWR4OiBudW1iZXIgKTogUGFnZUxpc3QgIHwgbnVsbCB7XHJcbiAgICBjb25zdCBpbmRleCA9IGlkeCAtIDE7XHJcbiAgICBpZiAoIHRoaXMucGFnZUxpc3QgJiYgaW5kZXggPj0gMCAmJiB0aGlzLnBhZ2VMaXN0Lmxlbmd0aCA+IGluZGV4ICkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wYWdlTGlzdFtpbmRleF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHNldFBhZ2VJbmNvbXBsZXRlKCB1cmw6IHN0cmluZyA9IG51bGwgKSB7XHJcbiAgICBjb25zdCBvYmogPSB0aGlzLl9maW5kKHVybCA/IHVybCA6IHRoaXMucm91dGVyLnVybCk7XHJcbiAgICBpZiAoIG9iaiApIHtcclxuICAgICAgb2JqLmlzQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgLy8gU2V0IGZ1dHVyZSBwYWdlcyB0byBub3QgY29tcGxldGVcclxuICAgICAgdGhpcy5wYWdlTGlzdC5tYXAoIHggPT4ge1xyXG4gICAgICAgIGlmICggb2JqLmluZGV4IDwgeC5pbmRleCAmJiB4LmlzQ29tcGxldGUgKSB7XHJcbiAgICAgICAgICB4LmlzQ29tcGxldGUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0UGFnZUNvbXBsZXRlKCBwYXRoOiBzdHJpbmcgPSBudWxsICkge1xyXG4gICAgY29uc3Qgb2JqID0gIHRoaXMuX2ZpbmQocGF0aCA/IHBhdGggOiB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgaWYgKCBvYmogKSB7XHJcbiAgICAgIG9iai5pc0NvbXBsZXRlID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNhbk5hdmlnYXRlVG9QYWdlKCBwYXRoOiBzdHJpbmcgID0gbnVsbCApOiBib29sZWFuIHtcclxuICAgIGxldCBjb21wbGV0ZSA9IGZhbHNlO1xyXG4gICAgY29uc3Qgb2JqID0gIHRoaXMuX2ZpbmQocGF0aCA/IHBhdGggOiB0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgaWYgKCBvYmogKSB7XHJcbiAgICAgIC8vIENhbiBuYXZpZ2F0ZSB0byBmaXJzdCBwbGF5IHdoZXRoZXIgY29tcGxldGUgb3Igbm90XHJcbiAgICAgIGNvbnN0IHByZXZJZHggPSBvYmouaW5kZXggLSAxO1xyXG4gICAgICBjb21wbGV0ZSA9IChwcmV2SWR4ID09PSAwID8gdHJ1ZSA6IHRoaXMucGFnZUxpc3RbcHJldklkeCAtIDFdLmlzQ29tcGxldGUgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb21wbGV0ZTtcclxuICB9XHJcblxyXG4gIGNsZWFyQ29tcGxldGVQYWdlcygpIHtcclxuICAgIHRoaXMucGFnZUxpc3QubWFwKCB4ID0+IHtcclxuICAgICAgICB4LmlzQ29tcGxldGUgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHBhZ2VMaXN0SXNDbGVhcigpOiBib29sZWFuIHtcclxuICAgIGxldCBpc0NsZWFyID0gdHJ1ZTtcclxuICAgIGlmICggdGhpcy5wYWdlTGlzdC5sZW5ndGggPiAwICkge1xyXG4gICAgICBpc0NsZWFyID0gdGhpcy5wYWdlTGlzdC5ldmVyeSggeCAgPT4geC5pc0NvbXBsZXRlID09PSBmYWxzZSApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzQ2xlYXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUmVkaXJlY3RcclxuICBuYXZpZ2F0ZUJ5VXJsKCBwYXRoOiBzdHJpbmcgKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCBwYXRoICk7XHJcbiAgfVxyXG5cclxuICAvLyBGaW5kIGl0ZW0gaW4gbGlzdFxyXG4gIHByaXZhdGUgX2ZpbmQoIHBhdGg6IHN0cmluZyApIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VMaXN0LmZpbmQoIHggPT4gcGF0aC5pbmNsdWRlcyh4LnBhdGgpIHx8IHBhdGguZW5kc1dpdGgoeC5wYXRoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==