@energinet/watt 4.0.5 → 4.0.7

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.
@@ -294,9 +294,9 @@ export class WattTableComponent {
294
294
  });
295
295
  }
296
296
  /**
297
- * Clears the selection.
297
+ * Clears the selection, emitting `selectionChange` if `selection` was not empty.
298
298
  */
299
- clearSelection = () => this.selection.set([]);
299
+ clearSelection = () => this.selection.update((s) => (!s.length ? s : []));
300
300
  /**
301
301
  * Toggles the selection of a row.
302
302
  */
@@ -321,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
321
321
  }, template: "<!--\n@license\nCopyright 2020 Energinet DataHub A/S\n\nLicensed under the Apache License, Version 2.0 (the \"License2\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n-->\n<table\n mat-table\n matSort\n role=\"treegrid\"\n [ngClass]=\"{ 'watt-table-has-selection': getSelectionState() !== false }\"\n [matSortActive]=\"sortBy()\"\n [matSortDirection]=\"sortDirection()\"\n [matSortDisableClear]=\"!sortClear()\"\n [dataSource]=\"dataSource()\"\n [attr.aria-label]=\"description()\"\n (matSortChange)=\"sortChange.emit($event)\"\n>\n @if (selectable()) {\n <ng-container [matColumnDef]=\"checkboxColumn\" [sticky]=\"true\">\n <th mat-header-cell *matHeaderCellDef class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"getSelectionState()\"\n (ngModelChange)=\"$event ? selection.set(dataSource().filteredData) : clearSelection()\"\n />\n </th>\n <td mat-cell *matCellDef=\"let row\" class=\"watt-table-checkbox-cell\">\n <watt-checkbox\n [ngModel]=\"selection().includes(row)\"\n (ngModelChange)=\"toggleSelection(row)\"\n (click)=\"$event.stopPropagation()\"\n />\n </td>\n </ng-container>\n }\n\n <ng-container [matColumnDef]=\"expandableColumn\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n (click)=\"onRowClick(row)\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n >\n <watt-icon name=\"right\" size=\"xs\" />\n </td>\n </ng-container>\n\n @for (column of columns() | keyvalue; track column.key) {\n <ng-container [matColumnDef]=\"column.key\" [stickyEnd]=\"column.value.stickyEnd?.()\">\n <th\n mat-header-cell\n *matHeaderCellDef\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{\n column.value.headerCellClass\n }}\"\n >\n @if (column.value.helperAction; as action) {\n <watt-icon name=\"help\" (click)=\"action()\" />\n }\n\n <div\n class=\"watt-table-header-cell\"\n mat-sort-header\n [arrowPosition]=\"column.value.align === 'right' ? 'before' : 'after'\"\n [disabled]=\"!column.value.accessor || column.value.sort === false\"\n >\n {{ getColumnHeader(column) }}\n </div>\n @if (column.value.tooltip; as tooltip) {\n <watt-icon [title]=\"tooltip\" name=\"info\" />\n }\n </th>\n\n <td\n #td\n mat-cell\n *matCellDef=\"let row; let index = index\"\n [attr.data-key]=\"getRowKey(index, row)\"\n [attr.data-row-index]=\"index\"\n [class.watt-table-cell--expanded]=\"expanded().includes(row)\"\n [class.watt-table-cell--expandable]=\"column.value.expandable\"\n class=\"watt-table-align-{{ column.value.align ?? 'left' }} {{ column.value.dataCellClass }}\"\n (click)=\"!column.value.expandable && onRowClick(row)\"\n >\n @if (isExpandable()) {\n @defer (when !column.value.expandable || expanded().includes(row)) {\n @if (getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ getColumnCell(column.value, row) }}\n }\n }\n } @else {\n @if (getColumnTemplate(column.value); as template) {\n <div class=\"watt-table-cell-wrapper\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: row }\" />\n </div>\n } @else {\n {{ getColumnCell(column.value, row) }}\n }\n }\n </td>\n\n @if (hasFooter()) {\n <td\n mat-footer-cell\n *matFooterCellDef\n class=\"{{ column.value.footer?.class }} watt-table-align-{{\n column.value.align ?? 'left'\n }} \"\n >\n {{ column.value.footer?.value?.() }}\n </td>\n }\n </ng-container>\n }\n\n <ng-container matColumnDef=\"spacer\">\n <td class=\"watt-table-footer-spacer\" mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n @if (!hideColumnHeaders()) {\n <tr mat-header-row *matHeaderRowDef=\"renderedColumns()\"></tr>\n }\n <tr\n mat-row\n *matRowDef=\"let row; columns: renderedColumns()\"\n [attr.aria-selected]=\"row === activeRow()\"\n [ngClass]=\"{\n 'watt-table-highlight-row': !disabled() && !suppressRowHoverHighlight(),\n 'watt-table-clickable-row': !disabled() && rowClick$.observed,\n 'watt-table-active-row': isActiveRow(row),\n 'watt-table-no-end-divider': hideColumnHeaders(),\n }\"\n ></tr>\n\n @if (toolbar()) {\n <tr mat-footer-row *matFooterRowDef=\"['spacer']\"></tr>\n }\n\n @if (hasFooter()) {\n <tr\n mat-footer-row\n [class.watt-table-hide-footer]=\"loading() || dataSource().filteredData.length === 0\"\n *matFooterRowDef=\"renderedColumns(); sticky: stickyFooter()\"\n ></tr>\n }\n\n <ng-container *matNoDataRow>\n @if (loading()) {\n @for (i of [1, 2, 3]; track i) {\n <tr class=\"mat-mdc-row\">\n @for (_ of renderedColumns(); track _; let i = $index) {\n <td class=\"mat-mdc-cell\" [class.watt-table-loading-cell]=\"i > 0 || !selectable()\"></td>\n }\n </tr>\n }\n }\n </ng-container>\n</table>\n\n@if (toolbar(); as toolbar) {\n <div class=\"watt-table-toolbar\" role=\"toolbar\">\n <ng-container\n *ngTemplateOutlet=\"\n toolbar.templateRef;\n context: { $implicit: filterSelectionBy(dataSource().filteredData) }\n \"\n />\n </div>\n}\n", styles: ["watt-table{--mat-table-row-item-label-text-font: $primary-font-family;--mat-table-row-item-outline-color: var(--watt-color-neutral-grey-300);--mat-table-header-headline-font: $primary-font-family}watt-table,watt-table .mat-mdc-table{display:grid;position:relative;overflow:auto;min-height:44px}watt-table .mat-mdc-table{grid-template-columns:var(--watt-table-grid-template-columns);grid-auto-rows:max-content;max-height:100%;z-index:1}watt-table .mat-mdc-table thead,watt-table .mat-mdc-table tbody,watt-table .mat-mdc-table tfoot,watt-table .mat-mdc-table tr.mat-mdc-row,watt-table .mat-mdc-table tr.mat-mdc-header-row,watt-table .mat-mdc-table tr.mat-mdc-footer-row{display:contents}watt-table .mat-mdc-table tr.watt-table-hide-footer{display:none}watt-table .mat-mdc-table tr.mat-mdc-header-row{flex:0 0 auto}watt-table .mat-mdc-table th.mat-mdc-header-cell{color:var(--watt-typography-label-color);font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:uppercase;box-sizing:border-box;display:flex;position:sticky;top:0;padding:0 var(--watt-space-s);height:auto;background:var(--watt-color-primary-ultralight);box-shadow:0 -1px #0000001f inset;border:0;z-index:2!important;white-space:nowrap;-webkit-user-select:none;user-select:none}watt-table .mat-mdc-table td.mat-mdc-footer-cell,watt-table .mat-mdc-table td.mat-mdc-cell{display:flex;align-items:center;min-height:56px;padding:var(--watt-space-s) var(--watt-space-m)}watt-table .mat-mdc-table td.mat-mdc-cell.watt-table-cell--expandable{padding:0}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer),watt-table .mat-mdc-table tr.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:1px solid var(--watt-color-neutral-grey-300)}watt-table .mat-mdc-table td.mat-mdc-footer-cell:not(.watt-table-footer-spacer){font-size:.875rem;line-height:1.25rem;font-weight:600;text-transform:none;letter-spacing:0;border-top:2px solid var(--watt-color-neutral-grey-300);background-color:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-no-end-divider:last-child .mat-mdc-cell{border-bottom:0px solid var(--watt-color-neutral-grey-300)!important}watt-table .mat-mdc-table .watt-table-clickable-row>td:not(.watt-table-cell--expandable),watt-table .mat-mdc-table tr:has(>.watt-table-cell--expandable)>td:not(.watt-table-cell--expandable){cursor:pointer;-webkit-user-select:text;user-select:text}watt-table .mat-mdc-table .watt-table-highlight-row:hover:not(.watt-table-active-row,:has(>.watt-table-cell--expandable:hover))>td{background:var(--watt-color-neutral-grey-100)}watt-table .mat-mdc-table .watt-table-active-row>td{background:var(--watt-color-secondary-ultralight)}watt-table .mat-mdc-table .mat-column-__expandableColumn__>watt-icon{transition:transform .2s}watt-table .mat-mdc-table .mat-column-__expandableColumn__.watt-table-cell--expanded>watt-icon{transform:rotate(90deg)}watt-table .mat-mdc-table .mat-sort-header-arrow{margin:0}watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-arrow{margin-right:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-arrow,watt-table .mat-mdc-table .watt-table-align-left .mat-sort-header-arrow{margin-left:var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-header-cell{padding:.75rem var(--watt-space-s)}watt-table .mat-mdc-table .watt-table-checkbox-cell{justify-content:center}watt-table .mat-mdc-table th.watt-table-checkbox-cell{display:flex;align-items:center}watt-table .mat-mdc-table .watt-table-align-center,watt-table .mat-mdc-table .watt-table-align-center .mat-sort-header-container{justify-content:center}watt-table .mat-mdc-table .watt-table-align-right,watt-table .mat-mdc-table .watt-table-align-right .mat-sort-header-container{justify-content:right}.watt-table-variant-zebra>table>tbody>tr:nth-child(2n)>td{background-color:var(--watt-color-neutral-grey-50)}watt-table .mat-mdc-table th.watt-table-cell--expandable{display:none}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable{position:relative;min-height:0;max-height:0;border-bottom-width:0;overflow:hidden;pointer-events:none;grid-column:1/-1;background:transparent;flex:1 1 auto;opacity:0;will-change:opacity;transition:opacity .2s cubic-bezier(.4,0,.2,1),overflow 0s .3s allow-discrete}watt-table .mat-mdc-table tr.mat-mdc-row td.mat-mdc-cell.watt-table-cell--expandable>.watt-table-cell-wrapper{position:absolute;top:0;width:100%}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded{height:auto;max-height:initial;opacity:1;border-bottom-width:1px;pointer-events:all;overflow:visible}watt-table .mat-mdc-table tr.mat-mdc-row td.watt-table-cell--expandable.watt-table-cell--expanded>.watt-table-cell-wrapper{position:relative}.watt-table-footer-spacer{display:none;height:76px;border:0}.watt-table-has-selection .watt-table-footer-spacer{display:block}.watt-table-has-selection+.watt-table-toolbar{opacity:1;visibility:visible;transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .5s}.watt-table-toolbar{position:absolute;bottom:var(--watt-space-m);left:50%;transform:translate(-50%);display:flex;align-items:center;padding:0 var(--watt-space-m);min-height:44px;border-radius:22px;color:var(--watt-color-primary-contrast);background-color:var(--watt-color-primary);z-index:1;opacity:0;visibility:hidden;transition:none}.watt-table-toolbar .watt-button--disabled{opacity:.4;--watt-button-primary-disabled-color: #fff}.watt-table-loading-cell:before{content:\"\";flex:1;display:block;max-width:200px;height:var(--watt-space-m);border-radius:var(--watt-space-m);opacity:.75;animation:shine 2s infinite linear;background-color:var(--watt-color-neutral-grey-200);background-size:300px;background-position:-100px;background-image:linear-gradient(90deg,var(--watt-color-neutral-grey-300) 0px,var(--watt-color-neutral-grey-200) 40px,var(--watt-color-neutral-grey-300) 80px)}@keyframes shine{40%,to{background-position:200px}}\n"] }]
322
322
  }], ctorParameters: () => [] });
323
323
  export const WATT_TABLE = [WattTableComponent, WattTableCellDirective, WattTableToolbarDirective];
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJsZS93YXR0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RhYmxlL3dhdHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQVksWUFBWSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF3QixtQkFBbUIsRUFBRSxNQUFN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QyxHQUFNLEVBQUUsRUFBRSxDQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3VHQWpRcEYsa0JBQWtCOzJGQUFsQixrQkFBa0IsMGtHQXFJSyxDQUFBLHNCQUF5QixDQUFBLHVFQUMxQixDQUFBLHlCQUE0QixDQUFBLHNHQUNsQyxPQUFPLDZKQzFXcEMsdXlNQTRMQSxzNkxEcUJJLE9BQU8sb0ZBQ1AsZ0JBQWdCLG1KQUVoQixXQUFXLDhWQUNYLGFBQWEsaWRBQ2IsY0FBYywrZ0RBQ2QsaUJBQWlCLGtHQUNqQixxQkFBcUIsMkVBTHJCLFlBQVksaUdBRFosZ0JBQWdCOzsyRkFpQlAsa0JBQWtCO2tCQXBCOUIsU0FBUzs4QkFDQzt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixXQUFXO3dCQUNYLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjtxQkFDdEIsaUJBQ2MsaUJBQWlCLENBQUMsSUFBSSxZQUMzQixZQUFZLFFBR2hCO3dCQUNKLGtDQUFrQyxFQUFFLHVCQUF1Qjt3QkFDM0QsNENBQTRDLEVBQUUsb0JBQW9CO3FCQUNuRTs7QUFzUUgsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IEtleVZhbHVlLCBLZXlWYWx1ZVBpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgY29udGVudENoaWxkLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICB2aWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgU2lnbmFsLCBUcmFja0J5RnVuY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0TW9kdWxlLCBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgV2F0dENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NoZWNrYm94JztcbmltcG9ydCB7IHdhdHRGb3JtYXREYXRlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IElXYXR0VGFibGVEYXRhU291cmNlLCBXYXR0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi93YXR0LXRhYmxlLWRhdGEtc291cmNlJztcbmltcG9ydCB7IGFuaW1hdGVFeHBhbmRhYmxlQ2VsbHMgfSBmcm9tICcuL3dhdHQtdGFibGUtZXhwYW5kLWFuaW1hdGlvbic7XG5cbi8qKiBDbGFzcyBuYW1lIGZvciBleHBhbmRhYmxlIGNlbGxzLiAqL1xuZXhwb3J0IGNvbnN0IEVYUEFOREFCTEVfQ0xBU1MgPSAnd2F0dC10YWJsZS1jZWxsLS1leHBhbmRhYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBXYXR0VGFibGVDb2x1bW48VD4ge1xuICAvKipcbiAgICogVGhlIGRhdGEgdGhhdCB0aGlzIGNvbHVtbiBzaG91bGQgYmUgYm91bmQgdG8sIGVpdGhlciBhcyBhIHByb3BlcnR5IG9mIGBUYFxuICAgKiBvciBkZXJpdmVkIGZyb20gZWFjaCByb3cgb2YgYFRgIHVzaW5nIGFuIGFjY2Vzc29yIGZ1bmN0aW9uLiAgVXNlIGBudWxsYFxuICAgKiBmb3IgY29sdW1ucyB0aGF0IHNob3VsZCBub3QgYmUgYXNzb2NpYXRlZCB3aXRoIGRhdGEsIGJ1dCBub3RlIHRoYXQgdGhpc1xuICAgKiB3aWxsIGRpc2FibGUgc29ydGluZyBhbmQgYXV0b21hdGljIGNlbGwgcG9wdWxhdGlvbi5cbiAgICovXG4gIGFjY2Vzc29yOiBrZXlvZiBUIHwgKChyb3c6IFQpID0+IHVua25vd24pIHwgbnVsbDtcblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgaGVhZGVyIHRleHQgdG8gYSBzdGF0aWMgZGlzcGxheSB2YWx1ZS4gVGhpcyB3aWxsIHByZXZlbnRcbiAgICogdGhlIGByZXNvbHZlSGVhZGVyYCBpbnB1dCBmdW5jdGlvbiBmcm9tIGJlaW5nIGNhbGxlZCBmb3IgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBjZWxsIGNvbnRlbnQgd2hlbiBub3QgdXNpbmcgdGVtcGxhdGUuIEJ5IGRlZmF1bHQsXG4gICAqIGNlbGwgY29udGVudCBpcyBmb3VuZCB1c2luZyB0aGUgYGFjY2Vzc29yYCAodW5sZXNzIGl0IGlzIGBudWxsYCkuXG4gICAqL1xuICBjZWxsPzogKHJvdzogVCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAqIHVubGVzcyBgYWNjZXNzb3JgIGlzIGBudWxsYC5cbiAgICovXG4gIHNvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbHVtbiBzaXplIHVzaW5nIGdyaWQgc2l6aW5nIHZhbHVlcy4gRGVmYXVsdHMgdG8gYFwiYXV0b1wiYC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogQWNjZXB0cyBhbGwgb2YgdGhlIENTUyBncmlkIHRyYWNrIHNpemUga2V5d29yZHMgKHN1Y2ggYXMgYG1pbi1jb250ZW50YCxcbiAgICogYG1heC1jb250ZW50YCwgYG1pbm1heCgpYCkgYXMgd2VsbCBhcyBmcmFjdGlvbmFsIChgZnJgKSwgcGVyY2VudGFnZSAoYCVgKVxuICAgKiBhbmQgbGVuZ3RoIChgcHhgLCBgZW1gLCBldGMpIHVuaXRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jdHJhY2stc2l6ZXNcbiAgICovXG4gIHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvcml6b250YWxseSBhbGlnbiB0aGUgY29udGVudHMgb2YgdGhlIGNvbHVtbi4gRGVmYXVsdHMgdG8gYFwibGVmdFwiYC5cbiAgICovXG4gIGFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgaWNvbiB3aWxsIGJlIHNob3duIGluIHRoZSBoZWFkZXIgY2VsbCwgd2l0aCBhbiBjbGljayBldmVudC5cbiAgICovXG4gIGhlbHBlckFjdGlvbj86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgaGVhZGVyIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGhlYWRlckNlbGxDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBkYXRhIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGRhdGFDZWxsQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZm9vdGVyPzogV2F0dFRhYmxlQ29sdW1uRm9vdGVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBjb2x1bW4gcmVtYWlucyB2aXNpYmxlIHdoZW4gaG9yaXpvbnRhbGx5IHNjcm9sbGluZy5cbiAgICovXG4gIHN0aWNreUVuZD86IFNpZ25hbDxib29sZWFuPjtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBjZWxsIGlzIHJlcGxhY2VkIHdpdGggYW4gZXhwYW5kYWJsZSBhcnJvdyBhbmQgdGhlIGNvbnRlbnQgaXMgZGVmZXJyZWQuXG4gICAqIENsaWNraW5nIG9uIHRoZSBhcnJvdyByZXZlYWxzIHRoZSBjb250ZW50IGJlbG93IHRoZSBjdXJyZW50IHJvdy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gcHJvdmlkZSBhIGN1c3RvbSBgdHJhY2tCeWAgZnVuY3Rpb24gd2hlbiB1c2luZyBgZXhwYW5kYWJsZWAsXG4gICAqIG90aGVyd2lzZSBhbmltYXRpb25zIGNhbiBiZSBpbmFjY3VyYXRlIHdoZW4gZGF0YSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgZXhwYW5kYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvb2x0aXAgdGV4dCB0byBzaG93IG9uIGhvdmVyIG9mIHRoZSBoZWFkZXIgY2VsbC5cbiAgICovXG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGZvb3RlciBjZWxsIG9mIGEgY29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhdHRUYWJsZUNvbHVtbkZvb3RlciB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgZm9vdGVyIGNlbGwuXG4gICAqL1xuICB2YWx1ZT86IFNpZ25hbDxzdHJpbmcgfCBudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGZvb3RlciBjZWxsLlxuICAgKi9cbiAgY2xhc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVjb3JkIGZvciBkZWZpbmluZyBjb2x1bW5zIHdpdGgga2V5cyB1c2VkIGFzIGNvbHVtbiBpZGVudGlmaWVycy5cbiAqL1xuZXhwb3J0IHR5cGUgV2F0dFRhYmxlQ29sdW1uRGVmPFQ+ID0gUmVjb3JkPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+PjtcblxuLy8gVXNlZCBmb3Igc3Ryb25nbHkgdHlwaW5nIHRoZSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZVxuaW50ZXJmYWNlIFdhdHRUYWJsZUNlbGxDb250ZXh0PFQ+IHtcbiAgJGltcGxpY2l0OiBUO1xufVxuXG5pbnRlcmZhY2UgV2F0dFRhYmxlVG9vbGJhckNvbnRleHQ8VD4ge1xuICAkaW1wbGljaXQ6IFQ7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVDZWxsXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVDZWxsQ29udGV4dDxUPj4pO1xuXG4gIC8qKlxuICAgKiBUaGUgV2F0dFRhYmxlQ29sdW1uIHRoaXMgdGVtcGxhdGUgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGNvbHVtbiA9IGlucHV0LnJlcXVpcmVkPFdhdHRUYWJsZUNvbHVtbjxUPj4oeyBhbGlhczogJ3dhdHRUYWJsZUNlbGwnIH0pO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBoZWFkZXIgdGV4dCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4odW5kZWZpbmVkLCB7IGFsaWFzOiAnd2F0dFRhYmxlQ2VsbEhlYWRlcicgfSk7XG5cbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oXG4gICAgX2RpcmVjdGl2ZTogV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZTxUPixcbiAgICBjb250ZXh0OiB1bmtub3duXG4gICk6IGNvbnRleHQgaXMgV2F0dFRhYmxlQ2VsbENvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVUb29sYmFyXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVUb29sYmFyQ29udGV4dDxUW10+Pik7XG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFQ+KFxuICAgIF9kaXJlY3RpdmU6IFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBjb250ZXh0IGlzIFdhdHRUYWJsZVRvb2xiYXJDb250ZXh0PFRbXT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVXNhZ2U6XG4gKiBgaW1wb3J0IHsgV0FUVF9UQUJMRSB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L3RhYmxlJztgXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIFdhdHRJY29uQ29tcG9uZW50LFxuICAgIFdhdHRDaGVja2JveENvbXBvbmVudCxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICd3YXR0LXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLndhdHQtdGFibGUtdmFyaWFudC16ZWJyYV0nOiAndmFyaWFudCgpID09PSBcInplYnJhXCInLFxuICAgICdbc3R5bGUuLS13YXR0LXRhYmxlLWdyaWQtdGVtcGxhdGUtY29sdW1uc10nOiAnc2l6aW5nKCkuam9pbihcIiBcIiknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0VGFibGVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICogVGhlIHRhYmxlJ3Mgc291cmNlIG9mIGRhdGEuIFByb3BlcnR5IHNob3VsZCBub3QgYmUgY2hhbmdlZCBhZnRlclxuICAgKiBpbml0aWFsaXphdGlvbiwgaW5zdGVhZCB1cGRhdGUgdGhlIGRhdGEgb24gdGhlIGluc3RhbmNlIGl0c2VsZi5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxJV2F0dFRhYmxlRGF0YVNvdXJjZTxUPj4oKTtcblxuICAvKipcbiAgICogQ29sdW1uIGRlZmluaXRpb24gcmVjb3JkIHdpdGgga2V5cyByZXByZXNlbnRpbmcgdGhlIGNvbHVtbiBpZGVudGlmaWVyc1xuICAgKiBhbmQgdmFsdWVzIGJlaW5nIHRoZSBjb2x1bW4gY29uZmlndXJhdGlvbi4gVGhlIG9yZGVyIG9mIHRoZSBjb2x1bW5zXG4gICAqIGlzIGRldGVybWluZWQgYnkgdGhlIHByb3BlcnR5IG9yZGVyLCBidXQgY2FuIGJlIG92ZXJydWxlZCBieSB0aGVcbiAgICogYGRpc3BsYXllZENvbHVtbnNgIGlucHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29sdW1ucyA9IGlucHV0PFdhdHRUYWJsZUNvbHVtbkRlZjxUPj4oe30pO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBoaWRpbmcgb3IgcmVvcmRlcmluZyBjb2x1bW5zIGRlZmluZWQgaW4gdGhlIGBjb2x1bW5zYCBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBpbnB1dDxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogVXNlZCBmb3IgZGlzYWJsaW5nIHRoZSB0YWJsZS4gVGhpcyB3aWxsIGRpc2FibGUgYWxsIHVzZXIgaW50ZXJhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgZGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGZvciB2aXN1YWxseSBpbXBhaXJlZCB1c2Vycy5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQoJycpO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgdGFibGUgd2lsbCBzaG93IGEgbG9hZGluZyBpbmRpY2F0b3JcbiAgICogd2hlbiB0aGVyZSBpcyBubyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGluZyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogSWYgdHJ1ZSB0aGUgZm9vdGVyIHdpbGwgYmUgc3RpY2t5XG4gICAqL1xuICByZWFkb25seSBzdGlja3lGb290ZXIgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBoZWFkZXIgdGV4dCBmb3IgY29sdW1ucyB0aGF0XG4gICAqIGRvIG5vdCBoYXZlIGEgc3RhdGljIGhlYWRlciB0ZXh0IHNldCBpbiB0aGUgY29sdW1uIGRlZmluaXRpb24uXG4gICAqIFVzZWZ1bCBmb3IgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBvZiBjb2x1bW4gaGVhZGVycy5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVIZWFkZXIgPSBpbnB1dDwoa2V5OiBzdHJpbmcpID0+IHN0cmluZz4oKTtcblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgY29sdW1uIHRoYXQgc2hvdWxkIGJlIHNvcnRlZCBpbml0aWFsbHkuXG4gICAqL1xuICByZWFkb25seSBzb3J0QnkgPSBpbnB1dCgnJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IGRpcmVjdGlvbiBvZiB0aGUgaW5pdGlhbGx5IHNvcnRlZCBjb2x1bW4uXG4gICAqL1xuICByZWFkb25seSBzb3J0RGlyZWN0aW9uID0gaW5wdXQ8U29ydERpcmVjdGlvbj4oJycpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNsZWFyIHRoZSBzb3J0LiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzb3J0Q2xlYXIgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFibGUgc2hvdWxkIGluY2x1ZGUgYSBjaGVja2JveCBjb2x1bW4gZm9yIHJvdyBzZWxlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RhYmxlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByb3dzLiBPbmx5IGFwcGxpY2FibGUgd2hlbiBzZWxlY3RhYmxlIGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IG1vZGVsPFRbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHJvdyBob3ZlciBoaWdobGlnaHQuXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0ID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHJvdy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZVJvdyA9IGlucHV0PFQ+KCk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0d28gcm93cyBhcmUgZXF1YWwuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBkZXRlcm1pbmluZyB0aGUgYWN0aXZlIHJvdyBpcyB0byBjb21wYXJlXG4gICAqIHRoZSB0d28gcm93IG9iamVjdHMgdXNpbmcgc3RyaWN0IGVxdWFsaXR5IGNoZWNrLiBUaGlzIGlzIHN1ZmZpY2llbnRcbiAgICogYXMgbG9uZyBhcyB0aGUgaW5zdGFuY2VzIHJlbWFpbiB0aGUgc2FtZSwgd2hpY2ggbWF5IG5vdCBiZSB0aGUgY2FzZVxuICAgKiBpZiByb3cgZGF0YSBpcyByZWNyZWF0ZWQgb3IgcmVidWlsdCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICByZWFkb25seSBhY3RpdmVSb3dDb21wYXJhdG9yID0gaW5wdXQ8KGN1cnJlbnRSb3c6IFQsIGFjdGl2ZVJvdzogVCkgPT4gYm9vbGVhbj4oKTtcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbHVtbiBoZWFkZXJzIHdpbGwgbm90IGJlIHNob3duLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBoaWRlQ29sdW1uSGVhZGVycyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQ2hvb3NlIGZyb20gYSBwcmVkZWZpbmVkIHNldCBvZiBkaXNwbGF5IHZhcmlhbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PCd6ZWJyYSc+KCk7XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHJvd3MgdGhhdCBhcmUgY3VycmVudGx5IGV4cGFuZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBtb2RlbDxUW10+KFtdKTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZnVuY3Rpb24gZm9yIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHJvd3MuXG4gICAqL1xuICByZWFkb25seSB0cmFja0J5ID0gaW5wdXQ8VHJhY2tCeUZ1bmN0aW9uPFQ+IHwga2V5b2YgVD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBUaGUgYG9ic2VydmVkYCBib29sZWFuIGZyb20gdGhlIGBTdWJqZWN0YCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhIHJvdyBpc1xuICAgKiBjbGlja2FibGUgb3Igbm90LiBUaGlzIGlzIGF2YWlsYWJsZSBvbiBgRXZlbnRFbWl0dGVyYCwgYnV0IG5vdCBvbiBgb3V0cHV0YCxcbiAgICogd2hpY2ggaXMgd2h5IHRoaXMgd29ya2Fyb3VuZCBpcyB1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJvd0NsaWNrJCA9IG5ldyBTdWJqZWN0PFQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW5ldmVyIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqL1xuICByZWFkb25seSByb3dDbGljayA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMucm93Q2xpY2skKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGFjdGl2ZSBzb3J0IG9yIHNvcnQgZGlyZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0PigpO1xuXG4gIC8vIFF1ZXJpZXNcbiAgcHJvdGVjdGVkIGNlbGxzID0gY29udGVudENoaWxkcmVuKFdhdHRUYWJsZUNlbGxEaXJlY3RpdmU8VD4pO1xuICBwcm90ZWN0ZWQgdG9vbGJhciA9IGNvbnRlbnRDaGlsZChXYXR0VGFibGVUb29sYmFyRGlyZWN0aXZlPFQ+KTtcbiAgcHJvdGVjdGVkIHNvcnQgPSB2aWV3Q2hpbGQoTWF0U29ydCk7XG5cbiAgLy8gRW5hYmxlcyBhbmltYXRpb24gZm9yIGV4cGFuZGluZy9jb2xsYXBzaW5nIGNlbGxzXG4gIHByb3RlY3RlZCB0YWJsZUNlbGxFbGVtZW50cyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oJ3RkJyk7XG4gIHByb3RlY3RlZCBhbmltYXRpb25FZmZlY3QgPSBhbmltYXRlRXhwYW5kYWJsZUNlbGxzKHRoaXMudGFibGVDZWxsRWxlbWVudHMsIHRoaXMuZXhwYW5kZWQpO1xuXG4gIC8vIFNlbGVjdGFibGVcbiAgcHJvdGVjdGVkIGZpbHRlclNlbGVjdGlvbkJ5ID0gKHJvd3M6IFRbXSkgPT4gcm93cy5maWx0ZXIoKHJvdykgPT4gdGhpcy5zZWxlY3Rpb24oKS5pbmNsdWRlcyhyb3cpKTtcbiAgcHJvdGVjdGVkIGdldFNlbGVjdGlvblN0YXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YTtcbiAgICBjb25zdCBmaWx0ZXJlZFNlbGVjdGlvbiA9IHRoaXMuZmlsdGVyU2VsZWN0aW9uQnkoZmlsdGVyZWREYXRhKTtcbiAgICBpZiAoIWZpbHRlcmVkU2VsZWN0aW9uLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBmaWx0ZXJlZFNlbGVjdGlvbi5sZW5ndGggPT09IHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YS5sZW5ndGggPyB0cnVlIDogbnVsbDtcbiAgfTtcblxuICAvLyBVbmlxdWUgbmFtZXMgZm9yIHNwZWNpYWwgY29sdW1uc1xuICBwcm90ZWN0ZWQgY2hlY2tib3hDb2x1bW4gPSAnX19jaGVja2JveENvbHVtbl9fJztcbiAgcHJvdGVjdGVkIGV4cGFuZGFibGVDb2x1bW4gPSAnX19leHBhbmRhYmxlQ29sdW1uX18nO1xuXG4gIHByb3RlY3RlZCBoYXNGb290ZXIgPSBjb21wdXRlZCgoKSA9PiBPYmplY3QudmFsdWVzKHRoaXMuY29sdW1ucygpKS5zb21lKChjKSA9PiBjLmZvb3RlcikpO1xuICBwcm90ZWN0ZWQgaXNFeHBhbmRhYmxlID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LnZhbHVlcyh0aGlzLmNvbHVtbnMoKSkuc29tZSgoYykgPT4gYy5leHBhbmRhYmxlKSk7XG4gIHByb3RlY3RlZCByZW5kZXJlZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucygpID8/IE9iamVjdC5rZXlzKHRoaXMuY29sdW1ucygpKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uKHRoaXMuc2VsZWN0YWJsZSgpID8gW3RoaXMuY2hlY2tib3hDb2x1bW5dIDogW10pLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIoKGtleSkgPT4gIXRoaXMuY29sdW1ucygpW2tleV0uZXhwYW5kYWJsZSksXG4gICAgICAuLi4odGhpcy5pc0V4cGFuZGFibGUoKSA/IFt0aGlzLmV4cGFuZGFibGVDb2x1bW5dIDogW10pLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIoKGtleSkgPT4gdGhpcy5jb2x1bW5zKClba2V5XS5leHBhbmRhYmxlKSxcbiAgICBdO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgc2l6aW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMoKTtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlZENvbHVtbnMoKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiAhY29sdW1uc1trZXldPy5leHBhbmRhYmxlKVxuICAgICAgLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSB0aGlzLmNoZWNrYm94Q29sdW1uOlxuICAgICAgICAgICAgcmV0dXJuICd2YXIoLS13YXR0LXNwYWNlLXhsKSc7XG4gICAgICAgICAgY2FzZSB0aGlzLmV4cGFuZGFibGVDb2x1bW46XG4gICAgICAgICAgICByZXR1cm4gJ21pbi1jb250ZW50JztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbnNba2V5XT8uc2l6ZSA/PyAnYXV0byc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9KTtcblxuICAvKiogVHJ5IHRvIGdldCBjZWxsIGRhdGEgZm9yIGEgc3BlY2lmaWMgYGNvbHVtbmAgYW5kIGByb3dgLiAqL1xuICBwcml2YXRlIGdldENlbGxEYXRhID0gKGNvbHVtbjogV2F0dFRhYmxlQ29sdW1uPFQ+LCByb3c6IFQpID0+IHtcbiAgICBpZiAoY29sdW1uLmNlbGwpIHJldHVybiBjb2x1bW4uY2VsbChyb3cpO1xuICAgIHJldHVybiAhY29sdW1uLmFjY2Vzc29yXG4gICAgICA/ICcnXG4gICAgICA6IHR5cGVvZiBjb2x1bW4uYWNjZXNzb3IgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjb2x1bW4uYWNjZXNzb3Iocm93KVxuICAgICAgICA6IHJvd1tjb2x1bW4uYWNjZXNzb3JdO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5UZW1wbGF0ZSA9IChjb2x1bW46IFdhdHRUYWJsZUNvbHVtbjxUPikgPT5cbiAgICB0aGlzLmNlbGxzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4oKSA9PT0gY29sdW1uKT8udGVtcGxhdGVSZWY7XG5cbiAgcHJvdGVjdGVkIGdldENvbHVtbkhlYWRlciA9IChjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+PikgPT4ge1xuICAgIGlmICh0eXBlb2YgY29sdW1uLnZhbHVlLmhlYWRlciA9PT0gJ3N0cmluZycpIHJldHVybiBjb2x1bW4udmFsdWUuaGVhZGVyO1xuICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGxzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4oKSA9PT0gY29sdW1uLnZhbHVlKTtcbiAgICByZXR1cm4gY2VsbD8uaGVhZGVyKCkgPz8gdGhpcy5yZXNvbHZlSGVhZGVyKCk/Lihjb2x1bW4ua2V5KSA/PyBjb2x1bW4ua2V5O1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5DZWxsID0gKGNvbHVtbjogV2F0dFRhYmxlQ29sdW1uPFQ+LCByb3c6IFQpID0+IHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5nZXRDZWxsRGF0YShjb2x1bW4sIHJvdyk7XG4gICAgaWYgKGNlbGwgPT09IHVuZGVmaW5lZCB8fCBjZWxsID09PSBudWxsKSByZXR1cm4gJ+KAlCc7XG4gICAgaWYgKGNlbGwgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gd2F0dEZvcm1hdERhdGUoY2VsbCk7XG4gICAgcmV0dXJuIGNlbGw7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGdldFJvd0tleSA9IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IHtcbiAgICBjb25zdCB0cmFja0J5ID0gdGhpcy50cmFja0J5KCk7XG4gICAgaWYgKHR5cGVvZiB0cmFja0J5ID09PSAnc3RyaW5nJykgcmV0dXJuIHJvd1t0cmFja0J5XTtcbiAgICBpZiAodHlwZW9mIHRyYWNrQnkgPT09ICdmdW5jdGlvbicpIHJldHVybiB0cmFja0J5KGluZGV4LCByb3cpO1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UoKS5kYXRhLmluZGV4T2Yocm93KTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgaXNBY3RpdmVSb3cgPSAocm93OiBUKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlUm93ID0gdGhpcy5hY3RpdmVSb3coKTtcbiAgICBjb25zdCBhY3RpdmVSb3dDb21wYXJhdG9yID0gdGhpcy5hY3RpdmVSb3dDb21wYXJhdG9yKCk7XG4gICAgaWYgKCFhY3RpdmVSb3cpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYWN0aXZlUm93Q29tcGFyYXRvciA/IGFjdGl2ZVJvd0NvbXBhcmF0b3Iocm93LCBhY3RpdmVSb3cpIDogcm93ID09PSBhY3RpdmVSb3c7XG4gIH07XG5cbiAgcHJvdGVjdGVkIG9uUm93Q2xpY2sgPSAocm93OiBUKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LnRvU3RyaW5nKCkgIT09ICcnKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWQudXBkYXRlKChyb3dzKSA9PlxuICAgICAgICByb3dzLmluY2x1ZGVzKHJvdykgPyByb3dzLmZpbHRlcigocikgPT4gciAhPSByb3cpIDogWy4uLnJvd3MsIHJvd11cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dDbGljayQubmV4dChyb3cpO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgICBkYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQoKTtcbiAgICAgIGlmICghKGRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXYXR0VGFibGVEYXRhU291cmNlKSkgcmV0dXJuO1xuICAgICAgZGF0YVNvdXJjZS5zb3J0aW5nRGF0YUFjY2Vzc29yID0gKHJvdzogVCwgc29ydEhlYWRlcklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zKClbc29ydEhlYWRlcklkXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldENlbGxEYXRhKGNvbHVtbiwgcm93KTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpOyAvLyBjYXNlIGluc2Vuc2l0aXZlIHNvcnRpbmdcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIG51bWJlcjtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24uXG4gICAqL1xuICBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHRoaXMuc2VsZWN0aW9uLnNldChbXSk7XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHNlbGVjdGlvbiBvZiBhIHJvdy5cbiAgICovXG4gIHRvZ2dsZVNlbGVjdGlvbiA9IChyb3c6IFQpID0+XG4gICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlKChzKSA9PiAocy5pbmNsdWRlcyhyb3cpID8gcy5maWx0ZXIoKHIpID0+IHIgIT09IHJvdykgOiBzLmNvbmNhdChyb3cpKSk7XG59XG5cbmV4cG9ydCBjb25zdCBXQVRUX1RBQkxFID0gW1dhdHRUYWJsZUNvbXBvbmVudCwgV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZSwgV2F0dFRhYmxlVG9vbGJhckRpcmVjdGl2ZV07XG4iLCI8IS0tXG5AbGljZW5zZVxuQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbi0tPlxuPHRhYmxlXG4gIG1hdC10YWJsZVxuICBtYXRTb3J0XG4gIHJvbGU9XCJ0cmVlZ3JpZFwiXG4gIFtuZ0NsYXNzXT1cInsgJ3dhdHQtdGFibGUtaGFzLXNlbGVjdGlvbic6IGdldFNlbGVjdGlvblN0YXRlKCkgIT09IGZhbHNlIH1cIlxuICBbbWF0U29ydEFjdGl2ZV09XCJzb3J0QnkoKVwiXG4gIFttYXRTb3J0RGlyZWN0aW9uXT1cInNvcnREaXJlY3Rpb24oKVwiXG4gIFttYXRTb3J0RGlzYWJsZUNsZWFyXT1cIiFzb3J0Q2xlYXIoKVwiXG4gIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2UoKVwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiZGVzY3JpcHRpb24oKVwiXG4gIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbj5cbiAgQGlmIChzZWxlY3RhYmxlKCkpIHtcbiAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY2hlY2tib3hDb2x1bW5cIiBbc3RpY2t5XT1cInRydWVcIj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJ3YXR0LXRhYmxlLWNoZWNrYm94LWNlbGxcIj5cbiAgICAgICAgPHdhdHQtY2hlY2tib3hcbiAgICAgICAgICBbbmdNb2RlbF09XCJnZXRTZWxlY3Rpb25TdGF0ZSgpXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24uc2V0KGRhdGFTb3VyY2UoKS5maWx0ZXJlZERhdGEpIDogY2xlYXJTZWxlY3Rpb24oKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3RoPlxuICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIGNsYXNzPVwid2F0dC10YWJsZS1jaGVja2JveC1jZWxsXCI+XG4gICAgICAgIDx3YXR0LWNoZWNrYm94XG4gICAgICAgICAgW25nTW9kZWxdPVwic2VsZWN0aW9uKCkuaW5jbHVkZXMocm93KVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uKHJvdylcIlxuICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAvPlxuICAgICAgPC90ZD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxuXG4gIDxuZy1jb250YWluZXIgW21hdENvbHVtbkRlZl09XCJleHBhbmRhYmxlQ29sdW1uXCI+XG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj48L3RoPlxuICAgIDx0ZFxuICAgICAgI3RkXG4gICAgICBtYXQtY2VsbFxuICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICBbYXR0ci5kYXRhLWtleV09XCJnZXRSb3dLZXkoaW5kZXgsIHJvdylcIlxuICAgICAgW2F0dHIuZGF0YS1yb3ctaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgKGNsaWNrKT1cIm9uUm93Q2xpY2socm93KVwiXG4gICAgICBbY2xhc3Mud2F0dC10YWJsZS1jZWxsLS1leHBhbmRlZF09XCJleHBhbmRlZCgpLmluY2x1ZGVzKHJvdylcIlxuICAgID5cbiAgICAgIDx3YXR0LWljb24gbmFtZT1cInJpZ2h0XCIgc2l6ZT1cInhzXCIgLz5cbiAgICA8L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpIHwga2V5dmFsdWU7IHRyYWNrIGNvbHVtbi5rZXkpIHtcbiAgICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiY29sdW1uLmtleVwiIFtzdGlja3lFbmRdPVwiY29sdW1uLnZhbHVlLnN0aWNreUVuZD8uKClcIj5cbiAgICAgIDx0aFxuICAgICAgICBtYXQtaGVhZGVyLWNlbGxcbiAgICAgICAgKm1hdEhlYWRlckNlbGxEZWZcbiAgICAgICAgW2NsYXNzLndhdHQtdGFibGUtY2VsbC0tZXhwYW5kYWJsZV09XCJjb2x1bW4udmFsdWUuZXhwYW5kYWJsZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC10YWJsZS1hbGlnbi17eyBjb2x1bW4udmFsdWUuYWxpZ24gPz8gJ2xlZnQnIH19IHt7XG4gICAgICAgICAgY29sdW1uLnZhbHVlLmhlYWRlckNlbGxDbGFzc1xuICAgICAgICB9fVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoY29sdW1uLnZhbHVlLmhlbHBlckFjdGlvbjsgYXMgYWN0aW9uKSB7XG4gICAgICAgICAgPHdhdHQtaWNvbiBuYW1lPVwiaGVscFwiIChjbGljayk9XCJhY3Rpb24oKVwiIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ3YXR0LXRhYmxlLWhlYWRlci1jZWxsXCJcbiAgICAgICAgICBtYXQtc29ydC1oZWFkZXJcbiAgICAgICAgICBbYXJyb3dQb3NpdGlvbl09XCJjb2x1bW4udmFsdWUuYWxpZ24gPT09ICdyaWdodCcgPyAnYmVmb3JlJyA6ICdhZnRlcidcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29sdW1uLnZhbHVlLmFjY2Vzc29yIHx8IGNvbHVtbi52YWx1ZS5zb3J0ID09PSBmYWxzZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDb2x1bW5IZWFkZXIoY29sdW1uKSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChjb2x1bW4udmFsdWUudG9vbHRpcDsgYXMgdG9vbHRpcCkge1xuICAgICAgICAgIDx3YXR0LWljb24gW3RpdGxlXT1cInRvb2x0aXBcIiBuYW1lPVwiaW5mb1wiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvdGg+XG5cbiAgICAgIDx0ZFxuICAgICAgICAjdGRcbiAgICAgICAgbWF0LWNlbGxcbiAgICAgICAgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgICAgIFthdHRyLmRhdGEta2V5XT1cImdldFJvd0tleShpbmRleCwgcm93KVwiXG4gICAgICAgIFthdHRyLmRhdGEtcm93LWluZGV4XT1cImluZGV4XCJcbiAgICAgICAgW2NsYXNzLndhdHQtdGFibGUtY2VsbC0tZXhwYW5kZWRdPVwiZXhwYW5kZWQoKS5pbmNsdWRlcyhyb3cpXCJcbiAgICAgICAgW2NsYXNzLndhdHQtdGFibGUtY2VsbC0tZXhwYW5kYWJsZV09XCJjb2x1bW4udmFsdWUuZXhwYW5kYWJsZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC10YWJsZS1hbGlnbi17eyBjb2x1bW4udmFsdWUuYWxpZ24gPz8gJ2xlZnQnIH19IHt7IGNvbHVtbi52YWx1ZS5kYXRhQ2VsbENsYXNzIH19XCJcbiAgICAgICAgKGNsaWNrKT1cIiFjb2x1bW4udmFsdWUuZXhwYW5kYWJsZSAmJiBvblJvd0NsaWNrKHJvdylcIlxuICAgICAgPlxuICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgQGRlZmVyICh3aGVuICFjb2x1bW4udmFsdWUuZXhwYW5kYWJsZSB8fCBleHBhbmRlZCgpLmluY2x1ZGVzKHJvdykpIHtcbiAgICAgICAgICAgIEBpZiAoZ2V0Q29sdW1uVGVtcGxhdGUoY29sdW1uLnZhbHVlKTsgYXMgdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhdHQtdGFibGUtY2VsbC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICB7eyBnZXRDb2x1bW5DZWxsKGNvbHVtbi52YWx1ZSwgcm93KSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGlmIChnZXRDb2x1bW5UZW1wbGF0ZShjb2x1bW4udmFsdWUpOyBhcyB0ZW1wbGF0ZSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhdHQtdGFibGUtY2VsbC13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgZ2V0Q29sdW1uQ2VsbChjb2x1bW4udmFsdWUsIHJvdykgfX1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvdGQ+XG5cbiAgICAgIEBpZiAoaGFzRm9vdGVyKCkpIHtcbiAgICAgICAgPHRkXG4gICAgICAgICAgbWF0LWZvb3Rlci1jZWxsXG4gICAgICAgICAgKm1hdEZvb3RlckNlbGxEZWZcbiAgICAgICAgICBjbGFzcz1cInt7IGNvbHVtbi52YWx1ZS5mb290ZXI/LmNsYXNzIH19IHdhdHQtdGFibGUtYWxpZ24te3tcbiAgICAgICAgICAgIGNvbHVtbi52YWx1ZS5hbGlnbiA/PyAnbGVmdCdcbiAgICAgICAgICB9fSBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgY29sdW1uLnZhbHVlLmZvb3Rlcj8udmFsdWU/LigpIH19XG4gICAgICAgIDwvdGQ+XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cblxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNwYWNlclwiPlxuICAgIDx0ZCBjbGFzcz1cIndhdHQtdGFibGUtZm9vdGVyLXNwYWNlclwiIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICBAaWYgKCFoaWRlQ29sdW1uSGVhZGVycygpKSB7XG4gICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJyZW5kZXJlZENvbHVtbnMoKVwiPjwvdHI+XG4gIH1cbiAgPHRyXG4gICAgbWF0LXJvd1xuICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiByZW5kZXJlZENvbHVtbnMoKVwiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJyb3cgPT09IGFjdGl2ZVJvdygpXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnd2F0dC10YWJsZS1oaWdobGlnaHQtcm93JzogIWRpc2FibGVkKCkgJiYgIXN1cHByZXNzUm93SG92ZXJIaWdobGlnaHQoKSxcbiAgICAgICd3YXR0LXRhYmxlLWNsaWNrYWJsZS1yb3cnOiAhZGlzYWJsZWQoKSAmJiByb3dDbGljayQub2JzZXJ2ZWQsXG4gICAgICAnd2F0dC10YWJsZS1hY3RpdmUtcm93JzogaXNBY3RpdmVSb3cocm93KSxcbiAgICAgICd3YXR0LXRhYmxlLW5vLWVuZC1kaXZpZGVyJzogaGlkZUNvbHVtbkhlYWRlcnMoKSxcbiAgICB9XCJcbiAgPjwvdHI+XG5cbiAgQGlmICh0b29sYmFyKCkpIHtcbiAgICA8dHIgbWF0LWZvb3Rlci1yb3cgKm1hdEZvb3RlclJvd0RlZj1cIlsnc3BhY2VyJ11cIj48L3RyPlxuICB9XG5cbiAgQGlmIChoYXNGb290ZXIoKSkge1xuICAgIDx0clxuICAgICAgbWF0LWZvb3Rlci1yb3dcbiAgICAgIFtjbGFzcy53YXR0LXRhYmxlLWhpZGUtZm9vdGVyXT1cImxvYWRpbmcoKSB8fCBkYXRhU291cmNlKCkuZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiXG4gICAgICAqbWF0Rm9vdGVyUm93RGVmPVwicmVuZGVyZWRDb2x1bW5zKCk7IHN0aWNreTogc3RpY2t5Rm9vdGVyKClcIlxuICAgID48L3RyPlxuICB9XG5cbiAgPG5nLWNvbnRhaW5lciAqbWF0Tm9EYXRhUm93PlxuICAgIEBpZiAobG9hZGluZygpKSB7XG4gICAgICBAZm9yIChpIG9mIFsxLCAyLCAzXTsgdHJhY2sgaSkge1xuICAgICAgICA8dHIgY2xhc3M9XCJtYXQtbWRjLXJvd1wiPlxuICAgICAgICAgIEBmb3IgKF8gb2YgcmVuZGVyZWRDb2x1bW5zKCk7IHRyYWNrIF87IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtbWRjLWNlbGxcIiBbY2xhc3Mud2F0dC10YWJsZS1sb2FkaW5nLWNlbGxdPVwiaSA+IDAgfHwgIXNlbGVjdGFibGUoKVwiPjwvdGQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L3RyPlxuICAgICAgfVxuICAgIH1cbiAgPC9uZy1jb250YWluZXI+XG48L3RhYmxlPlxuXG5AaWYgKHRvb2xiYXIoKTsgYXMgdG9vbGJhcikge1xuICA8ZGl2IGNsYXNzPVwid2F0dC10YWJsZS10b29sYmFyXCIgcm9sZT1cInRvb2xiYXJcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0b29sYmFyLnRlbXBsYXRlUmVmO1xuICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogZmlsdGVyU2VsZWN0aW9uQnkoZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YSkgfVxuICAgICAgXCJcbiAgICAvPlxuICA8L2Rpdj5cbn1cbiJdfQ==
324
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3dhdHQvcGFja2FnZS90YWJsZS93YXR0LXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RhYmxlL3dhdHQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCO0FBQ2pCOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQVksWUFBWSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxTQUFTLEVBQ1QsUUFBUSxFQUNSLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFFTixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUF3QixtQkFBbUIsRUFBRSxNQUFN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Z2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IEtleVZhbHVlLCBLZXlWYWx1ZVBpcGUsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgY29udGVudENoaWxkLFxuICBjb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbiAgb3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICB2aWV3Q2hpbGRyZW4sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgU2lnbmFsLCBUcmFja0J5RnVuY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG91dHB1dEZyb21PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTb3J0LCBNYXRTb3J0TW9kdWxlLCBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc29ydCc7XG5pbXBvcnQgeyBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgV2F0dENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NoZWNrYm94JztcbmltcG9ydCB7IHdhdHRGb3JtYXREYXRlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcbmltcG9ydCB7IElXYXR0VGFibGVEYXRhU291cmNlLCBXYXR0VGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi93YXR0LXRhYmxlLWRhdGEtc291cmNlJztcbmltcG9ydCB7IGFuaW1hdGVFeHBhbmRhYmxlQ2VsbHMgfSBmcm9tICcuL3dhdHQtdGFibGUtZXhwYW5kLWFuaW1hdGlvbic7XG5cbi8qKiBDbGFzcyBuYW1lIGZvciBleHBhbmRhYmxlIGNlbGxzLiAqL1xuZXhwb3J0IGNvbnN0IEVYUEFOREFCTEVfQ0xBU1MgPSAnd2F0dC10YWJsZS1jZWxsLS1leHBhbmRhYmxlJztcblxuZXhwb3J0IGludGVyZmFjZSBXYXR0VGFibGVDb2x1bW48VD4ge1xuICAvKipcbiAgICogVGhlIGRhdGEgdGhhdCB0aGlzIGNvbHVtbiBzaG91bGQgYmUgYm91bmQgdG8sIGVpdGhlciBhcyBhIHByb3BlcnR5IG9mIGBUYFxuICAgKiBvciBkZXJpdmVkIGZyb20gZWFjaCByb3cgb2YgYFRgIHVzaW5nIGFuIGFjY2Vzc29yIGZ1bmN0aW9uLiAgVXNlIGBudWxsYFxuICAgKiBmb3IgY29sdW1ucyB0aGF0IHNob3VsZCBub3QgYmUgYXNzb2NpYXRlZCB3aXRoIGRhdGEsIGJ1dCBub3RlIHRoYXQgdGhpc1xuICAgKiB3aWxsIGRpc2FibGUgc29ydGluZyBhbmQgYXV0b21hdGljIGNlbGwgcG9wdWxhdGlvbi5cbiAgICovXG4gIGFjY2Vzc29yOiBrZXlvZiBUIHwgKChyb3c6IFQpID0+IHVua25vd24pIHwgbnVsbDtcblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgaGVhZGVyIHRleHQgdG8gYSBzdGF0aWMgZGlzcGxheSB2YWx1ZS4gVGhpcyB3aWxsIHByZXZlbnRcbiAgICogdGhlIGByZXNvbHZlSGVhZGVyYCBpbnB1dCBmdW5jdGlvbiBmcm9tIGJlaW5nIGNhbGxlZCBmb3IgdGhpcyBjb2x1bW4uXG4gICAqL1xuICBoZWFkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBjZWxsIGNvbnRlbnQgd2hlbiBub3QgdXNpbmcgdGVtcGxhdGUuIEJ5IGRlZmF1bHQsXG4gICAqIGNlbGwgY29udGVudCBpcyBmb3VuZCB1c2luZyB0aGUgYGFjY2Vzc29yYCAodW5sZXNzIGl0IGlzIGBudWxsYCkuXG4gICAqL1xuICBjZWxsPzogKHJvdzogVCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgb3IgZGlzYWJsZSBzb3J0aW5nIGZvciB0aGlzIGNvbHVtbi4gRGVmYXVsdHMgdG8gYHRydWVgXG4gICAqIHVubGVzcyBgYWNjZXNzb3JgIGlzIGBudWxsYC5cbiAgICovXG4gIHNvcnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNvbHVtbiBzaXplIHVzaW5nIGdyaWQgc2l6aW5nIHZhbHVlcy4gRGVmYXVsdHMgdG8gYFwiYXV0b1wiYC5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogQWNjZXB0cyBhbGwgb2YgdGhlIENTUyBncmlkIHRyYWNrIHNpemUga2V5d29yZHMgKHN1Y2ggYXMgYG1pbi1jb250ZW50YCxcbiAgICogYG1heC1jb250ZW50YCwgYG1pbm1heCgpYCkgYXMgd2VsbCBhcyBmcmFjdGlvbmFsIChgZnJgKSwgcGVyY2VudGFnZSAoYCVgKVxuICAgKiBhbmQgbGVuZ3RoIChgcHhgLCBgZW1gLCBldGMpIHVuaXRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jdHJhY2stc2l6ZXNcbiAgICovXG4gIHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvcml6b250YWxseSBhbGlnbiB0aGUgY29udGVudHMgb2YgdGhlIGNvbHVtbi4gRGVmYXVsdHMgdG8gYFwibGVmdFwiYC5cbiAgICovXG4gIGFsaWduPzogJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInO1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgaWNvbiB3aWxsIGJlIHNob3duIGluIHRoZSBoZWFkZXIgY2VsbCwgd2l0aCBhbiBjbGljayBldmVudC5cbiAgICovXG4gIGhlbHBlckFjdGlvbj86ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENTUyBjbGFzcyB0byBhcHBseSB0byB0aGUgaGVhZGVyIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGhlYWRlckNlbGxDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBkYXRhIGNlbGwgZWxlbWVudC5cbiAgICovXG4gIGRhdGFDZWxsQ2xhc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZvb3RlciBjb25maWd1cmF0aW9uIGZvciB0aGUgY29sdW1uLlxuICAgKi9cbiAgZm9vdGVyPzogV2F0dFRhYmxlQ29sdW1uRm9vdGVyO1xuXG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIHRoZSBjb2x1bW4gcmVtYWlucyB2aXNpYmxlIHdoZW4gaG9yaXpvbnRhbGx5IHNjcm9sbGluZy5cbiAgICovXG4gIHN0aWNreUVuZD86IFNpZ25hbDxib29sZWFuPjtcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIHRoZSBjZWxsIGlzIHJlcGxhY2VkIHdpdGggYW4gZXhwYW5kYWJsZSBhcnJvdyBhbmQgdGhlIGNvbnRlbnQgaXMgZGVmZXJyZWQuXG4gICAqIENsaWNraW5nIG9uIHRoZSBhcnJvdyByZXZlYWxzIHRoZSBjb250ZW50IGJlbG93IHRoZSBjdXJyZW50IHJvdy5cbiAgICpcbiAgICogQHJlbWFya3NcbiAgICogSXQgaXMgcmVjb21tZW5kZWQgdG8gcHJvdmlkZSBhIGN1c3RvbSBgdHJhY2tCeWAgZnVuY3Rpb24gd2hlbiB1c2luZyBgZXhwYW5kYWJsZWAsXG4gICAqIG90aGVyd2lzZSBhbmltYXRpb25zIGNhbiBiZSBpbmFjY3VyYXRlIHdoZW4gZGF0YSBpcyBjaGFuZ2VkLlxuICAgKi9cbiAgZXhwYW5kYWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRvb2x0aXAgdGV4dCB0byBzaG93IG9uIGhvdmVyIG9mIHRoZSBoZWFkZXIgY2VsbC5cbiAgICovXG4gIHRvb2x0aXA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGZvb3RlciBjZWxsIG9mIGEgY29sdW1uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdhdHRUYWJsZUNvbHVtbkZvb3RlciB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgZm9vdGVyIGNlbGwuXG4gICAqL1xuICB2YWx1ZT86IFNpZ25hbDxzdHJpbmcgfCBudW1iZXI+O1xuXG4gIC8qKlxuICAgKiBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGZvb3RlciBjZWxsLlxuICAgKi9cbiAgY2xhc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVjb3JkIGZvciBkZWZpbmluZyBjb2x1bW5zIHdpdGgga2V5cyB1c2VkIGFzIGNvbHVtbiBpZGVudGlmaWVycy5cbiAqL1xuZXhwb3J0IHR5cGUgV2F0dFRhYmxlQ29sdW1uRGVmPFQ+ID0gUmVjb3JkPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+PjtcblxuLy8gVXNlZCBmb3Igc3Ryb25nbHkgdHlwaW5nIHRoZSBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZVxuaW50ZXJmYWNlIFdhdHRUYWJsZUNlbGxDb250ZXh0PFQ+IHtcbiAgJGltcGxpY2l0OiBUO1xufVxuXG5pbnRlcmZhY2UgV2F0dFRhYmxlVG9vbGJhckNvbnRleHQ8VD4ge1xuICAkaW1wbGljaXQ6IFQ7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVDZWxsXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVDZWxsQ29udGV4dDxUPj4pO1xuXG4gIC8qKlxuICAgKiBUaGUgV2F0dFRhYmxlQ29sdW1uIHRoaXMgdGVtcGxhdGUgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IGNvbHVtbiA9IGlucHV0LnJlcXVpcmVkPFdhdHRUYWJsZUNvbHVtbjxUPj4oeyBhbGlhczogJ3dhdHRUYWJsZUNlbGwnIH0pO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBoZWFkZXIgdGV4dCBmb3IgdGhlIGNvbHVtbi5cbiAgICovXG4gIHJlYWRvbmx5IGhlYWRlciA9IGlucHV0PHN0cmluZz4odW5kZWZpbmVkLCB7IGFsaWFzOiAnd2F0dFRhYmxlQ2VsbEhlYWRlcicgfSk7XG5cbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oXG4gICAgX2RpcmVjdGl2ZTogV2F0dFRhYmxlQ2VsbERpcmVjdGl2ZTxUPixcbiAgICBjb250ZXh0OiB1bmtub3duXG4gICk6IGNvbnRleHQgaXMgV2F0dFRhYmxlQ2VsbENvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXR0VGFibGVUb29sYmFyXScsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4ge1xuICB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxXYXR0VGFibGVUb29sYmFyQ29udGV4dDxUW10+Pik7XG4gIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkPFQ+KFxuICAgIF9kaXJlY3RpdmU6IFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmU8VD4sXG4gICAgY29udGV4dDogdW5rbm93blxuICApOiBjb250ZXh0IGlzIFdhdHRUYWJsZVRvb2xiYXJDb250ZXh0PFRbXT4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVXNhZ2U6XG4gKiBgaW1wb3J0IHsgV0FUVF9UQUJMRSB9IGZyb20gJ0BlbmVyZ2luZXQtZGF0YWh1Yi93YXR0L3RhYmxlJztgXG4gKi9cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIFdhdHRJY29uQ29tcG9uZW50LFxuICAgIFdhdHRDaGVja2JveENvbXBvbmVudCxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICd3YXR0LXRhYmxlJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2F0dC10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vd2F0dC10YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLndhdHQtdGFibGUtdmFyaWFudC16ZWJyYV0nOiAndmFyaWFudCgpID09PSBcInplYnJhXCInLFxuICAgICdbc3R5bGUuLS13YXR0LXRhYmxlLWdyaWQtdGVtcGxhdGUtY29sdW1uc10nOiAnc2l6aW5nKCkuam9pbihcIiBcIiknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBXYXR0VGFibGVDb21wb25lbnQ8VD4ge1xuICAvKipcbiAgICogVGhlIHRhYmxlJ3Mgc291cmNlIG9mIGRhdGEuIFByb3BlcnR5IHNob3VsZCBub3QgYmUgY2hhbmdlZCBhZnRlclxuICAgKiBpbml0aWFsaXphdGlvbiwgaW5zdGVhZCB1cGRhdGUgdGhlIGRhdGEgb24gdGhlIGluc3RhbmNlIGl0c2VsZi5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFTb3VyY2UgPSBpbnB1dC5yZXF1aXJlZDxJV2F0dFRhYmxlRGF0YVNvdXJjZTxUPj4oKTtcblxuICAvKipcbiAgICogQ29sdW1uIGRlZmluaXRpb24gcmVjb3JkIHdpdGgga2V5cyByZXByZXNlbnRpbmcgdGhlIGNvbHVtbiBpZGVudGlmaWVyc1xuICAgKiBhbmQgdmFsdWVzIGJlaW5nIHRoZSBjb2x1bW4gY29uZmlndXJhdGlvbi4gVGhlIG9yZGVyIG9mIHRoZSBjb2x1bW5zXG4gICAqIGlzIGRldGVybWluZWQgYnkgdGhlIHByb3BlcnR5IG9yZGVyLCBidXQgY2FuIGJlIG92ZXJydWxlZCBieSB0aGVcbiAgICogYGRpc3BsYXllZENvbHVtbnNgIGlucHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgY29sdW1ucyA9IGlucHV0PFdhdHRUYWJsZUNvbHVtbkRlZjxUPj4oe30pO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBoaWRpbmcgb3IgcmVvcmRlcmluZyBjb2x1bW5zIGRlZmluZWQgaW4gdGhlIGBjb2x1bW5zYCBpbnB1dC5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXllZENvbHVtbnMgPSBpbnB1dDxzdHJpbmdbXT4oKTtcblxuICAvKipcbiAgICogVXNlZCBmb3IgZGlzYWJsaW5nIHRoZSB0YWJsZS4gVGhpcyB3aWxsIGRpc2FibGUgYWxsIHVzZXIgaW50ZXJhY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgZGVzY3JpcHRpb24gb2YgdGhlIHRhYmxlIGZvciB2aXN1YWxseSBpbXBhaXJlZCB1c2Vycy5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQoJycpO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gYHRydWVgLCB0aGUgdGFibGUgd2lsbCBzaG93IGEgbG9hZGluZyBpbmRpY2F0b3JcbiAgICogd2hlbiB0aGVyZSBpcyBubyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGluZyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogSWYgdHJ1ZSB0aGUgZm9vdGVyIHdpbGwgYmUgc3RpY2t5XG4gICAqL1xuICByZWFkb25seSBzdGlja3lGb290ZXIgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciBkZXRlcm1pbmluZyBoZWFkZXIgdGV4dCBmb3IgY29sdW1ucyB0aGF0XG4gICAqIGRvIG5vdCBoYXZlIGEgc3RhdGljIGhlYWRlciB0ZXh0IHNldCBpbiB0aGUgY29sdW1uIGRlZmluaXRpb24uXG4gICAqIFVzZWZ1bCBmb3IgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBvZiBjb2x1bW4gaGVhZGVycy5cbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdmVIZWFkZXIgPSBpbnB1dDwoa2V5OiBzdHJpbmcpID0+IHN0cmluZz4oKTtcblxuICAvKipcbiAgICogSWRlbnRpZmllciBmb3IgY29sdW1uIHRoYXQgc2hvdWxkIGJlIHNvcnRlZCBpbml0aWFsbHkuXG4gICAqL1xuICByZWFkb25seSBzb3J0QnkgPSBpbnB1dCgnJyk7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3J0IGRpcmVjdGlvbiBvZiB0aGUgaW5pdGlhbGx5IHNvcnRlZCBjb2x1bW4uXG4gICAqL1xuICByZWFkb25seSBzb3J0RGlyZWN0aW9uID0gaW5wdXQ8U29ydERpcmVjdGlvbj4oJycpO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IHRoZSB1c2VyIHRvIGNsZWFyIHRoZSBzb3J0LiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzb3J0Q2xlYXIgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgdGFibGUgc2hvdWxkIGluY2x1ZGUgYSBjaGVja2JveCBjb2x1bW4gZm9yIHJvdyBzZWxlY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzZWxlY3RhYmxlID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCByb3dzLiBPbmx5IGFwcGxpY2FibGUgd2hlbiBzZWxlY3RhYmxlIGlzIGB0cnVlYC5cbiAgICovXG4gIHJlYWRvbmx5IHNlbGVjdGlvbiA9IG1vZGVsPFRbXT4oW10pO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIHJvdyBob3ZlciBoaWdobGlnaHQuXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0ID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBIaWdobGlnaHRzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHJvdy5cbiAgICovXG4gIHJlYWRvbmx5IGFjdGl2ZVJvdyA9IGlucHV0PFQ+KCk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0d28gcm93cyBhcmUgZXF1YWwuXG4gICAqXG4gICAqIEByZW1hcmtzXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBkZXRlcm1pbmluZyB0aGUgYWN0aXZlIHJvdyBpcyB0byBjb21wYXJlXG4gICAqIHRoZSB0d28gcm93IG9iamVjdHMgdXNpbmcgc3RyaWN0IGVxdWFsaXR5IGNoZWNrLiBUaGlzIGlzIHN1ZmZpY2llbnRcbiAgICogYXMgbG9uZyBhcyB0aGUgaW5zdGFuY2VzIHJlbWFpbiB0aGUgc2FtZSwgd2hpY2ggbWF5IG5vdCBiZSB0aGUgY2FzZVxuICAgKiBpZiByb3cgZGF0YSBpcyByZWNyZWF0ZWQgb3IgcmVidWlsdCBmcm9tIHNlcmlhbGl6YXRpb24uXG4gICAqL1xuICByZWFkb25seSBhY3RpdmVSb3dDb21wYXJhdG9yID0gaW5wdXQ8KGN1cnJlbnRSb3c6IFQsIGFjdGl2ZVJvdzogVCkgPT4gYm9vbGVhbj4oKTtcblxuICAvKipcbiAgICogSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGNvbHVtbiBoZWFkZXJzIHdpbGwgbm90IGJlIHNob3duLiBEZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAqL1xuICByZWFkb25seSBoaWRlQ29sdW1uSGVhZGVycyA9IGlucHV0KGZhbHNlKTtcblxuICAvKipcbiAgICogQ2hvb3NlIGZyb20gYSBwcmVkZWZpbmVkIHNldCBvZiBkaXNwbGF5IHZhcmlhbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdmFyaWFudCA9IGlucHV0PCd6ZWJyYSc+KCk7XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIHJvd3MgdGhhdCBhcmUgY3VycmVudGx5IGV4cGFuZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXhwYW5kZWQgPSBtb2RlbDxUW10+KFtdKTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZnVuY3Rpb24gZm9yIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIHJvd3MuXG4gICAqL1xuICByZWFkb25seSB0cmFja0J5ID0gaW5wdXQ8VHJhY2tCeUZ1bmN0aW9uPFQ+IHwga2V5b2YgVD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKiBUaGUgYG9ic2VydmVkYCBib29sZWFuIGZyb20gdGhlIGBTdWJqZWN0YCBpcyB1c2VkIHRvIGRldGVybWluZSBpZiBhIHJvdyBpc1xuICAgKiBjbGlja2FibGUgb3Igbm90LiBUaGlzIGlzIGF2YWlsYWJsZSBvbiBgRXZlbnRFbWl0dGVyYCwgYnV0IG5vdCBvbiBgb3V0cHV0YCxcbiAgICogd2hpY2ggaXMgd2h5IHRoaXMgd29ya2Fyb3VuZCBpcyB1c2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJvd0NsaWNrJCA9IG5ldyBTdWJqZWN0PFQ+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHdoZW5ldmVyIGEgcm93IGlzIGNsaWNrZWQuXG4gICAqL1xuICByZWFkb25seSByb3dDbGljayA9IG91dHB1dEZyb21PYnNlcnZhYmxlKHRoaXMucm93Q2xpY2skKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgdGhlIGFjdGl2ZSBzb3J0IG9yIHNvcnQgZGlyZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgc29ydENoYW5nZSA9IG91dHB1dDxTb3J0PigpO1xuXG4gIC8vIFF1ZXJpZXNcbiAgcHJvdGVjdGVkIGNlbGxzID0gY29udGVudENoaWxkcmVuKFdhdHRUYWJsZUNlbGxEaXJlY3RpdmU8VD4pO1xuICBwcm90ZWN0ZWQgdG9vbGJhciA9IGNvbnRlbnRDaGlsZChXYXR0VGFibGVUb29sYmFyRGlyZWN0aXZlPFQ+KTtcbiAgcHJvdGVjdGVkIHNvcnQgPSB2aWV3Q2hpbGQoTWF0U29ydCk7XG5cbiAgLy8gRW5hYmxlcyBhbmltYXRpb24gZm9yIGV4cGFuZGluZy9jb2xsYXBzaW5nIGNlbGxzXG4gIHByb3RlY3RlZCB0YWJsZUNlbGxFbGVtZW50cyA9IHZpZXdDaGlsZHJlbjxFbGVtZW50UmVmPEhUTUxUYWJsZUNlbGxFbGVtZW50Pj4oJ3RkJyk7XG4gIHByb3RlY3RlZCBhbmltYXRpb25FZmZlY3QgPSBhbmltYXRlRXhwYW5kYWJsZUNlbGxzKHRoaXMudGFibGVDZWxsRWxlbWVudHMsIHRoaXMuZXhwYW5kZWQpO1xuXG4gIC8vIFNlbGVjdGFibGVcbiAgcHJvdGVjdGVkIGZpbHRlclNlbGVjdGlvbkJ5ID0gKHJvd3M6IFRbXSkgPT4gcm93cy5maWx0ZXIoKHJvdykgPT4gdGhpcy5zZWxlY3Rpb24oKS5pbmNsdWRlcyhyb3cpKTtcbiAgcHJvdGVjdGVkIGdldFNlbGVjdGlvblN0YXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YTtcbiAgICBjb25zdCBmaWx0ZXJlZFNlbGVjdGlvbiA9IHRoaXMuZmlsdGVyU2VsZWN0aW9uQnkoZmlsdGVyZWREYXRhKTtcbiAgICBpZiAoIWZpbHRlcmVkU2VsZWN0aW9uLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiBmaWx0ZXJlZFNlbGVjdGlvbi5sZW5ndGggPT09IHRoaXMuZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YS5sZW5ndGggPyB0cnVlIDogbnVsbDtcbiAgfTtcblxuICAvLyBVbmlxdWUgbmFtZXMgZm9yIHNwZWNpYWwgY29sdW1uc1xuICBwcm90ZWN0ZWQgY2hlY2tib3hDb2x1bW4gPSAnX19jaGVja2JveENvbHVtbl9fJztcbiAgcHJvdGVjdGVkIGV4cGFuZGFibGVDb2x1bW4gPSAnX19leHBhbmRhYmxlQ29sdW1uX18nO1xuXG4gIHByb3RlY3RlZCBoYXNGb290ZXIgPSBjb21wdXRlZCgoKSA9PiBPYmplY3QudmFsdWVzKHRoaXMuY29sdW1ucygpKS5zb21lKChjKSA9PiBjLmZvb3RlcikpO1xuICBwcm90ZWN0ZWQgaXNFeHBhbmRhYmxlID0gY29tcHV0ZWQoKCkgPT4gT2JqZWN0LnZhbHVlcyh0aGlzLmNvbHVtbnMoKSkuc29tZSgoYykgPT4gYy5leHBhbmRhYmxlKSk7XG4gIHByb3RlY3RlZCByZW5kZXJlZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZGlzcGxheWVkQ29sdW1ucygpID8/IE9iamVjdC5rZXlzKHRoaXMuY29sdW1ucygpKTtcbiAgICByZXR1cm4gW1xuICAgICAgLi4uKHRoaXMuc2VsZWN0YWJsZSgpID8gW3RoaXMuY2hlY2tib3hDb2x1bW5dIDogW10pLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIoKGtleSkgPT4gIXRoaXMuY29sdW1ucygpW2tleV0uZXhwYW5kYWJsZSksXG4gICAgICAuLi4odGhpcy5pc0V4cGFuZGFibGUoKSA/IFt0aGlzLmV4cGFuZGFibGVDb2x1bW5dIDogW10pLFxuICAgICAgLi4uY29sdW1ucy5maWx0ZXIoKGtleSkgPT4gdGhpcy5jb2x1bW5zKClba2V5XS5leHBhbmRhYmxlKSxcbiAgICBdO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgc2l6aW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMoKTtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlZENvbHVtbnMoKVxuICAgICAgLmZpbHRlcigoa2V5KSA9PiAhY29sdW1uc1trZXldPy5leHBhbmRhYmxlKVxuICAgICAgLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSB0aGlzLmNoZWNrYm94Q29sdW1uOlxuICAgICAgICAgICAgcmV0dXJuICd2YXIoLS13YXR0LXNwYWNlLXhsKSc7XG4gICAgICAgICAgY2FzZSB0aGlzLmV4cGFuZGFibGVDb2x1bW46XG4gICAgICAgICAgICByZXR1cm4gJ21pbi1jb250ZW50JztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbnNba2V5XT8uc2l6ZSA/PyAnYXV0byc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9KTtcblxuICAvKiogVHJ5IHRvIGdldCBjZWxsIGRhdGEgZm9yIGEgc3BlY2lmaWMgYGNvbHVtbmAgYW5kIGByb3dgLiAqL1xuICBwcml2YXRlIGdldENlbGxEYXRhID0gKGNvbHVtbjogV2F0dFRhYmxlQ29sdW1uPFQ+LCByb3c6IFQpID0+IHtcbiAgICBpZiAoY29sdW1uLmNlbGwpIHJldHVybiBjb2x1bW4uY2VsbChyb3cpO1xuICAgIHJldHVybiAhY29sdW1uLmFjY2Vzc29yXG4gICAgICA/ICcnXG4gICAgICA6IHR5cGVvZiBjb2x1bW4uYWNjZXNzb3IgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjb2x1bW4uYWNjZXNzb3Iocm93KVxuICAgICAgICA6IHJvd1tjb2x1bW4uYWNjZXNzb3JdO1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5UZW1wbGF0ZSA9IChjb2x1bW46IFdhdHRUYWJsZUNvbHVtbjxUPikgPT5cbiAgICB0aGlzLmNlbGxzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4oKSA9PT0gY29sdW1uKT8udGVtcGxhdGVSZWY7XG5cbiAgcHJvdGVjdGVkIGdldENvbHVtbkhlYWRlciA9IChjb2x1bW46IEtleVZhbHVlPHN0cmluZywgV2F0dFRhYmxlQ29sdW1uPFQ+PikgPT4ge1xuICAgIGlmICh0eXBlb2YgY29sdW1uLnZhbHVlLmhlYWRlciA9PT0gJ3N0cmluZycpIHJldHVybiBjb2x1bW4udmFsdWUuaGVhZGVyO1xuICAgIGNvbnN0IGNlbGwgPSB0aGlzLmNlbGxzKCkuZmluZCgoaXRlbSkgPT4gaXRlbS5jb2x1bW4oKSA9PT0gY29sdW1uLnZhbHVlKTtcbiAgICByZXR1cm4gY2VsbD8uaGVhZGVyKCkgPz8gdGhpcy5yZXNvbHZlSGVhZGVyKCk/Lihjb2x1bW4ua2V5KSA/PyBjb2x1bW4ua2V5O1xuICB9O1xuXG4gIHByb3RlY3RlZCBnZXRDb2x1bW5DZWxsID0gKGNvbHVtbjogV2F0dFRhYmxlQ29sdW1uPFQ+LCByb3c6IFQpID0+IHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5nZXRDZWxsRGF0YShjb2x1bW4sIHJvdyk7XG4gICAgaWYgKGNlbGwgPT09IHVuZGVmaW5lZCB8fCBjZWxsID09PSBudWxsKSByZXR1cm4gJ+KAlCc7XG4gICAgaWYgKGNlbGwgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gd2F0dEZvcm1hdERhdGUoY2VsbCk7XG4gICAgcmV0dXJuIGNlbGw7XG4gIH07XG5cbiAgcHJvdGVjdGVkIGdldFJvd0tleSA9IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IHtcbiAgICBjb25zdCB0cmFja0J5ID0gdGhpcy50cmFja0J5KCk7XG4gICAgaWYgKHR5cGVvZiB0cmFja0J5ID09PSAnc3RyaW5nJykgcmV0dXJuIHJvd1t0cmFja0J5XTtcbiAgICBpZiAodHlwZW9mIHRyYWNrQnkgPT09ICdmdW5jdGlvbicpIHJldHVybiB0cmFja0J5KGluZGV4LCByb3cpO1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UoKS5kYXRhLmluZGV4T2Yocm93KTtcbiAgfTtcblxuICBwcm90ZWN0ZWQgaXNBY3RpdmVSb3cgPSAocm93OiBUKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlUm93ID0gdGhpcy5hY3RpdmVSb3coKTtcbiAgICBjb25zdCBhY3RpdmVSb3dDb21wYXJhdG9yID0gdGhpcy5hY3RpdmVSb3dDb21wYXJhdG9yKCk7XG4gICAgaWYgKCFhY3RpdmVSb3cpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYWN0aXZlUm93Q29tcGFyYXRvciA/IGFjdGl2ZVJvd0NvbXBhcmF0b3Iocm93LCBhY3RpdmVSb3cpIDogcm93ID09PSBhY3RpdmVSb3c7XG4gIH07XG5cbiAgcHJvdGVjdGVkIG9uUm93Q2xpY2sgPSAocm93OiBUKSA9PiB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQoKSB8fCB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LnRvU3RyaW5nKCkgIT09ICcnKSByZXR1cm47XG4gICAgaWYgKHRoaXMuaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWQudXBkYXRlKChyb3dzKSA9PlxuICAgICAgICByb3dzLmluY2x1ZGVzKHJvdykgPyByb3dzLmZpbHRlcigocikgPT4gciAhPSByb3cpIDogWy4uLnJvd3MsIHJvd11cbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3dDbGljayQubmV4dChyb3cpO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgICBkYXRhU291cmNlLnNvcnQgPSB0aGlzLnNvcnQoKTtcbiAgICAgIGlmICghKGRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXYXR0VGFibGVEYXRhU291cmNlKSkgcmV0dXJuO1xuICAgICAgZGF0YVNvdXJjZS5zb3J0aW5nRGF0YUFjY2Vzc29yID0gKHJvdzogVCwgc29ydEhlYWRlcklkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zKClbc29ydEhlYWRlcklkXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldENlbGxEYXRhKGNvbHVtbiwgcm93KTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpOyAvLyBjYXNlIGluc2Vuc2l0aXZlIHNvcnRpbmdcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlLmdldFRpbWUoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIG51bWJlcjtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24sIGVtaXR0aW5nIGBzZWxlY3Rpb25DaGFuZ2VgIGlmIGBzZWxlY3Rpb25gIHdhcyBub3QgZW1wdHkuXG4gICAqL1xuICBjbGVhclNlbGVjdGlvbiA9ICgpID0+IHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgocykgPT4gKCFzLmxlbmd0aCA/IHMgOiBbXSkpO1xuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSBzZWxlY3Rpb24gb2YgYSByb3cuXG4gICAqL1xuICB0b2dnbGVTZWxlY3Rpb24gPSAocm93OiBUKSA9PlxuICAgIHRoaXMuc2VsZWN0aW9uLnVwZGF0ZSgocykgPT4gKHMuaW5jbHVkZXMocm93KSA/IHMuZmlsdGVyKChyKSA9PiByICE9PSByb3cpIDogcy5jb25jYXQocm93KSkpO1xufVxuXG5leHBvcnQgY29uc3QgV0FUVF9UQUJMRSA9IFtXYXR0VGFibGVDb21wb25lbnQsIFdhdHRUYWJsZUNlbGxEaXJlY3RpdmUsIFdhdHRUYWJsZVRvb2xiYXJEaXJlY3RpdmVdO1xuIiwiPCEtLVxuQGxpY2Vuc2VcbkNvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4tLT5cbjx0YWJsZVxuICBtYXQtdGFibGVcbiAgbWF0U29ydFxuICByb2xlPVwidHJlZWdyaWRcIlxuICBbbmdDbGFzc109XCJ7ICd3YXR0LXRhYmxlLWhhcy1zZWxlY3Rpb24nOiBnZXRTZWxlY3Rpb25TdGF0ZSgpICE9PSBmYWxzZSB9XCJcbiAgW21hdFNvcnRBY3RpdmVdPVwic29ydEJ5KClcIlxuICBbbWF0U29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uKClcIlxuICBbbWF0U29ydERpc2FibGVDbGVhcl09XCIhc29ydENsZWFyKClcIlxuICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlKClcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cImRlc2NyaXB0aW9uKClcIlxuICAobWF0U29ydENoYW5nZSk9XCJzb3J0Q2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4+XG4gIEBpZiAoc2VsZWN0YWJsZSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNoZWNrYm94Q29sdW1uXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGNsYXNzPVwid2F0dC10YWJsZS1jaGVja2JveC1jZWxsXCI+XG4gICAgICAgIDx3YXR0LWNoZWNrYm94XG4gICAgICAgICAgW25nTW9kZWxdPVwiZ2V0U2VsZWN0aW9uU3RhdGUoKVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnNldChkYXRhU291cmNlKCkuZmlsdGVyZWREYXRhKSA6IGNsZWFyU2VsZWN0aW9uKClcIlxuICAgICAgICAvPlxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBjbGFzcz1cIndhdHQtdGFibGUtY2hlY2tib3gtY2VsbFwiPlxuICAgICAgICA8d2F0dC1jaGVja2JveFxuICAgICAgICAgIFtuZ01vZGVsXT1cInNlbGVjdGlvbigpLmluY2x1ZGVzKHJvdylcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbihyb3cpXCJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvdGQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIH1cblxuICA8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwiZXhwYW5kYWJsZUNvbHVtblwiPlxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cbiAgICA8dGRcbiAgICAgICN0ZFxuICAgICAgbWF0LWNlbGxcbiAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgW2F0dHIuZGF0YS1rZXldPVwiZ2V0Um93S2V5KGluZGV4LCByb3cpXCJcbiAgICAgIFthdHRyLmRhdGEtcm93LWluZGV4XT1cImluZGV4XCJcbiAgICAgIChjbGljayk9XCJvblJvd0NsaWNrKHJvdylcIlxuICAgICAgW2NsYXNzLndhdHQtdGFibGUtY2VsbC0tZXhwYW5kZWRdPVwiZXhwYW5kZWQoKS5pbmNsdWRlcyhyb3cpXCJcbiAgICA+XG4gICAgICA8d2F0dC1pY29uIG5hbWU9XCJyaWdodFwiIHNpemU9XCJ4c1wiIC8+XG4gICAgPC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgQGZvciAoY29sdW1uIG9mIGNvbHVtbnMoKSB8IGtleXZhbHVlOyB0cmFjayBjb2x1bW4ua2V5KSB7XG4gICAgPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cImNvbHVtbi5rZXlcIiBbc3RpY2t5RW5kXT1cImNvbHVtbi52YWx1ZS5zdGlja3lFbmQ/LigpXCI+XG4gICAgICA8dGhcbiAgICAgICAgbWF0LWhlYWRlci1jZWxsXG4gICAgICAgICptYXRIZWFkZXJDZWxsRGVmXG4gICAgICAgIFtjbGFzcy53YXR0LXRhYmxlLWNlbGwtLWV4cGFuZGFibGVdPVwiY29sdW1uLnZhbHVlLmV4cGFuZGFibGVcIlxuICAgICAgICBjbGFzcz1cIndhdHQtdGFibGUtYWxpZ24te3sgY29sdW1uLnZhbHVlLmFsaWduID8/ICdsZWZ0JyB9fSB7e1xuICAgICAgICAgIGNvbHVtbi52YWx1ZS5oZWFkZXJDZWxsQ2xhc3NcbiAgICAgICAgfX1cIlxuICAgICAgPlxuICAgICAgICBAaWYgKGNvbHVtbi52YWx1ZS5oZWxwZXJBY3Rpb247IGFzIGFjdGlvbikge1xuICAgICAgICAgIDx3YXR0LWljb24gbmFtZT1cImhlbHBcIiAoY2xpY2spPVwiYWN0aW9uKClcIiAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwid2F0dC10YWJsZS1oZWFkZXItY2VsbFwiXG4gICAgICAgICAgbWF0LXNvcnQtaGVhZGVyXG4gICAgICAgICAgW2Fycm93UG9zaXRpb25dPVwiY29sdW1uLnZhbHVlLmFsaWduID09PSAncmlnaHQnID8gJ2JlZm9yZScgOiAnYWZ0ZXInXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWNvbHVtbi52YWx1ZS5hY2Nlc3NvciB8fCBjb2x1bW4udmFsdWUuc29ydCA9PT0gZmFsc2VcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q29sdW1uSGVhZGVyKGNvbHVtbikgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoY29sdW1uLnZhbHVlLnRvb2x0aXA7IGFzIHRvb2x0aXApIHtcbiAgICAgICAgICA8d2F0dC1pY29uIFt0aXRsZV09XCJ0b29sdGlwXCIgbmFtZT1cImluZm9cIiAvPlxuICAgICAgICB9XG4gICAgICA8L3RoPlxuXG4gICAgICA8dGRcbiAgICAgICAgI3RkXG4gICAgICAgIG1hdC1jZWxsXG4gICAgICAgICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICBbYXR0ci5kYXRhLWtleV09XCJnZXRSb3dLZXkoaW5kZXgsIHJvdylcIlxuICAgICAgICBbYXR0ci5kYXRhLXJvdy1pbmRleF09XCJpbmRleFwiXG4gICAgICAgIFtjbGFzcy53YXR0LXRhYmxlLWNlbGwtLWV4cGFuZGVkXT1cImV4cGFuZGVkKCkuaW5jbHVkZXMocm93KVwiXG4gICAgICAgIFtjbGFzcy53YXR0LXRhYmxlLWNlbGwtLWV4cGFuZGFibGVdPVwiY29sdW1uLnZhbHVlLmV4cGFuZGFibGVcIlxuICAgICAgICBjbGFzcz1cIndhdHQtdGFibGUtYWxpZ24te3sgY29sdW1uLnZhbHVlLmFsaWduID8/ICdsZWZ0JyB9fSB7eyBjb2x1bW4udmFsdWUuZGF0YUNlbGxDbGFzcyB9fVwiXG4gICAgICAgIChjbGljayk9XCIhY29sdW1uLnZhbHVlLmV4cGFuZGFibGUgJiYgb25Sb3dDbGljayhyb3cpXCJcbiAgICAgID5cbiAgICAgICAgQGlmIChpc0V4cGFuZGFibGUoKSkge1xuICAgICAgICAgIEBkZWZlciAod2hlbiAhY29sdW1uLnZhbHVlLmV4cGFuZGFibGUgfHwgZXhwYW5kZWQoKS5pbmNsdWRlcyhyb3cpKSB7XG4gICAgICAgICAgICBAaWYgKGdldENvbHVtblRlbXBsYXRlKGNvbHVtbi52YWx1ZSk7IGFzIHRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YXR0LXRhYmxlLWNlbGwtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHJvdyB9XCIgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgZ2V0Q29sdW1uQ2VsbChjb2x1bW4udmFsdWUsIHJvdykgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIEBpZiAoZ2V0Q29sdW1uVGVtcGxhdGUoY29sdW1uLnZhbHVlKTsgYXMgdGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YXR0LXRhYmxlLWNlbGwtd3JhcHBlclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIHt7IGdldENvbHVtbkNlbGwoY29sdW1uLnZhbHVlLCByb3cpIH19XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3RkPlxuXG4gICAgICBAaWYgKGhhc0Zvb3RlcigpKSB7XG4gICAgICAgIDx0ZFxuICAgICAgICAgIG1hdC1mb290ZXItY2VsbFxuICAgICAgICAgICptYXRGb290ZXJDZWxsRGVmXG4gICAgICAgICAgY2xhc3M9XCJ7eyBjb2x1bW4udmFsdWUuZm9vdGVyPy5jbGFzcyB9fSB3YXR0LXRhYmxlLWFsaWduLXt7XG4gICAgICAgICAgICBjb2x1bW4udmFsdWUuYWxpZ24gPz8gJ2xlZnQnXG4gICAgICAgICAgfX0gXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGNvbHVtbi52YWx1ZS5mb290ZXI/LnZhbHVlPy4oKSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgfVxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG5cbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJzcGFjZXJcIj5cbiAgICA8dGQgY2xhc3M9XCJ3YXR0LXRhYmxlLWZvb3Rlci1zcGFjZXJcIiBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgQGlmICghaGlkZUNvbHVtbkhlYWRlcnMoKSkge1xuICAgIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwicmVuZGVyZWRDb2x1bW5zKClcIj48L3RyPlxuICB9XG4gIDx0clxuICAgIG1hdC1yb3dcbiAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogcmVuZGVyZWRDb2x1bW5zKClcIlxuICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwicm93ID09PSBhY3RpdmVSb3coKVwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3dhdHQtdGFibGUtaGlnaGxpZ2h0LXJvdyc6ICFkaXNhYmxlZCgpICYmICFzdXBwcmVzc1Jvd0hvdmVySGlnaGxpZ2h0KCksXG4gICAgICAnd2F0dC10YWJsZS1jbGlja2FibGUtcm93JzogIWRpc2FibGVkKCkgJiYgcm93Q2xpY2skLm9ic2VydmVkLFxuICAgICAgJ3dhdHQtdGFibGUtYWN0aXZlLXJvdyc6IGlzQWN0aXZlUm93KHJvdyksXG4gICAgICAnd2F0dC10YWJsZS1uby1lbmQtZGl2aWRlcic6IGhpZGVDb2x1bW5IZWFkZXJzKCksXG4gICAgfVwiXG4gID48L3RyPlxuXG4gIEBpZiAodG9vbGJhcigpKSB7XG4gICAgPHRyIG1hdC1mb290ZXItcm93ICptYXRGb290ZXJSb3dEZWY9XCJbJ3NwYWNlciddXCI+PC90cj5cbiAgfVxuXG4gIEBpZiAoaGFzRm9vdGVyKCkpIHtcbiAgICA8dHJcbiAgICAgIG1hdC1mb290ZXItcm93XG4gICAgICBbY2xhc3Mud2F0dC10YWJsZS1oaWRlLWZvb3Rlcl09XCJsb2FkaW5nKCkgfHwgZGF0YVNvdXJjZSgpLmZpbHRlcmVkRGF0YS5sZW5ndGggPT09IDBcIlxuICAgICAgKm1hdEZvb3RlclJvd0RlZj1cInJlbmRlcmVkQ29sdW1ucygpOyBzdGlja3k6IHN0aWNreUZvb3RlcigpXCJcbiAgICA+PC90cj5cbiAgfVxuXG4gIDxuZy1jb250YWluZXIgKm1hdE5vRGF0YVJvdz5cbiAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgQGZvciAoaSBvZiBbMSwgMiwgM107IHRyYWNrIGkpIHtcbiAgICAgICAgPHRyIGNsYXNzPVwibWF0LW1kYy1yb3dcIj5cbiAgICAgICAgICBAZm9yIChfIG9mIHJlbmRlcmVkQ29sdW1ucygpOyB0cmFjayBfOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgICAgPHRkIGNsYXNzPVwibWF0LW1kYy1jZWxsXCIgW2NsYXNzLndhdHQtdGFibGUtbG9hZGluZy1jZWxsXT1cImkgPiAwIHx8ICFzZWxlY3RhYmxlKClcIj48L3RkPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90cj5cbiAgICAgIH1cbiAgICB9XG4gIDwvbmctY29udGFpbmVyPlxuPC90YWJsZT5cblxuQGlmICh0b29sYmFyKCk7IGFzIHRvb2xiYXIpIHtcbiAgPGRpdiBjbGFzcz1cIndhdHQtdGFibGUtdG9vbGJhclwiIHJvbGU9XCJ0b29sYmFyXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgdG9vbGJhci50ZW1wbGF0ZVJlZjtcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGZpbHRlclNlbGVjdGlvbkJ5KGRhdGFTb3VyY2UoKS5maWx0ZXJlZERhdGEpIH1cbiAgICAgIFwiXG4gICAgLz5cbiAgPC9kaXY+XG59XG4iXX0=
@@ -16,8 +16,8 @@
16
16
  * limitations under the License.
17
17
  */
18
18
  //#endregion
19
- import { Component, Input, ViewEncapsulation, HostBinding, ElementRef, ViewChild, forwardRef, inject, EventEmitter, Output, } from '@angular/core';
20
- import { FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
19
+ import { Component, ViewEncapsulation, ElementRef, forwardRef, inject, input, output, viewChild, signal, linkedSignal, } from '@angular/core';
20
+ import { NG_VALUE_ACCESSOR, ReactiveFormsModule, } from '@angular/forms';
21
21
  import { MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
22
22
  import { WattFieldComponent } from '@energinet/watt/field';
23
23
  import { WattIconComponent } from '@energinet/watt/icon';
@@ -25,37 +25,37 @@ import * as i0 from "@angular/core";
25
25
  import * as i1 from "@angular/material/autocomplete";
26
26
  import * as i2 from "@angular/forms";
27
27
  export class WattTextFieldComponent {
28
- value;
29
- type = 'text';
30
- placeholder;
31
- label = '';
32
- tooltip;
33
- prefix;
34
- maxLength = null;
35
- formControl;
36
- autocompleteOptions;
37
- autocompleteMatcherFn;
28
+ value = input('', ...(ngDevMode ? [{ debugName: "value" }] : []));
29
+ type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : []));
30
+ placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
31
+ label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
32
+ tooltip = input('', ...(ngDevMode ? [{ debugName: "tooltip" }] : []));
33
+ prefix = input(...(ngDevMode ? [undefined, { debugName: "prefix" }] : []));
34
+ maxLength = input(null, ...(ngDevMode ? [{ debugName: "maxLength" }] : []));
35
+ formControl = input.required(...(ngDevMode ? [{ debugName: "formControl" }] : []));
36
+ autocompleteOptions = input([], ...(ngDevMode ? [{ debugName: "autocompleteOptions" }] : []));
37
+ autocompleteMatcherFn = input(...(ngDevMode ? [undefined, { debugName: "autocompleteMatcherFn" }] : []));
38
38
  /** @ignore */
39
- autocompleteRef;
39
+ autocompleteRef = viewChild.required(MatAutocomplete);
40
40
  /**
41
41
  * Emits the value of the input field when it changes.
42
42
  */
43
- searchChanged = new EventEmitter();
43
+ searchChanged = output();
44
44
  /**
45
45
  * Emits the value of the input field when an autocomplete option is selected.
46
46
  */
47
- autocompleteOptionSelected = new EventEmitter();
47
+ autocompleteOptionSelected = output();
48
48
  /**
49
49
  * Emits the value of the input field when an autocomplete option is selected.
50
50
  */
51
- autocompleteOptionDeselected = new EventEmitter();
51
+ autocompleteOptionDeselected = output();
52
52
  /** @ignore */
53
53
  element = inject(ElementRef);
54
54
  /** @ignore */
55
- inputField;
56
- model;
55
+ inputField = viewChild.required('inputField');
56
+ model = linkedSignal(this.value);
57
57
  /** @ignore */
58
- isDisabled = false;
58
+ isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
59
59
  /** @ignore */
60
60
  onTouchedCallbacks = [];
61
61
  /** @ignore */
@@ -63,32 +63,29 @@ export class WattTextFieldComponent {
63
63
  const attrName = 'data-testid';
64
64
  const testIdAttribute = this.element.nativeElement.getAttribute(attrName);
65
65
  this.element.nativeElement.removeAttribute(attrName);
66
- this.inputField.nativeElement.setAttribute(attrName, testIdAttribute);
66
+ this.inputField().nativeElement.setAttribute(attrName, testIdAttribute);
67
67
  this.registerOnTouched(() => {
68
- const trimmedValue = this.inputField.nativeElement.value.trim();
69
- this.inputField.nativeElement.value = trimmedValue;
70
- this.formControl.setValue(trimmedValue);
68
+ const trimmedValue = this.inputField().nativeElement.value.trim();
69
+ this.inputField().nativeElement.value = trimmedValue;
70
+ this.formControl().setValue(trimmedValue);
71
71
  });
72
72
  }
73
73
  /** @ignore */
74
74
  onChanged(event) {
75
75
  const value = event.target.value;
76
- if (this.autocompleteRef) {
77
- // Reset the autocomplete selection if the value is not matching anymore, and auto-select if the value has a match
78
- this.autocompleteRef.options.forEach((option) => {
79
- const isMatchingOption = this.autocompleteMatcherFn
80
- ? this.autocompleteMatcherFn(value, option.value)
81
- : option.value === value;
82
- if (isMatchingOption) {
83
- option.select(false);
84
- this.autocompleteOptionSelected.emit(option.value);
85
- }
86
- else {
87
- option.deselect(false);
88
- this.autocompleteOptionDeselected.emit();
89
- }
90
- });
91
- }
76
+ // Reset the autocomplete selection if the value is not matching anymore, and auto-select if the value has a match
77
+ this.autocompleteRef().options.forEach((option) => {
78
+ const matcherFn = this.autocompleteMatcherFn();
79
+ const isMatchingOption = matcherFn ? matcherFn(value, option.value) : option.value === value;
80
+ if (isMatchingOption) {
81
+ option.select(false);
82
+ this.autocompleteOptionSelected.emit(option.value);
83
+ }
84
+ else {
85
+ option.deselect(false);
86
+ this.autocompleteOptionDeselected.emit();
87
+ }
88
+ });
92
89
  this.searchChanged.emit(value);
93
90
  this.onChange(value);
94
91
  }
@@ -104,7 +101,7 @@ export class WattTextFieldComponent {
104
101
  };
105
102
  /** @ignore */
106
103
  writeValue(value) {
107
- this.model = value;
104
+ this.model.set(value);
108
105
  }
109
106
  /** @ignore */
110
107
  registerOnChange(fn) {
@@ -116,53 +113,45 @@ export class WattTextFieldComponent {
116
113
  }
117
114
  /** @ignore */
118
115
  setDisabledState(isDisabled) {
119
- this.isDisabled = isDisabled;
116
+ this.isDisabled.set(isDisabled);
120
117
  }
121
118
  /** @ignore */
122
119
  setFocus() {
123
- this.inputField.nativeElement.focus();
120
+ const inputField = this.inputField();
121
+ if (inputField) {
122
+ inputField.nativeElement.focus();
123
+ }
124
124
  }
125
125
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
126
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattTextFieldComponent, isStandalone: true, selector: "watt-text-field", inputs: { value: "value", type: "type", placeholder: "placeholder", label: "label", tooltip: "tooltip", prefix: "prefix", maxLength: "maxLength", formControl: "formControl", autocompleteOptions: "autocompleteOptions", autocompleteMatcherFn: "autocompleteMatcherFn" }, outputs: { searchChanged: "searchChanged", autocompleteOptionSelected: "autocompleteOptionSelected", autocompleteOptionDeselected: "autocompleteOptionDeselected" }, host: { properties: { "attr.watt-field-disabled": "this.isDisabled" } }, providers: [
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: WattTextFieldComponent, isStandalone: true, selector: "watt-text-field", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, formControl: { classPropertyName: "formControl", publicName: "formControl", isSignal: true, isRequired: true, transformFunction: null }, autocompleteOptions: { classPropertyName: "autocompleteOptions", publicName: "autocompleteOptions", isSignal: true, isRequired: false, transformFunction: null }, autocompleteMatcherFn: { classPropertyName: "autocompleteMatcherFn", publicName: "autocompleteMatcherFn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchChanged: "searchChanged", autocompleteOptionSelected: "autocompleteOptionSelected", autocompleteOptionDeselected: "autocompleteOptionDeselected" }, host: { properties: { "attr.watt-field-disabled": "isDisabled()" } }, providers: [
127
127
  {
128
128
  provide: NG_VALUE_ACCESSOR,
129
129
  useExisting: forwardRef(() => WattTextFieldComponent),
130
130
  multi: true,
131
131
  },
132
- ], viewQueries: [{ propertyName: "autocompleteRef", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputField", first: true, predicate: ["inputField"], descendants: true }], ngImport: i0, template: `<watt-field
133
- #wattField
134
- [control]="formControl"
135
- [label]="label"
136
- [tooltip]="tooltip"
137
- matAutocompleteOrigin
138
- >
139
- @if (prefix) {
140
- <watt-icon [name]="prefix" />
141
- }
132
+ ], viewQueries: [{ propertyName: "autocompleteRef", first: true, predicate: MatAutocomplete, descendants: true, isSignal: true }, { propertyName: "inputField", first: true, predicate: ["inputField"], descendants: true, isSignal: true }], ngImport: i0, template: `
133
+ <watt-field
134
+ #wattField
135
+ [control]="formControl()"
136
+ [label]="label()"
137
+ [tooltip]="tooltip()"
138
+ matAutocompleteOrigin
139
+ >
140
+ @if (prefix()) {
141
+ <watt-icon [name]="prefix()" />
142
+ }
142
143
 
143
- @if (!autocompleteOptions) {
144
- <input
145
- [attr.aria-label]="label"
146
- [attr.type]="type"
147
- [attr.placeholder]="placeholder"
148
- [value]="value"
149
- [formControl]="formControl"
150
- (blur)="onTouched()"
151
- (input)="onChanged($event)"
152
- [maxlength]="maxLength"
153
- #inputField
154
- />
155
- } @else {
156
144
  <input
157
- [attr.aria-label]="label"
158
- [attr.type]="type"
159
- [attr.placeholder]="placeholder"
160
- [value]="value"
161
- [formControl]="formControl"
145
+ [attr.aria-label]="label()"
146
+ [attr.type]="type()"
147
+ [attr.placeholder]="placeholder()"
148
+ [value]="model()"
149
+ [formControl]="formControl()"
162
150
  (blur)="onTouched()"
163
151
  (input)="onChanged($event)"
164
- [maxlength]="maxLength"
152
+ [maxlength]="maxLength()"
165
153
  [matAutocomplete]="auto"
154
+ [matAutocompleteDisabled]="!autocompleteOptions()"
166
155
  [matAutocompleteConnectedTo]="{ elementRef: wattField.wrapper() ?? wattField.elementRef }"
167
156
  #inputField
168
157
  />
@@ -172,62 +161,53 @@ export class WattTextFieldComponent {
172
161
  class="watt-autocomplete-panel"
173
162
  (optionSelected)="autocompleteOptionSelected.emit($event.option.value)"
174
163
  >
175
- @for (option of autocompleteOptions; track option) {
164
+ @for (option of autocompleteOptions(); track option) {
176
165
  <mat-option [value]="option">
177
166
  {{ option }}
178
167
  </mat-option>
179
168
  }
180
169
  </mat-autocomplete>
181
- }
182
170
 
183
- <ng-content />
184
- <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
185
- <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
186
- <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
187
- </watt-field>`, isInline: true, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"], dependencies: [{ kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i1.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }], encapsulation: i0.ViewEncapsulation.None });
171
+ <ng-content />
172
+ <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
173
+ <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
174
+ <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
175
+ </watt-field>
176
+ `, isInline: true, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"], dependencies: [{ kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: i1.MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: WattFieldComponent, selector: "watt-field", inputs: ["control", "label", "id", "chipMode", "tooltip", "placeholder", "anchorName"] }, { kind: "component", type: WattIconComponent, selector: "watt-icon", inputs: ["name", "label", "size", "state"] }], encapsulation: i0.ViewEncapsulation.None });
188
177
  }
189
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattTextFieldComponent, decorators: [{
190
179
  type: Component,
191
- args: [{ imports: [MatAutocompleteModule, ReactiveFormsModule, WattFieldComponent, WattIconComponent], selector: 'watt-text-field', encapsulation: ViewEncapsulation.None, providers: [
180
+ args: [{ imports: [MatAutocompleteModule, ReactiveFormsModule, WattFieldComponent, WattIconComponent], selector: 'watt-text-field', encapsulation: ViewEncapsulation.None, host: {
181
+ '[attr.watt-field-disabled]': 'isDisabled()',
182
+ }, providers: [
192
183
  {
193
184
  provide: NG_VALUE_ACCESSOR,
194
185
  useExisting: forwardRef(() => WattTextFieldComponent),
195
186
  multi: true,
196
187
  },
197
- ], template: `<watt-field
198
- #wattField
199
- [control]="formControl"
200
- [label]="label"
201
- [tooltip]="tooltip"
202
- matAutocompleteOrigin
203
- >
204
- @if (prefix) {
205
- <watt-icon [name]="prefix" />
206
- }
188
+ ], template: `
189
+ <watt-field
190
+ #wattField
191
+ [control]="formControl()"
192
+ [label]="label()"
193
+ [tooltip]="tooltip()"
194
+ matAutocompleteOrigin
195
+ >
196
+ @if (prefix()) {
197
+ <watt-icon [name]="prefix()" />
198
+ }
207
199
 
208
- @if (!autocompleteOptions) {
209
- <input
210
- [attr.aria-label]="label"
211
- [attr.type]="type"
212
- [attr.placeholder]="placeholder"
213
- [value]="value"
214
- [formControl]="formControl"
215
- (blur)="onTouched()"
216
- (input)="onChanged($event)"
217
- [maxlength]="maxLength"
218
- #inputField
219
- />
220
- } @else {
221
200
  <input
222
- [attr.aria-label]="label"
223
- [attr.type]="type"
224
- [attr.placeholder]="placeholder"
225
- [value]="value"
226
- [formControl]="formControl"
201
+ [attr.aria-label]="label()"
202
+ [attr.type]="type()"
203
+ [attr.placeholder]="placeholder()"
204
+ [value]="model()"
205
+ [formControl]="formControl()"
227
206
  (blur)="onTouched()"
228
207
  (input)="onChanged($event)"
229
- [maxlength]="maxLength"
208
+ [maxlength]="maxLength()"
230
209
  [matAutocomplete]="auto"
210
+ [matAutocompleteDisabled]="!autocompleteOptions()"
231
211
  [matAutocompleteConnectedTo]="{ elementRef: wattField.wrapper() ?? wattField.elementRef }"
232
212
  #inputField
233
213
  />
@@ -237,53 +217,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
237
217
  class="watt-autocomplete-panel"
238
218
  (optionSelected)="autocompleteOptionSelected.emit($event.option.value)"
239
219
  >
240
- @for (option of autocompleteOptions; track option) {
220
+ @for (option of autocompleteOptions(); track option) {
241
221
  <mat-option [value]="option">
242
222
  {{ option }}
243
223
  </mat-option>
244
224
  }
245
225
  </mat-autocomplete>
246
- }
247
226
 
248
- <ng-content />
249
- <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
250
- <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
251
- <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
252
- </watt-field>`, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"] }]
253
- }], propDecorators: { value: [{
254
- type: Input
255
- }], type: [{
256
- type: Input
257
- }], placeholder: [{
258
- type: Input
259
- }], label: [{
260
- type: Input
261
- }], tooltip: [{
262
- type: Input
263
- }], prefix: [{
264
- type: Input
265
- }], maxLength: [{
266
- type: Input
267
- }], formControl: [{
268
- type: Input
269
- }], autocompleteOptions: [{
270
- type: Input
271
- }], autocompleteMatcherFn: [{
272
- type: Input
273
- }], autocompleteRef: [{
274
- type: ViewChild,
275
- args: [MatAutocomplete]
276
- }], searchChanged: [{
277
- type: Output
278
- }], autocompleteOptionSelected: [{
279
- type: Output
280
- }], autocompleteOptionDeselected: [{
281
- type: Output
282
- }], inputField: [{
283
- type: ViewChild,
284
- args: ['inputField']
285
- }], isDisabled: [{
286
- type: HostBinding,
287
- args: ['attr.watt-field-disabled']
288
- }] } });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RleHQtZmllbGQvd2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBRVYsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBWSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBeUVuRSxNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLEtBQUssQ0FBVTtJQUNmLElBQUksR0FBbUIsTUFBTSxDQUFDO0lBQzlCLFdBQVcsQ0FBVTtJQUNyQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxDQUFVO0lBQ2pCLE1BQU0sQ0FBWTtJQUNsQixTQUFTLEdBQTJCLElBQUksQ0FBQztJQUN6QyxXQUFXLENBQWU7SUFDMUIsbUJBQW1CLENBQVk7SUFDL0IscUJBQXFCLENBQThDO0lBRTVFLGNBQWM7SUFDYyxlQUFlLENBQW1CO0lBRTlEOztPQUVHO0lBQ08sYUFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFckQ7O09BRUc7SUFDTywwQkFBMEIsR0FBRyxJQUFJLFlB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O3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR3NCLGVBQWU7c0JBQTFDLFNBQVM7dUJBQUMsZUFBZTtnQkFLaEIsYUFBYTtzQkFBdEIsTUFBTTtnQkFLRywwQkFBMEI7c0JBQW5DLE1BQU07Z0JBS0csNEJBQTRCO3NCQUFyQyxNQUFNO2dCQU1rQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBS3ZCLFVBQVU7c0JBRFQsV0FBVzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gTGljZW5zZVxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMjAgRW5lcmdpbmV0IERhdGFIdWIgQS9TXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZTJcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuLy8jZW5kcmVnaW9uXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSG9zdEJpbmRpbmcsXG4gIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZCxcbiAgZm9yd2FyZFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgaW5qZWN0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgRm9ybUNvbnRyb2wsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5cbmltcG9ydCB7IFdhdHRGaWVsZENvbXBvbmVudCB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9maWVsZCc7XG5pbXBvcnQgeyBXYXR0SWNvbkNvbXBvbmVudCwgV2F0dEljb24gfSBmcm9tICdAZW5lcmdpbmV0L3dhdHQvaWNvbic7XG5cbmV4cG9ydCB0eXBlIFdhdHRJbnB1dFR5cGVzID0gJ3RleHQnIHwgJ3Bhc3N3b3JkJyB8ICdlbWFpbCcgfCAnbnVtYmVyJyB8ICd0ZWwnIHwgJ3VybCc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbTWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBXYXR0RmllbGRDb21wb25lbnQsIFdhdHRJY29uQ29tcG9uZW50XSxcbiAgc2VsZWN0b3I6ICd3YXR0LXRleHQtZmllbGQnLFxuICBzdHlsZVVybHM6IFsnLi93YXR0LXRleHQtZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBXYXR0VGV4dEZpZWxkQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIHRlbXBsYXRlOiBgPHdhdHQtZmllbGRcbiAgICAjd2F0dEZpZWxkXG4gICAgW2NvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgW3Rvb2x0aXBdPVwidG9vbHRpcFwiXG4gICAgbWF0QXV0b2NvbXBsZXRlT3JpZ2luXG4gID5cbiAgICBAaWYgKHByZWZpeCkge1xuICAgICAgPHdhdHQtaWNvbiBbbmFtZV09XCJwcmVmaXhcIiAvPlxuICAgIH1cblxuICAgIEBpZiAoIWF1dG9jb21wbGV0ZU9wdGlvbnMpIHtcbiAgICAgIDxpbnB1dFxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgW2F0dHIudHlwZV09XCJ0eXBlXCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAoYmx1cik9XCJvblRvdWNoZWQoKVwiXG4gICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgI2lucHV0RmllbGRcbiAgICAgIC8+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbFwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCJcbiAgICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2VkKCRldmVudClcIlxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heExlbmd0aFwiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVDb25uZWN0ZWRUb109XCJ7IGVsZW1lbnRSZWY6IHdhdHRGaWVsZC53cmFwcGVyKCkgPz8gd2F0dEZpZWxkLmVsZW1lbnRSZWYgfVwiXG4gICAgICAgICNpbnB1dEZpZWxkXG4gICAgICAvPlxuXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZVxuICAgICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gICAgICAgIGNsYXNzPVwid2F0dC1hdXRvY29tcGxldGUtcGFuZWxcIlxuICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQuZW1pdCgkZXZlbnQub3B0aW9uLnZhbHVlKVwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKG9wdGlvbiBvZiBhdXRvY29tcGxldGVPcHRpb25zOyB0cmFjayBvcHRpb24pIHtcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICB7eyBvcHRpb24gfX1cbiAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICB9XG5cbiAgICA8bmctY29udGVudCAvPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1kZXNjcmlwdG9yXCIgc2VsZWN0PVwiLmRlc2NyaXB0b3JcIiAvPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1oaW50XCIgc2VsZWN0PVwid2F0dC1maWVsZC1oaW50XCIgLz5cbiAgICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZXJyb3JcIiBzZWxlY3Q9XCJ3YXR0LWZpZWxkLWVycm9yXCIgLz5cbiAgPC93YXR0LWZpZWxkPmAsXG59KVxuZXhwb3J0IGNsYXNzIFdhdHRUZXh0RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlITogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiBXYXR0SW5wdXRUeXBlcyA9ICd0ZXh0JztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHRvb2x0aXA/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZWZpeD86IFdhdHRJY29uO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IHN0cmluZyB8IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBmb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuICBASW5wdXQoKSBhdXRvY29tcGxldGVPcHRpb25zITogc3RyaW5nW107XG4gIEBJbnB1dCgpIGF1dG9jb21wbGV0ZU1hdGNoZXJGbiE6ICh2YWx1ZTogc3RyaW5nLCBvcHRpb246IHN0cmluZykgPT4gYm9vbGVhbjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBAVmlld0NoaWxkKE1hdEF1dG9jb21wbGV0ZSkgYXV0b2NvbXBsZXRlUmVmITogTWF0QXV0b2NvbXBsZXRlO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkIHdoZW4gaXQgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKSBzZWFyY2hDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBhbiBhdXRvY29tcGxldGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGF1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBhbiBhdXRvY29tcGxldGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgQE91dHB1dCgpIGF1dG9jb21wbGV0ZU9wdGlvbkRlc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RmllbGQnKSBpbnB1dEZpZWxkITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgbW9kZWwhOiBzdHJpbmc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLndhdHQtZmllbGQtZGlzYWJsZWQnKVxuICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25Ub3VjaGVkQ2FsbGJhY2tzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhdHRyTmFtZSA9ICdkYXRhLXRlc3RpZCc7XG4gICAgY29uc3QgdGVzdElkQXR0cmlidXRlID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKGF0dHJOYW1lKTtcbiAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgIHRoaXMuaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgdGVzdElkQXR0cmlidXRlKTtcbiAgICB0aGlzLnJlZ2lzdGVyT25Ub3VjaGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IHRoaXMuaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LnZhbHVlLnRyaW0oKTtcbiAgICAgIHRoaXMuaW5wdXRGaWVsZC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdHJpbW1lZFZhbHVlO1xuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0cmltbWVkVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25DaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIGlmICh0aGlzLmF1dG9jb21wbGV0ZVJlZikge1xuICAgICAgLy8gUmVzZXQgdGhlIGF1dG9jb21wbGV0ZSBzZWxlY3Rpb24gaWYgdGhlIHZhbHVlIGlzIG5vdCBtYXRjaGluZyBhbnltb3JlLCBhbmQgYXV0by1zZWxlY3QgaWYgdGhlIHZhbHVlIGhhcyBhIG1hdGNoXG4gICAgICB0aGlzLmF1dG9jb21wbGV0ZVJlZi5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBpc01hdGNoaW5nT3B0aW9uID0gdGhpcy5hdXRvY29tcGxldGVNYXRjaGVyRm5cbiAgICAgICAgICA/IHRoaXMuYXV0b2NvbXBsZXRlTWF0Y2hlckZuKHZhbHVlLCBvcHRpb24udmFsdWUpXG4gICAgICAgICAgOiBvcHRpb24udmFsdWUgPT09IHZhbHVlO1xuXG4gICAgICAgIGlmIChpc01hdGNoaW5nT3B0aW9uKSB7XG4gICAgICAgICAgb3B0aW9uLnNlbGVjdChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZC5lbWl0KG9wdGlvbi52YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3B0aW9uLmRlc2VsZWN0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbkRlc2VsZWN0ZWQuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaENoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgLyogbm9vcCBmdW5jdGlvbiAqL1xuICB9O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2tzKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfTtcblxuICAvKiogQGlnbm9yZSAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsID0gdmFsdWU7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFja3MucHVzaChmbik7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlzRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgc2V0Rm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dEZpZWxkLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIl19
227
+ <ng-content />
228
+ <ng-content ngProjectAs="watt-field-descriptor" select=".descriptor" />
229
+ <ng-content ngProjectAs="watt-field-hint" select="watt-field-hint" />
230
+ <ng-content ngProjectAs="watt-field-error" select="watt-field-error" />
231
+ </watt-field>
232
+ `, styles: ["watt-text-field{display:block;width:100%}watt-text-field input{border:none;width:100%;outline:none;background-color:transparent}watt-text-field input::placeholder{color:var(--watt-on-light-low-emphasis)}\n"] }]
233
+ }] });
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3RleHQtZmllbGQvd2F0dC10ZXh0LWZpZWxkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQkFBaUI7QUFDakI7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsWUFBWTtBQUNaLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixVQUFVLEVBRVYsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFZLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFpRW5FLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLGlEQUFDLENBQUM7SUFDbEIsSUFBSSxHQUFHLEtBQUssQ0FBaUIsTUFBTSxnREFBQyxDQUFDO0lBQ3JDLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSx1REFBQyxDQUFDO0lBQ3hCLEtBQUssR0FBRyxLQUFLLENBQUMsRUFBRSxpREFBQyxDQUFDO0lBQ2xCLE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRSxtREFBQyxDQUFDO0lBQ3BCLE1BQU0sR0FBRyxLQUFLLDREQUFZLENBQUM7SUFDM0IsU0FBUyxHQUFHLEtBQUssQ0FBeUIsSUFBSSxxREFBQyxDQUFDO0lBQ2hELFdBQVcsR0FBRyxLQUFLLENBQUMsUUFB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Ozs7Ozs7Ozs7Ozs7OztHQTRDVCxzUkExRFMscUJBQXFCLHk5QkFBRSxtQkFBbUIsNnVCQUFFLGtCQUFrQiwrSUFBRSxpQkFBaUI7OzJGQTREaEYsc0JBQXNCO2tCQTdEbEMsU0FBUzs4QkFDQyxDQUFDLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixDQUFDLFlBQ2xGLGlCQUFpQixpQkFFWixpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNKLDRCQUE0QixFQUFFLGNBQWM7cUJBQzdDLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7NEJBQ3JELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENUIiwic291cmNlc0NvbnRlbnQiOlsiLy8jcmVnaW9uIExpY2Vuc2Vcbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIwIEVuZXJnaW5ldCBEYXRhSHViIEEvU1xuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2UyXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbi8vI2VuZHJlZ2lvblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICB2aWV3Q2hpbGQsXG4gIHNpZ25hbCxcbiAgbGlua2VkU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcblxuaW1wb3J0IHsgV2F0dEZpZWxkQ29tcG9uZW50IH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2ZpZWxkJztcbmltcG9ydCB7IFdhdHRJY29uQ29tcG9uZW50LCBXYXR0SWNvbiB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9pY29uJztcblxuZXhwb3J0IHR5cGUgV2F0dElucHV0VHlwZXMgPSAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ2VtYWlsJyB8ICdudW1iZXInIHwgJ3RlbCcgfCAndXJsJztcblxuQENvbXBvbmVudCh7XG4gIGltcG9ydHM6IFtNYXRBdXRvY29tcGxldGVNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFdhdHRGaWVsZENvbXBvbmVudCwgV2F0dEljb25Db21wb25lbnRdLFxuICBzZWxlY3RvcjogJ3dhdHQtdGV4dC1maWVsZCcsXG4gIHN0eWxlVXJsczogWycuL3dhdHQtdGV4dC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLndhdHQtZmllbGQtZGlzYWJsZWRdJzogJ2lzRGlzYWJsZWQoKScsXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gV2F0dFRleHRGaWVsZENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDx3YXR0LWZpZWxkXG4gICAgICAjd2F0dEZpZWxkXG4gICAgICBbY29udHJvbF09XCJmb3JtQ29udHJvbCgpXCJcbiAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgIFt0b29sdGlwXT1cInRvb2x0aXAoKVwiXG4gICAgICBtYXRBdXRvY29tcGxldGVPcmlnaW5cbiAgICA+XG4gICAgICBAaWYgKHByZWZpeCgpKSB7XG4gICAgICAgIDx3YXR0LWljb24gW25hbWVdPVwicHJlZml4KClcIiAvPlxuICAgICAgfVxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgW2F0dHIudHlwZV09XCJ0eXBlKClcIlxuICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW3ZhbHVlXT1cIm1vZGVsKClcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2woKVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2hlZCgpXCJcbiAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhMZW5ndGgoKVwiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiXG4gICAgICAgIFttYXRBdXRvY29tcGxldGVEaXNhYmxlZF09XCIhYXV0b2NvbXBsZXRlT3B0aW9ucygpXCJcbiAgICAgICAgW21hdEF1dG9jb21wbGV0ZUNvbm5lY3RlZFRvXT1cInsgZWxlbWVudFJlZjogd2F0dEZpZWxkLndyYXBwZXIoKSA/PyB3YXR0RmllbGQuZWxlbWVudFJlZiB9XCJcbiAgICAgICAgI2lucHV0RmllbGRcbiAgICAgIC8+XG5cbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlXG4gICAgICAgICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCJcbiAgICAgICAgY2xhc3M9XCJ3YXR0LWF1dG9jb21wbGV0ZS1wYW5lbFwiXG4gICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJhdXRvY29tcGxldGVPcHRpb25TZWxlY3RlZC5lbWl0KCRldmVudC5vcHRpb24udmFsdWUpXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAob3B0aW9uIG9mIGF1dG9jb21wbGV0ZU9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICB9XG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XG5cbiAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cIndhdHQtZmllbGQtZGVzY3JpcHRvclwiIHNlbGVjdD1cIi5kZXNjcmlwdG9yXCIgLz5cbiAgICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1oaW50XCIgc2VsZWN0PVwid2F0dC1maWVsZC1oaW50XCIgLz5cbiAgICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwid2F0dC1maWVsZC1lcnJvclwiIHNlbGVjdD1cIndhdHQtZmllbGQtZXJyb3JcIiAvPlxuICAgIDwvd2F0dC1maWVsZD5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgV2F0dFRleHRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0IHtcbiAgdmFsdWUgPSBpbnB1dCgnJyk7XG4gIHR5cGUgPSBpbnB1dDxXYXR0SW5wdXRUeXBlcz4oJ3RleHQnKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dCgnJyk7XG4gIGxhYmVsID0gaW5wdXQoJycpO1xuICB0b29sdGlwID0gaW5wdXQoJycpO1xuICBwcmVmaXggPSBpbnB1dDxXYXR0SWNvbj4oKTtcbiAgbWF4TGVuZ3RoID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gIGZvcm1Db250cm9sID0gaW5wdXQucmVxdWlyZWQ8Rm9ybUNvbnRyb2w+KCk7XG4gIGF1dG9jb21wbGV0ZU9wdGlvbnMgPSBpbnB1dDxzdHJpbmdbXT4oW10pO1xuICBhdXRvY29tcGxldGVNYXRjaGVyRm4gPSBpbnB1dDwodmFsdWU6IHN0cmluZywgb3B0aW9uOiBzdHJpbmcpID0+IGJvb2xlYW4+KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgYXV0b2NvbXBsZXRlUmVmID0gdmlld0NoaWxkLnJlcXVpcmVkKE1hdEF1dG9jb21wbGV0ZSk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBpdCBjaGFuZ2VzLlxuICAgKi9cbiAgc2VhcmNoQ2hhbmdlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEVtaXRzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXQgZmllbGQgd2hlbiBhbiBhdXRvY29tcGxldGUgb3B0aW9uIGlzIHNlbGVjdGVkLlxuICAgKi9cbiAgYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0IGZpZWxkIHdoZW4gYW4gYXV0b2NvbXBsZXRlIG9wdGlvbiBpcyBzZWxlY3RlZC5cbiAgICovXG4gIGF1dG9jb21wbGV0ZU9wdGlvbkRlc2VsZWN0ZWQgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgaW5wdXRGaWVsZCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PignaW5wdXRGaWVsZCcpO1xuICBtb2RlbCA9IGxpbmtlZFNpZ25hbCh0aGlzLnZhbHVlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBpc0Rpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBvblRvdWNoZWRDYWxsYmFja3M6ICgoKSA9PiB2b2lkKVtdID0gW107XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGF0dHJOYW1lID0gJ2RhdGEtdGVzdGlkJztcbiAgICBjb25zdCB0ZXN0SWRBdHRyaWJ1dGUgPSB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG5cbiAgICB0aGlzLmlucHV0RmllbGQoKS5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgdGVzdElkQXR0cmlidXRlKTtcbiAgICB0aGlzLnJlZ2lzdGVyT25Ub3VjaGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHRyaW1tZWRWYWx1ZSA9IHRoaXMuaW5wdXRGaWVsZCgpLm5hdGl2ZUVsZW1lbnQudmFsdWUudHJpbSgpO1xuICAgICAgdGhpcy5pbnB1dEZpZWxkKCkubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRyaW1tZWRWYWx1ZTtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2woKS5zZXRWYWx1ZSh0cmltbWVkVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25DaGFuZ2VkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcblxuICAgIC8vIFJlc2V0IHRoZSBhdXRvY29tcGxldGUgc2VsZWN0aW9uIGlmIHRoZSB2YWx1ZSBpcyBub3QgbWF0Y2hpbmcgYW55bW9yZSwgYW5kIGF1dG8tc2VsZWN0IGlmIHRoZSB2YWx1ZSBoYXMgYSBtYXRjaFxuICAgIHRoaXMuYXV0b2NvbXBsZXRlUmVmKCkub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcbiAgICAgIGNvbnN0IG1hdGNoZXJGbiA9IHRoaXMuYXV0b2NvbXBsZXRlTWF0Y2hlckZuKCk7XG4gICAgICBjb25zdCBpc01hdGNoaW5nT3B0aW9uID0gbWF0Y2hlckZuID8gbWF0Y2hlckZuKHZhbHVlLCBvcHRpb24udmFsdWUpIDogb3B0aW9uLnZhbHVlID09PSB2YWx1ZTtcblxuICAgICAgaWYgKGlzTWF0Y2hpbmdPcHRpb24pIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdChmYWxzZSk7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQuZW1pdChvcHRpb24udmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9uLmRlc2VsZWN0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25EZXNlbGVjdGVkLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2VhcmNoQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHtcbiAgICAvKiBub29wIGZ1bmN0aW9uICovXG4gIH07XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgdGhpcy5vblRvdWNoZWRDYWxsYmFja3MpIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuc2V0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrcy5wdXNoKGZuKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZC5zZXQoaXNEaXNhYmxlZCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBzZXRGb2N1cygpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dEZpZWxkID0gdGhpcy5pbnB1dEZpZWxkKCk7XG4gICAgaWYgKGlucHV0RmllbGQpIHtcbiAgICAgIGlucHV0RmllbGQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@energinet/watt",
4
- "version": "4.0.5",
4
+ "version": "4.0.7",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {
7
7
  ".": {
@@ -274,7 +274,7 @@ export declare class WattTableComponent<T> {
274
274
  protected onRowClick: (row: T) => void;
275
275
  constructor();
276
276
  /**
277
- * Clears the selection.
277
+ * Clears the selection, emitting `selectionChange` if `selection` was not empty.
278
278
  */
279
279
  clearSelection: () => void;
280
280
  /**
@@ -14,44 +14,43 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { ElementRef, AfterViewInit, EventEmitter } from '@angular/core';
17
+ import { ElementRef, AfterViewInit } from '@angular/core';
18
18
  import { ControlValueAccessor, FormControl } from '@angular/forms';
19
19
  import { MatAutocomplete } from '@angular/material/autocomplete';
20
- import { WattIcon } from '@energinet/watt/icon';
21
20
  import * as i0 from "@angular/core";
22
21
  export type WattInputTypes = 'text' | 'password' | 'email' | 'number' | 'tel' | 'url';
23
22
  export declare class WattTextFieldComponent implements ControlValueAccessor, AfterViewInit {
24
- value: string;
25
- type: WattInputTypes;
26
- placeholder?: string;
27
- label: string;
28
- tooltip?: string;
29
- prefix?: WattIcon;
30
- maxLength: string | number | null;
31
- formControl: FormControl;
32
- autocompleteOptions: string[];
33
- autocompleteMatcherFn: (value: string, option: string) => boolean;
23
+ value: import("@angular/core").InputSignal<string>;
24
+ type: import("@angular/core").InputSignal<WattInputTypes>;
25
+ placeholder: import("@angular/core").InputSignal<string>;
26
+ label: import("@angular/core").InputSignal<string>;
27
+ tooltip: import("@angular/core").InputSignal<string>;
28
+ prefix: import("@angular/core").InputSignal<"email" | "filter" | "search" | "plus" | "minus" | "edit" | "redo" | "undo" | "remove" | "removeForever" | "close" | "cancel" | "checkmark" | "user" | "settings" | "contentCopy" | "date" | "time" | "markEmailUnread" | "link" | "openInNew" | "monetization" | "payments" | "forwardMessage" | "menu" | "moreVertical" | "logout" | "login" | "help" | "alternateEmail" | "refresh" | "language" | "pendingActions" | "toggleOn" | "toggleOff" | "personCheck" | "left" | "right" | "up" | "down" | "arrowDropDown" | "arrowRightAlt" | "arrowLeftAlt" | "danger" | "warning" | "success" | "info" | "feedback" | "save" | "upload" | "download" | "fileDownload" | "fileUpload" | "print" | "preview" | "power" | "location" | "smartDisplay" | "windmill" | "solarPower" | "priorityHigh" | "notifications" | "notificationsUnread" | "horizontalRule" | "wrongLocation" | "heatPump" | "inventory" | "globe" | "calculate" | "bar_chart_4_bars" | "view_list" | "view_stream" | "construction" | "factory" | "nest_eco_leaf" | "flash_on" | undefined>;
29
+ maxLength: import("@angular/core").InputSignal<string | number | null>;
30
+ formControl: import("@angular/core").InputSignal<FormControl<any>>;
31
+ autocompleteOptions: import("@angular/core").InputSignal<string[]>;
32
+ autocompleteMatcherFn: import("@angular/core").InputSignal<((value: string, option: string) => boolean) | undefined>;
34
33
  /** @ignore */
35
- autocompleteRef: MatAutocomplete;
34
+ autocompleteRef: import("@angular/core").Signal<MatAutocomplete>;
36
35
  /**
37
36
  * Emits the value of the input field when it changes.
38
37
  */
39
- searchChanged: EventEmitter<string>;
38
+ searchChanged: import("@angular/core").OutputEmitterRef<string>;
40
39
  /**
41
40
  * Emits the value of the input field when an autocomplete option is selected.
42
41
  */
43
- autocompleteOptionSelected: EventEmitter<string>;
42
+ autocompleteOptionSelected: import("@angular/core").OutputEmitterRef<string>;
44
43
  /**
45
44
  * Emits the value of the input field when an autocomplete option is selected.
46
45
  */
47
- autocompleteOptionDeselected: EventEmitter<void>;
46
+ autocompleteOptionDeselected: import("@angular/core").OutputEmitterRef<void>;
48
47
  /** @ignore */
49
48
  private element;
50
49
  /** @ignore */
51
- inputField: ElementRef<HTMLInputElement>;
52
- model: string;
50
+ inputField: import("@angular/core").Signal<ElementRef<HTMLInputElement>>;
51
+ model: import("@angular/core").WritableSignal<string>;
53
52
  /** @ignore */
54
- isDisabled: boolean;
53
+ isDisabled: import("@angular/core").WritableSignal<boolean>;
55
54
  /** @ignore */
56
55
  onTouchedCallbacks: (() => void)[];
57
56
  /** @ignore */
@@ -73,5 +72,5 @@ export declare class WattTextFieldComponent implements ControlValueAccessor, Aft
73
72
  /** @ignore */
74
73
  setFocus(): void;
75
74
  static ɵfac: i0.ɵɵFactoryDeclaration<WattTextFieldComponent, never>;
76
- static ɵcmp: i0.ɵɵComponentDeclaration<WattTextFieldComponent, "watt-text-field", never, { "value": { "alias": "value"; "required": false; }; "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "label": { "alias": "label"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "prefix": { "alias": "prefix"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "autocompleteOptions": { "alias": "autocompleteOptions"; "required": false; }; "autocompleteMatcherFn": { "alias": "autocompleteMatcherFn"; "required": false; }; }, { "searchChanged": "searchChanged"; "autocompleteOptionSelected": "autocompleteOptionSelected"; "autocompleteOptionDeselected": "autocompleteOptionDeselected"; }, never, ["*", ".descriptor", "watt-field-hint", "watt-field-error"], true, never>;
75
+ static ɵcmp: i0.ɵɵComponentDeclaration<WattTextFieldComponent, "watt-text-field", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "prefix": { "alias": "prefix"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "formControl": { "alias": "formControl"; "required": true; "isSignal": true; }; "autocompleteOptions": { "alias": "autocompleteOptions"; "required": false; "isSignal": true; }; "autocompleteMatcherFn": { "alias": "autocompleteMatcherFn"; "required": false; "isSignal": true; }; }, { "searchChanged": "searchChanged"; "autocompleteOptionSelected": "autocompleteOptionSelected"; "autocompleteOptionDeselected": "autocompleteOptionDeselected"; }, never, ["*", ".descriptor", "watt-field-hint", "watt-field-error"], true, never>;
77
76
  }