UNPKG

@kre-form/ant

Version:

222 lines 21.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input, Output, EventEmitter, ViewChild } from "@angular/core"; import * as _ from "lodash"; export class KreFormPrivateTree { constructor() { //是否显示Tag this.tag = true; //单选?多选 this.selectType = "single"; this.expandAll = true; //选中节点 this.selectData = []; //树数据 this.data = []; this.treeChangeEvent = new EventEmitter(); this.selectedKey = []; //选择节点 this.selectedNode = []; this.skeletonStatus = 0; } /** * @return {?} */ ngOnInit() { } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes.selectData) { this.treeChecked(this.selectData); } if (changes.data) { //setTimeout(() => { this.skeletonStatus = 1; //}, 100); } } /** * @param {?} event * @return {?} */ nzClick(event) { if (this.selectType != "multiple") { this.selectData.forEach((/** * @param {?} item * @param {?} index * @param {?} object * @return {?} */ (item, index, object) => { if (item != undefined && item != null && item.value != undefined && item.value != null && event != undefined && event != null && event.node != undefined && event.node != null && event.node.key != undefined && event.node.key != null && event.node.title != undefined && event.node.title != null && item.value !== event.node.key) { object.splice(index, 1); } })); if (this.selectData.length < 1) { if (event != undefined && event != null && event.node != undefined && event.node != null && event.node.key != undefined && event.node.key != null && event.node.title != undefined && event.node.title != null) { this.selectData.push({ label: event.node.title, value: event.node.key }); } } this.treeChangeEvent.emit({ checkData: this.selectData }); } } //点击复选框触发 /** * @param {?} event * @return {?} */ nzCheck(event) { if (event != undefined && event != null && event.keys != undefined && event.keys != null && event.node != undefined && event.node != null && event.node.key != undefined && event.node.key != null && event.node.title != undefined && event.node.title != null) { /** @type {?} */ let isAdd = event.keys.some((/** * @param {?} key * @return {?} */ (key) => { return key === _.get(event, "node.key"); })); if (isAdd == true) { this.selectData.push({ label: event.node.title, value: event.node.key }); } else { this.selectData.forEach((/** * @param {?} item * @param {?} index * @param {?} object * @return {?} */ (item, index, object) => { if (item.value === _.get(event, "node.key")) { object.splice(index, 1); } })); } } this.treeChecked(this.selectData); this.treeChangeEvent.emit({ checkData: this.selectData }); } //重置选中节点 /** * @param {?} items * @return {?} */ treeChecked(items) { if (items != null && items.length > 0) { this.selectedKey = items.map((/** * @param {?} item * @return {?} */ (item) => { return item.value; })); } else { this.selectedKey = []; } } //删除选中节点 /** * @param {?} node * @return {?} */ selectClearById(node) { this.selectData.forEach((/** * @param {?} item * @param {?} index * @param {?} object * @return {?} */ (item, index, object) => { if (item.value === node) { object.splice(index, 1); } })); this.treeChecked(this.selectData); this.treeChangeEvent.emit({ checkData: this.selectData, delete: node }); } /** * @return {?} */ selectAllClear() { //this.selectData =[]; } } KreFormPrivateTree.decorators = [ { type: Component, args: [{ selector: "kreform-private-tree", template: " \n <ul class=\"component-tree\">\n <li class=\"tree-item kreform-scrollbar \">\n \n <nz-tree #nzTreeComponent [nzData]=\"data\" (nzClick)=\"nzClick($event)\" (nzCheckBoxChange)=\"nzCheck($event)\" [nzCheckable]=\"selectType==='multiple'\" [nzSelectedKeys]=\"selectedKey\" [nzCheckedKeys]=\"selectedKey\" [nzExpandAll]=\"expandAll\" [nzCheckStrictly]=\"true\">\n </nz-tree>\n </li>\n <li class=\"tree-tag kreform-scrollbar \" *ngIf=\"tag\">\n <div class=\"tag-header\">\n <label>\u5DF2\u9009<span>{{selectData.length}}</span>\u4EBA</label>\n <label (click)=\"selectAllClear()\">\u6E05\u7A7A</label>\n </div>\n <div class=\"tag-content\">\n <ng-container *ngFor=\"let item of selectData\">\n <nz-tag nzMode=\"closeable\" (nzOnClose)=\"selectClearById(item.value)\">{{item.label}}</nz-tag>\n </ng-container>\n </div>\n </li>\n </ul> ", styles: [":host ::ng-deep .kreform-scrollbar{scrollbar-color:transparent;overflow-y:overlay}:host ::ng-deep .kreform-scrollbar::-webkit-scrollbar{width:6px;height:6px}:host ::ng-deep .kreform-scrollbar::-webkit-scrollbar-track{box-shadow:inset 0 0 6px transparent}:host ::ng-deep .kreform-scrollbar::-webkit-scrollbar-thumb{background-color:#999;outline:#333 solid 1px;border-radius:6px}:host ::ng-deep kre-skeleton{height:100%}:host ::ng-deep .builder-content{width:100%;padding:0 0 0 12px}:host ::ng-deep .builder-content .content{width:50%;float:left;margin:0 0 15px;min-height:45px}:host ::ng-deep .builder-content .content .label{width:100%}:host ::ng-deep .builder-content .content .control{width:100%;padding:0 15px 0 0}:host ::ng-deep .builder-content .content .control .ant-input-number{width:100%!important}:host ::ng-deep .builder-content .textarea{width:100%}:host ::ng-deep .component-tree{list-style:none;padding:0;margin:0;display:flex;flex-direction:row;height:100%}:host ::ng-deep .component-tree .ant-tree-node-content-wrapper{font-size:12px!important;display:inline-block!important;padding:0 5px 0 0!important;min-width:200px!important}:host ::ng-deep .component-tree .ant-tree-node-selected{background-color:#f6f7fb!important}:host ::ng-deep .component-tree .tree-item{flex:1;border:0 solid #f6f7fb;padding:8px 5px 5px 10px;overflow-y:auto}:host ::ng-deep .component-tree .tree-tag{overflow-y:auto;width:330px;background-color:#f6f7fb;padding:15px}:host ::ng-deep .component-tree .tree-tag .tag-header{font-size:12px;font-weight:700;color:#777d93;padding:0 0 20px}:host ::ng-deep .component-tree .tree-tag .tag-header span{display:inline-block;padding:0 3px;color:#ff986b;font-weight:400}:host ::ng-deep .component-tree .tree-tag .tag-header label:nth-last-child(1){float:right;font-weight:400;color:#6375da;cursor:pointer}:host ::ng-deep .component-tree .tree-tag .tag-content .ant-tag{color:#6375da;border:0;padding:3px 8px;margin:0 10px 10px 0;background:#fff}:host ::ng-deep .component-tree .tree-tag .tag-content .ant-tag i{color:#6375da;font-weight:700}"] }] } ]; /** @nocollapse */ KreFormPrivateTree.ctorParameters = () => []; KreFormPrivateTree.propDecorators = { tag: [{ type: Input }], selectType: [{ type: Input }], expandAll: [{ type: Input }], selectData: [{ type: Input }], data: [{ type: Input }], treeChangeEvent: [{ type: Output }], nzTreeComponent: [{ type: ViewChild, args: ["nzTreeComponent", { static: false },] }] }; if (false) { /** @type {?} */ KreFormPrivateTree.prototype.tag; /** @type {?} */ KreFormPrivateTree.prototype.selectType; /** @type {?} */ KreFormPrivateTree.prototype.expandAll; /** @type {?} */ KreFormPrivateTree.prototype.selectData; /** @type {?} */ KreFormPrivateTree.prototype.data; /** @type {?} */ KreFormPrivateTree.prototype.treeChangeEvent; /** @type {?} */ KreFormPrivateTree.prototype.nzTreeComponent; /** @type {?} */ KreFormPrivateTree.prototype.selectedKey; /** @type {?} */ KreFormPrivateTree.prototype.selectedNode; /** @type {?} */ KreFormPrivateTree.prototype.skeletonStatus; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGtyZS1mb3JtL2FudC8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL3ByaXZhdGUvdHJlZS9pbmRleC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUdWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBYzVCLE1BQU0sT0FBTyxrQkFBa0I7SUEwQjdCOztRQXhCUyxRQUFHLEdBQVksSUFBSSxDQUFDOztRQUdwQixlQUFVLEdBQTBCLFFBQVEsQ0FBQztRQUU3QyxjQUFTLEdBQVcsSUFBSSxDQUFDOztRQUd6QixlQUFVLEdBQW1CLEVBQUUsQ0FBQzs7UUFHaEMsU0FBSSxHQUFnQixFQUFFLENBQUM7UUFFdEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFDO1FBSzNELGdCQUFXLEdBQVUsRUFBRSxDQUFDOztRQUd4QixpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFFbkMsbUJBQWMsR0FBVyxDQUFDLENBQUM7SUFDWixDQUFDOzs7O0lBRWhCLFFBQVEsS0FBSSxDQUFDOzs7OztJQUViLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDaEIsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLFVBQVU7U0FDWDtJQUNILENBQUM7Ozs7O0lBRUQsT0FBTyxDQUFDLEtBQXdCO1FBQzlCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxVQUFVLEVBQUU7WUFDakMsSUFBSSxDQUFD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LEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN6QjtRQUNILENBQUMsRUFBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDOzs7O0lBRUQsY0FBYztRQUNaLHNCQUFzQjtJQUN4QixDQUFDOzs7WUFuSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDgvQkFBcUM7O2FBRXRDOzs7OztrQkFHRSxLQUFLO3lCQUdMLEtBQUs7d0JBRUwsS0FBSzt5QkFHTCxLQUFLO21CQUdMLEtBQUs7OEJBRUwsTUFBTTs4QkFFTixTQUFTLFNBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzs7O0lBZi9DLGlDQUE2Qjs7SUFHN0Isd0NBQXNEOztJQUV0RCx1Q0FBa0M7O0lBR2xDLHdDQUF5Qzs7SUFHekMsa0NBQWdDOztJQUVoQyw2Q0FBMkQ7O0lBRTNELDZDQUM2Qzs7SUFFN0MseUNBQXdCOztJQUd4QiwwQ0FBbUM7O0lBRW5DLDRDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOelRyZWVDb21wb25lbnQgfSBmcm9tIFwibmctem9ycm8tYW50ZC90cmVlXCI7XG5pbXBvcnQgeyBOekZvcm1hdEVtaXRFdmVudCB9IGZyb20gXCJuZy16b3Jyby1hbnRkL2NvcmVcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xuXG5pbXBvcnQge1xuICBJU2VsZWN0ZWROb2RlLFxuICBJVHJlZURhdGEsXG4gIElDaGVja2VkVHJlZSxcbiAgSVRyZWVFdmVudFxufSBmcm9tIFwiLi4vLi4vLi4vdG9vbHMvdXRpbFwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3JlZm9ybS1wcml2YXRlLXRyZWVcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9pbmRleC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vaW5kZXguY29tcG9uZW50Lmxlc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3JlRm9ybVByaXZhdGVUcmVlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvL+aYr+WQpuaYvuekulRhZ1xuICBASW5wdXQoKSB0YWc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8v5Y2V6YCJ77yf5aSa6YCJXG4gIEBJbnB1dCgpIHNlbGVjdFR5cGU6IFwic2luZ2xlXCIgfCBcIm11bHRpcGxlXCIgPSBcInNpbmdsZVwiO1xuXG4gIEBJbnB1dCgpIGV4cGFuZEFsbDpib29sZWFuID0gdHJ1ZTtcblxuICAvL+mAieS4reiKgueCuVxuICBASW5wdXQoKSBzZWxlY3REYXRhOiBJQ2hlY2tlZFRyZWVbXSA9IFtdO1xuXG4gIC8v5qCR5pWw5o2uXG4gIEBJbnB1dCgpIGRhdGE6IElUcmVlRGF0YVtdID0gW107XG5cbiAgQE91dHB1dCgpIHRyZWVDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8SVRyZWVFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKFwibnpUcmVlQ29tcG9uZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBuelRyZWVDb21wb25lbnQ6IE56VHJlZUNvbXBvbmVudCB8IHVuZGVmaW5lZDtcblxuICBzZWxlY3RlZEtleTogYW55W10gPSBbXTtcblxuICAvL+mAieaLqeiKgueCuVxuICBzZWxlY3RlZE5vZGU6IElTZWxlY3RlZE5vZGVbXSA9IFtdO1xuXG4gIHNrZWxldG9uU3RhdHVzOiBudW1iZXIgPSAwO1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5zZWxlY3REYXRhKSB7XG4gICAgICB0aGlzLnRyZWVDaGVja2VkKHRoaXMuc2VsZWN0RGF0YSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgIC8vc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNrZWxldG9uU3RhdHVzID0gMTtcbiAgICAgIC8vfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBuekNsaWNrKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgIT0gXCJtdWx0aXBsZVwiKSB7XG4gICAgICB0aGlzLnNlbGVjdERhdGEuZm9yRWFjaCgoaXRlbTogYW55LCBpbmRleCwgb2JqZWN0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBpdGVtICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIGl0ZW0gIT0gbnVsbCAmJlxuICAgICAgICAgIGl0ZW0udmFsdWUgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQgIT0gbnVsbCAmJlxuICAgICAgICAgIGV2ZW50Lm5vZGUgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQubm9kZSAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQubm9kZS5rZXkgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQubm9kZS5rZXkgIT0gbnVsbCAmJlxuICAgICAgICAgIGV2ZW50Lm5vZGUudGl0bGUgIT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgZXZlbnQubm9kZS50aXRsZSAhPSBudWxsICYmXG4gICAgICAgICAgaXRlbS52YWx1ZSAhPT0gZXZlbnQubm9kZS5rZXlcbiAgICAgICAgKSB7XG4gICAgICAgICAgb2JqZWN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0RGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmVudCAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudCAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQubm9kZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudC5ub2RlICE9IG51bGwgJiZcbiAgICAgICAgICBldmVudC5ub2RlLmtleSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudC5ub2RlLmtleSAhPSBudWxsICYmXG4gICAgICAgICAgZXZlbnQubm9kZS50aXRsZSAhPSB1bmRlZmluZWQgJiZcbiAgICAgICAgICBldmVudC5ub2RlLnRpdGxlICE9IG51bGxcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3REYXRhLnB1c2goe1xuICAgICAgICAgICAgbGFiZWw6IGV2ZW50Lm5vZGUudGl0bGUsXG4gICAgICAgICAgICB2YWx1ZTogZXZlbnQubm9kZS5rZXlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy50cmVlQ2hhbmdlRXZlbnQuZW1pdCh7IGNoZWNrRGF0YTogdGhpcy5zZWxlY3REYXRhIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8v54K55Ye75aSN6YCJ5qGG6Kem5Y+RXG4gIG56Q2hlY2soZXZlbnQ6IE56Rm9ybWF0RW1pdEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgZXZlbnQgIT0gdW5kZWZpbmVkICYmXG4gICAgICBldmVudCAhPSBudWxsICYmXG4gICAgICBldmVudC5rZXlzICE9IHVuZGVmaW5lZCAmJlxuICAgICAgZXZlbnQua2V5cyAhPSBudWxsICYmXG4gICAgICBldmVudC5ub2RlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgZXZlbnQubm9kZSAhPSBudWxsICYmXG4gICAgICBldmVudC5ub2RlLmtleSAhPSB1bmRlZmluZWQgJiZcbiAgICAgIGV2ZW50Lm5vZGUua2V5ICE9IG51bGwgJiZcbiAgICAgIGV2ZW50Lm5vZGUudGl0bGUgIT0gdW5kZWZpbmVkICYmXG4gICAgICBldmVudC5ub2RlLnRpdGxlICE9IG51bGxcbiAgICApIHtcbiAgICAgIGxldCBpc0FkZDogYm9vbGVhbiA9IGV2ZW50LmtleXMuc29tZSgoa2V5OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGtleSA9PT0gXy5nZXQoZXZlbnQsIFwibm9kZS5rZXlcIik7XG4gICAgICB9KTtcbiAgICAgIGlmIChpc0FkZCA9PSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RGF0YS5wdXNoKHtcbiAgICAgICAgICBsYWJlbDogZXZlbnQubm9kZS50aXRsZSxcbiAgICAgICAgICB2YWx1ZTogZXZlbnQubm9kZS5rZXlcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdERhdGEuZm9yRWFjaCgoaXRlbSwgaW5kZXgsIG9iamVjdCkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLnZhbHVlID09PSBfLmdldChldmVudCwgXCJub2RlLmtleVwiKSkge1xuICAgICAgICAgICAgb2JqZWN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy50cmVlQ2hlY2tlZCh0aGlzLnNlbGVjdERhdGEpO1xuXG4gICAgdGhpcy50cmVlQ2hhbmdlRXZlbnQuZW1pdCh7IGNoZWNrRGF0YTogdGhpcy5zZWxlY3REYXRhIH0pO1xuICB9XG5cbiAgLy/ph43nva7pgInkuK3oioLngrlcbiAgdHJlZUNoZWNrZWQoaXRlbXM6IGFueSkge1xuICAgIGlmIChpdGVtcyAhPSBudWxsICYmIGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXkgPSBpdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkS2V5ID0gW107XG4gICAgfVxuICB9XG5cbiAgLy/liKDpmaTpgInkuK3oioLngrlcbiAgc2VsZWN0Q2xlYXJCeUlkKG5vZGU6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0RGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCwgb2JqZWN0KSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWx1ZSA9PT0gbm9kZSkge1xuICAgICAgICBvYmplY3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnRyZWVDaGVja2VkKHRoaXMuc2VsZWN0RGF0YSk7XG4gICAgdGhpcy50cmVlQ2hhbmdlRXZlbnQuZW1pdCh7IGNoZWNrRGF0YTogdGhpcy5zZWxlY3REYXRhLCBkZWxldGU6IG5vZGUgfSk7XG4gIH1cblxuICBzZWxlY3RBbGxDbGVhcigpeyAgXG4gICAgLy90aGlzLnNlbGVjdERhdGEgPVtdO1xuICB9XG59XG4iXX0=