@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
370 lines • 31.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: accordion.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
import { I18nService } from '@duoduo-oba/ng-devui/i18n';
var AccordionComponent = /** @class */ (function () {
function AccordionComponent(i18n) {
var _this = this;
this.i18n = i18n;
/* Key值定义, 用于自定义数据结构 */
this.titleKey = 'title'; // 标题的key,item[titleKey]类型为string,为标题显示内容
// 标题的key,item[titleKey]类型为string,为标题显示内容
this.loadingKey = 'loading'; // 子菜单动态加载item[loadingKey]类型为boolean
// 子菜单动态加载item[loadingKey]类型为boolean
this.childrenKey = 'children'; // 子菜单Key
// 子菜单Key
this.disabledKey = 'disabled'; // 是否禁用Key
// 是否禁用Key
this.activeKey = 'active'; // 菜单是否激活/选中
// 菜单是否激活/选中
this.openKey = 'open'; // 菜单是否打开
// 可点击菜单内容条模板
this.menuToggle = new EventEmitter(); // 可展开菜单展开事件
// 可展开菜单展开事件
this.itemClick = new EventEmitter(); // 可点击菜单点击事件
// 可点击菜单点击事件
this.activeItemChange = new EventEmitter();
/**
* 高级选项和模板
*/
this.restrictOneOpen = false; // 限制一级菜单同时只能打开一个
// 限制一级菜单同时只能打开一个
this.autoOpenActiveMenu = false; // 自动展开活跃菜单
// 自动展开活跃菜单
this.showNoContent = true; // 没有内容的时候是否显示没有数据
// 可折叠菜单内容完全自定义,用做折叠面板
/* 内置路由/链接/动态判断路由或链接类型 */
this.linkType = '';
this.linkTypeKey = 'linkType'; // linkType为'dependOnLinkTypeKey'时指定对象linkType定义区
// linkType为'dependOnLinkTypeKey'时指定对象linkType定义区
this.linkKey = 'link'; // 链接内容的key
// 链接内容的key
this.linkTargetKey = 'target'; // 链接目标窗口的key
// 链接目标窗口的key
this.linkDefaultTarget = '_self'; // 不设置target的时候target默认值
// 点击了可点击菜单
this.itemClickFn = (/**
* @param {?} itemEvent
* @return {?}
*/
function (itemEvent) {
/** @type {?} */
var prevActiveItem = _this.activeItem;
_this.activeItemFn(itemEvent.item);
_this.itemClick.emit(tslib_1.__assign({}, itemEvent, { prevActiveItem: prevActiveItem }));
});
this.linkItemClickFn = (/**
* @param {?} itemEvent
* @return {?}
*/
function (itemEvent) {
/** @type {?} */
var prevActiveItem = _this.activeItem;
_this.activeItem = itemEvent.item;
_this.itemClick.emit(tslib_1.__assign({}, itemEvent, { prevActiveItem: prevActiveItem }));
});
// 打开或关闭可折叠菜单
this.menuToggleFn = (/**
* @param {?} menuEvent
* @return {?}
*/
function (menuEvent) {
_this.openMenuFn(menuEvent.item, menuEvent.open);
_this.menuToggle.emit(menuEvent);
});
}
/**
* @param {?} changes
* @return {?}
*/
AccordionComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
if (changes['data']) {
this.initActiveItem();
}
if (changes['autoOpenActiveMenu']) {
if (this.autoOpenActiveMenu && changes['autoOpenActiveMenu'].previousValue === false) {
this.cleanOpenData();
}
}
};
/**
* @return {?}
*/
AccordionComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (this.data) {
this.initActiveItem();
}
this.i18nCommonText = this.i18n.getI18nText().common;
this.i18nSubscription = this.i18n.langChange().subscribe((/**
* @param {?} data
* @return {?}
*/
function (data) {
_this.i18nCommonText = data.common;
}));
};
/**
* @return {?}
*/
AccordionComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.i18nSubscription) {
this.i18nSubscription.unsubscribe();
}
};
/**
* @private
* @param {?} arr
* @param {?=} childrenKey
* @param {?=} includeParent
* @param {?=} includeLeaf
* @return {?}
*/
AccordionComponent.prototype.flatten = /**
* @private
* @param {?} arr
* @param {?=} childrenKey
* @param {?=} includeParent
* @param {?=} includeLeaf
* @return {?}
*/
function (arr, childrenKey, includeParent, includeLeaf) {
var _this = this;
if (childrenKey === void 0) { childrenKey = 'children'; }
if (includeParent === void 0) { includeParent = false; }
if (includeLeaf === void 0) { includeLeaf = true; }
return arr.reduce((/**
* @param {?} acc
* @param {?} cur
* @return {?}
*/
function (acc, cur) {
/** @type {?} */
var children = cur[childrenKey];
if (children === undefined) {
if (includeLeaf) {
acc.push(cur);
}
}
else {
if (includeParent) {
acc.push(cur);
}
if (Array.isArray(children)) {
acc.push.apply(acc, tslib_1.__spread(_this.flatten(children, childrenKey, includeParent)));
}
}
return acc;
}), []);
};
/**
* @private
* @return {?}
*/
AccordionComponent.prototype.cleanOpenData = /**
* @private
* @return {?}
*/
function () {
var _this = this;
this.flatten(this.data, this.childrenKey, true, false).forEach((/**
* @param {?} item
* @return {?}
*/
function (item) { return item[_this.openKey] = undefined; }));
};
// 默认激活
// 默认激活
/**
* @return {?}
*/
AccordionComponent.prototype.initActiveItem =
// 默认激活
/**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var activeItem = this.flatten(this.data, this.childrenKey)
.filter((/**
* @param {?} item
* @return {?}
*/
function (item) { return item[_this.activeKey]; })).pop();
if (activeItem) {
if (!this.activeItem) {
this.activeItemFn(activeItem);
}
}
else {
this.activeItem = undefined;
}
};
// 激活子菜单项并去掉其他子菜单的激活
// 激活子菜单项并去掉其他子菜单的激活
/**
* @param {?} item
* @return {?}
*/
AccordionComponent.prototype.activeItemFn =
// 激活子菜单项并去掉其他子菜单的激活
/**
* @param {?} item
* @return {?}
*/
function (item) {
if (this.activeItem && this.activeItem[this.activeKey]) {
this.activeItem[this.activeKey] = false;
}
item[this.activeKey] = true;
this.activeItem = item;
this.activeItemChange.emit(this.activeItem);
};
// 打开或关闭一级菜单,如果有限制只能展开一项则关闭其他一级菜单
// 打开或关闭一级菜单,如果有限制只能展开一项则关闭其他一级菜单
/**
* @param {?} item
* @param {?} open
* @return {?}
*/
AccordionComponent.prototype.openMenuFn =
// 打开或关闭一级菜单,如果有限制只能展开一项则关闭其他一级菜单
/**
* @param {?} item
* @param {?} open
* @return {?}
*/
function (item, open) {
var _this = this;
if (open && this.restrictOneOpen) {
((/** @type {?} */ ((this.data)))).forEach((/**
* @param {?} itemtemp
* @return {?}
*/
function (itemtemp) { itemtemp[_this.openKey] = false; }));
}
item[this.openKey] = open;
};
AccordionComponent.decorators = [
{ type: Component, args: [{
selector: 'd-accordion',
template: "<d-accordion-list class=\"devui-accordion-menu devui-scrollbar\" [data]=\"data\" [deepth]=\"0\" [parent]=\"null\"> </d-accordion-list>\r\n",
styles: ["@charset \"UTF-8\";:host{display:block}:host ::ng-deep d-accordion-item,:host ::ng-deep d-accordion-item-hreflink,:host ::ng-deep d-accordion-item-routerlink,:host ::ng-deep d-accordion-list,:host ::ng-deep d-accordion-menu{display:block}:host ::ng-deep .devui-accordion-menu{display:block;background:#fff;box-shadow:0 1px 2px 0 rgba(41,48,64,.2);width:100%;overflow-y:auto}:host ::ng-deep .devui-accordion-menu>.devui-accordion-list>.devui-accordion-item>.devui-accordion-item-title,:host ::ng-deep .devui-accordion-menu>.devui-accordion-list>.devui-accordion-item>.devui-accordion-menu-item>.devui-accordion-item-title{font-weight:700}:host ::ng-deep .devui-accordion-menu .devui-over-flow-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host ::ng-deep .devui-accordion-submenu{background:#fff;width:100%}:host ::ng-deep .devui-accordion-item-title{display:block;height:40px;width:100%;padding:0 10px 0 20px;font-weight:400;line-height:40px;color:#252b3a;background:0 0;cursor:pointer}:host ::ng-deep .devui-accordion-item-title.disabled{opacity:.3;cursor:default}:host ::ng-deep .devui-accordion-item-title:not(.disabled):hover{background:#f2f5fc}:host ::ng-deep .devui-accordion-item-title:not(.disabled).active,:host ::ng-deep .devui-accordion-item-title:not(.disabled).devui-router-active{color:#5e7ce0;background:#f2f5fc}:host ::ng-deep .devui-accordion-item-title:not(.disabled).active>a,:host ::ng-deep .devui-accordion-item-title:not(.disabled).devui-router-active>a{color:#5e7ce0}:host ::ng-deep .devui-accordion-item-title>a{text-decoration:none;display:block;width:100%;color:#252b3a}:host ::ng-deep .devui-accordion-item-title>a:hover{color:inherit;text-decoration:none}:host ::ng-deep d-accordion-item-hreflink.devui-accordion-item-title,:host ::ng-deep d-accordion-item-routerlink.devui-accordion-item-title{padding:0}:host ::ng-deep d-accordion-item-hreflink.devui-accordion-item-title>a,:host ::ng-deep d-accordion-item-routerlink.devui-accordion-item-title>a{padding:0 10px 0 20px}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title{position:relative;padding-right:30px}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title>.devui-accordion-open-icon{display:inline-block;text-indent:0;pointer-events:none;position:absolute;right:10px;top:12px;width:16px;height:16px;line-height:16px;-webkit-transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title>.devui-accordion-open-icon>svg{width:16px;height:16px}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title>.devui-accordion-open-icon>svg polygon{fill:#252b3a}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title:not(.open)>.devui-accordion-open-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);-webkit-transform-origin:center;transform-origin:center}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title.disabled>.devui-accordion-open-icon{opacity:.3}:host ::ng-deep .devui-accordion-menu-item>.devui-accordion-item-title.active{color:#5e7ce0;background:0 0}:host ::ng-deep d-accordion-list.devui-accordion-menu-hidden{display:none}"]
}] }
];
/** @nocollapse */
AccordionComponent.ctorParameters = function () { return [
{ type: I18nService }
]; };
AccordionComponent.propDecorators = {
data: [{ type: Input }],
titleKey: [{ type: Input }],
loadingKey: [{ type: Input }],
childrenKey: [{ type: Input }],
disabledKey: [{ type: Input }],
activeKey: [{ type: Input }],
openKey: [{ type: Input }],
menuItemTemplate: [{ type: Input }],
itemTemplate: [{ type: Input }],
menuToggle: [{ type: Output }],
itemClick: [{ type: Output }],
activeItemChange: [{ type: Output }],
restrictOneOpen: [{ type: Input }],
autoOpenActiveMenu: [{ type: Input }],
showNoContent: [{ type: Input }],
noContentTemplate: [{ type: Input }],
loadingTemplate: [{ type: Input }],
innerListTemplate: [{ type: Input }],
linkType: [{ type: Input }],
linkTypeKey: [{ type: Input }],
linkKey: [{ type: Input }],
linkTargetKey: [{ type: Input }],
linkDefaultTarget: [{ type: Input }]
};
return AccordionComponent;
}());
export { AccordionComponent };
if (false) {
/** @type {?} */
AccordionComponent.prototype.data;
/** @type {?} */
AccordionComponent.prototype.titleKey;
/** @type {?} */
AccordionComponent.prototype.loadingKey;
/** @type {?} */
AccordionComponent.prototype.childrenKey;
/** @type {?} */
AccordionComponent.prototype.disabledKey;
/** @type {?} */
AccordionComponent.prototype.activeKey;
/** @type {?} */
AccordionComponent.prototype.openKey;
/** @type {?} */
AccordionComponent.prototype.menuItemTemplate;
/** @type {?} */
AccordionComponent.prototype.itemTemplate;
/** @type {?} */
AccordionComponent.prototype.menuToggle;
/** @type {?} */
AccordionComponent.prototype.itemClick;
/** @type {?} */
AccordionComponent.prototype.activeItemChange;
/**
* 高级选项和模板
* @type {?}
*/
AccordionComponent.prototype.restrictOneOpen;
/** @type {?} */
AccordionComponent.prototype.autoOpenActiveMenu;
/** @type {?} */
AccordionComponent.prototype.showNoContent;
/** @type {?} */
AccordionComponent.prototype.noContentTemplate;
/** @type {?} */
AccordionComponent.prototype.loadingTemplate;
/** @type {?} */
AccordionComponent.prototype.innerListTemplate;
/** @type {?} */
AccordionComponent.prototype.linkType;
/** @type {?} */
AccordionComponent.prototype.linkTypeKey;
/** @type {?} */
AccordionComponent.prototype.linkKey;
/** @type {?} */
AccordionComponent.prototype.linkTargetKey;
/** @type {?} */
AccordionComponent.prototype.linkDefaultTarget;
/** @type {?} */
AccordionComponent.prototype.activeItem;
/** @type {?} */
AccordionComponent.prototype.i18nCommonText;
/** @type {?} */
AccordionComponent.prototype.i18nSubscription;
/** @type {?} */
AccordionComponent.prototype.itemClickFn;
/** @type {?} */
AccordionComponent.prototype.linkItemClickFn;
/** @type {?} */
AccordionComponent.prototype.menuToggleFn;
/**
* @type {?}
* @private
*/
AccordionComponent.prototype.i18n;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2FjY29yZGlvbi8iLCJzb3VyY2VzIjpbImFjY29yZGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFdBQVcsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVqSSxPQUFPLEVBQUUsV0FBVyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUczRDtJQTBDRSw0QkFBb0IsSUFBaUI7UUFBckMsaUJBQ0M7UUFEbUIsU0FBSSxHQUFKLElBQUksQ0FBYTs7UUFsQzVCLGFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyx5Q0FBeUM7O1FBQzdELGVBQVUsR0FBRyxTQUFTLENBQUMsQ0FBQyxvQ0FBb0M7O1FBQzVELGdCQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsU0FBUzs7UUFDbkMsZ0JBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxVQUFVOztRQUNwQyxjQUFTLEdBQUcsUUFBUSxDQUFDLENBQUMsWUFBWTs7UUFDbEMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFNBQVM7O1FBTTFCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQyxDQUFDLFlBQVk7O1FBQ3ZFLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBMkIsQ0FBQyxDQUFDLFlBQVk7O1FBQ3JFLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7Ozs7UUFHNUMsb0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyxpQkFBaUI7O1FBQzFDLHVCQUFrQixHQUFHLEtBQUssQ0FBQyxDQUFDLFdBQVc7O1FBQ3ZDLGtCQUFhLEdBQUcsSUFBSSxDQUFDLENBQUMsa0JBQWtCOzs7UUFNeEMsYUFBUSxHQUFxRSxFQUFFLENBQUM7UUFDaEYsZ0JBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxpREFBaUQ7O1FBQzNFLFlB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TCxLQUFLO2tDQUNMLEtBQUs7b0NBQ0wsS0FBSzsyQkFHTCxLQUFLOzhCQUNMLEtBQUs7MEJBQ0wsS0FBSztnQ0FDTCxLQUFLO29DQUNMLEtBQUs7O0lBNkdSLHlCQUFDO0NBQUEsQUFqSkQsSUFpSkM7U0E1SVksa0JBQWtCOzs7SUFDN0Isa0NBQThDOztJQUU5QyxzQ0FBNEI7O0lBQzVCLHdDQUFnQzs7SUFDaEMseUNBQWtDOztJQUNsQyx5Q0FBa0M7O0lBQ2xDLHVDQUE4Qjs7SUFDOUIscUNBQTBCOztJQUcxQiw4Q0FBNEM7O0lBQzVDLDBDQUF3Qzs7SUFFeEMsd0NBQW9FOztJQUNwRSx1Q0FBa0U7O0lBQ2xFLDhDQUFxRDs7Ozs7SUFHckQsNkNBQWlDOztJQUNqQyxnREFBb0M7O0lBQ3BDLDJDQUE4Qjs7SUFDOUIsK0NBQTZDOztJQUM3Qyw2Q0FBMkM7O0lBQzNDLCtDQUE2Qzs7SUFHN0Msc0NBQXlGOztJQUN6Rix5Q0FBa0M7O0lBQ2xDLHFDQUEwQjs7SUFDMUIsMkNBQWtDOztJQUNsQywrQ0FBcUM7O0lBRXJDLHdDQUFXOztJQUNYLDRDQUF3Qzs7SUFDeEMsOENBQStCOztJQXNFL0IseUNBSUM7O0lBRUQsNkNBSUM7O0lBR0QsMENBR0M7Ozs7O0lBcEZXLGtDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY2NvcmRpb25NZW51VHlwZSwgQWNjb3JkaW9uTWVudVRvZ2dsZUV2ZW50LCBBY2NvcmRpb25JdGVtQ2xpY2tFdmVudCwgQWNjb3JkaW9uT3B0aW9uc30gZnJvbSAnLi9hY2NvcmRpb24udHlwZSc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJMThuSW50ZXJmYWNlIH0gZnJvbSAnbmctZGV2dWkvaTE4bic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLWFjY29yZGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY29yZGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWNjb3JkaW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25Db21wb25lbnQgaW1wbGVtZW50cyBBY2NvcmRpb25PcHRpb25zLCBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBkYXRhOiBBcnJheTxhbnk+IHwgQWNjb3JkaW9uTWVudVR5cGU7XHJcbiAgLyogS2V55YC85a6a5LmJLCDnlKjkuo7oh6rlrprkuYnmlbDmja7nu5PmnoQgKi9cclxuICBASW5wdXQoKSB0aXRsZUtleSA9ICd0aXRsZSc7IC8vIOagh+mimOeahGtlee+8jGl0ZW1bdGl0bGVLZXld57G75Z6L5Li6c3RyaW5n77yM5Li65qCH6aKY5pi+56S65YaF5a65XHJcbiAgQElucHV0KCkgbG9hZGluZ0tleSA9ICdsb2FkaW5nJzsgLy8g5a2Q6I+c5Y2V5Yqo5oCB5Yqg6L29aXRlbVtsb2FkaW5nS2V5Xeexu+Wei+S4umJvb2xlYW5cclxuICBASW5wdXQoKSBjaGlsZHJlbktleSA9ICdjaGlsZHJlbic7IC8vIOWtkOiPnOWNlUtleVxyXG4gIEBJbnB1dCgpIGRpc2FibGVkS2V5ID0gJ2Rpc2FibGVkJzsgLy8g5piv5ZCm56aB55SoS2V5XHJcbiAgQElucHV0KCkgYWN0aXZlS2V5ID0gJ2FjdGl2ZSc7IC8vIOiPnOWNleaYr+WQpua/gOa0uy/pgInkuK1cclxuICBASW5wdXQoKSBvcGVuS2V5ID0gJ29wZW4nOyAvLyDoj5zljZXmmK/lkKbmiZPlvIBcclxuXHJcbiAgLyog6I+c5Y2V5qih5p2/ICovXHJcbiAgQElucHV0KCkgbWVudUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgLy8g5Y+v5bGV5byA6I+c5Y2V5YaF5a655p2h5qih5p2/XHJcbiAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+OyAvLyDlj6/ngrnlh7voj5zljZXlhoXlrrnmnaHmqKHmnb9cclxuXHJcbiAgQE91dHB1dCgpIG1lbnVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPEFjY29yZGlvbk1lbnVUb2dnbGVFdmVudD4oKTsgLy8g5Y+v5bGV5byA6I+c5Y2V5bGV5byA5LqL5Lu2XHJcbiAgQE91dHB1dCgpIGl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QWNjb3JkaW9uSXRlbUNsaWNrRXZlbnQ+KCk7IC8vIOWPr+eCueWHu+iPnOWNleeCueWHu+S6i+S7tlxyXG4gIEBPdXRwdXQoKSBhY3RpdmVJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKiDpq5jnuqfpgInpobnlkozmqKHmnb8gKi9cclxuICBASW5wdXQoKSByZXN0cmljdE9uZU9wZW4gPSBmYWxzZTsgLy8g6ZmQ5Yi25LiA57qn6I+c5Y2V5ZCM5pe25Y+q6IO95omT5byA5LiA5LiqXHJcbiAgQElucHV0KCkgYXV0b09wZW5BY3RpdmVNZW51ID0gZmFsc2U7IC8vIOiHquWKqOWxleW8gOa0u+i3g+iPnOWNlVxyXG4gIEBJbnB1dCgpIHNob3dOb0NvbnRlbnQgPSB0cnVlOyAvLyDmsqHmnInlhoXlrrnnmoTml7blgJnmmK/lkKbmmL7npLrmsqHmnInmlbDmja5cclxuICBASW5wdXQoKSBub0NvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgLy8g5rKh5pyJ5YaF5a6555qE5pe25YCZ5L2/55So6Ieq5a6a5LmJ5qih5p2/XHJcbiAgQElucHV0KCkgbG9hZGluZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+OyAvLyDliqDovb3kuK3kvb/nlKjoh6rlrprkuYnmqKHmnb9cclxuICBASW5wdXQoKSBpbm5lckxpc3RUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjsgLy8g5Y+v5oqY5Y+g6I+c5Y2V5YaF5a655a6M5YWo6Ieq5a6a5LmJ77yM55So5YGa5oqY5Y+g6Z2i5p2/XHJcblxyXG4gIC8qIOWGhee9rui3r+eUsS/pk77mjqUv5Yqo5oCB5Yik5pat6Lev55Sx5oiW6ZO+5o6l57G75Z6LICovXHJcbiAgQElucHV0KCkgbGlua1R5cGU6ICdyb3V0ZXJMaW5rJyB8ICdocmVmTGluaycgfCAnZGVwZW5kT25MaW5rVHlwZUtleScgfCAnJyB8IHN0cmluZyAgPSAnJztcclxuICBASW5wdXQoKSBsaW5rVHlwZUtleSA9ICdsaW5rVHlwZSc7IC8vIGxpbmtUeXBl5Li6J2RlcGVuZE9uTGlua1R5cGVLZXkn5pe25oyH5a6a5a+56LGhbGlua1R5cGXlrprkuYnljLpcclxuICBASW5wdXQoKSBsaW5rS2V5ID0gJ2xpbmsnOyAvLyDpk77mjqXlhoXlrrnnmoRrZXlcclxuICBASW5wdXQoKSBsaW5rVGFyZ2V0S2V5ID0gJ3RhcmdldCc7IC8vIOmTvuaOpeebruagh+eql+WPo+eahGtleVxyXG4gIEBJbnB1dCgpIGxpbmtEZWZhdWx0VGFyZ2V0ID0gJ19zZWxmJzsgLy8g5LiN6K6+572udGFyZ2V055qE5pe25YCZdGFyZ2V06buY6K6k5YC8XHJcblxyXG4gIGFjdGl2ZUl0ZW07IC8vIOiusOW9leeUqOaIt+eCueWHu+eahOa/gOa0u+iPnOWNlemhuVxyXG4gIGkxOG5Db21tb25UZXh0OiBJMThuSW50ZXJmYWNlWydjb21tb24nXTtcclxuICBpMThuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10pIHtcclxuICAgICAgIHRoaXMuaW5pdEFjdGl2ZUl0ZW0oKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydhdXRvT3BlbkFjdGl2ZU1lbnUnXSkge1xyXG4gICAgICBpZiAodGhpcy5hdXRvT3BlbkFjdGl2ZU1lbnUgJiYgY2hhbmdlc1snYXV0b09wZW5BY3RpdmVNZW51J10ucHJldmlvdXNWYWx1ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLmNsZWFuT3BlbkRhdGEoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5kYXRhKSB7XHJcbiAgICAgIHRoaXMuaW5pdEFjdGl2ZUl0ZW0oKTtcclxuICAgIH1cclxuICAgIHRoaXMuaTE4bkNvbW1vblRleHQgPSB0aGlzLmkxOG4uZ2V0STE4blRleHQoKS5jb21tb247XHJcbiAgICB0aGlzLmkxOG5TdWJzY3JpcHRpb24gPSB0aGlzLmkxOG4ubGFuZ0NoYW5nZSgpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pMThuQ29tbW9uVGV4dCA9IGRhdGEuY29tbW9uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIGlmICh0aGlzLmkxOG5TdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5pMThuU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZsYXR0ZW4oYXJyOiBBcnJheTxhbnk+LCBjaGlsZHJlbktleSA9ICdjaGlsZHJlbicsIGluY2x1ZGVQYXJlbnQgPSBmYWxzZSwgaW5jbHVkZUxlYWYgPSB0cnVlKSB7XHJcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBjdXJbY2hpbGRyZW5LZXldO1xyXG4gICAgICBpZiAoIGNoaWxkcmVuID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoaW5jbHVkZUxlYWYpIHtcclxuICAgICAgICAgIGFjYy5wdXNoKGN1cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpbmNsdWRlUGFyZW50KSB7XHJcbiAgICAgICAgICBhY2MucHVzaChjdXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgICAgIGFjYy5wdXNoKC4uLnRoaXMuZmxhdHRlbihjaGlsZHJlbiwgY2hpbGRyZW5LZXksIGluY2x1ZGVQYXJlbnQpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGFjYztcclxuICAgIH0sIFtdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xlYW5PcGVuRGF0YSgpIHtcclxuICAgIHRoaXMuZmxhdHRlbih0aGlzLmRhdGEsIHRoaXMuY2hpbGRyZW5LZXksIHRydWUsIGZhbHNlKS5mb3JFYWNoKFxyXG4gICAgICBpdGVtID0+IGl0ZW1bdGhpcy5vcGVuS2V5XSA9IHVuZGVmaW5lZFxyXG4gICAgKTtcclxuICB9XHJcbiAgLy8g6buY6K6k5r+A5rS7XHJcbiAgaW5pdEFjdGl2ZUl0ZW0oKSB7XHJcbiAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5mbGF0dGVuKHRoaXMuZGF0YSwgdGhpcy5jaGlsZHJlbktleSlcclxuICAgICAgLmZpbHRlcihpdGVtID0+IGl0ZW1bdGhpcy5hY3RpdmVLZXldKS5wb3AoKTtcclxuICAgIGlmIChhY3RpdmVJdGVtKSB7XHJcbiAgICAgIGlmICghdGhpcy5hY3RpdmVJdGVtKSB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtRm4oYWN0aXZlSXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSXRlbSA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOeCueWHu+S6huWPr+eCueWHu+iPnOWNlVxyXG4gIHB1YmxpYyBpdGVtQ2xpY2tGbiA9IChpdGVtRXZlbnQ6IEFjY29yZGlvbkl0ZW1DbGlja0V2ZW50KSA9PiB7XHJcbiAgICBjb25zdCBwcmV2QWN0aXZlSXRlbSA9IHRoaXMuYWN0aXZlSXRlbTtcclxuICAgIHRoaXMuYWN0aXZlSXRlbUZuKGl0ZW1FdmVudC5pdGVtKTtcclxuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoey4uLml0ZW1FdmVudCwgcHJldkFjdGl2ZUl0ZW06IHByZXZBY3RpdmVJdGVtfSk7XHJcbiAgfVxyXG5cclxuICBsaW5rSXRlbUNsaWNrRm4gPSAoaXRlbUV2ZW50OiBBY2NvcmRpb25JdGVtQ2xpY2tFdmVudCkgPT4ge1xyXG4gICAgY29uc3QgcHJldkFjdGl2ZUl0ZW0gPSB0aGlzLmFjdGl2ZUl0ZW07XHJcbiAgICB0aGlzLmFjdGl2ZUl0ZW0gPSBpdGVtRXZlbnQuaXRlbTtcclxuICAgIHRoaXMuaXRlbUNsaWNrLmVtaXQoey4uLml0ZW1FdmVudCwgcHJldkFjdGl2ZUl0ZW06IHByZXZBY3RpdmVJdGVtfSk7XHJcbiAgfVxyXG5cclxuICAvLyDmiZPlvIDmiJblhbPpl63lj6/mipjlj6Doj5zljZVcclxuICBwdWJsaWMgbWVudVRvZ2dsZUZuID0gKG1lbnVFdmVudDogQWNjb3JkaW9uTWVudVRvZ2dsZUV2ZW50KSA9PiB7XHJcbiAgICB0aGlzLm9wZW5NZW51Rm4obWVudUV2ZW50Lml0ZW0sIG1lbnVFdmVudC5vcGVuKTtcclxuICAgIHRoaXMubWVudVRvZ2dsZS5lbWl0KG1lbnVFdmVudCk7XHJcbiAgfVxyXG5cclxuICAvLyDmv4DmtLvlrZDoj5zljZXpobnlubbljrvmjonlhbbku5blrZDoj5zljZXnmoTmv4DmtLtcclxuICBhY3RpdmVJdGVtRm4oaXRlbSkge1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlSXRlbSAmJiB0aGlzLmFjdGl2ZUl0ZW1bdGhpcy5hY3RpdmVLZXldKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlSXRlbVt0aGlzLmFjdGl2ZUtleV0gPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGl0ZW1bdGhpcy5hY3RpdmVLZXldID0gdHJ1ZTtcclxuICAgIHRoaXMuYWN0aXZlSXRlbSA9IGl0ZW07XHJcbiAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZUl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgLy8g5omT5byA5oiW5YWz6Zet5LiA57qn6I+c5Y2V77yM5aaC5p6c5pyJ6ZmQ5Yi25Y+q6IO95bGV5byA5LiA6aG55YiZ5YWz6Zet5YW25LuW5LiA57qn6I+c5Y2VXHJcbiAgb3Blbk1lbnVGbihpdGVtLCBvcGVuKSB7XHJcbiAgICBpZiAob3BlbiAmJiB0aGlzLnJlc3RyaWN0T25lT3Blbikge1xyXG4gICAgICAoPEFycmF5PGFueT4+KHRoaXMuZGF0YSkpLmZvckVhY2goaXRlbXRlbXAgPT4geyBpdGVtdGVtcFt0aGlzLm9wZW5LZXldID0gZmFsc2U7IH0pO1xyXG4gICAgfVxyXG4gICAgaXRlbVt0aGlzLm9wZW5LZXldID0gb3BlbjtcclxuICB9XHJcbn1cclxuIl19