qms-angular 1.0.96 → 1.0.99

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +2 -0
  2. package/bundles/qms-angular.umd.js +151 -40
  3. package/bundles/qms-angular.umd.js.map +1 -1
  4. package/esm2015/lib/components/breadcrumb/breadcrumb-item.directive.js +2 -1
  5. package/esm2015/lib/components/breadcrumb/breadcrumb.js +35 -18
  6. package/esm2015/lib/components/breadcrumb/breadcrumb.module.js +6 -2
  7. package/esm2015/lib/components/breadcrumb/enum/breadcrumb-type.js +7 -0
  8. package/esm2015/lib/components/breadcrumb/model/breadcrumb-node.model.js +1 -1
  9. package/esm2015/lib/components/comment/comment.js +1 -1
  10. package/esm2015/lib/components/list/list.js +2 -2
  11. package/esm2015/lib/components/qms-navigation-drawer/qms-navigation-drawer.component.js +3 -2
  12. package/esm2015/lib/components/qms-paginator/qms-paginator.component.js +4 -4
  13. package/esm2015/lib/components/select-process-document/select-process-document.component.js +2 -2
  14. package/esm2015/lib/directives/chip-input/chip-input-select-dropdown.directive.js +4 -4
  15. package/esm2015/lib/model/en.js +3 -1
  16. package/esm2015/lib/model/no.js +3 -1
  17. package/esm2015/lib/qms-angular.module.js +4 -4
  18. package/esm2015/lib/utils/qms-mfe.utils.js +56 -0
  19. package/esm2015/public-api.js +4 -1
  20. package/fesm2015/qms-angular.js +119 -35
  21. package/fesm2015/qms-angular.js.map +1 -1
  22. package/lib/components/breadcrumb/breadcrumb.d.ts +10 -5
  23. package/lib/components/breadcrumb/enum/breadcrumb-type.d.ts +5 -0
  24. package/lib/directives/chip-input/chip-input-select-dropdown.directive.d.ts +1 -1
  25. package/lib/model/en.d.ts +2 -0
  26. package/lib/model/no.d.ts +2 -0
  27. package/lib/utils/qms-mfe.utils.d.ts +18 -0
  28. package/package.json +1 -1
  29. package/public-api.d.ts +2 -0
  30. package/qms-angular.metadata.json +1 -1
  31. package/src/lib/components/breadcrumb/breadcrumb.scss +174 -81
  32. package/src/lib/components/list/list.scss +2 -2
@@ -71,6 +71,7 @@ export class QMSNavigationDrawerComponent {
71
71
  this.activeNode = node.id;
72
72
  this.onClickNodeEvent.emit(node.id);
73
73
  }
74
+ this.onClickToggleNode(node);
74
75
  }
75
76
  onOver(node) {
76
77
  this.hoverNode = node;
@@ -326,7 +327,7 @@ export class QMSNavigationDrawerComponent {
326
327
  QMSNavigationDrawerComponent.decorators = [
327
328
  { type: Component, args: [{
328
329
  selector: 'app-qms-navigation-drawer',
329
- template: "<mat-tree class=\"qms-navigation-drawer-container\" [dataSource]=\"dataSource\" [treeControl]=\"treeControl\" cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\" [cdkDropListDisabled]=\"dragDropListDisabled\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node [class.pr-34]=\"showAddIcon\" *matTreeNodeDef=\"let node\" (mouseover)=\"onOver(node)\" matTreeNodePadding\r\n matTreeNodePaddingIndent=\"34\" cdkDrag [cdkDragData]=\"node\" (mouseenter)=\"dragHover(node)\"\r\n (mouseleave)=\"dragHoverEnd()\" (cdkDragStarted)=\"dragStart()\" (cdkDragReleased)=\"dragEnd()\"\r\n [ngClass]=\"{'expand-node' : treeControl.isExpanded(node), 'collapse-node': !treeControl.isExpanded(node), 'active': activeNode == node.id}\">\r\n <div *cdkDragPreview class=\"node-preview-item\">{{ node.name }}</div>\r\n <div *ngIf=\"!node.isReadOnly\" class=\"tree-content\" (click)=\"onClickNode(node, true)\">\r\n <button tabindex=\"-1\" qms-btn-outlined disabled class=\"border-0 bg-transparent\">\r\n <img class=\"img-icon\" [src]=\"faIconPath\" alt=\"\" />\r\n </button>\r\n <div class=\"span-text\">{{ node.name }}</div>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\"\r\n *ngIf=\"showFavoriteIcon && (node.id === hoverNode.id || node.favorite)\"\r\n (click)=\"addFavoriteNode(node.id, $event)\" (mouseenter)=\"setHoverFavorite(node.id)\"\r\n (mouseleave)=\"setHoverFavorite(null)\" [ngClass]=\"{'btn-favorite': (node.id === hoverNode.id && isHover)}\"\r\n qms-tool-tip=\"{{!node.favorite ? addFavoriteTooltip : deleteFavoriteTooltip}}\" mode=\"dark\" position=\"bottom\"\r\n qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror blur-icon\" [class.favorite]=\"true\"\r\n [class.not-favorite]=\"!node.favorite && node.id === hoverNode.id && isHover\">\r\n {{node.favorite && node.id === hoverNode.id && isHover ? 'star_rate_outline' : ''}}\r\n {{!node.favorite && node.id === hoverNode.id && isHover ? 'star_border' : ''}}\r\n </mat-icon>\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\" *ngIf=\"node.id === hoverNode.id && showAddIcon && isHover\"\r\n qms-tool-tip=\"{{addNodeTooltip}}\" (click)=\"addNewNode(node.id, $event)\" mode=\"dark\" position=\"bottom\"\r\n qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n add\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node [class.pr-34]=\"showAddIcon\" *matTreeNodeDef=\"let node;when: hasChild\" (mouseover)=\"onOver(node)\"\r\n matTreeNodePadding matTreeNodePaddingIndent=\"34\" cdkDrag [cdkDragData]=\"node\" (mouseenter)=\"dragHover(node)\"\r\n (mouseleave)=\"dragHoverEnd()\" (cdkDragStarted)=\"dragStart()\" (cdkDragReleased)=\"dragEnd()\"\r\n [ngClass]=\"\r\n {'expand-node' : treeControl.isExpanded(node), 'collapse-node': !treeControl.isExpanded(node), 'active': activeNode == node.id}\">\r\n <div *cdkDragPreview class=\"node-preview-item\">{{ node.name }}</div>\r\n <div *ngIf=\"!node.isReadOnly\" class=\"tree-content\" (keydown)=\"onKeyDownNode($event, node)\" matTreeNodeToggle\r\n (click)=\"onClickNode(node, true)\">\r\n <button matTreeNodeToggle (click)=\"onClickNode(node, false);onClickToggleNode(node)\" tabindex=\"-1\"\r\n class=\"button-icon collapse-expand-icon\" qms-btn-icon [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror arrow-icon left-icon\">\r\n {{treeControl.isExpanded(node) ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n </button>\r\n <div class=\"span-text\">{{ node.name }}</div>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\"\r\n qms-tool-tip=\"{{!node.favorite ? addFavoriteTooltip : deleteFavoriteTooltip}}\"\r\n *ngIf=\"showFavoriteIcon && (node.id === hoverNode.id || node.favorite)\"\r\n (click)=\"addFavoriteNode(node.id, $event)\" [ngClass]=\"{'btn-favorite': (node.id === hoverNode.id && isHover)}\"\r\n (mouseenter)=\"setHoverFavorite(node.id)\" (mouseleave)=\"setHoverFavorite(null)\" mode=\"dark\" position=\"below\"\r\n qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror blur-icon\" [class.favorite]=\"true\"\r\n [class.not-favorite]=\"!node.favorite && node.id === hoverNode.id && isHover\">\r\n {{node.favorite && node.id === hoverNode.id && isHover ? 'star_rate_outline' : ''}}\r\n {{!node.favorite && node.id === hoverNode.id && isHover ? 'star_border' : ''}}\r\n </mat-icon>\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\" *ngIf=\"node.id === hoverNode.id && showAddIcon && isHover\"\r\n qms-tool-tip=\"{{addNodeTooltip}}\" mode=\"dark\" position=\"bottom\" (click)=\"addNewNode(node.id, $event)\"\r\n qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n add\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </mat-tree-node>\r\n</mat-tree>",
330
+ template: "\r\n<mat-tree class=\"qms-navigation-drawer-container\" [dataSource]=\"dataSource\" [treeControl]=\"treeControl\" cdkDropList\r\n (cdkDropListDropped)=\"drop($event)\" [cdkDropListDisabled]=\"dragDropListDisabled\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node [class.pr-34]=\"showAddIcon\" *matTreeNodeDef=\"let node\" (mouseover)=\"onOver(node)\" matTreeNodePadding matTreeNodePaddingIndent=\"34\"\r\n cdkDrag [cdkDragData]=\"node\" (mouseenter)=\"dragHover(node)\" (mouseleave)=\"dragHoverEnd()\"\r\n (cdkDragStarted)=\"dragStart()\" (cdkDragReleased)=\"dragEnd()\"\r\n [ngClass]=\"{'expand-node' : treeControl.isExpanded(node), 'collapse-node': !treeControl.isExpanded(node), 'active': activeNode == node.id}\">\r\n <div *cdkDragPreview class=\"node-preview-item\">{{ node.name }}</div>\r\n <div *ngIf=\"!node.isReadOnly\" class=\"tree-content\" (click)=\"onClickNode(node, true)\">\r\n <button tabindex=\"-1\" qms-btn-outlined disabled class=\"border-0 bg-transparent\">\r\n <img class=\"img-icon\" [src]=\"faIconPath\" alt=\"\" />\r\n </button>\r\n <div class=\"span-text\">{{ node.name }}</div>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\"\r\n *ngIf=\"showFavoriteIcon && (node.id === hoverNode.id || node.favorite)\"\r\n (click)=\"addFavoriteNode(node.id, $event)\" (mouseenter)=\"setHoverFavorite(node.id)\"\r\n (mouseleave)=\"setHoverFavorite(null)\" [ngClass]=\"{'btn-favorite': (node.id === hoverNode.id && isHover)}\"\r\n qms-tool-tip=\"{{!node.favorite ? addFavoriteTooltip : deleteFavoriteTooltip}}\" mode=\"dark\" position=\"bottom\"\r\n qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror blur-icon\" [class.favorite]=\"true\"\r\n [class.not-favorite]=\"!node.favorite && node.id === hoverNode.id && isHover\">\r\n {{node.favorite && node.id === hoverNode.id && isHover ? 'star_rate_outline' : ''}}\r\n {{!node.favorite && node.id === hoverNode.id && isHover ? 'star_border' : ''}}\r\n </mat-icon>\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\" *ngIf=\"node.id === hoverNode.id && showAddIcon && isHover\"\r\n qms-tool-tip=\"{{addNodeTooltip}}\" (click)=\"addNewNode(node.id, $event)\" mode=\"dark\" position=\"bottom\" qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n add\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </mat-tree-node>\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-tree-node [class.pr-34]=\"showAddIcon\" *matTreeNodeDef=\"let node;when: hasChild\" (mouseover)=\"onOver(node)\" matTreeNodePadding\r\n matTreeNodePaddingIndent=\"34\" cdkDrag [cdkDragData]=\"node\" (mouseenter)=\"dragHover(node)\"\r\n (mouseleave)=\"dragHoverEnd()\" (cdkDragStarted)=\"dragStart()\" (cdkDragReleased)=\"dragEnd()\"\r\n [ngClass]=\"\r\n {'expand-node' : treeControl.isExpanded(node), 'collapse-node': !treeControl.isExpanded(node), 'active': activeNode == node.id}\">\r\n <div *cdkDragPreview class=\"node-preview-item\">{{ node.name }}</div>\r\n <div *ngIf=\"!node.isReadOnly\" class=\"tree-content\"\r\n (keydown)=\"onKeyDownNode($event, node)\" matTreeNodeToggle (click)=\"onClickNode(node, true)\" >\r\n <button matTreeNodeToggle (click)=\"onClickNode(node, false)\" tabindex=\"-1\" class=\"button-icon collapse-expand-icon\" qms-btn-icon [attr.aria-label]=\"'toggle ' + node.name\">\r\n <mat-icon class=\"mat-icon-rtl-mirror arrow-icon left-icon\">\r\n {{treeControl.isExpanded(node) ? 'expand_less' : 'expand_more'}}\r\n </mat-icon>\r\n </button>\r\n <div class=\"span-text\">{{ node.name }}</div>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\"\r\n qms-tool-tip=\"{{!node.favorite ? addFavoriteTooltip : deleteFavoriteTooltip}}\"\r\n *ngIf=\"showFavoriteIcon && (node.id === hoverNode.id || node.favorite)\"\r\n (click)=\"addFavoriteNode(node.id, $event)\" [ngClass]=\"{'btn-favorite': (node.id === hoverNode.id && isHover)}\"\r\n (mouseenter)=\"setHoverFavorite(node.id)\" (mouseleave)=\"setHoverFavorite(null)\" mode=\"dark\" position=\"below\"\r\n qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror blur-icon\" [class.favorite]=\"true\"\r\n [class.not-favorite]=\"!node.favorite && node.id === hoverNode.id && isHover\">\r\n {{node.favorite && node.id === hoverNode.id && isHover ? 'star_rate_outline' : ''}}\r\n {{!node.favorite && node.id === hoverNode.id && isHover ? 'star_border' : ''}}\r\n </mat-icon>\r\n </button>\r\n <button tabindex=\"-1\" class=\"button-icon add-icon\" *ngIf=\"node.id === hoverNode.id && showAddIcon && isHover\"\r\n qms-tool-tip=\"{{addNodeTooltip}}\" mode=\"dark\" position=\"bottom\" (click)=\"addNewNode(node.id, $event)\" qms-btn-icon>\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n add\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </mat-tree-node>\r\n</mat-tree>\r\n",
330
331
  styles: ["::ng-deep mat-tree.qms-navigation-drawer-container{padding:.25rem!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node{min-width:272px!important;height:48px!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node{min-height:34px;cursor:pointer!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.active{background-color:#f2f7fd;color:#1954a9!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.active img{filter:opacity(.5) drop-shadow(0 0 0 #1954A9)}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.active:hover{background-color:#e5eefb!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content{width:100%;position:relative;align-items:center}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .arrow-icon{color:#00324e}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .collapse-expand-icon{color:#3e57b7}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .collapse-expand-icon:hover{background:rgba(0,0,0,.08)}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .add-icon:hover{background:rgba(0,0,0,.08)}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .left-icon{color:#919191}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.expand-node{padding-left:0;position:static;height:32px;left:calc(50% - 216px/2);top:0;font-family:Open Sans;font-style:normal;font-weight:400;font-size:14px;line-height:19px;display:flex;align-items:center;color:#1954a9;flex:none;order:0;align-self:stretch;flex-grow:1}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.expand-node ::ng-deep mat-icon{color:#1954a9}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.expand-node:hover{background-color:#e5eefb!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.collapse-node{position:static;height:32px;left:calc(50% - 176px/2);top:0;font-family:Open Sans;font-style:normal;font-weight:400;font-size:14px;line-height:19px;display:flex;align-items:center;color:#323232;flex:none;order:0;align-self:stretch;flex-grow:1}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content{display:flex}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .button-icon{width:40px;height:40px;line-height:30px!important;border-radius:50%}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .button-icon:hover{border-radius:50%}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .img-icon{max-height:25px;max-width:25px}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .add-icon{position:absolute;right:-34px}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .add-icon mat-icon{top:3px;right:3px;border-radius:50%;color:rgba(0,0,0,.6)}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .favorite{color:#b13514!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .not-favorite{color:rgba(0,0,0,.6)!important}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .btn-favorite{right:6px;color:unset}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .space-icon{position:absolute;top:-5px;left:0}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .span-text{position:relative;overflow:hidden;text-overflow:ellipsis;padding-left:7px;max-width:calc(100% - 56px);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;cursor:pointer}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node .tree-content .span-text:after{content:\"\";display:block;clear:both}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node:first-child{margin:0}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.collapse-node:hover{background:#00000014}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.collapse-node:active{background:#0000001f}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node.expand-node:active{background:#f2f7fd}::ng-deep mat-tree.qms-navigation-drawer-container .mat-tree-node:hover .span-text{max-width:calc(100% - 96px)}::ng-deep mat-tree.qms-navigation-drawer-container .pr-34{padding-right:34px}.node-preview-item{display:flex;background-color:#0000001f;min-width:272px!important;height:48px!important;margin:0 auto;align-items:center;padding:0 16px}"]
331
332
  },] }
332
333
  ];
@@ -350,4 +351,4 @@ QMSNavigationDrawerComponent.propDecorators = {
350
351
  addNodeTooltip: [{ type: Input }],
351
352
  activeNode: [{ type: Input }]
352
353
  };
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIvcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpGLE9BQU8sVUFBVSxNQUFNLHdEQUF3RCxDQUFDO0FBUWhGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7UUFHUyxhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUc5QixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHcEQscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsdUJBQWtCLEdBQVcsbUJBQW1CLENBQUM7UUFDakQsMEJBQXFCLEdBQVcsZ0JBQWdCLENBQUM7UUFDakQsbUJBQWMsR0FBVyxtQkFBbUIsQ0FBQztRQUM3QyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRWpDLG9CQUFlLEdBQUcsSUFBSSxHQUFH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Q0FBQyxFQUFFO1lBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQWM7UUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQzs7O1lBalhGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxra0tBQXFEOzthQUV0RDs7Ozt1QkFNRSxLQUFLOytCQUNMLEtBQUs7MkJBQ0wsS0FBSzsyQkFDTCxNQUFNOytCQUNOLE1BQU07Z0NBQ04sTUFBTTswQkFDTixLQUFLO3dCQUNMLEtBQUs7bUNBQ0wsS0FBSzswQkFDTCxNQUFNO3lCQUNOLEtBQUs7eUJBQ0wsS0FBSzsrQkFDTCxNQUFNO2lDQUNOLEtBQUs7b0NBQ0wsS0FBSzs2QkFDTCxLQUFLO3lCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdFRyZWVGbGF0RGF0YVNvdXJjZSwgTWF0VHJlZUZsYXR0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RyZWUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IGd1aWRIZWxwZXIgZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tbW9uL2hlbHBlci9ndWlkSGVscGVyJztcclxuaW1wb3J0IHsgRmxhdE5vZGUsIFRyZWVOb2RlIH0gZnJvbSAnLi9tb2RlbHMvcW1zLW5hdmlnYXRpb24tZHJhd2VyLm1vZGVsJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcW1zLW5hdmlnYXRpb24tZHJhd2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFFNU05hdmlnYXRpb25EcmF3ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy50cmVlRGF0YTtcclxuICB9XHJcbiAgQElucHV0KCkgdHJlZURhdGE6IEFycmF5PFRyZWVOb2RlPiA9IFtdO1xyXG4gIEBJbnB1dCgpIHNob3dGYXZvcml0ZUljb246IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZmF2b3JpdGVNb2RlOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBhZGROb2RlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBhZGRGYXZvcml0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJvZ0xvY2F0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIHNob3dBZGRJY29uID0gdHJ1ZTtcclxuICBASW5wdXQoKSBvcGVuTm9kZXM6IHN0cmluZ1tdID0gW107XHJcbiAgQElucHV0KCkgZHJhZ0Ryb3BMaXN0RGlzYWJsZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgbm9kZXNFeHBhbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGZpbHRlclRleHQ6IHN0cmluZztcclxuICBASW5wdXQoKSBmYUljb25QYXRoOiBzdHJpbmc7XHJcbiAgQE91dHB1dCgpIG9uQ2xpY2tOb2RlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBJbnB1dCgpIGFkZEZhdm9yaXRlVG9vbHRpcDogc3RyaW5nID0gJ0xlZ2cgdGlsIGZhdm9yaXR0JztcclxuICBASW5wdXQoKSBkZWxldGVGYXZvcml0ZVRvb2x0aXA6IHN0cmluZyA9ICdTbGV0dCBmYXZvcml0dCc7XHJcbiAgQElucHV0KCkgYWRkTm9kZVRvb2x0aXA6IHN0cmluZyA9ICdMZWdnIHRpbCBsb2thc2pvbic7XHJcbiAgQElucHV0KCkgYWN0aXZlTm9kZTogc3RyaW5nID0gJyc7XHJcbiAgYWN0aXZlTm9kZUxvY2F0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgZXhwYW5kZWROb2RlU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcbiAgZHJhZ2dpbmcgPSBmYWxzZTtcclxuICBleHBhbmRUaW1lb3V0OiBhbnk7XHJcbiAgZXhwYW5kRGVsYXkgPSAxMDAwO1xyXG4gIGhvdmVyRmF2b3JpdGVOb2RlSWQ6IHN0cmluZztcclxuICBpc0hvdmVyID0gZmFsc2U7XHJcbiAgdHJlZUNvbnRyb2wgPSBuZXcgRmxhdFRyZWVDb250cm9sPEZsYXROb2RlPihub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlKTtcclxuICB0cmVlRmxhdHRlbmVyID0gbmV3IE1hdFRyZWVGbGF0dGVuZXIodGhpcy5fdHJhbnNmb3JtZXIsIG5vZGUgPT4gbm9kZS5sZXZlbCwgbm9kZSA9PiBub2RlLmV4cGFuZGFibGUsIG5vZGUgPT4gbm9kZS5jaGlsZHJlbik7XHJcbiAgZGF0YVNvdXJjZSA9IG5ldyBNYXRUcmVlRmxhdERhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy50cmVlRmxhdHRlbmVyKTtcclxuICBob3Zlck5vZGU6IGFueSA9IHt9O1xyXG4gIGV4cGFuZGluZ05vZGVzOiBGbGF0Tm9kZVtdID0gW107XHJcblxyXG4gIF90cmFuc2Zvcm1lcihub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCxcclxuICAgICAgbmFtZTogbm9kZS5uYW1lLFxyXG4gICAgICBsZXZlbCxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIGlzUmVhZE9ubHk6IG5vZGUuaXNSZWFkT25seSxcclxuICAgICAgZmF2b3JpdGU6IG5vZGUuZmF2b3JpdGUsXHJcbiAgICAgIGRpc2FibGVkOiBub2RlLmRpc2FibGVkXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wZW5Ob2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKHAgPT4gcC5pZC50b1N0cmluZygpID09PSBpdGVtKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhc0NoaWxkID0gKF86IG51bWJlciwgbm9kZTogRmxhdE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRyZWVEYXRhO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyVGV4dCkge1xyXG4gICAgICB0aGlzLmV4cGFuZE5vZGVTZWFyY2hlZCh0aGlzLnRyZWVEYXRhLCB0aGlzLmZpbHRlclRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLm9wZW5Ob2Rlcykge1xyXG4gICAgICB0aGlzLm9wZW5Ob2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQocCA9PiBwLmlkLnRvU3RyaW5nKCkgPT09IGl0ZW0pKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBhbmROb2RlU2VhcmNoZWQobm9kZXNPcmlnaW46IFRyZWVOb2RlW10sIHR4dFNlYXJjaDogc3RyaW5nKSB7XHJcbiAgICBub2Rlc09yaWdpbi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoIWl0ZW0ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHR4dFNlYXJjaC50b0xvY2FsZUxvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQocCA9PiBwLmlkLnRvU3RyaW5nKCkgPT09IGl0ZW0uaWQpKTtcclxuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZE5vZGVTZWFyY2hlZChpdGVtLmNoaWxkcmVuLCB0eHRTZWFyY2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTm9kZShub2RlOiBUcmVlTm9kZSwgc2V0QWN0aXZlTm9kZT86IGJvb2xlYW4pIHtcclxuICAgIGlmIChzZXRBY3RpdmVOb2RlKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlTm9kZSA9IG5vZGUuaWQ7XHJcbiAgICAgIHRoaXMub25DbGlja05vZGVFdmVudC5lbWl0KG5vZGUuaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25PdmVyKG5vZGU6IGFueSkge1xyXG4gICAgdGhpcy5ob3Zlck5vZGUgPSBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkTmV3Tm9kZShub2RlSWQ6IGFueSwgZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5hZGROb2RlRXZlbnQuZW1pdChub2RlSWQpO1xyXG4gIH1cclxuXHJcbiAgYWRkRmF2b3JpdGVOb2RlKG5vZGVJZDogYW55LCBldmVudDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmFkZEZhdm9yaXRlRXZlbnQuZW1pdChub2RlSWQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVOb2RlTG9jYXRpb24pIHtcclxuICAgICAgdGhpcy5hY3RpdmVOb2RlTG9jYXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgY29uc3RydWN0cyBhbiBhcnJheSBvZiBub2RlcyB0aGF0IG1hdGNoZXMgdGhlIERPTSxcclxuICAgKiBhbmQgY2FsbHMgcmVtZW1iZXJFeHBhbmRlZFRyZWVOb2RlcyB0byBwZXJzaXN0IGV4cGFuZCBzdGF0ZVxyXG4gICAqL1xyXG4gIHZpc2libGVOb2RlcygpOiBUcmVlTm9kZVtdIHtcclxuICAgIHRoaXMucmVtZW1iZXJFeHBhbmRlZFRyZWVOb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuXHJcbiAgICBmdW5jdGlvbiBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGU6IFRyZWVOb2RlLCBleHBhbmRlZDogU2V0PHN0cmluZz4pIHtcclxuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XHJcbiAgICAgIGlmIChleHBhbmRlZC5oYXMobm9kZS5pZCkpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBhZGRFeHBhbmRlZENoaWxkcmVuKGNoaWxkLCBleHBhbmRlZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKG5vZGUgPT4ge1xyXG4gICAgICBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGUsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgZHJvcCAtIGhlcmUgd2UgcmVhcnJhbmdlIHRoZSBkYXRhIGJhc2VkIG9uIHRoZSBkcm9wIGV2ZW50LFxyXG4gICAqIHRoZW4gcmVidWlsZCB0aGUgdHJlZS5cclxuICAgKiAqL1xyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgLy8gU2F2ZSBkYXRhIGZvciBiYWNrdXBcclxuICAgIGNvbnN0IG5vZGUgPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBjb25zdCBiYWNrdXBDaGFuZ2VkTm9kZTogVHJlZU5vZGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5vZGUpKTtcclxuICAgIGNvbnN0IGJhY2t1cERhdGE6IFRyZWVOb2RlW10gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YVNvdXJjZS5kYXRhKSk7XHJcblxyXG4gICAgLy8gaWdub3JlIGRyb3BzIG91dHNpZGUgb2YgdGhlIHRyZWVcclxuICAgIGlmICghZXZlbnQuaXNQb2ludGVyT3ZlckNvbnRhaW5lcikgeyByZXR1cm47IH1cclxuXHJcbiAgICAvLyBjb25zdHJ1Y3QgYSBsaXN0IG9mIHZpc2libGUgbm9kZXMsIHRoaXMgd2lsbCBtYXRjaCB0aGUgRE9NLlxyXG4gICAgLy8gdGhlIGNka0RyYWdEcm9wIGV2ZW50LmN1cnJlbnRJbmRleCBqaXZlcyB3aXRoIHZpc2libGUgbm9kZXMuXHJcbiAgICAvLyBpdCBjYWxscyByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzIHRvIHBlcnNpc3QgZXhwYW5kIHN0YXRlXHJcbiAgICBjb25zdCB2aXNpYmxlTm9kZXMgPSB0aGlzLnZpc2libGVOb2RlcygpO1xyXG5cclxuICAgIC8vIGRlZXAgY2xvbmUgdGhlIGRhdGEgc291cmNlIHNvIHdlIGNhbiBtdXRhdGUgaXRcclxuICAgIGNvbnN0IGNoYW5nZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGFTb3VyY2UuZGF0YSkpO1xyXG5cclxuICAgIC8vIHJlY3Vyc2l2ZSBmaW5kIGZ1bmN0aW9uIHRvIGZpbmQgc2libGluZ3Mgb2Ygbm9kZVxyXG4gICAgZnVuY3Rpb24gZmluZE5vZGVTaWJsaW5ncyhhcnI6IEFycmF5PGFueT4sIGlkOiBzdHJpbmcpOiBBcnJheTxhbnk+IHtcclxuICAgICAgbGV0IHJlc3VsdCwgc3ViUmVzdWx0O1xyXG4gICAgICBhcnIuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IGFycjtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIHN1YlJlc3VsdCA9IGZpbmROb2RlU2libGluZ3MoaXRlbS5jaGlsZHJlbiwgaWQpO1xyXG4gICAgICAgICAgaWYgKHN1YlJlc3VsdCkgeyByZXN1bHQgPSBzdWJSZXN1bHQ7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGl0cyBvbGQgcGxhY2VcclxuICAgIGNvbnN0IHNpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZS5pZCk7XHJcbiAgICBjb25zdCBzaWJsaW5nSW5kZXggPSBzaWJsaW5ncy5maW5kSW5kZXgobiA9PiBuLmlkID09PSBub2RlLmlkKTtcclxuICAgIC8vIGNvbnN0IG5vZGVUb0luc2VydDogVHJlZU5vZGUgPSBzaWJsaW5ncy5zcGxpY2Uoc2libGluZ0luZGV4LCAxKVswXTtcclxuICAgIGNvbnN0IG5vZGVUb0luc2VydCA9IHNpYmxpbmdzLnNwbGljZShzaWJsaW5nSW5kZXgsIDEpWzBdO1xyXG4gICAgLy8gZGV0ZXJtaW5lIHdoZXJlIHRvIGluc2VydCB0aGUgbm9kZVxyXG4gICAgY29uc3Qgbm9kZUF0RGVzdCA9IHZpc2libGVOb2Rlc1tldmVudC5jdXJyZW50SW5kZXhdO1xyXG4gICAgaWYgKG5vZGVBdERlc3QuaWQgPT09IG5vZGVUb0luc2VydC5pZCkgeyByZXR1cm47IH1cclxuXHJcbiAgICAvLyBkZXRlcm1pbmUgZHJvcCBpbmRleCByZWxhdGl2ZSB0byBkZXN0aW5hdGlvbiBhcnJheVxyXG4gICAgbGV0IHJlbGF0aXZlSW5kZXggPSBldmVudC5jdXJyZW50SW5kZXg7IC8vIGRlZmF1bHQgaWYgbm8gcGFyZW50XHJcbiAgICBjb25zdCBub2RlQXREZXN0RmxhdE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG4gPT4gbm9kZUF0RGVzdC5pZCA9PT0gbi5pZCk7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZUF0RGVzdEZsYXROb2RlKTtcclxuXHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gdmlzaWJsZU5vZGVzLmZpbmRJbmRleChuID0+IG4uaWQgPT09IHBhcmVudC5pZCkgKyAxO1xyXG4gICAgICByZWxhdGl2ZUluZGV4ID0gZXZlbnQuY3VycmVudEluZGV4IC0gcGFyZW50SW5kZXg7XHJcbiAgICAgIC8vIHVwZGF0ZSBwYXJlbnRJZCBmb3Igbm9kZVRvSW5zZXJ0XHJcbiAgICAgIG5vZGVUb0luc2VydC5wYXJlbnRJZCA9IHBhcmVudC5pZDtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBub2RlVG9JbnNlcnQucGFyZW50SWQgPSBndWlkSGVscGVyLmVtcHR5O1xyXG4gICAgfVxyXG4gICAgLy8gdXBkYXRlIG5ldyBvcmRlciBmb3Igbm9kZVRvSW5zZXJ0XHJcbiAgICBub2RlVG9JbnNlcnQub3JkZXIgPSByZWxhdGl2ZUluZGV4O1xyXG4gICAgLy8gaW5zZXJ0IG5vZGVcclxuICAgIGNvbnN0IG5ld1NpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZUF0RGVzdC5pZCk7XHJcbiAgICBpZiAoIW5ld1NpYmxpbmdzKSB7IHJldHVybjsgfVxyXG4gICAgbmV3U2libGluZ3Muc3BsaWNlKHJlbGF0aXZlSW5kZXgsIDAsIG5vZGVUb0luc2VydCk7XHJcblxyXG4gICAgLy8gcmVidWlsZCB0cmVlIHdpdGggbXV0YXRlZCBkYXRhXHJcbiAgICB0aGlzLnJlYnVpbGRUcmVlRm9yRGF0YShjaGFuZ2VkRGF0YSk7XHJcblxyXG4gICAgLy8gdXBkYXRlIE5ldyBMb2NhdGlvbiBPcmRlciBmb3IgbmV3IGluc2VydCBub2RlXHJcbiAgICB0aGlzLnVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzKTtcclxuXHJcbiAgICB0aGlzLmRyb2dMb2NhdGlvbkV2ZW50LmVtaXQoe1xyXG4gICAgICBuZXdTaWJsaW5nczogbmV3U2libGluZ3MsXHJcbiAgICAgIGNoYW5nZWROb2RlOiBiYWNrdXBDaGFuZ2VkTm9kZSxcclxuICAgICAgb2xkRGF0YVNvdXJjZTogYmFja3VwRGF0YVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzOiBhbnlbXSkge1xyXG4gICAgbGV0IG5ld09yZGVyID0gMDtcclxuICAgIG5ld1NpYmxpbmdzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGl0ZW0ub3JkZXIgPSBuZXdPcmRlcjtcclxuICAgICAgbmV3T3JkZXIgPSBuZXdPcmRlciArIDE7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRXhwZXJpbWVudGFsIC0gb3BlbmluZyB0cmVlIG5vZGVzIGFzIHlvdSBkcmFnIG92ZXIgdGhlbVxyXG4gICovXHJcbiAgZHJhZ1N0YXJ0KCkge1xyXG4gICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XHJcbiAgfVxyXG4gIGRyYWdFbmQoKSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIGRyYWdIb3Zlcihub2RlOiBGbGF0Tm9kZSkge1xyXG4gICAgdGhpcy5pc0hvdmVyID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4cGFuZFRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcclxuICAgICAgfSwgdGhpcy5leHBhbmREZWxheSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRyYWdIb3ZlckVuZCgpIHtcclxuICAgIHRoaXMuaXNIb3ZlciA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhwYW5kVGltZW91dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGZvciBwZXJzaXN0aW5nIHRoZSB0cmVlIGV4cGFuZCBzdGF0ZVxyXG4gICAqIGFmdGVyIGJlaW5nIHJlYnVpbHRcclxuICAgKi9cclxuXHJcbiAgcmVidWlsZFRyZWVGb3JEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5yZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcclxuICAgIHRoaXMudHJlZURhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5mb3JnZXRNaXNzaW5nRXhwYW5kZWROb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XHJcbiAgICB0aGlzLmV4cGFuZE5vZGVzQnlJZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2RlcywgQXJyYXkuZnJvbSh0aGlzLmV4cGFuZGVkTm9kZVNldCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKFxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXHJcbiAgICBleHBhbmRlZE5vZGVTZXQ6IFNldDxzdHJpbmc+XHJcbiAgKSB7XHJcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XHJcbiAgICAgIHRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRyZWVDb250cm9sLmlzRXhwYW5kYWJsZShub2RlKSAmJiB0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKSB7XHJcbiAgICAgICAgICAvLyBjYXB0dXJlIGxhdGVzdCBleHBhbmRlZCBzdGF0ZVxyXG4gICAgICAgICAgZXhwYW5kZWROb2RlU2V0LmFkZChub2RlLmlkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcmdldE1pc3NpbmdFeHBhbmRlZE5vZGVzKFxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXHJcbiAgICBleHBhbmRlZE5vZGVTZXQ6IFNldDxzdHJpbmc+XHJcbiAgKSB7XHJcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XHJcbiAgICAgIGV4cGFuZGVkTm9kZVNldC5mb3JFYWNoKChub2RlSWQpID0+IHtcclxuICAgICAgICAvLyBtYWludGFpbiBleHBhbmRlZCBub2RlIHN0YXRlXHJcbiAgICAgICAgaWYgKCF0cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobikgPT4gbi5pZC50b1N0cmluZygpID09PSBub2RlSWQpKSB7XHJcbiAgICAgICAgICAvLyBpZiB0aGUgdHJlZSBkb2Vzbid0IGhhdmUgdGhlIHByZXZpb3VzIG5vZGUsIHJlbW92ZSBpdCBmcm9tIHRoZSBleHBhbmRlZCBsaXN0XHJcbiAgICAgICAgICBleHBhbmRlZE5vZGVTZXQuZGVsZXRlKG5vZGVJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwYW5kTm9kZXNCeUlkKGZsYXROb2RlczogRmxhdE5vZGVbXSwgaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKCFmbGF0Tm9kZXMgfHwgZmxhdE5vZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cclxuICAgIGNvbnN0IGlkU2V0ID0gbmV3IFNldChpZHMpO1xyXG4gICAgcmV0dXJuIGZsYXROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGlmIChpZFNldC5oYXMobm9kZS5pZC50b1N0cmluZygpKSkge1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG5cclxuICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gobm9kZSk7XHJcblxyXG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQocGFyZW50KTtcclxuXHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gocGFyZW50KTtcclxuXHJcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnROb2RlKG5vZGU6IEZsYXROb2RlKTogRmxhdE5vZGUgfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IG5vZGUubGV2ZWw7XHJcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5pbmRleE9mKG5vZGUpIC0gMTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG4gICAgICBpZiAoY3VycmVudE5vZGUubGV2ZWwgPCBjdXJyZW50TGV2ZWwpIHtcclxuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duTm9kZShldmVudDogYW55LCBub2RlKSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5vbkNsaWNrVG9nZ2xlTm9kZShub2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tUb2dnbGVOb2RlKG5vZGUpIHtcclxuICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkpIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XHJcbiAgICAgIHRoaXMuX2FkZEV4cGFuZGluZ05vZGUobm9kZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKG5vZGUpO1xyXG4gICAgICB0aGlzLl9yZW1vdmVFeHBhbmRpbmdOb2Rlcyhub2RlLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMubm9kZXNFeHBhbmQuZW1pdCh7IG5vZGUsIGlzRXhwYW5kOiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRIb3ZlckZhdm9yaXRlKGlkKSB7XHJcbiAgICB0aGlzLmhvdmVyRmF2b3JpdGVOb2RlSWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGV4cGFuZE5vZGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKHRoaXMudHJlZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZXhwYW5kTm9kZXNMb29wKGRhdGE6IFRyZWVOb2RlW10pOiB2b2lkIHtcclxuICAgIGRhdGEuZm9yRWFjaChub2RlID0+IHtcclxuICAgICAgY29uc3QgZXhwYW5kaW5nTm9kZSA9IHRoaXMuZXhwYW5kaW5nTm9kZXMuc29tZSh4ID0+IHguaWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICBpZiAoZXhwYW5kaW5nTm9kZSkge1xyXG4gICAgICAgIHRoaXMub25DbGlja1RvZ2dsZU5vZGUoZXhwYW5kaW5nTm9kZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKGl0ZW0uY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZEV4cGFuZGluZ05vZGUobm9kZTogRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5leHBhbmRpbmdOb2Rlcy5zb21lKHggPT4geC5pZCA9PT0gbm9kZS5pZCkpIHtcclxuICAgICAgdGhpcy5leHBhbmRpbmdOb2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlRXhwYW5kaW5nTm9kZXMobm9kZUlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kaW5nTm9kZXMgPSB0aGlzLmV4cGFuZGluZ05vZGVzLmZpbHRlcih4ID0+IHguaWQgIT09IG5vZGVJZCk7XHJcbiAgfVxyXG59Il19
354
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9xbXMtbmF2aWdhdGlvbi1kcmF3ZXIvcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpGLE9BQU8sVUFBVSxNQUFNLHdEQUF3RCxDQUFDO0FBUWhGLE1BQU0sT0FBTyw0QkFBNEI7SUFDdkM7UUFHUyxhQUFRLEdBQW9CLEVBQUUsQ0FBQztRQUc5QixpQkFBWSxHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELHFCQUFnQixHQUF5QixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNELGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHcEQscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsdUJBQWtCLEdBQVcsbUJBQW1CLENBQUM7UUFDakQsMEJBQXFCLEdBQVcsZ0JBQWdCLENBQUM7UUFDakQsbUJBQWMsR0FBVyxtQkFBbUIsQ0FBQztRQUM3QyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRWpDLG9CQUFlLEdBQUcsSUFBSSxHQUFH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QUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFjO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7OztZQWxYRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsb2hLQUFxRDs7YUFFdEQ7Ozs7dUJBTUUsS0FBSzsrQkFDTCxLQUFLOzJCQUNMLEtBQUs7MkJBQ0wsTUFBTTsrQkFDTixNQUFNO2dDQUNOLE1BQU07MEJBQ04sS0FBSzt3QkFDTCxLQUFLO21DQUNMLEtBQUs7MEJBQ0wsTUFBTTt5QkFDTixLQUFLO3lCQUNMLEtBQUs7K0JBQ0wsTUFBTTtpQ0FDTixLQUFLO29DQUNMLEtBQUs7NkJBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgRmxhdFRyZWVDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RyZWUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRUcmVlRmxhdERhdGFTb3VyY2UsIE1hdFRyZWVGbGF0dGVuZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90cmVlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCBndWlkSGVscGVyIGZyb20gJy4uLy4uL3Ftcy1ja2VkaXRvci1jb21wb25lbnRzL2NvbW1vbi9oZWxwZXIvZ3VpZEhlbHBlcic7XHJcbmltcG9ydCB7IEZsYXROb2RlLCBUcmVlTm9kZSB9IGZyb20gJy4vbW9kZWxzL3Ftcy1uYXZpZ2F0aW9uLWRyYXdlci5tb2RlbCc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXFtcy1uYXZpZ2F0aW9uLWRyYXdlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1uYXZpZ2F0aW9uLWRyYXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcW1zLW5hdmlnYXRpb24tZHJhd2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBRTVNOYXZpZ2F0aW9uRHJhd2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudHJlZURhdGE7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHRyZWVEYXRhOiBBcnJheTxUcmVlTm9kZT4gPSBbXTtcclxuICBASW5wdXQoKSBzaG93RmF2b3JpdGVJY29uOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGZhdm9yaXRlTW9kZTogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgYWRkTm9kZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWRkRmF2b3JpdGVFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyb2dMb2NhdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBzaG93QWRkSWNvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgb3Blbk5vZGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRyYWdEcm9wTGlzdERpc2FibGVkID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIG5vZGVzRXhwYW5kOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBmaWx0ZXJUZXh0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmFJY29uUGF0aDogc3RyaW5nO1xyXG4gIEBPdXRwdXQoKSBvbkNsaWNrTm9kZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBhZGRGYXZvcml0ZVRvb2x0aXA6IHN0cmluZyA9ICdMZWdnIHRpbCBmYXZvcml0dCc7XHJcbiAgQElucHV0KCkgZGVsZXRlRmF2b3JpdGVUb29sdGlwOiBzdHJpbmcgPSAnU2xldHQgZmF2b3JpdHQnO1xyXG4gIEBJbnB1dCgpIGFkZE5vZGVUb29sdGlwOiBzdHJpbmcgPSAnTGVnZyB0aWwgbG9rYXNqb24nO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZU5vZGU6IHN0cmluZyA9ICcnO1xyXG4gIGFjdGl2ZU5vZGVMb2NhdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIGV4cGFuZGVkTm9kZVNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xyXG4gIGRyYWdnaW5nID0gZmFsc2U7XHJcbiAgZXhwYW5kVGltZW91dDogYW55O1xyXG4gIGV4cGFuZERlbGF5ID0gMTAwMDtcclxuICBob3ZlckZhdm9yaXRlTm9kZUlkOiBzdHJpbmc7XHJcbiAgaXNIb3ZlciA9IGZhbHNlO1xyXG4gIHRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4obm9kZSA9PiBub2RlLmxldmVsLCBub2RlID0+IG5vZGUuZXhwYW5kYWJsZSk7XHJcbiAgdHJlZUZsYXR0ZW5lciA9IG5ldyBNYXRUcmVlRmxhdHRlbmVyKHRoaXMuX3RyYW5zZm9ybWVyLCBub2RlID0+IG5vZGUubGV2ZWwsIG5vZGUgPT4gbm9kZS5leHBhbmRhYmxlLCBub2RlID0+IG5vZGUuY2hpbGRyZW4pO1xyXG4gIGRhdGFTb3VyY2UgPSBuZXcgTWF0VHJlZUZsYXREYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMudHJlZUZsYXR0ZW5lcik7XHJcbiAgaG92ZXJOb2RlOiBhbnkgPSB7fTtcclxuICBleHBhbmRpbmdOb2RlczogRmxhdE5vZGVbXSA9IFtdO1xyXG4gIFxyXG4gIF90cmFuc2Zvcm1lcihub2RlOiBUcmVlTm9kZSwgbGV2ZWw6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZXhwYW5kYWJsZTogISFub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCxcclxuICAgICAgbmFtZTogbm9kZS5uYW1lLFxyXG4gICAgICBsZXZlbCxcclxuICAgICAgaWQ6IG5vZGUuaWQsXHJcbiAgICAgIGlzUmVhZE9ubHk6IG5vZGUuaXNSZWFkT25seSxcclxuICAgICAgZmF2b3JpdGU6IG5vZGUuZmF2b3JpdGUsXHJcbiAgICAgIGRpc2FibGVkOiBub2RlLmRpc2FibGVkXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wZW5Ob2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKHAgPT4gcC5pZC50b1N0cmluZygpID09PSBpdGVtKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGhhc0NoaWxkID0gKF86IG51bWJlciwgbm9kZTogRmxhdE5vZGUpID0+IG5vZGUuZXhwYW5kYWJsZTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSB0aGlzLnRyZWVEYXRhO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyVGV4dCkge1xyXG4gICAgICB0aGlzLmV4cGFuZE5vZGVTZWFyY2hlZCh0aGlzLnRyZWVEYXRhLCB0aGlzLmZpbHRlclRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLm9wZW5Ob2Rlcykge1xyXG4gICAgICB0aGlzLm9wZW5Ob2Rlcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQocCA9PiBwLmlkLnRvU3RyaW5nKCkgPT09IGl0ZW0pKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBleHBhbmROb2RlU2VhcmNoZWQobm9kZXNPcmlnaW46IFRyZWVOb2RlW10sIHR4dFNlYXJjaDogc3RyaW5nKSB7XHJcbiAgICBub2Rlc09yaWdpbi5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoIWl0ZW0ubmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHR4dFNlYXJjaC50b0xvY2FsZUxvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzLmZpbmQocCA9PiBwLmlkLnRvU3RyaW5nKCkgPT09IGl0ZW0uaWQpKTtcclxuICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZE5vZGVTZWFyY2hlZChpdGVtLmNoaWxkcmVuLCB0eHRTZWFyY2gpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrTm9kZShub2RlOiBUcmVlTm9kZSwgc2V0QWN0aXZlTm9kZT86IGJvb2xlYW4pIHtcclxuICAgIGlmIChzZXRBY3RpdmVOb2RlKXtcclxuICAgICAgdGhpcy5hY3RpdmVOb2RlID0gbm9kZS5pZDtcclxuICAgICAgdGhpcy5vbkNsaWNrTm9kZUV2ZW50LmVtaXQobm9kZS5pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2xpY2tUb2dnbGVOb2RlKG5vZGUpO1xyXG4gIH1cclxuXHJcbiAgb25PdmVyKG5vZGU6IGFueSkge1xyXG4gICAgdGhpcy5ob3Zlck5vZGUgPSBub2RlO1xyXG4gIH1cclxuXHJcbiAgYWRkTmV3Tm9kZShub2RlSWQ6IGFueSwgZXZlbnQ6IGFueSkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgdGhpcy5hZGROb2RlRXZlbnQuZW1pdChub2RlSWQpO1xyXG4gIH1cclxuXHJcbiAgYWRkRmF2b3JpdGVOb2RlKG5vZGVJZDogYW55LCBldmVudDogYW55KSB7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLmFkZEZhdm9yaXRlRXZlbnQuZW1pdChub2RlSWQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5hY3RpdmVOb2RlTG9jYXRpb24pIHtcclxuICAgICAgdGhpcy5hY3RpdmVOb2RlTG9jYXRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoaXMgY29uc3RydWN0cyBhbiBhcnJheSBvZiBub2RlcyB0aGF0IG1hdGNoZXMgdGhlIERPTSxcclxuICAgKiBhbmQgY2FsbHMgcmVtZW1iZXJFeHBhbmRlZFRyZWVOb2RlcyB0byBwZXJzaXN0IGV4cGFuZCBzdGF0ZVxyXG4gICAqL1xyXG4gIHZpc2libGVOb2RlcygpOiBUcmVlTm9kZVtdIHtcclxuICAgIHRoaXMucmVtZW1iZXJFeHBhbmRlZFRyZWVOb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XHJcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcclxuXHJcbiAgICBmdW5jdGlvbiBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGU6IFRyZWVOb2RlLCBleHBhbmRlZDogU2V0PHN0cmluZz4pIHtcclxuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XHJcbiAgICAgIGlmIChleHBhbmRlZC5oYXMobm9kZS5pZCkpIHtcclxuICAgICAgICBub2RlLmNoaWxkcmVuLm1hcChjaGlsZCA9PiBhZGRFeHBhbmRlZENoaWxkcmVuKGNoaWxkLCBleHBhbmRlZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YS5mb3JFYWNoKG5vZGUgPT4ge1xyXG4gICAgICBhZGRFeHBhbmRlZENoaWxkcmVuKG5vZGUsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgZHJvcCAtIGhlcmUgd2UgcmVhcnJhbmdlIHRoZSBkYXRhIGJhc2VkIG9uIHRoZSBkcm9wIGV2ZW50LFxyXG4gICAqIHRoZW4gcmVidWlsZCB0aGUgdHJlZS5cclxuICAgKiAqL1xyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xyXG4gICAgLy8gU2F2ZSBkYXRhIGZvciBiYWNrdXBcclxuICAgIGNvbnN0IG5vZGUgPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBjb25zdCBiYWNrdXBDaGFuZ2VkTm9kZTogVHJlZU5vZGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5vZGUpKTtcclxuICAgIGNvbnN0IGJhY2t1cERhdGE6IFRyZWVOb2RlW10gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YVNvdXJjZS5kYXRhKSk7XHJcblxyXG4gICAgLy8gaWdub3JlIGRyb3BzIG91dHNpZGUgb2YgdGhlIHRyZWVcclxuICAgIGlmICghZXZlbnQuaXNQb2ludGVyT3ZlckNvbnRhaW5lcikgeyByZXR1cm47IH1cclxuXHJcbiAgICAvLyBjb25zdHJ1Y3QgYSBsaXN0IG9mIHZpc2libGUgbm9kZXMsIHRoaXMgd2lsbCBtYXRjaCB0aGUgRE9NLlxyXG4gICAgLy8gdGhlIGNka0RyYWdEcm9wIGV2ZW50LmN1cnJlbnRJbmRleCBqaXZlcyB3aXRoIHZpc2libGUgbm9kZXMuXHJcbiAgICAvLyBpdCBjYWxscyByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzIHRvIHBlcnNpc3QgZXhwYW5kIHN0YXRlXHJcbiAgICBjb25zdCB2aXNpYmxlTm9kZXMgPSB0aGlzLnZpc2libGVOb2RlcygpO1xyXG5cclxuICAgIC8vIGRlZXAgY2xvbmUgdGhlIGRhdGEgc291cmNlIHNvIHdlIGNhbiBtdXRhdGUgaXRcclxuICAgIGNvbnN0IGNoYW5nZWREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGFTb3VyY2UuZGF0YSkpO1xyXG5cclxuICAgIC8vIHJlY3Vyc2l2ZSBmaW5kIGZ1bmN0aW9uIHRvIGZpbmQgc2libGluZ3Mgb2Ygbm9kZVxyXG4gICAgZnVuY3Rpb24gZmluZE5vZGVTaWJsaW5ncyhhcnI6IEFycmF5PGFueT4sIGlkOiBzdHJpbmcpOiBBcnJheTxhbnk+IHtcclxuICAgICAgbGV0IHJlc3VsdCwgc3ViUmVzdWx0O1xyXG4gICAgICBhcnIuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoaXRlbS5pZCA9PT0gaWQpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IGFycjtcclxuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIHN1YlJlc3VsdCA9IGZpbmROb2RlU2libGluZ3MoaXRlbS5jaGlsZHJlbiwgaWQpO1xyXG4gICAgICAgICAgaWYgKHN1YlJlc3VsdCkgeyByZXN1bHQgPSBzdWJSZXN1bHQ7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHJlbW92ZSB0aGUgbm9kZSBmcm9tIGl0cyBvbGQgcGxhY2VcclxuICAgIGNvbnN0IHNpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZS5pZCk7XHJcbiAgICBjb25zdCBzaWJsaW5nSW5kZXggPSBzaWJsaW5ncy5maW5kSW5kZXgobiA9PiBuLmlkID09PSBub2RlLmlkKTtcclxuICAgIC8vIGNvbnN0IG5vZGVUb0luc2VydDogVHJlZU5vZGUgPSBzaWJsaW5ncy5zcGxpY2Uoc2libGluZ0luZGV4LCAxKVswXTtcclxuICAgIGNvbnN0IG5vZGVUb0luc2VydCA9IHNpYmxpbmdzLnNwbGljZShzaWJsaW5nSW5kZXgsIDEpWzBdO1xyXG4gICAgLy8gZGV0ZXJtaW5lIHdoZXJlIHRvIGluc2VydCB0aGUgbm9kZVxyXG4gICAgY29uc3Qgbm9kZUF0RGVzdCA9IHZpc2libGVOb2Rlc1tldmVudC5jdXJyZW50SW5kZXhdO1xyXG4gICAgaWYgKG5vZGVBdERlc3QuaWQgPT09IG5vZGVUb0luc2VydC5pZCkgeyByZXR1cm47IH1cclxuXHJcbiAgICAvLyBkZXRlcm1pbmUgZHJvcCBpbmRleCByZWxhdGl2ZSB0byBkZXN0aW5hdGlvbiBhcnJheVxyXG4gICAgbGV0IHJlbGF0aXZlSW5kZXggPSBldmVudC5jdXJyZW50SW5kZXg7IC8vIGRlZmF1bHQgaWYgbm8gcGFyZW50XHJcbiAgICBjb25zdCBub2RlQXREZXN0RmxhdE5vZGUgPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG4gPT4gbm9kZUF0RGVzdC5pZCA9PT0gbi5pZCk7XHJcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZUF0RGVzdEZsYXROb2RlKTtcclxuXHJcbiAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudEluZGV4ID0gdmlzaWJsZU5vZGVzLmZpbmRJbmRleChuID0+IG4uaWQgPT09IHBhcmVudC5pZCkgKyAxO1xyXG4gICAgICByZWxhdGl2ZUluZGV4ID0gZXZlbnQuY3VycmVudEluZGV4IC0gcGFyZW50SW5kZXg7XHJcbiAgICAgIC8vIHVwZGF0ZSBwYXJlbnRJZCBmb3Igbm9kZVRvSW5zZXJ0XHJcbiAgICAgIG5vZGVUb0luc2VydC5wYXJlbnRJZCA9IHBhcmVudC5pZDtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBub2RlVG9JbnNlcnQucGFyZW50SWQgPSBndWlkSGVscGVyLmVtcHR5O1xyXG4gICAgfVxyXG4gICAgLy8gdXBkYXRlIG5ldyBvcmRlciBmb3Igbm9kZVRvSW5zZXJ0XHJcbiAgICBub2RlVG9JbnNlcnQub3JkZXIgPSByZWxhdGl2ZUluZGV4O1xyXG4gICAgLy8gaW5zZXJ0IG5vZGVcclxuICAgIGNvbnN0IG5ld1NpYmxpbmdzID0gZmluZE5vZGVTaWJsaW5ncyhjaGFuZ2VkRGF0YSwgbm9kZUF0RGVzdC5pZCk7XHJcbiAgICBpZiAoIW5ld1NpYmxpbmdzKSB7IHJldHVybjsgfVxyXG4gICAgbmV3U2libGluZ3Muc3BsaWNlKHJlbGF0aXZlSW5kZXgsIDAsIG5vZGVUb0luc2VydCk7XHJcblxyXG4gICAgLy8gcmVidWlsZCB0cmVlIHdpdGggbXV0YXRlZCBkYXRhXHJcbiAgICB0aGlzLnJlYnVpbGRUcmVlRm9yRGF0YShjaGFuZ2VkRGF0YSk7XHJcblxyXG4gICAgLy8gdXBkYXRlIE5ldyBMb2NhdGlvbiBPcmRlciBmb3IgbmV3IGluc2VydCBub2RlXHJcbiAgICB0aGlzLnVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzKTtcclxuXHJcbiAgICB0aGlzLmRyb2dMb2NhdGlvbkV2ZW50LmVtaXQoe1xyXG4gICAgICBuZXdTaWJsaW5nczogbmV3U2libGluZ3MsXHJcbiAgICAgIGNoYW5nZWROb2RlOiBiYWNrdXBDaGFuZ2VkTm9kZSxcclxuICAgICAgb2xkRGF0YVNvdXJjZTogYmFja3VwRGF0YVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU5ld09yZGVyRm9yTm9kZVNpYmxpbmdzKG5ld1NpYmxpbmdzOiBhbnlbXSkge1xyXG4gICAgbGV0IG5ld09yZGVyID0gMDtcclxuICAgIG5ld1NpYmxpbmdzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGl0ZW0ub3JkZXIgPSBuZXdPcmRlcjtcclxuICAgICAgbmV3T3JkZXIgPSBuZXdPcmRlciArIDE7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRXhwZXJpbWVudGFsIC0gb3BlbmluZyB0cmVlIG5vZGVzIGFzIHlvdSBkcmFnIG92ZXIgdGhlbVxyXG4gICovXHJcbiAgZHJhZ1N0YXJ0KCkge1xyXG4gICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XHJcbiAgfVxyXG4gIGRyYWdFbmQoKSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIGRyYWdIb3Zlcihub2RlOiBGbGF0Tm9kZSkge1xyXG4gICAgdGhpcy5pc0hvdmVyID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmRyYWdnaW5nKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmV4cGFuZFRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChub2RlKTtcclxuICAgICAgfSwgdGhpcy5leHBhbmREZWxheSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRyYWdIb3ZlckVuZCgpIHtcclxuICAgIHRoaXMuaXNIb3ZlciA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZXhwYW5kVGltZW91dCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIGZvciBwZXJzaXN0aW5nIHRoZSB0cmVlIGV4cGFuZCBzdGF0ZVxyXG4gICAqIGFmdGVyIGJlaW5nIHJlYnVpbHRcclxuICAgKi9cclxuXHJcbiAgcmVidWlsZFRyZWVGb3JEYXRhKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5yZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuZXhwYW5kZWROb2RlU2V0KTtcclxuICAgIHRoaXMudHJlZURhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBkYXRhO1xyXG4gICAgdGhpcy5mb3JnZXRNaXNzaW5nRXhwYW5kZWROb2Rlcyh0aGlzLnRyZWVDb250cm9sLCB0aGlzLmV4cGFuZGVkTm9kZVNldCk7XHJcbiAgICB0aGlzLmV4cGFuZE5vZGVzQnlJZCh0aGlzLnRyZWVDb250cm9sLmRhdGFOb2RlcywgQXJyYXkuZnJvbSh0aGlzLmV4cGFuZGVkTm9kZVNldCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1lbWJlckV4cGFuZGVkVHJlZU5vZGVzKFxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXHJcbiAgICBleHBhbmRlZE5vZGVTZXQ6IFNldDxzdHJpbmc+XHJcbiAgKSB7XHJcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XHJcbiAgICAgIHRyZWVDb250cm9sLmRhdGFOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHRyZWVDb250cm9sLmlzRXhwYW5kYWJsZShub2RlKSAmJiB0cmVlQ29udHJvbC5pc0V4cGFuZGVkKG5vZGUpKSB7XHJcbiAgICAgICAgICAvLyBjYXB0dXJlIGxhdGVzdCBleHBhbmRlZCBzdGF0ZVxyXG4gICAgICAgICAgZXhwYW5kZWROb2RlU2V0LmFkZChub2RlLmlkLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcmdldE1pc3NpbmdFeHBhbmRlZE5vZGVzKFxyXG4gICAgdHJlZUNvbnRyb2w6IEZsYXRUcmVlQ29udHJvbDxGbGF0Tm9kZT4sXHJcbiAgICBleHBhbmRlZE5vZGVTZXQ6IFNldDxzdHJpbmc+XHJcbiAgKSB7XHJcbiAgICBpZiAodHJlZUNvbnRyb2wuZGF0YU5vZGVzKSB7XHJcbiAgICAgIGV4cGFuZGVkTm9kZVNldC5mb3JFYWNoKChub2RlSWQpID0+IHtcclxuICAgICAgICAvLyBtYWludGFpbiBleHBhbmRlZCBub2RlIHN0YXRlXHJcbiAgICAgICAgaWYgKCF0cmVlQ29udHJvbC5kYXRhTm9kZXMuZmluZCgobikgPT4gbi5pZC50b1N0cmluZygpID09PSBub2RlSWQpKSB7XHJcbiAgICAgICAgICAvLyBpZiB0aGUgdHJlZSBkb2Vzbid0IGhhdmUgdGhlIHByZXZpb3VzIG5vZGUsIHJlbW92ZSBpdCBmcm9tIHRoZSBleHBhbmRlZCBsaXN0XHJcbiAgICAgICAgICBleHBhbmRlZE5vZGVTZXQuZGVsZXRlKG5vZGVJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwYW5kTm9kZXNCeUlkKGZsYXROb2RlczogRmxhdE5vZGVbXSwgaWRzOiBzdHJpbmdbXSkge1xyXG4gICAgaWYgKCFmbGF0Tm9kZXMgfHwgZmxhdE5vZGVzLmxlbmd0aCA9PT0gMCkgeyByZXR1cm47IH1cclxuICAgIGNvbnN0IGlkU2V0ID0gbmV3IFNldChpZHMpO1xyXG4gICAgcmV0dXJuIGZsYXROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGlmIChpZFNldC5oYXMobm9kZS5pZC50b1N0cmluZygpKSkge1xyXG4gICAgICAgIHRoaXMudHJlZUNvbnRyb2wuZXhwYW5kKG5vZGUpO1xyXG5cclxuICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gobm9kZSk7XHJcblxyXG4gICAgICAgIGxldCBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUobm9kZSk7XHJcbiAgICAgICAgd2hpbGUgKHBhcmVudCkge1xyXG4gICAgICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQocGFyZW50KTtcclxuXHJcbiAgICAgICAgICB0aGlzLmV4cGFuZGluZ05vZGVzLnB1c2gocGFyZW50KTtcclxuXHJcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzLmdldFBhcmVudE5vZGUocGFyZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJlbnROb2RlKG5vZGU6IEZsYXROb2RlKTogRmxhdE5vZGUgfCBudWxsIHtcclxuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IG5vZGUubGV2ZWw7XHJcbiAgICBpZiAoY3VycmVudExldmVsIDwgMSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXJ0SW5kZXggPSB0aGlzLnRyZWVDb250cm9sLmRhdGFOb2Rlcy5pbmRleE9mKG5vZGUpIC0gMTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpID49IDA7IGktLSkge1xyXG4gICAgICBjb25zdCBjdXJyZW50Tm9kZSA9IHRoaXMudHJlZUNvbnRyb2wuZGF0YU5vZGVzW2ldO1xyXG4gICAgICBpZiAoY3VycmVudE5vZGUubGV2ZWwgPCBjdXJyZW50TGV2ZWwpIHtcclxuICAgICAgICByZXR1cm4gY3VycmVudE5vZGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25LZXlEb3duTm9kZShldmVudDogYW55LCBub2RlKSB7XHJcbiAgICBpZiAoZXZlbnQua2V5ID09ICdFbnRlcicpIHtcclxuICAgICAgdGhpcy5vbkNsaWNrVG9nZ2xlTm9kZShub2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2tUb2dnbGVOb2RlKG5vZGUpIHtcclxuICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkpIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbC5leHBhbmQobm9kZSk7XHJcbiAgICAgIHRoaXMuX2FkZEV4cGFuZGluZ05vZGUobm9kZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sLmNvbGxhcHNlKG5vZGUpO1xyXG4gICAgICB0aGlzLl9yZW1vdmVFeHBhbmRpbmdOb2Rlcyhub2RlLmlkKTtcclxuICAgIH1cclxuICAgIHRoaXMubm9kZXNFeHBhbmQuZW1pdCh7IG5vZGUsIGlzRXhwYW5kOiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRIb3ZlckZhdm9yaXRlKGlkKSB7XHJcbiAgICB0aGlzLmhvdmVyRmF2b3JpdGVOb2RlSWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGV4cGFuZE5vZGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKHRoaXMudHJlZURhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZXhwYW5kTm9kZXNMb29wKGRhdGE6IFRyZWVOb2RlW10pOiB2b2lkIHtcclxuICAgIGRhdGEuZm9yRWFjaChub2RlID0+IHtcclxuICAgICAgY29uc3QgZXhwYW5kaW5nTm9kZSA9IHRoaXMuZXhwYW5kaW5nTm9kZXMuc29tZSh4ID0+IHguaWQgPT09IG5vZGUuaWQpO1xyXG4gICAgICBpZiAoZXhwYW5kaW5nTm9kZSkge1xyXG4gICAgICAgIHRoaXMub25DbGlja1RvZ2dsZU5vZGUoZXhwYW5kaW5nTm9kZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgdGhpcy5fZXhwYW5kTm9kZXNMb29wKGl0ZW0uY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZEV4cGFuZGluZ05vZGUobm9kZTogRmxhdE5vZGUpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5leHBhbmRpbmdOb2Rlcy5zb21lKHggPT4geC5pZCA9PT0gbm9kZS5pZCkpIHtcclxuICAgICAgdGhpcy5leHBhbmRpbmdOb2Rlcy5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlRXhwYW5kaW5nTm9kZXMobm9kZUlkOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kaW5nTm9kZXMgPSB0aGlzLmV4cGFuZGluZ05vZGVzLmZpbHRlcih4ID0+IHguaWQgIT09IG5vZGVJZCk7XHJcbiAgfVxyXG59Il19
@@ -144,11 +144,11 @@ export class QMSPaginatorComponent {
144
144
  this.displayNumberOfPages = this.pagination(this.pageIndex, this.numberOfPages.length);
145
145
  }
146
146
  _changePageSize(pageSize) {
147
- const startIndex = this.pageIndex * this.pageSize;
148
- const previousPageIndex = this.pageIndex;
147
+ const startIndex = this._pageIndex * this.pageSize;
148
+ const previousPageIndex = this._pageIndex;
149
149
  this.previousPageIndex = previousPageIndex;
150
+ this.pageIndex = (Math.floor(startIndex / pageSize) || 0) + 1;
150
151
  this.pageSize = pageSize;
151
- this.pageIndex = Math.floor(startIndex / pageSize) || 0;
152
152
  this._emitPageEvent(this.previousPageIndex);
153
153
  this.getNumberOfPages();
154
154
  }
@@ -191,4 +191,4 @@ QMSPaginatorComponent.propDecorators = {
191
191
  pageIndex: [{ type: Input }],
192
192
  page: [{ type: Output }]
193
193
  };
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcW1zLXBhZ2luYXRvci9xbXMtcGFnaW5hdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQWdCLEtBQUssRUFBb0IsTUFBTSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQ0wsb0JBQW9CLEdBRXJCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFdEYsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFRN0IsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4QixpQ0FBZSxDQUFBO0lBQ2YsbUNBQWlCLENBQUE7SUFDakIsaUNBQWUsQ0FBQTtJQUNmLG1DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxjQUFjLEtBQWQsY0FBYyxRQUt6QjtBQVNELE1BQU0sT0FBTyxxQkFBcUI7SUEyRDlCLFlBQW9CLEtBQThCO1FBQTlCLFVBQUssR0FBTCxLQUFLLENBQXlCO1FBMURsRCxlQUFVLEdBQVcsUUFBUSxDQUFDO1FBQzlCLGNBQVMsR0FBVyxPQUFPLENBQUM7UUFDNUIsY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUM1QixlQUFVLEdBQVcsUUFBUSxDQUFDO1FBR3JCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsU0FBSSxHQUFtQixjQUFjLENBQUMsS0FBSyxDQUFDO1FBUTdDLHFCQUFnQixHQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFVOUMsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQVV2QixZQUFPLEdBQUcsQ0FBQyxDQUFD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SztxQkFVTCxLQUFLO3dCQVVMLEtBQUs7bUJBYUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0LCBJbmplY3QsIElucHV0LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNlbGYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIGNvZXJjZU51bWJlclByb3BlcnR5LFxyXG4gIE51bWJlcklucHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2VcIjtcclxuXHJcbmNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gNTA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFFNU1BhZ2luYXRpb25PcHRpb24ge1xyXG4gIHBhZ2VTaXplPzogbnVtYmVyO1xyXG4gIHBhZ2VTaXplT3B0aW9ucz86IG51bWJlcltdO1xyXG4gIGxlbmd0aDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBQYWdpbmF0aW9uU2l6ZSB7XHJcbiAgc21hbGwgPSAnc21hbGwnLFxyXG4gIG1lZGl1bSA9ICdtZWRpdW0nLFxyXG4gIGxhcmdlID0gJ2xhcmdlJyxcclxuICBtb2JpbGUgPSAnbW9iaWxlJ1xyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdxbXMtcGFnaW5hdG9yJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9xbXMtcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Ftcy1wYWdpbmF0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGhvc3Q6IHtcclxuICAgICAgICAnY2xhc3MnOiAncW1zLXBhZ2luYXRvcidcclxuICAgIH1cclxuICB9KVxyXG5leHBvcnQgY2xhc3MgUU1TUGFnaW5hdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIHNpemVNZWRpdW06IHN0cmluZyA9ICdtZWRpdW0nO1xyXG4gICAgc2l6ZVNtYWxsOiBzdHJpbmcgPSAnc21hbGwnO1xyXG4gICAgc2l6ZUxhcmdlOiBzdHJpbmcgPSAnbGFyZ2UnO1xyXG4gICAgc2l6ZU1vYmlsZTogc3RyaW5nID0gJ21vYmlsZSc7XHJcbiAgICBMQU5HOiBhbnk7XHJcblxyXG4gICAgQElucHV0KCkgbnVtSGlkZGVuOiBudW1iZXIgPSAxMDtcclxuICAgIEBJbnB1dCgpIHNpemU6IFBhZ2luYXRpb25TaXplID0gUGFnaW5hdGlvblNpemUubGFyZ2U7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHBhZ2VTaXplT3B0aW9ucygpOiBudW1iZXJbXSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9wYWdlU2l6ZU9wdGlvbnM7XHJcbiAgICB9XHJcbiAgICBzZXQgcGFnZVNpemVPcHRpb25zKHZhbHVlOiBudW1iZXJbXSkge1xyXG4gICAgICB0aGlzLl9wYWdlU2l6ZU9wdGlvbnMgPSAodmFsdWUgfHwgW10pLm1hcChwID0+IGNvZXJjZU51bWJlclByb3BlcnR5KHApKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3BhZ2VTaXplT3B0aW9uczogbnVtYmVyW10gPSBbNSwgMTAsIDI1LCAxMDBdO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcGFnZVNpemUoKTogbnVtYmVyIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VTaXplO1xyXG4gICAgfVxyXG4gICAgc2V0IHBhZ2VTaXplKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgdGhpcy5fcGFnZVNpemUgPSBNYXRoLm1heChjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSksIDApO1xyXG4gICAgICB0aGlzLl91cGRhdGVEaXNwbGF5ZWRQYWdlU2l6ZU9wdGlvbnMoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX3BhZ2VTaXplOiBudW1iZXIgPSAxMDtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgc2V0IGxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgIHRoaXMuX2xlbmd0aCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcclxuICAgICAgdGhpcy5nZXROdW1iZXJPZlBhZ2VzKCk7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIF9sZW5ndGggPSAwO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcGFnZUluZGV4KCk6IG51bWJlciB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9wYWdlSW5kZXggKyAxO1xyXG4gICAgfVxyXG4gICAgc2V0IHBhZ2VJbmRleCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLl9wYWdlSW5kZXg7XHJcbiAgICAgIHRoaXMuX3BhZ2VJbmRleCA9IE1hdGgubWF4KGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlICAtICh0aGlzLmlzRmlyc3RMb2FkID8gIDAgOiAxKSksIDApO1xyXG4gICAgICB0aGlzLmRpc3BsYXlOdW1iZXJPZlBhZ2VzID0gdGhpcy5wYWdpbmF0aW9uKHRoaXMuX3BhZ2VJbmRleCwgdGhpcy5udW1iZXJPZlBhZ2VzLmxlbmd0aCk7XHJcblxyXG4gICAgICB0aGlzLmdldE51bWJlck9mUGFnZXMoKTtcclxuICAgIH1cclxuICAgIF9wYWdlSW5kZXggPSAwO1xyXG5cclxuICAgIEBPdXRwdXQoKSByZWFkb25seSAgcGFnZTogRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2VFdmVudD4oKTtcclxuICAgIHByZXZpb3VzUGFnZUluZGV4PzogbnVtYmVyID0gMDtcclxuICAgIG51bWJlck9mUGFnZXM6IG51bWJlcltdID0gW107XHJcbiAgICBkaXNwbGF5TnVtYmVyT2ZQYWdlczogc3RyaW5nW10gPSBbXTtcclxuICAgIG1pblBhZ2U6IG51bWJlcjtcclxuICAgIG1heHBhZ2U6IG51bWJlcjtcclxuICAgIGlzRmlyc3RMb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSkge31cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICBjb25zdCBsYW5nRGVmYXVsdCA9ICdlbic7XHJcbiAgICAgIHRoaXMudHJhbnMuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKCkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zLmdldE9iamVjdExhbmcocmVzIHx8IGxhbmdEZWZhdWx0KTtcclxuICAgIH0pO1xyXG4gICAgICB0aGlzLmdldE51bWJlck9mUGFnZXMoKTtcclxuICAgICAgdGhpcy5pc0ZpcnN0TG9hZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpIHtcclxuICAgICAgaWYgKCF0aGlzLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgdGhpcy5fcGFnZVNpemUgPVxyXG4gICAgICAgICAgdGhpcy5wYWdlU2l6ZU9wdGlvbnMubGVuZ3RoICE9IDAgPyB0aGlzLnBhZ2VTaXplT3B0aW9uc1swXSA6IERFRkFVTFRfUEFHRV9TSVpFO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TnVtYmVyT2ZQYWdlcygpOiB2b2lkIHtcclxuICAgICAgaWYgKCF0aGlzLnBhZ2VTaXplKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubnVtYmVyT2ZQYWdlcyA9IFtdO1xyXG4gICAgICBjb25zdCBBcnJsZW5ndGggPSBNYXRoLmNlaWwodGhpcy5fbGVuZ3RoIC8gdGhpcy5fcGFnZVNpemUpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDw9IEFycmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgICAgIHRoaXMubnVtYmVyT2ZQYWdlcy5wdXNoKGluZGV4KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1pblBhZ2UgPSAxO1xyXG4gICAgICB0aGlzLm1heHBhZ2UgPSB0aGlzLm51bWJlck9mUGFnZXMubGVuZ3RoO1xyXG4gICAgICB0aGlzLnJlbmRlckRpc3BsYXlOdW1iZXJPZnBhZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVuZGVyRGlzcGxheU51bWJlck9mcGFnZXMoKSB7XHJcbiAgICAgIGlmICh0aGlzLm51bWJlck9mUGFnZXMubGVuZ3RoIDw9IDUpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlOdW1iZXJPZlBhZ2VzID0gdGhpcy5udW1iZXJPZlBhZ2VzLm1hcCh4PT4geC50b1N0cmluZygpKTsgXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9IFxyXG4gICAgICB0aGlzLmRpc3BsYXlOdW1iZXJPZlBhZ2VzID0gdGhpcy5udW1iZXJPZlBhZ2VzLm1hcCh4PT4geC50b1N0cmluZygpKTsgXHJcbiAgICAgIHRoaXMuZGlzcGxheU51bWJlck9mUGFnZXMgPSB0aGlzLnBhZ2luYXRpb24odGhpcy5wYWdlSW5kZXgsIHRoaXMubnVtYmVyT2ZQYWdlcy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgY2hhbmdlUGFnZShwYWdlOiBudW1iZXIpOnZvaWQge1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2U7XHJcbiAgICAgIHRoaXMuX2VtaXRQYWdlRXZlbnQodGhpcy5wcmV2aW91c1BhZ2VJbmRleCk7XHJcbiAgICAgIHRoaXMuZGlzcGxheU51bWJlck9mUGFnZXMgPSB0aGlzLnBhZ2luYXRpb24ocGFyc2VJbnQocGFnZS50b1N0cmluZygpKSwgdGhpcy5udW1iZXJPZlBhZ2VzLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcGFnaW5hdGlvbihjLCBtKSB7XHJcbiAgICAgIGxldCBjdXJyZW50ID0gYztcclxuICAgICAgbGV0IGxhc3QgPSBtO1xyXG4gICAgICBsZXQgZGVsdGEgPSAxO1xyXG4gICAgICBpZiAoY3VycmVudCA9PSB0aGlzLm1pblBhZ2UgfHwgY3VycmVudCA9PSB0aGlzLm1heHBhZ2UpIHtcclxuICAgICAgICBkZWx0YSA9IDM7XHJcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PSAodGhpcy5taW5QYWdlICsgMSkpIHtcclxuICAgICAgICBkZWx0YSA9IDI7XHJcbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudCA9PSAodGhpcy5tYXhwYWdlIC0gMSkpIHtcclxuICAgICAgICBkZWx0YSA9IDI7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgICBsZXQgbGVmdCA9IGN1cnJlbnQgLSBkZWx0YTtcclxuICAgICAgbGV0IHJpZ2h0ID0gY3VycmVudCArIGRlbHRhICsgMTtcclxuICAgICAgbGV0IHJhbmdlID0gW107XHJcbiAgICAgIGxldCByYW5nZVdpdGhEb3RzID0gW107XHJcbiAgICAgIGxldCBsO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxhc3Q7IGkrKykge1xyXG4gICAgICAgIGlmIChpID09IDEgfHwgaSA9PSBsYXN0IHx8IGkgPj0gbGVmdCAmJiBpIDwgcmlnaHQpIHtcclxuICAgICAgICAgICAgcmFuZ2UucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGZvciAobGV0IGkgb2YgcmFuZ2UpIHtcclxuICAgICAgICBpZiAobCkge1xyXG4gICAgICAgICAgICBpZiAoaSAtIGwgIT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJhbmdlV2l0aERvdHMucHVzaCgnLi4uJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmFuZ2VXaXRoRG90cy5wdXNoKGkpO1xyXG4gICAgICAgIGwgPSBpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByYW5nZVdpdGhEb3RzO1xyXG4gICAgfVxyXG4gICAgbmV4dFBhZ2UoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLnBhZ2VJbmRleDtcclxuICAgICAgdGhpcy5wYWdlSW5kZXggID0gdGhpcy5wYWdlSW5kZXggKyAxO1xyXG4gICAgICB0aGlzLl9lbWl0UGFnZUV2ZW50KHRoaXMucHJldmlvdXNQYWdlSW5kZXgpO1xyXG5cclxuICAgICAgdGhpcy5kaXNwbGF5TnVtYmVyT2ZQYWdlcyA9IHRoaXMucGFnaW5hdGlvbih0aGlzLnBhZ2VJbmRleCwgdGhpcy5udW1iZXJPZlBhZ2VzLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICBwcmV2aW91c1BhZ2UoKTogdm9pZCB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLnBhZ2VJbmRleDtcclxuICAgICAgdGhpcy5wYWdlSW5kZXggID0gdGhpcy5wYWdlSW5kZXggLSAxO1xyXG4gICAgICB0aGlzLl9lbWl0UGFnZUV2ZW50KHRoaXMucHJldmlvdXNQYWdlSW5kZXgpO1xyXG5cclxuICAgICAgdGhpcy5kaXNwbGF5TnVtYmVyT2ZQYWdlcyA9IHRoaXMucGFnaW5hdGlvbih0aGlzLnBhZ2VJbmRleCwgdGhpcy5udW1iZXJPZlBhZ2VzLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2NoYW5nZVBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcclxuICAgICAgY29uc3QgcHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLnBhZ2VJbmRleDtcclxuXHJcbiAgICAgIHRoaXMucHJldmlvdXNQYWdlSW5kZXggPSBwcmV2aW91c1BhZ2VJbmRleDtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCA9IE1hdGguZmxvb3Ioc3RhcnRJbmRleCAvIHBhZ2VTaXplKSB8fCAwO1xyXG5cclxuICAgICAgdGhpcy5fZW1pdFBhZ2VFdmVudCh0aGlzLnByZXZpb3VzUGFnZUluZGV4KTtcclxuICAgICAgdGhpcy5nZXROdW1iZXJPZlBhZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2NoYW5nZVBhZ2VOdW1iZXIocGFnZU51bWJlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLnBhZ2VJbmRleDtcclxuICAgICAgdGhpcy5wYWdlSW5kZXggPSBwYWdlTnVtYmVyO1xyXG4gICAgICB0aGlzLl9lbWl0UGFnZUV2ZW50KHRoaXMucHJldmlvdXNQYWdlSW5kZXgpO1xyXG4gICAgICB0aGlzLmdldE51bWJlck9mUGFnZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9lbWl0UGFnZUV2ZW50KHByZXZpb3VzUGFnZUluZGV4OiBudW1iZXIpIHtcclxuICAgICAgdGhpcy5wYWdlLmVtaXQoe1xyXG4gICAgICAgIHByZXZpb3VzUGFnZUluZGV4LFxyXG4gICAgICAgIHBhZ2VJbmRleDogdGhpcy5fcGFnZUluZGV4LFxyXG4gICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplLFxyXG4gICAgICAgIGxlbmd0aDogdGhpcy5sZW5ndGgsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4iXX0=
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLXBhZ2luYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9xbXMtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcW1zLXBhZ2luYXRvci9xbXMtcGFnaW5hdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQWdCLEtBQUssRUFBb0IsTUFBTSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQ0wsb0JBQW9CLEdBRXJCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFdEYsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFRN0IsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4QixpQ0FBZSxDQUFBO0lBQ2YsbUNBQWlCLENBQUE7SUFDakIsaUNBQWUsQ0FBQTtJQUNmLG1DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxjQUFjLEtBQWQsY0FBYyxRQUt6QjtBQVNELE1BQU0sT0FBTyxxQkFBcUI7SUEyRDlCLFlBQW9CLEtBQThCO1FBQTlCLFVBQUssR0FBTCxLQUFLLENBQXlCO1FBMURsRCxlQUFVLEdBQVcsUUFBUSxDQUFDO1FBQzlCLGNBQVMsR0FBVyxPQUFPLENBQUM7UUFDNUIsY0FBUyxHQUFXLE9BQU8sQ0FBQztRQUM1QixlQUFVLEdBQVcsUUFBUSxDQUFDO1FBR3JCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsU0FBSSxHQUFtQixjQUFjLENBQUMsS0FBSyxDQUFDO1FBUTdDLHFCQUFnQixHQUFhLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFVOUMsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQVV2QixZQUFPLEdBQUcsQ0FBQyxDQUFD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OEJBQ0wsS0FBSzt1QkFTTCxLQUFLO3FCQVVMLEtBQUs7d0JBVUwsS0FBSzttQkFhTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3QsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgY29lcmNlTnVtYmVyUHJvcGVydHksXHJcbiAgTnVtYmVySW5wdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZVwiO1xyXG5cclxuY29uc3QgREVGQVVMVF9QQUdFX1NJWkUgPSA1MDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUU1TUGFnaW5hdGlvbk9wdGlvbiB7XHJcbiAgcGFnZVNpemU/OiBudW1iZXI7XHJcbiAgcGFnZVNpemVPcHRpb25zPzogbnVtYmVyW107XHJcbiAgbGVuZ3RoOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhZ2luYXRpb25TaXplIHtcclxuICBzbWFsbCA9ICdzbWFsbCcsXHJcbiAgbWVkaXVtID0gJ21lZGl1bScsXHJcbiAgbGFyZ2UgPSAnbGFyZ2UnLFxyXG4gIG1vYmlsZSA9ICdtb2JpbGUnXHJcbn1cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Ftcy1wYWdpbmF0b3InLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1wYWdpbmF0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcW1zLXBhZ2luYXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdjbGFzcyc6ICdxbXMtcGFnaW5hdG9yJ1xyXG4gICAgfVxyXG4gIH0pXHJcbmV4cG9ydCBjbGFzcyBRTVNQYWdpbmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgc2l6ZU1lZGl1bTogc3RyaW5nID0gJ21lZGl1bSc7XHJcbiAgICBzaXplU21hbGw6IHN0cmluZyA9ICdzbWFsbCc7XHJcbiAgICBzaXplTGFyZ2U6IHN0cmluZyA9ICdsYXJnZSc7XHJcbiAgICBzaXplTW9iaWxlOiBzdHJpbmcgPSAnbW9iaWxlJztcclxuICAgIExBTkc6IGFueTtcclxuXHJcbiAgICBASW5wdXQoKSBudW1IaWRkZW46IG51bWJlciA9IDEwO1xyXG4gICAgQElucHV0KCkgc2l6ZTogUGFnaW5hdGlvblNpemUgPSBQYWdpbmF0aW9uU2l6ZS5sYXJnZTtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcGFnZVNpemVPcHRpb25zKCk6IG51bWJlcltdIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VTaXplT3B0aW9ucztcclxuICAgIH1cclxuICAgIHNldCBwYWdlU2l6ZU9wdGlvbnModmFsdWU6IG51bWJlcltdKSB7XHJcbiAgICAgIHRoaXMuX3BhZ2VTaXplT3B0aW9ucyA9ICh2YWx1ZSB8fCBbXSkubWFwKHAgPT4gY29lcmNlTnVtYmVyUHJvcGVydHkocCkpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFs1LCAxMCwgMjUsIDEwMF07XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYWdlU2l6ZSgpOiBudW1iZXIge1xyXG4gICAgICByZXR1cm4gdGhpcy5fcGFnZVNpemU7XHJcbiAgICB9XHJcbiAgICBzZXQgcGFnZVNpemUodmFsdWU6IG51bWJlcikge1xyXG4gICAgICB0aGlzLl9wYWdlU2l6ZSA9IE1hdGgubWF4KGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKSwgMCk7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZURpc3BsYXllZFBhZ2VTaXplT3B0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfcGFnZVNpemU6IG51bWJlciA9IDEwO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBzZXQgbGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgdGhpcy5fbGVuZ3RoID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xyXG4gICAgICB0aGlzLmdldE51bWJlck9mUGFnZXMoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgX2xlbmd0aCA9IDA7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYWdlSW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX3BhZ2VJbmRleCArIDE7XHJcbiAgICB9XHJcbiAgICBzZXQgcGFnZUluZGV4KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgdGhpcy5wcmV2aW91c1BhZ2VJbmRleCA9IHRoaXMuX3BhZ2VJbmRleDtcclxuICAgICAgdGhpcy5fcGFnZUluZGV4ID0gTWF0aC5tYXgoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUgIC0gKHRoaXMuaXNGaXJzdExvYWQgPyAgMCA6IDEpKSwgMCk7XHJcbiAgICAgIHRoaXMuZGlzcGxheU51bWJlck9mUGFnZXMgPSB0aGlzLnBhZ2luYXRpb24odGhpcy5fcGFnZUluZGV4LCB0aGlzLm51bWJlck9mUGFnZXMubGVuZ3RoKTtcclxuXHJcbiAgICAgIHRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgfVxyXG4gICAgX3BhZ2VJbmRleCA9IDA7XHJcblxyXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5ICBwYWdlOiBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xyXG4gICAgcHJldmlvdXNQYWdlSW5kZXg/OiBudW1iZXIgPSAwO1xyXG4gICAgbnVtYmVyT2ZQYWdlczogbnVtYmVyW10gPSBbXTtcclxuICAgIGRpc3BsYXlOdW1iZXJPZlBhZ2VzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbWluUGFnZTogbnVtYmVyO1xyXG4gICAgbWF4cGFnZTogbnVtYmVyO1xyXG4gICAgaXNGaXJzdExvYWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdHJhbnM6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlKSB7fVxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgIGNvbnN0IGxhbmdEZWZhdWx0ID0gJ2VuJztcclxuICAgICAgdGhpcy50cmFucy5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUoKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnMuZ2V0T2JqZWN0TGFuZyhyZXMgfHwgbGFuZ0RlZmF1bHQpO1xyXG4gICAgfSk7XHJcbiAgICAgIHRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgICB0aGlzLmlzRmlyc3RMb2FkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfdXBkYXRlRGlzcGxheWVkUGFnZVNpemVPcHRpb25zKCkge1xyXG4gICAgICBpZiAoIXRoaXMucGFnZVNpemUpIHtcclxuICAgICAgICB0aGlzLl9wYWdlU2l6ZSA9XHJcbiAgICAgICAgICB0aGlzLnBhZ2VTaXplT3B0aW9ucy5sZW5ndGggIT0gMCA/IHRoaXMucGFnZVNpemVPcHRpb25zWzBdIDogREVGQVVMVF9QQUdFX1NJWkU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXROdW1iZXJPZlBhZ2VzKCk6IHZvaWQge1xyXG4gICAgICBpZiAoIXRoaXMucGFnZVNpemUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5udW1iZXJPZlBhZ2VzID0gW107XHJcbiAgICAgIGNvbnN0IEFycmxlbmd0aCA9IE1hdGguY2VpbCh0aGlzLl9sZW5ndGggLyB0aGlzLl9wYWdlU2l6ZSk7XHJcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPD0gQXJybGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgdGhpcy5udW1iZXJPZlBhZ2VzLnB1c2goaW5kZXgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubWluUGFnZSA9IDE7XHJcbiAgICAgIHRoaXMubWF4cGFnZSA9IHRoaXMubnVtYmVyT2ZQYWdlcy5sZW5ndGg7XHJcbiAgICAgIHRoaXMucmVuZGVyRGlzcGxheU51bWJlck9mcGFnZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXJEaXNwbGF5TnVtYmVyT2ZwYWdlcygpIHtcclxuICAgICAgaWYgKHRoaXMubnVtYmVyT2ZQYWdlcy5sZW5ndGggPD0gNSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheU51bWJlck9mUGFnZXMgPSB0aGlzLm51bWJlck9mUGFnZXMubWFwKHg9PiB4LnRvU3RyaW5nKCkpOyBcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gXHJcbiAgICAgIHRoaXMuZGlzcGxheU51bWJlck9mUGFnZXMgPSB0aGlzLm51bWJlck9mUGFnZXMubWFwKHg9PiB4LnRvU3RyaW5nKCkpOyBcclxuICAgICAgdGhpcy5kaXNwbGF5TnVtYmVyT2ZQYWdlcyA9IHRoaXMucGFnaW5hdGlvbih0aGlzLnBhZ2VJbmRleCwgdGhpcy5udW1iZXJPZlBhZ2VzLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICBjaGFuZ2VQYWdlKHBhZ2U6IG51bWJlcik6dm9pZCB7XHJcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZTtcclxuICAgICAgdGhpcy5fZW1pdFBhZ2VFdmVudCh0aGlzLnByZXZpb3VzUGFnZUluZGV4KTtcclxuICAgICAgdGhpcy5kaXNwbGF5TnVtYmVyT2ZQYWdlcyA9IHRoaXMucGFnaW5hdGlvbihwYXJzZUludChwYWdlLnRvU3RyaW5nKCkpLCB0aGlzLm51bWJlck9mUGFnZXMubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICBwYWdpbmF0aW9uKGMsIG0pIHtcclxuICAgICAgbGV0IGN1cnJlbnQgPSBjO1xyXG4gICAgICBsZXQgbGFzdCA9IG07XHJcbiAgICAgIGxldCBkZWx0YSA9IDE7XHJcbiAgICAgIGlmIChjdXJyZW50ID09IHRoaXMubWluUGFnZSB8fCBjdXJyZW50ID09IHRoaXMubWF4cGFnZSkge1xyXG4gICAgICAgIGRlbHRhID0gMztcclxuICAgICAgfSBlbHNlIGlmIChjdXJyZW50ID09ICh0aGlzLm1pblBhZ2UgKyAxKSkge1xyXG4gICAgICAgIGRlbHRhID0gMjtcclxuICAgICAgfSBlbHNlIGlmIChjdXJyZW50ID09ICh0aGlzLm1heHBhZ2UgLSAxKSkge1xyXG4gICAgICAgIGRlbHRhID0gMjtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGxldCBsZWZ0ID0gY3VycmVudCAtIGRlbHRhO1xyXG4gICAgICBsZXQgcmlnaHQgPSBjdXJyZW50ICsgZGVsdGEgKyAxO1xyXG4gICAgICBsZXQgcmFuZ2UgPSBbXTtcclxuICAgICAgbGV0IHJhbmdlV2l0aERvdHMgPSBbXTtcclxuICAgICAgbGV0IGw7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGFzdDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGkgPT0gMSB8fCBpID09IGxhc3QgfHwgaSA+PSBsZWZ0ICYmIGkgPCByaWdodCkge1xyXG4gICAgICAgICAgICByYW5nZS5wdXNoKGkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgZm9yIChsZXQgaSBvZiByYW5nZSkge1xyXG4gICAgICAgIGlmIChsKSB7XHJcbiAgICAgICAgICAgIGlmIChpIC0gbCAhPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmFuZ2VXaXRoRG90cy5wdXNoKCcuLi4nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByYW5nZVdpdGhEb3RzLnB1c2goaSk7XHJcbiAgICAgICAgbCA9IGk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJhbmdlV2l0aERvdHM7XHJcbiAgICB9XHJcbiAgICBuZXh0UGFnZSgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5wcmV2aW91c1BhZ2VJbmRleCA9IHRoaXMucGFnZUluZGV4O1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCAgPSB0aGlzLnBhZ2VJbmRleCArIDE7XHJcbiAgICAgIHRoaXMuX2VtaXRQYWdlRXZlbnQodGhpcy5wcmV2aW91c1BhZ2VJbmRleCk7XHJcblxyXG4gICAgICB0aGlzLmRpc3BsYXlOdW1iZXJPZlBhZ2VzID0gdGhpcy5wYWdpbmF0aW9uKHRoaXMucGFnZUluZGV4LCB0aGlzLm51bWJlck9mUGFnZXMubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIHByZXZpb3VzUGFnZSgpOiB2b2lkIHtcclxuICAgICAgdGhpcy5wcmV2aW91c1BhZ2VJbmRleCA9IHRoaXMucGFnZUluZGV4O1xyXG4gICAgICB0aGlzLnBhZ2VJbmRleCAgPSB0aGlzLnBhZ2VJbmRleCAtIDE7XHJcbiAgICAgIHRoaXMuX2VtaXRQYWdlRXZlbnQodGhpcy5wcmV2aW91c1BhZ2VJbmRleCk7XHJcblxyXG4gICAgICB0aGlzLmRpc3BsYXlOdW1iZXJPZlBhZ2VzID0gdGhpcy5wYWdpbmF0aW9uKHRoaXMucGFnZUluZGV4LCB0aGlzLm51bWJlck9mUGFnZXMubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICBfY2hhbmdlUGFnZVNpemUocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgICBjb25zdCBzdGFydEluZGV4ID0gdGhpcy5fcGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcclxuICAgICAgY29uc3QgcHJldmlvdXNQYWdlSW5kZXggPSB0aGlzLl9wYWdlSW5kZXg7XHJcblxyXG4gICAgICB0aGlzLnByZXZpb3VzUGFnZUluZGV4ID0gcHJldmlvdXNQYWdlSW5kZXg7XHJcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gKE1hdGguZmxvb3Ioc3RhcnRJbmRleCAvIHBhZ2VTaXplKSB8fCAwKSArIDE7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSBwYWdlU2l6ZTtcclxuXHJcbiAgICAgIHRoaXMuX2VtaXRQYWdlRXZlbnQodGhpcy5wcmV2aW91c1BhZ2VJbmRleCk7XHJcbiAgICAgIHRoaXMuZ2V0TnVtYmVyT2ZQYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIF9jaGFuZ2VQYWdlTnVtYmVyKHBhZ2VOdW1iZXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICB0aGlzLnByZXZpb3VzUGFnZUluZGV4ID0gdGhpcy5wYWdlSW5kZXg7XHJcbiAgICAgIHRoaXMucGFnZUluZGV4ID0gcGFnZU51bWJlcjtcclxuICAgICAgdGhpcy5fZW1pdFBhZ2VFdmVudCh0aGlzLnByZXZpb3VzUGFnZUluZGV4KTtcclxuICAgICAgdGhpcy5nZXROdW1iZXJPZlBhZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZW1pdFBhZ2VFdmVudChwcmV2aW91c1BhZ2VJbmRleDogbnVtYmVyKSB7XHJcbiAgICAgIHRoaXMucGFnZS5lbWl0KHtcclxuICAgICAgICBwcmV2aW91c1BhZ2VJbmRleCxcclxuICAgICAgICBwYWdlSW5kZXg6IHRoaXMuX3BhZ2VJbmRleCxcclxuICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSxcclxuICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuIl19