@agorapulse/ui-components 18.0.39 → 18.0.41
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.
- package/agorapulse-ui-components-18.0.41.tgz +0 -0
- package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +3 -3
- package/esm2022/nav-selector/nav-selector.component.mjs +3 -3
- package/esm2022/nav-selector/nav-selector.mjs +1 -1
- package/esm2022/nav-selector/utils/nav-selector.builder.mjs +2 -1
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs +5 -4
- package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
- package/nav-selector/nav-selector.d.ts +4 -0
- package/package.json +1 -1
- package/agorapulse-ui-components-18.0.39.tgz +0 -0
|
Binary file
|
|
@@ -78,7 +78,7 @@ export class NavSelectorCategoryComponent {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorCategoryComponent, deps: [{ token: i0.ElementRef }, { token: i1.NavSelectorCategoryPresenter }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NavSelectorCategoryComponent, isStandalone: true, selector: "ap-nav-selector-category", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClicked: "actionClicked" }, host: { listeners: { "keydown.arrowLeft": "navSelectorCategoryPresenter.fold($event, this.category())", "keydown.arrowRight": "navSelectorCategoryPresenter.unfold($event, this.category())" }, properties: { "class.minified": "!navSelectorCategoryPresenter.expanded()" } }, providers: [withSymbols(apChevronDown, apChevronUp), NavSelectorCategoryPresenter], viewQueries: [{ propertyName: "aliasEl", first: true, predicate: ["alias"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (navSelectorCategoryPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"category()\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <span\n #alias\n class=\"caption\">\n {{ category().alias }}\n </span>\n\n <ap-symbol\n class=\"folding-button\"\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of category().children; track child.uid) {\n
|
|
81
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NavSelectorCategoryComponent, isStandalone: true, selector: "ap-nav-selector-category", inputs: { category: { classPropertyName: "category", publicName: "category", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { actionClicked: "actionClicked" }, host: { listeners: { "keydown.arrowLeft": "navSelectorCategoryPresenter.fold($event, this.category())", "keydown.arrowRight": "navSelectorCategoryPresenter.unfold($event, this.category())" }, properties: { "class.minified": "!navSelectorCategoryPresenter.expanded()" } }, providers: [withSymbols(apChevronDown, apChevronUp), NavSelectorCategoryPresenter], viewQueries: [{ propertyName: "aliasEl", first: true, predicate: ["alias"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (navSelectorCategoryPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"category()\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <span\n #alias\n class=\"caption\">\n {{ category().alias }}\n </span>\n\n <ap-symbol\n class=\"folding-button\"\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @if (category().children.length === 0) {\n @if (category().emptyStateTitle) {\n <div class=\"empty-state\">\n {{ category().emptyStateTitle }}\n </div>\n }\n } @else {\n @for (child of category().children; track child.uid) {\n @if (!child.hidden) {\n <div\n class=\"entry\"\n [class.folder]=\"child.type === 'GROUP'\">\n @if (child.type === 'LEAF') {\n <ap-nav-selector-leaf\n [leaf]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n } @else if (child.type === 'GROUP') {\n <ap-nav-selector-group\n [group]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n }\n </div>\n }\n }\n }\n </div>\n }\n </div>\n} @else {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTreeNodeAccessibility]=\"category()\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <div class=\"name-container\">\n <span class=\"caption\">{{ category().alias }}</span>\n </div>\n\n <div class=\"toggle\">\n <ap-symbol\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of category().children; track child.uid) {\n @if (!child.hidden) {\n <div\n class=\"entry\"\n [class.folder]=\"child.type === 'GROUP'\">\n @if (child.type === 'LEAF') {\n <ap-nav-selector-leaf\n [leaf]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n } @else if (child.type === 'GROUP') {\n <ap-nav-selector-group\n [group]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n }\n </div>\n }\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:flex;align-items:center;flex-shrink:0;align-self:stretch;flex-direction:column}:host .children-container{align-self:stretch}:host .children-container .empty-state{font-size:var(--ref-font-size-xs);font-weight:var(--ref-font-weight-regular);font-style:italic;color:var(--ref-color-grey-80);padding:var(--ref-spacing-xxs)}:host .folding-button{display:flex;width:16px;height:16px;justify-content:center;align-items:center;flex-shrink:0}:host .content{padding:0 var(--ref-spacing-xxs);display:flex;height:36px;align-items:center;gap:var(--ref-spacing-xxs);flex-shrink:0;flex-grow:1;align-self:stretch;cursor:pointer}:host .content:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10)}:host .content:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host .content:focus-visible{outline:none;border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10);box-shadow:0 0 0 1px var(--ref-color-white),0 0 0 3px var(--ref-color-electric-blue-100)}:host ap-symbol[symbol-id=chevron-down],:host ap-symbol[symbol-id=chevron-up]{color:var(--ref-color-grey-80)}:host .caption{-webkit-box-orient:vertical;-webkit-line-clamp:1;flex:1 0 0;overflow:hidden;white-space:nowrap;color:var(--ref-color-grey-100);text-overflow:ellipsis;font-family:Averta;font-size:var(--sys-text-style-h4-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-md)}:host .children{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch}:host .children .entry{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;margin-left:calc(-1 * var(--ref-spacing-xxs));margin-right:calc(-1 * var(--ref-spacing-xxs))}:host .children .entry.folder{padding:var(--ref-spacing-xxs);border-bottom:1px solid var(--sys-border-color-default)}:host .children .entry.folder+.entry:not(.folder){padding-top:var(--ref-spacing-xxs)}:host .children .entry.folder:first-child{padding-top:0}:host .children .entry.folder:last-child{border-bottom:none;padding-bottom:0}:host .children .entry:not(.folder){padding-left:var(--ref-spacing-xxs);padding-right:var(--ref-spacing-xxs)}:host .children .entry:not(.folder):first-child:not(:last-child){padding-top:var(--ref-spacing-xxs)}:host .children .entry:not(.folder):last-child:not(:first-child){padding-bottom:var(--ref-spacing-xxs);border-bottom:none}:host .children .entry:not(.folder):has(+.entry.folder){padding-bottom:var(--ref-spacing-xxs)}:host .children .entry:not(.folder)+.entry.folder{border-top:1px solid var(--sys-border-color-default)}:host.minified .name-container{overflow:hidden;display:flex}:host.minified .name-container span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block}:host.minified .caption{white-space:nowrap}:host.minified .content{position:relative}:host.minified .content .toggle{position:absolute;display:none}:host.minified .content:hover .toggle,:host.minified .content:focus-visible .toggle{inset:0;display:flex;justify-content:center;align-items:center}:host.minified .content:hover .name-container,:host.minified .content:focus-visible .name-container{display:none}\n"], dependencies: [{ kind: "component", type: NavSelectorLeafComponent, selector: "ap-nav-selector-leaf", inputs: ["leaf"], outputs: ["actionClicked"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: NavSelectorGroupComponent, selector: "ap-nav-selector-group", inputs: ["group"], outputs: ["actionClicked"] }, { kind: "directive", type: TreeNodeAccessibilityDirective, selector: "[apTreeNodeAccessibility]", inputs: ["apTreeNodeAccessibility"] }, { kind: "directive", type: TooltipDirective, selector: "[apTooltip]", inputs: ["apTooltip", "apTooltipPosition", "apTooltipShowDelay", "apTooltipHideDelay", "apTooltipDuration", "apTooltipDisabled", "apTooltipTruncatedTextOnly", "apTooltipTemplateContext", "apTooltipVirtualScrollElement"] }], animations: [
|
|
82
82
|
/**
|
|
83
83
|
* Overflow hidden is put only during the animation and on the collapsed state because if it is put on the expanded state then children’s border will be cut (hover / focus)
|
|
84
84
|
*/
|
|
@@ -124,6 +124,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
124
124
|
animate('250ms cubic-bezier(.4, 0, .3, 1)', keyframes([style({ maxHeight: '{{maxHeight}}' }), style({ overflow: 'hidden', maxHeight: 0 })])),
|
|
125
125
|
]),
|
|
126
126
|
]),
|
|
127
|
-
], template: "@if (navSelectorCategoryPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"category()\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <span\n #alias\n class=\"caption\">\n {{ category().alias }}\n </span>\n\n <ap-symbol\n class=\"folding-button\"\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of category().children; track child.uid) {\n
|
|
127
|
+
], template: "@if (navSelectorCategoryPresenter.expandedAfterDelay()) {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n [apTreeNodeAccessibility]=\"category()\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <span\n #alias\n class=\"caption\">\n {{ category().alias }}\n </span>\n\n <ap-symbol\n class=\"folding-button\"\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @if (category().children.length === 0) {\n @if (category().emptyStateTitle) {\n <div class=\"empty-state\">\n {{ category().emptyStateTitle }}\n </div>\n }\n } @else {\n @for (child of category().children; track child.uid) {\n @if (!child.hidden) {\n <div\n class=\"entry\"\n [class.folder]=\"child.type === 'GROUP'\">\n @if (child.type === 'LEAF') {\n <ap-nav-selector-leaf\n [leaf]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n } @else if (child.type === 'GROUP') {\n <ap-nav-selector-group\n [group]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n }\n </div>\n }\n }\n }\n </div>\n }\n </div>\n} @else {\n <div\n class=\"content\"\n apTooltipPosition=\"right\"\n [apTreeNodeAccessibility]=\"category()\"\n [apTooltip]=\"tooltipContent()\"\n [apTooltipDisabled]=\"tooltipDisabled()\"\n (click)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.space)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\"\n (keydown.enter)=\"navSelectorCategoryPresenter.toggleFolding($event, this.category())\">\n <div class=\"name-container\">\n <span class=\"caption\">{{ category().alias }}</span>\n </div>\n\n <div class=\"toggle\">\n <ap-symbol\n size=\"sm\"\n [symbolId]=\"foldSymbol()\" />\n </div>\n </div>\n\n <div\n class=\"children-container\"\n [@accordion]=\"{\n value: animationState(),\n params: {\n maxHeight: maxHeight()\n }\n }\">\n @if (!foldedWithDelay()) {\n <div class=\"children\">\n @for (child of category().children; track child.uid) {\n @if (!child.hidden) {\n <div\n class=\"entry\"\n [class.folder]=\"child.type === 'GROUP'\">\n @if (child.type === 'LEAF') {\n <ap-nav-selector-leaf\n [leaf]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n } @else if (child.type === 'GROUP') {\n <ap-nav-selector-group\n [group]=\"child\"\n (actionClicked)=\"actionClicked.emit($event)\" />\n }\n </div>\n }\n }\n </div>\n }\n </div>\n}\n", styles: [":host{display:flex;align-items:center;flex-shrink:0;align-self:stretch;flex-direction:column}:host .children-container{align-self:stretch}:host .children-container .empty-state{font-size:var(--ref-font-size-xs);font-weight:var(--ref-font-weight-regular);font-style:italic;color:var(--ref-color-grey-80);padding:var(--ref-spacing-xxs)}:host .folding-button{display:flex;width:16px;height:16px;justify-content:center;align-items:center;flex-shrink:0}:host .content{padding:0 var(--ref-spacing-xxs);display:flex;height:36px;align-items:center;gap:var(--ref-spacing-xxs);flex-shrink:0;flex-grow:1;align-self:stretch;cursor:pointer}:host .content:hover{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10)}:host .content:active{border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-20)}:host .content:focus-visible{outline:none;border-radius:var(--ref-border-radius-sm);background:var(--ref-color-electric-blue-10);box-shadow:0 0 0 1px var(--ref-color-white),0 0 0 3px var(--ref-color-electric-blue-100)}:host ap-symbol[symbol-id=chevron-down],:host ap-symbol[symbol-id=chevron-up]{color:var(--ref-color-grey-80)}:host .caption{-webkit-box-orient:vertical;-webkit-line-clamp:1;flex:1 0 0;overflow:hidden;white-space:nowrap;color:var(--ref-color-grey-100);text-overflow:ellipsis;font-family:Averta;font-size:var(--sys-text-style-h4-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-md)}:host .children{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch}:host .children .entry{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;margin-left:calc(-1 * var(--ref-spacing-xxs));margin-right:calc(-1 * var(--ref-spacing-xxs))}:host .children .entry.folder{padding:var(--ref-spacing-xxs);border-bottom:1px solid var(--sys-border-color-default)}:host .children .entry.folder+.entry:not(.folder){padding-top:var(--ref-spacing-xxs)}:host .children .entry.folder:first-child{padding-top:0}:host .children .entry.folder:last-child{border-bottom:none;padding-bottom:0}:host .children .entry:not(.folder){padding-left:var(--ref-spacing-xxs);padding-right:var(--ref-spacing-xxs)}:host .children .entry:not(.folder):first-child:not(:last-child){padding-top:var(--ref-spacing-xxs)}:host .children .entry:not(.folder):last-child:not(:first-child){padding-bottom:var(--ref-spacing-xxs);border-bottom:none}:host .children .entry:not(.folder):has(+.entry.folder){padding-bottom:var(--ref-spacing-xxs)}:host .children .entry:not(.folder)+.entry.folder{border-top:1px solid var(--sys-border-color-default)}:host.minified .name-container{overflow:hidden;display:flex}:host.minified .name-container span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:inline-block}:host.minified .caption{white-space:nowrap}:host.minified .content{position:relative}:host.minified .content .toggle{position:absolute;display:none}:host.minified .content:hover .toggle,:host.minified .content:focus-visible .toggle{inset:0;display:flex;justify-content:center;align-items:center}:host.minified .content:hover .name-container,:host.minified .content:focus-visible .name-container{display:none}\n"] }]
|
|
128
128
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NavSelectorCategoryPresenter }] });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLWNhdGVnb3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL25hdi1zZWxlY3Rvci1jYXRlZ29yeS9uYXYtc2VsZWN0b3ItY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLWNhdGVnb3J5L25hdi1zZWxlY3Rvci1jYXRlZ29yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUYsT0FBTyxFQUNILFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7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QztnQ0FDRixTQUFTLEVBQUUsQ0FBQztnQ0FDWixRQUFRLEVBQUUsUUFBUTs2QkFDckIsQ0FBQyxDQUNMOzRCQUNELEtBQUssQ0FDRCxVQUFVLEVBQ1YsS0FBSyxDQUFDO2dDQUNGLFNBQVMsRUFBRSxTQUFTOzZCQUN2QixDQUFDLENBQ0w7NEJBQ0QsVUFBVSxDQUFDLHVCQUF1QixFQUFFO2dDQUNoQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs2QkFDekcsQ0FBQzs0QkFDRixVQUFVLENBQUMsdUJBQXVCLEVBQUU7Z0NBQ2hDLE9BQU8sQ0FDSCxrQ0FBa0MsRUFDbEMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2xHOzZCQUNKLENBQUM7eUJBQ0wsQ0FBQztxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgYXBDaGV2cm9uRG93biwgYXBDaGV2cm9uVXAsIFN5bWJvbENvbXBvbmVudCwgd2l0aFN5bWJvbHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgYW5pbWF0ZSwga2V5ZnJhbWVzLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgYWZ0ZXJSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlTm9kZUFjY2Vzc2liaWxpdHlEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RyZWUtbm9kZS1hY2Nlc3NpYmlsaXR5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnksIE5hdlNlbGVjdG9yTGVhZkFjdGlvbkNsaWNrZWRFdmVudCB9IGZyb20gJy4uL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yLWdyb3VwL25hdi1zZWxlY3Rvci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JMZWFmQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yLWxlYWYvbmF2LXNlbGVjdG9yLWxlYWYuY29tcG9uZW50JztcbmltcG9ydCB7IGNvbXB1dGVOdW1iZXJPZkRpc3BsYXlhYmxlQ2hpbGRyZW5PblVuZm9sZCB9IGZyb20gJy4uL3V0aWxzL2xlYWYudXRpbHMnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlciB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWNhdGVnb3J5LnByZXNlbnRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXAtbmF2LXNlbGVjdG9yLWNhdGVnb3J5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2LXNlbGVjdG9yLWNhdGVnb3J5LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXYtc2VsZWN0b3ItY2F0ZWdvcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtOYXZTZWxlY3RvckxlYWZDb21wb25lbnQsIFN5bWJvbENvbXBvbmVudCwgTmF2U2VsZWN0b3JHcm91cENvbXBvbmVudCwgVHJlZU5vZGVBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLCBUb29sdGlwRGlyZWN0aXZlXSxcbiAgICBwcm92aWRlcnM6IFt3aXRoU3ltYm9scyhhcENoZXZyb25Eb3duLCBhcENoZXZyb25VcCksIE5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXJdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5taW5pZmllZF0nOiAnIW5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIuZXhwYW5kZWQoKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd0xlZnQpJzogJ25hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIuZm9sZCgkZXZlbnQsIHRoaXMuY2F0ZWdvcnkoKSknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dSaWdodCknOiAnbmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlci51bmZvbGQoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpJyxcbiAgICB9LFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE92ZXJmbG93IGhpZGRlbiBpcyBwdXQgb25seSBkdXJpbmcgdGhlIGFuaW1hdGlvbiBhbmQgb24gdGhlIGNvbGxhcHNlZCBzdGF0ZSBiZWNhdXNlIGlmIGl0IGlzIHB1dCBvbiB0aGUgZXhwYW5kZWQgc3RhdGUgdGhlbiBjaGlsZHJlbuKAmXMgYm9yZGVyIHdpbGwgYmUgY3V0IChob3ZlciAvIGZvY3VzKVxuICAgICAgICAgKi9cbiAgICAgICAgdHJpZ2dlcignYWNjb3JkaW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdleHBhbmRlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICdpbml0aWFsJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA9PiBleHBhbmRlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcyNTBtcyBjdWJpYy1iZXppZXIoLjQsIDAsIC4zLCAxKScsIHN0eWxlKHsgb3ZlcmZsb3c6ICdoaWRkZW4nLCBtYXhIZWlnaHQ6ICd7e21heEhlaWdodH19JyB9KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkID0+IGNvbGxhcHNlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICAgICAnMjUwbXMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMywgMSknLFxuICAgICAgICAgICAgICAgICAgICBrZXlmcmFtZXMoW3N0eWxlKHsgbWF4SGVpZ2h0OiAne3ttYXhIZWlnaHR9fScgfSksIHN0eWxlKHsgb3ZlcmZsb3c6ICdoaWRkZW4nLCBtYXhIZWlnaHQ6IDAgfSldKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JDYXRlZ29yeUNvbXBvbmVudCB7XG4gICAgY2F0ZWdvcnkgPSBpbnB1dC5yZXF1aXJlZDxJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnk+KCk7XG4gICAgYWN0aW9uQ2xpY2tlZCA9IG91dHB1dDxOYXZTZWxlY3RvckxlYWZBY3Rpb25DbGlja2VkRXZlbnQ+KCk7XG5cbiAgICBmb2xkU3ltYm9sID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY2F0ZWdvcnkoKS5mb2xkZWQgPyAnY2hldnJvbi1kb3duJyA6ICdjaGV2cm9uLXVwJykpO1xuXG4gICAgZm9sZGVkV2l0aERlbGF5ID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGFuaW1hdGlvblN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY2F0ZWdvcnkoKS5mb2xkZWQgPyAnY29sbGFwc2VkJyA6ICdleHBhbmRlZCcpKTtcblxuICAgIGFsaWFzRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2FsaWFzJyk7XG4gICAgYWxpYXNCb3VuZGVkQ2xpZW50UmVjdCA9IHNpZ25hbDx7XG4gICAgICAgIG9mZnNldFdpZHRoOiBudW1iZXI7XG4gICAgICAgIG9mZnNldEhlaWdodDogbnVtYmVyO1xuICAgICAgICBzY3JvbGxXaWR0aDogbnVtYmVyO1xuICAgICAgICBzY3JvbGxIZWlnaHQ6IG51bWJlcjtcbiAgICB9Pih7XG4gICAgICAgIG9mZnNldFdpZHRoOiAwLFxuICAgICAgICBvZmZzZXRIZWlnaHQ6IDAsXG4gICAgICAgIHNjcm9sbFdpZHRoOiAwLFxuICAgICAgICBzY3JvbGxIZWlnaHQ6IDAsXG4gICAgfSk7XG5cbiAgICB0b29sdGlwQ29udGVudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmFsaWFzQm91bmRlZENsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKCF0aGlzLm5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIuZXhwYW5kZWQoKSB8fCBlbC5vZmZzZXRXaWR0aCA8IGVsLnNjcm9sbFdpZHRoIHx8IGVsLm9mZnNldEhlaWdodCA8IGVsLnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnkoKS5hbGlhcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICB0b29sdGlwRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy50b29sdGlwQ29udGVudCgpLmxlbmd0aCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIG5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXI6IE5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXJcbiAgICApIHtcbiAgICAgICAgYWZ0ZXJSZW5kZXIoKCkgPT5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy5jb21wdXRlTWF4SGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4SGVpZ2h0KCkgIT09IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heEhlaWdodC5zZXQobWF4SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbGlhc0JvdW5kZWRDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZWQgPSB0aGlzLmNhdGVnb3J5KCkuZm9sZGVkO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZm9sZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2xkZWRXaXRoRGVsYXkuc2V0KHRydWUpLCAxNTApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sZGVkV2l0aERlbGF5LnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1heEhlaWdodCA9IHNpZ25hbCgnMHB4Jyk7XG5cbiAgICBwcml2YXRlIGNvbXB1dGVNYXhIZWlnaHQoKSB7XG4gICAgICAgIGxldCBtYXhIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICBpZiAodGhpcy5jYXRlZ29yeSgpLmZvbGRlZCkge1xuICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZEaXNwbGF5YWJsZUNoaWxkcmVuID0gY29tcHV0ZU51bWJlck9mRGlzcGxheWFibGVDaGlsZHJlbk9uVW5mb2xkKHRoaXMuY2F0ZWdvcnkoKSk7XG4gICAgICAgICAgICBtYXhIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ICogbnVtYmVyT2ZEaXNwbGF5YWJsZUNoaWxkcmVuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHttYXhIZWlnaHR9cHhgO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWxpYXNCb3VuZGVkQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmFsaWFzRWwoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBjb25zdCBib3VuZGVkQ2xpZW50UmVjdCA9IHtcbiAgICAgICAgICAgICAgICBvZmZzZXRXaWR0aDogZWwub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgb2Zmc2V0SGVpZ2h0OiBlbC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodDogZWwuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLmFsaWFzQm91bmRlZENsaWVudFJlY3QoKSkgIT09IEpTT04uc3RyaW5naWZ5KGJvdW5kZWRDbGllbnRSZWN0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxpYXNCb3VuZGVkQ2xpZW50UmVjdC5zZXQoYm91bmRlZENsaWVudFJlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGlmIChuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLmV4cGFuZGVkQWZ0ZXJEZWxheSgpKSB7XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICBhcFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgW2FwVG9vbHRpcF09XCJ0b29sdGlwQ29udGVudCgpXCJcbiAgICAgICAgW2FwVG9vbHRpcERpc2FibGVkXT1cInRvb2x0aXBEaXNhYmxlZCgpXCJcbiAgICAgICAgW2FwVHJlZU5vZGVBY2Nlc3NpYmlsaXR5XT1cImNhdGVnb3J5KClcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLnRvZ2dsZUZvbGRpbmcoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwibmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlci50b2dnbGVGb2xkaW5nKCRldmVudCwgdGhpcy5jYXRlZ29yeSgpKVwiXG4gICAgICAgIChjbGljayk9XCJuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLnRvZ2dsZUZvbGRpbmcoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAjYWxpYXNcbiAgICAgICAgICAgIGNsYXNzPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAge3sgY2F0ZWdvcnkoKS5hbGlhcyB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgY2xhc3M9XCJmb2xkaW5nLWJ1dHRvblwiXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgW3N5bWJvbElkXT1cImZvbGRTeW1ib2woKVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyXCJcbiAgICAgICAgW0BhY2NvcmRpb25dPVwie1xuICAgICAgICAgICAgdmFsdWU6IGFuaW1hdGlvblN0YXRlKCksXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cIj5cbiAgICAgICAgQGlmICghZm9sZGVkV2l0aERlbGF5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZHJlblwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGNhdGVnb3J5KCkuY2hpbGRyZW47IHRyYWNrIGNoaWxkLnVpZCkge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKCFjaGlsZC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZm9sZGVyXT1cImNoaWxkLnR5cGUgPT09ICdHUk9VUCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNoaWxkLnR5cGUgPT09ICdMRUFGJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWxlYWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWFmXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb25DbGlja2VkKT1cImFjdGlvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChjaGlsZC50eXBlID09PSAnR1JPVVAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1uYXYtc2VsZWN0b3ItZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxufSBAZWxzZSB7XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICBhcFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgW2FwVHJlZU5vZGVBY2Nlc3NpYmlsaXR5XT1cImNhdGVnb3J5KClcIlxuICAgICAgICBbYXBUb29sdGlwXT1cInRvb2x0aXBDb250ZW50KClcIlxuICAgICAgICBbYXBUb29sdGlwRGlzYWJsZWRdPVwidG9vbHRpcERpc2FibGVkKClcIlxuICAgICAgICAoY2xpY2spPVwibmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlci50b2dnbGVGb2xkaW5nKCRldmVudCwgdGhpcy5jYXRlZ29yeSgpKVwiXG4gICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIudG9nZ2xlRm9sZGluZygkZXZlbnQsIHRoaXMuY2F0ZWdvcnkoKSlcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLnRvZ2dsZUZvbGRpbmcoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXB0aW9uXCI+e3sgY2F0ZWdvcnkoKS5hbGlhcyB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZVwiPlxuICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgW3N5bWJvbElkXT1cImZvbGRTeW1ib2woKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNoaWxkcmVuLWNvbnRhaW5lclwiXG4gICAgICAgIFtAYWNjb3JkaW9uXT1cIntcbiAgICAgICAgICAgIHZhbHVlOiBhbmltYXRpb25TdGF0ZSgpLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiBtYXhIZWlnaHQoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XCI+XG4gICAgICAgIEBpZiAoIWZvbGRlZFdpdGhEZWxheSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBjYXRlZ29yeSgpLmNoaWxkcmVuOyB0cmFjayBjaGlsZC51aWQpIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmICghY2hpbGQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlbnRyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZvbGRlcl09XCJjaGlsZC50eXBlID09PSAnR1JPVVAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChjaGlsZC50eXBlID09PSAnTEVBRicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1sZWFmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVhZl09XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoY2hpbGQudHlwZSA9PT0gJ0dST1VQJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiY2hpbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLWNhdGVnb3J5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL25hdi1zZWxlY3Rvci1jYXRlZ29yeS9uYXYtc2VsZWN0b3ItY2F0ZWdvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLWNhdGVnb3J5L25hdi1zZWxlY3Rvci1jYXRlZ29yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakcsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUYsT0FBTyxFQUNILFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBRU4sS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUVqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsMENBQTBDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7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QztnQ0FDRixTQUFTLEVBQUUsQ0FBQztnQ0FDWixRQUFRLEVBQUUsUUFBUTs2QkFDckIsQ0FBQyxDQUNMOzRCQUNELEtBQUssQ0FDRCxVQUFVLEVBQ1YsS0FBSyxDQUFDO2dDQUNGLFNBQVMsRUFBRSxTQUFTOzZCQUN2QixDQUFDLENBQ0w7NEJBQ0QsVUFBVSxDQUFDLHVCQUF1QixFQUFFO2dDQUNoQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQzs2QkFDekcsQ0FBQzs0QkFDRixVQUFVLENBQUMsdUJBQXVCLEVBQUU7Z0NBQ2hDLE9BQU8sQ0FDSCxrQ0FBa0MsRUFDbEMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2xHOzZCQUNKLENBQUM7eUJBQ0wsQ0FBQztxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3Rvb2x0aXAnO1xuaW1wb3J0IHsgYXBDaGV2cm9uRG93biwgYXBDaGV2cm9uVXAsIFN5bWJvbENvbXBvbmVudCwgd2l0aFN5bWJvbHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgYW5pbWF0ZSwga2V5ZnJhbWVzLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gICAgYWZ0ZXJSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIGlucHV0LFxuICAgIG91dHB1dCxcbiAgICBzaWduYWwsXG4gICAgdW50cmFja2VkLFxuICAgIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmVlTm9kZUFjY2Vzc2liaWxpdHlEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RyZWUtbm9kZS1hY2Nlc3NpYmlsaXR5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnksIE5hdlNlbGVjdG9yTGVhZkFjdGlvbkNsaWNrZWRFdmVudCB9IGZyb20gJy4uL25hdi1zZWxlY3Rvcic7XG5pbXBvcnQgeyBOYXZTZWxlY3Rvckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yLWdyb3VwL25hdi1zZWxlY3Rvci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JMZWFmQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2LXNlbGVjdG9yLWxlYWYvbmF2LXNlbGVjdG9yLWxlYWYuY29tcG9uZW50JztcbmltcG9ydCB7IGNvbXB1dGVOdW1iZXJPZkRpc3BsYXlhYmxlQ2hpbGRyZW5PblVuZm9sZCB9IGZyb20gJy4uL3V0aWxzL2xlYWYudXRpbHMnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlciB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWNhdGVnb3J5LnByZXNlbnRlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXAtbmF2LXNlbGVjdG9yLWNhdGVnb3J5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2LXNlbGVjdG9yLWNhdGVnb3J5LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXYtc2VsZWN0b3ItY2F0ZWdvcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGltcG9ydHM6IFtOYXZTZWxlY3RvckxlYWZDb21wb25lbnQsIFN5bWJvbENvbXBvbmVudCwgTmF2U2VsZWN0b3JHcm91cENvbXBvbmVudCwgVHJlZU5vZGVBY2Nlc3NpYmlsaXR5RGlyZWN0aXZlLCBUb29sdGlwRGlyZWN0aXZlXSxcbiAgICBwcm92aWRlcnM6IFt3aXRoU3ltYm9scyhhcENoZXZyb25Eb3duLCBhcENoZXZyb25VcCksIE5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXJdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5taW5pZmllZF0nOiAnIW5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIuZXhwYW5kZWQoKScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd0xlZnQpJzogJ25hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIuZm9sZCgkZXZlbnQsIHRoaXMuY2F0ZWdvcnkoKSknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dSaWdodCknOiAnbmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlci51bmZvbGQoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpJyxcbiAgICB9LFxuICAgIGFuaW1hdGlvbnM6IFtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE92ZXJmbG93IGhpZGRlbiBpcyBwdXQgb25seSBkdXJpbmcgdGhlIGFuaW1hdGlvbiBhbmQgb24gdGhlIGNvbGxhcHNlZCBzdGF0ZSBiZWNhdXNlIGlmIGl0IGlzIHB1dCBvbiB0aGUgZXhwYW5kZWQgc3RhdGUgdGhlbiBjaGlsZHJlbuKAmXMgYm9yZGVyIHdpbGwgYmUgY3V0IChob3ZlciAvIGZvY3VzKVxuICAgICAgICAgKi9cbiAgICAgICAgdHJpZ2dlcignYWNjb3JkaW9uJywgW1xuICAgICAgICAgICAgc3RhdGUoXG4gICAgICAgICAgICAgICAgJ2NvbGxhcHNlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlKFxuICAgICAgICAgICAgICAgICdleHBhbmRlZCcsXG4gICAgICAgICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICdpbml0aWFsJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2NvbGxhcHNlZCA9PiBleHBhbmRlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKCcyNTBtcyBjdWJpYy1iZXppZXIoLjQsIDAsIC4zLCAxKScsIHN0eWxlKHsgb3ZlcmZsb3c6ICdoaWRkZW4nLCBtYXhIZWlnaHQ6ICd7e21heEhlaWdodH19JyB9KSksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkID0+IGNvbGxhcHNlZCcsIFtcbiAgICAgICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAgICAgICAnMjUwbXMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMywgMSknLFxuICAgICAgICAgICAgICAgICAgICBrZXlmcmFtZXMoW3N0eWxlKHsgbWF4SGVpZ2h0OiAne3ttYXhIZWlnaHR9fScgfSksIHN0eWxlKHsgb3ZlcmZsb3c6ICdoaWRkZW4nLCBtYXhIZWlnaHQ6IDAgfSldKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgXSksXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2U2VsZWN0b3JDYXRlZ29yeUNvbXBvbmVudCB7XG4gICAgY2F0ZWdvcnkgPSBpbnB1dC5yZXF1aXJlZDxJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnk+KCk7XG4gICAgYWN0aW9uQ2xpY2tlZCA9IG91dHB1dDxOYXZTZWxlY3RvckxlYWZBY3Rpb25DbGlja2VkRXZlbnQ+KCk7XG5cbiAgICBmb2xkU3ltYm9sID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY2F0ZWdvcnkoKS5mb2xkZWQgPyAnY2hldnJvbi1kb3duJyA6ICdjaGV2cm9uLXVwJykpO1xuXG4gICAgZm9sZGVkV2l0aERlbGF5ID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIGFuaW1hdGlvblN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY2F0ZWdvcnkoKS5mb2xkZWQgPyAnY29sbGFwc2VkJyA6ICdleHBhbmRlZCcpKTtcblxuICAgIGFsaWFzRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2FsaWFzJyk7XG4gICAgYWxpYXNCb3VuZGVkQ2xpZW50UmVjdCA9IHNpZ25hbDx7XG4gICAgICAgIG9mZnNldFdpZHRoOiBudW1iZXI7XG4gICAgICAgIG9mZnNldEhlaWdodDogbnVtYmVyO1xuICAgICAgICBzY3JvbGxXaWR0aDogbnVtYmVyO1xuICAgICAgICBzY3JvbGxIZWlnaHQ6IG51bWJlcjtcbiAgICB9Pih7XG4gICAgICAgIG9mZnNldFdpZHRoOiAwLFxuICAgICAgICBvZmZzZXRIZWlnaHQ6IDAsXG4gICAgICAgIHNjcm9sbFdpZHRoOiAwLFxuICAgICAgICBzY3JvbGxIZWlnaHQ6IDAsXG4gICAgfSk7XG5cbiAgICB0b29sdGlwQ29udGVudCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmFsaWFzQm91bmRlZENsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKCF0aGlzLm5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIuZXhwYW5kZWQoKSB8fCBlbC5vZmZzZXRXaWR0aCA8IGVsLnNjcm9sbFdpZHRoIHx8IGVsLm9mZnNldEhlaWdodCA8IGVsLnNjcm9sbEhlaWdodCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnkoKS5hbGlhcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICB0b29sdGlwRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy50b29sdGlwQ29udGVudCgpLmxlbmd0aCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICAgICAgcHVibGljIG5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXI6IE5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXJcbiAgICApIHtcbiAgICAgICAgYWZ0ZXJSZW5kZXIoKCkgPT5cbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy5jb21wdXRlTWF4SGVpZ2h0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4SGVpZ2h0KCkgIT09IG1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heEhlaWdodC5zZXQobWF4SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbGlhc0JvdW5kZWRDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZWQgPSB0aGlzLmNhdGVnb3J5KCkuZm9sZGVkO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZm9sZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb2xkZWRXaXRoRGVsYXkuc2V0KHRydWUpLCAxNTApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9sZGVkV2l0aERlbGF5LnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG1heEhlaWdodCA9IHNpZ25hbCgnMHB4Jyk7XG5cbiAgICBwcml2YXRlIGNvbXB1dGVNYXhIZWlnaHQoKSB7XG4gICAgICAgIGxldCBtYXhIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICBpZiAodGhpcy5jYXRlZ29yeSgpLmZvbGRlZCkge1xuICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZEaXNwbGF5YWJsZUNoaWxkcmVuID0gY29tcHV0ZU51bWJlck9mRGlzcGxheWFibGVDaGlsZHJlbk9uVW5mb2xkKHRoaXMuY2F0ZWdvcnkoKSk7XG4gICAgICAgICAgICBtYXhIZWlnaHQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0ICogbnVtYmVyT2ZEaXNwbGF5YWJsZUNoaWxkcmVuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHttYXhIZWlnaHR9cHhgO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWxpYXNCb3VuZGVkQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmFsaWFzRWwoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICBjb25zdCBib3VuZGVkQ2xpZW50UmVjdCA9IHtcbiAgICAgICAgICAgICAgICBvZmZzZXRXaWR0aDogZWwub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgb2Zmc2V0SGVpZ2h0OiBlbC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgc2Nyb2xsV2lkdGg6IGVsLnNjcm9sbFdpZHRoLFxuICAgICAgICAgICAgICAgIHNjcm9sbEhlaWdodDogZWwuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLmFsaWFzQm91bmRlZENsaWVudFJlY3QoKSkgIT09IEpTT04uc3RyaW5naWZ5KGJvdW5kZWRDbGllbnRSZWN0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWxpYXNCb3VuZGVkQ2xpZW50UmVjdC5zZXQoYm91bmRlZENsaWVudFJlY3QpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiQGlmIChuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLmV4cGFuZGVkQWZ0ZXJEZWxheSgpKSB7XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNvbnRlbnRcIlxuICAgICAgICBhcFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgW2FwVG9vbHRpcF09XCJ0b29sdGlwQ29udGVudCgpXCJcbiAgICAgICAgW2FwVG9vbHRpcERpc2FibGVkXT1cInRvb2x0aXBEaXNhYmxlZCgpXCJcbiAgICAgICAgW2FwVHJlZU5vZGVBY2Nlc3NpYmlsaXR5XT1cImNhdGVnb3J5KClcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLnRvZ2dsZUZvbGRpbmcoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpXCJcbiAgICAgICAgKGtleWRvd24uZW50ZXIpPVwibmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlci50b2dnbGVGb2xkaW5nKCRldmVudCwgdGhpcy5jYXRlZ29yeSgpKVwiXG4gICAgICAgIChjbGljayk9XCJuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLnRvZ2dsZUZvbGRpbmcoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAjYWxpYXNcbiAgICAgICAgICAgIGNsYXNzPVwiY2FwdGlvblwiPlxuICAgICAgICAgICAge3sgY2F0ZWdvcnkoKS5hbGlhcyB9fVxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgY2xhc3M9XCJmb2xkaW5nLWJ1dHRvblwiXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgW3N5bWJvbElkXT1cImZvbGRTeW1ib2woKVwiIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyXCJcbiAgICAgICAgW0BhY2NvcmRpb25dPVwie1xuICAgICAgICAgICAgdmFsdWU6IGFuaW1hdGlvblN0YXRlKCksXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cIj5cbiAgICAgICAgQGlmICghZm9sZGVkV2l0aERlbGF5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZHJlblwiPlxuICAgICAgICAgICAgICAgIEBpZiAoY2F0ZWdvcnkoKS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgQGlmIChjYXRlZ29yeSgpLmVtcHR5U3RhdGVUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2F0ZWdvcnkoKS5lbXB0eVN0YXRlVGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGNhdGVnb3J5KCkuY2hpbGRyZW47IHRyYWNrIGNoaWxkLnVpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghY2hpbGQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZvbGRlcl09XCJjaGlsZC50eXBlID09PSAnR1JPVVAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY2hpbGQudHlwZSA9PT0gJ0xFQUYnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWxlYWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGVhZl09XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChjaGlsZC50eXBlID09PSAnR1JPVVAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG59IEBlbHNlIHtcbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY29udGVudFwiXG4gICAgICAgIGFwVG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICBbYXBUcmVlTm9kZUFjY2Vzc2liaWxpdHldPVwiY2F0ZWdvcnkoKVwiXG4gICAgICAgIFthcFRvb2x0aXBdPVwidG9vbHRpcENvbnRlbnQoKVwiXG4gICAgICAgIFthcFRvb2x0aXBEaXNhYmxlZF09XCJ0b29sdGlwRGlzYWJsZWQoKVwiXG4gICAgICAgIChjbGljayk9XCJuYXZTZWxlY3RvckNhdGVnb3J5UHJlc2VudGVyLnRvZ2dsZUZvbGRpbmcoJGV2ZW50LCB0aGlzLmNhdGVnb3J5KCkpXCJcbiAgICAgICAgKGtleWRvd24uc3BhY2UpPVwibmF2U2VsZWN0b3JDYXRlZ29yeVByZXNlbnRlci50b2dnbGVGb2xkaW5nKCRldmVudCwgdGhpcy5jYXRlZ29yeSgpKVwiXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cIm5hdlNlbGVjdG9yQ2F0ZWdvcnlQcmVzZW50ZXIudG9nZ2xlRm9sZGluZygkZXZlbnQsIHRoaXMuY2F0ZWdvcnkoKSlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcHRpb25cIj57eyBjYXRlZ29yeSgpLmFsaWFzIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICBbc3ltYm9sSWRdPVwiZm9sZFN5bWJvbCgpXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY2hpbGRyZW4tY29udGFpbmVyXCJcbiAgICAgICAgW0BhY2NvcmRpb25dPVwie1xuICAgICAgICAgICAgdmFsdWU6IGFuaW1hdGlvblN0YXRlKCksXG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IG1heEhlaWdodCgpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cIj5cbiAgICAgICAgQGlmICghZm9sZGVkV2l0aERlbGF5KCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlsZHJlblwiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIGNhdGVnb3J5KCkuY2hpbGRyZW47IHRyYWNrIGNoaWxkLnVpZCkge1xuICAgICAgICAgICAgICAgICAgICBAaWYgKCFjaGlsZC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImVudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZm9sZGVyXT1cImNoaWxkLnR5cGUgPT09ICdHUk9VUCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNoaWxkLnR5cGUgPT09ICdMRUFGJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWxlYWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWFmXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhY3Rpb25DbGlja2VkKT1cImFjdGlvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChjaGlsZC50eXBlID09PSAnR1JPVVAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1uYXYtc2VsZWN0b3ItZ3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJjaGlsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxufVxuIl19
|
|
@@ -161,7 +161,7 @@ export class NavSelectorComponent {
|
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NavSelectorComponent, deps: [{ token: i1.NavSelectorState }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
164
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NavSelectorComponent, isStandalone: true, selector: "ap-nav-selector", inputs: { navSelectorEntries: { classPropertyName: "navSelectorEntries", publicName: "navSelectorEntries", isSignal: true, isRequired: true, transformFunction: null }, translatedTexts: { classPropertyName: "translatedTexts", publicName: "translatedTexts", isSignal: true, isRequired: true, transformFunction: null }, multipleModeEnabled: { classPropertyName: "multipleModeEnabled", publicName: "multipleModeEnabled", isSignal: true, isRequired: false, transformFunction: null }, detailsDisplayedLimit: { classPropertyName: "detailsDisplayedLimit", publicName: "detailsDisplayedLimit", isSignal: true, isRequired: false, transformFunction: null }, embedded: { classPropertyName: "embedded", publicName: "embedded", isSignal: true, isRequired: false, transformFunction: null }, forceExpanded: { classPropertyName: "forceExpanded", publicName: "forceExpanded", isSignal: true, isRequired: false, transformFunction: null }, expandedStateLocalStorageKey: { classPropertyName: "expandedStateLocalStorageKey", publicName: "expandedStateLocalStorageKey", isSignal: true, isRequired: false, transformFunction: null }, selectedEntryUids: { classPropertyName: "selectedEntryUids", publicName: "selectedEntryUids", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selectedEntryUids: "selectedEntryUidsChange", actionClicked: "actionClicked", onExpansionStateChange: "onExpansionStateChange" }, host: { attributes: { "role": "tree" }, listeners: { "keydown.arrowDown": "onArrowDown($event)", "keydown.arrowUp": "onArrowUp($event)", "window:resize": "onWindowResize()" }, properties: { "class.minified": "!navSelectorState.expanded()", "class.embedded": "embedded()" } }, providers: [NavSelectorState, withSymbols(apArrowExpand, apArrowReduce, apSearch)], queries: [{ propertyName: "headerProjection", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "footerProjection", first: true, predicate: ["footer"], descendants: true, isSignal: true }], ngImport: i0, template: "<nav [@expand]=\"expansionState()\" [class.embedded]=\"embedded()\">\n @let headerProjectionNotNull = headerProjection();\n @let footerProjectionNotNull = footerProjection();\n\n @if (navSelectorState.expandedAfterDelay()) {\n <div class=\"nav-selector__header\">\n @if (!embedded()) {\n <span class=\"h3\">{{ translatedTexts().title }}</span>\n\n <button\n type=\"button\"\n class=\"expand-button expanded\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-reduce\" />\n </button>\n }\n\n\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-input-search\n [id]=\"componentUid + '_search'\"\n class=\"nav-selector-search\"\n [placeholder]=\"translatedTexts().searchPlaceholder\"\n [ngModel]=\"navSelectorState.search()\"\n (ngModelChange)=\"navSelectorState.search.set($event ?? '')\" />\n </div>\n\n <div\n class=\"nav-selector__content\"\n [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\"\n role=\"tree\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"$any(entry)\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n @if (navSelectorState.noResults()) {\n <div class=\"no-result\">{{ translatedTexts().noResults }}</div>\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n } @else {\n <div class=\"nav-selector__header\">\n <button\n type=\"button\"\n class=\"expand-button\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-expand\" />\n </button>\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-icon-button (onClick)=\"onMinifiedSearchClicked()\" type=\"stroked\" role=\"search\">\n <ap-symbol symbolId=\"search\" />\n </ap-icon-button>\n </div>\n\n <div class=\"nav-selector__content\" role=\"tree\" [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n }\n</nav>\n", styles: [":host{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;flex-grow:1;width:100%;max-width:224px;min-width:min(224px,100%)}@media only screen and (min-width: 1400px){:host:not(.embedded){max-width:250px;min-width:min(250px,100%)}:host:not(.embedded) .nav-selector__content{max-width:calc(250px - var(--ref-spacing-sm) - 4px)}}:host :hover .expand-button.expanded{animation-name:translateExpandButton}:host nav{display:flex;height:100%;width:100%;flex-grow:1;flex-direction:column;align-items:flex-start;flex-shrink:0;overflow:hidden;background:var(--ref-color-white)}:host nav:not(.embedded){border-right:1px solid var(--ref-color-grey-10)}:host .nav-selector__header{position:relative;display:flex;padding:var(--ref-spacing-xs) var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;white-space:nowrap;border-bottom:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header .h3{color:var(--ref-color-grey-100);font-family:Averta;font-size:var(--sys-text-style-h3-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-lg)}:host .nav-selector__header .expand-button-container{position:absolute;right:0;top:var(--ref-spacing-xs)}:host .nav-selector__header .expand-button{animation-duration:70ms;animation-timing-function:cubic-bezier(0,0,.2,1);animation-fill-mode:forwards;animation-name:translateHideButton;display:flex;width:24px;height:24px;justify-content:center;align-items:center;background:var(--ref-color-grey-bg);border-top:1px solid var(--ref-color-grey-20);border-right:none;border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);border-top-left-radius:var(--ref-border-radius-sm);border-bottom-left-radius:var(--ref-border-radius-sm);cursor:pointer}@keyframes translateHideButton{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes translateExpandButton{0%{transform:translate(100%)}to{transform:translate(0)}}:host .nav-selector__header .expand-button.expanded{position:absolute;right:0;top:12px;transform:translate(100%)}:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-reduce],:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-expand]{color:var(--ref-color-grey-80)}:host .nav-selector__header .expand-button:focus-visible{border-radius:var(--ref-border-radius-sm) 0px 0px var(--ref-border-radius-sm);border-top:1px solid var(--ref-color-grey-20);border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-10);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host .nav-selector__header .expand-button:focus-visible.expanded{animation-name:translateExpandButton}:host .nav-selector__header .expand-button:hover{background-color:var(--ref-color-grey-10)}:host .nav-selector__header .expand-button:active{background-color:var(--ref-color-grey-20)}:host .nav-selector__header .nav-selector-search{width:100%}:host .nav-selector__content{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;overflow-y:scroll;overflow-x:hidden}:host .nav-selector__content .entry{align-self:stretch;display:flex;flex-direction:column}:host .nav-selector__content .entry.folder{padding:var(--ref-spacing-xxs);border-bottom:1px solid var(--sys-border-color-default)}:host .nav-selector__content .entry.folder+.entry:not(.folder){padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder){padding-left:var(--ref-spacing-xxs);padding-right:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):first-child{padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):last-child{padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):has(+.entry.folder){padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder)+.entry.folder{border-top:1px solid var(--sys-border-color-default)}:host .nav-selector__content .no-result{display:flex;padding:var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;color:var(--ref-color-grey-80);font-family:Averta;font-size:var(--ref-font-size-sm);font-style:italic;font-weight:400;line-height:var(--ref-font-line-height-sm)}:host .nav-selector__footer{display:flex;padding:var(--ref-spacing-xs);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;border-top:1px solid var(--sys-border-color-default);background:var(--ref-color-white)}:host.minified nav{width:64px}:host.minified nav .nav-selector__header{align-items:center}:host.minified nav .nav-selector__header .expand-button{animation-name:none;border-radius:var(--ref-border-radius-sm);border:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-bg)}:host.minified nav .nav-selector__content .entry{padding:var(--ref-spacing-xxxs)}:host.minified nav .nav-selector__footer{padding:var(--ref-spacing-xs) var(--ref-spacing-xxxs) var(--ref-spacing-xs) var(--ref-spacing-xxxs)}\n"], dependencies: [{ kind: "component", type: NavSelectorLeafComponent, selector: "ap-nav-selector-leaf", inputs: ["leaf"], outputs: ["actionClicked"] }, { kind: "component", type: NavSelectorGroupComponent, selector: "ap-nav-selector-group", inputs: ["group"], outputs: ["actionClicked"] }, { kind: "component", type: NavSelectorCategoryComponent, selector: "ap-nav-selector-category", inputs: ["category"], outputs: ["actionClicked"] }, { kind: "component", type: InputSearchComponent, selector: "ap-input-search", inputs: ["id", "placeholder", "clearable"], outputs: ["focus", "blur", "keyup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: IconButtonComponent, selector: "ap-icon-button", inputs: ["ariaLabel", "name", "color", "disabled", "menuTrigger", "symbolId", "locked", "loading", "type"], outputs: ["onClick", "onFocus", "onBlur", "menuOpened", "menuClosed"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
164
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NavSelectorComponent, isStandalone: true, selector: "ap-nav-selector", inputs: { navSelectorEntries: { classPropertyName: "navSelectorEntries", publicName: "navSelectorEntries", isSignal: true, isRequired: true, transformFunction: null }, translatedTexts: { classPropertyName: "translatedTexts", publicName: "translatedTexts", isSignal: true, isRequired: true, transformFunction: null }, multipleModeEnabled: { classPropertyName: "multipleModeEnabled", publicName: "multipleModeEnabled", isSignal: true, isRequired: false, transformFunction: null }, detailsDisplayedLimit: { classPropertyName: "detailsDisplayedLimit", publicName: "detailsDisplayedLimit", isSignal: true, isRequired: false, transformFunction: null }, embedded: { classPropertyName: "embedded", publicName: "embedded", isSignal: true, isRequired: false, transformFunction: null }, forceExpanded: { classPropertyName: "forceExpanded", publicName: "forceExpanded", isSignal: true, isRequired: false, transformFunction: null }, expandedStateLocalStorageKey: { classPropertyName: "expandedStateLocalStorageKey", publicName: "expandedStateLocalStorageKey", isSignal: true, isRequired: false, transformFunction: null }, selectedEntryUids: { classPropertyName: "selectedEntryUids", publicName: "selectedEntryUids", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { selectedEntryUids: "selectedEntryUidsChange", actionClicked: "actionClicked", onExpansionStateChange: "onExpansionStateChange" }, host: { attributes: { "role": "tree" }, listeners: { "keydown.arrowDown": "onArrowDown($event)", "keydown.arrowUp": "onArrowUp($event)", "window:resize": "onWindowResize()" }, properties: { "class.minified": "!navSelectorState.expanded()", "class.embedded": "embedded()" } }, providers: [NavSelectorState, withSymbols(apArrowExpand, apArrowReduce, apSearch)], queries: [{ propertyName: "headerProjection", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "footerProjection", first: true, predicate: ["footer"], descendants: true, isSignal: true }], ngImport: i0, template: "<nav [@expand]=\"expansionState()\" [class.embedded]=\"embedded()\">\n @let headerProjectionNotNull = headerProjection();\n @let footerProjectionNotNull = footerProjection();\n\n @if (navSelectorState.expandedAfterDelay()) {\n <div class=\"nav-selector__header\">\n @if (!embedded()) {\n <span class=\"h3\">{{ translatedTexts().title }}</span>\n\n <button\n type=\"button\"\n class=\"expand-button expanded\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-reduce\" />\n </button>\n }\n\n\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-input-search\n [id]=\"componentUid + '_search'\"\n class=\"nav-selector-search\"\n [placeholder]=\"translatedTexts().searchPlaceholder\"\n [ngModel]=\"navSelectorState.search()\"\n (ngModelChange)=\"navSelectorState.search.set($event ?? '')\" />\n </div>\n\n <div\n class=\"nav-selector__content\"\n [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\"\n role=\"tree\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"$any(entry)\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n @if (navSelectorState.noResults()) {\n <div class=\"no-result\">{{ translatedTexts().noResults }}</div>\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n } @else {\n <div class=\"nav-selector__header\">\n <button\n type=\"button\"\n class=\"expand-button\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-expand\" />\n </button>\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-icon-button (onClick)=\"onMinifiedSearchClicked()\" type=\"stroked\" role=\"search\">\n <ap-symbol symbolId=\"search\" />\n </ap-icon-button>\n </div>\n\n <div class=\"nav-selector__content\" role=\"tree\" [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n }\n</nav>\n", styles: [":host{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;flex-grow:1;width:100%;max-width:224px;min-width:min(224px,100%)}@media only screen and (min-width: 1400px){:host:not(.embedded){max-width:250px;min-width:min(250px,100%)}:host:not(.embedded) .nav-selector__content{max-width:calc(250px - var(--ref-spacing-sm) - 4px)}}:host .minified{min-width:min(64px,100%);max-width:64px}:host :hover .expand-button.expanded{animation-name:translateExpandButton}:host nav{display:flex;height:100%;width:100%;flex-grow:1;flex-direction:column;align-items:flex-start;flex-shrink:0;overflow:hidden;background:var(--ref-color-white)}:host nav:not(.embedded){border-right:1px solid var(--ref-color-grey-10)}:host .nav-selector__header{position:relative;display:flex;padding:var(--ref-spacing-xs) var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;white-space:nowrap;border-bottom:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header .h3{color:var(--ref-color-grey-100);font-family:Averta;font-size:var(--sys-text-style-h3-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-lg)}:host .nav-selector__header .expand-button-container{position:absolute;right:0;top:var(--ref-spacing-xs)}:host .nav-selector__header .expand-button{animation-duration:70ms;animation-timing-function:cubic-bezier(0,0,.2,1);animation-fill-mode:forwards;animation-name:translateHideButton;display:flex;width:24px;height:24px;justify-content:center;align-items:center;background:var(--ref-color-grey-bg);border-top:1px solid var(--ref-color-grey-20);border-right:none;border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);border-top-left-radius:var(--ref-border-radius-sm);border-bottom-left-radius:var(--ref-border-radius-sm);cursor:pointer}@keyframes translateHideButton{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes translateExpandButton{0%{transform:translate(100%)}to{transform:translate(0)}}:host .nav-selector__header .expand-button.expanded{position:absolute;right:0;top:12px;transform:translate(100%)}:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-reduce],:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-expand]{color:var(--ref-color-grey-80)}:host .nav-selector__header .expand-button:focus-visible{border-radius:var(--ref-border-radius-sm) 0px 0px var(--ref-border-radius-sm);border-top:1px solid var(--ref-color-grey-20);border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-10);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host .nav-selector__header .expand-button:focus-visible.expanded{animation-name:translateExpandButton}:host .nav-selector__header .expand-button:hover{background-color:var(--ref-color-grey-10)}:host .nav-selector__header .expand-button:active{background-color:var(--ref-color-grey-20)}:host .nav-selector__header .nav-selector-search{width:100%}:host .nav-selector__content{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;overflow-y:scroll;overflow-x:hidden}:host .nav-selector__content .entry{align-self:stretch;display:flex;flex-direction:column}:host .nav-selector__content .entry.folder{padding:var(--ref-spacing-xxs);border-bottom:1px solid var(--sys-border-color-default)}:host .nav-selector__content .entry.folder+.entry:not(.folder){padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder){padding-left:var(--ref-spacing-xxs);padding-right:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):first-child{padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):last-child{padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):has(+.entry.folder){padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder)+.entry.folder{border-top:1px solid var(--sys-border-color-default)}:host .nav-selector__content .no-result{display:flex;padding:var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;color:var(--ref-color-grey-80);font-family:Averta;font-size:var(--ref-font-size-sm);font-style:italic;font-weight:400;line-height:var(--ref-font-line-height-sm)}:host .nav-selector__footer{display:flex;padding:var(--ref-spacing-xs);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;border-top:1px solid var(--sys-border-color-default);background:var(--ref-color-white)}:host.minified nav{width:64px}:host.minified nav .nav-selector__header{align-items:center}:host.minified nav .nav-selector__header .expand-button{animation-name:none;border-radius:var(--ref-border-radius-sm);border:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-bg)}:host.minified nav .nav-selector__content .entry{padding:var(--ref-spacing-xxxs)}:host.minified nav .nav-selector__footer{padding:var(--ref-spacing-xs) var(--ref-spacing-xxxs) var(--ref-spacing-xs) var(--ref-spacing-xxxs)}\n"], dependencies: [{ kind: "component", type: NavSelectorLeafComponent, selector: "ap-nav-selector-leaf", inputs: ["leaf"], outputs: ["actionClicked"] }, { kind: "component", type: NavSelectorGroupComponent, selector: "ap-nav-selector-group", inputs: ["group"], outputs: ["actionClicked"] }, { kind: "component", type: NavSelectorCategoryComponent, selector: "ap-nav-selector-category", inputs: ["category"], outputs: ["actionClicked"] }, { kind: "component", type: InputSearchComponent, selector: "ap-input-search", inputs: ["id", "placeholder", "clearable"], outputs: ["focus", "blur", "keyup"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: IconButtonComponent, selector: "ap-icon-button", inputs: ["ariaLabel", "name", "color", "disabled", "menuTrigger", "symbolId", "locked", "loading", "type"], outputs: ["onClick", "onFocus", "onBlur", "menuOpened", "menuClosed"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [
|
|
165
165
|
trigger('expand', [
|
|
166
166
|
state('expanded', style({ width: '100%' })),
|
|
167
167
|
state('minified', style({ width: '64px' })),
|
|
@@ -199,6 +199,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
199
199
|
// Force animation to do not be with 100% instantly
|
|
200
200
|
keyframes([style({ width: '64px' }), style({ width: '50%' }), style({ width: '100%' })]))),
|
|
201
201
|
]),
|
|
202
|
-
], template: "<nav [@expand]=\"expansionState()\" [class.embedded]=\"embedded()\">\n @let headerProjectionNotNull = headerProjection();\n @let footerProjectionNotNull = footerProjection();\n\n @if (navSelectorState.expandedAfterDelay()) {\n <div class=\"nav-selector__header\">\n @if (!embedded()) {\n <span class=\"h3\">{{ translatedTexts().title }}</span>\n\n <button\n type=\"button\"\n class=\"expand-button expanded\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-reduce\" />\n </button>\n }\n\n\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-input-search\n [id]=\"componentUid + '_search'\"\n class=\"nav-selector-search\"\n [placeholder]=\"translatedTexts().searchPlaceholder\"\n [ngModel]=\"navSelectorState.search()\"\n (ngModelChange)=\"navSelectorState.search.set($event ?? '')\" />\n </div>\n\n <div\n class=\"nav-selector__content\"\n [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\"\n role=\"tree\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"$any(entry)\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n @if (navSelectorState.noResults()) {\n <div class=\"no-result\">{{ translatedTexts().noResults }}</div>\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n } @else {\n <div class=\"nav-selector__header\">\n <button\n type=\"button\"\n class=\"expand-button\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-expand\" />\n </button>\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-icon-button (onClick)=\"onMinifiedSearchClicked()\" type=\"stroked\" role=\"search\">\n <ap-symbol symbolId=\"search\" />\n </ap-icon-button>\n </div>\n\n <div class=\"nav-selector__content\" role=\"tree\" [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n }\n</nav>\n", styles: [":host{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;flex-grow:1;width:100%;max-width:224px;min-width:min(224px,100%)}@media only screen and (min-width: 1400px){:host:not(.embedded){max-width:250px;min-width:min(250px,100%)}:host:not(.embedded) .nav-selector__content{max-width:calc(250px - var(--ref-spacing-sm) - 4px)}}:host :hover .expand-button.expanded{animation-name:translateExpandButton}:host nav{display:flex;height:100%;width:100%;flex-grow:1;flex-direction:column;align-items:flex-start;flex-shrink:0;overflow:hidden;background:var(--ref-color-white)}:host nav:not(.embedded){border-right:1px solid var(--ref-color-grey-10)}:host .nav-selector__header{position:relative;display:flex;padding:var(--ref-spacing-xs) var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;white-space:nowrap;border-bottom:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header .h3{color:var(--ref-color-grey-100);font-family:Averta;font-size:var(--sys-text-style-h3-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-lg)}:host .nav-selector__header .expand-button-container{position:absolute;right:0;top:var(--ref-spacing-xs)}:host .nav-selector__header .expand-button{animation-duration:70ms;animation-timing-function:cubic-bezier(0,0,.2,1);animation-fill-mode:forwards;animation-name:translateHideButton;display:flex;width:24px;height:24px;justify-content:center;align-items:center;background:var(--ref-color-grey-bg);border-top:1px solid var(--ref-color-grey-20);border-right:none;border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);border-top-left-radius:var(--ref-border-radius-sm);border-bottom-left-radius:var(--ref-border-radius-sm);cursor:pointer}@keyframes translateHideButton{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes translateExpandButton{0%{transform:translate(100%)}to{transform:translate(0)}}:host .nav-selector__header .expand-button.expanded{position:absolute;right:0;top:12px;transform:translate(100%)}:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-reduce],:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-expand]{color:var(--ref-color-grey-80)}:host .nav-selector__header .expand-button:focus-visible{border-radius:var(--ref-border-radius-sm) 0px 0px var(--ref-border-radius-sm);border-top:1px solid var(--ref-color-grey-20);border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-10);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host .nav-selector__header .expand-button:focus-visible.expanded{animation-name:translateExpandButton}:host .nav-selector__header .expand-button:hover{background-color:var(--ref-color-grey-10)}:host .nav-selector__header .expand-button:active{background-color:var(--ref-color-grey-20)}:host .nav-selector__header .nav-selector-search{width:100%}:host .nav-selector__content{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;overflow-y:scroll;overflow-x:hidden}:host .nav-selector__content .entry{align-self:stretch;display:flex;flex-direction:column}:host .nav-selector__content .entry.folder{padding:var(--ref-spacing-xxs);border-bottom:1px solid var(--sys-border-color-default)}:host .nav-selector__content .entry.folder+.entry:not(.folder){padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder){padding-left:var(--ref-spacing-xxs);padding-right:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):first-child{padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):last-child{padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):has(+.entry.folder){padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder)+.entry.folder{border-top:1px solid var(--sys-border-color-default)}:host .nav-selector__content .no-result{display:flex;padding:var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;color:var(--ref-color-grey-80);font-family:Averta;font-size:var(--ref-font-size-sm);font-style:italic;font-weight:400;line-height:var(--ref-font-line-height-sm)}:host .nav-selector__footer{display:flex;padding:var(--ref-spacing-xs);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;border-top:1px solid var(--sys-border-color-default);background:var(--ref-color-white)}:host.minified nav{width:64px}:host.minified nav .nav-selector__header{align-items:center}:host.minified nav .nav-selector__header .expand-button{animation-name:none;border-radius:var(--ref-border-radius-sm);border:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-bg)}:host.minified nav .nav-selector__content .entry{padding:var(--ref-spacing-xxxs)}:host.minified nav .nav-selector__footer{padding:var(--ref-spacing-xs) var(--ref-spacing-xxxs) var(--ref-spacing-xs) var(--ref-spacing-xxxs)}\n"] }]
|
|
202
|
+
], template: "<nav [@expand]=\"expansionState()\" [class.embedded]=\"embedded()\">\n @let headerProjectionNotNull = headerProjection();\n @let footerProjectionNotNull = footerProjection();\n\n @if (navSelectorState.expandedAfterDelay()) {\n <div class=\"nav-selector__header\">\n @if (!embedded()) {\n <span class=\"h3\">{{ translatedTexts().title }}</span>\n\n <button\n type=\"button\"\n class=\"expand-button expanded\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-reduce\" />\n </button>\n }\n\n\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-input-search\n [id]=\"componentUid + '_search'\"\n class=\"nav-selector-search\"\n [placeholder]=\"translatedTexts().searchPlaceholder\"\n [ngModel]=\"navSelectorState.search()\"\n (ngModelChange)=\"navSelectorState.search.set($event ?? '')\" />\n </div>\n\n <div\n class=\"nav-selector__content\"\n [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\"\n role=\"tree\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"$any(entry)\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n @if (navSelectorState.noResults()) {\n <div class=\"no-result\">{{ translatedTexts().noResults }}</div>\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n } @else {\n <div class=\"nav-selector__header\">\n <button\n type=\"button\"\n class=\"expand-button\"\n (click)=\"clickExpandButton()\">\n <ap-symbol\n size=\"sm\"\n symbolId=\"arrow-expand\" />\n </button>\n @if (headerProjectionNotNull) {\n <ng-container\n [ngTemplateOutlet]=\"headerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n }\n\n <ap-icon-button (onClick)=\"onMinifiedSearchClicked()\" type=\"stroked\" role=\"search\">\n <ap-symbol symbolId=\"search\" />\n </ap-icon-button>\n </div>\n\n <div class=\"nav-selector__content\" role=\"tree\" [attr.aria-multiselectable]=\"navSelectorState.isMultipleModeEnabled()\">\n @for (entry of navSelectorState.entries(); track entry.uid) {\n @if (!entry.hidden) {\n <div class=\"entry\" [class.folder]=\"entry.type === 'GROUP' || entry.type === 'CATEGORY'\">\n @if (entry.type === 'LEAF') {\n <ap-nav-selector-leaf [leaf]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'GROUP') {\n <ap-nav-selector-group [group]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n } @else if (entry.type === 'CATEGORY') {\n <ap-nav-selector-category [category]=\"entry\" (actionClicked)=\"actionClicked.emit($event)\"/>\n }\n </div>\n }\n }\n </div>\n\n @if (displayFooter() && footerProjectionNotNull) {\n <div class=\"nav-selector__footer\">\n <ng-container\n [ngTemplateOutlet]=\"footerProjectionNotNull\"\n [ngTemplateOutletContext]=\"{\n expanded: navSelectorState.expanded()\n }\" />\n </div>\n }\n }\n</nav>\n", styles: [":host{display:flex;flex-direction:column;align-items:flex-start;flex-shrink:0;flex-grow:1;width:100%;max-width:224px;min-width:min(224px,100%)}@media only screen and (min-width: 1400px){:host:not(.embedded){max-width:250px;min-width:min(250px,100%)}:host:not(.embedded) .nav-selector__content{max-width:calc(250px - var(--ref-spacing-sm) - 4px)}}:host .minified{min-width:min(64px,100%);max-width:64px}:host :hover .expand-button.expanded{animation-name:translateExpandButton}:host nav{display:flex;height:100%;width:100%;flex-grow:1;flex-direction:column;align-items:flex-start;flex-shrink:0;overflow:hidden;background:var(--ref-color-white)}:host nav:not(.embedded){border-right:1px solid var(--ref-color-grey-10)}:host .nav-selector__header{position:relative;display:flex;padding:var(--ref-spacing-xs) var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;white-space:nowrap;border-bottom:1px solid var(--ref-color-grey-10);background:var(--ref-color-white)}:host .nav-selector__header .h3{color:var(--ref-color-grey-100);font-family:Averta;font-size:var(--sys-text-style-h3-size);font-style:normal;font-weight:var(--ref-font-weight-bold);line-height:var(--ref-font-line-height-lg)}:host .nav-selector__header .expand-button-container{position:absolute;right:0;top:var(--ref-spacing-xs)}:host .nav-selector__header .expand-button{animation-duration:70ms;animation-timing-function:cubic-bezier(0,0,.2,1);animation-fill-mode:forwards;animation-name:translateHideButton;display:flex;width:24px;height:24px;justify-content:center;align-items:center;background:var(--ref-color-grey-bg);border-top:1px solid var(--ref-color-grey-20);border-right:none;border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);border-top-left-radius:var(--ref-border-radius-sm);border-bottom-left-radius:var(--ref-border-radius-sm);cursor:pointer}@keyframes translateHideButton{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes translateExpandButton{0%{transform:translate(100%)}to{transform:translate(0)}}:host .nav-selector__header .expand-button.expanded{position:absolute;right:0;top:12px;transform:translate(100%)}:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-reduce],:host .nav-selector__header .expand-button ap-symbol[symbol-id=arrow-expand]{color:var(--ref-color-grey-80)}:host .nav-selector__header .expand-button:focus-visible{border-radius:var(--ref-border-radius-sm) 0px 0px var(--ref-border-radius-sm);border-top:1px solid var(--ref-color-grey-20);border-bottom:1px solid var(--ref-color-grey-20);border-left:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-10);box-shadow:0 0 0 1px #fff,0 0 0 3px #178dfe}:host .nav-selector__header .expand-button:focus-visible.expanded{animation-name:translateExpandButton}:host .nav-selector__header .expand-button:hover{background-color:var(--ref-color-grey-10)}:host .nav-selector__header .expand-button:active{background-color:var(--ref-color-grey-20)}:host .nav-selector__header .nav-selector-search{width:100%}:host .nav-selector__content{display:flex;flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;overflow-y:scroll;overflow-x:hidden}:host .nav-selector__content .entry{align-self:stretch;display:flex;flex-direction:column}:host .nav-selector__content .entry.folder{padding:var(--ref-spacing-xxs);border-bottom:1px solid var(--sys-border-color-default)}:host .nav-selector__content .entry.folder+.entry:not(.folder){padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder){padding-left:var(--ref-spacing-xxs);padding-right:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):first-child{padding-top:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):last-child{padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder):has(+.entry.folder){padding-bottom:var(--ref-spacing-xxs)}:host .nav-selector__content .entry:not(.folder)+.entry.folder{border-top:1px solid var(--sys-border-color-default)}:host .nav-selector__content .no-result{display:flex;padding:var(--ref-spacing-sm);flex-direction:column;align-items:flex-start;flex:1 0 0;align-self:stretch;color:var(--ref-color-grey-80);font-family:Averta;font-size:var(--ref-font-size-sm);font-style:italic;font-weight:400;line-height:var(--ref-font-line-height-sm)}:host .nav-selector__footer{display:flex;padding:var(--ref-spacing-xs);flex-direction:column;align-items:flex-start;gap:var(--ref-spacing-xxs);align-self:stretch;border-top:1px solid var(--sys-border-color-default);background:var(--ref-color-white)}:host.minified nav{width:64px}:host.minified nav .nav-selector__header{align-items:center}:host.minified nav .nav-selector__header .expand-button{animation-name:none;border-radius:var(--ref-border-radius-sm);border:1px solid var(--ref-color-grey-20);background:var(--ref-color-grey-bg)}:host.minified nav .nav-selector__content .entry{padding:var(--ref-spacing-xxxs)}:host.minified nav .nav-selector__footer{padding:var(--ref-spacing-xs) var(--ref-spacing-xxxs) var(--ref-spacing-xs) var(--ref-spacing-xxxs)}\n"] }]
|
|
203
203
|
}], ctorParameters: () => [{ type: i1.NavSelectorState }, { type: i0.ElementRef }] });
|
|
204
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL25hdi1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy9uYXYtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUNMLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFF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QUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQ0o7eUJBQ0osQ0FBQztxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2ljb24tYnV0dG9uJztcbmltcG9ydCB7IElucHV0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9pbnB1dC1zZWFyY2gnO1xuaW1wb3J0IHsgYXBBcnJvd0V4cGFuZCwgYXBBcnJvd1JlZHVjZSwgYXBTZWFyY2gsIFN5bWJvbENvbXBvbmVudCwgd2l0aFN5bWJvbHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgYW5pbWF0ZSwga2V5ZnJhbWVzLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZCxcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbnB1dCxcbiAgICBtb2RlbCxcbiAgICBPbkluaXQsXG4gICAgb3V0cHV0LFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXZTZWxlY3RvckVudHJ5LCBOYXZTZWxlY3RvckxlYWZBY3Rpb25DbGlja2VkRXZlbnQsIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzIH0gZnJvbSAnLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JDYXRlZ29yeUNvbXBvbmVudCB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWNhdGVnb3J5L25hdi1zZWxlY3Rvci1jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JHcm91cENvbXBvbmVudCB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWdyb3VwL25hdi1zZWxlY3Rvci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JMZWFmQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtc2VsZWN0b3ItbGVhZi9uYXYtc2VsZWN0b3ItbGVhZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JTdGF0ZSB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLnN0YXRlJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eSB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLmFjY2Vzc2liaWxpdHknO1xuXG5jb25zdCBBVVRPX01JTklGWV9XSURUSF9CUkVBS1BPSU5UID0gMTI4MDtcbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwLW5hdi1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmF2LXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5hdlNlbGVjdG9yTGVhZkNvbXBvbmVudCxcbiAgICAgICAgTmF2U2VsZWN0b3JHcm91cENvbXBvbmVudCxcbiAgICAgICAgTmF2U2VsZWN0b3JDYXRlZ29yeUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRTZWFyY2hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgICAgIEljb25CdXR0b25Db21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtOYXZTZWxlY3RvclN0YXRlLCB3aXRoU3ltYm9scyhhcEFycm93RXhwYW5kLCBhcEFycm93UmVkdWNlLCBhcFNlYXJjaCldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5taW5pZmllZF0nOiAnIW5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKScsXG4gICAgICAgICdbY2xhc3MuZW1iZWRkZWRdJzogJ2VtYmVkZGVkKCknLFxuICAgICAgICByb2xlOiAndHJlZScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd0Rvd24pJzogJ29uQXJyb3dEb3duKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dVcCknOiAnb25BcnJvd1VwKCRldmVudCknLFxuICAgICAgICAnKHdpbmRvdzpyZXNpemUpJzogJ29uV2luZG93UmVzaXplKCknLFxuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdleHBhbmQnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IHdpZHRoOiAnMTAwJScgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ21pbmlmaWVkJywgc3R5bGUoeyB3aWR0aDogJzY0cHgnIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkID0+IG1pbmlmaWVkJywgYW5pbWF0ZSgnMjUwbXMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKFxuICAgICAgICAgICAgICAgICdtaW5pZmllZCA9PiBleHBhbmRlZCcsXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgICAgICAgJzI1MG1zIGN1YmljLWJlemllciguNCwgMCwgLjMsIDEpJyxcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgYW5pbWF0aW9uIHRvIGRvIG5vdCBiZSB3aXRoIDEwMCUgaW5zdGFudGx5XG4gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lcyhbc3R5bGUoeyB3aWR0aDogJzY0cHgnIH0pLCBzdHlsZSh7IHdpZHRoOiAnNTAlJyB9KSwgc3R5bGUoeyB3aWR0aDogJzEwMCUnIH0pXSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgbmF2U2VsZWN0b3JFbnRyaWVzID0gaW5wdXQucmVxdWlyZWQ8TmF2U2VsZWN0b3JFbnRyeVtdPigpO1xuICAgIHRyYW5zbGF0ZWRUZXh0cyA9IGlucHV0LnJlcXVpcmVkPE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzPigpO1xuICAgIG11bHRpcGxlTW9kZUVuYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQgPSBpbnB1dDxudW1iZXI+KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTtcbiAgICBlbWJlZGRlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSBuYXYgc2VsZWN0b3Igd2lsbCBiZSBleHBhbmRlZCBieSBkZWZhdWx0LiBFdmVuIGlmIHRoZSB3aWR0aCBvZiB0aGUgc2NyZWVuIGlzIHNtYWxsZXIgdGhhbiAxMjgwcHguXG4gICAgICovXG4gICAgZm9yY2VFeHBhbmRlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBleHBhbmRlZFN0YXRlTG9jYWxTdG9yYWdlS2V5ID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgc2VsZWN0ZWRFbnRyeVVpZHMgPSBtb2RlbC5yZXF1aXJlZDxzdHJpbmdbXT4oKTtcblxuICAgIGFjdGlvbkNsaWNrZWQgPSBvdXRwdXQ8TmF2U2VsZWN0b3JMZWFmQWN0aW9uQ2xpY2tlZEV2ZW50PigpO1xuXG4gICAgaGVhZGVyUHJvamVjdGlvbiA9IGNvbnRlbnRDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2hlYWRlcicpO1xuICAgIGZvb3RlclByb2plY3Rpb24gPSBjb250ZW50Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdmb290ZXInKTtcblxuICAgIGRpc3BsYXlGb290ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZvb3RlclByb2plY3Rpb24oKSAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGV4cGFuc2lvblN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpID8gJ2V4cGFuZGVkJyA6ICdtaW5pZmllZCcpKTtcblxuICAgIG9uRXhwYW5zaW9uU3RhdGVDaGFuZ2UgPSBvdXRwdXQ8eyBleHBhbmRlZDogYm9vbGVhbiB9PigpO1xuXG4gICAgY29tcG9uZW50VWlkID0gYG5hdi1zZWxlY3Rvci0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICByZWFkeSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIG5hdlNlbGVjdG9yU3RhdGU6IE5hdlNlbGVjdG9yU3RhdGUsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgbmF2U2VsZWN0b3JTdGF0ZS5yZWdpc3Rlck9uU2VsZWN0ZWRVaWRzQ2hhbmdlKHNlbGVjdGVkVWlkcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0luaXQgPSAhIXRoaXMubmF2U2VsZWN0b3JTdGF0ZS5lbnRyaWVzKCkubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKGlzSW5pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbnRyeVVpZHMuc2V0KHNlbGVjdGVkVWlkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5LnNldCh0cnVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5uYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKCk7XG4gICAgICAgICAgICB0aGlzLm9uRXhwYW5zaW9uU3RhdGVDaGFuZ2UuZW1pdCh7IGV4cGFuZGVkIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbXVsdGlwbGVNb2RlRW5hYmxlZCA9IHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpO1xuICAgICAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IHRoaXMubmF2U2VsZWN0b3JFbnRyaWVzKCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVNdWx0aU1vZGVFbmFibGVkKG11bHRpcGxlTW9kZUVuYWJsZWQpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uYXZTZWxlY3RvclN0YXRlLmVudHJpZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmluaXRFbnRyaWVzKG5ld0VudHJpZXMsIHRoaXMuc2VsZWN0ZWRFbnRyeVVpZHMoKSwgdGhpcy5kZXRhaWxzRGlzcGxheWVkTGltaXQoKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnVwZGF0ZUVudHJpZXMobmV3RW50cmllcywgdGhpcy5zZWxlY3RlZEVudHJ5VWlkcygpLCB0aGlzLmRldGFpbHNEaXNwbGF5ZWRMaW1pdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRldGFpbHNEaXNwbGF5ZWRMaW1pdCA9IHRoaXMuZGV0YWlsc0Rpc3BsYXllZExpbWl0KCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5uYXZTZWxlY3RvclN0YXRlLnVwZGF0ZURldGFpbHNEaXNwbGF5ZWRMaW1pdChkZXRhaWxzRGlzcGxheWVkTGltaXQpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRW50cnlVaWRzID0gdGhpcy5zZWxlY3RlZEVudHJ5VWlkcygpO1xuICAgICAgICAgICAgY29uc3QgaXNJbml0ID0gISF0aGlzLm5hdlNlbGVjdG9yU3RhdGUuZW50cmllcygpLmxlbmd0aDtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiBpc0luaXQgJiYgdGhpcy5uYXZTZWxlY3RvclN0YXRlLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkRW50cnlVaWRzKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkVGV4dHMgPSB0aGlzLnRyYW5zbGF0ZWRUZXh0cygpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVUZXh0cyh0cmFuc2xhdGVkVGV4dHMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUV4cGFuZGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBvbk1pbmlmaWVkU2VhcmNoQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5hdi1zZWxlY3Rvcl9fY29udGVudCcpLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5vbkFycm93RG93bigpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwidHJlZWl0ZW1cIl1bdGFiaW5kZXg9XCIwXCJdJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmb2N1cyBmYWlscyBpdCBtZWFuIHdlIGRvIG5vdCBoYXZlIGFuIGVudHJ5IHdpdGggdGFiaW5kZXggMCwgc28gd2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmb2N1cyBhbnkgZW50cnkgYW55bW9yZS5cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgcmVzZXQgaW4gdGhpcyBjYXNlIGJ5IHJlYnVpbGRpbmcgdGhlIGVudHJpZXMgYW5kIHJlc2V0dGluZyB0aGUgZm9jdXMuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tOYXYgc2VsZWN0b3JdIEZhaWxlZCB0byBmb2N1cyB0aGUgbmV4dCBlbnRyeSwgcmVzZXR0aW5nLi4uJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVFbnRyaWVzKHRoaXMubmF2U2VsZWN0b3JFbnRyaWVzKCksIHRoaXMuc2VsZWN0ZWRFbnRyeVVpZHMoKSwgdGhpcy5kZXRhaWxzRGlzcGxheWVkTGltaXQoKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eS5yZXNldEZvY3VzKGVudHJpZXMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dVcChldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubmF2LXNlbGVjdG9yX19jb250ZW50JykuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLm9uQXJyb3dVcCgpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwidHJlZWl0ZW1cIl1bdGFiaW5kZXg9XCIwXCJdJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmb2N1cyBmYWlscyBpdCBtZWFuIHdlIGRvIG5vdCBoYXZlIGFuIGVudHJ5IHdpdGggdGFiaW5kZXggMCwgc28gd2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmb2N1cyBhbnkgZW50cnkgYW55bW9yZS5cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgcmVzZXQgaW4gdGhpcyBjYXNlIGJ5IHJlYnVpbGRpbmcgdGhlIGVudHJpZXMgYW5kIHJlc2V0dGluZyB0aGUgZm9jdXMuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tOYXYgc2VsZWN0b3JdIEZhaWxlZCB0byBmb2N1cyB0aGUgcHJldmlvdXMgZW50cnksIHJlc2V0dGluZy4uLicsIGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUudXBkYXRlRW50cmllcyh0aGlzLm5hdlNlbGVjdG9yRW50cmllcygpLCB0aGlzLnNlbGVjdGVkRW50cnlVaWRzKCksIHRoaXMuZGV0YWlsc0Rpc3BsYXllZExpbWl0KCkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkucmVzZXRGb2N1cyhlbnRyaWVzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVtYmVkZGVkKCkgJiYgIXRoaXMuZm9yY2VFeHBhbmRlZCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKCkgJiYgd2luZG93LmlubmVyV2lkdGggPCBBVVRPX01JTklGWV9XSURUSF9CUkVBS1BPSU5UKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlTWluaWZ5KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKSAmJiB3aW5kb3cuaW5uZXJXaWR0aCA+PSBBVVRPX01JTklGWV9XSURUSF9CUkVBS1BPSU5UKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSA9IHRoaXMuZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSgpO1xuICAgICAgICAgICAgICAgIGlmICghZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSB8fCAhbG9jYWxTdG9yYWdlLmdldEl0ZW0oZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlRXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRXhwYW5kZWRTdGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVtYmVkZGVkKCkgJiYgIXRoaXMuZm9yY2VFeHBhbmRlZCgpKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZXhwYW5kZWQgc3RhdGUgaXMgc3RvcmVkIGluIGxvY2FsIHN0b3JhZ2UsIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZXhwYW5kZWQgc3RhdGUgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLmV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkoKTtcbiAgICAgICAgICAgIGlmIChleHBhbmRlZFN0YXRlTG9jYWxTdG9yYWdlS2V5ICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlRXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlTWluaWZ5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uV2luZG93UmVzaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGlja0V4cGFuZEJ1dHRvbigpIHtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIGNvbnN0IGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLmV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkoKTtcbiAgICAgICAgaWYgKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXksIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5hdiBbQGV4cGFuZF09XCJleHBhbnNpb25TdGF0ZSgpXCIgW2NsYXNzLmVtYmVkZGVkXT1cImVtYmVkZGVkKClcIj5cbiAgICBAbGV0IGhlYWRlclByb2plY3Rpb25Ob3ROdWxsID0gaGVhZGVyUHJvamVjdGlvbigpO1xuICAgIEBsZXQgZm9vdGVyUHJvamVjdGlvbk5vdE51bGwgPSBmb290ZXJQcm9qZWN0aW9uKCk7XG5cbiAgICBAaWYgKG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWRBZnRlckRlbGF5KCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1zZWxlY3Rvcl9faGVhZGVyXCI+XG4gICAgICAgICAgICBAaWYgKCFlbWJlZGRlZCgpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoM1wiPnt7IHRyYW5zbGF0ZWRUZXh0cygpLnRpdGxlIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmQtYnV0dG9uIGV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrRXhwYW5kQnV0dG9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYXJyb3ctcmVkdWNlXCIgLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBAaWYgKGhlYWRlclByb2plY3Rpb25Ob3ROdWxsKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJQcm9qZWN0aW9uTm90TnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZDogbmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpXG4gICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8YXAtaW5wdXQtc2VhcmNoXG4gICAgICAgICAgICAgICAgW2lkXT1cImNvbXBvbmVudFVpZCArICdfc2VhcmNoJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtc2VsZWN0b3Itc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlZFRleHRzKCkuc2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm5hdlNlbGVjdG9yU3RhdGUuc2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm5hdlNlbGVjdG9yU3RhdGUuc2VhcmNoLnNldCgkZXZlbnQgPz8gJycpXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2NvbnRlbnRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwibmF2U2VsZWN0b3JTdGF0ZS5pc011bHRpcGxlTW9kZUVuYWJsZWQoKVwiXG4gICAgICAgICAgICByb2xlPVwidHJlZVwiPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgbmF2U2VsZWN0b3JTdGF0ZS5lbnRyaWVzKCk7IHRyYWNrIGVudHJ5LnVpZCkge1xuICAgICAgICAgICAgICAgIEBpZiAoIWVudHJ5LmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIiBbY2xhc3MuZm9sZGVyXT1cImVudHJ5LnR5cGUgPT09ICdHUk9VUCcgfHwgZW50cnkudHlwZSA9PT0gJ0NBVEVHT1JZJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChlbnRyeS50eXBlID09PSAnTEVBRicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWxlYWYgW2xlYWZdPVwiZW50cnlcIiAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09ICdHUk9VUCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWdyb3VwIFtncm91cF09XCJlbnRyeVwiIChhY3Rpb25DbGlja2VkKT1cImFjdGlvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZW50cnkudHlwZSA9PT0gJ0NBVEVHT1JZJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1uYXYtc2VsZWN0b3ItY2F0ZWdvcnkgW2NhdGVnb3J5XT1cIiRhbnkoZW50cnkpXCIgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobmF2U2VsZWN0b3JTdGF0ZS5ub1Jlc3VsdHMoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRcIj57eyB0cmFuc2xhdGVkVGV4dHMoKS5ub1Jlc3VsdHMgfX08L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChkaXNwbGF5Rm9vdGVyKCkgJiYgZm9vdGVyUHJvamVjdGlvbk5vdE51bGwpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2Zvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyUHJvamVjdGlvbk5vdE51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKVxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2hlYWRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrRXhwYW5kQnV0dG9uKClcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYXJyb3ctZXhwYW5kXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChoZWFkZXJQcm9qZWN0aW9uTm90TnVsbCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyUHJvamVjdGlvbk5vdE51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKVxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGFwLWljb24tYnV0dG9uIChvbkNsaWNrKT1cIm9uTWluaWZpZWRTZWFyY2hDbGlja2VkKClcIiB0eXBlPVwic3Ryb2tlZFwiIHJvbGU9XCJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sIHN5bWJvbElkPVwic2VhcmNoXCIgLz5cbiAgICAgICAgICAgIDwvYXAtaWNvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2NvbnRlbnRcIiByb2xlPVwidHJlZVwiIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cIm5hdlNlbGVjdG9yU3RhdGUuaXNNdWx0aXBsZU1vZGVFbmFibGVkKClcIj5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG5hdlNlbGVjdG9yU3RhdGUuZW50cmllcygpOyB0cmFjayBlbnRyeS51aWQpIHtcbiAgICAgICAgICAgICAgICBAaWYgKCFlbnRyeS5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCIgW2NsYXNzLmZvbGRlcl09XCJlbnRyeS50eXBlID09PSAnR1JPVVAnIHx8IGVudHJ5LnR5cGUgPT09ICdDQVRFR09SWSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW50cnkudHlwZSA9PT0gJ0xFQUYnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1sZWFmIFtsZWFmXT1cImVudHJ5XCIgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChlbnRyeS50eXBlID09PSAnR1JPVVAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1ncm91cCBbZ3JvdXBdPVwiZW50cnlcIiAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09ICdDQVRFR09SWScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWNhdGVnb3J5IFtjYXRlZ29yeV09XCJlbnRyeVwiIChhY3Rpb25DbGlja2VkKT1cImFjdGlvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoZGlzcGxheUZvb3RlcigpICYmIGZvb3RlclByb2plY3Rpb25Ob3ROdWxsKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LXNlbGVjdG9yX19mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclByb2plY3Rpb25Ob3ROdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkOiBuYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKClcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIH1cbjwvbmF2PlxuIl19
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9uYXYtc2VsZWN0b3Ivc3JjL25hdi1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvbmF2LXNlbGVjdG9yL3NyYy9uYXYtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQ0gsZUFBZSxFQUNmLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUNMLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdkcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFF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QUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzNGLENBQ0o7eUJBQ0osQ0FBQztxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25CdXR0b25Db21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2ljb24tYnV0dG9uJztcbmltcG9ydCB7IElucHV0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9pbnB1dC1zZWFyY2gnO1xuaW1wb3J0IHsgYXBBcnJvd0V4cGFuZCwgYXBBcnJvd1JlZHVjZSwgYXBTZWFyY2gsIFN5bWJvbENvbXBvbmVudCwgd2l0aFN5bWJvbHMgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgYW5pbWF0ZSwga2V5ZnJhbWVzLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIGNvbXB1dGVkLFxuICAgIGNvbnRlbnRDaGlsZCxcbiAgICBlZmZlY3QsXG4gICAgRWxlbWVudFJlZixcbiAgICBpbnB1dCxcbiAgICBtb2RlbCxcbiAgICBPbkluaXQsXG4gICAgb3V0cHV0LFxuICAgIHNpZ25hbCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICB1bnRyYWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXZTZWxlY3RvckVudHJ5LCBOYXZTZWxlY3RvckxlYWZBY3Rpb25DbGlja2VkRXZlbnQsIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzIH0gZnJvbSAnLi9uYXYtc2VsZWN0b3InO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JDYXRlZ29yeUNvbXBvbmVudCB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWNhdGVnb3J5L25hdi1zZWxlY3Rvci1jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JHcm91cENvbXBvbmVudCB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLWdyb3VwL25hdi1zZWxlY3Rvci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JMZWFmQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtc2VsZWN0b3ItbGVhZi9uYXYtc2VsZWN0b3ItbGVhZi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmF2U2VsZWN0b3JTdGF0ZSB9IGZyb20gJy4vbmF2LXNlbGVjdG9yLnN0YXRlJztcbmltcG9ydCB7IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eSB9IGZyb20gJy4vdXRpbHMvbmF2LXNlbGVjdG9yLmFjY2Vzc2liaWxpdHknO1xuXG5jb25zdCBBVVRPX01JTklGWV9XSURUSF9CUkVBS1BPSU5UID0gMTI4MDtcbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwLW5hdi1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdi1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbmF2LXNlbGVjdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5hdlNlbGVjdG9yTGVhZkNvbXBvbmVudCxcbiAgICAgICAgTmF2U2VsZWN0b3JHcm91cENvbXBvbmVudCxcbiAgICAgICAgTmF2U2VsZWN0b3JDYXRlZ29yeUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRTZWFyY2hDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgICAgIEljb25CdXR0b25Db21wb25lbnQsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtOYXZTZWxlY3RvclN0YXRlLCB3aXRoU3ltYm9scyhhcEFycm93RXhwYW5kLCBhcEFycm93UmVkdWNlLCBhcFNlYXJjaCldLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5taW5pZmllZF0nOiAnIW5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKScsXG4gICAgICAgICdbY2xhc3MuZW1iZWRkZWRdJzogJ2VtYmVkZGVkKCknLFxuICAgICAgICByb2xlOiAndHJlZScsXG4gICAgICAgICcoa2V5ZG93bi5hcnJvd0Rvd24pJzogJ29uQXJyb3dEb3duKCRldmVudCknLFxuICAgICAgICAnKGtleWRvd24uYXJyb3dVcCknOiAnb25BcnJvd1VwKCRldmVudCknLFxuICAgICAgICAnKHdpbmRvdzpyZXNpemUpJzogJ29uV2luZG93UmVzaXplKCknLFxuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdleHBhbmQnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IHdpZHRoOiAnMTAwJScgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ21pbmlmaWVkJywgc3R5bGUoeyB3aWR0aDogJzY0cHgnIH0pKSxcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkID0+IG1pbmlmaWVkJywgYW5pbWF0ZSgnMjUwbXMgY3ViaWMtYmV6aWVyKC40LCAwLCAuMywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKFxuICAgICAgICAgICAgICAgICdtaW5pZmllZCA9PiBleHBhbmRlZCcsXG4gICAgICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgICAgICAgJzI1MG1zIGN1YmljLWJlemllciguNCwgMCwgLjMsIDEpJyxcbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgYW5pbWF0aW9uIHRvIGRvIG5vdCBiZSB3aXRoIDEwMCUgaW5zdGFudGx5XG4gICAgICAgICAgICAgICAgICAgIGtleWZyYW1lcyhbc3R5bGUoeyB3aWR0aDogJzY0cHgnIH0pLCBzdHlsZSh7IHdpZHRoOiAnNTAlJyB9KSwgc3R5bGUoeyB3aWR0aDogJzEwMCUnIH0pXSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICBdKSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZTZWxlY3RvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgbmF2U2VsZWN0b3JFbnRyaWVzID0gaW5wdXQucmVxdWlyZWQ8TmF2U2VsZWN0b3JFbnRyeVtdPigpO1xuICAgIHRyYW5zbGF0ZWRUZXh0cyA9IGlucHV0LnJlcXVpcmVkPE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzPigpO1xuICAgIG11bHRpcGxlTW9kZUVuYWJsZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgICBkZXRhaWxzRGlzcGxheWVkTGltaXQgPSBpbnB1dDxudW1iZXI+KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTtcbiAgICBlbWJlZGRlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUsIHRoZSBuYXYgc2VsZWN0b3Igd2lsbCBiZSBleHBhbmRlZCBieSBkZWZhdWx0LiBFdmVuIGlmIHRoZSB3aWR0aCBvZiB0aGUgc2NyZWVuIGlzIHNtYWxsZXIgdGhhbiAxMjgwcHguXG4gICAgICovXG4gICAgZm9yY2VFeHBhbmRlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBleHBhbmRlZFN0YXRlTG9jYWxTdG9yYWdlS2V5ID0gaW5wdXQ8c3RyaW5nPigpO1xuXG4gICAgc2VsZWN0ZWRFbnRyeVVpZHMgPSBtb2RlbC5yZXF1aXJlZDxzdHJpbmdbXT4oKTtcblxuICAgIGFjdGlvbkNsaWNrZWQgPSBvdXRwdXQ8TmF2U2VsZWN0b3JMZWFmQWN0aW9uQ2xpY2tlZEV2ZW50PigpO1xuXG4gICAgaGVhZGVyUHJvamVjdGlvbiA9IGNvbnRlbnRDaGlsZDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oJ2hlYWRlcicpO1xuICAgIGZvb3RlclByb2plY3Rpb24gPSBjb250ZW50Q2hpbGQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCdmb290ZXInKTtcblxuICAgIGRpc3BsYXlGb290ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmZvb3RlclByb2plY3Rpb24oKSAhPT0gdW5kZWZpbmVkKTtcblxuICAgIGV4cGFuc2lvblN0YXRlID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpID8gJ2V4cGFuZGVkJyA6ICdtaW5pZmllZCcpKTtcblxuICAgIG9uRXhwYW5zaW9uU3RhdGVDaGFuZ2UgPSBvdXRwdXQ8eyBleHBhbmRlZDogYm9vbGVhbiB9PigpO1xuXG4gICAgY29tcG9uZW50VWlkID0gYG5hdi1zZWxlY3Rvci0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICByZWFkeSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIG5hdlNlbGVjdG9yU3RhdGU6IE5hdlNlbGVjdG9yU3RhdGUsXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgbmF2U2VsZWN0b3JTdGF0ZS5yZWdpc3Rlck9uU2VsZWN0ZWRVaWRzQ2hhbmdlKHNlbGVjdGVkVWlkcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0luaXQgPSAhIXRoaXMubmF2U2VsZWN0b3JTdGF0ZS5lbnRyaWVzKCkubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKGlzSW5pdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFbnRyeVVpZHMuc2V0KHNlbGVjdGVkVWlkcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5LnNldCh0cnVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkID0gdGhpcy5uYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKCk7XG4gICAgICAgICAgICB0aGlzLm9uRXhwYW5zaW9uU3RhdGVDaGFuZ2UuZW1pdCh7IGV4cGFuZGVkIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbXVsdGlwbGVNb2RlRW5hYmxlZCA9IHRoaXMubXVsdGlwbGVNb2RlRW5hYmxlZCgpO1xuICAgICAgICAgICAgY29uc3QgbmV3RW50cmllcyA9IHRoaXMubmF2U2VsZWN0b3JFbnRyaWVzKCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVNdWx0aU1vZGVFbmFibGVkKG11bHRpcGxlTW9kZUVuYWJsZWQpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5uYXZTZWxlY3RvclN0YXRlLmVudHJpZXMoKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmluaXRFbnRyaWVzKG5ld0VudHJpZXMsIHRoaXMuc2VsZWN0ZWRFbnRyeVVpZHMoKSwgdGhpcy5kZXRhaWxzRGlzcGxheWVkTGltaXQoKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnVwZGF0ZUVudHJpZXMobmV3RW50cmllcywgdGhpcy5zZWxlY3RlZEVudHJ5VWlkcygpLCB0aGlzLmRldGFpbHNEaXNwbGF5ZWRMaW1pdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRldGFpbHNEaXNwbGF5ZWRMaW1pdCA9IHRoaXMuZGV0YWlsc0Rpc3BsYXllZExpbWl0KCk7XG4gICAgICAgICAgICB1bnRyYWNrZWQoKCkgPT4gdGhpcy5uYXZTZWxlY3RvclN0YXRlLnVwZGF0ZURldGFpbHNEaXNwbGF5ZWRMaW1pdChkZXRhaWxzRGlzcGxheWVkTGltaXQpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRW50cnlVaWRzID0gdGhpcy5zZWxlY3RlZEVudHJ5VWlkcygpO1xuICAgICAgICAgICAgY29uc3QgaXNJbml0ID0gISF0aGlzLm5hdlNlbGVjdG9yU3RhdGUuZW50cmllcygpLmxlbmd0aDtcbiAgICAgICAgICAgIHVudHJhY2tlZCgoKSA9PiBpc0luaXQgJiYgdGhpcy5uYXZTZWxlY3RvclN0YXRlLm9uU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGVkRW50cnlVaWRzKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkVGV4dHMgPSB0aGlzLnRyYW5zbGF0ZWRUZXh0cygpO1xuICAgICAgICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVUZXh0cyh0cmFuc2xhdGVkVGV4dHMpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUV4cGFuZGVkU3RhdGUoKTtcbiAgICB9XG5cbiAgICBvbk1pbmlmaWVkU2VhcmNoQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0JykuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgb25BcnJvd0Rvd24oZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm5hdi1zZWxlY3Rvcl9fY29udGVudCcpLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5vbkFycm93RG93bigpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwidHJlZWl0ZW1cIl1bdGFiaW5kZXg9XCIwXCJdJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmb2N1cyBmYWlscyBpdCBtZWFuIHdlIGRvIG5vdCBoYXZlIGFuIGVudHJ5IHdpdGggdGFiaW5kZXggMCwgc28gd2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmb2N1cyBhbnkgZW50cnkgYW55bW9yZS5cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgcmVzZXQgaW4gdGhpcyBjYXNlIGJ5IHJlYnVpbGRpbmcgdGhlIGVudHJpZXMgYW5kIHJlc2V0dGluZyB0aGUgZm9jdXMuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tOYXYgc2VsZWN0b3JdIEZhaWxlZCB0byBmb2N1cyB0aGUgbmV4dCBlbnRyeSwgcmVzZXR0aW5nLi4uJywgZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS51cGRhdGVFbnRyaWVzKHRoaXMubmF2U2VsZWN0b3JFbnRyaWVzKCksIHRoaXMuc2VsZWN0ZWRFbnRyeVVpZHMoKSwgdGhpcy5kZXRhaWxzRGlzcGxheWVkTGltaXQoKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5lbnRyaWVzLnVwZGF0ZShlbnRyaWVzID0+IE5hdlNlbGVjdG9yQWNjZXNzaWJpbGl0eS5yZXNldEZvY3VzKGVudHJpZXMpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dVcChldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcubmF2LXNlbGVjdG9yX19jb250ZW50JykuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLm9uQXJyb3dVcCgpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tyb2xlPVwidHJlZWl0ZW1cIl1bdGFiaW5kZXg9XCIwXCJdJykuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmb2N1cyBmYWlscyBpdCBtZWFuIHdlIGRvIG5vdCBoYXZlIGFuIGVudHJ5IHdpdGggdGFiaW5kZXggMCwgc28gd2Ugd2lsbCBub3QgYmUgYWJsZSB0byBmb2N1cyBhbnkgZW50cnkgYW55bW9yZS5cbiAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgcmVzZXQgaW4gdGhpcyBjYXNlIGJ5IHJlYnVpbGRpbmcgdGhlIGVudHJpZXMgYW5kIHJlc2V0dGluZyB0aGUgZm9jdXMuXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tOYXYgc2VsZWN0b3JdIEZhaWxlZCB0byBmb2N1cyB0aGUgcHJldmlvdXMgZW50cnksIHJlc2V0dGluZy4uLicsIGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUudXBkYXRlRW50cmllcyh0aGlzLm5hdlNlbGVjdG9yRW50cmllcygpLCB0aGlzLnNlbGVjdGVkRW50cnlVaWRzKCksIHRoaXMuZGV0YWlsc0Rpc3BsYXllZExpbWl0KCkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdlNlbGVjdG9yU3RhdGUuZW50cmllcy51cGRhdGUoZW50cmllcyA9PiBOYXZTZWxlY3RvckFjY2Vzc2liaWxpdHkucmVzZXRGb2N1cyhlbnRyaWVzKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbldpbmRvd1Jlc2l6ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVtYmVkZGVkKCkgJiYgIXRoaXMuZm9yY2VFeHBhbmRlZCgpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5uYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKCkgJiYgd2luZG93LmlubmVyV2lkdGggPCBBVVRPX01JTklGWV9XSURUSF9CUkVBS1BPSU5UKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlTWluaWZ5KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLm5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKSAmJiB3aW5kb3cuaW5uZXJXaWR0aCA+PSBBVVRPX01JTklGWV9XSURUSF9CUkVBS1BPSU5UKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSA9IHRoaXMuZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSgpO1xuICAgICAgICAgICAgICAgIGlmICghZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSB8fCAhbG9jYWxTdG9yYWdlLmdldEl0ZW0oZXhwYW5kZWRTdGF0ZUxvY2FsU3RvcmFnZUtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlRXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplRXhwYW5kZWRTdGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVtYmVkZGVkKCkgJiYgIXRoaXMuZm9yY2VFeHBhbmRlZCgpKSB7XG4gICAgICAgICAgICAvLyBJZiB0aGUgZXhwYW5kZWQgc3RhdGUgaXMgc3RvcmVkIGluIGxvY2FsIHN0b3JhZ2UsIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZXhwYW5kZWQgc3RhdGUgYWNjb3JkaW5nbHlcbiAgICAgICAgICAgIGNvbnN0IGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLmV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkoKTtcbiAgICAgICAgICAgIGlmIChleHBhbmRlZFN0YXRlTG9jYWxTdG9yYWdlS2V5ICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlRXhwYW5kKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLmZvcmNlTWluaWZ5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uV2luZG93UmVzaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjbGlja0V4cGFuZEJ1dHRvbigpIHtcbiAgICAgICAgdGhpcy5uYXZTZWxlY3RvclN0YXRlLnRvZ2dsZUV4cGFuZGVkKCk7XG4gICAgICAgIGNvbnN0IGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkgPSB0aGlzLmV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkoKTtcbiAgICAgICAgaWYgKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXkpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGV4cGFuZGVkU3RhdGVMb2NhbFN0b3JhZ2VLZXksIHRoaXMubmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPG5hdiBbQGV4cGFuZF09XCJleHBhbnNpb25TdGF0ZSgpXCIgW2NsYXNzLmVtYmVkZGVkXT1cImVtYmVkZGVkKClcIj5cbiAgICBAbGV0IGhlYWRlclByb2plY3Rpb25Ob3ROdWxsID0gaGVhZGVyUHJvamVjdGlvbigpO1xuICAgIEBsZXQgZm9vdGVyUHJvamVjdGlvbk5vdE51bGwgPSBmb290ZXJQcm9qZWN0aW9uKCk7XG5cbiAgICBAaWYgKG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWRBZnRlckRlbGF5KCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1zZWxlY3Rvcl9faGVhZGVyXCI+XG4gICAgICAgICAgICBAaWYgKCFlbWJlZGRlZCgpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoM1wiPnt7IHRyYW5zbGF0ZWRUZXh0cygpLnRpdGxlIH19PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJleHBhbmQtYnV0dG9uIGV4cGFuZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrRXhwYW5kQnV0dG9uKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYXJyb3ctcmVkdWNlXCIgLz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBAaWYgKGhlYWRlclByb2plY3Rpb25Ob3ROdWxsKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJQcm9qZWN0aW9uTm90TnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZDogbmF2U2VsZWN0b3JTdGF0ZS5leHBhbmRlZCgpXG4gICAgICAgICAgICAgICAgICAgIH1cIiAvPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8YXAtaW5wdXQtc2VhcmNoXG4gICAgICAgICAgICAgICAgW2lkXT1cImNvbXBvbmVudFVpZCArICdfc2VhcmNoJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuYXYtc2VsZWN0b3Itc2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlZFRleHRzKCkuc2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm5hdlNlbGVjdG9yU3RhdGUuc2VhcmNoKClcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm5hdlNlbGVjdG9yU3RhdGUuc2VhcmNoLnNldCgkZXZlbnQgPz8gJycpXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2NvbnRlbnRcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1tdWx0aXNlbGVjdGFibGVdPVwibmF2U2VsZWN0b3JTdGF0ZS5pc011bHRpcGxlTW9kZUVuYWJsZWQoKVwiXG4gICAgICAgICAgICByb2xlPVwidHJlZVwiPlxuICAgICAgICAgICAgQGZvciAoZW50cnkgb2YgbmF2U2VsZWN0b3JTdGF0ZS5lbnRyaWVzKCk7IHRyYWNrIGVudHJ5LnVpZCkge1xuICAgICAgICAgICAgICAgIEBpZiAoIWVudHJ5LmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIiBbY2xhc3MuZm9sZGVyXT1cImVudHJ5LnR5cGUgPT09ICdHUk9VUCcgfHwgZW50cnkudHlwZSA9PT0gJ0NBVEVHT1JZJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChlbnRyeS50eXBlID09PSAnTEVBRicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWxlYWYgW2xlYWZdPVwiZW50cnlcIiAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09ICdHUk9VUCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWdyb3VwIFtncm91cF09XCJlbnRyeVwiIChhY3Rpb25DbGlja2VkKT1cImFjdGlvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSBpZiAoZW50cnkudHlwZSA9PT0gJ0NBVEVHT1JZJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1uYXYtc2VsZWN0b3ItY2F0ZWdvcnkgW2NhdGVnb3J5XT1cIiRhbnkoZW50cnkpXCIgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobmF2U2VsZWN0b3JTdGF0ZS5ub1Jlc3VsdHMoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1yZXN1bHRcIj57eyB0cmFuc2xhdGVkVGV4dHMoKS5ub1Jlc3VsdHMgfX08L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChkaXNwbGF5Rm9vdGVyKCkgJiYgZm9vdGVyUHJvamVjdGlvbk5vdE51bGwpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2Zvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyUHJvamVjdGlvbk5vdE51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKVxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2hlYWRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhwYW5kLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrRXhwYW5kQnV0dG9uKClcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYXJyb3ctZXhwYW5kXCIgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChoZWFkZXJQcm9qZWN0aW9uTm90TnVsbCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyUHJvamVjdGlvbk5vdE51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5hdlNlbGVjdG9yU3RhdGUuZXhwYW5kZWQoKVxuICAgICAgICAgICAgICAgICAgICB9XCIgLz5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGFwLWljb24tYnV0dG9uIChvbkNsaWNrKT1cIm9uTWluaWZpZWRTZWFyY2hDbGlja2VkKClcIiB0eXBlPVwic3Ryb2tlZFwiIHJvbGU9XCJzZWFyY2hcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sIHN5bWJvbElkPVwic2VhcmNoXCIgLz5cbiAgICAgICAgICAgIDwvYXAtaWNvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtc2VsZWN0b3JfX2NvbnRlbnRcIiByb2xlPVwidHJlZVwiIFthdHRyLmFyaWEtbXVsdGlzZWxlY3RhYmxlXT1cIm5hdlNlbGVjdG9yU3RhdGUuaXNNdWx0aXBsZU1vZGVFbmFibGVkKClcIj5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG5hdlNlbGVjdG9yU3RhdGUuZW50cmllcygpOyB0cmFjayBlbnRyeS51aWQpIHtcbiAgICAgICAgICAgICAgICBAaWYgKCFlbnRyeS5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCIgW2NsYXNzLmZvbGRlcl09XCJlbnRyeS50eXBlID09PSAnR1JPVVAnIHx8IGVudHJ5LnR5cGUgPT09ICdDQVRFR09SWSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZW50cnkudHlwZSA9PT0gJ0xFQUYnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1sZWFmIFtsZWFmXT1cImVudHJ5XCIgKGFjdGlvbkNsaWNrZWQpPVwiYWN0aW9uQ2xpY2tlZC5lbWl0KCRldmVudClcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIGlmIChlbnRyeS50eXBlID09PSAnR1JPVVAnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLW5hdi1zZWxlY3Rvci1ncm91cCBbZ3JvdXBdPVwiZW50cnlcIiAoYWN0aW9uQ2xpY2tlZCk9XCJhY3Rpb25DbGlja2VkLmVtaXQoJGV2ZW50KVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKGVudHJ5LnR5cGUgPT09ICdDQVRFR09SWScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbmF2LXNlbGVjdG9yLWNhdGVnb3J5IFtjYXRlZ29yeV09XCJlbnRyeVwiIChhY3Rpb25DbGlja2VkKT1cImFjdGlvbkNsaWNrZWQuZW1pdCgkZXZlbnQpXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoZGlzcGxheUZvb3RlcigpICYmIGZvb3RlclByb2plY3Rpb25Ob3ROdWxsKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LXNlbGVjdG9yX19mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclByb2plY3Rpb25Ob3ROdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkOiBuYXZTZWxlY3RvclN0YXRlLmV4cGFuZGVkKClcbiAgICAgICAgICAgICAgICAgICAgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIH1cbjwvbmF2PlxuIl19
|
|
@@ -6,4 +6,4 @@ export const isInternalNavSelectorEntryANode = (entry) => `children` in entry;
|
|
|
6
6
|
export const isInternalNavSelectorEntryACategory = (entry) => entry.type === 'CATEGORY';
|
|
7
7
|
export const isInternalNavSelectorEntryAGroup = (entry) => entry.type === 'GROUP';
|
|
8
8
|
export const isInternalNavSelectorEntryALeafDetails = (entry) => entry.type === 'LEAF_DETAILS';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlIQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQXVCLEVBQTRCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUVwSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQXVCLEVBQTZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUV2SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQXVCLEVBQWdDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQTRKaEksTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxLQUErQixFQUFvQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7QUFFNUksTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FDM0MsS0FBK0IsRUFDZ0MsRUFBRSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsQ0FBQyxLQUErQixFQUF3QyxFQUFFLENBQ3pILEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsS0FBK0IsRUFBcUMsRUFBRSxDQUNuSCxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUFDLEtBQStCLEVBQTJDLEVBQUUsQ0FDL0gsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmF0YXJOZXR3b3JrIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9hdmF0YXInO1xuXG5leHBvcnQgdHlwZSBOYXZTZWxlY3RvckxlYWZBY3Rpb25DbGlja2VkRXZlbnQgPSB7XG4gICAgLyoqIE5hbWUgb2YgdGhlIGFjdGlvbiB0aGF0IGhhcyBiZWVuIGNsaWNrZWQgKi9cbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgLyoqIExlYWYgb24gd2hpY2ggdGhlIGFjdGlvbiBoYXMgYmVlbiBjbGlja2VkICovXG4gICAgbGVhZlVpZDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBBcyB0cmFuc2xhdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBEUywgdGhpcyBhbGwgdHJhbnNsYXRpb25zIG5lZWRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzIHtcbiAgICAvKiogVGl0bGUgb2YgdGhlIG5hdiBzZWxlY3RvciAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqIE9ubHkgdGV4dCBpbiBtdWx0aSBzZWxlY3QgbW9kZSAqL1xuICAgIG9ubHk6IHN0cmluZztcbiAgICAvKiogVG9vbHRpcCBkaXNwbGF5ZWQgb24gZm9sZGVkIGdyb3VwIHdoZW4gb25lIG9mIGl0cyBjaGlsZHJlbiBoYXZlIHRva2VuIGlzIGludmFsaWQgKi9cbiAgICBncm91cFRva2VuSW52YWxpZDogc3RyaW5nO1xuICAgIC8qKiBUb29saXAgZGlzcGxheWluZyB0aGF0IHRva2VuIGlzIGludmFsaWQgKi9cbiAgICB0b2tlbkludmFsaWQ6IHN0cmluZztcbiAgICAvKiogVG9vbGlwIGRpc3BsYXlpbmcgdGhhdCBmZWF0dXJlIGlzIGxvY2tlZCAqL1xuICAgIGZlYXR1cmVMb2NrZWQ6IHN0cmluZztcbiAgICAvKiogcGxhY2Vob2xkZXIgZm9yIHRoZSBzZWFyY2ggaW5wdXQgKi9cbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIC8qKiBUZXh0IGRpc3BsYXllZCB3aGVuIHRoZSBzZWFyY2ggcmV0dXJuIG5vIHJlc3VsdHMgKi9cbiAgICBub1Jlc3VsdHM6IHN0cmluZztcbiAgICAvKiogVGV4dCBvZiB0aGUgYnV0dG9uIHRvIHNob3cgbW9yZSBkZXRhaWxzLCBpdOKAmXMgdXNlZCB3aGVuIHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgICovXG4gICAgdmlld01vcmU6IHN0cmluZztcbiAgICAvKiogVGV4dCBvZiB0aGUgYnV0dG9uIHRvIHNob3cgbGVzcyBkZXRhaWxzLCBpdOKAmXMgdXNlZCB3aGVuIHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgICovXG4gICAgdmlld0xlc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21tb24gaW50ZXJmYWNlIGZvciB0aGUgTmF2U2VsZWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTmF2U2VsZWN0b3JCYXNlTm9kZSA9IHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG5vZGUgKi9cbiAgICB1aWQ6IHN0cmluZztcbiAgICAvKiogRGlzcGxheWVkIG5hbWUgb2YgdGhlIG5vZGUgKi9cbiAgICBhbGlhczogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSZXByZXNlbnQgYW4gYWN0aW9uIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiBhIGxlYWZcbiAqL1xuZXhwb3J0IHR5cGUgTmF2U2VsZWN0b3JMZWFmQWN0aW9uID0ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWN0aW9uLCB1c2VkIGZvciBjbGljayB0cmFja2luZyAqL1xuICAgIGlkOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBBY3Rpb24gbGFiZWwgdG8gZGlzcGxheSAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgLyoqIFRlY2huaWNhbCBuYW1lIG9mIHRoZSBhY3Rpb24sIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGFjdGlvbiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogT3B0aW9uYWwgaWNvbiB0byBkaXNwbGF5IG9uIHRoZSBhY3Rpb24gKi9cbiAgICBpY29uOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBPcHRpb25hbCBTdGF0dXMgKi9cbiAgICBzdGF0dXM6ICdkaXNhYmxlZCcgfCAnbG9ja2VkJyB8IG51bGw7XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudCBmaW5hbCBlbnRyeSBvZiB0aGUgbmF2IHNlbGVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE5hdlNlbGVjdG9yTGVhZiA9IHtcbiAgICBwaWN0dXJlVXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBDb3VudGVyIHRvIGRpc3BsYXkgb24gdGhlIGVudHJ5LCB0byBpZ25vcmUgaWYgdGhlIGxlYWYgaGFzIGRldGFpbHMgKi9cbiAgICBjb3VudGVyOiBudW1iZXIgfCBudWxsO1xuICAgIC8qKiBXaGVuIHRydWUsIHRoZSBsZWFmIHdpbGwgYmUgaGlkZGVuICovXG4gICAgbWlzc2luZ1Blcm1pc3Npb246IGJvb2xlYW47XG4gICAgLyoqIEZvciBzb2NpYWwgcHJvZmlsZXMgb3IgYWQgYWNjb3VudHMgdGhlIGNvcnJlc3BvbmRpbmcgbmV0d29yayAqL1xuICAgIG5ldHdvcms6IEF2YXRhck5ldHdvcmsgfCBudWxsO1xuICAgIC8qKiBUcmFuc2xhdGVkIHRleHQgd2hlbiB0aGUgZW50cnkgaXMgZGlzYWJsZWQgKi9cbiAgICBkaXNhYmxlUmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZW50cnkgaGFzIGl0cyB0b2tlbiBpbnZhbGlkICovXG4gICAgdG9rZW5JbnZhbGlkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZW50cnkgaXMgbG9ja2VkICovXG4gICAgZmVhdHVyZUxvY2tlZDogYm9vbGVhbjtcbiAgICAvKiogU3ViIGVsZW1lbnRzIG9mIHRoZSBsZWFmLCB0aGV5IGFyZSBvcHRpb25hbCAqL1xuICAgIGRldGFpbHM6IE5hdlNlbGVjdG9yTGVhZkRldGFpbHNbXTtcbiAgICAvKiogT3B0aW9uYWwgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gdGhlIGxlYWYgKi9cbiAgICBhY3Rpb25zOiBOYXZTZWxlY3RvckxlYWZBY3Rpb25bXTtcbiAgICB0eXBlOiAnTEVBRic7XG59ICYgTmF2U2VsZWN0b3JCYXNlTm9kZTtcblxuLyoqXG4gKiBSZXByZXNlbnQgYSBncm91cCBvZiBlbnRyaWVzIHdoaWNoIGhhcyBiZWVuIGNyZWF0ZWQgYnkgdGhlIHVzZXIgKGV4OiBtZW51R3JvdXApXG4gKi9cbmV4cG9ydCB0eXBlIE5hdlNlbGVjdG9yR3JvdXAgPSB7XG4gICAgLyoqIEEgZ3JvdXAgY2FuIG9ubHkgaGF2ZSBsZWF2ZXMgYXMgY2hpbGRyZW4gKi9cbiAgICBjaGlsZHJlbjogTmF2U2VsZWN0b3JMZWFmW107XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZ3JvdXAgc2hvdWxkIGJlIGZvbGRlZCBvciBleHBhbmRlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIG5hdiBzZWxlY3RvciAqL1xuICAgIGZvbGRlZDogYm9vbGVhbjtcbiAgICB0eXBlOiAnR1JPVVAnO1xufSAmIE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGEgY2F0ZWdvcnkgb2YgZW50cmllcyB3aGljaCBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBwcm9kdWN0IHRvIHNlcGFyYXRlIGRpZmZlcmVudCBraW5kIG9mIGVudHJpZXMgKGV4OiBzb2NpYWwgcHJvZmlsZXMsIHJlcG9ydHMsIGFkIGFjY291bnRz4oCmKVxuICovXG5leHBvcnQgdHlwZSBOYXZTZWxlY3RvckNhdGVnb3J5ID0ge1xuICAgIC8qKiBBIENhdGVnb3J5IGNhbiBoYXZlIGxlYXZlcyBvciBncm91cHMgYXMgY2hpbGRyZW4sIHlvdSBjYW4gaGF2ZSBsZWF2ZXMgYWxvbmdzaWRlIHdpdGggZ3JvdXBzICovXG4gICAgY2hpbGRyZW46IChOYXZTZWxlY3RvckxlYWYgfCBOYXZTZWxlY3Rvckdyb3VwKVtdO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGdyb3VwIHNob3VsZCBiZSBmb2xkZWQgb3IgZXhwYW5kZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBuYXYgc2VsZWN0b3IgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgdHlwZTogJ0NBVEVHT1JZJztcbn0gJiBOYXZTZWxlY3RvckJhc2VOb2RlO1xuXG5leHBvcnQgdHlwZSBOYXZTZWxlY3RvckVudHJ5ID0gTmF2U2VsZWN0b3JMZWFmIHwgTmF2U2VsZWN0b3JHcm91cCB8IE5hdlNlbGVjdG9yQ2F0ZWdvcnk7XG5cbi8qKlxuICogUmVwcmVzZW50IGRldGFpbHMgb2YgYSBsZWFmLCB0aGV5IGFyZSB1c2VkIHRvIGFsbG93IHRvIGRpc3BsYXkgbW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGVhZlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdlNlbGVjdG9yTGVhZkRldGFpbHMge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbm9kZSAqL1xuICAgIHVpZDogc3RyaW5nO1xuICAgIC8qKiBDb3VudGVyIHRvIGRpc3BsYXkgb24gdGhlIGVudHJ5ICovXG4gICAgY291bnRlcjogbnVtYmVyIHwgbnVsbDtcbiAgICAvKiogRGlzcGxheWVkIG5hbWUgb2YgdGhlIG5vZGUgKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRyYW5zbGF0aW9uIG9mIHRoZSBlcnJvciBvbiB0aGUgbGVhZiAqL1xuICAgIGVycm9yUmVhc29uOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY29uc3QgaXNOYXZTZWxlY3RvckVudHJ5QUxlYWYgPSAoZW50cnk6IE5hdlNlbGVjdG9yRW50cnkpOiBlbnRyeSBpcyBOYXZTZWxlY3RvckxlYWYgPT4gZW50cnkudHlwZSA9PT0gJ0xFQUYnO1xuXG5leHBvcnQgY29uc3QgaXNOYXZTZWxlY3RvckVudHJ5QUdyb3VwID0gKGVudHJ5OiBOYXZTZWxlY3RvckVudHJ5KTogZW50cnkgaXMgTmF2U2VsZWN0b3JHcm91cCA9PiBlbnRyeS50eXBlID09PSAnR1JPVVAnO1xuXG5leHBvcnQgY29uc3QgaXNOYXZTZWxlY3RvckVudHJ5QUNhdGVnb3J5ID0gKGVudHJ5OiBOYXZTZWxlY3RvckVudHJ5KTogZW50cnkgaXMgTmF2U2VsZWN0b3JDYXRlZ29yeSA9PiBlbnRyeS50eXBlID09PSAnQ0FURUdPUlknO1xuXG4vKipcbiAqIFJlcHJlc2VudCB0aGUgYWNjZXNzaWJpbGl0eSBvbiBhIG5vZGVcbiAqL1xuZXhwb3J0IHR5cGUgTm9kZUFjY2Vzc2liaWxpdHkgPSB7XG4gICAgLyoqIE51bWJlciBvZiBzaWJsaW5nIGVsZW1lbnRzLCBpdHNlbGYgaW5jbHVkZWQuIEV4OiB0aGVyZSBhcmUgNyBzb2NpYWwgcHJvZmlsZXMgZGlzcGxheSBpbiB0aGUgZ3JvdXAgKi9cbiAgICBhcmlhU2V0c2l6ZTogbnVtYmVyO1xuICAgIC8qKiBJbmRleCBzdGFydGluZyBmcm9tIDEgb2YgdGhlIGVsZW1lbnQgYWxvbmdzaWRlIGl0cyBzaWJsaW5nICovXG4gICAgYXJpYVBvc2luc2V0OiBudW1iZXI7XG4gICAgLyoqIDAgdG8gYmUgZm9jdXNhYmxlIGJ5IFRhYiBrZXkgYW5kIC0xIHRvIGJlIGZvY3VzYWJsZSBieSBrZXlib2FyZCB3aXRoIEpTICovXG4gICAgdGFiSW5kZXg6IG51bWJlcjtcbiAgICAvKiogSW4gYSB0cmVlLCB0aGUgZGVlcCBsZXZlbCwgc3RhcnRpbmcgZnJvbSAxICovXG4gICAgYXJpYUxldmVsOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkFjdGlvbiA9IHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGFjdGlvbiwgdXNlZCBmb3IgY2xpY2sgdHJhY2tpbmcgKi9cbiAgICBpZDogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogQWN0aW9uIGxhYmVsIHRvIGRpc3BsYXkgKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIC8qKiBUZWNobmljYWwgbmFtZSBvZiB0aGUgYWN0aW9uLCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBhY3Rpb24gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqIE9wdGlvbmFsIGljb24gdG8gZGlzcGxheSBvbiB0aGUgYWN0aW9uICovXG4gICAgaWNvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogT3B0aW9uYWwgU3RhdHVzICovXG4gICAgc3RhdHVzOiAnZGlzYWJsZWQnIHwgJ2xvY2tlZCcgfCBudWxsO1xufTtcblxuLyoqXG4gKiBSZXByZXNlbnQgYSBub2RlXG4gKi9cbmV4cG9ydCB0eXBlIEludGVybmFsTmF2U2VsZWN0b3JCYXNlTm9kZSA9IHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGVudHJ5ICovXG4gICAgdWlkOiBzdHJpbmc7XG4gICAgLyoqIERpc3BsYXllZCBuYW1lIG9mIHRoZSBlbnRyeSAqL1xuICAgIGFsaWFzOiBzdHJpbmc7XG4gICAgYWNjZXNzaWJpbGl0eTogTm9kZUFjY2Vzc2liaWxpdHk7XG4gICAgLyoqIFdoZW4gaGlkZGVuLCB0aGUgZW50cnkgaXMgbm90IGRpc3BsYXllZCwgdXNlZCB3aGVuIHNlYXJjaGluZyBhbiBlbGVtZW50ICovXG4gICAgaGlkZGVuOiBib29sZWFuO1xuICAgIC8qKiBXaGVuIHRydWUsIHlvdSBjYW4gbmF2aWdhdGUgd2l0aCBhcnJvdyBrZXlzIG9uIHRoaXMgZW50cnkgKi9cbiAgICBmb2N1c2FibGU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudCBhIGdyb3VwIG9mIGVudHJpZXMgd2hpY2ggaGFzIGJlZW4gY3JlYXRlZCBieSB0aGUgdXNlciAoZXg6IG1lbnVHcm91cClcbiAqL1xuZXhwb3J0IHR5cGUgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwID0ge1xuICAgIC8qKiBBIGdyb3VwIGNhbiBvbmx5IGhhdmUgbGVhdmVzIGFzIGNoaWxkcmVuICovXG4gICAgY2hpbGRyZW46IEludGVybmFsTmF2U2VsZWN0b3JMZWFmW107XG4gICAgLyoqIFBpY3R1cmUgdXJsIG9mIHRoZSBncm91cCwgdXNlZCB3aGVuIHRoZSBuYXYgc2VsZWN0b3IgaXMgbWluaWZpZWQgKi9cbiAgICBjaGlsZHJlblBpY3R1cmVVcmxTYW1wbGU6IHsgdXJsOiBzdHJpbmcgfCBudWxsOyBpbml0aWFsOiBzdHJpbmcgfVtdO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hlbmV2ZXIgdGhlIGdyb3VwIGlzIGZvbGRlZCBvciBub3QgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyB0aGUgY291bnRlciB2YWx1ZSB0byBkaXNwbGF5IHdoZW4gdGhlIGdyb3VwIGlzIGZvbGRlZCAqL1xuICAgIGNvdW50ZXI6IG51bWJlcjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBjb3VudGVyIHNob3VsZCBiZSBkaXNwbGF5IHdoZW4gdGhlIGdyb3VwIGlzIGZvbGRlZCAqL1xuICAgIGRpc3BsYXlDb3VudGVyOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHRva2VuIGludmFsaWQgaWNvbiBzaG91bGQgYmUgZGlzcGxheSB3aGVuIHRoZSBncm91cCBpcyBmb2xkZWQgKi9cbiAgICBkaXNwbGF5VG9rZW5JbnZhbGlkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaW4gbXVsdGkgc2VsZWN0IG1vZGUgaWYgdGhlIGdyb3VwIGhhcyBzb21lIGNoaWxkcmVuIHNlbGVjdGVkICovXG4gICAgdW5kZXRlcm1pbmVkU2VsZWN0aW9uOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGdyb3VwIGlzIHNlbGVjdGVkICovXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZ3JvdXAgaXMgc2VsZWN0YWJsZSAqL1xuICAgIHNlbGVjdGFibGU6IGJvb2xlYW47XG4gICAgdHlwZTogJ0dST1VQJztcbn0gJiBJbnRlcm5hbE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGEgY2F0ZWdvcnkgb2YgZW50cmllcyB3aGljaCBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBwcm9kdWN0IHRvIHNlcGFyYXRlIGRpZmZlcmVudCBraW5kIG9mIGVudHJpZXMgKGV4OiBzb2NpYWwgcHJvZmlsZXMsIHJlcG9ydHMsIGFkIGFjY291bnRz4oCmKVxuICovXG5leHBvcnQgdHlwZSBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnkgPSB7XG4gICAgLyoqIEEgQ2F0ZWdvcnkgY2FuIGhhdmUgbGVhdmVzIG9yIGdyb3VwcyBhcyBjaGlsZHJlbiwgeW91IGNhbiBoYXZlIGxlYXZlcyBhbG9uZ3NpZGUgd2l0aCBncm91cHMgKi9cbiAgICBjaGlsZHJlbjogKEludGVybmFsTmF2U2VsZWN0b3JHcm91cCB8IEludGVybmFsTmF2U2VsZWN0b3JMZWFmKVtdO1xuICAgIC8qKiBJbmRpY2F0ZXMgd2hlbmV2ZXIgdGhlIGNhdGVnb3J5IGlzIGZvbGRlZCBvciBub3QgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgdHlwZTogJ0NBVEVHT1JZJztcbn0gJiBJbnRlcm5hbE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGZpbmFsIGVudHJ5IG9mIHRoZSBuYXYgc2VsZWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYgPSB7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgYWN0aW9ucyBkcm9wZG93biBjb3VsZCBiZSBkaXNwbGF5LiBTaG91bGQgbm90IGJlIGRpc3BsYXkgaWYgdGhlIGxlYWYgaGFzIGFuIGVycm9yIHN0YXR1cy4gKi9cbiAgICBhY3Rpb25zRGlzcGxheWFibGU6IGJvb2xlYW47XG4gICAgLyoqIEFjdGlvbnMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIHRoZSBsZWFmICovXG4gICAgYWN0aW9uczogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZBY3Rpb25bXTtcbiAgICAvKiogUGljdHVyZSB1cmwgdG8gZGlzcGxheSBvbiB0aGUgYXZhdGFyLCBvcHRpb25hbCAqL1xuICAgIHBpY3R1cmVVcmw6IHN0cmluZyB8IG51bGw7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgY291bnRlciBjb3VsZCBiZSBkaXNwbGF5LiBUaGUgbGVhZiBzaG91bGQgbm90IGJlIGRpc2FibGVkLCBmZWF0dXJlIGxvY2tlZCBvciBoYXMgdG9rZW4gaW52YWxpZCAqL1xuICAgIGNvdW50ZXJEaXNwbGF5YWJsZTogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSB0b2tlbiBpbnZhbGlkIGljb24gc2hvdWxkIGJlIGRpc3BsYXkuIFNvIHdoZW4gZGlzcGxheWFibGUgd2hlbiBubyBkZXRhaWxzIG9yIGZvbGRlZCAqL1xuICAgIGRpc3BsYXlDb3VudGVyOiBib29sZWFuO1xuICAgIC8qKiBDb3VudGVyIHZhbHVlIHRvIGRpc3BsYXkgKi9cbiAgICBjb3VudGVyOiBudW1iZXI7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgdG9rZW4gaW52YWxpZCBpY29uIHNob3VsZCBiZSBkaXNwbGF5ICovXG4gICAgZGlzcGxheVRva2VuSW52YWxpZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBmZWF0dXJlIGlzIGxvY2tlZCAqL1xuICAgIGRpc3BsYXlGZWF0dXJlTG9ja2VkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGxlYWYgaXMgZGlzYWJsZWQgKi9cbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICAvKiogVGhlIGRpc2FibGVkIHJlYXNvbiB0byBkaXNwbGF5IGluIHRvb2x0aXAgKi9cbiAgICBkaXNhYmxlUmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGxlYWYgaXMgc2VsZWN0ZWQgKi9cbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBsZWFmIGlzIHNlbGVjdGFibGUgKi9cbiAgICBzZWxlY3RhYmxlOiBib29sZWFuO1xuICAgIC8qKiBGb3Igc29jaWFsIHByb2ZpbGVzIG9yIGFkIGFjY291bnRzLCB0aGUgY29ycmVzcG9uZGluZyBuZXR3b3JrICovXG4gICAgbmV0d29yazogQXZhdGFyTmV0d29yayB8IG51bGw7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgbGVhZiBmb2xkYWJsZS4gU28gd2hlbiBpdCBoYXMgZGV0YWlscyBhbmQgbm8gZXJyb3Igc3RhdHVzICovXG4gICAgZm9sZGFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgbGVhZiBpcyBmb2xkZWQgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgbGVhZiBoYXMgb25lIG9mIGl0cyBkZXRhaWxzIHNlbGVjdGVkICovXG4gICAgZGV0YWlsU2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgbGVhZiBoYXMgZGV0YWlscyBhbmQgdGhleSBhcmUgZGlzcGxheWFibGUuIFNvIG5vIGVycm9yIHN0YXR1cyAqL1xuICAgIGRldGFpbHNEaXNwbGF5YWJsZTogYm9vbGVhbjtcbiAgICAvKiogRGV0YWlscyBvZiB0aGUgbGVhZiAqL1xuICAgIGRldGFpbHM6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlsc1tdO1xuICAgIHR5cGU6ICdMRUFGJztcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSB2aWV3IG1vcmUgc2VjdGlvbiBzaG91bGQgYmUgZGlzcGxheSBmb3IgZGV0YWlscyAqL1xuICAgIHZpZXdNb3JlRGlzcGxheWFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgdmlldyBtb3JlIG9yIHZpZXcgbGVzcyBidXR0b24gaXMgZGlzcGxheWVkICovXG4gICAgdmlld01vcmVEaXNwbGF5ZWQ6IGJvb2xlYW47XG4gICAgLyoqIE51bWJlciBvZiBkZXRhaWxzIHRvIGRpc3BsYXkgd2hlbiB0aGUgdmlldyBtb3JlIGlzIG5vdCBjbGlja2VkICovXG4gICAgdmlld01vcmVEZXRhaWxzRGlzcGxheWVkTGltaXQ6IG51bWJlcjtcbn0gJiBJbnRlcm5hbE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGRldGFpbHMgb2YgYSBsZWFmLCB0aGV5IGFyZSB1c2VkIHRvIGFsbG93IHRvIGRpc3BsYXkgbW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGVhZlxuICovXG5leHBvcnQgdHlwZSBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMgPSB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBub2RlICovXG4gICAgdWlkOiBzdHJpbmc7XG4gICAgLyoqIENvdW50ZXIgdG8gZGlzcGxheSBvbiB0aGUgZGV0YWlsICovXG4gICAgY291bnRlcjogbnVtYmVyO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGNvdW50ZXIgc2hvdWxkIGJlIGRpc3BsYXkuIFNvIG5vIGVycm9yIG9uIHRoZSBkZXRhaWwgKi9cbiAgICBkaXNwbGF5Q291bnRlcjogYm9vbGVhbjtcbiAgICAvKiogRGlzcGxheWVkIG5hbWUgb2YgdGhlIG5vZGUgKi9cbiAgICBhbGlhczogc3RyaW5nO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGRldGFpbCBpcyBzZWxlY3RlZCAqL1xuICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgd2Ugc2hvdWxkIGRpc3BsYXkgYW4gZXJyb3IgaWNvbiAqL1xuICAgIGRpc3BsYXlFcnJvcjogYm9vbGVhbjtcbiAgICAvKiogVHJhbnNsYXRlZCB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIHRvb2x0aXAgKi9cbiAgICBlcnJvclJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbiAgICB0eXBlOiAnTEVBRl9ERVRBSUxTJztcbn0gJiBJbnRlcm5hbE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbmV4cG9ydCB0eXBlIEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSA9XG4gICAgfCBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZlxuICAgIHwgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwXG4gICAgfCBJbnRlcm5hbE5hdlNlbGVjdG9yQ2F0ZWdvcnlcbiAgICB8IEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlscztcblxuZXhwb3J0IGNvbnN0IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWYgPSAoZW50cnk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSk6IGVudHJ5IGlzIEludGVybmFsTmF2U2VsZWN0b3JMZWFmID0+IGVudHJ5LnR5cGUgPT09ICdMRUFGJztcblxuZXhwb3J0IGNvbnN0IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QU5vZGUgPSAoXG4gICAgZW50cnk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeVxuKTogZW50cnkgaXMgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5IHwgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwID0+IGBjaGlsZHJlbmAgaW4gZW50cnk7XG5cbmV4cG9ydCBjb25zdCBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFDYXRlZ29yeSA9IChlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KTogZW50cnkgaXMgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5ID0+XG4gICAgZW50cnkudHlwZSA9PT0gJ0NBVEVHT1JZJztcblxuZXhwb3J0IGNvbnN0IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUdyb3VwID0gKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpOiBlbnRyeSBpcyBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAgPT5cbiAgICBlbnRyeS50eXBlID09PSAnR1JPVVAnO1xuXG5leHBvcnQgY29uc3QgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBTGVhZkRldGFpbHMgPSAoZW50cnk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSk6IGVudHJ5IGlzIEludGVybmFsTmF2U2VsZWN0b3JMZWFmRGV0YWlscyA9PlxuICAgIGVudHJ5LnR5cGUgPT09ICdMRUFGX0RFVEFJTFMnO1xuIl19
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LXNlbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL25hdi1zZWxlY3Rvci9zcmMvbmF2LXNlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJIQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQXVCLEVBQTRCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztBQUVwSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEtBQXVCLEVBQTZCLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUV2SCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLEtBQXVCLEVBQWdDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQztBQThKaEksTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxLQUErQixFQUFvQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUM7QUFFNUksTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsQ0FDM0MsS0FBK0IsRUFDZ0MsRUFBRSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7QUFFMUYsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsQ0FBQyxLQUErQixFQUF3QyxFQUFFLENBQ3pILEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLENBQUMsS0FBK0IsRUFBcUMsRUFBRSxDQUNuSCxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztBQUUzQixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUFDLEtBQStCLEVBQTJDLEVBQUUsQ0FDL0gsS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdmF0YXJOZXR3b3JrIH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9hdmF0YXInO1xuXG5leHBvcnQgdHlwZSBOYXZTZWxlY3RvckxlYWZBY3Rpb25DbGlja2VkRXZlbnQgPSB7XG4gICAgLyoqIE5hbWUgb2YgdGhlIGFjdGlvbiB0aGF0IGhhcyBiZWVuIGNsaWNrZWQgKi9cbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgLyoqIExlYWYgb24gd2hpY2ggdGhlIGFjdGlvbiBoYXMgYmVlbiBjbGlja2VkICovXG4gICAgbGVhZlVpZDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBBcyB0cmFuc2xhdGlvbiBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBEUywgdGhpcyBhbGwgdHJhbnNsYXRpb25zIG5lZWRlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdlNlbGVjdG9yVHJhbnNsYXRlZFRleHRzIHtcbiAgICAvKiogVGl0bGUgb2YgdGhlIG5hdiBzZWxlY3RvciAqL1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLyoqIE9ubHkgdGV4dCBpbiBtdWx0aSBzZWxlY3QgbW9kZSAqL1xuICAgIG9ubHk6IHN0cmluZztcbiAgICAvKiogVG9vbHRpcCBkaXNwbGF5ZWQgb24gZm9sZGVkIGdyb3VwIHdoZW4gb25lIG9mIGl0cyBjaGlsZHJlbiBoYXZlIHRva2VuIGlzIGludmFsaWQgKi9cbiAgICBncm91cFRva2VuSW52YWxpZDogc3RyaW5nO1xuICAgIC8qKiBUb29saXAgZGlzcGxheWluZyB0aGF0IHRva2VuIGlzIGludmFsaWQgKi9cbiAgICB0b2tlbkludmFsaWQ6IHN0cmluZztcbiAgICAvKiogVG9vbGlwIGRpc3BsYXlpbmcgdGhhdCBmZWF0dXJlIGlzIGxvY2tlZCAqL1xuICAgIGZlYXR1cmVMb2NrZWQ6IHN0cmluZztcbiAgICAvKiogcGxhY2Vob2xkZXIgZm9yIHRoZSBzZWFyY2ggaW5wdXQgKi9cbiAgICBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIC8qKiBUZXh0IGRpc3BsYXllZCB3aGVuIHRoZSBzZWFyY2ggcmV0dXJuIG5vIHJlc3VsdHMgKi9cbiAgICBub1Jlc3VsdHM6IHN0cmluZztcbiAgICAvKiogVGV4dCBvZiB0aGUgYnV0dG9uIHRvIHNob3cgbW9yZSBkZXRhaWxzLCBpdOKAmXMgdXNlZCB3aGVuIHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgICovXG4gICAgdmlld01vcmU6IHN0cmluZztcbiAgICAvKiogVGV4dCBvZiB0aGUgYnV0dG9uIHRvIHNob3cgbGVzcyBkZXRhaWxzLCBpdOKAmXMgdXNlZCB3aGVuIHdlIGxpbWl0IHRoZSBudW1iZXIgb2YgZGV0YWlscyBkaXNwbGF5ZWQgICovXG4gICAgdmlld0xlc3M6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21tb24gaW50ZXJmYWNlIGZvciB0aGUgTmF2U2VsZWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTmF2U2VsZWN0b3JCYXNlTm9kZSA9IHtcbiAgICAvKiogVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG5vZGUgKi9cbiAgICB1aWQ6IHN0cmluZztcbiAgICAvKiogRGlzcGxheWVkIG5hbWUgb2YgdGhlIG5vZGUgKi9cbiAgICBhbGlhczogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSZXByZXNlbnQgYW4gYWN0aW9uIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiBhIGxlYWZcbiAqL1xuZXhwb3J0IHR5cGUgTmF2U2VsZWN0b3JMZWFmQWN0aW9uID0ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWN0aW9uLCB1c2VkIGZvciBjbGljayB0cmFja2luZyAqL1xuICAgIGlkOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBBY3Rpb24gbGFiZWwgdG8gZGlzcGxheSAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgLyoqIFRlY2huaWNhbCBuYW1lIG9mIHRoZSBhY3Rpb24sIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGFjdGlvbiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogT3B0aW9uYWwgaWNvbiB0byBkaXNwbGF5IG9uIHRoZSBhY3Rpb24gKi9cbiAgICBpY29uOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBPcHRpb25hbCBTdGF0dXMgKi9cbiAgICBzdGF0dXM6ICdkaXNhYmxlZCcgfCAnbG9ja2VkJyB8IG51bGw7XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudCBmaW5hbCBlbnRyeSBvZiB0aGUgbmF2IHNlbGVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE5hdlNlbGVjdG9yTGVhZiA9IHtcbiAgICBwaWN0dXJlVXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBDb3VudGVyIHRvIGRpc3BsYXkgb24gdGhlIGVudHJ5LCB0byBpZ25vcmUgaWYgdGhlIGxlYWYgaGFzIGRldGFpbHMgKi9cbiAgICBjb3VudGVyOiBudW1iZXIgfCBudWxsO1xuICAgIC8qKiBXaGVuIHRydWUsIHRoZSBsZWFmIHdpbGwgYmUgaGlkZGVuICovXG4gICAgbWlzc2luZ1Blcm1pc3Npb246IGJvb2xlYW47XG4gICAgLyoqIEZvciBzb2NpYWwgcHJvZmlsZXMgb3IgYWQgYWNjb3VudHMgdGhlIGNvcnJlc3BvbmRpbmcgbmV0d29yayAqL1xuICAgIG5ldHdvcms6IEF2YXRhck5ldHdvcmsgfCBudWxsO1xuICAgIC8qKiBUcmFuc2xhdGVkIHRleHQgd2hlbiB0aGUgZW50cnkgaXMgZGlzYWJsZWQgKi9cbiAgICBkaXNhYmxlUmVhc29uOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZW50cnkgaGFzIGl0cyB0b2tlbiBpbnZhbGlkICovXG4gICAgdG9rZW5JbnZhbGlkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgZW50cnkgaXMgbG9ja2VkICovXG4gICAgZmVhdHVyZUxvY2tlZDogYm9vbGVhbjtcbiAgICAvKiogU3ViIGVsZW1lbnRzIG9mIHRoZSBsZWFmLCB0aGV5IGFyZSBvcHRpb25hbCAqL1xuICAgIGRldGFpbHM6IE5hdlNlbGVjdG9yTGVhZkRldGFpbHNbXTtcbiAgICAvKiogT3B0aW9uYWwgYWN0aW9ucyB0aGF0IGNhbiBiZSBwZXJmb3JtZWQgb24gdGhlIGxlYWYgKi9cbiAgICBhY3Rpb25zOiBOYXZTZWxlY3RvckxlYWZBY3Rpb25bXTtcbiAgICB0eXBlOiAnTEVBRic7XG59ICYgTmF2U2VsZWN0b3JCYXNlTm9kZTtcblxuLyoqXG4gKiBSZXByZXNlbnQgYSBncm91cCBvZiBlbnRyaWVzIHdoaWNoIGhhcyBiZWVuIGNyZWF0ZWQgYnkgdGhlIHVzZXIgKGV4OiBtZW51R3JvdXApXG4gKi9cbmV4cG9ydCB0eXBlIE5hdlNlbGVjdG9yR3JvdXAgPSB7XG4gICAgLyoqIEEgZ3JvdXAgY2FuIG9ubHkgaGF2ZSBsZWF2ZXMgYXMgY2hpbGRyZW4gKi9cbiAgICBjaGlsZHJlbjogTmF2U2VsZWN0b3JMZWFmW107XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZ3JvdXAgc2hvdWxkIGJlIGZvbGRlZCBvciBleHBhbmRlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIG5hdiBzZWxlY3RvciAqL1xuICAgIGZvbGRlZDogYm9vbGVhbjtcbiAgICB0eXBlOiAnR1JPVVAnO1xufSAmIE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbi8qKlxuICogUmVwcmVzZW50IGEgY2F0ZWdvcnkgb2YgZW50cmllcyB3aGljaCBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSBwcm9kdWN0IHRvIHNlcGFyYXRlIGRpZmZlcmVudCBraW5kIG9mIGVudHJpZXMgKGV4OiBzb2NpYWwgcHJvZmlsZXMsIHJlcG9ydHMsIGFkIGFjY291bnRz4oCmKVxuICovXG5leHBvcnQgdHlwZSBOYXZTZWxlY3RvckNhdGVnb3J5ID0ge1xuICAgIC8qKiBBIENhdGVnb3J5IGNhbiBoYXZlIGxlYXZlcyBvciBncm91cHMgYXMgY2hpbGRyZW4sIHlvdSBjYW4gaGF2ZSBsZWF2ZXMgYWxvbmdzaWRlIHdpdGggZ3JvdXBzICovXG4gICAgY2hpbGRyZW46IChOYXZTZWxlY3RvckxlYWYgfCBOYXZTZWxlY3Rvckdyb3VwKVtdO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGdyb3VwIHNob3VsZCBiZSBmb2xkZWQgb3IgZXhwYW5kZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBuYXYgc2VsZWN0b3IgKi9cbiAgICBmb2xkZWQ6IGJvb2xlYW47XG4gICAgLyoqIFRpdGxlIG9mIHRoZSBlbXB0eSBzdGF0ZSAqL1xuICAgIGVtcHR5U3RhdGVUaXRsZT86IHN0cmluZztcbiAgICB0eXBlOiAnQ0FURUdPUlknO1xufSAmIE5hdlNlbGVjdG9yQmFzZU5vZGU7XG5cbmV4cG9ydCB0eXBlIE5hdlNlbGVjdG9yRW50cnkgPSBOYXZTZWxlY3RvckxlYWYgfCBOYXZTZWxlY3Rvckdyb3VwIHwgTmF2U2VsZWN0b3JDYXRlZ29yeTtcblxuLyoqXG4gKiBSZXByZXNlbnQgZGV0YWlscyBvZiBhIGxlYWYsIHRoZXkgYXJlIHVzZWQgdG8gYWxsb3cgdG8gZGlzcGxheSBtb3JlIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsZWFmXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF2U2VsZWN0b3JMZWFmRGV0YWlscyB7XG4gICAgLyoqIFVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBub2RlICovXG4gICAgdWlkOiBzdHJpbmc7XG4gICAgLyoqIENvdW50ZXIgdG8gZGlzcGxheSBvbiB0aGUgZW50cnkgKi9cbiAgICBjb3VudGVyOiBudW1iZXIgfCBudWxsO1xuICAgIC8qKiBEaXNwbGF5ZWQgbmFtZSBvZiB0aGUgbm9kZSAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVHJhbnNsYXRpb24gb2YgdGhlIGVycm9yIG9uIHRoZSBsZWFmICovXG4gICAgZXJyb3JSZWFzb246IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCBpc05hdlNlbGVjdG9yRW50cnlBTGVhZiA9IChlbnRyeTogTmF2U2VsZWN0b3JFbnRyeSk6IGVudHJ5IGlzIE5hdlNlbGVjdG9yTGVhZiA9PiBlbnRyeS50eXBlID09PSAnTEVBRic7XG5cbmV4cG9ydCBjb25zdCBpc05hdlNlbGVjdG9yRW50cnlBR3JvdXAgPSAoZW50cnk6IE5hdlNlbGVjdG9yRW50cnkpOiBlbnRyeSBpcyBOYXZTZWxlY3Rvckdyb3VwID0+IGVudHJ5LnR5cGUgPT09ICdHUk9VUCc7XG5cbmV4cG9ydCBjb25zdCBpc05hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkgPSAoZW50cnk6IE5hdlNlbGVjdG9yRW50cnkpOiBlbnRyeSBpcyBOYXZTZWxlY3RvckNhdGVnb3J5ID0+IGVudHJ5LnR5cGUgPT09ICdDQVRFR09SWSc7XG5cbi8qKlxuICogUmVwcmVzZW50IHRoZSBhY2Nlc3NpYmlsaXR5IG9uIGEgbm9kZVxuICovXG5leHBvcnQgdHlwZSBOb2RlQWNjZXNzaWJpbGl0eSA9IHtcbiAgICAvKiogTnVtYmVyIG9mIHNpYmxpbmcgZWxlbWVudHMsIGl0c2VsZiBpbmNsdWRlZC4gRXg6IHRoZXJlIGFyZSA3IHNvY2lhbCBwcm9maWxlcyBkaXNwbGF5IGluIHRoZSBncm91cCAqL1xuICAgIGFyaWFTZXRzaXplOiBudW1iZXI7XG4gICAgLyoqIEluZGV4IHN0YXJ0aW5nIGZyb20gMSBvZiB0aGUgZWxlbWVudCBhbG9uZ3NpZGUgaXRzIHNpYmxpbmcgKi9cbiAgICBhcmlhUG9zaW5zZXQ6IG51bWJlcjtcbiAgICAvKiogMCB0byBiZSBmb2N1c2FibGUgYnkgVGFiIGtleSBhbmQgLTEgdG8gYmUgZm9jdXNhYmxlIGJ5IGtleWJvYXJkIHdpdGggSlMgKi9cbiAgICB0YWJJbmRleDogbnVtYmVyO1xuICAgIC8qKiBJbiBhIHRyZWUsIHRoZSBkZWVwIGxldmVsLCBzdGFydGluZyBmcm9tIDEgKi9cbiAgICBhcmlhTGV2ZWw6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIEludGVybmFsTmF2U2VsZWN0b3JMZWFmQWN0aW9uID0ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgYWN0aW9uLCB1c2VkIGZvciBjbGljayB0cmFja2luZyAqL1xuICAgIGlkOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBBY3Rpb24gbGFiZWwgdG8gZGlzcGxheSAqL1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgLyoqIFRlY2huaWNhbCBuYW1lIG9mIHRoZSBhY3Rpb24sIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGFjdGlvbiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogT3B0aW9uYWwgaWNvbiB0byBkaXNwbGF5IG9uIHRoZSBhY3Rpb24gKi9cbiAgICBpY29uOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBPcHRpb25hbCBTdGF0dXMgKi9cbiAgICBzdGF0dXM6ICdkaXNhYmxlZCcgfCAnbG9ja2VkJyB8IG51bGw7XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudCBhIG5vZGVcbiAqL1xuZXhwb3J0IHR5cGUgSW50ZXJuYWxOYXZTZWxlY3RvckJhc2VOb2RlID0ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZW50cnkgKi9cbiAgICB1aWQ6IHN0cmluZztcbiAgICAvKiogRGlzcGxheWVkIG5hbWUgb2YgdGhlIGVudHJ5ICovXG4gICAgYWxpYXM6IHN0cmluZztcbiAgICBhY2Nlc3NpYmlsaXR5OiBOb2RlQWNjZXNzaWJpbGl0eTtcbiAgICAvKiogV2hlbiBoaWRkZW4sIHRoZSBlbnRyeSBpcyBub3QgZGlzcGxheWVkLCB1c2VkIHdoZW4gc2VhcmNoaW5nIGFuIGVsZW1lbnQgKi9cbiAgICBoaWRkZW46IGJvb2xlYW47XG4gICAgLyoqIFdoZW4gdHJ1ZSwgeW91IGNhbiBuYXZpZ2F0ZSB3aXRoIGFycm93IGtleXMgb24gdGhpcyBlbnRyeSAqL1xuICAgIGZvY3VzYWJsZTogYm9vbGVhbjtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50IGEgZ3JvdXAgb2YgZW50cmllcyB3aGljaCBoYXMgYmVlbiBjcmVhdGVkIGJ5IHRoZSB1c2VyIChleDogbWVudUdyb3VwKVxuICovXG5leHBvcnQgdHlwZSBJbnRlcm5hbE5hdlNlbGVjdG9yR3JvdXAgPSB7XG4gICAgLyoqIEEgZ3JvdXAgY2FuIG9ubHkgaGF2ZSBsZWF2ZXMgYXMgY2hpbGRyZW4gKi9cbiAgICBjaGlsZHJlbjogSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZbXTtcbiAgICAvKiogUGljdHVyZSB1cmwgb2YgdGhlIGdyb3VwLCB1c2VkIHdoZW4gdGhlIG5hdiBzZWxlY3RvciBpcyBtaW5pZmllZCAqL1xuICAgIGNoaWxkcmVuUGljdHVyZVVybFNhbXBsZTogeyB1cmw6IHN0cmluZyB8IG51bGw7IGluaXRpYWw6IHN0cmluZyB9W107XG4gICAgLyoqIEluZGljYXRlcyB3aGVuZXZlciB0aGUgZ3JvdXAgaXMgZm9sZGVkIG9yIG5vdCAqL1xuICAgIGZvbGRlZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIHRoZSBjb3VudGVyIHZhbHVlIHRvIGRpc3BsYXkgd2hlbiB0aGUgZ3JvdXAgaXMgZm9sZGVkICovXG4gICAgY291bnRlcjogbnVtYmVyO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGNvdW50ZXIgc2hvdWxkIGJlIGRpc3BsYXkgd2hlbiB0aGUgZ3JvdXAgaXMgZm9sZGVkICovXG4gICAgZGlzcGxheUNvdW50ZXI6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgdG9rZW4gaW52YWxpZCBpY29uIHNob3VsZCBiZSBkaXNwbGF5IHdoZW4gdGhlIGdyb3VwIGlzIGZvbGRlZCAqL1xuICAgIGRpc3BsYXlUb2tlbkludmFsaWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpbiBtdWx0aSBzZWxlY3QgbW9kZSBpZiB0aGUgZ3JvdXAgaGFzIHNvbWUgY2hpbGRyZW4gc2VsZWN0ZWQgKi9cbiAgICB1bmRldGVybWluZWRTZWxlY3Rpb246IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZ3JvdXAgaXMgc2VsZWN0ZWQgKi9cbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBncm91cCBpcyBzZWxlY3RhYmxlICovXG4gICAgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgICB0eXBlOiAnR1JPVVAnO1xufSAmIEludGVybmFsTmF2U2VsZWN0b3JCYXNlTm9kZTtcblxuLyoqXG4gKiBSZXByZXNlbnQgYSBjYXRlZ29yeSBvZiBlbnRyaWVzIHdoaWNoIGhhcyBiZWVuIGNyZWF0ZWQgYnkgdGhlIHByb2R1Y3QgdG8gc2VwYXJhdGUgZGlmZmVyZW50IGtpbmQgb2YgZW50cmllcyAoZXg6IHNvY2lhbCBwcm9maWxlcywgcmVwb3J0cywgYWQgYWNjb3VudHPigKYpXG4gKi9cbmV4cG9ydCB0eXBlIEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSA9IHtcbiAgICAvKiogQSBDYXRlZ29yeSBjYW4gaGF2ZSBsZWF2ZXMgb3IgZ3JvdXBzIGFzIGNoaWxkcmVuLCB5b3UgY2FuIGhhdmUgbGVhdmVzIGFsb25nc2lkZSB3aXRoIGdyb3VwcyAqL1xuICAgIGNoaWxkcmVuOiAoSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwIHwgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWYpW107XG4gICAgLyoqIEluZGljYXRlcyB3aGVuZXZlciB0aGUgY2F0ZWdvcnkgaXMgZm9sZGVkIG9yIG5vdCAqL1xuICAgIGZvbGRlZDogYm9vbGVhbjtcbiAgICAvKiogVGl0bGUgb2YgdGhlIGVtcHR5IHN0YXRlICovXG4gICAgZW1wdHlTdGF0ZVRpdGxlPzogc3RyaW5nO1xuICAgIHR5cGU6ICdDQVRFR09SWSc7XG59ICYgSW50ZXJuYWxOYXZTZWxlY3RvckJhc2VOb2RlO1xuXG4vKipcbiAqIFJlcHJlc2VudCBmaW5hbCBlbnRyeSBvZiB0aGUgbmF2IHNlbGVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIEludGVybmFsTmF2U2VsZWN0b3JMZWFmID0ge1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGFjdGlvbnMgZHJvcGRvd24gY291bGQgYmUgZGlzcGxheS4gU2hvdWxkIG5vdCBiZSBkaXNwbGF5IGlmIHRoZSBsZWFmIGhhcyBhbiBlcnJvciBzdGF0dXMuICovXG4gICAgYWN0aW9uc0Rpc3BsYXlhYmxlOiBib29sZWFuO1xuICAgIC8qKiBBY3Rpb25zIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBvbiB0aGUgbGVhZiAqL1xuICAgIGFjdGlvbnM6IEludGVybmFsTmF2U2VsZWN0b3JMZWFmQWN0aW9uW107XG4gICAgLyoqIFBpY3R1cmUgdXJsIHRvIGRpc3BsYXkgb24gdGhlIGF2YXRhciwgb3B0aW9uYWwgKi9cbiAgICBwaWN0dXJlVXJsOiBzdHJpbmcgfCBudWxsO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGNvdW50ZXIgY291bGQgYmUgZGlzcGxheS4gVGhlIGxlYWYgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCwgZmVhdHVyZSBsb2NrZWQgb3IgaGFzIHRva2VuIGludmFsaWQgKi9cbiAgICBjb3VudGVyRGlzcGxheWFibGU6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgdG9rZW4gaW52YWxpZCBpY29uIHNob3VsZCBiZSBkaXNwbGF5LiBTbyB3aGVuIGRpc3BsYXlhYmxlIHdoZW4gbm8gZGV0YWlscyBvciBmb2xkZWQgKi9cbiAgICBkaXNwbGF5Q291bnRlcjogYm9vbGVhbjtcbiAgICAvKiogQ291bnRlciB2YWx1ZSB0byBkaXNwbGF5ICovXG4gICAgY291bnRlcjogbnVtYmVyO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHRva2VuIGludmFsaWQgaWNvbiBzaG91bGQgYmUgZGlzcGxheSAqL1xuICAgIGRpc3BsYXlUb2tlbkludmFsaWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgZmVhdHVyZSBpcyBsb2NrZWQgKi9cbiAgICBkaXNwbGF5RmVhdHVyZUxvY2tlZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBsZWFmIGlzIGRpc2FibGVkICovXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgLyoqIFRoZSBkaXNhYmxlZCByZWFzb24gdG8gZGlzcGxheSBpbiB0b29sdGlwICovXG4gICAgZGlzYWJsZVJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBsZWFmIGlzIHNlbGVjdGVkICovXG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgbGVhZiBpcyBzZWxlY3RhYmxlICovXG4gICAgc2VsZWN0YWJsZTogYm9vbGVhbjtcbiAgICAvKiogRm9yIHNvY2lhbCBwcm9maWxlcyBvciBhZCBhY2NvdW50cywgdGhlIGNvcnJlc3BvbmRpbmcgbmV0d29yayAqL1xuICAgIG5ldHdvcms6IEF2YXRhck5ldHdvcmsgfCBudWxsO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGxlYWYgZm9sZGFibGUuIFNvIHdoZW4gaXQgaGFzIGRldGFpbHMgYW5kIG5vIGVycm9yIHN0YXR1cyAqL1xuICAgIGZvbGRhYmxlOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGxlYWYgaXMgZm9sZGVkICovXG4gICAgZm9sZGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGxlYWYgaGFzIG9uZSBvZiBpdHMgZGV0YWlscyBzZWxlY3RlZCAqL1xuICAgIGRldGFpbFNlbGVjdGVkOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIGxlYWYgaGFzIGRldGFpbHMgYW5kIHRoZXkgYXJlIGRpc3BsYXlhYmxlLiBTbyBubyBlcnJvciBzdGF0dXMgKi9cbiAgICBkZXRhaWxzRGlzcGxheWFibGU6IGJvb2xlYW47XG4gICAgLyoqIERldGFpbHMgb2YgdGhlIGxlYWYgKi9cbiAgICBkZXRhaWxzOiBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHNbXTtcbiAgICB0eXBlOiAnTEVBRic7XG4gICAgLyoqIEluZGljYXRlcyBpZiB0aGUgdmlldyBtb3JlIHNlY3Rpb24gc2hvdWxkIGJlIGRpc3BsYXkgZm9yIGRldGFpbHMgKi9cbiAgICB2aWV3TW9yZURpc3BsYXlhYmxlOiBib29sZWFuO1xuICAgIC8qKiBJbmRpY2F0ZXMgaWYgdGhlIHZpZXcgbW9yZSBvciB2aWV3IGxlc3MgYnV0dG9uIGlzIGRpc3BsYXllZCAqL1xuICAgIHZpZXdNb3JlRGlzcGxheWVkOiBib29sZWFuO1xuICAgIC8qKiBOdW1iZXIgb2YgZGV0YWlscyB0byBkaXNwbGF5IHdoZW4gdGhlIHZpZXcgbW9yZSBpcyBub3QgY2xpY2tlZCAqL1xuICAgIHZpZXdNb3JlRGV0YWlsc0Rpc3BsYXllZExpbWl0OiBudW1iZXI7XG59ICYgSW50ZXJuYWxOYXZTZWxlY3RvckJhc2VOb2RlO1xuXG4vKipcbiAqIFJlcHJlc2VudCBkZXRhaWxzIG9mIGEgbGVhZiwgdGhleSBhcmUgdXNlZCB0byBhbGxvdyB0byBkaXNwbGF5IG1vcmUgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxlYWZcbiAqL1xuZXhwb3J0IHR5cGUgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZEZXRhaWxzID0ge1xuICAgIC8qKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbm9kZSAqL1xuICAgIHVpZDogc3RyaW5nO1xuICAgIC8qKiBDb3VudGVyIHRvIGRpc3BsYXkgb24gdGhlIGRldGFpbCAqL1xuICAgIGNvdW50ZXI6IG51bWJlcjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBjb3VudGVyIHNob3VsZCBiZSBkaXNwbGF5LiBTbyBubyBlcnJvciBvbiB0aGUgZGV0YWlsICovXG4gICAgZGlzcGxheUNvdW50ZXI6IGJvb2xlYW47XG4gICAgLyoqIERpc3BsYXllZCBuYW1lIG9mIHRoZSBub2RlICovXG4gICAgYWxpYXM6IHN0cmluZztcbiAgICAvKiogSW5kaWNhdGVzIGlmIHRoZSBkZXRhaWwgaXMgc2VsZWN0ZWQgKi9cbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICAvKiogSW5kaWNhdGVzIGlmIHdlIHNob3VsZCBkaXNwbGF5IGFuIGVycm9yIGljb24gKi9cbiAgICBkaXNwbGF5RXJyb3I6IGJvb2xlYW47XG4gICAgLyoqIFRyYW5zbGF0ZWQgdGV4dCB0byBkaXNwbGF5IGluIHRoZSB0b29sdGlwICovXG4gICAgZXJyb3JSZWFzb246IHN0cmluZyB8IG51bGw7XG4gICAgdHlwZTogJ0xFQUZfREVUQUlMUyc7XG59ICYgSW50ZXJuYWxOYXZTZWxlY3RvckJhc2VOb2RlO1xuXG5leHBvcnQgdHlwZSBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkgPVxuICAgIHwgSW50ZXJuYWxOYXZTZWxlY3RvckxlYWZcbiAgICB8IEludGVybmFsTmF2U2VsZWN0b3JHcm91cFxuICAgIHwgSW50ZXJuYWxOYXZTZWxlY3RvckNhdGVnb3J5XG4gICAgfCBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHM7XG5cbmV4cG9ydCBjb25zdCBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFMZWFmID0gKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpOiBlbnRyeSBpcyBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZiA9PiBlbnRyeS50eXBlID09PSAnTEVBRic7XG5cbmV4cG9ydCBjb25zdCBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFOb2RlID0gKFxuICAgIGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlcbik6IGVudHJ5IGlzIEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSB8IEludGVybmFsTmF2U2VsZWN0b3JHcm91cCA9PiBgY2hpbGRyZW5gIGluIGVudHJ5O1xuXG5leHBvcnQgY29uc3QgaXNJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnlBQ2F0ZWdvcnkgPSAoZW50cnk6IEludGVybmFsTmF2U2VsZWN0b3JFbnRyeSk6IGVudHJ5IGlzIEludGVybmFsTmF2U2VsZWN0b3JDYXRlZ29yeSA9PlxuICAgIGVudHJ5LnR5cGUgPT09ICdDQVRFR09SWSc7XG5cbmV4cG9ydCBjb25zdCBpc0ludGVybmFsTmF2U2VsZWN0b3JFbnRyeUFHcm91cCA9IChlbnRyeTogSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5KTogZW50cnkgaXMgSW50ZXJuYWxOYXZTZWxlY3Rvckdyb3VwID0+XG4gICAgZW50cnkudHlwZSA9PT0gJ0dST1VQJztcblxuZXhwb3J0IGNvbnN0IGlzSW50ZXJuYWxOYXZTZWxlY3RvckVudHJ5QUxlYWZEZXRhaWxzID0gKGVudHJ5OiBJbnRlcm5hbE5hdlNlbGVjdG9yRW50cnkpOiBlbnRyeSBpcyBJbnRlcm5hbE5hdlNlbGVjdG9yTGVhZkRldGFpbHMgPT5cbiAgICBlbnRyeS50eXBlID09PSAnTEVBRl9ERVRBSUxTJztcbiJdfQ==
|