dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
359 lines • 27.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { ElementsService, CurrentService, ProjectService } from 'dbweb-core';
var NavtreeService = /** @class */ (function () {
// get data(): NavItem[] {
// console.log(this.dataChange.value);
// return this.dataChange.value;
// }
function NavtreeService(eles, project) {
this.eles = eles;
this.project = project;
this.root = { children: [] };
// dataChange = new BehaviorSubject<NavItem[]>([]);
this.icons = ['security', 'dns', 'gamepad']; // 图标
// this.initialize();
this.init();
for (var i = 0; i < Math.min(this.root.children.length, this.icons.length); i++) {
this.root.children[i].iconName = this.icons[i];
}
}
/**
* @return {?}
*/
NavtreeService.prototype.init = /**
* @return {?}
*/
function () {
var _this = this;
// 设置项目图标
if (this.project.categoryIcons && this.project.categoryIcons.length > 0) {
this.icons = this.project.categoryIcons;
}
// 如果已经初始化过,则跳出
if (this.root.children.length > 0) {
return;
}
this.eles.getElesAsArray().forEach((/**
* @param {?} element
* @return {?}
*/
function (element) {
// 后端api或者子级工作元素的,不需要加入到node列表中
if (!element.NotMenu) {
_this.addElement(element, _this.root, element.Category.split('/'), 0, null, element.Icon);
}
}));
// console.log(this.root.children[0].iconName);
// console.log(this.root);
};
/**
* @private
* @param {?} str
* @return {?}
*/
NavtreeService.prototype.clearText = /**
* @private
* @param {?} str
* @return {?}
*/
function (str) {
if (str.search(/[0-9]{2}\./) > -1) {
return str.substr(3);
}
return str;
};
// 采用插入排序方法逐条插入
// 采用插入排序方法逐条插入
/**
* @private
* @param {?} ele
* @param {?} parent
* @param {?} paths
* @param {?} level
* @param {?} parents
* @param {?} iconName
* @return {?}
*/
NavtreeService.prototype.addElement =
// 采用插入排序方法逐条插入
/**
* @private
* @param {?} ele
* @param {?} parent
* @param {?} paths
* @param {?} level
* @param {?} parents
* @param {?} iconName
* @return {?}
*/
function (ele, parent, paths, level, parents, iconName) {
if (paths.length === 0) {
// 实际插入的菜单项,也需要排序
/** @type {?} */
var idx = parent.children.findIndex((/**
* @param {?} item
* @return {?}
*/
function (item) { return (ele.Label || ele.Name).localeCompare(item.fullTitle || item.name) <= 0; }));
/** @type {?} */
var node = {
name: ele.Name,
fullTitle: ele.Label,
title: this.clearText(ele.Label || ele.Name),
url: this.eles.frontElementURL(ele.Name, decodeURI(ele.URL)),
level: level,
parent: parents,
iconName: iconName
};
if (idx === -1) {
parent.children.push(node);
}
else {
parent.children.splice(idx, 0, node);
}
return;
}
/** @type {?} */
var findIdx = parent.children.findIndex((/**
* @param {?} item
* @return {?}
*/
function (item) { return paths[0].localeCompare(item.name) <= 0; }));
/** @type {?} */
var categoryNode;
if (findIdx !== -1 && parent.children[findIdx].name === paths[0]) {
categoryNode = parent.children[findIdx];
}
else {
categoryNode = {
name: paths[0],
fullTitle: paths[0],
title: this.clearText(paths[0]),
level: level,
parent: parents,
iconName: iconName,
children: []
};
// 如果找不到,则说明比里面任何一个都大,则是追加到最后一个
if (findIdx === -1) {
parent.children.push(categoryNode);
}
else {
parent.children.splice(findIdx, 0, categoryNode);
}
}
this.addElement(ele, categoryNode, paths.slice(1), level + 1, categoryNode, iconName);
};
NavtreeService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NavtreeService.ctorParameters = function () { return [
{ type: ElementsService },
{ type: ProjectService }
]; };
return NavtreeService;
}());
export { NavtreeService };
if (false) {
/** @type {?} */
NavtreeService.prototype.root;
/** @type {?} */
NavtreeService.prototype.icons;
/**
* @type {?}
* @private
*/
NavtreeService.prototype.eles;
/**
* @type {?}
* @private
*/
NavtreeService.prototype.project;
}
var NavHome = /** @class */ (function () {
function NavHome(current, database, prj) {
this.current = current;
this.database = database;
this.prj = prj;
this.chatMessages = [];
this.unread = null; // 未读信息数
// 未读信息数
this.openNodeCurrent = [];
this.activeNode = [];
this.subs = [];
}
/**
* @param {?} node
* @return {?}
*/
NavHome.prototype.recursionFun = /**
* @param {?} node
* @return {?}
*/
function (node) {
if (node.level <= 0) {
return this.openNodeCurrent.push(node);
}
if (node.level >= 1) {
this.openNodeCurrent.push(node);
this.recursionFun(node.parent);
}
};
/**
* @param {?} node
* @return {?}
*/
NavHome.prototype.recursionFuns = /**
* @param {?} node
* @return {?}
*/
function (node) {
if (node.level <= 0) {
return this.activeNode.push(node);
}
if (node.level >= 1) {
this.activeNode.push(node);
this.recursionFuns(node.parent);
}
};
/**
* @param {?} node
* @return {?}
*/
NavHome.prototype.gradually = /**
* @param {?} node
* @return {?}
*/
function (node) {
if (this.activeNode.length !== 0) {
this.activeNode.splice(0, this.activeNode.length);
}
this.recursionFuns(node);
};
/**
* @param {?} node
* @return {?}
*/
NavHome.prototype.openNode = /**
* @param {?} node
* @return {?}
*/
function (node) {
/** @type {?} */
var openboolean = this.openNodeCurrent.includes(node);
if (this.openNodeCurrent.length !== 0) {
this.openNodeCurrent.splice(0, this.openNodeCurrent.length);
}
if (openboolean) {
if (node.level >= 1) {
this.recursionFun(node.parent);
}
if (node.level === 0) {
this.recursionFun(this.database.root);
}
}
else {
this.recursionFun(node);
}
};
/**
* @return {?}
*/
NavHome.prototype.messages = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var chatData = JSON.parse(this.prj.loadData('chatdata'));
if (chatData == null) {
this.prj.saveData('chatdata', JSON.stringify(this.chatMessages));
}
this.subs.push(this.current.wsChat.observable.subscribe((/**
* @param {?} n
* @return {?}
*/
function (n) {
_this.chatMessages.push(n);
_this.prj.saveData('chatdata', JSON.stringify(_this.chatMessages));
if (n != null) {
_this.unread = _this.unread + 1;
}
// console.log(JSON.parse(localStorage.getItem('chatdata')));
}), (/**
* @param {?} err
* @return {?}
*/
function (err) { return console.log(err); }), (/**
* @return {?}
*/
function () { return console.log('component'); })));
this.chatMessages = chatData;
};
/**
* @param {?} item
* @return {?}
*/
NavHome.prototype.fromChildFunc = /**
* @param {?} item
* @return {?}
*/
function (item) {
if (this.activeNode.length !== 0) {
this.activeNode.splice(0, this.activeNode.length);
}
this.recursionFuns(item);
if (this.openNodeCurrent.length !== 0) {
this.openNodeCurrent.splice(0, this.openNodeCurrent.length);
}
this.recursionFun(item);
};
NavHome.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NavHome.ctorParameters = function () { return [
{ type: CurrentService },
{ type: NavtreeService },
{ type: ProjectService }
]; };
return NavHome;
}());
export { NavHome };
if (false) {
/** @type {?} */
NavHome.prototype.portraitURL;
/** @type {?} */
NavHome.prototype.chatMessages;
/** @type {?} */
NavHome.prototype.messageBody;
/** @type {?} */
NavHome.prototype.unread;
/** @type {?} */
NavHome.prototype.openNodeCurrent;
/** @type {?} */
NavHome.prototype.activeNode;
/** @type {?} */
NavHome.prototype.subs;
/**
* @type {?}
* @private
*/
NavHome.prototype.current;
/**
* @type {?}
* @private
*/
NavHome.prototype.database;
/**
* @type {?}
* @private
*/
NavHome.prototype.prj;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2hvbWUvbmF2LWl0ZW1uL25hdnRyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQVksZUFBZSxFQUFlLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHcEc7SUFNQywwQkFBMEI7SUFDMUIsdUNBQXVDO0lBQ3ZDLGlDQUFpQztJQUNqQyxJQUFJO0lBRUosd0JBQW9CLElBQXFCLEVBQVUsT0FBdUI7UUFBdEQsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQVQxRSxTQUFJLEdBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7O1FBRWpDLFVBQUssR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBUTVDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQztJQUNGLENBQUM7Ozs7SUFDRCw2QkFBSTs7O0lBQUo7UUFBQSxpQkFpQkM7UUFoQkEsU0FBUztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUks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WUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7O2dCQWhGRCxVQUFVOzs7O2dCQW5Hc0MsY0FBYztnQkE0R0MsY0FBYztnQkE1R2IsY0FBYzs7SUFvTC9FLGNBQUM7Q0FBQSxBQWpGRCxJQWlGQztTQWhGWSxPQUFPOzs7SUFDbkIsOEJBQW9COztJQUNwQiwrQkFBaUM7O0lBQ2pDLDhCQUFvQjs7SUFDcEIseUJBQXNCOztJQUN0QixrQ0FBZ0M7O0lBQ2hDLDZCQUEyQjs7SUFDM0IsdUJBQTBCOzs7OztJQUNkLDBCQUErQjs7Ozs7SUFBRSwyQkFBZ0M7Ozs7O0lBQUUsc0JBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSUVsZW1lbnQsIEVsZW1lbnRzU2VydmljZSwgQ2hhdE1lc3NhZ2UsIEN1cnJlbnRTZXJ2aWNlLCBQcm9qZWN0U2VydmljZSB9IGZyb20gJ2Rid2ViLWNvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi9uYXYtaXRlbSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOYXZ0cmVlU2VydmljZSB7XHJcblx0cm9vdDogTmF2SXRlbSA9IHsgY2hpbGRyZW46IFtdIH07XHJcblx0Ly8gZGF0YUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmF2SXRlbVtdPihbXSk7XHJcblx0aWNvbnMgPSBbJ3NlY3VyaXR5JywgJ2RucycsICdnYW1lcGFkJ107IC8vIOWbvuagh1xyXG5cclxuXHQvLyBnZXQgZGF0YSgpOiBOYXZJdGVtW10ge1xyXG5cdC8vIFx0Y29uc29sZS5sb2codGhpcy5kYXRhQ2hhbmdlLnZhbHVlKTtcclxuXHQvLyBcdHJldHVybiB0aGlzLmRhdGFDaGFuZ2UudmFsdWU7XHJcblx0Ly8gfVxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZXM6IEVsZW1lbnRzU2VydmljZSwgcHJpdmF0ZSBwcm9qZWN0OiBQcm9qZWN0U2VydmljZSkge1xyXG5cdFx0Ly8gdGhpcy5pbml0aWFsaXplKCk7XHJcblx0XHR0aGlzLmluaXQoKTtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4odGhpcy5yb290LmNoaWxkcmVuLmxlbmd0aCwgdGhpcy5pY29ucy5sZW5ndGgpOyBpKyspIHtcclxuXHRcdFx0dGhpcy5yb290LmNoaWxkcmVuW2ldLmljb25OYW1lID0gdGhpcy5pY29uc1tpXTtcclxuXHRcdH1cclxuXHR9XHJcblx0aW5pdCgpIHtcclxuXHRcdC8vIOiuvue9rumhueebruWbvuagh1xyXG5cdFx0aWYgKHRoaXMucHJvamVjdC5jYXRlZ29yeUljb25zICYmIHRoaXMucHJvamVjdC5jYXRlZ29yeUljb25zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5pY29ucyA9IHRoaXMucHJvamVjdC5jYXRlZ29yeUljb25zO1xyXG5cdFx0fVxyXG5cdFx0Ly8g5aaC5p6c5bey57uP5Yid5aeL5YyW6L+H77yM5YiZ6Lez5Ye6XHJcblx0XHRpZiAodGhpcy5yb290LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5lbGVzLmdldEVsZXNBc0FycmF5KCkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuXHRcdFx0Ly8g5ZCO56uvYXBp5oiW6ICF5a2Q57qn5bel5L2c5YWD57Sg55qE77yM5LiN6ZyA6KaB5Yqg5YWl5Yiwbm9kZeWIl+ihqOS4rVxyXG5cdFx0XHRpZiAoIWVsZW1lbnQuTm90TWVudSkge1xyXG5cdFx0XHRcdHRoaXMuYWRkRWxlbWVudChlbGVtZW50LCB0aGlzLnJvb3QsIGVsZW1lbnQuQ2F0ZWdvcnkuc3BsaXQoJy8nKSwgMCwgbnVsbCwgZWxlbWVudC5JY29uKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLnJvb3QuY2hpbGRyZW5bMF0uaWNvbk5hbWUpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5yb290KTtcclxuXHR9XHJcblx0cHJpdmF0ZSBjbGVhclRleHQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHN0ci5zZWFyY2goL1swLTldezJ9XFwuLykgPiAtMSkge1xyXG5cdFx0XHRyZXR1cm4gc3RyLnN1YnN0cigzKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBzdHI7XHJcblx0fVxyXG5cdC8vIOmHh+eUqOaPkuWFpeaOkuW6j+aWueazlemAkOadoeaPkuWFpVxyXG5cdHByaXZhdGUgYWRkRWxlbWVudChcclxuXHRcdGVsZTogSUVsZW1lbnQsXHJcblx0XHRwYXJlbnQ6IE5hdkl0ZW0sXHJcblx0XHRwYXRoczogc3RyaW5nW10sXHJcblx0XHRsZXZlbDogbnVtYmVyLFxyXG5cdFx0cGFyZW50czogTmF2SXRlbSxcclxuXHRcdGljb25OYW1lOiBzdHJpbmdcclxuXHQpIHtcclxuXHRcdGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0Ly8g5a6e6ZmF5o+S5YWl55qE6I+c5Y2V6aG577yM5Lmf6ZyA6KaB5o6S5bqPXHJcblx0XHRcdGNvbnN0IGlkeCA9IHBhcmVudC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcblx0XHRcdFx0aXRlbSA9PiAoZWxlLkxhYmVsIHx8IGVsZS5OYW1lKS5sb2NhbGVDb21wYXJlKGl0ZW0uZnVsbFRpdGxlIHx8IGl0ZW0ubmFtZSkgPD0gMFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRjb25zdCBub2RlID0ge1xyXG5cdFx0XHRcdG5hbWU6IGVsZS5OYW1lLFxyXG5cdFx0XHRcdGZ1bGxUaXRsZTogZWxlLkxhYmVsLFxyXG5cdFx0XHRcdHRpdGxlOiB0aGlzLmNsZWFyVGV4dChlbGUuTGFiZWwgfHwgZWxlLk5hbWUpLFxyXG5cdFx0XHRcdHVybDogdGhpcy5lbGVzLmZyb250RWxlbWVudFVSTChlbGUuTmFtZSwgZGVjb2RlVVJJKGVsZS5VUkwpKSxcclxuXHRcdFx0XHRsZXZlbDogbGV2ZWwsXHJcblx0XHRcdFx0cGFyZW50OiBwYXJlbnRzLFxyXG5cdFx0XHRcdGljb25OYW1lOiBpY29uTmFtZVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRpZiAoaWR4ID09PSAtMSkge1xyXG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaWR4LCAwLCBub2RlKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBmaW5kSWR4ID0gcGFyZW50LmNoaWxkcmVuLmZpbmRJbmRleChpdGVtID0+IHBhdGhzWzBdLmxvY2FsZUNvbXBhcmUoaXRlbS5uYW1lKSA8PSAwKTtcclxuXHRcdGxldCBjYXRlZ29yeU5vZGU6IE5hdkl0ZW07XHJcblx0XHRpZiAoZmluZElkeCAhPT0gLTEgJiYgcGFyZW50LmNoaWxkcmVuW2ZpbmRJZHhdLm5hbWUgPT09IHBhdGhzWzBdKSB7XHJcblx0XHRcdGNhdGVnb3J5Tm9kZSA9IHBhcmVudC5jaGlsZHJlbltmaW5kSWR4XTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNhdGVnb3J5Tm9kZSA9IHtcclxuXHRcdFx0XHRuYW1lOiBwYXRoc1swXSxcclxuXHRcdFx0XHRmdWxsVGl0bGU6IHBhdGhzWzBdLFxyXG5cdFx0XHRcdHRpdGxlOiB0aGlzLmNsZWFyVGV4dChwYXRoc1swXSksXHJcblx0XHRcdFx0bGV2ZWw6IGxldmVsLFxyXG5cdFx0XHRcdHBhcmVudDogcGFyZW50cyxcclxuXHRcdFx0XHRpY29uTmFtZTogaWNvbk5hbWUsXHJcblx0XHRcdFx0Y2hpbGRyZW46IFtdXHJcblx0XHRcdH07XHJcblx0XHRcdC8vIOWmguaenOaJvuS4jeWIsO+8jOWImeivtOaYjuavlOmHjOmdouS7u+S9leS4gOS4qumDveWkp++8jOWImeaYr+i/veWKoOWIsOacgOWQjuS4gOS4qlxyXG5cdFx0XHRpZiAoZmluZElkeCA9PT0gLTEpIHtcclxuXHRcdFx0XHRwYXJlbnQuY2hpbGRyZW4ucHVzaChjYXRlZ29yeU5vZGUpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoZmluZElkeCwgMCwgY2F0ZWdvcnlOb2RlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5hZGRFbGVtZW50KGVsZSwgY2F0ZWdvcnlOb2RlLCBwYXRocy5zbGljZSgxKSwgbGV2ZWwgKyAxLCBjYXRlZ29yeU5vZGUsIGljb25OYW1lKTtcclxuXHR9XHJcbn1cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTmF2SG9tZSB7XHJcblx0cG9ydHJhaXRVUkw6IHN0cmluZztcclxuXHRjaGF0TWVzc2FnZXM6IENoYXRNZXNzYWdlW10gPSBbXTtcclxuXHRtZXNzYWdlQm9keTogc3RyaW5nO1xyXG5cdHVucmVhZDogbnVtYmVyID0gbnVsbDsgLy8g5pyq6K+75L+h5oGv5pWwXHJcblx0b3Blbk5vZGVDdXJyZW50OiBOYXZJdGVtW10gPSBbXTtcclxuXHRhY3RpdmVOb2RlOiBOYXZJdGVtW10gPSBbXTtcclxuXHRzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgY3VycmVudDogQ3VycmVudFNlcnZpY2UsIHByaXZhdGUgZGF0YWJhc2U6IE5hdnRyZWVTZXJ2aWNlLCBwcml2YXRlIHByajogUHJvamVjdFNlcnZpY2UpIHt9XHJcblx0cmVjdXJzaW9uRnVuKG5vZGU6IE5hdkl0ZW0pIHtcclxuXHRcdGlmIChub2RlLmxldmVsIDw9IDApIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMub3Blbk5vZGVDdXJyZW50LnB1c2gobm9kZSk7XHJcblx0XHR9XHJcblx0XHRpZiAobm9kZS5sZXZlbCA+PSAxKSB7XHJcblx0XHRcdHRoaXMub3Blbk5vZGVDdXJyZW50LnB1c2gobm9kZSk7XHJcblx0XHRcdHRoaXMucmVjdXJzaW9uRnVuKG5vZGUucGFyZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmVjdXJzaW9uRnVucyhub2RlOiBOYXZJdGVtKSB7XHJcblx0XHRpZiAobm9kZS5sZXZlbCA8PSAwKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmFjdGl2ZU5vZGUucHVzaChub2RlKTtcclxuXHRcdH1cclxuXHRcdGlmIChub2RlLmxldmVsID49IDEpIHtcclxuXHRcdFx0dGhpcy5hY3RpdmVOb2RlLnB1c2gobm9kZSk7XHJcblx0XHRcdHRoaXMucmVjdXJzaW9uRnVucyhub2RlLnBhcmVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGdyYWR1YWxseShub2RlOiBOYXZJdGVtKSB7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVOb2RlLmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLmFjdGl2ZU5vZGUuc3BsaWNlKDAsIHRoaXMuYWN0aXZlTm9kZS5sZW5ndGgpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZWN1cnNpb25GdW5zKG5vZGUpO1xyXG5cdH1cclxuXHRvcGVuTm9kZShub2RlOiBOYXZJdGVtKSB7XHJcblx0XHRjb25zdCBvcGVuYm9vbGVhbiA9IHRoaXMub3Blbk5vZGVDdXJyZW50LmluY2x1ZGVzKG5vZGUpO1xyXG5cdFx0aWYgKHRoaXMub3Blbk5vZGVDdXJyZW50Lmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLm9wZW5Ob2RlQ3VycmVudC5zcGxpY2UoMCwgdGhpcy5vcGVuTm9kZUN1cnJlbnQubGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdGlmIChvcGVuYm9vbGVhbikge1xyXG5cdFx0XHRpZiAobm9kZS5sZXZlbCA+PSAxKSB7XHJcblx0XHRcdFx0dGhpcy5yZWN1cnNpb25GdW4obm9kZS5wYXJlbnQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChub2RlLmxldmVsID09PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5yZWN1cnNpb25GdW4odGhpcy5kYXRhYmFzZS5yb290KTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5yZWN1cnNpb25GdW4obm9kZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdG1lc3NhZ2VzKCkge1xyXG5cdFx0Y29uc3QgY2hhdERhdGEgPSBKU09OLnBhcnNlKHRoaXMucHJqLmxvYWREYXRhKCdjaGF0ZGF0YScpKTtcclxuXHRcdGlmIChjaGF0RGF0YSA9PSBudWxsKSB7XHJcblx0XHRcdHRoaXMucHJqLnNhdmVEYXRhKCdjaGF0ZGF0YScsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hhdE1lc3NhZ2VzKSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLnN1YnMucHVzaChcclxuXHRcdFx0dGhpcy5jdXJyZW50LndzQ2hhdC5vYnNlcnZhYmxlLnN1YnNjcmliZShcclxuXHRcdFx0XHRuID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuY2hhdE1lc3NhZ2VzLnB1c2gobik7XHJcblx0XHRcdFx0XHR0aGlzLnByai5zYXZlRGF0YSgnY2hhdGRhdGEnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXRNZXNzYWdlcykpO1xyXG5cdFx0XHRcdFx0aWYgKG4gIT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVucmVhZCA9IHRoaXMudW5yZWFkICsgMTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NoYXRkYXRhJykpKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVyciA9PiBjb25zb2xlLmxvZyhlcnIpLFxyXG5cdFx0XHRcdCgpID0+IGNvbnNvbGUubG9nKCdjb21wb25lbnQnKVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5jaGF0TWVzc2FnZXMgPSBjaGF0RGF0YTtcclxuXHR9XHJcblx0ZnJvbUNoaWxkRnVuYyhpdGVtOiBOYXZJdGVtKSB7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVOb2RlLmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLmFjdGl2ZU5vZGUuc3BsaWNlKDAsIHRoaXMuYWN0aXZlTm9kZS5sZW5ndGgpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZWN1cnNpb25GdW5zKGl0ZW0pO1xyXG5cdFx0aWYgKHRoaXMub3Blbk5vZGVDdXJyZW50Lmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLm9wZW5Ob2RlQ3VycmVudC5zcGxpY2UoMCwgdGhpcy5vcGVuTm9kZUN1cnJlbnQubGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMucmVjdXJzaW9uRnVuKGl0ZW0pO1xyXG5cdH1cclxufVxyXG4iXX0=