@rivet-health/design-system 40.6.0 → 40.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/accessibility/sr-only/sr-only.component.mjs +4 -4
- package/esm2020/lib/download/download.service.mjs +4 -4
- package/esm2020/lib/format/pipes/date.pipe.mjs +4 -4
- package/esm2020/lib/format/pipes/days.pipe.mjs +4 -4
- package/esm2020/lib/format/pipes/dollars.pipe.mjs +4 -4
- package/esm2020/lib/format/pipes/number.pipe.mjs +4 -4
- package/esm2020/lib/format/pipes/percentage.pipe.mjs +4 -4
- package/esm2020/lib/format/pipes/sentence-case.pipe.mjs +4 -4
- package/esm2020/lib/format/pipes/small-currency.pipe.mjs +4 -4
- package/esm2020/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +4 -4
- package/esm2020/lib/format/truncate/truncate.component.mjs +4 -4
- package/esm2020/lib/icon/icon.component.mjs +4 -4
- package/esm2020/lib/input/alphabetic-field/alphabetic-field.component.mjs +4 -4
- package/esm2020/lib/input/auto-focus/auto-focus.directive.mjs +4 -4
- package/esm2020/lib/input/button/button.component.mjs +4 -4
- package/esm2020/lib/input/button-group/button-group.component.mjs +4 -4
- package/esm2020/lib/input/calendar/calendar.component.mjs +4 -4
- package/esm2020/lib/input/card-checkbox/card-checkbox.component.mjs +4 -4
- package/esm2020/lib/input/checkbox/checkbox.component.mjs +4 -4
- package/esm2020/lib/input/currency-field/currency-field.component.mjs +4 -4
- package/esm2020/lib/input/date/date.component.mjs +22 -22
- package/esm2020/lib/input/date-range/date-range.component.mjs +4 -4
- package/esm2020/lib/input/input-label/input-label.component.mjs +4 -4
- package/esm2020/lib/input/mentions-input/mentions-input.component.mjs +4 -4
- package/esm2020/lib/input/number-field/number-field.component.mjs +4 -4
- package/esm2020/lib/input/percentage-field/percentage-field.component.mjs +4 -4
- package/esm2020/lib/input/phone-field/phone-field.component.mjs +4 -4
- package/esm2020/lib/input/radio/radio.component.mjs +4 -4
- package/esm2020/lib/input/search/search.component.mjs +4 -4
- package/esm2020/lib/input/search-select/search-select.component.mjs +4 -4
- package/esm2020/lib/input/select/select/select.component.mjs +4 -4
- package/esm2020/lib/input/select/select-node/select-node.component.mjs +4 -4
- package/esm2020/lib/input/select/state.mjs +34 -13
- package/esm2020/lib/input/simple-select/option-group.pipe.mjs +4 -4
- package/esm2020/lib/input/simple-select/simple-select.component.mjs +4 -4
- package/esm2020/lib/input/switch-checkbox/switch-checkbox.component.mjs +4 -4
- package/esm2020/lib/input/text-field/text-field.component.mjs +4 -4
- package/esm2020/lib/input/textarea-field/textarea-field.component.mjs +4 -4
- package/esm2020/lib/input/validation-message/validation-message.component.mjs +4 -4
- package/esm2020/lib/load/loading/loading.component.mjs +4 -4
- package/esm2020/lib/load/loading-cover/loading-cover.component.mjs +4 -4
- package/esm2020/lib/navigation/link/link.component.mjs +4 -4
- package/esm2020/lib/navigation/page-header/page-header.component.mjs +4 -4
- package/esm2020/lib/navigation/tabs/tab/tab.component.mjs +4 -4
- package/esm2020/lib/navigation/tabs/tabs/tabs.component.mjs +4 -4
- package/esm2020/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +4 -4
- package/esm2020/lib/navigation/views/edit-view/edit-view.component.mjs +4 -4
- package/esm2020/lib/navigation/views/permission-picker/permission-picker.component.mjs +4 -4
- package/esm2020/lib/navigation/views/view-menu/view-menu.component.mjs +4 -4
- package/esm2020/lib/navigation/views/views/views.component.mjs +4 -4
- package/esm2020/lib/notification/badge/badge.component.mjs +4 -4
- package/esm2020/lib/notification/banner/banner-action.component.mjs +4 -4
- package/esm2020/lib/notification/banner/banner.component.mjs +4 -4
- package/esm2020/lib/notification/map-indicator/map-indicator.component.mjs +4 -4
- package/esm2020/lib/notification/notification-badge/notification-badge.component.mjs +4 -4
- package/esm2020/lib/overlay/callout/callout.component.mjs +4 -4
- package/esm2020/lib/overlay/callout/help/help.component.mjs +4 -4
- package/esm2020/lib/overlay/callout/lock-scroll.directive.mjs +7 -7
- package/esm2020/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +4 -4
- package/esm2020/lib/overlay/callout/menu/menu.component.mjs +4 -4
- package/esm2020/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +4 -4
- package/esm2020/lib/overlay/callout/tooltip/tooltip.component.mjs +4 -4
- package/esm2020/lib/overlay/callout/tooltip/tooltip.directive.mjs +4 -4
- package/esm2020/lib/overlay/modal/dialog/dialog.component.mjs +4 -4
- package/esm2020/lib/overlay/modal/modal.component.mjs +4 -4
- package/esm2020/lib/overlay/modal/side-sheet/side-sheet.component.mjs +4 -4
- package/esm2020/lib/overlay/overlay-outlet.component.mjs +4 -4
- package/esm2020/lib/overlay/overlay.directive.mjs +4 -4
- package/esm2020/lib/overlay/overlay.service.mjs +4 -4
- package/esm2020/lib/overlay/toast/toast-action.component.mjs +4 -4
- package/esm2020/lib/overlay/toast/toast.component.mjs +4 -4
- package/esm2020/lib/riv.module.mjs +5 -5
- package/esm2020/lib/size/size.directive.mjs +4 -4
- package/esm2020/lib/table/simple-table/simple-table-cell.component.mjs +4 -4
- package/esm2020/lib/table/simple-table/simple-table-header-cell.component.mjs +4 -4
- package/esm2020/lib/table/simple-table/simple-table-row.component.mjs +4 -4
- package/esm2020/lib/table/simple-table/simple-table.component.mjs +4 -4
- package/esm2020/lib/table/table/table/table.component.mjs +4 -4
- package/esm2020/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +4 -4
- package/esm2020/lib/table/table/table-column-settings/table-column-settings.component.mjs +4 -4
- package/esm2020/lib/table/table/table-csv-export/table-csv-export.component.mjs +4 -4
- package/esm2020/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +4 -4
- package/esm2020/lib/table/table/table-search/table-search.component.mjs +4 -4
- package/esm2020/lib/table/table/table-search-columns/table-search-columns.component.mjs +4 -4
- package/esm2020/lib/visibility/visibility.directive.mjs +4 -4
- package/esm2020/lib/visualization/chart/chart.component.mjs +4 -4
- package/esm2020/lib/visualization/data-table/data-table-cell.component.mjs +4 -4
- package/esm2020/lib/visualization/data-table/data-table-header-cell.component.mjs +4 -4
- package/esm2020/lib/visualization/data-table/data-table-row.component.mjs +4 -4
- package/esm2020/lib/visualization/data-table/data-table.component.mjs +4 -4
- package/esm2020/lib/visualization/donut/donut.component.mjs +4 -4
- package/esm2020/lib/visualization/funnel-chart/funnel-chart.component.mjs +4 -4
- package/esm2020/lib/visualization/highlight/highlight.component.mjs +4 -4
- package/esm2020/lib/visualization/issue/issue.component.mjs +4 -4
- package/esm2020/lib/visualization/legend-item/legend-item.component.mjs +4 -4
- package/esm2020/lib/visualization/metric/metric.component.mjs +4 -4
- package/esm2020/lib/visualization/mini-pie/mini-pie.component.mjs +4 -4
- package/esm2020/lib/visualization/progress/progress.component.mjs +4 -4
- package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +4 -4
- package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +4 -4
- package/esm2020/lib/visualization/time-series/time-series.component.mjs +4 -4
- package/esm2020/lib/visualization/trend/trend.component.mjs +4 -4
- package/esm2020/lib/visualization/zero-state/zero-state.component.mjs +4 -4
- package/fesm2015/rivet-health-design-system.mjs +378 -350
- package/fesm2015/rivet-health-design-system.mjs.map +1 -1
- package/fesm2020/rivet-health-design-system.mjs +361 -340
- package/fesm2020/rivet-health-design-system.mjs.map +1 -1
- package/lib/accessibility/sr-only/sr-only.component.d.ts +1 -1
- package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +1 -1
- package/lib/format/truncate/truncate.component.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +1 -1
- package/lib/input/alphabetic-field/alphabetic-field.component.d.ts +1 -1
- package/lib/input/auto-focus/auto-focus.directive.d.ts +1 -1
- package/lib/input/button/button.component.d.ts +1 -1
- package/lib/input/button-group/button-group.component.d.ts +1 -1
- package/lib/input/calendar/calendar.component.d.ts +3 -3
- package/lib/input/card-checkbox/card-checkbox.component.d.ts +1 -1
- package/lib/input/checkbox/checkbox.component.d.ts +1 -1
- package/lib/input/currency-field/currency-field.component.d.ts +1 -1
- package/lib/input/date/date.component.d.ts +1 -1
- package/lib/input/date-range/date-range.component.d.ts +1 -1
- package/lib/input/input-label/input-label.component.d.ts +1 -1
- package/lib/input/mentions-input/mentions-input.component.d.ts +1 -1
- package/lib/input/number-field/number-field.component.d.ts +1 -1
- package/lib/input/percentage-field/percentage-field.component.d.ts +1 -1
- package/lib/input/phone-field/phone-field.component.d.ts +1 -1
- package/lib/input/radio/radio.component.d.ts +1 -1
- package/lib/input/search/search.component.d.ts +1 -1
- package/lib/input/search-select/search-select.component.d.ts +1 -1
- package/lib/input/select/select/select.component.d.ts +1 -1
- package/lib/input/select/select-node/select-node.component.d.ts +1 -1
- package/lib/input/select/state.d.ts +3 -0
- package/lib/input/simple-select/simple-select.component.d.ts +1 -1
- package/lib/input/switch-checkbox/switch-checkbox.component.d.ts +1 -1
- package/lib/input/text-field/text-field.component.d.ts +1 -1
- package/lib/input/textarea-field/textarea-field.component.d.ts +1 -1
- package/lib/input/validation-message/validation-message.component.d.ts +1 -1
- package/lib/load/loading/loading.component.d.ts +1 -1
- package/lib/load/loading-cover/loading-cover.component.d.ts +1 -1
- package/lib/navigation/link/link.component.d.ts +1 -1
- package/lib/navigation/page-header/page-header.component.d.ts +1 -1
- package/lib/navigation/tabs/tab/tab.component.d.ts +1 -1
- package/lib/navigation/tabs/tabs/tabs.component.d.ts +1 -1
- package/lib/navigation/views/all-views-modal/all-views-modal.component.d.ts +1 -1
- package/lib/navigation/views/edit-view/edit-view.component.d.ts +1 -1
- package/lib/navigation/views/permission-picker/permission-picker.component.d.ts +1 -1
- package/lib/navigation/views/view-menu/view-menu.component.d.ts +1 -1
- package/lib/navigation/views/views/views.component.d.ts +1 -1
- package/lib/notification/badge/badge.component.d.ts +1 -1
- package/lib/notification/banner/banner-action.component.d.ts +1 -1
- package/lib/notification/banner/banner.component.d.ts +1 -1
- package/lib/notification/map-indicator/map-indicator.component.d.ts +1 -1
- package/lib/notification/notification-badge/notification-badge.component.d.ts +1 -1
- package/lib/overlay/callout/callout.component.d.ts +1 -1
- package/lib/overlay/callout/callout.helpers.d.ts +4 -4
- package/lib/overlay/callout/help/help.component.d.ts +1 -1
- package/lib/overlay/callout/lock-scroll.directive.d.ts +1 -1
- package/lib/overlay/callout/menu/menu-item/menu-item.component.d.ts +1 -1
- package/lib/overlay/callout/menu/menu.component.d.ts +1 -1
- package/lib/overlay/callout/tooltip/locked-tooltip.directive.d.ts +1 -1
- package/lib/overlay/callout/tooltip/tooltip.component.d.ts +1 -1
- package/lib/overlay/callout/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/overlay/modal/dialog/dialog.component.d.ts +1 -1
- package/lib/overlay/modal/modal.component.d.ts +1 -1
- package/lib/overlay/modal/side-sheet/side-sheet.component.d.ts +1 -1
- package/lib/overlay/overlay-outlet.component.d.ts +2 -2
- package/lib/overlay/overlay.directive.d.ts +1 -1
- package/lib/overlay/overlay.service.d.ts +1 -1
- package/lib/overlay/toast/toast-action.component.d.ts +1 -1
- package/lib/overlay/toast/toast.component.d.ts +1 -1
- package/lib/size/size.directive.d.ts +1 -1
- package/lib/table/simple-table/coordinate-helper.d.ts +3 -3
- package/lib/table/simple-table/simple-table-cell.component.d.ts +1 -1
- package/lib/table/simple-table/simple-table-header-cell.component.d.ts +1 -1
- package/lib/table/simple-table/simple-table-row.component.d.ts +1 -1
- package/lib/table/simple-table/simple-table.component.d.ts +1 -1
- package/lib/table/table/table/table.component.d.ts +2 -2
- package/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.d.ts +3 -3
- package/lib/table/table/table-column-settings/table-column-settings.component.d.ts +2 -2
- package/lib/table/table/table-csv-export/table-csv-export.component.d.ts +1 -1
- package/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.d.ts +1 -1
- package/lib/table/table/table-search/table-search.component.d.ts +1 -1
- package/lib/table/table/table-search-columns/table-search-columns.component.d.ts +2 -2
- package/lib/visibility/visibility.directive.d.ts +1 -1
- package/lib/visualization/chart/chart-scaling.d.ts +16 -16
- package/lib/visualization/chart/chart.component.d.ts +2 -2
- package/lib/visualization/data-table/data-table-cell.component.d.ts +1 -1
- package/lib/visualization/data-table/data-table-header-cell.component.d.ts +1 -1
- package/lib/visualization/data-table/data-table-row.component.d.ts +1 -1
- package/lib/visualization/data-table/data-table.component.d.ts +1 -1
- package/lib/visualization/donut/donut.component.d.ts +1 -1
- package/lib/visualization/funnel-chart/funnel-chart.component.d.ts +1 -1
- package/lib/visualization/highlight/highlight.component.d.ts +1 -1
- package/lib/visualization/intervals.d.ts +2 -2
- package/lib/visualization/issue/issue.component.d.ts +1 -1
- package/lib/visualization/legend-item/legend-item.component.d.ts +1 -1
- package/lib/visualization/metric/metric.component.d.ts +1 -1
- package/lib/visualization/mini-pie/mini-pie.component.d.ts +1 -1
- package/lib/visualization/progress/progress.component.d.ts +1 -1
- package/lib/visualization/stacked-column/stacked-column.component.d.ts +2 -2
- package/lib/visualization/stacked-row/stacked-row.component.d.ts +1 -1
- package/lib/visualization/stacked-row/stacked-row.helpers.d.ts +5 -5
- package/lib/visualization/time-series/time-series.component.d.ts +2 -2
- package/lib/visualization/time-series/time-series.helpers.d.ts +4 -4
- package/lib/visualization/trend/trend.component.d.ts +1 -1
- package/lib/visualization/zero-state/zero-state.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -348,9 +348,9 @@ export class TimeSeriesComponent {
|
|
|
348
348
|
};
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
|
-
TimeSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
352
|
-
TimeSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
353
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
351
|
+
TimeSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimeSeriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
352
|
+
TimeSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TimeSeriesComponent, selector: "riv-time-series", inputs: { input: "input", zeroStateMessage: "zeroStateMessage", interval: "interval", allowLegendToggle: "allowLegendToggle", groupedTooltips: "groupedTooltips" }, outputs: { intervalChanged: "intervalChanged", markerClicked: "markerClicked" }, viewQueries: [{ propertyName: "controls", first: true, predicate: ["controls"], descendants: true }], ngImport: i0, template: "<div\n *ngIf=\"(empty$ | async) === false; else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <g *ngFor=\"let tick of d.x.xMajorTicks\">\n <text\n *ngIf=\"d.x.xScale(tick.value) >= 0\"\n class=\"x-major-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.x.xMinorTicks\">\n <text\n class=\"x-minor-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n text-anchor=\"middle\"\n dominant-baseline=\"hanging\"\n dy=\"8\"\n >\n {{ tick.label }}\n <title>{{ tick.value | date }}</title>\n </text>\n </g>\n <g *ngFor=\"let tick of d.y1.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.y1.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"y-tick-label\" x=\"0\" [attr.y]=\"d.y1.yScale(tick)\" dy=\"-4\">\n {{ d.y1.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngFor=\"let tick of d.y2?.yTicks\">\n <text\n class=\"y-tick-label\"\n [attr.x]=\"width\"\n [attr.y]=\"d.y2?.yScale(tick)\"\n text-anchor=\"end\"\n dy=\"-4\"\n >\n {{ d.y2?.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngIf=\"hoveredMarker$ | async; let hoveredMarker\">\n <line\n class=\"hover-rule\"\n [attr.x1]=\"hoveredMarker.marker.x\"\n [attr.y1]=\"d.y1.yScale(d.y1.yMin)\"\n [attr.x2]=\"hoveredMarker.marker.x\"\n [attr.y2]=\"d.y1.yScale(d.y1.yMax)\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n\n <ng-template #seriesTpl let-series=\"series\" let-index=\"index\" let-y=\"y\">\n <path\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data path\"\n [class.marker-hovered]=\"!!(hoveredMarker$ | async)\"\n [attr.d]=\"series.path\"\n fill=\"none\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n [attr.stroke-dasharray]=\"series.style === 'dashed' ? '4' : null\"\n ></path>\n <ng-container *ngIf=\"getRange$ | async; let getRange\">\n <ng-container *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"\n (hoveredMarker$ | async)?.marker?.x === marker.x &&\n (groupedTooltips ||\n ((hoveredMarker$ | async)?.seriesIndex === index &&\n (hoveredMarker$ | async)?.y === y))\n \"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n ((hoveredMarker$ | async)?.marker?.x !== marker.x ||\n ((hoveredMarker$ | async)?.marker?.x === marker.x &&\n !groupedTooltips &&\n ((hoveredMarker$ | async)?.seriesIndex !== index ||\n (hoveredMarker$ | async)?.y !== y)))\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"POINT_RADIUS\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"\n hoveredMarker$.next({\n event: $event,\n marker: marker,\n seriesIndex: index,\n y: y\n })\n \"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n (click)=\"\n markerClicked.emit(\n getMarkerClicked(getRange(marker.date), index, y)\n );\n hoveredMarker$.next(null)\n \"\n ></circle>\n </ng-container>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y1' }\n \"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y2' }\n \"\n ></ng-container>\n </g>\n </svg>\n <legend>\n <riv-legend-item\n *ngFor=\"let item of legend$ | async\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [visibility]=\"item.visibility\"\n [clickable]=\"allowLegendToggle\"\n (itemClick)=\"\n allowLegendToggle\n ? toggleVisibility$.next({\n label: item.label,\n visibility: item.visibility === 'hidden' ? 'visible' : 'hidden'\n })\n : null\n \"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\" *ngFor=\"let metric of callout.metrics\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-simple-select\n [optionGroups]=\"intervalOptions$ | async | rivOptionGroup\"\n [orderBy]=\"'source'\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-simple-select>\n</ng-template>\n", styles: [".container{display:flex;flex-direction:column;gap:var(--size-xlarge)}.y-tick-label,.x-major-tick-label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);fill:var(--type-light-low-contrast)}.x-minor-tick-label{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);fill:var(--type-light-low-contrast);text-anchor:middle}.tick{fill:var(--gray-20)}.data.path{transition:stroke-opacity var(--short-transition)}.data.path.marker-hovered{stroke-opacity:.4}.data.marker{fill:var(--surface-light-0);transition:stroke-opacity var(--short-transition)}.data.marker.focused{stroke-opacity:1;filter:drop-shadow(0 1px 1px rgba(10,2,22,.15))}.data.marker.blurred{stroke-opacity:.4}.hover-rule{stroke:var(--gray-20)}legend{display:flex;flex-wrap:wrap;gap:var(--size-large);justify-content:flex-start;align-items:baseline}.callout-content{padding:var(--size-medium) var(--size-xlarge);display:flex;flex-direction:column}.callout-row{display:flex;padding:var(--size-medium) 0;gap:var(--size-medium);align-items:center;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0)}.callout-row:not(:last-child){border-bottom:var(--border-width) solid var(--border-light)}.series-label{flex-grow:1;font-weight:var(--font-weight-heavy);display:flex;align-items:center;gap:var(--size-small)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.CalloutComponent, selector: "riv-callout", inputs: ["anchor", "isModal", "preferredPosition", "allowedPositions", "fallbackDirection", "showCaret", "theme"], outputs: ["close"] }, { kind: "component", type: i3.LegendItemComponent, selector: "riv-legend-item", inputs: ["label", "colorToken", "style", "visibility", "iconTooltip", "clickable", "showCheckWhenClickable"], outputs: ["itemClick"] }, { kind: "directive", type: i4.OverlayDirective, selector: "[riv-overlay]" }, { kind: "component", type: i5.SimpleSelectComponent, selector: "riv-simple-select", inputs: ["optionGroups", "selectedOption", "size", "disabled", "locked", "filterabilityOptions", "orderBy", "placeholder", "maxHeight", "maxWidth", "minHeight", "minWidth", "dividers", "preferredCalloutPosition", "allowedCalloutPositions"], outputs: ["selectedOptionChange"] }, { kind: "directive", type: i6.SizeDirective, selector: "[rivClientSize]", outputs: ["rivClientSize"] }, { kind: "component", type: i7.ZeroStateComponent, selector: "riv-zero-state", inputs: ["message", "title", "icon"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: i8.OptionGroupPipe, name: "rivOptionGroup" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
353
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TimeSeriesComponent, decorators: [{
|
|
354
354
|
type: Component,
|
|
355
355
|
args: [{ selector: 'riv-time-series', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"(empty$ | async) === false; else zeroState\"\n class=\"container\"\n (rivClientSize)=\"width = $event.width\"\n>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n *ngIf=\"drawData$ | async; let d\"\n [attr.viewBox]=\"d.viewBox\"\n >\n <g *ngFor=\"let tick of d.x.xMajorTicks\">\n <text\n *ngIf=\"d.x.xScale(tick.value) >= 0\"\n class=\"x-major-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n dx=\"4\"\n dy=\"-4\"\n >\n {{ tick.label }}\n </text>\n </g>\n <g *ngFor=\"let tick of d.x.xMinorTicks\">\n <text\n class=\"x-minor-tick-label\"\n [attr.x]=\"d.x.xScale(tick.value)\"\n [attr.y]=\"HEIGHT - BOTTOM_OFFSET\"\n text-anchor=\"middle\"\n dominant-baseline=\"hanging\"\n dy=\"8\"\n >\n {{ tick.label }}\n <title>{{ tick.value | date }}</title>\n </text>\n </g>\n <g *ngFor=\"let tick of d.y1.yTicks\">\n <rect\n class=\"tick\"\n x=\"0\"\n [attr.y]=\"d.y1.yScale(tick)\"\n width=\"100%\"\n height=\"1\"\n ></rect>\n <text class=\"y-tick-label\" x=\"0\" [attr.y]=\"d.y1.yScale(tick)\" dy=\"-4\">\n {{ d.y1.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngFor=\"let tick of d.y2?.yTicks\">\n <text\n class=\"y-tick-label\"\n [attr.x]=\"width\"\n [attr.y]=\"d.y2?.yScale(tick)\"\n text-anchor=\"end\"\n dy=\"-4\"\n >\n {{ d.y2?.valueFormatter(tick) }}\n </text>\n </g>\n\n <g *ngIf=\"hoveredMarker$ | async; let hoveredMarker\">\n <line\n class=\"hover-rule\"\n [attr.x1]=\"hoveredMarker.marker.x\"\n [attr.y1]=\"d.y1.yScale(d.y1.yMin)\"\n [attr.x2]=\"hoveredMarker.marker.x\"\n [attr.y2]=\"d.y1.yScale(d.y1.yMax)\"\n stroke-width=\"2\"\n stroke-dasharray=\"4\"\n />\n </g>\n\n <ng-template #seriesTpl let-series=\"series\" let-index=\"index\" let-y=\"y\">\n <path\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data path\"\n [class.marker-hovered]=\"!!(hoveredMarker$ | async)\"\n [attr.d]=\"series.path\"\n fill=\"none\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n [attr.stroke-dasharray]=\"series.style === 'dashed' ? '4' : null\"\n ></path>\n <ng-container *ngIf=\"getRange$ | async; let getRange\">\n <ng-container *ngFor=\"let marker of series.markers\">\n <circle\n *ngIf=\"series.visibility !== 'hidden'\"\n class=\"data marker\"\n [class.focused]=\"\n (hoveredMarker$ | async)?.marker?.x === marker.x &&\n (groupedTooltips ||\n ((hoveredMarker$ | async)?.seriesIndex === index &&\n (hoveredMarker$ | async)?.y === y))\n \"\n [class.blurred]=\"\n (hoveredMarker$ | async) !== null &&\n ((hoveredMarker$ | async)?.marker?.x !== marker.x ||\n ((hoveredMarker$ | async)?.marker?.x === marker.x &&\n !groupedTooltips &&\n ((hoveredMarker$ | async)?.seriesIndex !== index ||\n (hoveredMarker$ | async)?.y !== y)))\n \"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"POINT_RADIUS\"\n stroke-width=\"2\"\n [attr.stroke]=\"series.stroke\"\n (mouseover)=\"\n hoveredMarker$.next({\n event: $event,\n marker: marker,\n seriesIndex: index,\n y: y\n })\n \"\n (mouseleave)=\"hoveredMarker$.next(null)\"\n (click)=\"\n markerClicked.emit(\n getMarkerClicked(getRange(marker.date), index, y)\n );\n hoveredMarker$.next(null)\n \"\n ></circle>\n </ng-container>\n </ng-container>\n </ng-template>\n <g *ngFor=\"let series of d.y1.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y1' }\n \"\n ></ng-container>\n </g>\n <g *ngFor=\"let series of d.y2?.series; let i = index\">\n <ng-container\n *ngTemplateOutlet=\"\n seriesTpl;\n context: { series: series, index: i, y: 'y2' }\n \"\n ></ng-container>\n </g>\n </svg>\n <legend>\n <riv-legend-item\n *ngFor=\"let item of legend$ | async\"\n [label]=\"item.label\"\n [colorToken]=\"item.colorToken\"\n [visibility]=\"item.visibility\"\n [clickable]=\"allowLegendToggle\"\n (itemClick)=\"\n allowLegendToggle\n ? toggleVisibility$.next({\n label: item.label,\n visibility: item.visibility === 'hidden' ? 'visible' : 'hidden'\n })\n : null\n \"\n ></riv-legend-item>\n </legend>\n</div>\n\n<ng-container *ngIf=\"callout$ | async; let callout\">\n <riv-callout\n *riv-overlay\n [anchor]=\"callout.anchor\"\n [isModal]=\"false\"\n [preferredPosition]=\"'center-right'\"\n [theme]=\"'light'\"\n >\n <div class=\"callout-content\">\n <div class=\"callout-row\" *ngFor=\"let metric of callout.metrics\">\n <span class=\"series-label\">\n <riv-legend-item [colorToken]=\"metric.colorToken\"></riv-legend-item>\n <span>{{ metric.label }}</span>\n </span>\n <span>{{ metric.value }}</span>\n </div>\n </div>\n </riv-callout>\n</ng-container>\n\n<ng-template #zeroState>\n <riv-zero-state [message]=\"zeroStateMessage\"></riv-zero-state>\n</ng-template>\n\n<ng-template #controls>\n <riv-simple-select\n [optionGroups]=\"intervalOptions$ | async | rivOptionGroup\"\n [orderBy]=\"'source'\"\n [selectedOption]=\"selectedIntervalOption$ | async\"\n (selectedOptionChange)=\"setIntervalOption($event)\"\n ></riv-simple-select>\n</ng-template>\n", styles: [".container{display:flex;flex-direction:column;gap:var(--size-xlarge)}.y-tick-label,.x-major-tick-label{font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);fill:var(--type-light-low-contrast)}.x-minor-tick-label{font-size:var(--type-2-font-size);line-height:var(--type-2-line-height-0);fill:var(--type-light-low-contrast);text-anchor:middle}.tick{fill:var(--gray-20)}.data.path{transition:stroke-opacity var(--short-transition)}.data.path.marker-hovered{stroke-opacity:.4}.data.marker{fill:var(--surface-light-0);transition:stroke-opacity var(--short-transition)}.data.marker.focused{stroke-opacity:1;filter:drop-shadow(0 1px 1px rgba(10,2,22,.15))}.data.marker.blurred{stroke-opacity:.4}.hover-rule{stroke:var(--gray-20)}legend{display:flex;flex-wrap:wrap;gap:var(--size-large);justify-content:flex-start;align-items:baseline}.callout-content{padding:var(--size-medium) var(--size-xlarge);display:flex;flex-direction:column}.callout-row{display:flex;padding:var(--size-medium) 0;gap:var(--size-medium);align-items:center;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0)}.callout-row:not(:last-child){border-bottom:var(--border-width) solid var(--border-light)}.series-label{flex-grow:1;font-weight:var(--font-weight-heavy);display:flex;align-items:center;gap:var(--size-small)}\n"] }]
|
|
356
356
|
}], propDecorators: { input: [{
|
|
@@ -371,4 +371,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
371
371
|
}], markerClicked: [{
|
|
372
372
|
type: Output
|
|
373
373
|
}] } });
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi90aW1lLXNlcmllcy90aW1lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixTQUFTLEdBQ1YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFvQixZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQUV2RSxNQUFNLGdCQUFnQixHQUFhLEtBQUssQ0FBQztBQU96Qyw2RUFBNkU7QUFDN0UsK0NBQStDO0FBQy9DLG1HQUFtRztBQU9uRyxNQUFNLE9BQU8s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LElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBR0QsSUFDVyxlQUFlLENBQUMsQ0FBVTtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQWdGRCxpQkFBaUIsQ0FBQyxNQUE2QjtRQUM3QyxJQUFJLE1BQU07WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFjLENBQUM7SUFDcEQsQ0FBQztJQTJFRCxnQkFBZ0IsQ0FDZCxLQUF1QyxFQUN2QyxXQUFtQixFQUNuQixDQUFjO1FBRWQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLFdBQVc7WUFDWCxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2dIQTdQVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixrWkNoRGhDLGtoTUFrTUE7MkZEbEphLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs4QkFhcEMsS0FBSztzQkFEZixLQUFLO2dCQXNCSyxnQkFBZ0I7c0JBRDFCLEtBQUs7Z0JBdUJLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBWU4sZUFBZTtzQkFEZCxNQUFNO2dCQUlTLFFBQVE7c0JBRHZCLFNBQVM7dUJBQUMsVUFBVTtnQkFLVixpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBVUssZUFBZTtzQkFEekIsS0FBSztnQkFTTixhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2NhbGVMaW5lYXIgfSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQgeyBsaW5lIH0gZnJvbSAnZDMtc2hhcGUnO1xuaW1wb3J0IHsgdXRjRGF5IH0gZnJvbSAnZDMtdGltZSc7XG5pbXBvcnQgeyB1dGNGb3JtYXQgfSBmcm9tICdkMy10aW1lLWZvcm1hdCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTnVtYmVyUGlwZSB9IGZyb20gJy4uLy4uL2Zvcm1hdC9waXBlcy9udW1iZXIucGlwZSc7XG5pbXBvcnQge1xuICBJbnRlcnZhbCxcbiAgZ2V0SW50ZXJ2YWxUaXRsZSxcbiAgZ2V0TWFqb3JJbnRlcnZhbCxcbiAgZ2V0TWFqb3JJbnRlcnZhbEZvcm1hdCxcbiAgZ2V0TWlub3JJbnRlcnZhbEZvcm1hdCxcbiAgZ2V0VGltZUludGVydmFsLFxuICBpbnRlcnZhbHMsXG59IGZyb20gJy4uL2ludGVydmFscyc7XG5pbXBvcnQgeyBEcmF3RGF0YSwgTWFya2VyLCBnZXREYXRlUmFuZ2UgfSBmcm9tICcuL3RpbWUtc2VyaWVzLmhlbHBlcnMnO1xuXG5jb25zdCBERUZBVUxUX0lOVEVSVkFMOiBJbnRlcnZhbCA9ICdkYXknO1xuXG50eXBlIEludGVydmFsT3B0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLiBTZWUgY29tbWl0IGUyMzhjMmQuXG4vLyBodHRwczovL3d3dy5ub3Rpb24uc28vcml2ZXQvUmVzb2x2ZS1UT0RPcy1hZnRlci1Bbmd1bGFyLXVwZ3JhZGUtMWYyNjY3ZWIyYTMxODBiNzlmNmFkOTJhN2U1NzZmMDhcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi10aW1lLXNlcmllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWUtc2VyaWVzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVTZXJpZXNDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGlucHV0JCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxUaW1lU2VyaWVzQ29tcG9uZW50LlRpbWVTZXJpZXNJbnB1dD4oW1xuICAgICAge1xuICAgICAgICBwb2ludFJlZHVjZXI6IHBvaW50cyA9PlxuICAgICAgICAgIHBvaW50cy5yZWR1Y2UoKHRvdGFsLCB7IHZhbHVlIH0pID0+IHRvdGFsICsgdmFsdWUsIDApLFxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdiA9PiBuZXcgTnVtYmVyUGlwZSgpLnRyYW5zZm9ybSh2KSA/PyAnJyxcbiAgICAgICAgc2VyaWVzOiBbXSxcbiAgICAgIH0sXG4gICAgXSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5wdXQodjogVGltZVNlcmllc0NvbXBvbmVudC5UaW1lU2VyaWVzSW5wdXQpIHtcbiAgICB0aGlzLmlucHV0JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgaW5wdXQoKTogVGltZVNlcmllc0NvbXBvbmVudC5UaW1lU2VyaWVzSW5wdXQge1xuICAgIHJldHVybiB0aGlzLmlucHV0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3aWR0aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBzZXQgd2lkdGgodjogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCQubmV4dCh2KTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0IHdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLndpZHRoJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgSEVJR0hUID0gMzAwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgemVyb1N0YXRlTWVzc2FnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXG4gICAgJ05vIGRhdGEgdG8gZGlzcGxheS4nLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHplcm9TdGF0ZU1lc3NhZ2Uodjogc3RyaW5nKSB7XG4gICAgdGhpcy56ZXJvU3RhdGVNZXNzYWdlJC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgemVyb1N0YXRlTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnplcm9TdGF0ZU1lc3NhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBCT1RUT01fT0ZGU0VUID0gMjQ7XG4gIHJlYWRvbmx5IExFRlRfUklHSFRfT0ZGU0VUID0gNDg7XG4gIHJlYWRvbmx5IFRPUF9QQURESU5HID0gMTY7XG4gIHJlYWRvbmx5IExFRlRfUklHSFRfUEFERElORyA9IDg7XG4gIHJlYWRvbmx5IEJPVFRPTV9QQURESU5HID0gODtcbiAgcmVhZG9ubHkgWV9USUNLX0NPVU5UID0gNTtcbiAgcmVhZG9ubHkgUE9JTlRfUkFESVVTID0gMy41O1xuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZSQgPSB0aGlzLmlucHV0JC5waXBlKFxuICAgIG1hcChnZXREYXRlUmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcnZhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVydmFsPihERUZBVUxUX0lOVEVSVkFMKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbnRlcnZhbCh2OiBJbnRlcnZhbCkge1xuICAgIGlmICh2ICE9PSB0aGlzLmludGVydmFsJC5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLmludGVydmFsJC5uZXh0KHYpO1xuICAgICAgdGhpcy5pbnRlcnZhbENoYW5nZWQuZW1pdCh2KTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCBpbnRlcnZhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnZhbCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBpbnRlcnZhbENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEludGVydmFsPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRyb2xzJylcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xzPzogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd0xlZ2VuZFRvZ2dsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhbGxvd0xlZ2VuZFRvZ2dsZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGxvd0xlZ2VuZFRvZ2dsZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFsbG93TGVnZW5kVG9nZ2xlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93TGVnZW5kVG9nZ2xlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBncm91cGVkVG9vbHRpcHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBncm91cGVkVG9vbHRpcHModjogYm9vbGVhbikge1xuICAgIHRoaXMuZ3JvdXBlZFRvb2x0aXBzJC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgZ3JvdXBlZFRvb2x0aXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwZWRUb29sdGlwcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBtYXJrZXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lU2VyaWVzQ29tcG9uZW50Lk1hcmtlckNsaWNrZWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYXhQb2ludHMkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWR0aCQsIHRoaXMuaW5wdXQkXSkucGlwZShcbiAgICBtYXAoKFt3aWR0aCwgaW5wdXRdKSA9PiB7XG4gICAgICBjb25zdCBpbm5lcldpZHRoID0gd2lkdGggLSB0aGlzLkxFRlRfUklHSFRfT0ZGU0VUICogaW5wdXQubGVuZ3RoO1xuICAgICAgY29uc3QgcG9pbnRXaXRoUGFkZGluZyA9ICh0aGlzLlBPSU5UX1JBRElVUyArIDQpICogMjtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGlubmVyV2lkdGggLyBwb2ludFdpdGhQYWRkaW5nKTtcbiAgICB9KSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSB4TWlub3JUaWNrTGltaXQkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy53aWR0aCQsXG4gICAgdGhpcy5pbnB1dCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbd2lkdGgsIGlucHV0XSkgPT4ge1xuICAgICAgY29uc3QgaW5uZXJXaWR0aCA9IHdpZHRoIC0gdGhpcy5MRUZUX1JJR0hUX09GRlNFVCAqIGlucHV0Lmxlbmd0aDtcbiAgICAgIGNvbnN0IG1pblNpemVQZXJUaWNrID0gNDA7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChpbm5lcldpZHRoIC8gbWluU2l6ZVBlclRpY2spO1xuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZEludGVydmFscyQ6IE9ic2VydmFibGU8SW50ZXJ2YWxbXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlucHV0JCxcbiAgICB0aGlzLm1heFBvaW50cyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbaW5wdXQsIG1heFBvaW50c10pID0+IHtcbiAgICAgIGNvbnN0IFttaW5EYXRlVmFsdWUsIG1heERhdGVWYWx1ZV0gPSBnZXREYXRlUmFuZ2UoaW5wdXQpO1xuXG4gICAgICByZXR1cm4gaW50ZXJ2YWxzLmZpbHRlcihpbnRlcnZhbCA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGdldFRpbWVJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgIGNvbnN0IG51bVN0ZXBzID0gdGltZUludGVydmFsLnJhbmdlKFxuICAgICAgICAgIHRpbWVJbnRlcnZhbC5mbG9vcihtaW5EYXRlVmFsdWUpLFxuICAgICAgICAgIHRpbWVJbnRlcnZhbC5jZWlsKHV0Y0RheS5vZmZzZXQobWF4RGF0ZVZhbHVlLCAxKSksXG4gICAgICAgICkubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBudW1TdGVwcyA8PSBtYXhQb2ludHMgJiYgbnVtU3RlcHMgPiAxO1xuICAgICAgfSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBpbnRlcnZhbE9wdGlvbnMkID0gdGhpcy5hbGxvd2VkSW50ZXJ2YWxzJC5waXBlKFxuICAgIG1hcChpbnRlcnZhbHMgPT5cbiAgICAgIGludGVydmFscy5tYXAoXG4gICAgICAgIChpbnRlcnZhbCk6IEludGVydmFsT3B0aW9uID0+ICh7XG4gICAgICAgICAgaWQ6IGludGVydmFsLFxuICAgICAgICAgIHRpdGxlOiBnZXRJbnRlcnZhbFRpdGxlKGludGVydmFsKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZEludGVydmFsT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaW50ZXJ2YWwkLFxuICAgIHRoaXMuaW50ZXJ2YWxPcHRpb25zJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpbnRlcnZhbCwgb3B0aW9uc10pID0+IHtcbiAgICAgIGNvbnN0IGFsbG93ZWRJbnRlcnZhbHMgPSBvcHRpb25zLm1hcCgoeyBpZCB9KSA9PiBpZCBhcyBJbnRlcnZhbCk7XG4gICAgICBpZiAoIWFsbG93ZWRJbnRlcnZhbHMuaW5jbHVkZXMoaW50ZXJ2YWwpKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWxsb3dlZCA9IGFsbG93ZWRJbnRlcnZhbHMuYXQoMCk7XG4gICAgICAgIGNvbnN0IGxhc3RBbGxvd2VkID0gYWxsb3dlZEludGVydmFscy5hdCgtMSk7XG4gICAgICAgIGlmICghZmlyc3RBbGxvd2VkIHx8ICFsYXN0QWxsb3dlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGludGVydmFscy5pbmRleE9mKGludGVydmFsKSA8IGludGVydmFscy5pbmRleE9mKGZpcnN0QWxsb3dlZCkpXG4gICAgICAgICAgaW50ZXJ2YWwgPSBmaXJzdEFsbG93ZWQ7XG4gICAgICAgIGlmIChpbnRlcnZhbHMuaW5kZXhPZihpbnRlcnZhbCkgPiBpbnRlcnZhbHMuaW5kZXhPZihsYXN0QWxsb3dlZCkpXG4gICAgICAgICAgaW50ZXJ2YWwgPSBsYXN0QWxsb3dlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBpbnRlcnZhbCkgPz8gbnVsbDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSW50ZXJ2YWwkID0gdGhpcy5zZWxlY3RlZEludGVydmFsT3B0aW9uJC5waXBlKFxuICAgIG1hcChvcHRpb24gPT4gKG9wdGlvbiA/IChvcHRpb24uaWQgYXMgSW50ZXJ2YWwpIDogREVGQVVMVF9JTlRFUlZBTCkpLFxuICApO1xuXG4gIHNldEludGVydmFsT3B0aW9uKG9wdGlvbjogSW50ZXJ2YWxPcHRpb24gfCBudWxsKSB7XG4gICAgaWYgKG9wdGlvbikgdGhpcy5pbnRlcnZhbCA9IG9wdGlvbi5pZCBhcyBJbnRlcnZhbDtcbiAgfVxuXG4gIHJlYWRvbmx5IHRvZ2dsZVZpc2liaWxpdHkkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVTZXJpZXNDb21wb25lbnQuVG9nZ2xlVmlzaWJpbGl0eSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGJpbm5lZERhdGFXaXRoUmFuZ2VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaW5wdXQkLFxuICAgIHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCQsXG4gICAgdGhpcy50b2dnbGVWaXNpYmlsaXR5JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpbnB1dCwgaW50ZXJ2YWwsIHRvZ2dsZVZpc2liaWxpdHldKSA9PiB7XG4gICAgICBjb25zdCByYW5nZU1hcCA9IG5ldyBNYXA8bnVtYmVyLCBEYXRlPigpO1xuICAgICAgY29uc3Qgc2VyaWVzID0gaW5wdXQubWFwKChjb25maWcpOiBUaW1lU2VyaWVzQ29tcG9uZW50LllDb25maWcgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICBzZXJpZXM6IGNvbmZpZy5zZXJpZXMubWFwKChzZXJpZXMsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbm5lZCA9IG5ldyBNYXA8bnVtYmVyLCBUaW1lU2VyaWVzQ29tcG9uZW50LkRhdGFQb2ludFtdPigpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludCBvZiBzZXJpZXMuZGF0YSkge1xuICAgICAgICAgICAgICBjb25zdCBiaW5LZXkgPSBnZXRUaW1lSW50ZXJ2YWwoaW50ZXJ2YWwpXG4gICAgICAgICAgICAgICAgLmZsb29yKHBvaW50LmRhdGUpXG4gICAgICAgICAgICAgICAgLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHJhbmdlTWFwLmdldChiaW5LZXkpO1xuXG4gICAgICAgICAgICAgIGlmICghbWF4RGF0ZSB8fCBtYXhEYXRlIDwgcG9pbnQuZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJhbmdlTWFwLnNldChiaW5LZXksIHBvaW50LmRhdGUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFiaW5uZWQuaGFzKGJpbktleSkpIHtcbiAgICAgICAgICAgICAgICBiaW5uZWQuc2V0KGJpbktleSwgW10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJpbm5lZC5nZXQoYmluS2V5KSEucHVzaChwb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dMZWdlbmRUb2dnbGUgJiZcbiAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eSAmJlxuICAgICAgICAgICAgICBzZXJpZXMubGFiZWwgPT09IHRvZ2dsZVZpc2liaWxpdHkubGFiZWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXJpZXMudmlzaWJpbGl0eSA9IHRvZ2dsZVZpc2liaWxpdHkudmlzaWJpbGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnNlcmllcyxcbiAgICAgICAgICAgICAgZGF0YTogWy4uLmJpbm5lZC5lbnRyaWVzKCldLm1hcCgoW2RhdGVWYWx1ZSwgcG9pbnRzXSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShkYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjb25maWcucG9pbnRSZWR1Y2VyKHBvaW50cywgaSksXG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlcmllcyxcbiAgICAgICAgZ2V0UmFuZ2U6IChkYXRlOiBEYXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pbkRhdGU6IGRhdGUsXG4gICAgICAgICAgICBtYXhEYXRlOiByYW5nZU1hcC5nZXQoZGF0ZS52YWx1ZU9mKCkpISxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGJpbm5lZERhdGEkID0gdGhpcy5iaW5uZWREYXRhV2l0aFJhbmdlcyQucGlwZShcbiAgICBtYXAoYmlubmVkRGF0YSA9PiBiaW5uZWREYXRhLnNlcmllcyksXG4gICk7XG5cbiAgcmVhZG9ubHkgZ2V0UmFuZ2UkID0gdGhpcy5iaW5uZWREYXRhV2l0aFJhbmdlcyQucGlwZShcbiAgICBtYXAoYmlubmVkRGF0YSA9PiBiaW5uZWREYXRhLmdldFJhbmdlKSxcbiAgKTtcblxuICByZWFkb25seSBiaW5uZWREYXRlUmFuZ2UkID0gdGhpcy5iaW5uZWREYXRhJC5waXBlKFxuICAgIG1hcChnZXREYXRlUmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgZ2V0TWFya2VyQ2xpY2tlZChcbiAgICByYW5nZTogeyBtaW5EYXRlOiBEYXRlOyBtYXhEYXRlOiBEYXRlIH0sXG4gICAgc2VyaWVzSW5kZXg6IG51bWJlcixcbiAgICB5OiAneTEnIHwgJ3kyJyxcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJhbmdlLFxuICAgICAgc2VyaWVzSW5kZXgsXG4gICAgICB5LFxuICAgIH07XG4gIH1cblxuICByZWFkb25seSBkcmF3RGF0YSQ6IE9ic2VydmFibGU8RHJhd0RhdGE+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5iaW5uZWREYXRhJCxcbiAgICB0aGlzLmJpbm5lZERhdGVSYW5nZSQsXG4gICAgdGhpcy5zZWxlY3RlZEludGVydmFsJCxcbiAgICB0aGlzLndpZHRoJCxcbiAgICB0aGlzLnhNaW5vclRpY2tMaW1pdCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbYmlubmVkRGF0YSwgYmlubmVkRGF0ZVJhbmdlLCBpbnRlcnZhbCwgd2lkdGgsIHhNaW5vclRpY2tMaW1pdF0pID0+IHtcbiAgICAgIGNvbnN0IHZpZXdCb3ggPSBgMCAwICR7d2lkdGh9ICR7dGhpcy5IRUlHSFR9YDtcblxuICAgICAgY29uc3QgeFNjYWxlUmFuZ2VTdGFydCA9IHRoaXMuTEVGVF9SSUdIVF9QQURESU5HICsgdGhpcy5MRUZUX1JJR0hUX09GRlNFVDtcbiAgICAgIGNvbnN0IHhTY2FsZVJhbmdlRW5kID1cbiAgICAgICAgd2lkdGggLVxuICAgICAgICB0aGlzLkxFRlRfUklHSFRfUEFERElORyAqIDIgLVxuICAgICAgICAoYmlubmVkRGF0YS5sZW5ndGggPiAxID8gdGhpcy5MRUZUX1JJR0hUX09GRlNFVCA6IDApO1xuICAgICAgY29uc3QgeFNjYWxlID0gc2NhbGVMaW5lYXIoKVxuICAgICAgICAuZG9tYWluKGJpbm5lZERhdGVSYW5nZSlcbiAgICAgICAgLnJhbmdlKFt4U2NhbGVSYW5nZVN0YXJ0LCB4U2NhbGVSYW5nZUVuZF0pO1xuICAgICAgY29uc3QgW21pbkRhdGVWYWx1ZSwgbWF4RGF0ZVZhbHVlXSA9IGJpbm5lZERhdGVSYW5nZTtcbiAgICAgIGNvbnN0IGhhc011bHRpcGxlWWVhcnMgPVxuICAgICAgICBtaW5EYXRlVmFsdWUuZ2V0RnVsbFllYXIoKSA8IG1heERhdGVWYWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgeE1pbm9ySW50ZXJ2YWxGb3JtYXQgPSBnZXRNaW5vckludGVydmFsRm9ybWF0KGludGVydmFsKTtcbiAgICAgIGNvbnN0IG1pbm9yRm9ybWF0dGVyID0gdXRjRm9ybWF0KHhNaW5vckludGVydmFsRm9ybWF0KTtcbiAgICAgIGNvbnN0IHhNaW5vclRpY2tzID0gZ2V0VGltZUludGVydmFsKGludGVydmFsKVxuICAgICAgICAucmFuZ2UobWluRGF0ZVZhbHVlLCB1dGNEYXkub2Zmc2V0KG1heERhdGVWYWx1ZSwgMSkpXG4gICAgICAgIC5tYXAoZGF0ZSA9PiAoe1xuICAgICAgICAgIHZhbHVlOiB1dGNEYXkub2Zmc2V0KGRhdGUsIDApLnZhbHVlT2YoKSxcbiAgICAgICAgICBsYWJlbDogbWlub3JGb3JtYXR0ZXIoZGF0ZSksXG4gICAgICAgIH0pKVxuICAgICAgICAuZmlsdGVyKChfLCBpLCBhcnIpID0+XG4gICAgICAgICAgYXJyLmxlbmd0aCA+IHhNaW5vclRpY2tMaW1pdFxuICAgICAgICAgICAgPyBpICUgTWF0aC5jZWlsKGFyci5sZW5ndGggLyB4TWlub3JUaWNrTGltaXQpID09PSAwXG4gICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICk7XG4gICAgICBjb25zdCB4TWFqb3JJbnRlcnZhbCA9IGdldE1ham9ySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgY29uc3QgeE1ham9ySW50ZXJ2YWxGb3JtYXQgPSBnZXRNYWpvckludGVydmFsRm9ybWF0KFxuICAgICAgICB4TWFqb3JJbnRlcnZhbCxcbiAgICAgICAgaGFzTXVsdGlwbGVZZWFycyxcbiAgICAgICk7XG4gICAgICBjb25zdCB0aW1lSW50ZXJ2YWwgPSBnZXRUaW1lSW50ZXJ2YWwoeE1ham9ySW50ZXJ2YWwpO1xuICAgICAgY29uc3QgdGlja0Zsb29yID0gdGltZUludGVydmFsLmZsb29yKG1pbkRhdGVWYWx1ZSk7XG4gICAgICBjb25zdCB0aWNrQ2VpbGluZyA9IHRpbWVJbnRlcnZhbC5jZWlsKHV0Y0RheS5vZmZzZXQobWF4RGF0ZVZhbHVlLCAxKSk7XG4gICAgICBjb25zdCBtYWpvckZvcm1hdHRlciA9IHV0Y0Zvcm1hdCh4TWFqb3JJbnRlcnZhbEZvcm1hdCk7XG4gICAgICBjb25zdCB4TWFqb3JUaWNrcyA9IHRpbWVJbnRlcnZhbFxuICAgICAgICAucmFuZ2UodGlja0Zsb29yLCB0aWNrQ2VpbGluZylcbiAgICAgICAgLm1hcCh0aWNrRGF0ZSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiB4TWFqb3JJbnRlcnZhbCA9PT0gaW50ZXJ2YWwgPyAnJyA6IG1ham9yRm9ybWF0dGVyKHRpY2tEYXRlKSxcbiAgICAgICAgICB2YWx1ZTogdGlja0RhdGUudmFsdWVPZigpLFxuICAgICAgICB9KSk7XG4gICAgICBjb25zdCB4ID0geyB4TWF4OiBtYXhEYXRlVmFsdWUsIHhTY2FsZSwgeE1pbm9yVGlja3MsIHhNYWpvclRpY2tzIH07XG5cbiAgICAgIGNvbnN0IFt5MSwgeTJdID0gYmlubmVkRGF0YS5tYXAoY29uZmlnID0+IHtcbiAgICAgICAgY29uc3QgdmlzaWJsZVNlcmllcyA9IGNvbmZpZy5zZXJpZXMuZmlsdGVyKFxuICAgICAgICAgIHMgPT4gcy52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJyxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmxhdHRlbmVkVmFsdWVzID0gdmlzaWJsZVNlcmllcy5yZWR1Y2U8bnVtYmVyW10+KFxuICAgICAgICAgICh2YWx1ZXMsIHNlcmllcykgPT4gW1xuICAgICAgICAgICAgLi4udmFsdWVzLFxuICAgICAgICAgICAgLi4uc2VyaWVzLmRhdGEubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgICAgICBsZXQgeU1heCA9IGNvbmZpZy5tYXggPz8gTWF0aC5tYXgoLi4uZmxhdHRlbmVkVmFsdWVzLCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IGNvbmZpZy5taW4gPz8gTWF0aC5taW4oLi4uZmxhdHRlbmVkVmFsdWVzLCAwKTtcbiAgICAgICAgLy8gUklWRVQtMTQ2MDUgLSBpZiByYW5nZSBpcyBbMCwwXSwgbWFrZSBpdCBbMCwxXSBpbnN0ZWFkXG4gICAgICAgIGlmICh5TWF4ID09IDAgJiYgeU1pbiA9PSAwKSB7XG4gICAgICAgICAgeU1heCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeVNjYWxlID0gc2NhbGVMaW5lYXIoKVxuICAgICAgICAgIC5kb21haW4oW3lNaW4sIHlNYXhdKVxuICAgICAgICAgIC5yYW5nZShbXG4gICAgICAgICAgICB0aGlzLkhFSUdIVCAtXG4gICAgICAgICAgICAgIHRoaXMuQk9UVE9NX09GRlNFVCAtXG4gICAgICAgICAgICAgICh0aGlzLkJPVFRPTV9QQURESU5HICsgdGhpcy5UT1BfUEFERElORyksXG4gICAgICAgICAgICB0aGlzLlRPUF9QQURESU5HLFxuICAgICAgICAgIF0pO1xuICAgICAgICBjb25zdCB5VGlja3MgPSB5U2NhbGUudGlja3ModGhpcy5ZX1RJQ0tfQ09VTlQpO1xuICAgICAgICBjb25zdCBzZXJpZXMgPSBjb25maWcuc2VyaWVzLm1hcChzZXJpZXMgPT4gKHtcbiAgICAgICAgICAuLi5zZXJpZXMsXG4gICAgICAgICAgcGF0aDogbGluZTxUaW1lU2VyaWVzQ29tcG9uZW50LkRhdGFQb2ludD4oKVxuICAgICAgICAgICAgLngoZCA9PiB4U2NhbGUoZC5kYXRlKSlcbiAgICAgICAgICAgIC55KGQgPT4geVNjYWxlKGQudmFsdWUpKShzZXJpZXMuZGF0YSksXG4gICAgICAgICAgc3Ryb2tlOiBgdmFyKCR7c2VyaWVzLmNvbG9yVG9rZW59KWAsXG4gICAgICAgICAgbWFya2Vyczogc2VyaWVzLmRhdGEubWFwKHBvaW50ID0+ICh7XG4gICAgICAgICAgICAuLi5wb2ludCxcbiAgICAgICAgICAgIHg6IHhTY2FsZShwb2ludC5kYXRlKSxcbiAgICAgICAgICAgIHk6IHlTY2FsZShwb2ludC52YWx1ZSksXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIHNlcmllcyxcbiAgICAgICAgICB5TWF4LFxuICAgICAgICAgIHlNaW4sXG4gICAgICAgICAgeVNjYWxlLFxuICAgICAgICAgIHlUaWNrcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiB3ZSBoYXZlIGEgeTIsIGNvZXJjZSB5MSdzIHRpY2tzIHRvIGJlIHZpc3VhbGx5IGVxdWl2YWxlbnQgdG8geTIncyB0aWNrcy5cbiAgICAgIGlmICh5Mj8ueVRpY2tzKSB7XG4gICAgICAgIGNvbnN0IHRpY2tDb252ZXJzaW9uU2NhbGUgPSBzY2FsZUxpbmVhcigpXG4gICAgICAgICAgLnJhbmdlKHkxLnlTY2FsZS5kb21haW4oKSlcbiAgICAgICAgICAuZG9tYWluKHkyLnlTY2FsZS5kb21haW4oKSk7XG4gICAgICAgIHkxLnlUaWNrcyA9IHkyLnlUaWNrcy5tYXAodGlja0NvbnZlcnNpb25TY2FsZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IHZpZXdCb3gsIHgsIHkxLCB5MiB9O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVnZW5kJCA9IHRoaXMuYmlubmVkRGF0YSQucGlwZShcbiAgICBtYXAoYmlubmVkRGF0YSA9PlxuICAgICAgYmlubmVkRGF0YS5yZWR1Y2U8XG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgIGNvbG9yVG9rZW46IHN0cmluZztcbiAgICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScgfCAnaGlkZGVuJztcbiAgICAgICAgfVtdXG4gICAgICA+KFxuICAgICAgICAoaXRlbXMsIGNvbmZpZykgPT4gW1xuICAgICAgICAgIC4uLml0ZW1zLFxuICAgICAgICAgIC4uLmNvbmZpZy5zZXJpZXMubWFwKHNlcmllcyA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6IHNlcmllcy5sYWJlbCxcbiAgICAgICAgICAgIGNvbG9yVG9rZW46IHNlcmllcy5jb2xvclRva2VuLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogc2VyaWVzLnZpc2liaWxpdHkgPz8gJ3Zpc2libGUnLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgZW1wdHkkID0gdGhpcy5iaW5uZWREYXRhJC5waXBlKFxuICAgIG1hcChiaW5uZWREYXRhID0+XG4gICAgICBiaW5uZWREYXRhLmV2ZXJ5KGNvbmZpZyA9PlxuICAgICAgICBjb25maWcuc2VyaWVzLmV2ZXJ5KHNlcmllcyA9PiBzZXJpZXMuZGF0YS5sZW5ndGggPT09IDApLFxuICAgICAgKSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgaG92ZXJlZE1hcmtlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcbiAgICBldmVudDogTW91c2VFdmVudDtcbiAgICBtYXJrZXI6IE1hcmtlcjtcbiAgICBzZXJpZXNJbmRleDogbnVtYmVyO1xuICAgIHk6ICd5MScgfCAneTInO1xuICB9IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgY2FsbG91dCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmhvdmVyZWRNYXJrZXIkLFxuICAgIHRoaXMuZHJhd0RhdGEkLFxuICAgIHRoaXMuZ3JvdXBlZFRvb2x0aXBzJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtob3ZlcmVkTWFya2VyLCBkcmF3RGF0YSwgZ3JvdXBlZFRvb2x0aXBzXSkgPT4ge1xuICAgICAgaWYgKCFob3ZlcmVkTWFya2VyKSByZXR1cm4gbnVsbDtcblxuICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IGhvdmVyZWRNYXJrZXIuZXZlbnQ7XG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBtYXJrZXJSZWN0ID0gKDxTVkdDaXJjbGVFbGVtZW50PnRhcmdldCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBwYWRkaW5nID0gODtcbiAgICAgIGNvbnN0IGFuY2hvciA9IG5ldyBET01SZWN0KFxuICAgICAgICBtYXJrZXJSZWN0LmxlZnQgLSBwYWRkaW5nLFxuICAgICAgICBtYXJrZXJSZWN0LnRvcCAtIHBhZGRpbmcsXG4gICAgICAgIG1hcmtlclJlY3Qud2lkdGggKyBwYWRkaW5nICogMixcbiAgICAgICAgbWFya2VyUmVjdC5oZWlnaHQgKyBwYWRkaW5nICogMixcbiAgICAgICk7XG5cbiAgICAgIHR5cGUgTWV0cmljID0geyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBjb2xvclRva2VuOiBzdHJpbmcgfTtcbiAgICAgIGNvbnN0IG1ldHJpY3M6IE1ldHJpY1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkcmF3RGF0YS55MS5zZXJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHNlcmllcyA9IGRyYXdEYXRhLnkxLnNlcmllc1tpbmRleF07XG4gICAgICAgIGNvbnN0IGFsbG93ZWQgPSAhZ3JvdXBlZFRvb2x0aXBzXG4gICAgICAgICAgPyBob3ZlcmVkTWFya2VyLnkgPT0gJ3kxJyAmJiBob3ZlcmVkTWFya2VyLnNlcmllc0luZGV4ID09IGluZGV4XG4gICAgICAgICAgOiB0cnVlO1xuICAgICAgICBpZiAoc2VyaWVzLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nICYmIGFsbG93ZWQpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHNlcmllcy5tYXJrZXJzLmZpbmQoXG4gICAgICAgICAgICBtYXJrZXIgPT4gbWFya2VyLnggPT09IGhvdmVyZWRNYXJrZXIubWFya2VyLngsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7XG4gICAgICAgICAgICAgIGNvbG9yVG9rZW46IHNlcmllcy5jb2xvclRva2VuLFxuICAgICAgICAgICAgICBsYWJlbDogc2VyaWVzLmxhYmVsLFxuICAgICAgICAgICAgICB2YWx1ZTogZHJhd0RhdGEueTEudmFsdWVGb3JtYXR0ZXIobWF0Y2gudmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkcmF3RGF0YS55Mikge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZHJhd0RhdGEueTIuc2VyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IHNlcmllcyA9IGRyYXdEYXRhLnkyLnNlcmllc1tpbmRleF07XG4gICAgICAgICAgY29uc3QgYWxsb3dlZCA9ICFncm91cGVkVG9vbHRpcHNcbiAgICAgICAgICAgID8gaG92ZXJlZE1hcmtlci55ID09ICd5MicgJiYgaG92ZXJlZE1hcmtlci5zZXJpZXNJbmRleCA9PSBpbmRleFxuICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICAgIGlmIChzZXJpZXMudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicgJiYgYWxsb3dlZCkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzZXJpZXMubWFya2Vycy5maW5kKFxuICAgICAgICAgICAgICBtYXJrZXIgPT4gbWFya2VyLnggPT09IGhvdmVyZWRNYXJrZXIubWFya2VyLngsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7XG4gICAgICAgICAgICAgICAgY29sb3JUb2tlbjogc2VyaWVzLmNvbG9yVG9rZW4sXG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlcmllcy5sYWJlbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZHJhd0RhdGEueTIudmFsdWVGb3JtYXR0ZXIobWF0Y2gudmFsdWUpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgYW5jaG9yLCBtZXRyaWNzIH07XG4gICAgfSksXG4gICk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGltZVNlcmllc0NvbXBvbmVudCB7XG4gIGV4cG9ydCB0eXBlIFNlcmllcyA9IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGNvbG9yVG9rZW46IHN0cmluZztcbiAgICBkYXRhOiBUaW1lU2VyaWVzQ29tcG9uZW50LkRhdGFQb2ludFtdO1xuICAgIHN0eWxlPzogJ3NvbGlkJyB8ICdkYXNoZWQnO1xuICAgIHZpc2liaWxpdHk/OiAndmlzaWJsZScgfCAnaGlkZGVuJztcbiAgfTtcblxuICBleHBvcnQgdHlwZSBEYXRhUG9pbnQgPSB7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICBkYXRlOiBEYXRlO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIFlDb25maWcgPSB7XG4gICAgcG9pbnRSZWR1Y2VyOiAocG9pbnRzOiBEYXRhUG9pbnRbXSwgc2VyaWVzSW5kZXg6IG51bWJlcikgPT4gbnVtYmVyO1xuICAgIHZhbHVlRm9ybWF0dGVyOiAocmVkdWNlZFZhbHVlOiBudW1iZXIpID0+IHN0cmluZztcbiAgICBzZXJpZXM6IFNlcmllc1tdO1xuICAgIG1pbj86IG51bWJlcjtcbiAgICBtYXg/OiBudW1iZXI7XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgVGltZVNlcmllc0lucHV0ID0gW1lDb25maWddIHwgW1lDb25maWcsIFlDb25maWddO1xuXG4gIGV4cG9ydCB0eXBlIFRvZ2dsZVZpc2liaWxpdHkgPSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyB8ICd2aXNpYmxlJztcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYXJrZXJDbGlja2VkID0ge1xuICAgIG1pbkRhdGU6IERhdGU7XG4gICAgbWF4RGF0ZTogRGF0ZTtcbiAgICBzZXJpZXNJbmRleDogbnVtYmVyO1xuICAgIHk6ICd5MScgfCAneTInO1xuICB9O1xufVxuIiwiPGRpdlxuICAqbmdJZj1cIihlbXB0eSQgfCBhc3luYykgPT09IGZhbHNlOyBlbHNlIHplcm9TdGF0ZVwiXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbiAgKHJpdkNsaWVudFNpemUpPVwid2lkdGggPSAkZXZlbnQud2lkdGhcIlxuPlxuICA8c3ZnXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgKm5nSWY9XCJkcmF3RGF0YSQgfCBhc3luYzsgbGV0IGRcIlxuICAgIFthdHRyLnZpZXdCb3hdPVwiZC52aWV3Qm94XCJcbiAgPlxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueC54TWFqb3JUaWNrc1wiPlxuICAgICAgPHRleHRcbiAgICAgICAgKm5nSWY9XCJkLngueFNjYWxlKHRpY2sudmFsdWUpID49IDBcIlxuICAgICAgICBjbGFzcz1cIngtbWFqb3ItdGljay1sYWJlbFwiXG4gICAgICAgIFthdHRyLnhdPVwiZC54LnhTY2FsZSh0aWNrLnZhbHVlKVwiXG4gICAgICAgIFthdHRyLnldPVwiSEVJR0hUIC0gQk9UVE9NX09GRlNFVFwiXG4gICAgICAgIGR4PVwiNFwiXG4gICAgICAgIGR5PVwiLTRcIlxuICAgICAgPlxuICAgICAgICB7eyB0aWNrLmxhYmVsIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueC54TWlub3JUaWNrc1wiPlxuICAgICAgPHRleHRcbiAgICAgICAgY2xhc3M9XCJ4LW1pbm9yLXRpY2stbGFiZWxcIlxuICAgICAgICBbYXR0ci54XT1cImQueC54U2NhbGUodGljay52YWx1ZSlcIlxuICAgICAgICBbYXR0ci55XT1cIkhFSUdIVCAtIEJPVFRPTV9PRkZTRVRcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgIGRvbWluYW50LWJhc2VsaW5lPVwiaGFuZ2luZ1wiXG4gICAgICAgIGR5PVwiOFwiXG4gICAgICA+XG4gICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgPHRpdGxlPnt7IHRpY2sudmFsdWUgfCBkYXRlIH19PC90aXRsZT5cbiAgICAgIDwvdGV4dD5cbiAgICA8L2c+XG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC55MS55VGlja3NcIj5cbiAgICAgIDxyZWN0XG4gICAgICAgIGNsYXNzPVwidGlja1wiXG4gICAgICAgIHg9XCIwXCJcbiAgICAgICAgW2F0dHIueV09XCJkLnkxLnlTY2FsZSh0aWNrKVwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIGhlaWdodD1cIjFcIlxuICAgICAgPjwvcmVjdD5cbiAgICAgIDx0ZXh0IGNsYXNzPVwieS10aWNrLWxhYmVsXCIgeD1cIjBcIiBbYXR0ci55XT1cImQueTEueVNjYWxlKHRpY2spXCIgZHk9XCItNFwiPlxuICAgICAgICB7eyBkLnkxLnZhbHVlRm9ybWF0dGVyKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC55Mj8ueVRpY2tzXCI+XG4gICAgICA8dGV4dFxuICAgICAgICBjbGFzcz1cInktdGljay1sYWJlbFwiXG4gICAgICAgIFthdHRyLnhdPVwid2lkdGhcIlxuICAgICAgICBbYXR0ci55XT1cImQueTI/LnlTY2FsZSh0aWNrKVwiXG4gICAgICAgIHRleHQtYW5jaG9yPVwiZW5kXCJcbiAgICAgICAgZHk9XCItNFwiXG4gICAgICA+XG4gICAgICAgIHt7IGQueTI/LnZhbHVlRm9ybWF0dGVyKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nSWY9XCJob3ZlcmVkTWFya2VyJCB8IGFzeW5jOyBsZXQgaG92ZXJlZE1hcmtlclwiPlxuICAgICAgPGxpbmVcbiAgICAgICAgY2xhc3M9XCJob3Zlci1ydWxlXCJcbiAgICAgICAgW2F0dHIueDFdPVwiaG92ZXJlZE1hcmtlci5tYXJrZXIueFwiXG4gICAgICAgIFthdHRyLnkxXT1cImQueTEueVNjYWxlKGQueTEueU1pbilcIlxuICAgICAgICBbYXR0ci54Ml09XCJob3ZlcmVkTWFya2VyLm1hcmtlci54XCJcbiAgICAgICAgW2F0dHIueTJdPVwiZC55MS55U2NhbGUoZC55MS55TWF4KVwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICBzdHJva2UtZGFzaGFycmF5PVwiNFwiXG4gICAgICAvPlxuICAgIDwvZz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc2VyaWVzVHBsIGxldC1zZXJpZXM9XCJzZXJpZXNcIiBsZXQtaW5kZXg9XCJpbmRleFwiIGxldC15PVwieVwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgKm5nSWY9XCJzZXJpZXMudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBjbGFzcz1cImRhdGEgcGF0aFwiXG4gICAgICAgIFtjbGFzcy5tYXJrZXItaG92ZXJlZF09XCIhIShob3ZlcmVkTWFya2VyJCB8IGFzeW5jKVwiXG4gICAgICAgIFthdHRyLmRdPVwic2VyaWVzLnBhdGhcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLnN0cm9rZVwiXG4gICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwic2VyaWVzLnN0eWxlID09PSAnZGFzaGVkJyA/ICc0JyA6IG51bGxcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRSYW5nZSQgfCBhc3luYzsgbGV0IGdldFJhbmdlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1hcmtlciBvZiBzZXJpZXMubWFya2Vyc1wiPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICpuZ0lmPVwic2VyaWVzLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YSBtYXJrZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmZvY3VzZWRdPVwiXG4gICAgICAgICAgICAgIChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8ubWFya2VyPy54ID09PSBtYXJrZXIueCAmJlxuICAgICAgICAgICAgICAoZ3JvdXBlZFRvb2x0aXBzIHx8XG4gICAgICAgICAgICAgICAgKChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8uc2VyaWVzSW5kZXggPT09IGluZGV4ICYmXG4gICAgICAgICAgICAgICAgICAoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/LnkgPT09IHkpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy5ibHVycmVkXT1cIlxuICAgICAgICAgICAgICAoaG92ZXJlZE1hcmtlciQgfCBhc3luYykgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8ubWFya2VyPy54ICE9PSBtYXJrZXIueCB8fFxuICAgICAgICAgICAgICAgICgoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/Lm1hcmtlcj8ueCA9PT0gbWFya2VyLnggJiZcbiAgICAgICAgICAgICAgICAgICFncm91cGVkVG9vbHRpcHMgJiZcbiAgICAgICAgICAgICAgICAgICgoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/LnNlcmllc0luZGV4ICE9PSBpbmRleCB8fFxuICAgICAgICAgICAgICAgICAgICAoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/LnkgIT09IHkpKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5jeF09XCJtYXJrZXIueFwiXG4gICAgICAgICAgICBbYXR0ci5jeV09XCJtYXJrZXIueVwiXG4gICAgICAgICAgICBbYXR0ci5yXT1cIlBPSU5UX1JBRElVU1wiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzZXJpZXMuc3Ryb2tlXCJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiXG4gICAgICAgICAgICAgIGhvdmVyZWRNYXJrZXIkLm5leHQoe1xuICAgICAgICAgICAgICAgIGV2ZW50OiAkZXZlbnQsXG4gICAgICAgICAgICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgIHk6IHlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkTWFya2VyJC5uZXh0KG51bGwpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgbWFya2VyQ2xpY2tlZC5lbWl0KFxuICAgICAgICAgICAgICAgIGdldE1hcmtlckNsaWNrZWQoZ2V0UmFuZ2UobWFya2VyLmRhdGUpLCBpbmRleCwgeSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaG92ZXJlZE1hcmtlciQubmV4dChudWxsKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgc2VyaWVzIG9mIGQueTEuc2VyaWVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgc2VyaWVzVHBsO1xuICAgICAgICAgIGNvbnRleHQ6IHsgc2VyaWVzOiBzZXJpZXMsIGluZGV4OiBpLCB5OiAneTEnIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2c+XG4gICAgPGcgKm5nRm9yPVwibGV0IHNlcmllcyBvZiBkLnkyPy5zZXJpZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBzZXJpZXNUcGw7XG4gICAgICAgICAgY29udGV4dDogeyBzZXJpZXM6IHNlcmllcywgaW5kZXg6IGksIHk6ICd5MicgfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgPC9zdmc+XG4gIDxsZWdlbmQ+XG4gICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVnZW5kJCB8IGFzeW5jXCJcbiAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgIFtjb2xvclRva2VuXT1cIml0ZW0uY29sb3JUb2tlblwiXG4gICAgICBbdmlzaWJpbGl0eV09XCJpdGVtLnZpc2liaWxpdHlcIlxuICAgICAgW2NsaWNrYWJsZV09XCJhbGxvd0xlZ2VuZFRvZ2dsZVwiXG4gICAgICAoaXRlbUNsaWNrKT1cIlxuICAgICAgICBhbGxvd0xlZ2VuZFRvZ2dsZVxuICAgICAgICAgID8gdG9nZ2xlVmlzaWJpbGl0eSQubmV4dCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBpdGVtLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBcIlxuICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgPC9sZWdlbmQ+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGxvdXQkIHwgYXN5bmM7IGxldCBjYWxsb3V0XCI+XG4gIDxyaXYtY2FsbG91dFxuICAgICpyaXYtb3ZlcmxheVxuICAgIFthbmNob3JdPVwiY2FsbG91dC5hbmNob3JcIlxuICAgIFtpc01vZGFsXT1cImZhbHNlXCJcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2NlbnRlci1yaWdodCdcIlxuICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LXJvd1wiICpuZ0Zvcj1cImxldCBtZXRyaWMgb2YgY2FsbG91dC5tZXRyaWNzXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VyaWVzLWxhYmVsXCI+XG4gICAgICAgICAgPHJpdi1sZWdlbmQtaXRlbSBbY29sb3JUb2tlbl09XCJtZXRyaWMuY29sb3JUb2tlblwiPjwvcml2LWxlZ2VuZC1pdGVtPlxuICAgICAgICAgIDxzcGFuPnt7IG1ldHJpYy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3Bhbj57eyBtZXRyaWMudmFsdWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9yaXYtY2FsbG91dD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3plcm9TdGF0ZT5cbiAgPHJpdi16ZXJvLXN0YXRlIFttZXNzYWdlXT1cInplcm9TdGF0ZU1lc3NhZ2VcIj48L3Jpdi16ZXJvLXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9scz5cbiAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgW29wdGlvbkdyb3Vwc109XCJpbnRlcnZhbE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgW29yZGVyQnldPVwiJ3NvdXJjZSdcIlxuICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZEludGVydmFsT3B0aW9uJCB8IGFzeW5jXCJcbiAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwic2V0SW50ZXJ2YWxPcHRpb24oJGV2ZW50KVwiXG4gID48L3Jpdi1zaW1wbGUtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
374
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi90aW1lLXNlcmllcy90aW1lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3RpbWUtc2VyaWVzL3RpbWUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNMLGVBQWUsRUFFZixhQUFhLEVBQ2IsR0FBRyxFQUNILFdBQVcsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixTQUFTLEdBQ1YsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFvQixZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQUV2RSxNQUFNLGdCQUFnQixHQUFhLEtBQUssQ0FBQztBQU96Qyw2RUFBNkU7QUFDN0UsK0NBQStDO0FBQy9DLG1HQUFtRztBQU9uRyxNQUFNLE9BQU8s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LElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBR0QsSUFDVyxlQUFlLENBQUMsQ0FBVTtRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQWdGRCxpQkFBaUIsQ0FBQyxNQUE2QjtRQUM3QyxJQUFJLE1BQU07WUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFjLENBQUM7SUFDcEQsQ0FBQztJQTJFRCxnQkFBZ0IsQ0FDZCxLQUF1QyxFQUN2QyxXQUFtQixFQUNuQixDQUFjO1FBRWQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLFdBQVc7WUFDWCxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2lIQTdQVSxtQkFBbUI7cUdBQW5CLG1CQUFtQixrWkNoRGhDLGtoTUFrTUE7NEZEbEphLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs4QkFhcEMsS0FBSztzQkFEZixLQUFLO2dCQXNCSyxnQkFBZ0I7c0JBRDFCLEtBQUs7Z0JBdUJLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBWU4sZUFBZTtzQkFEZCxNQUFNO2dCQUlTLFFBQVE7c0JBRHZCLFNBQVM7dUJBQUMsVUFBVTtnQkFLVixpQkFBaUI7c0JBRDNCLEtBQUs7Z0JBVUssZUFBZTtzQkFEekIsS0FBSztnQkFTTixhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc2NhbGVMaW5lYXIgfSBmcm9tICdkMy1zY2FsZSc7XG5pbXBvcnQgeyBsaW5lIH0gZnJvbSAnZDMtc2hhcGUnO1xuaW1wb3J0IHsgdXRjRGF5IH0gZnJvbSAnZDMtdGltZSc7XG5pbXBvcnQgeyB1dGNGb3JtYXQgfSBmcm9tICdkMy10aW1lLWZvcm1hdCc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgc2hhcmVSZXBsYXksXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTnVtYmVyUGlwZSB9IGZyb20gJy4uLy4uL2Zvcm1hdC9waXBlcy9udW1iZXIucGlwZSc7XG5pbXBvcnQge1xuICBJbnRlcnZhbCxcbiAgZ2V0SW50ZXJ2YWxUaXRsZSxcbiAgZ2V0TWFqb3JJbnRlcnZhbCxcbiAgZ2V0TWFqb3JJbnRlcnZhbEZvcm1hdCxcbiAgZ2V0TWlub3JJbnRlcnZhbEZvcm1hdCxcbiAgZ2V0VGltZUludGVydmFsLFxuICBpbnRlcnZhbHMsXG59IGZyb20gJy4uL2ludGVydmFscyc7XG5pbXBvcnQgeyBEcmF3RGF0YSwgTWFya2VyLCBnZXREYXRlUmFuZ2UgfSBmcm9tICcuL3RpbWUtc2VyaWVzLmhlbHBlcnMnO1xuXG5jb25zdCBERUZBVUxUX0lOVEVSVkFMOiBJbnRlcnZhbCA9ICdkYXknO1xuXG50eXBlIEludGVydmFsT3B0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuLy8gVE9ETzogb25jZSB3ZSB1cGdyYWRlIHRvIEFuZ3VsYXIgMTYsIHRoaXMgY29tcG9uZW50IGNhbiBiZSBjbGVhbmVkIHVwIHdpdGhcbi8vIHNpZ25hbHMgaW5zdGVhZCBvZiBSeEpTLiBTZWUgY29tbWl0IGUyMzhjMmQuXG4vLyBodHRwczovL3d3dy5ub3Rpb24uc28vcml2ZXQvUmVzb2x2ZS1UT0RPcy1hZnRlci1Bbmd1bGFyLXVwZ3JhZGUtMWYyNjY3ZWIyYTMxODBiNzlmNmFkOTJhN2U1NzZmMDhcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi10aW1lLXNlcmllcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90aW1lLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RpbWUtc2VyaWVzLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVTZXJpZXNDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGlucHV0JCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxUaW1lU2VyaWVzQ29tcG9uZW50LlRpbWVTZXJpZXNJbnB1dD4oW1xuICAgICAge1xuICAgICAgICBwb2ludFJlZHVjZXI6IHBvaW50cyA9PlxuICAgICAgICAgIHBvaW50cy5yZWR1Y2UoKHRvdGFsLCB7IHZhbHVlIH0pID0+IHRvdGFsICsgdmFsdWUsIDApLFxuICAgICAgICB2YWx1ZUZvcm1hdHRlcjogdiA9PiBuZXcgTnVtYmVyUGlwZSgpLnRyYW5zZm9ybSh2KSA/PyAnJyxcbiAgICAgICAgc2VyaWVzOiBbXSxcbiAgICAgIH0sXG4gICAgXSk7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5wdXQodjogVGltZVNlcmllc0NvbXBvbmVudC5UaW1lU2VyaWVzSW5wdXQpIHtcbiAgICB0aGlzLmlucHV0JC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgaW5wdXQoKTogVGltZVNlcmllc0NvbXBvbmVudC5UaW1lU2VyaWVzSW5wdXQge1xuICAgIHJldHVybiB0aGlzLmlucHV0JC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSB3aWR0aCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByb3RlY3RlZCBzZXQgd2lkdGgodjogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCQubmV4dCh2KTtcbiAgfVxuICBwcm90ZWN0ZWQgZ2V0IHdpZHRoKCkge1xuICAgIHJldHVybiB0aGlzLndpZHRoJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcmVhZG9ubHkgSEVJR0hUID0gMzAwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgemVyb1N0YXRlTWVzc2FnZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oXG4gICAgJ05vIGRhdGEgdG8gZGlzcGxheS4nLFxuICApO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHplcm9TdGF0ZU1lc3NhZ2Uodjogc3RyaW5nKSB7XG4gICAgdGhpcy56ZXJvU3RhdGVNZXNzYWdlJC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgemVyb1N0YXRlTWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnplcm9TdGF0ZU1lc3NhZ2UkLmdldFZhbHVlKCk7XG4gIH1cblxuICByZWFkb25seSBCT1RUT01fT0ZGU0VUID0gMjQ7XG4gIHJlYWRvbmx5IExFRlRfUklHSFRfT0ZGU0VUID0gNDg7XG4gIHJlYWRvbmx5IFRPUF9QQURESU5HID0gMTY7XG4gIHJlYWRvbmx5IExFRlRfUklHSFRfUEFERElORyA9IDg7XG4gIHJlYWRvbmx5IEJPVFRPTV9QQURESU5HID0gODtcbiAgcmVhZG9ubHkgWV9USUNLX0NPVU5UID0gNTtcbiAgcmVhZG9ubHkgUE9JTlRfUkFESVVTID0gMy41O1xuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZSQgPSB0aGlzLmlucHV0JC5waXBlKFxuICAgIG1hcChnZXREYXRlUmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnRlcnZhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVydmFsPihERUZBVUxUX0lOVEVSVkFMKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpbnRlcnZhbCh2OiBJbnRlcnZhbCkge1xuICAgIGlmICh2ICE9PSB0aGlzLmludGVydmFsJC5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLmludGVydmFsJC5uZXh0KHYpO1xuICAgICAgdGhpcy5pbnRlcnZhbENoYW5nZWQuZW1pdCh2KTtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCBpbnRlcnZhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnRlcnZhbCQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBpbnRlcnZhbENoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEludGVydmFsPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRyb2xzJylcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xzPzogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhbGxvd0xlZ2VuZFRvZ2dsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhbGxvd0xlZ2VuZFRvZ2dsZSh2OiBib29sZWFuKSB7XG4gICAgdGhpcy5hbGxvd0xlZ2VuZFRvZ2dsZSQubmV4dCh2KTtcbiAgfVxuICBwdWJsaWMgZ2V0IGFsbG93TGVnZW5kVG9nZ2xlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsbG93TGVnZW5kVG9nZ2xlJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBncm91cGVkVG9vbHRpcHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgQElucHV0KClcbiAgcHVibGljIHNldCBncm91cGVkVG9vbHRpcHModjogYm9vbGVhbikge1xuICAgIHRoaXMuZ3JvdXBlZFRvb2x0aXBzJC5uZXh0KHYpO1xuICB9XG4gIHB1YmxpYyBnZXQgZ3JvdXBlZFRvb2x0aXBzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwZWRUb29sdGlwcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBtYXJrZXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxUaW1lU2VyaWVzQ29tcG9uZW50Lk1hcmtlckNsaWNrZWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtYXhQb2ludHMkID0gY29tYmluZUxhdGVzdChbdGhpcy53aWR0aCQsIHRoaXMuaW5wdXQkXSkucGlwZShcbiAgICBtYXAoKFt3aWR0aCwgaW5wdXRdKSA9PiB7XG4gICAgICBjb25zdCBpbm5lcldpZHRoID0gd2lkdGggLSB0aGlzLkxFRlRfUklHSFRfT0ZGU0VUICogaW5wdXQubGVuZ3RoO1xuICAgICAgY29uc3QgcG9pbnRXaXRoUGFkZGluZyA9ICh0aGlzLlBPSU5UX1JBRElVUyArIDQpICogMjtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGlubmVyV2lkdGggLyBwb2ludFdpdGhQYWRkaW5nKTtcbiAgICB9KSxcbiAgKTtcbiAgcHJpdmF0ZSByZWFkb25seSB4TWlub3JUaWNrTGltaXQkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy53aWR0aCQsXG4gICAgdGhpcy5pbnB1dCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbd2lkdGgsIGlucHV0XSkgPT4ge1xuICAgICAgY29uc3QgaW5uZXJXaWR0aCA9IHdpZHRoIC0gdGhpcy5MRUZUX1JJR0hUX09GRlNFVCAqIGlucHV0Lmxlbmd0aDtcbiAgICAgIGNvbnN0IG1pblNpemVQZXJUaWNrID0gNDA7XG4gICAgICByZXR1cm4gTWF0aC5yb3VuZChpbm5lcldpZHRoIC8gbWluU2l6ZVBlclRpY2spO1xuICAgIH0pLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZEludGVydmFscyQ6IE9ic2VydmFibGU8SW50ZXJ2YWxbXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmlucHV0JCxcbiAgICB0aGlzLm1heFBvaW50cyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbaW5wdXQsIG1heFBvaW50c10pID0+IHtcbiAgICAgIGNvbnN0IFttaW5EYXRlVmFsdWUsIG1heERhdGVWYWx1ZV0gPSBnZXREYXRlUmFuZ2UoaW5wdXQpO1xuXG4gICAgICByZXR1cm4gaW50ZXJ2YWxzLmZpbHRlcihpbnRlcnZhbCA9PiB7XG4gICAgICAgIGNvbnN0IHRpbWVJbnRlcnZhbCA9IGdldFRpbWVJbnRlcnZhbChpbnRlcnZhbCk7XG4gICAgICAgIGNvbnN0IG51bVN0ZXBzID0gdGltZUludGVydmFsLnJhbmdlKFxuICAgICAgICAgIHRpbWVJbnRlcnZhbC5mbG9vcihtaW5EYXRlVmFsdWUpLFxuICAgICAgICAgIHRpbWVJbnRlcnZhbC5jZWlsKHV0Y0RheS5vZmZzZXQobWF4RGF0ZVZhbHVlLCAxKSksXG4gICAgICAgICkubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBudW1TdGVwcyA8PSBtYXhQb2ludHMgJiYgbnVtU3RlcHMgPiAxO1xuICAgICAgfSk7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBpbnRlcnZhbE9wdGlvbnMkID0gdGhpcy5hbGxvd2VkSW50ZXJ2YWxzJC5waXBlKFxuICAgIG1hcChpbnRlcnZhbHMgPT5cbiAgICAgIGludGVydmFscy5tYXAoXG4gICAgICAgIChpbnRlcnZhbCk6IEludGVydmFsT3B0aW9uID0+ICh7XG4gICAgICAgICAgaWQ6IGludGVydmFsLFxuICAgICAgICAgIHRpdGxlOiBnZXRJbnRlcnZhbFRpdGxlKGludGVydmFsKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICksXG4gICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSxcbiAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZEludGVydmFsT3B0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaW50ZXJ2YWwkLFxuICAgIHRoaXMuaW50ZXJ2YWxPcHRpb25zJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpbnRlcnZhbCwgb3B0aW9uc10pID0+IHtcbiAgICAgIGNvbnN0IGFsbG93ZWRJbnRlcnZhbHMgPSBvcHRpb25zLm1hcCgoeyBpZCB9KSA9PiBpZCBhcyBJbnRlcnZhbCk7XG4gICAgICBpZiAoIWFsbG93ZWRJbnRlcnZhbHMuaW5jbHVkZXMoaW50ZXJ2YWwpKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QWxsb3dlZCA9IGFsbG93ZWRJbnRlcnZhbHMuYXQoMCk7XG4gICAgICAgIGNvbnN0IGxhc3RBbGxvd2VkID0gYWxsb3dlZEludGVydmFscy5hdCgtMSk7XG4gICAgICAgIGlmICghZmlyc3RBbGxvd2VkIHx8ICFsYXN0QWxsb3dlZCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKGludGVydmFscy5pbmRleE9mKGludGVydmFsKSA8IGludGVydmFscy5pbmRleE9mKGZpcnN0QWxsb3dlZCkpXG4gICAgICAgICAgaW50ZXJ2YWwgPSBmaXJzdEFsbG93ZWQ7XG4gICAgICAgIGlmIChpbnRlcnZhbHMuaW5kZXhPZihpbnRlcnZhbCkgPiBpbnRlcnZhbHMuaW5kZXhPZihsYXN0QWxsb3dlZCkpXG4gICAgICAgICAgaW50ZXJ2YWwgPSBsYXN0QWxsb3dlZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb25zLmZpbmQobyA9PiBvLmlkID09PSBpbnRlcnZhbCkgPz8gbnVsbDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSW50ZXJ2YWwkID0gdGhpcy5zZWxlY3RlZEludGVydmFsT3B0aW9uJC5waXBlKFxuICAgIG1hcChvcHRpb24gPT4gKG9wdGlvbiA/IChvcHRpb24uaWQgYXMgSW50ZXJ2YWwpIDogREVGQVVMVF9JTlRFUlZBTCkpLFxuICApO1xuXG4gIHNldEludGVydmFsT3B0aW9uKG9wdGlvbjogSW50ZXJ2YWxPcHRpb24gfCBudWxsKSB7XG4gICAgaWYgKG9wdGlvbikgdGhpcy5pbnRlcnZhbCA9IG9wdGlvbi5pZCBhcyBJbnRlcnZhbDtcbiAgfVxuXG4gIHJlYWRvbmx5IHRvZ2dsZVZpc2liaWxpdHkkID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVTZXJpZXNDb21wb25lbnQuVG9nZ2xlVmlzaWJpbGl0eSB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGJpbm5lZERhdGFXaXRoUmFuZ2VzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaW5wdXQkLFxuICAgIHRoaXMuc2VsZWN0ZWRJbnRlcnZhbCQsXG4gICAgdGhpcy50b2dnbGVWaXNpYmlsaXR5JCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpbnB1dCwgaW50ZXJ2YWwsIHRvZ2dsZVZpc2liaWxpdHldKSA9PiB7XG4gICAgICBjb25zdCByYW5nZU1hcCA9IG5ldyBNYXA8bnVtYmVyLCBEYXRlPigpO1xuICAgICAgY29uc3Qgc2VyaWVzID0gaW5wdXQubWFwKChjb25maWcpOiBUaW1lU2VyaWVzQ29tcG9uZW50LllDb25maWcgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgICBzZXJpZXM6IGNvbmZpZy5zZXJpZXMubWFwKChzZXJpZXMsIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJpbm5lZCA9IG5ldyBNYXA8bnVtYmVyLCBUaW1lU2VyaWVzQ29tcG9uZW50LkRhdGFQb2ludFtdPigpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwb2ludCBvZiBzZXJpZXMuZGF0YSkge1xuICAgICAgICAgICAgICBjb25zdCBiaW5LZXkgPSBnZXRUaW1lSW50ZXJ2YWwoaW50ZXJ2YWwpXG4gICAgICAgICAgICAgICAgLmZsb29yKHBvaW50LmRhdGUpXG4gICAgICAgICAgICAgICAgLnZhbHVlT2YoKTtcbiAgICAgICAgICAgICAgY29uc3QgbWF4RGF0ZSA9IHJhbmdlTWFwLmdldChiaW5LZXkpO1xuXG4gICAgICAgICAgICAgIGlmICghbWF4RGF0ZSB8fCBtYXhEYXRlIDwgcG9pbnQuZGF0ZSkge1xuICAgICAgICAgICAgICAgIHJhbmdlTWFwLnNldChiaW5LZXksIHBvaW50LmRhdGUpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFiaW5uZWQuaGFzKGJpbktleSkpIHtcbiAgICAgICAgICAgICAgICBiaW5uZWQuc2V0KGJpbktleSwgW10pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJpbm5lZC5nZXQoYmluS2V5KSEucHVzaChwb2ludCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dMZWdlbmRUb2dnbGUgJiZcbiAgICAgICAgICAgICAgdG9nZ2xlVmlzaWJpbGl0eSAmJlxuICAgICAgICAgICAgICBzZXJpZXMubGFiZWwgPT09IHRvZ2dsZVZpc2liaWxpdHkubGFiZWxcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBzZXJpZXMudmlzaWJpbGl0eSA9IHRvZ2dsZVZpc2liaWxpdHkudmlzaWJpbGl0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnNlcmllcyxcbiAgICAgICAgICAgICAgZGF0YTogWy4uLmJpbm5lZC5lbnRyaWVzKCldLm1hcCgoW2RhdGVWYWx1ZSwgcG9pbnRzXSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShkYXRlVmFsdWUpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjb25maWcucG9pbnRSZWR1Y2VyKHBvaW50cywgaSksXG4gICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNlcmllcyxcbiAgICAgICAgZ2V0UmFuZ2U6IChkYXRlOiBEYXRlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG1pbkRhdGU6IGRhdGUsXG4gICAgICAgICAgICBtYXhEYXRlOiByYW5nZU1hcC5nZXQoZGF0ZS52YWx1ZU9mKCkpISxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGJpbm5lZERhdGEkID0gdGhpcy5iaW5uZWREYXRhV2l0aFJhbmdlcyQucGlwZShcbiAgICBtYXAoYmlubmVkRGF0YSA9PiBiaW5uZWREYXRhLnNlcmllcyksXG4gICk7XG5cbiAgcmVhZG9ubHkgZ2V0UmFuZ2UkID0gdGhpcy5iaW5uZWREYXRhV2l0aFJhbmdlcyQucGlwZShcbiAgICBtYXAoYmlubmVkRGF0YSA9PiBiaW5uZWREYXRhLmdldFJhbmdlKSxcbiAgKTtcblxuICByZWFkb25seSBiaW5uZWREYXRlUmFuZ2UkID0gdGhpcy5iaW5uZWREYXRhJC5waXBlKFxuICAgIG1hcChnZXREYXRlUmFuZ2UpLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgZ2V0TWFya2VyQ2xpY2tlZChcbiAgICByYW5nZTogeyBtaW5EYXRlOiBEYXRlOyBtYXhEYXRlOiBEYXRlIH0sXG4gICAgc2VyaWVzSW5kZXg6IG51bWJlcixcbiAgICB5OiAneTEnIHwgJ3kyJyxcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJhbmdlLFxuICAgICAgc2VyaWVzSW5kZXgsXG4gICAgICB5LFxuICAgIH07XG4gIH1cblxuICByZWFkb25seSBkcmF3RGF0YSQ6IE9ic2VydmFibGU8RHJhd0RhdGE+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5iaW5uZWREYXRhJCxcbiAgICB0aGlzLmJpbm5lZERhdGVSYW5nZSQsXG4gICAgdGhpcy5zZWxlY3RlZEludGVydmFsJCxcbiAgICB0aGlzLndpZHRoJCxcbiAgICB0aGlzLnhNaW5vclRpY2tMaW1pdCQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbYmlubmVkRGF0YSwgYmlubmVkRGF0ZVJhbmdlLCBpbnRlcnZhbCwgd2lkdGgsIHhNaW5vclRpY2tMaW1pdF0pID0+IHtcbiAgICAgIGNvbnN0IHZpZXdCb3ggPSBgMCAwICR7d2lkdGh9ICR7dGhpcy5IRUlHSFR9YDtcblxuICAgICAgY29uc3QgeFNjYWxlUmFuZ2VTdGFydCA9IHRoaXMuTEVGVF9SSUdIVF9QQURESU5HICsgdGhpcy5MRUZUX1JJR0hUX09GRlNFVDtcbiAgICAgIGNvbnN0IHhTY2FsZVJhbmdlRW5kID1cbiAgICAgICAgd2lkdGggLVxuICAgICAgICB0aGlzLkxFRlRfUklHSFRfUEFERElORyAqIDIgLVxuICAgICAgICAoYmlubmVkRGF0YS5sZW5ndGggPiAxID8gdGhpcy5MRUZUX1JJR0hUX09GRlNFVCA6IDApO1xuICAgICAgY29uc3QgeFNjYWxlID0gc2NhbGVMaW5lYXIoKVxuICAgICAgICAuZG9tYWluKGJpbm5lZERhdGVSYW5nZSlcbiAgICAgICAgLnJhbmdlKFt4U2NhbGVSYW5nZVN0YXJ0LCB4U2NhbGVSYW5nZUVuZF0pO1xuICAgICAgY29uc3QgW21pbkRhdGVWYWx1ZSwgbWF4RGF0ZVZhbHVlXSA9IGJpbm5lZERhdGVSYW5nZTtcbiAgICAgIGNvbnN0IGhhc011bHRpcGxlWWVhcnMgPVxuICAgICAgICBtaW5EYXRlVmFsdWUuZ2V0RnVsbFllYXIoKSA8IG1heERhdGVWYWx1ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgY29uc3QgeE1pbm9ySW50ZXJ2YWxGb3JtYXQgPSBnZXRNaW5vckludGVydmFsRm9ybWF0KGludGVydmFsKTtcbiAgICAgIGNvbnN0IG1pbm9yRm9ybWF0dGVyID0gdXRjRm9ybWF0KHhNaW5vckludGVydmFsRm9ybWF0KTtcbiAgICAgIGNvbnN0IHhNaW5vclRpY2tzID0gZ2V0VGltZUludGVydmFsKGludGVydmFsKVxuICAgICAgICAucmFuZ2UobWluRGF0ZVZhbHVlLCB1dGNEYXkub2Zmc2V0KG1heERhdGVWYWx1ZSwgMSkpXG4gICAgICAgIC5tYXAoZGF0ZSA9PiAoe1xuICAgICAgICAgIHZhbHVlOiB1dGNEYXkub2Zmc2V0KGRhdGUsIDApLnZhbHVlT2YoKSxcbiAgICAgICAgICBsYWJlbDogbWlub3JGb3JtYXR0ZXIoZGF0ZSksXG4gICAgICAgIH0pKVxuICAgICAgICAuZmlsdGVyKChfLCBpLCBhcnIpID0+XG4gICAgICAgICAgYXJyLmxlbmd0aCA+IHhNaW5vclRpY2tMaW1pdFxuICAgICAgICAgICAgPyBpICUgTWF0aC5jZWlsKGFyci5sZW5ndGggLyB4TWlub3JUaWNrTGltaXQpID09PSAwXG4gICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICk7XG4gICAgICBjb25zdCB4TWFqb3JJbnRlcnZhbCA9IGdldE1ham9ySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgY29uc3QgeE1ham9ySW50ZXJ2YWxGb3JtYXQgPSBnZXRNYWpvckludGVydmFsRm9ybWF0KFxuICAgICAgICB4TWFqb3JJbnRlcnZhbCxcbiAgICAgICAgaGFzTXVsdGlwbGVZZWFycyxcbiAgICAgICk7XG4gICAgICBjb25zdCB0aW1lSW50ZXJ2YWwgPSBnZXRUaW1lSW50ZXJ2YWwoeE1ham9ySW50ZXJ2YWwpO1xuICAgICAgY29uc3QgdGlja0Zsb29yID0gdGltZUludGVydmFsLmZsb29yKG1pbkRhdGVWYWx1ZSk7XG4gICAgICBjb25zdCB0aWNrQ2VpbGluZyA9IHRpbWVJbnRlcnZhbC5jZWlsKHV0Y0RheS5vZmZzZXQobWF4RGF0ZVZhbHVlLCAxKSk7XG4gICAgICBjb25zdCBtYWpvckZvcm1hdHRlciA9IHV0Y0Zvcm1hdCh4TWFqb3JJbnRlcnZhbEZvcm1hdCk7XG4gICAgICBjb25zdCB4TWFqb3JUaWNrcyA9IHRpbWVJbnRlcnZhbFxuICAgICAgICAucmFuZ2UodGlja0Zsb29yLCB0aWNrQ2VpbGluZylcbiAgICAgICAgLm1hcCh0aWNrRGF0ZSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiB4TWFqb3JJbnRlcnZhbCA9PT0gaW50ZXJ2YWwgPyAnJyA6IG1ham9yRm9ybWF0dGVyKHRpY2tEYXRlKSxcbiAgICAgICAgICB2YWx1ZTogdGlja0RhdGUudmFsdWVPZigpLFxuICAgICAgICB9KSk7XG4gICAgICBjb25zdCB4ID0geyB4TWF4OiBtYXhEYXRlVmFsdWUsIHhTY2FsZSwgeE1pbm9yVGlja3MsIHhNYWpvclRpY2tzIH07XG5cbiAgICAgIGNvbnN0IFt5MSwgeTJdID0gYmlubmVkRGF0YS5tYXAoY29uZmlnID0+IHtcbiAgICAgICAgY29uc3QgdmlzaWJsZVNlcmllcyA9IGNvbmZpZy5zZXJpZXMuZmlsdGVyKFxuICAgICAgICAgIHMgPT4gcy52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJyxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmxhdHRlbmVkVmFsdWVzID0gdmlzaWJsZVNlcmllcy5yZWR1Y2U8bnVtYmVyW10+KFxuICAgICAgICAgICh2YWx1ZXMsIHNlcmllcykgPT4gW1xuICAgICAgICAgICAgLi4udmFsdWVzLFxuICAgICAgICAgICAgLi4uc2VyaWVzLmRhdGEubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICApO1xuICAgICAgICBsZXQgeU1heCA9IGNvbmZpZy5tYXggPz8gTWF0aC5tYXgoLi4uZmxhdHRlbmVkVmFsdWVzLCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IGNvbmZpZy5taW4gPz8gTWF0aC5taW4oLi4uZmxhdHRlbmVkVmFsdWVzLCAwKTtcbiAgICAgICAgLy8gUklWRVQtMTQ2MDUgLSBpZiByYW5nZSBpcyBbMCwwXSwgbWFrZSBpdCBbMCwxXSBpbnN0ZWFkXG4gICAgICAgIGlmICh5TWF4ID09IDAgJiYgeU1pbiA9PSAwKSB7XG4gICAgICAgICAgeU1heCA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeVNjYWxlID0gc2NhbGVMaW5lYXIoKVxuICAgICAgICAgIC5kb21haW4oW3lNaW4sIHlNYXhdKVxuICAgICAgICAgIC5yYW5nZShbXG4gICAgICAgICAgICB0aGlzLkhFSUdIVCAtXG4gICAgICAgICAgICAgIHRoaXMuQk9UVE9NX09GRlNFVCAtXG4gICAgICAgICAgICAgICh0aGlzLkJPVFRPTV9QQURESU5HICsgdGhpcy5UT1BfUEFERElORyksXG4gICAgICAgICAgICB0aGlzLlRPUF9QQURESU5HLFxuICAgICAgICAgIF0pO1xuICAgICAgICBjb25zdCB5VGlja3MgPSB5U2NhbGUudGlja3ModGhpcy5ZX1RJQ0tfQ09VTlQpO1xuICAgICAgICBjb25zdCBzZXJpZXMgPSBjb25maWcuc2VyaWVzLm1hcChzZXJpZXMgPT4gKHtcbiAgICAgICAgICAuLi5zZXJpZXMsXG4gICAgICAgICAgcGF0aDogbGluZTxUaW1lU2VyaWVzQ29tcG9uZW50LkRhdGFQb2ludD4oKVxuICAgICAgICAgICAgLngoZCA9PiB4U2NhbGUoZC5kYXRlKSlcbiAgICAgICAgICAgIC55KGQgPT4geVNjYWxlKGQudmFsdWUpKShzZXJpZXMuZGF0YSksXG4gICAgICAgICAgc3Ryb2tlOiBgdmFyKCR7c2VyaWVzLmNvbG9yVG9rZW59KWAsXG4gICAgICAgICAgbWFya2Vyczogc2VyaWVzLmRhdGEubWFwKHBvaW50ID0+ICh7XG4gICAgICAgICAgICAuLi5wb2ludCxcbiAgICAgICAgICAgIHg6IHhTY2FsZShwb2ludC5kYXRlKSxcbiAgICAgICAgICAgIHk6IHlTY2FsZShwb2ludC52YWx1ZSksXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgIHNlcmllcyxcbiAgICAgICAgICB5TWF4LFxuICAgICAgICAgIHlNaW4sXG4gICAgICAgICAgeVNjYWxlLFxuICAgICAgICAgIHlUaWNrcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiB3ZSBoYXZlIGEgeTIsIGNvZXJjZSB5MSdzIHRpY2tzIHRvIGJlIHZpc3VhbGx5IGVxdWl2YWxlbnQgdG8geTIncyB0aWNrcy5cbiAgICAgIGlmICh5Mj8ueVRpY2tzKSB7XG4gICAgICAgIGNvbnN0IHRpY2tDb252ZXJzaW9uU2NhbGUgPSBzY2FsZUxpbmVhcigpXG4gICAgICAgICAgLnJhbmdlKHkxLnlTY2FsZS5kb21haW4oKSlcbiAgICAgICAgICAuZG9tYWluKHkyLnlTY2FsZS5kb21haW4oKSk7XG4gICAgICAgIHkxLnlUaWNrcyA9IHkyLnlUaWNrcy5tYXAodGlja0NvbnZlcnNpb25TY2FsZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IHZpZXdCb3gsIHgsIHkxLCB5MiB9O1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgbGVnZW5kJCA9IHRoaXMuYmlubmVkRGF0YSQucGlwZShcbiAgICBtYXAoYmlubmVkRGF0YSA9PlxuICAgICAgYmlubmVkRGF0YS5yZWR1Y2U8XG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICAgIGNvbG9yVG9rZW46IHN0cmluZztcbiAgICAgICAgICB2aXNpYmlsaXR5OiAndmlzaWJsZScgfCAnaGlkZGVuJztcbiAgICAgICAgfVtdXG4gICAgICA+KFxuICAgICAgICAoaXRlbXMsIGNvbmZpZykgPT4gW1xuICAgICAgICAgIC4uLml0ZW1zLFxuICAgICAgICAgIC4uLmNvbmZpZy5zZXJpZXMubWFwKHNlcmllcyA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6IHNlcmllcy5sYWJlbCxcbiAgICAgICAgICAgIGNvbG9yVG9rZW46IHNlcmllcy5jb2xvclRva2VuLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogc2VyaWVzLnZpc2liaWxpdHkgPz8gJ3Zpc2libGUnLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgXSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgICksXG4gICk7XG5cbiAgcmVhZG9ubHkgZW1wdHkkID0gdGhpcy5iaW5uZWREYXRhJC5waXBlKFxuICAgIG1hcChiaW5uZWREYXRhID0+XG4gICAgICBiaW5uZWREYXRhLmV2ZXJ5KGNvbmZpZyA9PlxuICAgICAgICBjb25maWcuc2VyaWVzLmV2ZXJ5KHNlcmllcyA9PiBzZXJpZXMuZGF0YS5sZW5ndGggPT09IDApLFxuICAgICAgKSxcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgaG92ZXJlZE1hcmtlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcbiAgICBldmVudDogTW91c2VFdmVudDtcbiAgICBtYXJrZXI6IE1hcmtlcjtcbiAgICBzZXJpZXNJbmRleDogbnVtYmVyO1xuICAgIHk6ICd5MScgfCAneTInO1xuICB9IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgY2FsbG91dCQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmhvdmVyZWRNYXJrZXIkLFxuICAgIHRoaXMuZHJhd0RhdGEkLFxuICAgIHRoaXMuZ3JvdXBlZFRvb2x0aXBzJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtob3ZlcmVkTWFya2VyLCBkcmF3RGF0YSwgZ3JvdXBlZFRvb2x0aXBzXSkgPT4ge1xuICAgICAgaWYgKCFob3ZlcmVkTWFya2VyKSByZXR1cm4gbnVsbDtcblxuICAgICAgY29uc3QgeyB0YXJnZXQgfSA9IGhvdmVyZWRNYXJrZXIuZXZlbnQ7XG4gICAgICBpZiAoIXRhcmdldCkgcmV0dXJuIG51bGw7XG4gICAgICBjb25zdCBtYXJrZXJSZWN0ID0gKDxTVkdDaXJjbGVFbGVtZW50PnRhcmdldCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBwYWRkaW5nID0gODtcbiAgICAgIGNvbnN0IGFuY2hvciA9IG5ldyBET01SZWN0KFxuICAgICAgICBtYXJrZXJSZWN0LmxlZnQgLSBwYWRkaW5nLFxuICAgICAgICBtYXJrZXJSZWN0LnRvcCAtIHBhZGRpbmcsXG4gICAgICAgIG1hcmtlclJlY3Qud2lkdGggKyBwYWRkaW5nICogMixcbiAgICAgICAgbWFya2VyUmVjdC5oZWlnaHQgKyBwYWRkaW5nICogMixcbiAgICAgICk7XG5cbiAgICAgIHR5cGUgTWV0cmljID0geyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBjb2xvclRva2VuOiBzdHJpbmcgfTtcbiAgICAgIGNvbnN0IG1ldHJpY3M6IE1ldHJpY1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkcmF3RGF0YS55MS5zZXJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHNlcmllcyA9IGRyYXdEYXRhLnkxLnNlcmllc1tpbmRleF07XG4gICAgICAgIGNvbnN0IGFsbG93ZWQgPSAhZ3JvdXBlZFRvb2x0aXBzXG4gICAgICAgICAgPyBob3ZlcmVkTWFya2VyLnkgPT0gJ3kxJyAmJiBob3ZlcmVkTWFya2VyLnNlcmllc0luZGV4ID09IGluZGV4XG4gICAgICAgICAgOiB0cnVlO1xuICAgICAgICBpZiAoc2VyaWVzLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nICYmIGFsbG93ZWQpIHtcbiAgICAgICAgICBjb25zdCBtYXRjaCA9IHNlcmllcy5tYXJrZXJzLmZpbmQoXG4gICAgICAgICAgICBtYXJrZXIgPT4gbWFya2VyLnggPT09IGhvdmVyZWRNYXJrZXIubWFya2VyLngsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7XG4gICAgICAgICAgICAgIGNvbG9yVG9rZW46IHNlcmllcy5jb2xvclRva2VuLFxuICAgICAgICAgICAgICBsYWJlbDogc2VyaWVzLmxhYmVsLFxuICAgICAgICAgICAgICB2YWx1ZTogZHJhd0RhdGEueTEudmFsdWVGb3JtYXR0ZXIobWF0Y2gudmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkcmF3RGF0YS55Mikge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZHJhd0RhdGEueTIuc2VyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IHNlcmllcyA9IGRyYXdEYXRhLnkyLnNlcmllc1tpbmRleF07XG4gICAgICAgICAgY29uc3QgYWxsb3dlZCA9ICFncm91cGVkVG9vbHRpcHNcbiAgICAgICAgICAgID8gaG92ZXJlZE1hcmtlci55ID09ICd5MicgJiYgaG92ZXJlZE1hcmtlci5zZXJpZXNJbmRleCA9PSBpbmRleFxuICAgICAgICAgICAgOiB0cnVlO1xuICAgICAgICAgIGlmIChzZXJpZXMudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbicgJiYgYWxsb3dlZCkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzZXJpZXMubWFya2Vycy5maW5kKFxuICAgICAgICAgICAgICBtYXJrZXIgPT4gbWFya2VyLnggPT09IGhvdmVyZWRNYXJrZXIubWFya2VyLngsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7XG4gICAgICAgICAgICAgICAgY29sb3JUb2tlbjogc2VyaWVzLmNvbG9yVG9rZW4sXG4gICAgICAgICAgICAgICAgbGFiZWw6IHNlcmllcy5sYWJlbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZHJhd0RhdGEueTIudmFsdWVGb3JtYXR0ZXIobWF0Y2gudmFsdWUpLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgYW5jaG9yLCBtZXRyaWNzIH07XG4gICAgfSksXG4gICk7XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVGltZVNlcmllc0NvbXBvbmVudCB7XG4gIGV4cG9ydCB0eXBlIFNlcmllcyA9IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGNvbG9yVG9rZW46IHN0cmluZztcbiAgICBkYXRhOiBUaW1lU2VyaWVzQ29tcG9uZW50LkRhdGFQb2ludFtdO1xuICAgIHN0eWxlPzogJ3NvbGlkJyB8ICdkYXNoZWQnO1xuICAgIHZpc2liaWxpdHk/OiAndmlzaWJsZScgfCAnaGlkZGVuJztcbiAgfTtcblxuICBleHBvcnQgdHlwZSBEYXRhUG9pbnQgPSB7XG4gICAgdmFsdWU6IG51bWJlcjtcbiAgICBkYXRlOiBEYXRlO1xuICB9O1xuXG4gIGV4cG9ydCB0eXBlIFlDb25maWcgPSB7XG4gICAgcG9pbnRSZWR1Y2VyOiAocG9pbnRzOiBEYXRhUG9pbnRbXSwgc2VyaWVzSW5kZXg6IG51bWJlcikgPT4gbnVtYmVyO1xuICAgIHZhbHVlRm9ybWF0dGVyOiAocmVkdWNlZFZhbHVlOiBudW1iZXIpID0+IHN0cmluZztcbiAgICBzZXJpZXM6IFNlcmllc1tdO1xuICAgIG1pbj86IG51bWJlcjtcbiAgICBtYXg/OiBudW1iZXI7XG4gIH07XG5cbiAgZXhwb3J0IHR5cGUgVGltZVNlcmllc0lucHV0ID0gW1lDb25maWddIHwgW1lDb25maWcsIFlDb25maWddO1xuXG4gIGV4cG9ydCB0eXBlIFRvZ2dsZVZpc2liaWxpdHkgPSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyB8ICd2aXNpYmxlJztcbiAgfTtcblxuICBleHBvcnQgdHlwZSBNYXJrZXJDbGlja2VkID0ge1xuICAgIG1pbkRhdGU6IERhdGU7XG4gICAgbWF4RGF0ZTogRGF0ZTtcbiAgICBzZXJpZXNJbmRleDogbnVtYmVyO1xuICAgIHk6ICd5MScgfCAneTInO1xuICB9O1xufVxuIiwiPGRpdlxuICAqbmdJZj1cIihlbXB0eSQgfCBhc3luYykgPT09IGZhbHNlOyBlbHNlIHplcm9TdGF0ZVwiXG4gIGNsYXNzPVwiY29udGFpbmVyXCJcbiAgKHJpdkNsaWVudFNpemUpPVwid2lkdGggPSAkZXZlbnQud2lkdGhcIlxuPlxuICA8c3ZnXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgKm5nSWY9XCJkcmF3RGF0YSQgfCBhc3luYzsgbGV0IGRcIlxuICAgIFthdHRyLnZpZXdCb3hdPVwiZC52aWV3Qm94XCJcbiAgPlxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueC54TWFqb3JUaWNrc1wiPlxuICAgICAgPHRleHRcbiAgICAgICAgKm5nSWY9XCJkLngueFNjYWxlKHRpY2sudmFsdWUpID49IDBcIlxuICAgICAgICBjbGFzcz1cIngtbWFqb3ItdGljay1sYWJlbFwiXG4gICAgICAgIFthdHRyLnhdPVwiZC54LnhTY2FsZSh0aWNrLnZhbHVlKVwiXG4gICAgICAgIFthdHRyLnldPVwiSEVJR0hUIC0gQk9UVE9NX09GRlNFVFwiXG4gICAgICAgIGR4PVwiNFwiXG4gICAgICAgIGR5PVwiLTRcIlxuICAgICAgPlxuICAgICAgICB7eyB0aWNrLmxhYmVsIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuICAgIDxnICpuZ0Zvcj1cImxldCB0aWNrIG9mIGQueC54TWlub3JUaWNrc1wiPlxuICAgICAgPHRleHRcbiAgICAgICAgY2xhc3M9XCJ4LW1pbm9yLXRpY2stbGFiZWxcIlxuICAgICAgICBbYXR0ci54XT1cImQueC54U2NhbGUodGljay52YWx1ZSlcIlxuICAgICAgICBbYXR0ci55XT1cIkhFSUdIVCAtIEJPVFRPTV9PRkZTRVRcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgIGRvbWluYW50LWJhc2VsaW5lPVwiaGFuZ2luZ1wiXG4gICAgICAgIGR5PVwiOFwiXG4gICAgICA+XG4gICAgICAgIHt7IHRpY2subGFiZWwgfX1cbiAgICAgICAgPHRpdGxlPnt7IHRpY2sudmFsdWUgfCBkYXRlIH19PC90aXRsZT5cbiAgICAgIDwvdGV4dD5cbiAgICA8L2c+XG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC55MS55VGlja3NcIj5cbiAgICAgIDxyZWN0XG4gICAgICAgIGNsYXNzPVwidGlja1wiXG4gICAgICAgIHg9XCIwXCJcbiAgICAgICAgW2F0dHIueV09XCJkLnkxLnlTY2FsZSh0aWNrKVwiXG4gICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgIGhlaWdodD1cIjFcIlxuICAgICAgPjwvcmVjdD5cbiAgICAgIDx0ZXh0IGNsYXNzPVwieS10aWNrLWxhYmVsXCIgeD1cIjBcIiBbYXR0ci55XT1cImQueTEueVNjYWxlKHRpY2spXCIgZHk9XCItNFwiPlxuICAgICAgICB7eyBkLnkxLnZhbHVlRm9ybWF0dGVyKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nRm9yPVwibGV0IHRpY2sgb2YgZC55Mj8ueVRpY2tzXCI+XG4gICAgICA8dGV4dFxuICAgICAgICBjbGFzcz1cInktdGljay1sYWJlbFwiXG4gICAgICAgIFthdHRyLnhdPVwid2lkdGhcIlxuICAgICAgICBbYXR0ci55XT1cImQueTI/LnlTY2FsZSh0aWNrKVwiXG4gICAgICAgIHRleHQtYW5jaG9yPVwiZW5kXCJcbiAgICAgICAgZHk9XCItNFwiXG4gICAgICA+XG4gICAgICAgIHt7IGQueTI/LnZhbHVlRm9ybWF0dGVyKHRpY2spIH19XG4gICAgICA8L3RleHQ+XG4gICAgPC9nPlxuXG4gICAgPGcgKm5nSWY9XCJob3ZlcmVkTWFya2VyJCB8IGFzeW5jOyBsZXQgaG92ZXJlZE1hcmtlclwiPlxuICAgICAgPGxpbmVcbiAgICAgICAgY2xhc3M9XCJob3Zlci1ydWxlXCJcbiAgICAgICAgW2F0dHIueDFdPVwiaG92ZXJlZE1hcmtlci5tYXJrZXIueFwiXG4gICAgICAgIFthdHRyLnkxXT1cImQueTEueVNjYWxlKGQueTEueU1pbilcIlxuICAgICAgICBbYXR0ci54Ml09XCJob3ZlcmVkTWFya2VyLm1hcmtlci54XCJcbiAgICAgICAgW2F0dHIueTJdPVwiZC55MS55U2NhbGUoZC55MS55TWF4KVwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICBzdHJva2UtZGFzaGFycmF5PVwiNFwiXG4gICAgICAvPlxuICAgIDwvZz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjc2VyaWVzVHBsIGxldC1zZXJpZXM9XCJzZXJpZXNcIiBsZXQtaW5kZXg9XCJpbmRleFwiIGxldC15PVwieVwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgKm5nSWY9XCJzZXJpZXMudmlzaWJpbGl0eSAhPT0gJ2hpZGRlbidcIlxuICAgICAgICBjbGFzcz1cImRhdGEgcGF0aFwiXG4gICAgICAgIFtjbGFzcy5tYXJrZXItaG92ZXJlZF09XCIhIShob3ZlcmVkTWFya2VyJCB8IGFzeW5jKVwiXG4gICAgICAgIFthdHRyLmRdPVwic2VyaWVzLnBhdGhcIlxuICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICBbYXR0ci5zdHJva2VdPVwic2VyaWVzLnN0cm9rZVwiXG4gICAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwic2VyaWVzLnN0eWxlID09PSAnZGFzaGVkJyA/ICc0JyA6IG51bGxcIlxuICAgICAgPjwvcGF0aD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRSYW5nZSQgfCBhc3luYzsgbGV0IGdldFJhbmdlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1hcmtlciBvZiBzZXJpZXMubWFya2Vyc1wiPlxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICpuZ0lmPVwic2VyaWVzLnZpc2liaWxpdHkgIT09ICdoaWRkZW4nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YSBtYXJrZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmZvY3VzZWRdPVwiXG4gICAgICAgICAgICAgIChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8ubWFya2VyPy54ID09PSBtYXJrZXIueCAmJlxuICAgICAgICAgICAgICAoZ3JvdXBlZFRvb2x0aXBzIHx8XG4gICAgICAgICAgICAgICAgKChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8uc2VyaWVzSW5kZXggPT09IGluZGV4ICYmXG4gICAgICAgICAgICAgICAgICAoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/LnkgPT09IHkpKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtjbGFzcy5ibHVycmVkXT1cIlxuICAgICAgICAgICAgICAoaG92ZXJlZE1hcmtlciQgfCBhc3luYykgIT09IG51bGwgJiZcbiAgICAgICAgICAgICAgKChob3ZlcmVkTWFya2VyJCB8IGFzeW5jKT8ubWFya2VyPy54ICE9PSBtYXJrZXIueCB8fFxuICAgICAgICAgICAgICAgICgoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/Lm1hcmtlcj8ueCA9PT0gbWFya2VyLnggJiZcbiAgICAgICAgICAgICAgICAgICFncm91cGVkVG9vbHRpcHMgJiZcbiAgICAgICAgICAgICAgICAgICgoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/LnNlcmllc0luZGV4ICE9PSBpbmRleCB8fFxuICAgICAgICAgICAgICAgICAgICAoaG92ZXJlZE1hcmtlciQgfCBhc3luYyk/LnkgIT09IHkpKSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5jeF09XCJtYXJrZXIueFwiXG4gICAgICAgICAgICBbYXR0ci5jeV09XCJtYXJrZXIueVwiXG4gICAgICAgICAgICBbYXR0ci5yXT1cIlBPSU5UX1JBRElVU1wiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJzZXJpZXMuc3Ryb2tlXCJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiXG4gICAgICAgICAgICAgIGhvdmVyZWRNYXJrZXIkLm5leHQoe1xuICAgICAgICAgICAgICAgIGV2ZW50OiAkZXZlbnQsXG4gICAgICAgICAgICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICAgICAgICAgICAgc2VyaWVzSW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgIHk6IHlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkTWFya2VyJC5uZXh0KG51bGwpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgbWFya2VyQ2xpY2tlZC5lbWl0KFxuICAgICAgICAgICAgICAgIGdldE1hcmtlckNsaWNrZWQoZ2V0UmFuZ2UobWFya2VyLmRhdGUpLCBpbmRleCwgeSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaG92ZXJlZE1hcmtlciQubmV4dChudWxsKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZyAqbmdGb3I9XCJsZXQgc2VyaWVzIG9mIGQueTEuc2VyaWVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgc2VyaWVzVHBsO1xuICAgICAgICAgIGNvbnRleHQ6IHsgc2VyaWVzOiBzZXJpZXMsIGluZGV4OiBpLCB5OiAneTEnIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2c+XG4gICAgPGcgKm5nRm9yPVwibGV0IHNlcmllcyBvZiBkLnkyPy5zZXJpZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBzZXJpZXNUcGw7XG4gICAgICAgICAgY29udGV4dDogeyBzZXJpZXM6IHNlcmllcywgaW5kZXg6IGksIHk6ICd5MicgfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvZz5cbiAgPC9zdmc+XG4gIDxsZWdlbmQ+XG4gICAgPHJpdi1sZWdlbmQtaXRlbVxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGVnZW5kJCB8IGFzeW5jXCJcbiAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgIFtjb2xvclRva2VuXT1cIml0ZW0uY29sb3JUb2tlblwiXG4gICAgICBbdmlzaWJpbGl0eV09XCJpdGVtLnZpc2liaWxpdHlcIlxuICAgICAgW2NsaWNrYWJsZV09XCJhbGxvd0xlZ2VuZFRvZ2dsZVwiXG4gICAgICAoaXRlbUNsaWNrKT1cIlxuICAgICAgICBhbGxvd0xlZ2VuZFRvZ2dsZVxuICAgICAgICAgID8gdG9nZ2xlVmlzaWJpbGl0eSQubmV4dCh7XG4gICAgICAgICAgICAgIGxhYmVsOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBpdGVtLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nID8gJ3Zpc2libGUnIDogJ2hpZGRlbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBudWxsXG4gICAgICBcIlxuICAgID48L3Jpdi1sZWdlbmQtaXRlbT5cbiAgPC9sZWdlbmQ+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImNhbGxvdXQkIHwgYXN5bmM7IGxldCBjYWxsb3V0XCI+XG4gIDxyaXYtY2FsbG91dFxuICAgICpyaXYtb3ZlcmxheVxuICAgIFthbmNob3JdPVwiY2FsbG91dC5hbmNob3JcIlxuICAgIFtpc01vZGFsXT1cImZhbHNlXCJcbiAgICBbcHJlZmVycmVkUG9zaXRpb25dPVwiJ2NlbnRlci1yaWdodCdcIlxuICAgIFt0aGVtZV09XCInbGlnaHQnXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0LXJvd1wiICpuZ0Zvcj1cImxldCBtZXRyaWMgb2YgY2FsbG91dC5tZXRyaWNzXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2VyaWVzLWxhYmVsXCI+XG4gICAgICAgICAgPHJpdi1sZWdlbmQtaXRlbSBbY29sb3JUb2tlbl09XCJtZXRyaWMuY29sb3JUb2tlblwiPjwvcml2LWxlZ2VuZC1pdGVtPlxuICAgICAgICAgIDxzcGFuPnt7IG1ldHJpYy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3Bhbj57eyBtZXRyaWMudmFsdWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9yaXYtY2FsbG91dD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3plcm9TdGF0ZT5cbiAgPHJpdi16ZXJvLXN0YXRlIFttZXNzYWdlXT1cInplcm9TdGF0ZU1lc3NhZ2VcIj48L3Jpdi16ZXJvLXN0YXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjb250cm9scz5cbiAgPHJpdi1zaW1wbGUtc2VsZWN0XG4gICAgW29wdGlvbkdyb3Vwc109XCJpbnRlcnZhbE9wdGlvbnMkIHwgYXN5bmMgfCByaXZPcHRpb25Hcm91cFwiXG4gICAgW29yZGVyQnldPVwiJ3NvdXJjZSdcIlxuICAgIFtzZWxlY3RlZE9wdGlvbl09XCJzZWxlY3RlZEludGVydmFsT3B0aW9uJCB8IGFzeW5jXCJcbiAgICAoc2VsZWN0ZWRPcHRpb25DaGFuZ2UpPVwic2V0SW50ZXJ2YWxPcHRpb24oJGV2ZW50KVwiXG4gID48L3Jpdi1zaW1wbGUtc2VsZWN0PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -20,9 +20,9 @@ export class TrendComponent {
|
|
|
20
20
|
return 'trend ' + conditionalClass;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
TrendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
24
|
-
TrendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
23
|
+
TrendComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TrendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
+
TrendComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: TrendComponent, selector: "riv-trend", inputs: { label: "label", value: "value", successCondition: "successCondition" }, ngImport: i0, template: "<span [class]=\"getClasses()\">\n <riv-icon\n class=\"icon\"\n [name]=\"\n value === 0 ? 'ArrowRight' : value > 0 ? 'TrendingUp' : 'TrendingDown'\n \"\n [size]=\"16\"\n ></riv-icon>\n <span>{{ label }}</span>\n</span>\n", styles: [".success{color:var(--baja-blast-90)}.danger{color:var(--fyre-50)}.trend{display:flex;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-normal)}.icon{margin-right:var(--size-small)}\n"], dependencies: [{ kind: "component", type: i1.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TrendComponent, decorators: [{
|
|
26
26
|
type: Component,
|
|
27
27
|
args: [{ selector: 'riv-trend', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span [class]=\"getClasses()\">\n <riv-icon\n class=\"icon\"\n [name]=\"\n value === 0 ? 'ArrowRight' : value > 0 ? 'TrendingUp' : 'TrendingDown'\n \"\n [size]=\"16\"\n ></riv-icon>\n <span>{{ label }}</span>\n</span>\n", styles: [".success{color:var(--baja-blast-90)}.danger{color:var(--fyre-50)}.trend{display:flex;font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-1);font-weight:var(--font-weight-normal)}.icon{margin-right:var(--size-small)}\n"] }]
|
|
28
28
|
}], propDecorators: { label: [{
|
|
@@ -48,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
48
48
|
}
|
|
49
49
|
TrendComponent.calculatePercentageTrend = calculatePercentageTrend;
|
|
50
50
|
})(TrendComponent || (TrendComponent = {}));
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlbmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvdmlzdWFsaXphdGlvbi90cmVuZC90cmVuZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3RyZW5kL3RyZW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRMUUsTUFBTSxPQUFPLGNBQWM7SUFOM0I7UUFRRSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBR25CLFVBQUssR0FBVyxDQUFDLENBQUM7UUFHbEIscUJBQWdCLEdBQTRCLFVBQVUsQ0FBQztLQWdCeEQ7SUFkQyxVQUFVO1FBQ1IsTUFBTSxnQkFBZ0IsR0FDcEIsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDO1lBQ2QsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixLQUFLLFVBQVU7Z0JBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUM7b0JBQ2QsQ0FBQyxDQUFDLFNBQVM7b0JBQ1gsQ0FBQyxDQUFDLFFBQVE7Z0JBQ1osQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztvQkFDaEIsQ0FBQyxDQUFDLFNBQVM7b0JBQ1gsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUVmLE9BQU8sUUFBUSxHQUFHLGdCQUFnQixDQUFDO0lBQ3JDLENBQUM7OzRHQXZCVSxjQUFjO2dHQUFkLGNBQWMsbUlDUjNCLGlQQVVBOzRGREZhLGNBQWM7a0JBTjFCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxLQUFLO3NCQURKLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLOztBQW1CUixXQUFpQixjQUFjO0lBQzdCLFNBQWdCLGNBQWMsQ0FDNUIsWUFBdUMsRUFDdkMsYUFBd0M7UUFFeEMsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLGFBQWEsSUFBSSxJQUFJLElBQUksYUFBYSxLQUFLLENBQUMsRUFBRTtZQUN4RSxPQUFPLENBQUMsQ0FBQztTQUNWO1FBQ0QsT0FBTyxZQUFZLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBUmUsNkJBQWMsaUJBUTdCLENBQUE7SUFFRCxTQUFnQix3QkFBd0IsQ0FDdEMsWUFBdUMsRUFDdkMsYUFBd0M7UUFFeEMsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLGFBQWEsSUFBSSxJQUFJLEVBQUU7WUFDakQsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUNELE9BQU8sWUFBWSxHQUFHLGFBQWEsQ0FBQztJQUN0QyxDQUFDO0lBUmUsdUNBQXdCLDJCQVF2QyxDQUFBO0FBQ0gsQ0FBQyxFQXBCZ0IsY0FBYyxLQUFkLGNBQWMsUUFvQjlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LXRyZW5kJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdHJlbmQuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHJlbmRDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBsYWJlbDogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KClcbiAgdmFsdWU6IG51bWJlciA9IDA7XG5cbiAgQElucHV0KClcbiAgc3VjY2Vzc0NvbmRpdGlvbjogJ3Bvc2l0aXZlJyB8ICduZWdhdGl2ZScgPSAncG9zaXRpdmUnO1xuXG4gIGdldENsYXNzZXMoKSB7XG4gICAgY29uc3QgY29uZGl0aW9uYWxDbGFzcyA9XG4gICAgICB0aGlzLnZhbHVlID09PSAwXG4gICAgICAgID8gJydcbiAgICAgICAgOiB0aGlzLnN1Y2Nlc3NDb25kaXRpb24gPT09ICdwb3NpdGl2ZSdcbiAgICAgICAgPyB0aGlzLnZhbHVlID4gMFxuICAgICAgICAgID8gJ3N1Y2Nlc3MnXG4gICAgICAgICAgOiAnZGFuZ2VyJ1xuICAgICAgICA6IHRoaXMudmFsdWUgPCAwXG4gICAgICAgID8gJ3N1Y2Nlc3MnXG4gICAgICAgIDogJ2Rhbmdlcic7XG5cbiAgICByZXR1cm4gJ3RyZW5kICcgKyBjb25kaXRpb25hbENsYXNzO1xuICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgVHJlbmRDb21wb25lbnQge1xuICBleHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlVHJlbmQoXG4gICAgY3VycmVudFZhbHVlOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIHByZXZpb3VzVmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4gICk6IG51bWJlciB7XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSA9PSBudWxsIHx8IHByZXZpb3VzVmFsdWUgPT0gbnVsbCB8fCBwcmV2aW91c1ZhbHVlID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSAvIHByZXZpb3VzVmFsdWUgLSAxO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVBlcmNlbnRhZ2VUcmVuZChcbiAgICBjdXJyZW50VmFsdWU6IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgcHJldmlvdXNWYWx1ZTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgKTogbnVtYmVyIHtcbiAgICBpZiAoY3VycmVudFZhbHVlID09IG51bGwgfHwgcHJldmlvdXNWYWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRWYWx1ZSAtIHByZXZpb3VzVmFsdWU7XG4gIH1cbn1cbiIsIjxzcGFuIFtjbGFzc109XCJnZXRDbGFzc2VzKClcIj5cbiAgPHJpdi1pY29uXG4gICAgY2xhc3M9XCJpY29uXCJcbiAgICBbbmFtZV09XCJcbiAgICAgIHZhbHVlID09PSAwID8gJ0Fycm93UmlnaHQnIDogdmFsdWUgPiAwID8gJ1RyZW5kaW5nVXAnIDogJ1RyZW5kaW5nRG93bidcbiAgICBcIlxuICAgIFtzaXplXT1cIjE2XCJcbiAgPjwvcml2LWljb24+XG4gIDxzcGFuPnt7IGxhYmVsIH19PC9zcGFuPlxuPC9zcGFuPlxuIl19
|
|
@@ -7,9 +7,9 @@ export class ZeroStateComponent {
|
|
|
7
7
|
this.message = 'No data to display.';
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
ZeroStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
11
|
-
ZeroStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10
|
+
ZeroStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ZeroStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
ZeroStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ZeroStateComponent, selector: "riv-zero-state", inputs: { message: "message", title: "title", icon: "icon" }, ngImport: i0, template: "<riv-icon *ngIf=\"icon; let i\" [name]=\"i\" [customSize]=\"40\"></riv-icon>\n<span *ngIf=\"title; let t\" class=\"title\">{{ t }}</span>\n<span class=\"message\">{{ message }}</span>\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--size-medium);font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-large);min-height:100%}.title{font:var(--title-02)}.message{color:var(--type-light-low-contrast)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ZeroStateComponent, decorators: [{
|
|
13
13
|
type: Component,
|
|
14
14
|
args: [{ selector: 'riv-zero-state', changeDetection: ChangeDetectionStrategy.OnPush, template: "<riv-icon *ngIf=\"icon; let i\" [name]=\"i\" [customSize]=\"40\"></riv-icon>\n<span *ngIf=\"title; let t\" class=\"title\">{{ t }}</span>\n<span class=\"message\">{{ message }}</span>\n", styles: [":host{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--size-medium);font-size:var(--type-1-font-size);line-height:var(--type-1-line-height-0);color:var(--type-light-high-contrast);padding:var(--size-large);min-height:100%}.title{font:var(--title-02)}.message{color:var(--type-light-low-contrast)}\n"] }]
|
|
15
15
|
}], propDecorators: { message: [{
|
|
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
19
19
|
}], icon: [{
|
|
20
20
|
type: Input
|
|
21
21
|
}] } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemVyby1zdGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3plcm8tc3RhdGUvemVyby1zdGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi92aXN1YWxpemF0aW9uL3plcm8tc3RhdGUvemVyby1zdGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVMxRSxNQUFNLE9BQU8sa0JBQWtCO0lBTi9CO1FBUUUsWUFBTyxHQUFXLHFCQUFxQixDQUFDO0tBT3pDOztnSEFUWSxrQkFBa0I7b0dBQWxCLGtCQUFrQixvSENUL0IsMkxBR0E7NEZETWEsa0JBQWtCO2tCQU45QixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUkvQyxPQUFPO3NCQUROLEtBQUs7Z0JBSU4sS0FBSztzQkFESixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Jpdi16ZXJvLXN0YXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3plcm8tc3RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi96ZXJvLXN0YXRlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFplcm9TdGF0ZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIG1lc3NhZ2U6IHN0cmluZyA9ICdObyBkYXRhIHRvIGRpc3BsYXkuJztcblxuICBASW5wdXQoKVxuICB0aXRsZT86IHN0cmluZztcblxuICBASW5wdXQoKVxuICBpY29uPzogSWNvbkNvbXBvbmVudC5OYW1lO1xufVxuIiwiPHJpdi1pY29uICpuZ0lmPVwiaWNvbjsgbGV0IGlcIiBbbmFtZV09XCJpXCIgW2N1c3RvbVNpemVdPVwiNDBcIj48L3Jpdi1pY29uPlxuPHNwYW4gKm5nSWY9XCJ0aXRsZTsgbGV0IHRcIiBjbGFzcz1cInRpdGxlXCI+e3sgdCB9fTwvc3Bhbj5cbjxzcGFuIGNsYXNzPVwibWVzc2FnZVwiPnt7IG1lc3NhZ2UgfX08L3NwYW4+XG4iXX0=
|