@eui/components 18.1.0-snapshot-1723079637364 → 18.1.0

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.
@@ -497,7 +497,7 @@ export class EuiTableComponent {
497
497
  return prop ? prop.split('.').reduce((prev, curr) => (prev ? prev[curr] : null), obj || self) : null;
498
498
  }
499
499
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EuiTableComponent, deps: [{ token: i1.EuiTableSortService }, { token: i0.ChangeDetectorRef }, { token: i2.EuiTableSelectableRowService }, { token: i0.ElementRef }, { token: i3.BaseStatesDirective }], target: i0.ɵɵFactoryTarget.Component }); }
500
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: EuiTableComponent, selector: "eui-table, table[euiTable]", inputs: { rows: "rows", propId: "propId", e2eAttr: "e2eAttr", paginator: "paginator", filter: "filter", preselectedRows: "preselectedRows", loading: ["loading", "loading", booleanAttribute], asyncTable: ["asyncTable", "asyncTable", booleanAttribute], paginable: ["paginable", "paginable", booleanAttribute], euiTableResponsive: ["euiTableResponsive", "euiTableResponsive", booleanAttribute], euiTableFixedLayout: ["euiTableFixedLayout", "euiTableFixedLayout", booleanAttribute], euiTableDraggable: ["euiTableDraggable", "euiTableDraggable", booleanAttribute], euiTableCards: ["euiTableCards", "euiTableCards", booleanAttribute], euiTableBordered: ["euiTableBordered", "euiTableBordered", booleanAttribute], euiTableCompact: ["euiTableCompact", "euiTableCompact", booleanAttribute], hasStickyHeader: ["hasStickyHeader", "hasStickyHeader", booleanAttribute], hasStickyColumns: ["hasStickyColumns", "hasStickyColumns", booleanAttribute], isSelectOnlyVisibleRows: ["isSelectOnlyVisibleRows", "isSelectOnlyVisibleRows", booleanAttribute], isColsOrderable: ["isColsOrderable", "isColsOrderable", booleanAttribute], isHoverable: ["isHoverable", "isHoverable", booleanAttribute] }, outputs: { selectedRows: "selectedRows", sortChange: "sortChange", multiSortChange: "multiSortChange" }, host: { properties: { "class": "this.cssClasses" } }, providers: [EuiTableSortService, EuiTableSelectableRowService], queries: [{ propertyName: "templates", predicate: EuiTemplateDirective }], viewQueries: [{ propertyName: "theadRef", first: true, predicate: ["theadRef"], descendants: true }, { propertyName: "tbodyRef", first: true, predicate: ["tbodyRef"], descendants: true }, { propertyName: "tfootRef", first: true, predicate: ["tfootRef"], descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i3.BaseStatesDirective }], ngImport: i0, template: "@if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n}\n@if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of rowsRendered; let i = $index; track row) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n }\n\n @if (emptyMessageTemplate && rowsRendered.length === 0) {\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n }\n </tbody>\n}\n@if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n}\n", styles: [".eui-table__scrollable-wrapper{overflow:auto;will-change:transform}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__scrollable-wrapper{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table__orderable-cols-preview{background-color:var(--eui-c-neutral-lightest);border-color:transparent;padding:calc(var(--eui-s-m) - 2px) var(--eui-s-s);cursor:move;opacity:.7}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-c-white);--eui-table-text-color: var(--eui-c-text);--eui-table-selected-row-background-color: var(--eui-c-primary-bg);--eui-table-highlighted-background-color: var(--eui-c-accent);--eui-table-hover-background-color: var(--eui-c-primary-bg);--eui-table-bordered-color: var(--eui-c-neutral-lightest);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-sh-1)}.eui-table--bordered td,.eui-table--bordered th{border:var(--eui-bw-xs) solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-s-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-s-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-s-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table--hoverable tbody tr:hover,.eui-table--hoverable tbody tr:hover td{background-color:var(--eui-table-hover-background-color)!important}.eui-table--hoverable tbody tr:hover td:hover{background-color:var(--eui-c-info-lightest)!important}.eui-table--cols-orderable .cdk-drag-placeholder{background-color:var(--eui-c-white);color:var(--eui-c-info);cursor:move;opacity:1}.eui-table--cols-orderable tr{display:table-row}.eui-table--cols-orderable tr th{cursor:move}.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-s-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:var(--eui-br-max);border-top-color:var(--eui-c-primary);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-o-50)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-c-neutral-bg-light);position:relative;font:var(--eui-f-m)}.eui-table thead tr th{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-m) var(--eui-s-s);text-align:left;font:var(--eui-f-m-bold)}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-s-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{align-items:center;display:inline-flex;position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-s-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-s-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-c-neutral-lightest);height:calc(3 * var(--eui-s-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-c-bg)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-c-bg)}.eui-table tbody tr td{padding:var(--eui-s-xs) var(--eui-s-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-c-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-c-neutral-bg-light)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-c-neutral-bg-light)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-c-neutral-lightest);border-top:1px solid var(--eui-c-neutral-lightest)}.eui-table tfoot tr td{padding:var(--eui-s-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto;will-change:transform}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__sticky-container{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%!important}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:var(--eui-bw-none);border-bottom:1px solid var(--eui-c-neutral-bg-light);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-c-neutral-light);content:attr(data-col-label);left:var(--eui-s-xs);padding-right:var(--eui-s-xs);position:absolute;width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--eui-f-m-bold)}.eui-table:not(.eui-table-cards) .actionsColumn,.eui-table:not(.eui-table-cards) .actions-column{justify-content:flex-start;text-align:left;width:100%}.eui-table__sticky-container{height:auto!important;width:auto!important}.eui-table--sticky-columns th,.eui-table--sticky-columns td,.eui-table--sticky-columns th .eui-table__col--sticky,.eui-table--sticky-columns td .eui-table__col--sticky{width:auto;z-index:auto}.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-last,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:none!important}.eui-table--sticky-columns tfoot tr td:empty{display:none!important}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-s-3xl)!important}.eui-table__filter-search-icon{left:var(--eui-s-xs);position:absolute;top:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-c-accent-bg-light)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
500
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: EuiTableComponent, selector: "eui-table, table[euiTable]", inputs: { rows: "rows", propId: "propId", e2eAttr: "e2eAttr", paginator: "paginator", filter: "filter", preselectedRows: "preselectedRows", loading: ["loading", "loading", booleanAttribute], asyncTable: ["asyncTable", "asyncTable", booleanAttribute], paginable: ["paginable", "paginable", booleanAttribute], euiTableResponsive: ["euiTableResponsive", "euiTableResponsive", booleanAttribute], euiTableFixedLayout: ["euiTableFixedLayout", "euiTableFixedLayout", booleanAttribute], euiTableDraggable: ["euiTableDraggable", "euiTableDraggable", booleanAttribute], euiTableCards: ["euiTableCards", "euiTableCards", booleanAttribute], euiTableBordered: ["euiTableBordered", "euiTableBordered", booleanAttribute], euiTableCompact: ["euiTableCompact", "euiTableCompact", booleanAttribute], hasStickyHeader: ["hasStickyHeader", "hasStickyHeader", booleanAttribute], hasStickyColumns: ["hasStickyColumns", "hasStickyColumns", booleanAttribute], isSelectOnlyVisibleRows: ["isSelectOnlyVisibleRows", "isSelectOnlyVisibleRows", booleanAttribute], isColsOrderable: ["isColsOrderable", "isColsOrderable", booleanAttribute], isHoverable: ["isHoverable", "isHoverable", booleanAttribute] }, outputs: { selectedRows: "selectedRows", sortChange: "sortChange", multiSortChange: "multiSortChange" }, host: { properties: { "class": "this.cssClasses" } }, providers: [EuiTableSortService, EuiTableSelectableRowService], queries: [{ propertyName: "templates", predicate: EuiTemplateDirective }], viewQueries: [{ propertyName: "theadRef", first: true, predicate: ["theadRef"], descendants: true }, { propertyName: "tbodyRef", first: true, predicate: ["tbodyRef"], descendants: true }, { propertyName: "tfootRef", first: true, predicate: ["tfootRef"], descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i3.BaseStatesDirective }], ngImport: i0, template: "@if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n}\n@if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of rowsRendered; let i = $index; track $index) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n }\n\n @if (emptyMessageTemplate && rowsRendered.length === 0) {\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n }\n </tbody>\n}\n@if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n}\n", styles: [".eui-table__scrollable-wrapper{overflow:auto;will-change:transform}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__scrollable-wrapper{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table__orderable-cols-preview{background-color:var(--eui-c-neutral-lightest);border-color:transparent;padding:calc(var(--eui-s-m) - 2px) var(--eui-s-s);cursor:move;opacity:.7}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-c-white);--eui-table-text-color: var(--eui-c-text);--eui-table-selected-row-background-color: var(--eui-c-primary-bg);--eui-table-highlighted-background-color: var(--eui-c-accent);--eui-table-hover-background-color: var(--eui-c-primary-bg);--eui-table-bordered-color: var(--eui-c-neutral-lightest);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-sh-1)}.eui-table--bordered td,.eui-table--bordered th{border:var(--eui-bw-xs) solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-s-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-s-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-s-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table--hoverable tbody tr:hover,.eui-table--hoverable tbody tr:hover td{background-color:var(--eui-table-hover-background-color)!important}.eui-table--hoverable tbody tr:hover td:hover{background-color:var(--eui-c-info-lightest)!important}.eui-table--cols-orderable .cdk-drag-placeholder{background-color:var(--eui-c-white);color:var(--eui-c-info);cursor:move;opacity:1}.eui-table--cols-orderable tr{display:table-row}.eui-table--cols-orderable tr th{cursor:move}.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-s-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:var(--eui-br-max);border-top-color:var(--eui-c-primary);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-o-50)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-c-neutral-bg-light);position:relative;font:var(--eui-f-m)}.eui-table thead tr th{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-m) var(--eui-s-s);text-align:left;font:var(--eui-f-m-bold)}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-s-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{align-items:center;display:inline-flex;position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-s-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-s-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-c-neutral-lightest);height:calc(3 * var(--eui-s-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-c-bg)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-c-bg)}.eui-table tbody tr td{padding:var(--eui-s-xs) var(--eui-s-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-c-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-c-neutral-bg-light)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-c-neutral-bg-light)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-c-neutral-lightest);border-top:1px solid var(--eui-c-neutral-lightest)}.eui-table tfoot tr td{padding:var(--eui-s-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto;will-change:transform}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__sticky-container{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%!important}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:var(--eui-bw-none);border-bottom:1px solid var(--eui-c-neutral-bg-light);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-c-neutral-light);content:attr(data-col-label);left:var(--eui-s-xs);padding-right:var(--eui-s-xs);position:absolute;width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--eui-f-m-bold)}.eui-table:not(.eui-table-cards) .actionsColumn,.eui-table:not(.eui-table-cards) .actions-column{justify-content:flex-start;text-align:left;width:100%}.eui-table__sticky-container{height:auto!important;width:auto!important}.eui-table--sticky-columns th,.eui-table--sticky-columns td,.eui-table--sticky-columns th .eui-table__col--sticky,.eui-table--sticky-columns td .eui-table__col--sticky{width:auto;z-index:auto}.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-last,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:none!important}.eui-table--sticky-columns tfoot tr td:empty{display:none!important}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-s-3xl)!important}.eui-table__filter-search-icon{left:var(--eui-s-xs);position:absolute;top:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-c-accent-bg-light)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
501
501
  }
502
502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: EuiTableComponent, decorators: [{
503
503
  type: Component,
@@ -506,7 +506,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
506
506
  directive: BaseStatesDirective,
507
507
  inputs: [],
508
508
  },
509
- ], template: "@if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n}\n@if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of rowsRendered; let i = $index; track row) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n }\n\n @if (emptyMessageTemplate && rowsRendered.length === 0) {\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n }\n </tbody>\n}\n@if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n}\n", styles: [".eui-table__scrollable-wrapper{overflow:auto;will-change:transform}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__scrollable-wrapper{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table__orderable-cols-preview{background-color:var(--eui-c-neutral-lightest);border-color:transparent;padding:calc(var(--eui-s-m) - 2px) var(--eui-s-s);cursor:move;opacity:.7}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-c-white);--eui-table-text-color: var(--eui-c-text);--eui-table-selected-row-background-color: var(--eui-c-primary-bg);--eui-table-highlighted-background-color: var(--eui-c-accent);--eui-table-hover-background-color: var(--eui-c-primary-bg);--eui-table-bordered-color: var(--eui-c-neutral-lightest);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-sh-1)}.eui-table--bordered td,.eui-table--bordered th{border:var(--eui-bw-xs) solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-s-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-s-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-s-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table--hoverable tbody tr:hover,.eui-table--hoverable tbody tr:hover td{background-color:var(--eui-table-hover-background-color)!important}.eui-table--hoverable tbody tr:hover td:hover{background-color:var(--eui-c-info-lightest)!important}.eui-table--cols-orderable .cdk-drag-placeholder{background-color:var(--eui-c-white);color:var(--eui-c-info);cursor:move;opacity:1}.eui-table--cols-orderable tr{display:table-row}.eui-table--cols-orderable tr th{cursor:move}.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-s-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:var(--eui-br-max);border-top-color:var(--eui-c-primary);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-o-50)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-c-neutral-bg-light);position:relative;font:var(--eui-f-m)}.eui-table thead tr th{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-m) var(--eui-s-s);text-align:left;font:var(--eui-f-m-bold)}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-s-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{align-items:center;display:inline-flex;position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-s-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-s-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-c-neutral-lightest);height:calc(3 * var(--eui-s-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-c-bg)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-c-bg)}.eui-table tbody tr td{padding:var(--eui-s-xs) var(--eui-s-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-c-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-c-neutral-bg-light)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-c-neutral-bg-light)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-c-neutral-lightest);border-top:1px solid var(--eui-c-neutral-lightest)}.eui-table tfoot tr td{padding:var(--eui-s-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto;will-change:transform}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__sticky-container{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%!important}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:var(--eui-bw-none);border-bottom:1px solid var(--eui-c-neutral-bg-light);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-c-neutral-light);content:attr(data-col-label);left:var(--eui-s-xs);padding-right:var(--eui-s-xs);position:absolute;width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--eui-f-m-bold)}.eui-table:not(.eui-table-cards) .actionsColumn,.eui-table:not(.eui-table-cards) .actions-column{justify-content:flex-start;text-align:left;width:100%}.eui-table__sticky-container{height:auto!important;width:auto!important}.eui-table--sticky-columns th,.eui-table--sticky-columns td,.eui-table--sticky-columns th .eui-table__col--sticky,.eui-table--sticky-columns td .eui-table__col--sticky{width:auto;z-index:auto}.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-last,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:none!important}.eui-table--sticky-columns tfoot tr td:empty{display:none!important}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-s-3xl)!important}.eui-table__filter-search-icon{left:var(--eui-s-xs);position:absolute;top:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-c-accent-bg-light)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"] }]
509
+ ], template: "@if (headerTemplate) {\n <thead #theadRef>\n <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n </thead>\n}\n@if (bodyTemplate) {\n <tbody #tbodyRef>\n @for (row of rowsRendered; let i = $index; track $index) {\n <ng-template\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: row, index: i + page * pageSize }\">\n </ng-template>\n }\n\n @if (emptyMessageTemplate && rowsRendered.length === 0) {\n <ng-template [ngTemplateOutlet]=\"emptyMessageTemplate\"></ng-template>\n }\n </tbody>\n}\n@if (footerTemplate) {\n <tfoot #tfootRef>\n <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n </tfoot>\n}\n", styles: [".eui-table__scrollable-wrapper{overflow:auto;will-change:transform}.eui-table__scrollable-wrapper::-webkit-scrollbar{display:inherit;height:10px;width:10px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__scrollable-wrapper::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__scrollable-wrapper::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__scrollable-wrapper{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table__orderable-cols-preview{background-color:var(--eui-c-neutral-lightest);border-color:transparent;padding:calc(var(--eui-s-m) - 2px) var(--eui-s-s);cursor:move;opacity:.7}.eui-table{--eui-table-compact-scale-factor: .95;--eui-table-background-color: var(--eui-c-white);--eui-table-text-color: var(--eui-c-text);--eui-table-selected-row-background-color: var(--eui-c-primary-bg);--eui-table-highlighted-background-color: var(--eui-c-accent);--eui-table-hover-background-color: var(--eui-c-primary-bg);--eui-table-bordered-color: var(--eui-c-neutral-lightest);--eui-table-loading-position: 50%;background-color:var(--eui-table-background-color);border-collapse:collapse;border-spacing:0;color:var(--eui-table-text-color);display:table;-webkit-overflow-scrolling:touch;position:relative;width:auto}.eui-table thead>tr>th,.eui-table tbody>tr>td,.eui-table tfoot>tr>td{vertical-align:middle}.eui-table--bordered{box-shadow:var(--eui-sh-1)}.eui-table--bordered td,.eui-table--bordered th{border:var(--eui-bw-xs) solid var(--eui-table-bordered-color)}.eui-table--compact thead th,.eui-table--compact thead tr{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:var(--eui-s-s)!important}.eui-table--compact tbody tr{height:calc(2 * var(--eui-s-m))!important}.eui-table--compact tbody tr td{font-size:calc(var(--eui-f-size-base) * var(--eui-table-compact-scale-factor))!important;padding:0 var(--eui-s-s)!important}.eui-table--responsive{width:100%}.eui-table--fixed-layout{table-layout:fixed}.eui-table--highlighted{background-color:var(--eui-table-highlighted-background-color);text-decoration:none}.eui-table--hoverable tbody tr:hover,.eui-table--hoverable tbody tr:hover td{background-color:var(--eui-table-hover-background-color)!important}.eui-table--hoverable tbody tr:hover td:hover{background-color:var(--eui-c-info-lightest)!important}.eui-table--cols-orderable .cdk-drag-placeholder{background-color:var(--eui-c-white);color:var(--eui-c-info);cursor:move;opacity:1}.eui-table--cols-orderable tr{display:table-row}.eui-table--cols-orderable tr th{cursor:move}.eui-table__actions-column{text-align:center;width:calc(15 * var(--eui-s-m))}.eui-table.eui-table__loading:before{animation:.8s linear infinite spin;border:8px solid transparent;border-radius:var(--eui-br-max);border-top-color:var(--eui-c-primary);content:\"\";display:block;height:80px;left:50%;margin:-40px 0 0 -40px;position:absolute;top:var(--eui-table-loading-position);width:80px;z-index:1000001}.eui-table.eui-table__loading tbody{opacity:var(--eui-o-50)}.eui-table thead tr.eui-table__columns-filter th{background-color:var(--eui-c-neutral-bg-light);position:relative;font:var(--eui-f-m)}.eui-table thead tr th{background-color:var(--eui-c-neutral-bg-light);padding:var(--eui-s-m) var(--eui-s-s);text-align:left;font:var(--eui-f-m-bold)}.eui-table thead tr th .eui-resizable .eui-resizable-icon__container{transform:translateY(calc(var(--eui-s-l) + 2px + 2px))}.eui-table thead tr th.eui-table__sortable-col .eui-table__sortable-col-content{align-items:center;display:inline-flex;position:relative;vertical-align:middle;white-space:nowrap}.eui-table thead tr th.eui-table__sortable-col--disabled{cursor:default}.eui-table thead tr th .eui-table__sortable-icon-button{margin-left:var(--eui-s-2xs)}.eui-table thead tr th.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table thead tr th.eui-table__cell-select .eui-table__cell-select--indeterminated{position:absolute;right:50%;top:var(--eui-s-s);transform:translate(50%)}.eui-table tbody tr{border-top:1px solid var(--eui-c-neutral-lightest);height:calc(3 * var(--eui-s-m))}.eui-table tbody tr.eui-table__row--selected,.eui-table tbody tr.eui-table__row--selected td{background-color:var(--eui-table-selected-row-background-color)!important}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:var(--eui-c-bg)}.eui-table tbody tr:not(.eui-table-expandable-row):nth-child(odd) td{background-color:var(--eui-c-bg)}.eui-table tbody tr td{padding:var(--eui-s-xs) var(--eui-s-s);vertical-align:middle}.eui-table tbody tr td.eui-table__cell-select{color:var(--eui-c-neutral-light);width:auto}.eui-table tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table tbody tr:nth-of-type(odd){background-color:var(--eui-c-white)}.eui-table tbody tr:nth-of-type(2n){background-color:var(--eui-c-neutral-bg-light)}.eui-table tbody tr:nth-of-type(2n) td{background-color:var(--eui-c-neutral-bg-light)}.eui-table tfoot tr{border-bottom:1px solid var(--eui-c-neutral-lightest);border-top:1px solid var(--eui-c-neutral-lightest)}.eui-table tfoot tr td{padding:var(--eui-s-s);vertical-align:middle}.eui-table__sticky-container{overflow:auto;will-change:transform}.eui-table__sticky-container::-webkit-scrollbar{display:inherit;height:8px;width:8px;background-color:var(--eui-c-neutral-bg-light)}.eui-table__sticky-container::-webkit-scrollbar-thumb{background-color:var(--eui-c-neutral-lightest);border-radius:5rem}.eui-table__sticky-container::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-table__sticky-container::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-table__sticky-container{scrollbar-color:var(--eui-c-neutral-bg-light);scrollbar-width:thin}}.eui-table--sticky-header thead tr th{position:sticky;top:0;z-index:8}.eui-table--sticky-columns .eui-table__col--sticky{position:sticky}.eui-table--sticky-columns th.eui-table__col--sticky{z-index:9}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns th.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky{z-index:8}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-first{box-shadow:inset -5px 0 8px -8px #0003}.eui-table--sticky-columns td.eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:inset 5px 0 8px -8px #0003}@media screen and (max-width: 767px){.eui-table:not(.eui-table-cards).eui-table--responsive{width:100%!important}.eui-table:not(.eui-table-cards).eui-table--responsive thead,.eui-table:not(.eui-table-cards).eui-table--responsive tbody,.eui-table:not(.eui-table-cards).eui-table--responsive tfoot,.eui-table:not(.eui-table-cards).eui-table--responsive th,.eui-table:not(.eui-table-cards).eui-table--responsive td,.eui-table:not(.eui-table-cards).eui-table--responsive tr{display:block}.eui-table:not(.eui-table-cards).eui-table--responsive thead tr{left:-9999px;position:absolute;top:-9999px}.eui-table:not(.eui-table-cards).eui-table--responsive tr{height:auto}.eui-table:not(.eui-table-cards).eui-table--responsive td{border:var(--eui-bw-none);border-bottom:1px solid var(--eui-c-neutral-bg-light);padding-left:50%;position:relative;text-align:left!important}.eui-table:not(.eui-table-cards).eui-table--responsive td:before{color:var(--eui-c-neutral-light);content:attr(data-col-label);left:var(--eui-s-xs);padding-right:var(--eui-s-xs);position:absolute;width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--eui-f-m-bold)}.eui-table:not(.eui-table-cards) .actionsColumn,.eui-table:not(.eui-table-cards) .actions-column{justify-content:flex-start;text-align:left;width:100%}.eui-table__sticky-container{height:auto!important;width:auto!important}.eui-table--sticky-columns th,.eui-table--sticky-columns td,.eui-table--sticky-columns th .eui-table__col--sticky,.eui-table--sticky-columns td .eui-table__col--sticky{width:auto;z-index:auto}.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns th .eui-table__col--sticky.eui-table__col--sticky-shadowed-last,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-first,.eui-table--sticky-columns td .eui-table__col--sticky.eui-table__col--sticky-shadowed-last{box-shadow:none!important}.eui-table--sticky-columns tfoot tr td:empty{display:none!important}}.eui-table__filter{align-items:center;display:flex;justify-content:flex-end;position:relative}.eui-table__filter--responsive{width:100%}.eui-table__filter-input{padding-left:var(--eui-s-3xl)!important}.eui-table__filter-search-icon{left:var(--eui-s-xs);position:absolute;top:var(--eui-s-xs)}@media screen and (max-width: 767px){.eui-table__filter--responsive{display:block;width:100%}}.eui-table__draggable-preview--no-preview.cdk-drag-preview{display:none}.eui-table--draggable tr.eui-table__draggable-preview--no-placeholder{opacity:1}.eui-table--draggable tr:hover{background-color:var(--eui-c-accent-bg-light)}.eui-table--draggable td .cdk-drop-list{flex-direction:column}.eui-table-cards{background-color:transparent;display:flex;flex-direction:column;overflow:hidden;width:100%}.eui-table-cards thead{width:100%}.eui-table-cards thead tr{align-items:center;height:auto}.eui-table-cards thead tr th{position:relative;vertical-align:middle;width:100%}.eui-table-cards thead tr th.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards thead tr th.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody{width:100%}.eui-table-cards tbody tr{align-items:center;border-top:0;display:flex;height:auto;width:100%}.eui-table-cards tbody tr.eui-table__row--selected .eui-card:first-child{--eui-card-header-background-color: var(--eui-table-selected-row-background-color)}.eui-table-cards tbody tr td{position:relative;vertical-align:middle;width:100%}.eui-table-cards tbody tr td.eui-table__cell-select{padding:var(--eui-s-s) var(--eui-s-m);width:auto}.eui-table-cards tbody tr td.eui-table__cell-select .eui-table__cell-select-checkbox-container{display:flex}.eui-table-cards tbody tr:hover{background-color:transparent}.eui-table-cards tbody tr:not(.eui-table-expandable-row):nth-child(odd){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(2n):hover:not(.eui-table__row--selected){background-color:transparent}.eui-table-cards tbody tr:nth-of-type(odd):hover:not(.eui-table__row--selected){background-color:transparent}\n"] }]
510
510
  }], ctorParameters: () => [{ type: i1.EuiTableSortService }, { type: i0.ChangeDetectorRef }, { type: i2.EuiTableSelectableRowService }, { type: i0.ElementRef }, { type: i3.BaseStatesDirective }], propDecorators: { cssClasses: [{
511
511
  type: HostBinding,
512
512
  args: ['class']
@@ -583,4 +583,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
583
583
  type: ViewChild,
584
584
  args: ['tfootRef']
585
585
  }] } });
586
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS9ldWktdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBZ0IzRCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxx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RSxnQkFBZ0IsRUFBRTtnQkFDRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUk1QixZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkF1QmdDLFNBQVM7c0JBQS9DLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVkLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0UsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFdWlUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEJhc2VTdGF0ZXNEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvc2hhcmVkJztcbmltcG9ydCB7IEV1aVBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktcGFnaW5hdG9yJztcblxuaW1wb3J0IHsgRXVpVGFibGVTb3J0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXNvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uRXZlbnQgfSBmcm9tICcuL21vZGVscy9wYWdpbmF0aW9uLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEV1aVRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvZXVpLXRhYmxlLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXNlbGVjdGFibGUtcm93LnNlcnZpY2UnO1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc29ydC1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBNdWx0aXNvcnRQYXJhbSB9IGZyb20gJy4vbW9kZWxzL211bHRpLXNvcnQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10YWJsZSwgdGFibGVbZXVpVGFibGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0V1aVRhYmxlU29ydFNlcnZpY2UsIEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2VdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogW10sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlLmdldENzc0NsYXNzZXMoJ2V1aS10YWJsZScpLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVJlc3BvbnNpdmUgPyAnZXVpLXRhYmxlLS1yZXNwb25zaXZlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUZpeGVkTGF5b3V0ID8gJ2V1aS10YWJsZS0tZml4ZWQtbGF5b3V0JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUJvcmRlcmVkID8gJ2V1aS10YWJsZS0tYm9yZGVyZWQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlQ29tcGFjdCA/ICdldWktdGFibGUtLWNvbXBhY3QnIDogJycsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlRHJhZ2dhYmxlID8gJ2V1aS10YWJsZS0tZHJhZ2dhYmxlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUNhcmRzID8gJ2V1aS10YWJsZS1jYXJkcycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaGFzU3RpY2t5SGVhZGVyID8gJ2V1aS10YWJsZS0tc3RpY2t5LWhlYWRlcicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaGFzU3RpY2t5Q29sdW1ucyA/ICdldWktdGFibGUtLXN0aWNreS1jb2x1bW5zJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0NvbHNPcmRlcmFibGUgPyAnZXVpLXRhYmxlLS1jb2xzLW9yZGVyYWJsZScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNIb3ZlcmFibGUgPyAnZXVpLXRhYmxlLS1ob3ZlcmFibGUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPyAnZXVpLXRhYmxlX19sb2FkaW5nJyA6ICcnLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBJbnB1dCgpIHJvd3M6IGFueVtdID0gW107XG4gICAgQElucHV0KCkgcHJvcElkID0gJ2lkJztcbiAgICBASW5wdXQoKSBlMmVBdHRyID0gJ2V1aS10YWJsZSc7XG4gICAgQElucHV0KCkgcGFnaW5hdG9yOiBFdWlQYWdpbmF0b3JDb21wb25lbnQ7XG4gICAgQElucHV0KCkgZmlsdGVyOiBFdWlUYWJsZUZpbHRlckNvbXBvbmVudDtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBASW5wdXQoKSBwcmVzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXN5bmNUYWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwYWdpbmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXVpVGFibGVSZXNwb25zaXZlID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGV1aVRhYmxlRml4ZWRMYXlvdXQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXVpVGFibGVEcmFnZ2FibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXVpVGFibGVDYXJkcyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBldWlUYWJsZUJvcmRlcmVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGV1aVRhYmxlQ29tcGFjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzU3RpY2t5Q29sdW1ucyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1NlbGVjdE9ubHlWaXNpYmxlUm93cyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NvbHNPcmRlcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNIb3ZlcmFibGUgPSBmYWxzZTtcblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZFJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG11bHRpU29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlzb3J0UGFyYW1bXT4oKTtcblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgYm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZW1wdHlNZXNzYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHJvd3NSZW5kZXJlZDogYW55W10gPSBbXTtcblxuICAgIHB1YmxpYyBwYWdlID0gMDtcbiAgICBwdWJsaWMgcGFnZVNpemUgPSAwO1xuICAgIHB1YmxpYyBzaG93U3RpY2t5SGVhZGVyID0gZmFsc2U7XG4gICAgcHVibGljIGZpbHRlcmVkUm93cyA9IFtdO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihFdWlUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8RXVpVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgQFZpZXdDaGlsZCgndGhlYWRSZWYnKSB0aGVhZFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgndGJvZHlSZWYnKSB0Ym9keVJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgndGZvb3RSZWYnKSB0Zm9vdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHJvd3NTcmM6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSB0YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIHN0aWNreUZlYXR1cmVIYW5kbGVySW5kZXggPSAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZXVpVGFibGVTb3J0U2VydmljZTogRXVpVGFibGVTb3J0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZTogRXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGJhc2VTdGF0ZXNEaXJlY3RpdmU6IEJhc2VTdGF0ZXNEaXJlY3RpdmUsXG4gICAgKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoYzogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucm93cykge1xuICAgICAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2V0UHJvcElkKHRoaXMucHJvcElkKTtcbiAgICAgICAgaWYgKGMgJiYgYy5yb3dzICYmIGMucm93cy5maXJzdENoYW5nZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgLy8gR28gdG8gZmlyc3QgcGFnZSBvbmx5IGlmIGxlbmd0aCBvZiBkYXRhIGhhcyBjaGFuZ2VkLiBUbyBhdm9pZCB1c2VyIHRvIGJlIG9uIGEgcGFnZSB0aGF0IG5vIGxvbmdlciBleGlzdCBpbiBjYXNlIG9mIGZpbHRlcmluZy5cbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aENoYW5nZWQgPSB0aGlzLnJvd3NTcmMubGVuZ3RoICE9PSBjLnJvd3MuY3VycmVudFZhbHVlLmxlbmd0aDtcblxuICAgICAgICAgICAgdGhpcy5yb3dzU3JjID0gWy4uLmMucm93cy5jdXJyZW50VmFsdWVdO1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmIGxlbmd0aENoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5nb0ZpcnN0UGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmFzeW5jVGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3MoYy5yb3dzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3MoYy5yb3dzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLnByZXNlbGVjdGVkUm93cyAmJiBjLnByZXNlbGVjdGVkUm93cy5maXJzdENoYW5nZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKHRoaXMucHJlc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjICYmIGMucGFnaW5hdG9yPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aCh0aGlzLnJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgIGlmICghYy5wYWdpbmF0b3I/LmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmdvRmlyc3RQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aGlzLnJvd3MgY2FuIGJlIGNoYW5nZWQgYW55dGltZSwgdGhlbiB0aGlzIGVsc2UgY2FuIGJlIGV4ZWN1dGVkIGF0IHRoYXQgdGltZSwgdGVzdGluZyB0aGlzLnBhZ2luYXRvciBhbGxvd3MgdG8gbWFrZSBzdXJlXG4gICAgICAgICAgICAvLyB0aGUgdXNlciB3aGFudHMgdG8gZGlzYWJsZSBwYWdpbmF0aW9uIG9yIGNoYW5nZSB0aGUgZGF0YXNvdXJjZVxuICAgICAgICAgICAgaWYgKCF0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1JlbmRlcmVkID0gdGhpcy5yb3dzU3JjID8gdGhpcy5yb3dzU3JjIDogWy4uLnRoaXMucm93c107XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd3NTcmMgPSBbLi4udGhpcy5yb3dzXTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2hlYWRlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2JvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZm9vdGVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZW1wdHlNZXNzYWdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hc3luY1RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc29ydGluZ1BhcmFtcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNvcnRpbmdQYXJhbXM6IHsgc29ydDogc3RyaW5nIHwgbnVsbDsgb3JkZXI6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHsgc29ydDogc29ydGluZ1BhcmFtcy5zb3J0LCBvcmRlcjogc29ydGluZ1BhcmFtcy5vcmRlciB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5tdWx0aXNvcnRQYXJhbXNTb3J0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtdWx0aVNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10pID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTb3J0Q2hhbmdlLmVtaXQobXVsdGlTb3J0UGFyYW1zLmZpbHRlcigoZWwpID0+IGVsLnBvc2l0aW9uID4gMCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0Um93c0ZlYXR1cmVIYW5kbGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyh0aGlzLnByZXNlbGVjdGVkUm93cyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0QWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdEFsbFJvd3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdW5zZWxlY3RBbGxSb3dzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5zZWxlY3RBbGxSb3dzKCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHNlbGVjdFJvd3Mocm93czogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdFJvd3Mocm93cyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGZpbHRlclJvd3MoZmlsdGVyOiBzdHJpbmcsIHI6IGFueVtdKTogYW55W10ge1xuICAgICAgICBjb25zdCByb3dzID0gZmlsdGVyXG4gICAgICAgICAgICA/IHIuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nID0gdGhpcy5nZXRQcm9wcyhyb3csIGZpbHRlcikuZmlsdGVyKChwKSA9PiBwLm1hdGNoID09PSB0cnVlKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGluZz8ubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogcjtcblxuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5hZGRSb3dzKHJvd3MpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gcm93cztcblxuICAgICAgICByZXR1cm4gcm93cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U29ydChzb3J0OiBzdHJpbmcgfCBudWxsLCBvcmRlcjogJ2FzYycgfCAnZGVzYycgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zZXRTb3J0KHNvcnQsIG9yZGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0aWNreUZlYXR1cmVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlckluZGV4ID09PSAwID8gMjUwIDogMDtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJvZHlUckl0ZW1zID0gQXJyYXkuZnJvbSh0aGlzLnRib2R5UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHInKSk7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5jbGllbnRXaWR0aCB8fCAwO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aGVhZFJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMudGhlYWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlX19jb2wtLXN0aWNreScpKTtcblxuICAgICAgICAgICAgICAgIC8vIFJlc2V0IGxlZnQgJiByaWdodCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIHRoSXRlbXMuZm9yRWFjaCgodGg6IEhUTUxUYWJsZUNlbGxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoLnN0eWxlLmxlZnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgRmlyc3QgQ29scyAmIExhc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoSXRlbXNTdGlja3lGaXJzdENvbCA9IHRoSXRlbXMuZmlsdGVyKCh0aCkgPT4gdGgub2Zmc2V0TGVmdCArIHRoLmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoSXRlbXNTdGlja3lMYXN0Q29sID0gdGhJdGVtcy5maWx0ZXIoKHRoKSA9PiB0aC5vZmZzZXRMZWZ0ICsgdGguY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wuZm9yRWFjaCgodGgsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRoSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gcGFyc2VJbnQodGhJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uc3R5bGUubGVmdCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gKGkgPT09IDAgPyAwIDogdyArIGwpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRoSXRlbXNTdGlja3lGaXJzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtZmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhJdGVtc1N0aWNreUxhc3RDb2wucmV2ZXJzZSgpLmZvckVhY2goKHRoLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0aEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcGFyc2VJbnQodGhJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5zdHlsZS5yaWdodCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHcgKyByKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0aEl0ZW1zU3RpY2t5TGFzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtbGFzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJvZHlUckl0ZW1zLmZvckVhY2goKHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG4gICAgICAgICAgICAgICAgdGRJdGVtcy5mb3JFYWNoKCh0ZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGJvZHlUckl0ZW1zLmZvckVhY2goKHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgRmlyc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lGaXJzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIHRkSXRlbXNTdGlja3lGaXJzdENvbC5mb3JFYWNoKCh0ZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gdGRJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGwgPSBwYXJzZUludCh0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdPy5zdHlsZS5sZWZ0LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLmxlZnQgPSAoaSA9PT0gMCA/IDAgOiB3ICsgbCkgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGRJdGVtc1N0aWNreUZpcnN0Q29sLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGQuY2xhc3NMaXN0LmFkZCgnZXVpLXRhYmxlX19jb2wtLXN0aWNreS1zaGFkb3dlZC1maXJzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgTGFzdCBDb2xzXG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtc1N0aWNreUxhc3RDb2wgPSB0ZEl0ZW1zLmZpbHRlcigodGQpID0+IHRkLm9mZnNldExlZnQgKyB0ZC5jbGllbnRXaWR0aCA+IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICB0ZEl0ZW1zU3RpY2t5TGFzdENvbC5yZXZlcnNlKCkuZm9yRWFjaCgodGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRkSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXT8uY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBwYXJzZUludCh0ZEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LnN0eWxlLnJpZ2h0LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLnJpZ2h0ID0gKGkgPT09IDAgPyAwIDogdyArIHIpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRkSXRlbXNTdGlja3lMYXN0Q29sLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGQuY2xhc3NMaXN0LmFkZCgnZXVpLXRhYmxlX19jb2wtLXN0aWNreS1zaGFkb3dlZC1sYXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50Zm9vdFJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMudGZvb3RSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlX19jb2wtLXN0aWNreScpKTtcblxuICAgICAgICAgICAgICAgIC8vIFJlc2V0IGxlZnQgJiByaWdodCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIHRkSXRlbXMuZm9yRWFjaCgodGg6IEhUTUxUYWJsZUNlbGxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoLnN0eWxlLmxlZnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgRmlyc3QgQ29scyAmIExhc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lGaXJzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lMYXN0Q29sID0gdGRJdGVtcy5maWx0ZXIoKHRkKSA9PiB0ZC5vZmZzZXRMZWZ0ICsgdGQuY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wuZm9yRWFjaCgodGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRkSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uc3R5bGUubGVmdCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gKGkgPT09IDAgPyAwIDogdyArIGwpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRkSXRlbXNTdGlja3lGaXJzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtZmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUxhc3RDb2wucmV2ZXJzZSgpLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0ZEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5zdHlsZS5yaWdodCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHcgKyByKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5TGFzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtbGFzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXJJbmRleCsrO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGVGZWF0dXJlc0hhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zb3J0aW5nUGFyYW1zJCxcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yID8gdGhpcy5wYWdpbmF0b3IucGFnZSQgOiBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpLFxuICAgICAgICAgICAgdGhpcy5maWx0ZXIgPyB0aGlzLmZpbHRlci5maWx0ZXIkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5tdWx0aXNvcnRQYXJhbXNTb3J0JCxcbiAgICAgICAgXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtzb3J0aW5nUGFyYW1zLCBwYWdpbmF0aW9uLCBmaWx0ZXIsIG11bHRpc29ydFBhcmFtc10pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgciA9IFsuLi50aGlzLnJvd3NTcmNdO1xuICAgICAgICAgICAgICAgIGlmIChzb3J0aW5nUGFyYW1zLm9yZGVyICE9PSBudWxsICYmIHNvcnRpbmdQYXJhbXMuc29ydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXNvcnQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlzb3J0LnB1c2gobmV3IE11bHRpc29ydFBhcmFtKHNvcnRpbmdQYXJhbXMuc29ydCwgc29ydGluZ1BhcmFtcy5vcmRlciwgMSkpO1xuICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5kb011bHRpU29ydChtdWx0aXNvcnQsIHIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtdWx0aXNvcnRQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0YWJsZUNvbHVtbnMgPSBtdWx0aXNvcnRQYXJhbXMuZmlsdGVyKChjb2wpID0+IGNvbC5vcmRlciAhPT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3J0YWJsZUNvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZG9NdWx0aVNvcnQoc29ydGFibGVDb2x1bW5zLCByKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByID0gdGhpcy5maWx0ZXJSb3dzKGZpbHRlciwgcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aChyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhZ2luYXRlUm93cyhwYWdpbmF0aW9uLCByKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NSZW5kZXJlZCA9IHI7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0T25seVZpc2libGVSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnVuc2VsZWN0QWxsUm93cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyh0aGlzLnJvd3NSZW5kZXJlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGRvTXVsdGlTb3J0KG11bHRpc29ydFBhcmFtczogTXVsdGlzb3J0UGFyYW1bXSwgcjogYW55KTogYW55W10ge1xuICAgICAgICByID0gdGhpcy5tdWx0aVNvcnRSb3dzKG11bHRpc29ydFBhcmFtcywgMSwgcik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgbXVsdGlTb3J0Um93cyhtdWx0aXNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10sIGN1cnJlbnRQb3NpdGlvbjogbnVtYmVyLCByOiBhbnkpOiBhbnlbXSB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgbGV0IHJvd3M6IGFueVtdID0gbnVsbDtcbiAgICAgICAgY29uc3QgY29sUGFyYW1zID0gbXVsdGlzb3J0UGFyYW1zLmZpbmQoKGNvbCkgPT4gY29sLnBvc2l0aW9uID09PSBjdXJyZW50UG9zaXRpb24pO1xuICAgICAgICBpZiAoY29sUGFyYW1zLm9yZGVyID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICByb3dzID0gci5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ29sdW1uU29ydGFibGUoYSwgYiwgbXVsdGlzb3J0UGFyYW1zLCBjdXJyZW50UG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNvcnRUd29Sb3dzRGVzYyhhLCBiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcm93cyA9IHIuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbHVtblNvcnRhYmxlKGEsIGIsIG11bHRpc29ydFBhcmFtcywgY3VycmVudFBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3J0VHdvUm93c0FzYyhhLCBiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpc29ydFBhcmFtcy5sZW5ndGggPT09IGN1cnJlbnRQb3NpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aVNvcnRSb3dzKG11bHRpc29ydFBhcmFtcywgKytjdXJyZW50UG9zaXRpb24sIHJvd3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBpc0NvbHVtblNvcnRhYmxlKGE6IGFueSwgYjogYW55LCBtdWx0aXNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10sIGN1cnJlbnRQb3NpdGlvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24gPT09IDEpIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBjb2xQYXJhbXMgPSBtdWx0aXNvcnRQYXJhbXMuZmluZCgoY29sKSA9PiBjb2wucG9zaXRpb24gPT09IGN1cnJlbnRQb3NpdGlvbiAtIDEpO1xuICAgICAgICBjb25zdCBhQ29sID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYSwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAvLyB0eXBlb2YgdGhpcy5nZXRPYmpQcm9wKGEsIGNvbFBhcmFtcy5uYW1lKSA9PT0gJ3N0cmluZydcbiAgICAgICAgLy8gICAgID8gdGhpcy5nZXRPYmpQcm9wKGEsIGNvbFBhcmFtcy5uYW1lKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC8vICAgICA6IHRoaXMuZ2V0T2JqUHJvcChhLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgIGNvbnN0IGJDb2wgPSB0aGlzLmdldE9ialByb3BWYWx1ZShiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgIC8vIHR5cGVvZiB0aGlzLmdldE9ialByb3AoYiwgY29sUGFyYW1zLm5hbWUpID09PSAnc3RyaW5nJ1xuICAgICAgICAvLyAgICAgPyB0aGlzLmdldE9ialByb3AoYiwgY29sUGFyYW1zLm5hbWUpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLy8gICAgIDogdGhpcy5nZXRPYmpQcm9wKGIsIGNvbFBhcmFtcy5uYW1lKTtcbiAgICAgICAgaWYgKGFDb2wgIT09IGJDb2wpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24gLSAxID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzQ29sdW1uU29ydGFibGUoYSwgYiwgbXVsdGlzb3J0UGFyYW1zLCAtLWN1cnJlbnRQb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1RoaXMgZnVuY3Rpb24gaXMgdG8gZG8gdGhlIHNvcnRpbmcgdGhlIHRhYmxlIHdpdGggdGhlIGNvbWJpbmF0aW9uIG9mIDAsbnVsbCBhbmQgdGV4dCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgIC8vZ2V0T2JqUHJvcFZhbHVlIGlzIHRvIGdldCB0aGUgb2JqZWN0IHByb3BlcnR5IHZhbHVlXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBzb3J0VHdvUm93c0Rlc2MoYTogYW55LCBiOiBhbnksIGNvbE5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGFTb3J0T24gPSB0aGlzLmdldE9ialByb3BWYWx1ZShhLCBjb2xOYW1lKTtcbiAgICAgICAgY29uc3QgYlNvcnRPbiA9IHRoaXMuZ2V0T2JqUHJvcFZhbHVlKGIsIGNvbE5hbWUpO1xuICAgICAgICBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiBiU29ydE9uKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmIChhU29ydE9uICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9IGVsc2UgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgYlNvcnRPbiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoYVNvcnRPbiA9PT0gMCAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYVNvcnRPbiA8IGJTb3J0T24gPyAxIDogYVNvcnRPbiA+IGJTb3J0T24gPyAtMSA6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1RoaXMgZnVuY3Rpb24gaXMgdG8gZG8gdGhlIHNvcnRpbmcgdGhlIHRhYmxlIHdpdGggdGhlIGNvbWJpbmF0aW9uIG9mIDAsbnVsbCBhbmQgdGV4dCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgLy9nZXRPYmpQcm9wVmFsdWUgaXMgdG8gZ2V0IHRoZSBvYmplY3QgcHJvcGVydHkgdmFsdWVcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHNvcnRUd29Sb3dzQXNjKGE6IGFueSwgYjogYW55LCBjb2xOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhU29ydE9uID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYSwgY29sTmFtZSk7XG4gICAgICAgIGNvbnN0IGJTb3J0T24gPSB0aGlzLmdldE9ialByb3BWYWx1ZShiLCBjb2xOYW1lKTtcbiAgICAgICAgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgYlNvcnRPbikge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2UgaWYgKGFTb3J0T24gJiYgKGJTb3J0T24gPT09IG51bGwgfHwgYlNvcnRPbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIGJTb3J0T24gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmIChhU29ydE9uID09PSAwICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGFTb3J0T24gPCBiU29ydE9uID8gLTEgOiBhU29ydE9uID4gYlNvcnRPbiA/IDEgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZXRPYmpQcm9wVmFsdWUob2JqOiBhbnksIHByb3A6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRPYmpQcm9wKG9iaiwgcHJvcCk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudG9Mb3dlckNhc2UoKSA6IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0Um93c0ZlYXR1cmVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlclN1YnNjcmlwdGlvbiA9IHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RlZFJvd3MkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWQ6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZW1pdChzZWxlY3RlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGdldFByb3BzKG9iajogYW55W10sIGZpbHRlcjogc3RyaW5nKTogeyBrZXk6IHN0cmluZzsgbWF0Y2g6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfVtdIHtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBpc09iamVjdCA9ICh2YWw6IGFueSk6IGJvb2xlYW4gPT4gdmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xuICAgICAgICBjb25zdCBhZGREZWxpbWl0ZXIgPSAoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBzdHJpbmcgPT4gKGEgJiYgYSAhPT0gJzAnID8gYCR7YX0uJHtifWAgOiBiKTtcbiAgICAgICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBwYXRocyA9IChwYXRoT2JqID0ge30sIGhlYWQgPSAnJyk6IGFueVtdID0+XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwYXRoT2JqKS5yZWR1Y2UoKHByb2R1Y3QsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gYWRkRGVsaW1pdGVyKGhlYWQsIGtleSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAodjogYW55KTogYm9vbGVhbiA9PlxuICAgICAgICAgICAgICAgICAgICB2ICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2ICE9PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICAgICAgICAgICAgICA/LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihmaWx0ZXI/LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAnMCcgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5wdXNoKHsga2V5OiBhZGREZWxpbWl0ZXIoaGVhZCwga2V5KSwgbWF0Y2g6IG1hdGNoKHZhbHVlKSwgdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHZhbHVlKSA/IHByb2R1Y3QuY29uY2F0KHBhdGhzKHZhbHVlLCBmdWxsUGF0aCkpIDogcHJvZHVjdC5jb25jYXQoZnVsbFBhdGgpO1xuICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIHBhdGhzKG9iaik7XG5cbiAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgcGFnaW5hdGVSb3dzKHBhZ2luYXRpb246IFBhZ2luYXRpb25FdmVudCwgcjogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2luYXRpb24ucGFnZTtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2luYXRpb24ucGFnZVNpemU7XG5cbiAgICAgICAgcmV0dXJuIHIuc2xpY2UodGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSArIHRoaXMucGFnZVNpemUpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgZ2V0T2JqUHJvcChvYmo6IGFueSwgcHJvcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHByb3AgPyBwcm9wLnNwbGl0KCcuJykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAocHJldiA/IHByZXZbY3Vycl0gOiBudWxsKSwgb2JqIHx8IHNlbGYpIDogbnVsbDtcbiAgICB9XG59XG4iLCJAaWYgKGhlYWRlclRlbXBsYXRlKSB7XG4gICAgPHRoZWFkICN0aGVhZFJlZj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3RoZWFkPlxufVxuQGlmIChib2R5VGVtcGxhdGUpIHtcbiAgICA8dGJvZHkgI3Rib2R5UmVmPlxuICAgICAgICBAZm9yIChyb3cgb2Ygcm93c1JlbmRlcmVkOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgcm93KSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJib2R5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaSArIHBhZ2UgKiBwYWdlU2l6ZSB9XCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChlbXB0eU1lc3NhZ2VUZW1wbGF0ZSAmJiByb3dzUmVuZGVyZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlNZXNzYWdlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgPC90Ym9keT5cbn1cbkBpZiAoZm9vdGVyVGVtcGxhdGUpIHtcbiAgICA8dGZvb3QgI3Rmb290UmVmPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvdGZvb3Q+XG59XG4iXX0=
586
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpLXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V1aS10YWJsZS9ldWktdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZXVpLXRhYmxlL2V1aS10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBSUwsTUFBTSxFQUlOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRTNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBZ0IzRCxNQUFNLE9BQU8saUJBQWlCO0lBQzFCLElBQ0ksVUFBVTtRQUNWLE9BQU87WUFDSCxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxx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RSxnQkFBZ0IsRUFBRTtnQkFDRSxXQUFXO3NCQUFsRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUk1QixZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkF1QmdDLFNBQVM7c0JBQS9DLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUVkLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVTtnQkFDRSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0UsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFdWlUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEJhc2VTdGF0ZXNEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvc2hhcmVkJztcbmltcG9ydCB7IEV1aVBhZ2luYXRvckNvbXBvbmVudCB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9ldWktcGFnaW5hdG9yJztcblxuaW1wb3J0IHsgRXVpVGFibGVTb3J0U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXNvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uRXZlbnQgfSBmcm9tICcuL21vZGVscy9wYWdpbmF0aW9uLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IEV1aVRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXIvZXVpLXRhYmxlLWZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvZXVpLXRhYmxlLXNlbGVjdGFibGUtcm93LnNlcnZpY2UnO1xuaW1wb3J0IHsgU29ydEV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc29ydC1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBNdWx0aXNvcnRQYXJhbSB9IGZyb20gJy4vbW9kZWxzL211bHRpLXNvcnQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aS10YWJsZSwgdGFibGVbZXVpVGFibGVdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW0V1aVRhYmxlU29ydFNlcnZpY2UsIEV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2VdLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogQmFzZVN0YXRlc0RpcmVjdGl2ZSxcbiAgICAgICAgICAgIGlucHV0czogW10sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5iYXNlU3RhdGVzRGlyZWN0aXZlLmdldENzc0NsYXNzZXMoJ2V1aS10YWJsZScpLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVJlc3BvbnNpdmUgPyAnZXVpLXRhYmxlLS1yZXNwb25zaXZlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUZpeGVkTGF5b3V0ID8gJ2V1aS10YWJsZS0tZml4ZWQtbGF5b3V0JyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUJvcmRlcmVkID8gJ2V1aS10YWJsZS0tYm9yZGVyZWQnIDogJycsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlQ29tcGFjdCA/ICdldWktdGFibGUtLWNvbXBhY3QnIDogJycsXG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlRHJhZ2dhYmxlID8gJ2V1aS10YWJsZS0tZHJhZ2dhYmxlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5ldWlUYWJsZUNhcmRzID8gJ2V1aS10YWJsZS1jYXJkcycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaGFzU3RpY2t5SGVhZGVyID8gJ2V1aS10YWJsZS0tc3RpY2t5LWhlYWRlcicgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaGFzU3RpY2t5Q29sdW1ucyA/ICdldWktdGFibGUtLXN0aWNreS1jb2x1bW5zJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0NvbHNPcmRlcmFibGUgPyAnZXVpLXRhYmxlLS1jb2xzLW9yZGVyYWJsZScgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuaXNIb3ZlcmFibGUgPyAnZXVpLXRhYmxlLS1ob3ZlcmFibGUnIDogJycsXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPyAnZXVpLXRhYmxlX19sb2FkaW5nJyA6ICcnLFxuICAgICAgICBdXG4gICAgICAgICAgICAuam9pbignICcpXG4gICAgICAgICAgICAudHJpbSgpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBJbnB1dCgpIHJvd3M6IGFueVtdID0gW107XG4gICAgQElucHV0KCkgcHJvcElkID0gJ2lkJztcbiAgICBASW5wdXQoKSBlMmVBdHRyID0gJ2V1aS10YWJsZSc7XG4gICAgQElucHV0KCkgcGFnaW5hdG9yOiBFdWlQYWdpbmF0b3JDb21wb25lbnQ7XG4gICAgQElucHV0KCkgZmlsdGVyOiBFdWlUYWJsZUZpbHRlckNvbXBvbmVudDtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBASW5wdXQoKSBwcmVzZWxlY3RlZFJvd3M6IGFueVtdID0gW107XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXN5bmNUYWJsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBwYWdpbmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXVpVGFibGVSZXNwb25zaXZlID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGV1aVRhYmxlRml4ZWRMYXlvdXQgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXVpVGFibGVEcmFnZ2FibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZXVpVGFibGVDYXJkcyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBldWlUYWJsZUJvcmRlcmVkID0gZmFsc2U7XG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGV1aVRhYmxlQ29tcGFjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBoYXNTdGlja3lIZWFkZXIgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaGFzU3RpY2t5Q29sdW1ucyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc1NlbGVjdE9ubHlWaXNpYmxlUm93cyA9IGZhbHNlO1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0NvbHNPcmRlcmFibGUgPSBmYWxzZTtcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNIb3ZlcmFibGUgPSBmYWxzZTtcblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZFJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0RXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIG11bHRpU29ydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TXVsdGlzb3J0UGFyYW1bXT4oKTtcblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgYm9keVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwdWJsaWMgZW1wdHlNZXNzYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHJvd3NSZW5kZXJlZDogYW55W10gPSBbXTtcblxuICAgIHB1YmxpYyBwYWdlID0gMDtcbiAgICBwdWJsaWMgcGFnZVNpemUgPSAwO1xuICAgIHB1YmxpYyBzaG93U3RpY2t5SGVhZGVyID0gZmFsc2U7XG4gICAgcHVibGljIGZpbHRlcmVkUm93cyA9IFtdO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihFdWlUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8RXVpVGVtcGxhdGVEaXJlY3RpdmU+O1xuXG4gICAgQFZpZXdDaGlsZCgndGhlYWRSZWYnKSB0aGVhZFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgndGJvZHlSZWYnKSB0Ym9keVJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgndGZvb3RSZWYnKSB0Zm9vdFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHJvd3NTcmM6IGFueSA9IG51bGw7XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSB0YWJsZUZlYXR1cmVzSGFuZGxlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIHNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICBwcml2YXRlIHN0aWNreUZlYXR1cmVIYW5kbGVySW5kZXggPSAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZXVpVGFibGVTb3J0U2VydmljZTogRXVpVGFibGVTb3J0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZTogRXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGJhc2VTdGF0ZXNEaXJlY3RpdmU6IEJhc2VTdGF0ZXNEaXJlY3RpdmUsXG4gICAgKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoYzogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucm93cykge1xuICAgICAgICAgICAgdGhpcy5yb3dzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2V0UHJvcElkKHRoaXMucHJvcElkKTtcbiAgICAgICAgaWYgKGMgJiYgYy5yb3dzICYmIGMucm93cy5maXJzdENoYW5nZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgLy8gR28gdG8gZmlyc3QgcGFnZSBvbmx5IGlmIGxlbmd0aCBvZiBkYXRhIGhhcyBjaGFuZ2VkLiBUbyBhdm9pZCB1c2VyIHRvIGJlIG9uIGEgcGFnZSB0aGF0IG5vIGxvbmdlciBleGlzdCBpbiBjYXNlIG9mIGZpbHRlcmluZy5cbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aENoYW5nZWQgPSB0aGlzLnJvd3NTcmMubGVuZ3RoICE9PSBjLnJvd3MuY3VycmVudFZhbHVlLmxlbmd0aDtcblxuICAgICAgICAgICAgdGhpcy5yb3dzU3JjID0gWy4uLmMucm93cy5jdXJyZW50VmFsdWVdO1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yICYmIGxlbmd0aENoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2luYXRvci5nb0ZpcnN0UGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmFzeW5jVGFibGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3MoYy5yb3dzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZUZlYXR1cmVzSGFuZGxlcigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLmFkZFJvd3MoYy5yb3dzLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyAmJiBjLnByZXNlbGVjdGVkUm93cyAmJiBjLnByZXNlbGVjdGVkUm93cy5maXJzdENoYW5nZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RSb3dzKHRoaXMucHJlc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjICYmIGMucGFnaW5hdG9yPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aCh0aGlzLnJvd3MubGVuZ3RoKTtcbiAgICAgICAgICAgIGlmICghYy5wYWdpbmF0b3I/LmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLmdvRmlyc3RQYWdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyB0aGlzLnJvd3MgY2FuIGJlIGNoYW5nZWQgYW55dGltZSwgdGhlbiB0aGlzIGVsc2UgY2FuIGJlIGV4ZWN1dGVkIGF0IHRoYXQgdGltZSwgdGVzdGluZyB0aGlzLnBhZ2luYXRvciBhbGxvd3MgdG8gbWFrZSBzdXJlXG4gICAgICAgICAgICAvLyB0aGUgdXNlciB3aGFudHMgdG8gZGlzYWJsZSBwYWdpbmF0aW9uIG9yIGNoYW5nZSB0aGUgZGF0YXNvdXJjZVxuICAgICAgICAgICAgaWYgKCF0aGlzLnBhZ2luYXRvcikge1xuICAgICAgICAgICAgICAgIHRoaXMucm93c1JlbmRlcmVkID0gdGhpcy5yb3dzU3JjID8gdGhpcy5yb3dzU3JjIDogWy4uLnRoaXMucm93c107XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvd3NTcmMgPSBbLi4udGhpcy5yb3dzXTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2hlYWRlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpdGVtLmdldFR5cGUoKSA9PT0gJ2JvZHknKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ib2R5VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZm9vdGVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnZW1wdHlNZXNzYWdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW1wdHlNZXNzYWdlVGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5hc3luY1RhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRhYmxlRmVhdHVyZXNIYW5kbGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmV1aVRhYmxlU29ydFNlcnZpY2Uuc29ydGluZ1BhcmFtcyRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNvcnRpbmdQYXJhbXM6IHsgc29ydDogc3RyaW5nIHwgbnVsbDsgb3JkZXI6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZS5lbWl0KHsgc29ydDogc29ydGluZ1BhcmFtcy5zb3J0LCBvcmRlcjogc29ydGluZ1BhcmFtcy5vcmRlciB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5tdWx0aXNvcnRQYXJhbXNTb3J0JC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChtdWx0aVNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10pID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubXVsdGlTb3J0Q2hhbmdlLmVtaXQobXVsdGlTb3J0UGFyYW1zLmZpbHRlcigoZWwpID0+IGVsLnBvc2l0aW9uID4gMCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0Um93c0ZlYXR1cmVIYW5kbGVyKCk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2Uuc2VsZWN0Um93cyh0aGlzLnByZXNlbGVjdGVkUm93cyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0QWxsUm93cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdEFsbFJvd3MoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdW5zZWxlY3RBbGxSb3dzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UudW5zZWxlY3RBbGxSb3dzKCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIHNlbGVjdFJvd3Mocm93czogYW55W10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnNlbGVjdFJvd3Mocm93cyk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHVibGljIGZpbHRlclJvd3MoZmlsdGVyOiBzdHJpbmcsIHI6IGFueVtdKTogYW55W10ge1xuICAgICAgICBjb25zdCByb3dzID0gZmlsdGVyXG4gICAgICAgICAgICA/IHIuZmlsdGVyKChyb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nID0gdGhpcy5nZXRQcm9wcyhyb3csIGZpbHRlcikuZmlsdGVyKChwKSA9PiBwLm1hdGNoID09PSB0cnVlKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGluZz8ubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogcjtcblxuICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UucmVzZXRSb3dzKCk7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5hZGRSb3dzKHJvd3MpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRSb3dzID0gcm93cztcblxuICAgICAgICByZXR1cm4gcm93cztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U29ydChzb3J0OiBzdHJpbmcgfCBudWxsLCBvcmRlcjogJ2FzYycgfCAnZGVzYycgfCBudWxsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zZXRTb3J0KHNvcnQsIG9yZGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0aWNreUZlYXR1cmVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlckluZGV4ID09PSAwID8gMjUwIDogMDtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJvZHlUckl0ZW1zID0gQXJyYXkuZnJvbSh0aGlzLnRib2R5UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndHInKSk7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5jbGllbnRXaWR0aCB8fCAwO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50aGVhZFJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMudGhlYWRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlX19jb2wtLXN0aWNreScpKTtcblxuICAgICAgICAgICAgICAgIC8vIFJlc2V0IGxlZnQgJiByaWdodCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIHRoSXRlbXMuZm9yRWFjaCgodGg6IEhUTUxUYWJsZUNlbGxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoLnN0eWxlLmxlZnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgRmlyc3QgQ29scyAmIExhc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoSXRlbXNTdGlja3lGaXJzdENvbCA9IHRoSXRlbXMuZmlsdGVyKCh0aCkgPT4gdGgub2Zmc2V0TGVmdCArIHRoLmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRoSXRlbXNTdGlja3lMYXN0Q29sID0gdGhJdGVtcy5maWx0ZXIoKHRoKSA9PiB0aC5vZmZzZXRMZWZ0ICsgdGguY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0aEl0ZW1zU3RpY2t5Rmlyc3RDb2wuZm9yRWFjaCgodGgsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRoSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gcGFyc2VJbnQodGhJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uc3R5bGUubGVmdCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5sZWZ0ID0gKGkgPT09IDAgPyAwIDogdyArIGwpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRoSXRlbXNTdGlja3lGaXJzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtZmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhJdGVtc1N0aWNreUxhc3RDb2wucmV2ZXJzZSgpLmZvckVhY2goKHRoLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0aEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcGFyc2VJbnQodGhJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5zdHlsZS5yaWdodCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHcgKyByKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0aEl0ZW1zU3RpY2t5TGFzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtbGFzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJvZHlUckl0ZW1zLmZvckVhY2goKHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG4gICAgICAgICAgICAgICAgdGRJdGVtcy5mb3JFYWNoKCh0ZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGQuc3R5bGUucmlnaHQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGJvZHlUckl0ZW1zLmZvckVhY2goKHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtczogSFRNTFRhYmxlQ2VsbEVsZW1lbnRbXSA9IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgnLmV1aS10YWJsZV9fY29sLS1zdGlja3knKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgRmlyc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lGaXJzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIHRkSXRlbXNTdGlja3lGaXJzdENvbC5mb3JFYWNoKCh0ZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3ID0gdGRJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGwgPSBwYXJzZUludCh0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2xbaSAtIDFdPy5zdHlsZS5sZWZ0LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLmxlZnQgPSAoaSA9PT0gMCA/IDAgOiB3ICsgbCkgKyAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA9PT0gdGRJdGVtc1N0aWNreUZpcnN0Q29sLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGQuY2xhc3NMaXN0LmFkZCgnZXVpLXRhYmxlX19jb2wtLXN0aWNreS1zaGFkb3dlZC1maXJzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgTGFzdCBDb2xzXG4gICAgICAgICAgICAgICAgY29uc3QgdGRJdGVtc1N0aWNreUxhc3RDb2wgPSB0ZEl0ZW1zLmZpbHRlcigodGQpID0+IHRkLm9mZnNldExlZnQgKyB0ZC5jbGllbnRXaWR0aCA+IGNvbnRhaW5lcldpZHRoKTtcbiAgICAgICAgICAgICAgICB0ZEl0ZW1zU3RpY2t5TGFzdENvbC5yZXZlcnNlKCkuZm9yRWFjaCgodGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRkSXRlbXNTdGlja3lMYXN0Q29sW2kgLSAxXT8uY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBwYXJzZUludCh0ZEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LnN0eWxlLnJpZ2h0LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIHRkLnN0eWxlLnJpZ2h0ID0gKGkgPT09IDAgPyAwIDogdyArIHIpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRkSXRlbXNTdGlja3lMYXN0Q29sLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGQuY2xhc3NMaXN0LmFkZCgnZXVpLXRhYmxlX19jb2wtLXN0aWNreS1zaGFkb3dlZC1sYXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50Zm9vdFJlZikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXM6IEhUTUxUYWJsZUNlbGxFbGVtZW50W10gPSBBcnJheS5mcm9tKHRoaXMudGZvb3RSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZXVpLXRhYmxlX19jb2wtLXN0aWNreScpKTtcblxuICAgICAgICAgICAgICAgIC8vIFJlc2V0IGxlZnQgJiByaWdodCBwb3NpdGlvblxuICAgICAgICAgICAgICAgIHRkSXRlbXMuZm9yRWFjaCgodGg6IEhUTUxUYWJsZUNlbGxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoLnN0eWxlLmxlZnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aC5zdHlsZS5yaWdodCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGlja3kgRmlyc3QgQ29scyAmIExhc3QgQ29sc1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lGaXJzdENvbCA9IHRkSXRlbXMuZmlsdGVyKCh0ZCkgPT4gdGQub2Zmc2V0TGVmdCArIHRkLmNsaWVudFdpZHRoIDwgY29udGFpbmVyV2lkdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRkSXRlbXNTdGlja3lMYXN0Q29sID0gdGRJdGVtcy5maWx0ZXIoKHRkKSA9PiB0ZC5vZmZzZXRMZWZ0ICsgdGQuY2xpZW50V2lkdGggPiBjb250YWluZXJXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0ZEl0ZW1zU3RpY2t5Rmlyc3RDb2wuZm9yRWFjaCgodGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IHRkSXRlbXNTdGlja3lGaXJzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUZpcnN0Q29sW2kgLSAxXT8uc3R5bGUubGVmdCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5sZWZ0ID0gKGkgPT09IDAgPyAwIDogdyArIGwpICsgJ3B4JztcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT09IHRkSXRlbXNTdGlja3lGaXJzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtZmlyc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGRJdGVtc1N0aWNreUxhc3RDb2wucmV2ZXJzZSgpLmZvckVhY2goKHRkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHcgPSB0ZEl0ZW1zU3RpY2t5TGFzdENvbFtpIC0gMV0/LmNsaWVudFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByID0gcGFyc2VJbnQodGRJdGVtc1N0aWNreUxhc3RDb2xbaSAtIDFdPy5zdHlsZS5yaWdodCwgMTApO1xuICAgICAgICAgICAgICAgICAgICB0ZC5zdHlsZS5yaWdodCA9IChpID09PSAwID8gMCA6IHcgKyByKSArICdweCc7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxID09PSB0ZEl0ZW1zU3RpY2t5TGFzdENvbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRkLmNsYXNzTGlzdC5hZGQoJ2V1aS10YWJsZV9fY29sLS1zdGlja3ktc2hhZG93ZWQtbGFzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgICAgIHRoaXMuc3RpY2t5RmVhdHVyZUhhbmRsZXJJbmRleCsrO1xuICAgIH1cblxuICAgIHByaXZhdGUgdGFibGVGZWF0dXJlc0hhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVGZWF0dXJlc0hhbmRsZXJTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5zb3J0aW5nUGFyYW1zJCxcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yID8gdGhpcy5wYWdpbmF0b3IucGFnZSQgOiBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpLFxuICAgICAgICAgICAgdGhpcy5maWx0ZXIgPyB0aGlzLmZpbHRlci5maWx0ZXIkIDogbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKSxcbiAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTb3J0U2VydmljZS5tdWx0aXNvcnRQYXJhbXNTb3J0JCxcbiAgICAgICAgXSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKFtzb3J0aW5nUGFyYW1zLCBwYWdpbmF0aW9uLCBmaWx0ZXIsIG11bHRpc29ydFBhcmFtc10pID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgciA9IFsuLi50aGlzLnJvd3NTcmNdO1xuICAgICAgICAgICAgICAgIGlmIChzb3J0aW5nUGFyYW1zLm9yZGVyICE9PSBudWxsICYmIHNvcnRpbmdQYXJhbXMuc29ydCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXNvcnQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlzb3J0LnB1c2gobmV3IE11bHRpc29ydFBhcmFtKHNvcnRpbmdQYXJhbXMuc29ydCwgc29ydGluZ1BhcmFtcy5vcmRlciwgMSkpO1xuICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5kb011bHRpU29ydChtdWx0aXNvcnQsIHIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChtdWx0aXNvcnRQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0YWJsZUNvbHVtbnMgPSBtdWx0aXNvcnRQYXJhbXMuZmlsdGVyKChjb2wpID0+IGNvbC5vcmRlciAhPT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzb3J0YWJsZUNvbHVtbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMuZG9NdWx0aVNvcnQoc29ydGFibGVDb2x1bW5zLCByKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByID0gdGhpcy5maWx0ZXJSb3dzKGZpbHRlciwgcik7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnaW5hdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yLnNldExlbmd0aChyLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIHIgPSB0aGlzLnBhZ2luYXRlUm93cyhwYWdpbmF0aW9uLCByKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NSZW5kZXJlZCA9IHI7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGlja3lGZWF0dXJlSGFuZGxlcigpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0T25seVZpc2libGVSb3dzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5yZXNldFJvd3MoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ldWlUYWJsZVNlbGVjdGFibGVSb3dTZXJ2aWNlLnVuc2VsZWN0QWxsUm93cygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmV1aVRhYmxlU2VsZWN0YWJsZVJvd1NlcnZpY2UuYWRkUm93cyh0aGlzLnJvd3NSZW5kZXJlZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGRvTXVsdGlTb3J0KG11bHRpc29ydFBhcmFtczogTXVsdGlzb3J0UGFyYW1bXSwgcjogYW55KTogYW55W10ge1xuICAgICAgICByID0gdGhpcy5tdWx0aVNvcnRSb3dzKG11bHRpc29ydFBhcmFtcywgMSwgcik7XG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgbXVsdGlTb3J0Um93cyhtdWx0aXNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10sIGN1cnJlbnRQb3NpdGlvbjogbnVtYmVyLCByOiBhbnkpOiBhbnlbXSB7XG4gICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgbGV0IHJvd3M6IGFueVtdID0gbnVsbDtcbiAgICAgICAgY29uc3QgY29sUGFyYW1zID0gbXVsdGlzb3J0UGFyYW1zLmZpbmQoKGNvbCkgPT4gY29sLnBvc2l0aW9uID09PSBjdXJyZW50UG9zaXRpb24pO1xuICAgICAgICBpZiAoY29sUGFyYW1zLm9yZGVyID09PSAnZGVzYycpIHtcbiAgICAgICAgICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICByb3dzID0gci5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ29sdW1uU29ydGFibGUoYSwgYiwgbXVsdGlzb3J0UGFyYW1zLCBjdXJyZW50UG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNvcnRUd29Sb3dzRGVzYyhhLCBiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcm93cyA9IHIuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NvbHVtblNvcnRhYmxlKGEsIGIsIG11bHRpc29ydFBhcmFtcywgY3VycmVudFBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zb3J0VHdvUm93c0FzYyhhLCBiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG11bHRpc29ydFBhcmFtcy5sZW5ndGggPT09IGN1cnJlbnRQb3NpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHJvd3M7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aVNvcnRSb3dzKG11bHRpc29ydFBhcmFtcywgKytjdXJyZW50UG9zaXRpb24sIHJvd3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBpc0NvbHVtblNvcnRhYmxlKGE6IGFueSwgYjogYW55LCBtdWx0aXNvcnRQYXJhbXM6IE11bHRpc29ydFBhcmFtW10sIGN1cnJlbnRQb3NpdGlvbjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24gPT09IDEpIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBjb2xQYXJhbXMgPSBtdWx0aXNvcnRQYXJhbXMuZmluZCgoY29sKSA9PiBjb2wucG9zaXRpb24gPT09IGN1cnJlbnRQb3NpdGlvbiAtIDEpO1xuICAgICAgICBjb25zdCBhQ29sID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYSwgY29sUGFyYW1zLm5hbWUpO1xuICAgICAgICAvLyB0eXBlb2YgdGhpcy5nZXRPYmpQcm9wKGEsIGNvbFBhcmFtcy5uYW1lKSA9PT0gJ3N0cmluZydcbiAgICAgICAgLy8gICAgID8gdGhpcy5nZXRPYmpQcm9wKGEsIGNvbFBhcmFtcy5uYW1lKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIC8vICAgICA6IHRoaXMuZ2V0T2JqUHJvcChhLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgIGNvbnN0IGJDb2wgPSB0aGlzLmdldE9ialByb3BWYWx1ZShiLCBjb2xQYXJhbXMubmFtZSk7XG4gICAgICAgIC8vIHR5cGVvZiB0aGlzLmdldE9ialByb3AoYiwgY29sUGFyYW1zLm5hbWUpID09PSAnc3RyaW5nJ1xuICAgICAgICAvLyAgICAgPyB0aGlzLmdldE9ialByb3AoYiwgY29sUGFyYW1zLm5hbWUpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgLy8gICAgIDogdGhpcy5nZXRPYmpQcm9wKGIsIGNvbFBhcmFtcy5uYW1lKTtcbiAgICAgICAgaWYgKGFDb2wgIT09IGJDb2wpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24gLSAxID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzQ29sdW1uU29ydGFibGUoYSwgYiwgbXVsdGlzb3J0UGFyYW1zLCAtLWN1cnJlbnRQb3NpdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1RoaXMgZnVuY3Rpb24gaXMgdG8gZG8gdGhlIHNvcnRpbmcgdGhlIHRhYmxlIHdpdGggdGhlIGNvbWJpbmF0aW9uIG9mIDAsbnVsbCBhbmQgdGV4dCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgIC8vZ2V0T2JqUHJvcFZhbHVlIGlzIHRvIGdldCB0aGUgb2JqZWN0IHByb3BlcnR5IHZhbHVlXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBzb3J0VHdvUm93c0Rlc2MoYTogYW55LCBiOiBhbnksIGNvbE5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGFTb3J0T24gPSB0aGlzLmdldE9ialByb3BWYWx1ZShhLCBjb2xOYW1lKTtcbiAgICAgICAgY29uc3QgYlNvcnRPbiA9IHRoaXMuZ2V0T2JqUHJvcFZhbHVlKGIsIGNvbE5hbWUpO1xuICAgICAgICBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiBiU29ydE9uKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfSBlbHNlIGlmIChhU29ydE9uICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9IGVsc2UgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgYlNvcnRPbiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoYVNvcnRPbiA9PT0gMCAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYVNvcnRPbiA8IGJTb3J0T24gPyAxIDogYVNvcnRPbiA+IGJTb3J0T24gPyAtMSA6IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvL1RoaXMgZnVuY3Rpb24gaXMgdG8gZG8gdGhlIHNvcnRpbmcgdGhlIHRhYmxlIHdpdGggdGhlIGNvbWJpbmF0aW9uIG9mIDAsbnVsbCBhbmQgdGV4dCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgLy9nZXRPYmpQcm9wVmFsdWUgaXMgdG8gZ2V0IHRoZSBvYmplY3QgcHJvcGVydHkgdmFsdWVcbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIHNvcnRUd29Sb3dzQXNjKGE6IGFueSwgYjogYW55LCBjb2xOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBhU29ydE9uID0gdGhpcy5nZXRPYmpQcm9wVmFsdWUoYSwgY29sTmFtZSk7XG4gICAgICAgIGNvbnN0IGJTb3J0T24gPSB0aGlzLmdldE9ialByb3BWYWx1ZShiLCBjb2xOYW1lKTtcbiAgICAgICAgaWYgKChhU29ydE9uID09PSBudWxsIHx8IGFTb3J0T24gPT09IHVuZGVmaW5lZCkgJiYgYlNvcnRPbikge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9IGVsc2UgaWYgKGFTb3J0T24gJiYgKGJTb3J0T24gPT09IG51bGwgfHwgYlNvcnRPbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH0gZWxzZSBpZiAoKGFTb3J0T24gPT09IG51bGwgfHwgYVNvcnRPbiA9PT0gdW5kZWZpbmVkKSAmJiAoYlNvcnRPbiA9PT0gbnVsbCB8fCBiU29ydE9uID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmICgoYVNvcnRPbiA9PT0gbnVsbCB8fCBhU29ydE9uID09PSB1bmRlZmluZWQpICYmIGJTb3J0T24gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfSBlbHNlIGlmIChhU29ydE9uID09PSAwICYmIChiU29ydE9uID09PSBudWxsIHx8IGJTb3J0T24gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGFTb3J0T24gPCBiU29ydE9uID8gLTEgOiBhU29ydE9uID4gYlNvcnRPbiA/IDEgOiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBnZXRPYmpQcm9wVmFsdWUob2JqOiBhbnksIHByb3A6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRPYmpQcm9wKG9iaiwgcHJvcCk7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gdmFsdWUudG9Mb3dlckNhc2UoKSA6IHZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2VsZWN0Um93c0ZlYXR1cmVIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdFJvd3NGZWF0dXJlSGFuZGxlclN1YnNjcmlwdGlvbiA9IHRoaXMuZXVpVGFibGVTZWxlY3RhYmxlUm93U2VydmljZS5zZWxlY3RlZFJvd3MkXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAgICAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VsZWN0ZWQ6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZW1pdChzZWxlY3RlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBmaW5kIHRoZSBjb3JyZWN0IHR5cGUgb3IgdHVybiBpbnRvIGEgZ2VuZXJpYywgaHR0cHM6Ly93d3cudHlwZXNjcmlwdGxhbmcub3JnL2RvY3MvaGFuZGJvb2svMi9nZW5lcmljcy5odG1sXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcml2YXRlIGdldFByb3BzKG9iajogYW55W10sIGZpbHRlcjogc3RyaW5nKTogeyBrZXk6IHN0cmluZzsgbWF0Y2g6IGJvb2xlYW47IHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfVtdIHtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBpc09iamVjdCA9ICh2YWw6IGFueSk6IGJvb2xlYW4gPT4gdmFsICYmIHR5cGVvZiB2YWwgPT09ICdvYmplY3QnO1xuICAgICAgICBjb25zdCBhZGREZWxpbWl0ZXIgPSAoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBzdHJpbmcgPT4gKGEgJiYgYSAhPT0gJzAnID8gYCR7YX0uJHtifWAgOiBiKTtcbiAgICAgICAgY29uc3QgcHJvcHMgPSBbXTtcbiAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBwYXRocyA9IChwYXRoT2JqID0ge30sIGhlYWQgPSAnJyk6IGFueVtdID0+XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwYXRoT2JqKS5yZWR1Y2UoKHByb2R1Y3QsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gYWRkRGVsaW1pdGVyKGhlYWQsIGtleSk7XG4gICAgICAgICAgICAgICAgLy8gVE9ETzogZmluZCB0aGUgY29ycmVjdCB0eXBlIG9yIHR1cm4gaW50byBhIGdlbmVyaWMsIGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rLzIvZ2VuZXJpY3MuaHRtbFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAodjogYW55KTogYm9vbGVhbiA9PlxuICAgICAgICAgICAgICAgICAgICB2ICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2ICE9PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICAgICAgICAgICAgICA/LnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAuaW5kZXhPZihmaWx0ZXI/LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG5cbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSAnMCcgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5wdXNoKHsga2V5OiBhZGREZWxpbWl0ZXIoaGVhZCwga2V5KSwgbWF0Y2g6IG1hdGNoKHZhbHVlKSwgdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzT2JqZWN0KHZhbHVlKSA/IHByb2R1Y3QuY29uY2F0KHBhdGhzKHZhbHVlLCBmdWxsUGF0aCkpIDogcHJvZHVjdC5jb25jYXQoZnVsbFBhdGgpO1xuICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIHBhdGhzKG9iaik7XG5cbiAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgcGFnaW5hdGVSb3dzKHBhZ2luYXRpb246IFBhZ2luYXRpb25FdmVudCwgcjogYW55W10pOiBhbnlbXSB7XG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2luYXRpb24ucGFnZTtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2luYXRpb24ucGFnZVNpemU7XG5cbiAgICAgICAgcmV0dXJuIHIuc2xpY2UodGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSwgdGhpcy5wYWdlICogdGhpcy5wYWdlU2l6ZSArIHRoaXMucGFnZVNpemUpO1xuICAgIH1cblxuICAgIC8vIFRPRE86IGZpbmQgdGhlIGNvcnJlY3QgdHlwZSBvciB0dXJuIGludG8gYSBnZW5lcmljLCBodHRwczovL3d3dy50eXBlc2NyaXB0bGFuZy5vcmcvZG9jcy9oYW5kYm9vay8yL2dlbmVyaWNzLmh0bWxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgZ2V0T2JqUHJvcChvYmo6IGFueSwgcHJvcDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHByb3AgPyBwcm9wLnNwbGl0KCcuJykucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAocHJldiA/IHByZXZbY3Vycl0gOiBudWxsKSwgb2JqIHx8IHNlbGYpIDogbnVsbDtcbiAgICB9XG59XG4iLCJAaWYgKGhlYWRlclRlbXBsYXRlKSB7XG4gICAgPHRoZWFkICN0aGVhZFJlZj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImhlYWRlclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3RoZWFkPlxufVxuQGlmIChib2R5VGVtcGxhdGUpIHtcbiAgICA8dGJvZHkgI3Rib2R5UmVmPlxuICAgICAgICBAZm9yIChyb3cgb2Ygcm93c1JlbmRlcmVkOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJib2R5VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93LCBpbmRleDogaSArIHBhZ2UgKiBwYWdlU2l6ZSB9XCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChlbXB0eU1lc3NhZ2VUZW1wbGF0ZSAmJiByb3dzUmVuZGVyZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlNZXNzYWdlVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgPC90Ym9keT5cbn1cbkBpZiAoZm9vdGVyVGVtcGxhdGUpIHtcbiAgICA8dGZvb3QgI3Rmb290UmVmPlxuICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZm9vdGVyVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvdGZvb3Q+XG59XG4iXX0=