@workflow/web-shared 5.0.0-beta.6 → 5.0.0-beta.8
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/dist/components/error-boundary.js +1 -1
- package/dist/components/event-list-view.d.ts +12 -0
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +26 -13
- package/dist/components/hook-actions.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/new-trace-viewer/components/copy-button.js +2 -2
- package/dist/components/new-trace-viewer/components/event-list.js +3 -3
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js +1 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js +1 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js +1 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js +1 -1
- package/dist/components/new-trace-viewer/components/split-pane.js +1 -1
- package/dist/components/new-trace-viewer/components/timeline.d.ts +1 -1
- package/dist/components/new-trace-viewer/components/timeline.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/components/timeline.js +187 -103
- package/dist/components/new-trace-viewer/context.js +1 -1
- package/dist/components/new-trace-viewer/detail-panel.js +2 -2
- package/dist/components/new-trace-viewer/icons.js +1 -1
- package/dist/components/new-trace-viewer/trace-viewer.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/trace-viewer.js +53 -26
- package/dist/components/new-trace-viewer/types.js +1 -1
- package/dist/components/new-trace-viewer/util/constants.js +1 -1
- package/dist/components/new-trace-viewer/utils.d.ts +8 -4
- package/dist/components/new-trace-viewer/utils.d.ts.map +1 -1
- package/dist/components/new-trace-viewer/utils.js +31 -6
- package/dist/components/run-trace-view.js +1 -1
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +99 -73
- package/dist/components/sidebar/conversation-view.js +1 -1
- package/dist/components/sidebar/copyable-data-block.d.ts +1 -0
- package/dist/components/sidebar/copyable-data-block.d.ts.map +1 -1
- package/dist/components/sidebar/copyable-data-block.js +16 -15
- package/dist/components/sidebar/detail-card.d.ts +5 -6
- package/dist/components/sidebar/detail-card.d.ts.map +1 -1
- package/dist/components/sidebar/detail-card.js +32 -16
- package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.js +6 -3
- package/dist/components/sidebar/events-list.d.ts.map +1 -1
- package/dist/components/sidebar/events-list.js +21 -15
- package/dist/components/sidebar/resolve-hook-modal.js +1 -1
- package/dist/components/sidebar/sidebar-data-context.js +1 -1
- package/dist/components/stream-viewer.js +1 -1
- package/dist/components/trace-viewer/components/map.js +1 -1
- package/dist/components/trace-viewer/components/markers.js +1 -1
- package/dist/components/trace-viewer/components/node.js +1 -1
- package/dist/components/trace-viewer/components/search-input.js +1 -1
- package/dist/components/trace-viewer/components/search.js +1 -1
- package/dist/components/trace-viewer/components/span-content.js +1 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js +1 -1
- package/dist/components/trace-viewer/components/span-segments.js +1 -1
- package/dist/components/trace-viewer/components/span-strategies.js +1 -1
- package/dist/components/trace-viewer/components/ui.js +1 -1
- package/dist/components/trace-viewer/components/zoom-button.js +1 -1
- package/dist/components/trace-viewer/components/zoom-icons.js +1 -1
- package/dist/components/trace-viewer/context.js +1 -1
- package/dist/components/trace-viewer/index.js +1 -1
- package/dist/components/trace-viewer/trace-viewer.js +1 -1
- package/dist/components/trace-viewer/types.js +1 -1
- package/dist/components/trace-viewer/util/constants.js +1 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js +1 -1
- package/dist/components/trace-viewer/util/timing.js +1 -1
- package/dist/components/trace-viewer/util/tree.js +1 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js +1 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js +1 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js +1 -1
- package/dist/components/trace-viewer/worker.js +1 -1
- package/dist/components/trace-viewer-new.js +1 -1
- package/dist/components/ui/alert.js +1 -1
- package/dist/components/ui/button.d.ts +10 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +39 -0
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/data-inspector.d.ts +1 -0
- package/dist/components/ui/data-inspector.d.ts.map +1 -1
- package/dist/components/ui/data-inspector.js +4 -9
- package/dist/components/ui/decrypt-button.js +1 -1
- package/dist/components/ui/error-card.js +1 -1
- package/dist/components/ui/error-stack-block.d.ts.map +1 -1
- package/dist/components/ui/error-stack-block.js +4 -18
- package/dist/components/ui/inspector-theme.js +1 -1
- package/dist/components/ui/load-more-button.js +1 -1
- package/dist/components/ui/menu-dropdown.js +1 -1
- package/dist/components/ui/skeleton.js +1 -1
- package/dist/components/ui/spinner.js +1 -1
- package/dist/components/ui/timestamp-tooltip.js +1 -1
- package/dist/components/workflow-trace-view.js +1 -1
- package/dist/components/workflow-traces/event-colors.js +1 -1
- package/dist/components/workflow-traces/trace-colors.js +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +1 -1
- package/dist/components/workflow-traces/trace-time-utils.js +1 -1
- package/dist/hooks/use-dark-mode.js +1 -1
- package/dist/hooks/use-reduced-motion.d.ts +10 -0
- package/dist/hooks/use-reduced-motion.d.ts.map +1 -0
- package/dist/hooks/use-reduced-motion.js +29 -0
- package/dist/index.js +1 -1
- package/dist/lib/event-analysis.js +1 -1
- package/dist/lib/event-materialization.js +1 -1
- package/dist/lib/hydration.js +1 -1
- package/dist/lib/stream-display.js +1 -1
- package/dist/lib/toast.js +1 -1
- package/dist/lib/trace-builder.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/package.json +5 -5
- package/src/components/event-list-view.tsx +29 -13
- package/src/components/new-trace-viewer/components/copy-button.tsx +1 -1
- package/src/components/new-trace-viewer/components/event-list.tsx +2 -2
- package/src/components/new-trace-viewer/components/timeline.tsx +353 -192
- package/src/components/new-trace-viewer/detail-panel.tsx +1 -1
- package/src/components/new-trace-viewer/trace-viewer.tsx +93 -59
- package/src/components/new-trace-viewer/utils.ts +40 -8
- package/src/components/sidebar/attribute-panel.tsx +212 -235
- package/src/components/sidebar/copyable-data-block.tsx +49 -27
- package/src/components/sidebar/detail-card.tsx +119 -41
- package/src/components/sidebar/entity-detail-panel.tsx +28 -28
- package/src/components/sidebar/events-list.tsx +51 -79
- package/src/components/ui/button.tsx +61 -0
- package/src/components/ui/data-inspector.tsx +9 -18
- package/src/components/ui/error-stack-block.tsx +7 -26
- package/src/hooks/use-reduced-motion.ts +34 -0
- package/dist/components/error-boundary.js.map +0 -1
- package/dist/components/event-list-view.js.map +0 -1
- package/dist/components/hook-actions.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/new-trace-viewer/components/copy-button.js.map +0 -1
- package/dist/components/new-trace-viewer/components/event-list.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/copy-selection.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/middle-truncate.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/truncate.js.map +0 -1
- package/dist/components/new-trace-viewer/components/middle-truncate/use-middle-truncate.js.map +0 -1
- package/dist/components/new-trace-viewer/components/split-pane.js.map +0 -1
- package/dist/components/new-trace-viewer/components/timeline.js.map +0 -1
- package/dist/components/new-trace-viewer/context.js.map +0 -1
- package/dist/components/new-trace-viewer/detail-panel.js.map +0 -1
- package/dist/components/new-trace-viewer/icons.js.map +0 -1
- package/dist/components/new-trace-viewer/trace-viewer.js.map +0 -1
- package/dist/components/new-trace-viewer/types.js.map +0 -1
- package/dist/components/new-trace-viewer/util/constants.js.map +0 -1
- package/dist/components/new-trace-viewer/utils.js.map +0 -1
- package/dist/components/run-trace-view.js.map +0 -1
- package/dist/components/sidebar/attribute-panel.js.map +0 -1
- package/dist/components/sidebar/conversation-view.js.map +0 -1
- package/dist/components/sidebar/copyable-data-block.js.map +0 -1
- package/dist/components/sidebar/detail-card.js.map +0 -1
- package/dist/components/sidebar/entity-detail-panel.js.map +0 -1
- package/dist/components/sidebar/events-list.js.map +0 -1
- package/dist/components/sidebar/resolve-hook-modal.js.map +0 -1
- package/dist/components/sidebar/sidebar-data-context.js.map +0 -1
- package/dist/components/stream-viewer.js.map +0 -1
- package/dist/components/trace-viewer/components/map.js.map +0 -1
- package/dist/components/trace-viewer/components/markers.js.map +0 -1
- package/dist/components/trace-viewer/components/node.js.map +0 -1
- package/dist/components/trace-viewer/components/search-input.js.map +0 -1
- package/dist/components/trace-viewer/components/search.js.map +0 -1
- package/dist/components/trace-viewer/components/span-content.js.map +0 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js.map +0 -1
- package/dist/components/trace-viewer/components/span-segments.js.map +0 -1
- package/dist/components/trace-viewer/components/span-strategies.js.map +0 -1
- package/dist/components/trace-viewer/components/ui.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-button.js.map +0 -1
- package/dist/components/trace-viewer/components/zoom-icons.js.map +0 -1
- package/dist/components/trace-viewer/context.js.map +0 -1
- package/dist/components/trace-viewer/index.js.map +0 -1
- package/dist/components/trace-viewer/trace-viewer.js.map +0 -1
- package/dist/components/trace-viewer/types.js.map +0 -1
- package/dist/components/trace-viewer/util/constants.js.map +0 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js.map +0 -1
- package/dist/components/trace-viewer/util/timing.js.map +0 -1
- package/dist/components/trace-viewer/util/tree.js.map +0 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js.map +0 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js.map +0 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +0 -1
- package/dist/components/trace-viewer/worker.js.map +0 -1
- package/dist/components/trace-viewer-new.js.map +0 -1
- package/dist/components/ui/alert.js.map +0 -1
- package/dist/components/ui/card.js.map +0 -1
- package/dist/components/ui/data-inspector.js.map +0 -1
- package/dist/components/ui/decrypt-button.js.map +0 -1
- package/dist/components/ui/error-card.js.map +0 -1
- package/dist/components/ui/error-stack-block.js.map +0 -1
- package/dist/components/ui/inspector-theme.js.map +0 -1
- package/dist/components/ui/load-more-button.js.map +0 -1
- package/dist/components/ui/menu-dropdown.js.map +0 -1
- package/dist/components/ui/skeleton.js.map +0 -1
- package/dist/components/ui/spinner.js.map +0 -1
- package/dist/components/ui/timestamp-tooltip.js.map +0 -1
- package/dist/components/workflow-trace-view.js.map +0 -1
- package/dist/components/workflow-traces/event-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-colors.js.map +0 -1
- package/dist/components/workflow-traces/trace-span-construction.js.map +0 -1
- package/dist/components/workflow-traces/trace-time-utils.js.map +0 -1
- package/dist/hooks/use-dark-mode.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/event-analysis.js.map +0 -1
- package/dist/lib/event-materialization.js.map +0 -1
- package/dist/lib/hydration.js.map +0 -1
- package/dist/lib/stream-display.js.map +0 -1
- package/dist/lib/toast.js.map +0 -1
- package/dist/lib/trace-builder.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
|
@@ -34,4 +34,4 @@ export class ErrorBoundary extends Component {
|
|
|
34
34
|
return this.props.children;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItYm91bmRhcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBaUI1QyxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBR2xDO0lBQ0MsWUFBWSxLQUF5QjtRQUNuQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUFjO1FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWMsRUFBRSxTQUFrQjtRQUNsRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDN0IsQ0FBQztZQUVELG1CQUFtQjtZQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDeEUsTUFBTSxZQUFZLEdBQUcsR0FBRyxFQUFFLEtBQUs7Z0JBQzdCLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLE9BQU8sR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDbEMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sSUFBSSxlQUFlLENBQUMsQ0FBQztZQUV0QyxPQUFPLENBQ0wsS0FBQyxTQUFTLElBQ1IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLG1CQUFtQixFQUM5QyxPQUFPLEVBQUUsWUFBWSxHQUNyQixDQUNILENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRXJyb3JDYXJkIH0gZnJvbSAnLi91aS9lcnJvci1jYXJkJztcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckJvdW5kYXJ5UHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAvKiogT3B0aW9uYWwgZmFsbGJhY2sgVUkgdG8gcmVuZGVyIG9uIGVycm9yLiBXaGVuIG9taXR0ZWQsIGEgZGVmYXVsdCBFcnJvckNhcmQgaXMgc2hvd24uICovXG4gIGZhbGxiYWNrPzogUmVhY3ROb2RlO1xuICAvKiogT3B0aW9uYWwgdGl0bGUgZm9yIHRoZSBkZWZhdWx0IGVycm9yIGNhcmQgKHVzZWQgd2hlbiBubyBmYWxsYmFjayBpcyBwcm92aWRlZCkgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBjYWxsYmFjayB3aGVuIGFuIGVycm9yIGlzIGNhdWdodCAqL1xuICBvbkNhdGNoPzogKGVycm9yOiB1bmtub3duLCByZXRyeTogKCkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckJvdW5kYXJ5U3RhdGUge1xuICBoYXNFcnJvcjogYm9vbGVhbjtcbiAgZXJyb3I6IHVua25vd247XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvckJvdW5kYXJ5IGV4dGVuZHMgQ29tcG9uZW50PFxuICBFcnJvckJvdW5kYXJ5UHJvcHMsXG4gIEVycm9yQm91bmRhcnlTdGF0ZVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBFcnJvckJvdW5kYXJ5UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gICAgdGhpcy5zdGF0ZSA9IHsgaGFzRXJyb3I6IGZhbHNlLCBlcnJvcjogbnVsbCB9O1xuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcjogdW5rbm93bik6IEVycm9yQm91bmRhcnlTdGF0ZSB7XG4gICAgcmV0dXJuIHsgaGFzRXJyb3I6IHRydWUsIGVycm9yIH07XG4gIH1cblxuICByZXRyeSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKHsgaGFzRXJyb3I6IGZhbHNlLCBlcnJvcjogbnVsbCB9KTtcbiAgfVxuXG4gIGNvbXBvbmVudERpZENhdGNoKGVycm9yOiB1bmtub3duLCBlcnJvckluZm86IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IsIGVycm9ySW5mbyk7XG4gICAgfVxuICAgIHRoaXMucHJvcHMub25DYXRjaD8uKGVycm9yLCAoKSA9PiB0aGlzLnJldHJ5KCkpO1xuICB9XG5cbiAgcmVuZGVyKCk6IFJlYWN0Tm9kZSB7XG4gICAgaWYgKHRoaXMuc3RhdGUuaGFzRXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmZhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLmZhbGxiYWNrO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWZhdWx0IGVycm9yIFVJXG4gICAgICBjb25zdCBlcnIgPSB0aGlzLnN0YXRlLmVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyB0aGlzLnN0YXRlLmVycm9yIDogbnVsbDtcbiAgICAgIGNvbnN0IGVycm9yRGV0YWlscyA9IGVycj8uc3RhY2tcbiAgICAgICAgPyBgJHtlcnIubWVzc2FnZX1cXG5cXG4ke2Vyci5zdGFja31gXG4gICAgICAgIDogKGVycj8ubWVzc2FnZSA/PyAnVW5rbm93biBlcnJvcicpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8RXJyb3JDYXJkXG4gICAgICAgICAgdGl0bGU9e3RoaXMucHJvcHMudGl0bGUgfHwgJ0FuIGVycm9yIG9jY3VycmVkJ31cbiAgICAgICAgICBkZXRhaWxzPXtlcnJvckRldGFpbHN9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { Event, WorkflowRun } from '@workflow/world';
|
|
2
|
+
export interface DurationInfo {
|
|
3
|
+
/** Time from created → started (ms) */
|
|
4
|
+
queued?: number;
|
|
5
|
+
/** Time from started → completed/failed/cancelled (ms) */
|
|
6
|
+
ran?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Build a map from correlationId → duration info by diffing
|
|
10
|
+
* created ↔ started (queued) and started ↔ completed/failed/cancelled (ran).
|
|
11
|
+
* Also computes run-level durations under the key '__run__'.
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildDurationMap(events: Event[]): Map<string, DurationInfo>;
|
|
2
14
|
interface EventsListProps {
|
|
3
15
|
events: Event[] | null;
|
|
4
16
|
run?: WorkflowRun | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-list-view.d.ts","sourceRoot":"","sources":["../../src/components/event-list-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-list-view.d.ts","sourceRoot":"","sources":["../../src/components/event-list-view.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA6I1D,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAwE3E;AAydD,UAAU,eAAe;IACvB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,6FAA6F;IAC7F,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,oFAAoF;IACpF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B;iFAC6E;IAC7E,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IACpD,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAoaD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,GAAG,EACH,eAAe,EACf,aAAqB,EACrB,mBAA2B,EAC3B,gBAAgB,EAChB,aAAa,EACb,SAAiB,EACjB,SAAS,EAAE,aAAa,EACxB,iBAAiB,EACjB,SAAS,EACT,YAAoB,EACpB,gBAAgB,EAAE,oBAA4B,GAC/C,EAAE,eAAe,2CAqcjB"}
|
|
@@ -112,33 +112,46 @@ function buildNameMaps(events, run) {
|
|
|
112
112
|
* created ↔ started (queued) and started ↔ completed/failed/cancelled (ran).
|
|
113
113
|
* Also computes run-level durations under the key '__run__'.
|
|
114
114
|
*/
|
|
115
|
-
function buildDurationMap(events) {
|
|
115
|
+
export function buildDurationMap(events) {
|
|
116
|
+
// Process events in chronological order so the result doesn't depend on
|
|
117
|
+
// the caller's sort direction. Retried steps emit multiple `step_started`
|
|
118
|
+
// events for the same correlationId; the queued duration must be measured
|
|
119
|
+
// against the first one, not the last.
|
|
120
|
+
const chronological = [...events].sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
|
|
116
121
|
const createdTimes = new Map();
|
|
122
|
+
const firstStartedTimes = new Map();
|
|
117
123
|
const startedTimes = new Map();
|
|
118
124
|
const durations = new Map();
|
|
119
|
-
for (const event of
|
|
125
|
+
for (const event of chronological) {
|
|
120
126
|
const ts = new Date(event.createdAt).getTime();
|
|
121
127
|
const key = event.correlationId ?? '__run__';
|
|
122
128
|
const type = event.eventType;
|
|
123
129
|
// Track created times (first event for each correlation)
|
|
124
130
|
if (type === 'step_created' || type === 'run_created') {
|
|
125
|
-
createdTimes.
|
|
131
|
+
if (!createdTimes.has(key)) {
|
|
132
|
+
createdTimes.set(key, ts);
|
|
133
|
+
}
|
|
126
134
|
}
|
|
127
135
|
// Track started times & compute queued duration
|
|
128
136
|
if (type === 'step_started' ||
|
|
129
137
|
type === 'run_started' ||
|
|
130
138
|
type === 'workflow_started') {
|
|
131
139
|
startedTimes.set(key, ts);
|
|
132
|
-
//
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
+
// The queued duration is anchored on the first start event only —
|
|
141
|
+
// subsequent step_started events come from retries.
|
|
142
|
+
if (!firstStartedTimes.has(key)) {
|
|
143
|
+
firstStartedTimes.set(key, ts);
|
|
144
|
+
// If no explicit created event was seen, use the started time as created
|
|
145
|
+
if (!createdTimes.has(key)) {
|
|
146
|
+
createdTimes.set(key, ts);
|
|
147
|
+
}
|
|
148
|
+
const createdAt = createdTimes.get(key);
|
|
149
|
+
const info = durations.get(key) ?? {};
|
|
150
|
+
if (createdAt !== undefined) {
|
|
151
|
+
info.queued = ts - createdAt;
|
|
152
|
+
}
|
|
153
|
+
durations.set(key, info);
|
|
140
154
|
}
|
|
141
|
-
durations.set(key, info);
|
|
142
155
|
}
|
|
143
156
|
// Compute ran duration on terminal events
|
|
144
157
|
if (type === 'step_completed' ||
|
|
@@ -801,4 +814,4 @@ export function EventListView({ events, run, onLoadEventData, hasMoreEvents = fa
|
|
|
801
814
|
backgroundColor: 'var(--ds-background-100)',
|
|
802
815
|
}, children: [_jsxs("span", { children: [sortedEvents.length, " event", sortedEvents.length !== 1 ? 's' : '', " loaded"] }), hasMoreEvents && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none", children: _jsx("div", { className: "pointer-events-auto", children: _jsx(LoadMoreButton, { loading: isLoadingMoreEvents, onClick: () => void onLoadMoreEvents?.() }) }) }))] })] }) }));
|
|
803
816
|
}
|
|
804
|
-
//# sourceMappingURL=event-list-view.js.map
|
|
817
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbGlzdC12aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvZXZlbnQtbGlzdC12aWV3LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBRWIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLDBCQUEwQixHQUMzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUxRDs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDaEMsYUFBYTtJQUNiLGVBQWU7SUFDZixZQUFZO0lBQ1osaUJBQWlCO0NBQ2xC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QUssRUFBRTt3QkFDTCxXQUFXLEVBQUUsMEJBQTBCO3dCQUN2QyxLQUFLLEVBQUUsb0JBQW9CO3dCQUMzQixlQUFlLEVBQUUsMEJBQTBCO3FCQUM1QyxhQUVELDJCQUNHLFlBQVksQ0FBQyxNQUFNLFlBQ25CLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFDaEMsRUFDTixhQUFhLElBQUksQ0FDaEIsY0FBSyxTQUFTLEVBQUMsdUVBQXVFLFlBQ3BGLGNBQUssU0FBUyxFQUFDLHFCQUFxQixZQUNsQyxLQUFDLGNBQWMsSUFDYixPQUFPLEVBQUUsbUJBQW1CLEVBQzVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLGdCQUFnQixFQUFFLEVBQUUsR0FDeEMsR0FDRSxHQUNGLENBQ1AsSUFDRyxJQUNGLEdBQ3VCLENBQ2hDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBwYXJzZVN0ZXBOYW1lLCBwYXJzZVdvcmtmbG93TmFtZSB9IGZyb20gJ0B3b3JrZmxvdy91dGlscy9wYXJzZS1uYW1lJztcbmltcG9ydCB0eXBlIHsgRXZlbnQsIFdvcmtmbG93UnVuIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkJztcbmltcG9ydCB7IENoZWNrLCBDaGV2cm9uUmlnaHQsIENvcHkgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBNb3VzZUV2ZW50IGFzIFJlYWN0TW91c2VFdmVudCwgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFZpcnR1b3NvLCB0eXBlIFZpcnR1b3NvSGFuZGxlIH0gZnJvbSAncmVhY3QtdmlydHVvc28nO1xuaW1wb3J0IHsgaXNFbmNyeXB0ZWRNYXJrZXIgfSBmcm9tICcuLi9saWIvaHlkcmF0aW9uJztcbmltcG9ydCB7IERlY3J5cHRCdXR0b24gfSBmcm9tICcuL3VpL2RlY3J5cHQtYnV0dG9uJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uIH0gZnJvbSAnLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IERhdGFJbnNwZWN0b3IsIERlY3J5cHRDbGlja0NvbnRleHQgfSBmcm9tICcuL3VpL2RhdGEtaW5zcGVjdG9yJztcbmltcG9ydCB7XG4gIEVycm9yU3RhY2tCbG9jayxcbiAgaXNTdHJ1Y3R1cmVkRXJyb3JXaXRoU3RhY2ssXG59IGZyb20gJy4vdWkvZXJyb3Itc3RhY2stYmxvY2snO1xuaW1wb3J0IHsgTG9hZE1vcmVCdXR0b24gfSBmcm9tICcuL3VpL2xvYWQtbW9yZS1idXR0b24nO1xuaW1wb3J0IHsgTWVudURyb3Bkb3duIH0gZnJvbSAnLi91aS9tZW51LWRyb3Bkb3duJztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi91aS9za2VsZXRvbic7XG5pbXBvcnQgeyBUaW1lc3RhbXBUb29sdGlwIH0gZnJvbSAnLi91aS90aW1lc3RhbXAtdG9vbHRpcCc7XG5cbi8qKlxuICogRXZlbnQgdHlwZXMgd2hvc2UgZXZlbnREYXRhIGNvbnRhaW5zIGFuIGVycm9yIGZpZWxkIHdpdGggYSBTdHJ1Y3R1cmVkRXJyb3IuXG4gKi9cbmNvbnN0IEVSUk9SX0VWRU5UX1RZUEVTID0gbmV3IFNldChbXG4gICdzdGVwX2ZhaWxlZCcsXG4gICdzdGVwX3JldHJ5aW5nJyxcbiAgJ3J1bl9mYWlsZWQnLFxuICAnd29ya2Zsb3dfZmFpbGVkJyxcbl0pO1xuXG5jb25zdCBCVVRUT05fUkVTRVRfU1RZTEU6IFJlYWN0LkNTU1Byb3BlcnRpZXMgPSB7XG4gIGFwcGVhcmFuY2U6ICdub25lJyxcbiAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICBib3JkZXI6ICdub25lJyxcbiAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50Jyxcbn07XG5jb25zdCBET1RfUFVMU0VfQU5JTUFUSU9OID1cbiAgJ3dvcmtmbG93LWRvdC1wdWxzZSAxLjI1cyBjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAxKSBpbmZpbml0ZSc7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gSGVscGVyc1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIGZvcm1hdEV2ZW50VGltZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgcmV0dXJuIChcbiAgICBkYXRlLnRvTG9jYWxlVGltZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgIHNlY29uZDogJzItZGlnaXQnLFxuICAgICAgaG91cjEyOiBmYWxzZSxcbiAgICB9KSArXG4gICAgJy4nICtcbiAgICBkYXRlLmdldE1pbGxpc2Vjb25kcygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMywgJzAnKVxuICApO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRFdmVudFR5cGUoZXZlbnRUeXBlOiBFdmVudFsnZXZlbnRUeXBlJ10pOiBzdHJpbmcge1xuICByZXR1cm4gZXZlbnRUeXBlXG4gICAgLnNwbGl0KCdfJylcbiAgICAubWFwKCh3b3JkOiBzdHJpbmcpID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB3b3JkLnNsaWNlKDEpKVxuICAgIC5qb2luKCcgJyk7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRXZlbnQgdHlwZSDihpIgc3RhdHVzIGNvbG9yIChzbWFsbCBkb3Qgb25seSlcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKiogUmV0dXJucyBhIENTUyBjb2xvciB1c2luZyBHZWlzdCBkZXNpZ24gdG9rZW5zIGZvciB0aGUgc3RhdHVzIGRvdC4gKi9cbmZ1bmN0aW9uIGdldFN0YXR1c0RvdENvbG9yKGV2ZW50VHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gRmFpbGVkIOKGkiByZWRcbiAgaWYgKFxuICAgIGV2ZW50VHlwZSA9PT0gJ3N0ZXBfZmFpbGVkJyB8fFxuICAgIGV2ZW50VHlwZSA9PT0gJ3J1bl9mYWlsZWQnIHx8XG4gICAgZXZlbnRUeXBlID09PSAnd29ya2Zsb3dfZmFpbGVkJ1xuICApIHtcbiAgICByZXR1cm4gJ3ZhcigtLWRzLXJlZC03MDApJztcbiAgfVxuICAvLyBDYW5jZWxsZWQg4oaSIGFtYmVyXG4gIGlmIChldmVudFR5cGUgPT09ICdydW5fY2FuY2VsbGVkJykge1xuICAgIHJldHVybiAndmFyKC0tZHMtYW1iZXItNzAwKSc7XG4gIH1cbiAgLy8gUmV0cnlpbmcg4oaSIGFtYmVyXG4gIGlmIChldmVudFR5cGUgPT09ICdzdGVwX3JldHJ5aW5nJykge1xuICAgIHJldHVybiAndmFyKC0tZHMtYW1iZXItNzAwKSc7XG4gIH1cbiAgLy8gQ29tcGxldGVkL3N1Y2NlZWRlZCDihpIgZ3JlZW5cbiAgaWYgKFxuICAgIGV2ZW50VHlwZSA9PT0gJ3N0ZXBfY29tcGxldGVkJyB8fFxuICAgIGV2ZW50VHlwZSA9PT0gJ3J1bl9jb21wbGV0ZWQnIHx8XG4gICAgZXZlbnRUeXBlID09PSAnd29ya2Zsb3dfY29tcGxldGVkJyB8fFxuICAgIGV2ZW50VHlwZSA9PT0gJ2hvb2tfZGlzcG9zZWQnIHx8XG4gICAgZXZlbnRUeXBlID09PSAnd2FpdF9jb21wbGV0ZWQnXG4gICkge1xuICAgIHJldHVybiAndmFyKC0tZHMtZ3JlZW4tNzAwKSc7XG4gIH1cbiAgLy8gU3RhcnRlZC9ydW5uaW5nIOKGkiBibHVlXG4gIGlmIChcbiAgICBldmVudFR5cGUgPT09ICdzdGVwX3N0YXJ0ZWQnIHx8XG4gICAgZXZlbnRUeXBlID09PSAncnVuX3N0YXJ0ZWQnIHx8XG4gICAgZXZlbnRUeXBlID09PSAnd29ya2Zsb3dfc3RhcnRlZCcgfHxcbiAgICBldmVudFR5cGUgPT09ICdob29rX3JlY2VpdmVkJ1xuICApIHtcbiAgICByZXR1cm4gJ3ZhcigtLWRzLWJsdWUtNzAwKSc7XG4gIH1cbiAgLy8gQ3JlYXRlZC9wZW5kaW5nIOKGkiBncmF5XG4gIHJldHVybiAndmFyKC0tZHMtZ3JheS02MDApJztcbn1cblxuLyoqXG4gKiBCdWlsZCBhIG1hcCBmcm9tIGNvcnJlbGF0aW9uSWQgKHN0ZXBJZCkg4oaSIGRpc3BsYXkgbmFtZSB1c2luZyBzdGVwX2NyZWF0ZWRcbiAqIGV2ZW50cywgYW5kIHBhcnNlIHRoZSB3b3JrZmxvdyBuYW1lIGZyb20gdGhlIHJ1bi5cbiAqL1xuZnVuY3Rpb24gYnVpbGROYW1lTWFwcyhcbiAgZXZlbnRzOiBFdmVudFtdIHwgbnVsbCxcbiAgcnVuOiBXb3JrZmxvd1J1biB8IG51bGxcbik6IHtcbiAgY29ycmVsYXRpb25OYW1lTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICB3b3JrZmxvd05hbWU6IHN0cmluZyB8IG51bGw7XG59IHtcbiAgY29uc3QgY29ycmVsYXRpb25OYW1lTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAvLyBNYXAgc3RlcCBjb3JyZWxhdGlvbklkICg9IHN0ZXBJZCkg4oaSIHBhcnNlZCBzdGVwIG5hbWUgZnJvbSBzdGVwX2NyZWF0ZWQgZXZlbnRzXG4gIGlmIChldmVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIGV2ZW50cykge1xuICAgICAgaWYgKGV2ZW50LmV2ZW50VHlwZSA9PT0gJ3N0ZXBfY3JlYXRlZCcgJiYgZXZlbnQuY29ycmVsYXRpb25JZCkge1xuICAgICAgICBjb25zdCBzdGVwTmFtZSA9IGV2ZW50LmV2ZW50RGF0YT8uc3RlcE5hbWUgPz8gJyc7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3RlcE5hbWUoU3RyaW5nKHN0ZXBOYW1lKSk7XG4gICAgICAgIGNvcnJlbGF0aW9uTmFtZU1hcC5zZXQoXG4gICAgICAgICAgZXZlbnQuY29ycmVsYXRpb25JZCxcbiAgICAgICAgICBwYXJzZWQ/LnNob3J0TmFtZSA/PyBzdGVwTmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlIHdvcmtmbG93IG5hbWUgZnJvbSBydW5cbiAgY29uc3Qgd29ya2Zsb3dOYW1lID0gcnVuPy53b3JrZmxvd05hbWVcbiAgICA/IChwYXJzZVdvcmtmbG93TmFtZShydW4ud29ya2Zsb3dOYW1lKT8uc2hvcnROYW1lID8/IHJ1bi53b3JrZmxvd05hbWUpXG4gICAgOiBudWxsO1xuXG4gIHJldHVybiB7IGNvcnJlbGF0aW9uTmFtZU1hcCwgd29ya2Zsb3dOYW1lIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYXRpb25JbmZvIHtcbiAgLyoqIFRpbWUgZnJvbSBjcmVhdGVkIOKGkiBzdGFydGVkIChtcykgKi9cbiAgcXVldWVkPzogbnVtYmVyO1xuICAvKiogVGltZSBmcm9tIHN0YXJ0ZWQg4oaSIGNvbXBsZXRlZC9mYWlsZWQvY2FuY2VsbGVkIChtcykgKi9cbiAgcmFuPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgbWFwIGZyb20gY29ycmVsYXRpb25JZCDihpIgZHVyYXRpb24gaW5mbyBieSBkaWZmaW5nXG4gKiBjcmVhdGVkIOKGlCBzdGFydGVkIChxdWV1ZWQpIGFuZCBzdGFydGVkIOKGlCBjb21wbGV0ZWQvZmFpbGVkL2NhbmNlbGxlZCAocmFuKS5cbiAqIEFsc28gY29tcHV0ZXMgcnVuLWxldmVsIGR1cmF0aW9ucyB1bmRlciB0aGUga2V5ICdfX3J1bl9fJy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRHVyYXRpb25NYXAoZXZlbnRzOiBFdmVudFtdKTogTWFwPHN0cmluZywgRHVyYXRpb25JbmZvPiB7XG4gIC8vIFByb2Nlc3MgZXZlbnRzIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIgc28gdGhlIHJlc3VsdCBkb2Vzbid0IGRlcGVuZCBvblxuICAvLyB0aGUgY2FsbGVyJ3Mgc29ydCBkaXJlY3Rpb24uIFJldHJpZWQgc3RlcHMgZW1pdCBtdWx0aXBsZSBgc3RlcF9zdGFydGVkYFxuICAvLyBldmVudHMgZm9yIHRoZSBzYW1lIGNvcnJlbGF0aW9uSWQ7IHRoZSBxdWV1ZWQgZHVyYXRpb24gbXVzdCBiZSBtZWFzdXJlZFxuICAvLyBhZ2FpbnN0IHRoZSBmaXJzdCBvbmUsIG5vdCB0aGUgbGFzdC5cbiAgY29uc3QgY2hyb25vbG9naWNhbCA9IFsuLi5ldmVudHNdLnNvcnQoXG4gICAgKGEsIGIpID0+IG5ldyBEYXRlKGEuY3JlYXRlZEF0KS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShiLmNyZWF0ZWRBdCkuZ2V0VGltZSgpXG4gICk7XG5cbiAgY29uc3QgY3JlYXRlZFRpbWVzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgY29uc3QgZmlyc3RTdGFydGVkVGltZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBjb25zdCBzdGFydGVkVGltZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBjb25zdCBkdXJhdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgRHVyYXRpb25JbmZvPigpO1xuXG4gIGZvciAoY29uc3QgZXZlbnQgb2YgY2hyb25vbG9naWNhbCkge1xuICAgIGNvbnN0IHRzID0gbmV3IERhdGUoZXZlbnQuY3JlYXRlZEF0KS5nZXRUaW1lKCk7XG4gICAgY29uc3Qga2V5ID0gZXZlbnQuY29ycmVsYXRpb25JZCA/PyAnX19ydW5fXyc7XG4gICAgY29uc3QgdHlwZTogc3RyaW5nID0gZXZlbnQuZXZlbnRUeXBlO1xuXG4gICAgLy8gVHJhY2sgY3JlYXRlZCB0aW1lcyAoZmlyc3QgZXZlbnQgZm9yIGVhY2ggY29ycmVsYXRpb24pXG4gICAgaWYgKHR5cGUgPT09ICdzdGVwX2NyZWF0ZWQnIHx8IHR5cGUgPT09ICdydW5fY3JlYXRlZCcpIHtcbiAgICAgIGlmICghY3JlYXRlZFRpbWVzLmhhcyhrZXkpKSB7XG4gICAgICAgIGNyZWF0ZWRUaW1lcy5zZXQoa2V5LCB0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVHJhY2sgc3RhcnRlZCB0aW1lcyAmIGNvbXB1dGUgcXVldWVkIGR1cmF0aW9uXG4gICAgaWYgKFxuICAgICAgdHlwZSA9PT0gJ3N0ZXBfc3RhcnRlZCcgfHxcbiAgICAgIHR5cGUgPT09ICdydW5fc3RhcnRlZCcgfHxcbiAgICAgIHR5cGUgPT09ICd3b3JrZmxvd19zdGFydGVkJ1xuICAgICkge1xuICAgICAgc3RhcnRlZFRpbWVzLnNldChrZXksIHRzKTtcbiAgICAgIC8vIFRoZSBxdWV1ZWQgZHVyYXRpb24gaXMgYW5jaG9yZWQgb24gdGhlIGZpcnN0IHN0YXJ0IGV2ZW50IG9ubHkg4oCUXG4gICAgICAvLyBzdWJzZXF1ZW50IHN0ZXBfc3RhcnRlZCBldmVudHMgY29tZSBmcm9tIHJldHJpZXMuXG4gICAgICBpZiAoIWZpcnN0U3RhcnRlZFRpbWVzLmhhcyhrZXkpKSB7XG4gICAgICAgIGZpcnN0U3RhcnRlZFRpbWVzLnNldChrZXksIHRzKTtcbiAgICAgICAgLy8gSWYgbm8gZXhwbGljaXQgY3JlYXRlZCBldmVudCB3YXMgc2VlbiwgdXNlIHRoZSBzdGFydGVkIHRpbWUgYXMgY3JlYXRlZFxuICAgICAgICBpZiAoIWNyZWF0ZWRUaW1lcy5oYXMoa2V5KSkge1xuICAgICAgICAgIGNyZWF0ZWRUaW1lcy5zZXQoa2V5LCB0cyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3JlYXRlZEF0ID0gY3JlYXRlZFRpbWVzLmdldChrZXkpO1xuICAgICAgICBjb25zdCBpbmZvID0gZHVyYXRpb25zLmdldChrZXkpID8/IHt9O1xuICAgICAgICBpZiAoY3JlYXRlZEF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmZvLnF1ZXVlZCA9IHRzIC0gY3JlYXRlZEF0O1xuICAgICAgICB9XG4gICAgICAgIGR1cmF0aW9ucy5zZXQoa2V5LCBpbmZvKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIHJhbiBkdXJhdGlvbiBvbiB0ZXJtaW5hbCBldmVudHNcbiAgICBpZiAoXG4gICAgICB0eXBlID09PSAnc3RlcF9jb21wbGV0ZWQnIHx8XG4gICAgICB0eXBlID09PSAnc3RlcF9mYWlsZWQnIHx8XG4gICAgICB0eXBlID09PSAncnVuX2NvbXBsZXRlZCcgfHxcbiAgICAgIHR5cGUgPT09ICdydW5fZmFpbGVkJyB8fFxuICAgICAgdHlwZSA9PT0gJ3J1bl9jYW5jZWxsZWQnIHx8XG4gICAgICB0eXBlID09PSAnd29ya2Zsb3dfY29tcGxldGVkJyB8fFxuICAgICAgdHlwZSA9PT0gJ3dvcmtmbG93X2ZhaWxlZCcgfHxcbiAgICAgIHR5cGUgPT09ICd3YWl0X2NvbXBsZXRlZCcgfHxcbiAgICAgIHR5cGUgPT09ICdob29rX2Rpc3Bvc2VkJ1xuICAgICkge1xuICAgICAgY29uc3Qgc3RhcnRlZEF0ID0gc3RhcnRlZFRpbWVzLmdldChrZXkpO1xuICAgICAgY29uc3QgaW5mbyA9IGR1cmF0aW9ucy5nZXQoa2V5KSA/PyB7fTtcbiAgICAgIGlmIChzdGFydGVkQXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmZvLnJhbiA9IHRzIC0gc3RhcnRlZEF0O1xuICAgICAgfVxuICAgICAgZHVyYXRpb25zLnNldChrZXksIGluZm8pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkdXJhdGlvbnM7XG59XG5cbi8qKiBDaGVjayBpZiBhIGxvYWRlZCBldmVudERhdGEgb2JqZWN0IGNvbnRhaW5zIGFueSBlbmNyeXB0ZWQgbWFya2VyIHZhbHVlcy4gKi9cbmZ1bmN0aW9uIGhhc0VuY3J5cHRlZFZhbHVlcyhkYXRhOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LnZhbHVlcyhkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgIGlmIChpc0VuY3J5cHRlZE1hcmtlcih2YWwpKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGlzUnVuTGV2ZWwoZXZlbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIChcbiAgICBldmVudFR5cGUgPT09ICdydW5fY3JlYXRlZCcgfHxcbiAgICBldmVudFR5cGUgPT09ICdydW5fc3RhcnRlZCcgfHxcbiAgICBldmVudFR5cGUgPT09ICdydW5fY29tcGxldGVkJyB8fFxuICAgIGV2ZW50VHlwZSA9PT0gJ3J1bl9mYWlsZWQnIHx8XG4gICAgZXZlbnRUeXBlID09PSAncnVuX2NhbmNlbGxlZCcgfHxcbiAgICBldmVudFR5cGUgPT09ICd3b3JrZmxvd19zdGFydGVkJyB8fFxuICAgIGV2ZW50VHlwZSA9PT0gJ3dvcmtmbG93X2NvbXBsZXRlZCcgfHxcbiAgICBldmVudFR5cGUgPT09ICd3b3JrZmxvd19mYWlsZWQnXG4gICk7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gVHJlZSBndXR0ZXIg4oCUIGZpeGVkLXdpZHRoLCBzaG93cyBicmFuY2ggbGluZXMgb25seSBmb3IgdGhlIHNlbGVjdGVkIGdyb3VwXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEZpeGVkIGd1dHRlciB3aWR0aDogMjBweCByb290IGFyZWEgKyAxNnB4IGZvciBvbmUgYnJhbmNoIGxhbmUgKi9cbmNvbnN0IEdVVFRFUl9XSURUSCA9IDM2O1xuLyoqIFggcG9zaXRpb24gb2YgdGhlIHNpbmdsZSBicmFuY2ggbGFuZSBsaW5lICovXG5jb25zdCBMQU5FX1ggPSAyMDtcbmNvbnN0IFJPT1RfTElORV9DT0xPUiA9ICd2YXIoLS1kcy1ncmF5LTUwMCknO1xuXG5mdW5jdGlvbiBUcmVlR3V0dGVyKHtcbiAgaXNGaXJzdCxcbiAgaXNMYXN0LFxuICBpc1J1bkxldmVsOiBpc1J1bixcbiAgc3RhdHVzRG90Q29sb3IsXG4gIHB1bHNlID0gZmFsc2UsXG4gIGhhc1NlbGVjdGlvbixcbiAgc2hvd0JyYW5jaCxcbiAgc2hvd0xhbmVMaW5lLFxuICBpc0xhbmVTdGFydCxcbiAgaXNMYW5lRW5kLFxuICBjb250aW51YXRpb25Pbmx5ID0gZmFsc2UsXG59OiB7XG4gIGlzRmlyc3Q6IGJvb2xlYW47XG4gIGlzTGFzdDogYm9vbGVhbjtcbiAgaXNSdW5MZXZlbDogYm9vbGVhbjtcbiAgc3RhdHVzRG90Q29sb3I/OiBzdHJpbmc7XG4gIHB1bHNlPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgYW55IGdyb3VwIGlzIGN1cnJlbnRseSBhY3RpdmUgKHNlbGVjdGVkIG9yIGhvdmVyZWQpICovXG4gIGhhc1NlbGVjdGlvbjogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyBhIGhvcml6b250YWwgYnJhbmNoIGxpbmUgZm9yIHRoaXMgcm93IChldmVudCBiZWxvbmdzIHRvIGFjdGl2ZSBncm91cCkgKi9cbiAgc2hvd0JyYW5jaDogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdGhlIHZlcnRpY2FsIGxhbmUgbGluZSBwYXNzZXMgdGhyb3VnaCB0aGlzIHJvdyAqL1xuICBzaG93TGFuZUxpbmU6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSB2ZXJ0aWNhbCBsYW5lIGxpbmUgc3RhcnRzIGF0IHRoaXMgcm93ICh0b3AgY2xpcHBlZCB0byA1MCUpICovXG4gIGlzTGFuZVN0YXJ0OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgdmVydGljYWwgbGFuZSBsaW5lIGVuZHMgYXQgdGhpcyByb3cgKGJvdHRvbSBjbGlwcGVkIHRvIDUwJSkgKi9cbiAgaXNMYW5lRW5kOiBib29sZWFuO1xuICBjb250aW51YXRpb25Pbmx5PzogYm9vbGVhbjtcbn0pIHtcbiAgY29uc3QgZG90U2l6ZSA9IGlzUnVuID8gOCA6IDY7XG4gIGNvbnN0IGRvdExlZnQgPSBpc1J1biA/IDUgOiA2O1xuICBjb25zdCBkb3RPcGFjaXR5ID0gaGFzU2VsZWN0aW9uICYmICFzaG93QnJhbmNoICYmICFpc1J1biA/IDAuMyA6IDE7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LXNocmluay0wIHNlbGYtc3RyZXRjaFwiXG4gICAgICBzdHlsZT17e1xuICAgICAgICB3aWR0aDogR1VUVEVSX1dJRFRILFxuICAgICAgICBtaW5IZWlnaHQ6IGNvbnRpbnVhdGlvbk9ubHkgPyAwIDogdW5kZWZpbmVkLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7LyogUm9vdCB2ZXJ0aWNhbCBsaW5lIChsZWZ0bW9zdCwgYWx3YXlzIHZpc2libGUpICovfVxuICAgICAgPGRpdlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgIGxlZnQ6IDgsXG4gICAgICAgICAgdG9wOiBjb250aW51YXRpb25Pbmx5ID8gMCA6IGlzRmlyc3QgPyAnNTAlJyA6IDAsXG4gICAgICAgICAgYm90dG9tOiBjb250aW51YXRpb25Pbmx5ID8gMCA6IGlzTGFzdCA/ICc1MCUnIDogMCxcbiAgICAgICAgICB3aWR0aDogMixcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFJPT1RfTElORV9DT0xPUixcbiAgICAgICAgICB6SW5kZXg6IDAsXG4gICAgICAgIH19XG4gICAgICAvPlxuXG4gICAgICB7IWNvbnRpbnVhdGlvbk9ubHkgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHsvKiBTdGF0dXMgZG90IG9uIHRoZSByb290IGxpbmUgZm9yIGV2ZXJ5IGV2ZW50ICovfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICBsZWZ0OiBkb3RMZWZ0LFxuICAgICAgICAgICAgICB0b3A6ICc1MCUnLFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC01MCUpJyxcbiAgICAgICAgICAgICAgd2lkdGg6IGRvdFNpemUsXG4gICAgICAgICAgICAgIGhlaWdodDogZG90U2l6ZSxcbiAgICAgICAgICAgICAgekluZGV4OiAyLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LyogT3BhcXVlIGJhY2tkcm9wIGVuc3VyZXMgZ3V0dGVyIGxpbmVzIG5ldmVyIHZpc3VhbGx5IGN1dCB0aHJvdWdoIGRvdHMgKi99XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgaW5zZXQ6IDAsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCknLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMCxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB7cHVsc2UgJiYgKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgaW5zZXQ6IDAsXG4gICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzdGF0dXNEb3RDb2xvcixcbiAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNzUgKiBkb3RPcGFjaXR5LFxuICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBET1RfUFVMU0VfQU5JTUFUSU9OLFxuICAgICAgICAgICAgICAgICAgekluZGV4OiAxLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0YXR1c0RvdENvbG9yLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IGRvdE9wYWNpdHksXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogJ29wYWNpdHkgMTUwbXMnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogMixcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogSG9yaXpvbnRhbCBicmFuY2ggZnJvbSByb290IHRvIGd1dHRlciBlZGdlIChzZWxlY3RlZCBncm91cCBldmVudHMgb25seSkgKi99XG4gICAgICAgICAge3Nob3dCcmFuY2ggJiYgKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIGxlZnQ6IDksXG4gICAgICAgICAgICAgICAgdG9wOiAnNTAlJyxcbiAgICAgICAgICAgICAgICB3aWR0aDogR1VUVEVSX1dJRFRIIC0gOSxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBST09UX0xJTkVfQ09MT1IsXG4gICAgICAgICAgICAgICAgekluZGV4OiAwLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBWZXJ0aWNhbCBsYW5lIGxpbmUgY29ubmVjdGluZyB0aGUgc2VsZWN0ZWQgZ3JvdXAncyBldmVudHMgKi99XG4gICAgICB7c2hvd0xhbmVMaW5lICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGxlZnQ6IExBTkVfWCxcbiAgICAgICAgICAgIHRvcDogY29udGludWF0aW9uT25seSA/IDAgOiBpc0xhbmVTdGFydCA/ICc1MCUnIDogMCxcbiAgICAgICAgICAgIGJvdHRvbTogY29udGludWF0aW9uT25seSA/IDAgOiBpc0xhbmVFbmQgPyAnNTAlJyA6IDAsXG4gICAgICAgICAgICB3aWR0aDogMixcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogUk9PVF9MSU5FX0NPTE9SLFxuICAgICAgICAgICAgekluZGV4OiAwLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIENvcHlhYmxlIGNlbGwg4oCUIHNob3dzIGEgY29weSBidXR0b24gb24gaG92ZXJcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5mdW5jdGlvbiBDb3B5YWJsZUNlbGwoe1xuICB2YWx1ZSxcbiAgY2xhc3NOYW1lLFxuICBzdHlsZTogc3R5bGVQcm9wLFxufToge1xuICB2YWx1ZTogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogUmVhY3QuQ1NTUHJvcGVydGllcztcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBbY29waWVkLCBzZXRDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCByZXNldENvcGllZFRpbWVvdXRSZWYgPSB1c2VSZWY8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlc2V0Q29waWVkVGltZW91dFJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQocmVzZXRDb3BpZWRUaW1lb3V0UmVmLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0TW91c2VFdmVudCkgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbHVlKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0Q29waWVkKHRydWUpO1xuICAgICAgICBpZiAocmVzZXRDb3BpZWRUaW1lb3V0UmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHJlc2V0Q29waWVkVGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXNldENvcGllZFRpbWVvdXRSZWYuY3VycmVudCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRDb3BpZWQoZmFsc2UpO1xuICAgICAgICAgIHJlc2V0Q29waWVkVGltZW91dFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfSwgMTUwMCk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIFt2YWx1ZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17YGdyb3VwL2NvcHkgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgbWluLXctMCBweC00ICR7Y2xhc3NOYW1lID8/ICcnfWB9XG4gICAgICBzdHlsZT17c3R5bGVQcm9wfVxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXCI+XG4gICAgICAgIHt2YWx1ZSB8fCAnLSd9XG4gICAgICA8L3NwYW4+XG4gICAgICB7dmFsdWUgPyAoXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyL2NvcHk6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5IHAtMC41IHJvdW5kZWQgaG92ZXI6YmctW3ZhcigtLWRzLWdyYXktYWxwaGEtMjAwKV1cIlxuICAgICAgICAgIHN0eWxlPXtCVVRUT05fUkVTRVRfU1RZTEV9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YENvcHkgJHt2YWx1ZX1gfVxuICAgICAgICA+XG4gICAgICAgICAge2NvcGllZCA/IChcbiAgICAgICAgICAgIDxDaGVja1xuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTMgdy0zXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmVlbi03MDApJyB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPENvcHkgY2xhc3NOYW1lPVwiaC0zIHctM1wiIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS03MDApJyB9fSAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8qKiBSZWN1cnNpdmVseSBwYXJzZSBzdHJpbmdpZmllZCBKU09OIHZhbHVlcyBzbyBlc2NhcGVkIHNsYXNoZXMgLyBxdW90ZXMgYXJlIGNsZWFuZWQgdXAgKi9cbmZ1bmN0aW9uIGRlZXBQYXJzZUpzb24odmFsdWU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCB0cmltbWVkID0gdmFsdWUudHJpbSgpO1xuICAgIGlmIChcbiAgICAgICh0cmltbWVkLnN0YXJ0c1dpdGgoJ3snKSAmJiB0cmltbWVkLmVuZHNXaXRoKCd9JykpIHx8XG4gICAgICAodHJpbW1lZC5zdGFydHNXaXRoKCdbJykgJiYgdHJpbW1lZC5lbmRzV2l0aCgnXScpKSB8fFxuICAgICAgKHRyaW1tZWQuc3RhcnRzV2l0aCgnXCInKSAmJiB0cmltbWVkLmVuZHNXaXRoKCdcIicpKVxuICAgICkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGRlZXBQYXJzZUpzb24oSlNPTi5wYXJzZSh0cmltbWVkKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcChkZWVwUGFyc2VKc29uKTtcbiAgfVxuICBpZiAodmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgIC8vIFByZXNlcnZlIG9iamVjdHMgd2l0aCBjdXN0b20gY29uc3RydWN0b3JzIChlLmcuLCBlbmNyeXB0ZWQgbWFya2VycyxcbiAgICAvLyBjbGFzcyBpbnN0YW5jZSByZWZzKSDigJQgZG9uJ3QgZGVzdHJ1Y3R1cmUgdGhlbSBpbnRvIHBsYWluIG9iamVjdHNcbiAgICBpZiAodmFsdWUuY29uc3RydWN0b3IgIT09IE9iamVjdCkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUpKSB7XG4gICAgICByZXN1bHRba10gPSBkZWVwUGFyc2VKc29uKHYpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBhIHN0cnVjdHVyZWQgZXJyb3Igd2l0aCBhIHN0YWNrIHRyYWNlIGZyb20gZXZlbnQgZGF0YSwgaWYgcHJlc2VudC5cbiAqIFJldHVybnMgdGhlIGVycm9yIG9iamVjdCB0byByZW5kZXIgd2l0aCBFcnJvclN0YWNrQmxvY2ssIG9yIG51bGwgaWYgbm90IGFwcGxpY2FibGUuXG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RTdHJ1Y3R1cmVkRXJyb3IoXG4gIGRhdGE6IHVua25vd24sXG4gIGV2ZW50VHlwZT86IHN0cmluZ1xuKTogKFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYgeyBzdGFjazogc3RyaW5nIH0pIHwgbnVsbCB7XG4gIGlmICghZXZlbnRUeXBlIHx8ICFFUlJPUl9FVkVOVF9UWVBFUy5oYXMoZXZlbnRUeXBlKSkgcmV0dXJuIG51bGw7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgcmVjb3JkID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLy8gQ2hlY2sgdGhlIG5lc3RlZCBgZXJyb3JgIGZpZWxkIGZpcnN0ICh0aGUgU3RydWN0dXJlZEVycm9yKVxuICBpZiAoaXNTdHJ1Y3R1cmVkRXJyb3JXaXRoU3RhY2socmVjb3JkLmVycm9yKSkgcmV0dXJuIHJlY29yZC5lcnJvcjtcbiAgLy8gU29tZSBlcnJvciBmb3JtYXRzIHB1dCB0aGUgc3RhY2sgYXQgdGhlIHRvcCBsZXZlbCBvZiBldmVudERhdGFcbiAgaWYgKGlzU3RydWN0dXJlZEVycm9yV2l0aFN0YWNrKHJlY29yZCkpIHJldHVybiByZWNvcmQ7XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBQYXlsb2FkQmxvY2soe1xuICBkYXRhLFxuICBldmVudFR5cGUsXG59OiB7XG4gIGRhdGE6IHVua25vd247XG4gIGV2ZW50VHlwZT86IHN0cmluZztcbn0pOiBSZWFjdE5vZGUge1xuICBjb25zdCBzdHJ1Y3R1cmVkRXJyb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGV4dHJhY3RTdHJ1Y3R1cmVkRXJyb3IoZGF0YSwgZXZlbnRUeXBlKSxcbiAgICBbZGF0YSwgZXZlbnRUeXBlXVxuICApO1xuXG4gIGNvbnN0IFtjb3BpZWQsIHNldENvcGllZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHJlc2V0Q29waWVkVGltZW91dFJlZiA9IHVzZVJlZjxudW1iZXIgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY2xlYW5lZCA9IHVzZU1lbW8oKCkgPT4gZGVlcFBhcnNlSnNvbihkYXRhKSwgW2RhdGFdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmVzZXRDb3BpZWRUaW1lb3V0UmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChyZXNldENvcGllZFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGZvcm1hdHRlZCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY2xlYW5lZCwgbnVsbCwgMik7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gU3RyaW5nKGNsZWFuZWQpO1xuICAgIH1cbiAgfSwgW2NsZWFuZWRdKTtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0TW91c2VFdmVudCkgPT4ge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGZvcm1hdHRlZCkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldENvcGllZCh0cnVlKTtcbiAgICAgICAgaWYgKHJlc2V0Q29waWVkVGltZW91dFJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChyZXNldENvcGllZFRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzZXRDb3BpZWRUaW1lb3V0UmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0Q29waWVkKGZhbHNlKTtcbiAgICAgICAgICByZXNldENvcGllZFRpbWVvdXRSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgIH0sIDE1MDApO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBbZm9ybWF0dGVkXVxuICApO1xuXG4gIGlmIChzdHJ1Y3R1cmVkRXJyb3IpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTJcIj5cbiAgICAgICAgPEVycm9yU3RhY2tCbG9jayB2YWx1ZT17c3RydWN0dXJlZEVycm9yfSAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBncm91cC9wYXlsb2FkXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cIm92ZXJmbG93LXgtYXV0byBwLTIgdGV4dC1bMTFweF1cIlxuICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktMTAwMCknIH19XG4gICAgICA+XG4gICAgICAgIDxEYXRhSW5zcGVjdG9yIGRhdGE9e2NsZWFuZWR9IGV4cGFuZExldmVsPXsyfSAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMiByaWdodC0yIG9wYWNpdHktMCBncm91cC1ob3Zlci9wYXlsb2FkOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSBweC0yIHB5LTEgcm91bmRlZC1tZCB0ZXh0LXhzIGhvdmVyOmJnLVt2YXIoLS1kcy1ncmF5LWFscGhhLTIwMCldXCJcbiAgICAgICAgc3R5bGU9e3sgLi4uQlVUVE9OX1JFU0VUX1NUWUxFLCBjb2xvcjogJ3ZhcigtLWRzLWdyYXktNzAwKScgfX1cbiAgICAgICAgYXJpYS1sYWJlbD1cIkNvcHkgcGF5bG9hZFwiXG4gICAgICA+XG4gICAgICAgIHtjb3BpZWQgPyAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxDaGVja1xuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTMgdy0zXCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmVlbi03MDApJyB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JlZW4tNzAwKScgfX0+Q29waWVkPC9zcGFuPlxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Q29weSBjbGFzc05hbWU9XCJoLTMgdy0zXCIgLz5cbiAgICAgICAgICAgIDxzcGFuPkNvcHk8L3NwYW4+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTb3J0IG9wdGlvbnMgZm9yIHRoZSBldmVudHMgbGlzdFxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmNvbnN0IFNPUlRfT1BUSU9OUyA9IFtcbiAgeyB2YWx1ZTogJ2Rlc2MnIGFzIGNvbnN0LCBsYWJlbDogJ05ld2VzdCcgfSxcbiAgeyB2YWx1ZTogJ2FzYycgYXMgY29uc3QsIGxhYmVsOiAnT2xkZXN0JyB9LFxuXTtcblxuZnVuY3Rpb24gUm93c1NrZWxldG9uKCkge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAge0FycmF5LmZyb20oeyBsZW5ndGg6IDE2IH0sIChfLCBpKSA9PiAoXG4gICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMFwiIHN0eWxlPXt7IGhlaWdodDogNDAgfX0+XG4gICAgICAgICAgey8qIEd1dHRlciBhcmVhICovfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXgtc2hyaW5rLTAgc2VsZi1zdHJldGNoIGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBHVVRURVJfV0lEVEggfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LyogVmVydGljYWwgbGluZSBza2VsZXRvbiAqL31cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICBsZWZ0OiA4LFxuICAgICAgICAgICAgICAgIHRvcDogaSA9PT0gMCA/ICc1MCUnIDogMCxcbiAgICAgICAgICAgICAgICBib3R0b206IDAsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDIsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsXCIgc3R5bGU9e3sgYm9yZGVyUmFkaXVzOiAxIH19IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIHsvKiBEb3Qgc2tlbGV0b24gKi99XG4gICAgICAgICAgICA8U2tlbGV0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC1zaHJpbmstMFwiXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGkgJSA0ID09PSAwID8gOCA6IDYsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBpICUgNCA9PT0gMCA/IDggOiA2LFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogaSAlIDQgPT09IDAgPyA1IDogNixcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey8qIENoZXZyb24gcGxhY2Vob2xkZXIgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTUgZmxleC1zaHJpbmstMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cInctNSBoLTVcIiBzdHlsZT17eyBib3JkZXJSYWRpdXM6IDQgfX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7LyogVGltZSAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgcHgtNFwiIHN0eWxlPXt7IGZsZXg6ICcyIDEgMCUnIH19PlxuICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtM1wiIHN0eWxlPXt7IHdpZHRoOiAnNzAlJyB9fSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvKiBFdmVudCBUeXBlICovfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cIm1pbi13LTAgcHgtNCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGZsZXg6ICcyIDEgMCUnIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNrZWxldG9uXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogNiwgaGVpZ2h0OiA2LCBib3JkZXJSYWRpdXM6ICc1MCUnIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtM1wiIHN0eWxlPXt7IHdpZHRoOiAnNjAlJyB9fSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvKiBOYW1lICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMCBweC00XCIgc3R5bGU9e3sgZmxleDogJzIgMSAwJScgfX0+XG4gICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC0zXCIgc3R5bGU9e3sgd2lkdGg6ICc1MCUnIH19IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey8qIENvcnJlbGF0aW9uIElEICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMCBweC00XCIgc3R5bGU9e3sgZmxleDogJzMgMSAwJScgfX0+XG4gICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC0zXCIgc3R5bGU9e3sgd2lkdGg6ICc3NSUnIH19IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey8qIEV2ZW50IElEICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMCBweC00XCIgc3R5bGU9e3sgZmxleDogJzMgMSAwJScgfX0+XG4gICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC0zXCIgc3R5bGU9e3sgd2lkdGg6ICc3NSUnIH19IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRXZlbnQgcm93XG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuaW50ZXJmYWNlIEV2ZW50c0xpc3RQcm9wcyB7XG4gIGV2ZW50czogRXZlbnRbXSB8IG51bGw7XG4gIHJ1bj86IFdvcmtmbG93UnVuIHwgbnVsbDtcbiAgb25Mb2FkRXZlbnREYXRhPzogKGV2ZW50OiBFdmVudCkgPT4gUHJvbWlzZTx1bmtub3duIHwgbnVsbD47XG4gIGhhc01vcmVFdmVudHM/OiBib29sZWFuO1xuICBpc0xvYWRpbmdNb3JlRXZlbnRzPzogYm9vbGVhbjtcbiAgb25Mb2FkTW9yZUV2ZW50cz86ICgpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAvKiogV2hlbiBwcm92aWRlZCwgc2lnbmFscyB0aGF0IGRlY3J5cHRpb24gaXMgYWN0aXZlICh0cmlnZ2VycyByZS1sb2FkIG9mIGV4cGFuZGVkIGV2ZW50cykgKi9cbiAgZW5jcnlwdGlvbktleT86IFVpbnQ4QXJyYXk7XG4gIC8qKiBXaGVuIHRydWUsIHNob3dzIGEgbG9hZGluZyBzdGF0ZSBpbnN0ZWFkIG9mIFwiTm8gZXZlbnRzIGZvdW5kXCIgZm9yIGVtcHR5IGxpc3RzICovXG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIC8qKiBTb3J0IG9yZGVyIGZvciBldmVudHMuIERlZmF1bHRzIHRvICdhc2MnLiAqL1xuICBzb3J0T3JkZXI/OiAnYXNjJyB8ICdkZXNjJztcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSB1c2VyIGNoYW5nZXMgc29ydCBvcmRlci4gV2hlbiBwcm92aWRlZCwgdGhlIHNvcnQgZHJvcGRvd24gaXMgc2hvd25cbiAgICogIGFuZCB0aGUgcGFyZW50IGlzIGV4cGVjdGVkIHRvIHJlZmV0Y2ggZnJvbSB0aGUgQVBJIHdpdGggdGhlIG5ldyBvcmRlci4gKi9cbiAgb25Tb3J0T3JkZXJDaGFuZ2U/OiAob3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKSA9PiB2b2lkO1xuICAvKiogQ2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBEZWNyeXB0IGJ1dHRvbi4gKi9cbiAgb25EZWNyeXB0PzogKCkgPT4gdm9pZDtcbiAgLyoqIFdoZXRoZXIgdGhlIGVuY3J5cHRpb24ga2V5IGlzIGN1cnJlbnRseSBiZWluZyBmZXRjaGVkLiAqL1xuICBpc0RlY3J5cHRpbmc/OiBib29sZWFuO1xuICAvKiogUnVuLWxldmVsIGhpbnQ6IHRoZSBydW4gY29udGFpbnMgZW5jcnlwdGVkIGRhdGEgKGZyb20gcHJvYmUpLiAqL1xuICBoYXNFbmNyeXB0ZWREYXRhPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gRXZlbnRSb3coe1xuICBldmVudCxcbiAgaW5kZXgsXG4gIGlzRmlyc3QsXG4gIGlzTGFzdCxcbiAgaXNFeHBhbmRlZCxcbiAgb25Ub2dnbGVFeHBhbmQsXG4gIGFjdGl2ZUdyb3VwS2V5LFxuICBzZWxlY3RlZEdyb3VwS2V5LFxuICBzZWxlY3RlZEdyb3VwUmFuZ2UsXG4gIGNvcnJlbGF0aW9uTmFtZU1hcCxcbiAgd29ya2Zsb3dOYW1lLFxuICBkdXJhdGlvbk1hcCxcbiAgb25TZWxlY3RHcm91cCxcbiAgb25Ib3Zlckdyb3VwLFxuICBvbkxvYWRFdmVudERhdGEsXG4gIGNhY2hlZEV2ZW50RGF0YSxcbiAgb25DYWNoZUV2ZW50RGF0YSxcbiAgZW5jcnlwdGlvbktleSxcbiAgb25FbmNyeXB0ZWREYXRhRGV0ZWN0ZWQsXG59OiB7XG4gIGV2ZW50OiBFdmVudDtcbiAgaW5kZXg6IG51bWJlcjtcbiAgaXNGaXJzdDogYm9vbGVhbjtcbiAgaXNMYXN0OiBib29sZWFuO1xuICBpc0V4cGFuZGVkOiBib29sZWFuO1xuICBvblRvZ2dsZUV4cGFuZDogKGV2ZW50SWQ6IHN0cmluZykgPT4gdm9pZDtcbiAgYWN0aXZlR3JvdXBLZXk/OiBzdHJpbmc7XG4gIHNlbGVjdGVkR3JvdXBLZXk/OiBzdHJpbmc7XG4gIHNlbGVjdGVkR3JvdXBSYW5nZTogeyBmaXJzdDogbnVtYmVyOyBsYXN0OiBudW1iZXIgfSB8IG51bGw7XG4gIGNvcnJlbGF0aW9uTmFtZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgd29ya2Zsb3dOYW1lOiBzdHJpbmcgfCBudWxsO1xuICBkdXJhdGlvbk1hcDogTWFwPHN0cmluZywgRHVyYXRpb25JbmZvPjtcbiAgb25TZWxlY3RHcm91cDogKGdyb3VwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIG9uSG92ZXJHcm91cDogKGdyb3VwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIG9uTG9hZEV2ZW50RGF0YT86IChldmVudDogRXZlbnQpID0+IFByb21pc2U8dW5rbm93biB8IG51bGw+O1xuICBjYWNoZWRFdmVudERhdGE6IHVua25vd24gfCBudWxsO1xuICBvbkNhY2hlRXZlbnREYXRhOiAoZXZlbnRJZDogc3RyaW5nLCBkYXRhOiB1bmtub3duKSA9PiB2b2lkO1xuICBlbmNyeXB0aW9uS2V5PzogVWludDhBcnJheTtcbiAgb25FbmNyeXB0ZWREYXRhRGV0ZWN0ZWQ/OiAoKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbbG9hZGVkRXZlbnREYXRhLCBzZXRMb2FkZWRFdmVudERhdGFdID0gdXNlU3RhdGU8dW5rbm93biB8IG51bGw+KFxuICAgIGNhY2hlZEV2ZW50RGF0YVxuICApO1xuICBjb25zdCBbbG9hZEVycm9yLCBzZXRMb2FkRXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtoYXNBdHRlbXB0ZWRMb2FkLCBzZXRIYXNBdHRlbXB0ZWRMb2FkXSA9IHVzZVN0YXRlKFxuICAgIGNhY2hlZEV2ZW50RGF0YSAhPT0gbnVsbFxuICApO1xuXG4gIC8vIE5vdGlmeSBwYXJlbnQgaWYgY2FjaGVkIGRhdGEgaGFzIGVuY3J5cHRlZCBtYXJrZXJzIG9uIG1vdW50XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgY2FjaGVkRXZlbnREYXRhICE9PSBudWxsICYmXG4gICAgICAhZW5jcnlwdGlvbktleSAmJlxuICAgICAgaGFzRW5jcnlwdGVkVmFsdWVzKGNhY2hlZEV2ZW50RGF0YSlcbiAgICApIHtcbiAgICAgIG9uRW5jcnlwdGVkRGF0YURldGVjdGVkPy4oKTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgcm93R3JvdXBLZXkgPSBpc1J1bkxldmVsKGV2ZW50LmV2ZW50VHlwZSlcbiAgICA/ICdfX3J1bl9fJ1xuICAgIDogKGV2ZW50LmNvcnJlbGF0aW9uSWQgPz8gdW5kZWZpbmVkKTtcblxuICBjb25zdCBzdGF0dXNEb3RDb2xvciA9IGdldFN0YXR1c0RvdENvbG9yKGV2ZW50LmV2ZW50VHlwZSk7XG4gIGNvbnN0IGNyZWF0ZWRBdCA9IG5ldyBEYXRlKGV2ZW50LmNyZWF0ZWRBdCk7XG4gIGNvbnN0IGhhc0V4aXN0aW5nRXZlbnREYXRhID0gJ2V2ZW50RGF0YScgaW4gZXZlbnQgJiYgZXZlbnQuZXZlbnREYXRhICE9IG51bGw7XG4gIGNvbnN0IGlzUnVuID0gaXNSdW5MZXZlbChldmVudC5ldmVudFR5cGUpO1xuICBjb25zdCBldmVudE5hbWUgPSBpc1J1blxuICAgID8gKHdvcmtmbG93TmFtZSA/PyAnLScpXG4gICAgOiBldmVudC5jb3JyZWxhdGlvbklkXG4gICAgICA/IChjb3JyZWxhdGlvbk5hbWVNYXAuZ2V0KGV2ZW50LmNvcnJlbGF0aW9uSWQpID8/ICctJylcbiAgICAgIDogJy0nO1xuXG4gIGNvbnN0IGR1cmF0aW9uS2V5ID0gZXZlbnQuY29ycmVsYXRpb25JZCA/PyAoaXNSdW4gPyAnX19ydW5fXycgOiAnJyk7XG4gIGNvbnN0IGR1cmF0aW9uSW5mbyA9IGR1cmF0aW9uS2V5ID8gZHVyYXRpb25NYXAuZ2V0KGR1cmF0aW9uS2V5KSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBoYXNBY3RpdmUgPSBhY3RpdmVHcm91cEtleSAhPT0gdW5kZWZpbmVkO1xuICBjb25zdCBpc1JlbGF0ZWQgPSByb3dHcm91cEtleSAhPT0gdW5kZWZpbmVkICYmIHJvd0dyb3VwS2V5ID09PSBhY3RpdmVHcm91cEtleTtcbiAgY29uc3QgaXNEaW1tZWQgPSBoYXNBY3RpdmUgJiYgIWlzUmVsYXRlZDtcbiAgY29uc3QgaXNQdWxzaW5nID0gaGFzQWN0aXZlICYmIGlzUmVsYXRlZDtcblxuICAvLyBHdXR0ZXIgc3RhdGUgZGVyaXZlZCBmcm9tIHNlbGVjdGVkR3JvdXBSYW5nZVxuICBjb25zdCBzaG93QnJhbmNoID0gaGFzQWN0aXZlICYmIGlzUmVsYXRlZCAmJiAhaXNSdW47XG4gIGNvbnN0IHNob3dMYW5lTGluZSA9XG4gICAgc2VsZWN0ZWRHcm91cFJhbmdlICE9PSBudWxsICYmXG4gICAgaW5kZXggPj0gc2VsZWN0ZWRHcm91cFJhbmdlLmZpcnN0ICYmXG4gICAgaW5kZXggPD0gc2VsZWN0ZWRHcm91cFJhbmdlLmxhc3Q7XG4gIGNvbnN0IGlzTGFuZVN0YXJ0ID1cbiAgICBzZWxlY3RlZEdyb3VwUmFuZ2UgIT09IG51bGwgJiYgaW5kZXggPT09IHNlbGVjdGVkR3JvdXBSYW5nZS5maXJzdDtcbiAgY29uc3QgaXNMYW5lRW5kID1cbiAgICBzZWxlY3RlZEdyb3VwUmFuZ2UgIT09IG51bGwgJiYgaW5kZXggPT09IHNlbGVjdGVkR3JvdXBSYW5nZS5sYXN0O1xuXG4gIGNvbnN0IGxvYWRFdmVudERldGFpbHMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKGxvYWRlZEV2ZW50RGF0YSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2FjaGVkRXZlbnREYXRhICE9PSBudWxsKSB7XG4gICAgICBzZXRMb2FkZWRFdmVudERhdGEoY2FjaGVkRXZlbnREYXRhKTtcbiAgICAgIHNldEhhc0F0dGVtcHRlZExvYWQodHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIHNldExvYWRFcnJvcihudWxsKTtcbiAgICB0cnkge1xuICAgICAgaWYgKCFvbkxvYWRFdmVudERhdGEpIHtcbiAgICAgICAgc2V0TG9hZEVycm9yKCdFdmVudCBkZXRhaWxzIHVuYXZhaWxhYmxlJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBvbkxvYWRFdmVudERhdGEoZXZlbnQpO1xuICAgICAgaWYgKGRhdGEgIT09IG51bGwgJiYgZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNldExvYWRlZEV2ZW50RGF0YShkYXRhKTtcbiAgICAgICAgb25DYWNoZUV2ZW50RGF0YShldmVudC5ldmVudElkLCBkYXRhKTtcbiAgICAgICAgaWYgKCFlbmNyeXB0aW9uS2V5ICYmIGhhc0VuY3J5cHRlZFZhbHVlcyhkYXRhKSkge1xuICAgICAgICAgIG9uRW5jcnlwdGVkRGF0YURldGVjdGVkPy4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0TG9hZEVycm9yKFxuICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0ZhaWxlZCB0byBsb2FkIGV2ZW50IGRldGFpbHMnXG4gICAgICApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0SGFzQXR0ZW1wdGVkTG9hZCh0cnVlKTtcbiAgICB9XG4gIH0sIFtcbiAgICBldmVudCxcbiAgICBsb2FkZWRFdmVudERhdGEsXG4gICAgaXNMb2FkaW5nLFxuICAgIG9uTG9hZEV2ZW50RGF0YSxcbiAgICBvbkNhY2hlRXZlbnREYXRhLFxuICAgIGVuY3J5cHRpb25LZXksXG4gICAgb25FbmNyeXB0ZWREYXRhRGV0ZWN0ZWQsXG4gICAgY2FjaGVkRXZlbnREYXRhLFxuICBdKTtcblxuICAvLyBBdXRvLWxvYWQgZXZlbnQgZGF0YSB3aGVuIHJlbW91bnRpbmcgaW4gZXhwYW5kZWQgc3RhdGUgd2l0aG91dCBjYWNoZWQgZGF0YVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFeHBhbmRlZCB8fCBpc0xvYWRpbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdm9pZCBsb2FkRXZlbnREZXRhaWxzKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7XG5cbiAgLy8gV2hlbiBlbmNyeXB0aW9uIGtleSBjaGFuZ2VzIGFuZCB0aGlzIGV2ZW50IHdhcyBwcmV2aW91c2x5IGxvYWRlZCxcbiAgLy8gcmUtbG9hZCB0byBnZXQgZGVjcnlwdGVkIGRhdGFcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW5jcnlwdGlvbktleSAmJiBoYXNBdHRlbXB0ZWRMb2FkICYmIG9uTG9hZEV2ZW50RGF0YSkge1xuICAgICAgc2V0TG9hZGVkRXZlbnREYXRhKG51bGwpO1xuICAgICAgc2V0SGFzQXR0ZW1wdGVkTG9hZChmYWxzZSk7XG4gICAgICBvbkxvYWRFdmVudERhdGEoZXZlbnQpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEgIT09IG51bGwgJiYgZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRMb2FkZWRFdmVudERhdGEoZGF0YSk7XG4gICAgICAgICAgICBvbkNhY2hlRXZlbnREYXRhKGV2ZW50LmV2ZW50SWQsIGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRIYXNBdHRlbXB0ZWRMb2FkKHRydWUpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgIHNldEhhc0F0dGVtcHRlZExvYWQodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtlbmNyeXB0aW9uS2V5XSk7XG5cbiAgY29uc3QgaGFuZGxlUm93Q2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgb25TZWxlY3RHcm91cChyb3dHcm91cEtleSA9PT0gc2VsZWN0ZWRHcm91cEtleSA/IHVuZGVmaW5lZCA6IHJvd0dyb3VwS2V5KTtcbiAgICBvblRvZ2dsZUV4cGFuZChldmVudC5ldmVudElkKTtcbiAgICBpZiAoIWlzRXhwYW5kZWQpIHtcbiAgICAgIHZvaWQgbG9hZEV2ZW50RGV0YWlscygpO1xuICAgIH1cbiAgfSwgW1xuICAgIHNlbGVjdGVkR3JvdXBLZXksXG4gICAgcm93R3JvdXBLZXksXG4gICAgb25TZWxlY3RHcm91cCxcbiAgICBvblRvZ2dsZUV4cGFuZCxcbiAgICBldmVudC5ldmVudElkLFxuICAgIGlzRXhwYW5kZWQsXG4gICAgbG9hZEV2ZW50RGV0YWlscyxcbiAgXSk7XG5cbiAgY29uc3QgbWVyZ2VkRXZlbnREYXRhID1cbiAgICBsb2FkZWRFdmVudERhdGEgPz9cbiAgICAoaGFzRXhpc3RpbmdFdmVudERhdGFcbiAgICAgID8gKGV2ZW50IGFzIEV2ZW50ICYgeyBldmVudERhdGE6IHVua25vd24gfSkuZXZlbnREYXRhXG4gICAgICA6IG51bGwpO1xuXG4gIGNvbnN0IGRpc3BsYXlQYXlsb2FkID0gaXNMb2FkaW5nID8gbG9hZGVkRXZlbnREYXRhIDogbWVyZ2VkRXZlbnREYXRhO1xuXG4gIGNvbnN0IGNvbnRlbnRPcGFjaXR5ID0gaXNEaW1tZWQgPyAwLjMgOiAxO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgZGF0YS1ldmVudC1pZD17ZXZlbnQuZXZlbnRJZH1cbiAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gb25Ib3Zlckdyb3VwKHJvd0dyb3VwS2V5KX1cbiAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gb25Ib3Zlckdyb3VwKHVuZGVmaW5lZCl9XG4gICAgPlxuICAgICAgey8qIFJvdyAqL31cbiAgICAgIDxkaXZcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVSb3dDbGlja31cbiAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSBoYW5kbGVSb3dDbGljaygpO1xuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgdGV4dC1sZWZ0IGZsZXggaXRlbXMtY2VudGVyIGdhcC0wIHRleHQtWzEzcHhdIGhvdmVyOmJnLVt2YXIoLS1kcy1ncmF5LWFscGhhLTEwMCldIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgc3R5bGU9e3sgbWluSGVpZ2h0OiA0MCB9fVxuICAgICAgPlxuICAgICAgICA8VHJlZUd1dHRlclxuICAgICAgICAgIGlzRmlyc3Q9e2lzRmlyc3R9XG4gICAgICAgICAgaXNMYXN0PXtpc0xhc3QgJiYgIWlzRXhwYW5kZWR9XG4gICAgICAgICAgaXNSdW5MZXZlbD17aXNSdW59XG4gICAgICAgICAgc3RhdHVzRG90Q29sb3I9e3N0YXR1c0RvdENvbG9yfVxuICAgICAgICAgIHB1bHNlPXtpc1B1bHNpbmd9XG4gICAgICAgICAgaGFzU2VsZWN0aW9uPXtoYXNBY3RpdmV9XG4gICAgICAgICAgc2hvd0JyYW5jaD17c2hvd0JyYW5jaH1cbiAgICAgICAgICBzaG93TGFuZUxpbmU9e3Nob3dMYW5lTGluZX1cbiAgICAgICAgICBpc0xhbmVTdGFydD17aXNMYW5lU3RhcnR9XG4gICAgICAgICAgaXNMYW5lRW5kPXtpc0xhbmVFbmR9XG4gICAgICAgIC8+XG5cbiAgICAgICAgey8qIENvbnRlbnQgYXJlYSDigJQgZGltcyB3aGVuIHVucmVsYXRlZCAqL31cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGZsZXgtMSBtaW4tdy0wXCJcbiAgICAgICAgICBzdHlsZT17eyBvcGFjaXR5OiBjb250ZW50T3BhY2l0eSwgdHJhbnNpdGlvbjogJ29wYWNpdHkgMTUwbXMnIH19XG4gICAgICAgID5cbiAgICAgICAgICB7LyogRXhwYW5kIGNoZXZyb24gaW5kaWNhdG9yICovfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHctNSBoLTUgZmxleC1zaHJpbmstMCByb3VuZGVkXCJcbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCB2YXIoLS1kcy1ncmF5LTQwMCknLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Q2hldnJvblJpZ2h0XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtMyB3LTMgdHJhbnNpdGlvbi10cmFuc2Zvcm1cIlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGNvbG9yOiAndmFyKC0tZHMtZ3JheS05MDApJyxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyAncm90YXRlKDkwZGVnKScgOiAncm90YXRlKDBkZWcpJyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogVGltZSAqL31cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0YWJ1bGFyLW51bXMgbWluLXctMCBweC00XCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0tZHMtZ3JheS05MDApJywgZmxleDogJzIgMSAwJScgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VGltZXN0YW1wVG9vbHRpcCBkYXRlPXtjcmVhdGVkQXR9PlxuICAgICAgICAgICAgICA8c3Bhbj57Zm9ybWF0RXZlbnRUaW1lKGNyZWF0ZWRBdCl9PC9zcGFuPlxuICAgICAgICAgICAgPC9UaW1lc3RhbXBUb29sdGlwPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIEV2ZW50IFR5cGUgKi99XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSBtaW4tdy0wIHB4LTRcIiBzdHlsZT17eyBmbGV4OiAnMiAxIDAlJyB9fT5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiA2LFxuICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgICAgICAgICAgZmxleFNocmluazogMCxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2lzUHVsc2luZyAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgICAgICAgIGluc2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzdGF0dXNEb3RDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjc1LFxuICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogRE9UX1BVTFNFX0FOSU1BVElPTixcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA2LFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogc3RhdHVzRG90Q29sb3IsXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAge2Zvcm1hdEV2ZW50VHlwZShldmVudC5ldmVudFR5cGUpfVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIE5hbWUgKi99XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibWluLXctMCBweC00IG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGZsZXg6ICcyIDEgMCUnIH19XG4gICAgICAgICAgICB0aXRsZT17ZXZlbnROYW1lICE9PSAnLScgPyBldmVudE5hbWUgOiB1bmRlZmluZWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2V2ZW50TmFtZX1cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBDb3JyZWxhdGlvbiBJRCAqL31cbiAgICAgICAgICA8Q29weWFibGVDZWxsXG4gICAgICAgICAgICB2YWx1ZT17ZXZlbnQuY29ycmVsYXRpb25JZCB8fCAnJ31cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZvbnQtbW9ub1wiXG4gICAgICAgICAgICBzdHlsZT17eyBmbGV4OiAnMyAxIDAlJyB9fVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICB7LyogRXZlbnQgSUQgKi99XG4gICAgICAgICAgPENvcHlhYmxlQ2VsbFxuICAgICAgICAgICAgdmFsdWU9e2V2ZW50LmV2ZW50SWR9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmb250LW1vbm9cIlxuICAgICAgICAgICAgc3R5bGU9e3sgZmxleDogJzMgMSAwJScgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogRXhwYW5kZWQgZGV0YWlscyDigJQgdHJlZSBsaW5lcyBjb250aW51ZSB0aHJvdWdoIHRoaXMgYXJlYSAqL31cbiAgICAgIHtpc0V4cGFuZGVkICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4XCI+XG4gICAgICAgICAgey8qIENvbnRpbnVhdGlvbiBndXR0ZXIg4oCUIGxhbmUgbGluZSBjb250aW51ZXMgaWYgbm90IGF0IGxhbmUgZW5kICovfVxuICAgICAgICAgIDxUcmVlR3V0dGVyXG4gICAgICAgICAgICBpc0ZpcnN0PXtmYWxzZX1cbiAgICAgICAgICAgIGlzTGFzdD17aXNMYXN0fVxuICAgICAgICAgICAgaXNSdW5MZXZlbD17aXNSdW59XG4gICAgICAgICAgICBoYXNTZWxlY3Rpb249e2hhc0FjdGl2ZX1cbiAgICAgICAgICAgIHNob3dCcmFuY2g9e2ZhbHNlfVxuICAgICAgICAgICAgc2hvd0xhbmVMaW5lPXtzaG93TGFuZUxpbmUgJiYgIWlzTGFuZUVuZH1cbiAgICAgICAgICAgIGlzTGFuZVN0YXJ0PXtmYWxzZX1cbiAgICAgICAgICAgIGlzTGFuZUVuZD17ZmFsc2V9XG4gICAgICAgICAgICBjb250aW51YXRpb25Pbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7LyogU3BhY2VyIGZvciBjaGV2cm9uIGNvbHVtbiAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctNSBmbGV4LXNocmluay0wXCIgLz5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgbXktMS41IG1yLTMgbWwtMiBweS0yIHJvdW5kZWQtbWQgYm9yZGVyIG92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktYWxwaGEtMjAwKScsXG4gICAgICAgICAgICAgIG9wYWNpdHk6IGNvbnRlbnRPcGFjaXR5LFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uOiAnb3BhY2l0eSAxNTBtcycsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKiBEdXJhdGlvbiBpbmZvICovfVxuICAgICAgICAgICAgeyhkdXJhdGlvbkluZm8/LnF1ZXVlZCAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIGR1cmF0aW9uSW5mbz8ucmFuICE9PSB1bmRlZmluZWQpICYmIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInB4LTIgcGItMS41IHRleHQteHMgZmxleCBnYXAtM1wiXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7ZHVyYXRpb25JbmZvLnF1ZXVlZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgICBkdXJhdGlvbkluZm8ucXVldWVkID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIFF1ZXVlZCBmb3J7JyAnfVxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbW9ubyB0YWJ1bGFyLW51bXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXREdXJhdGlvbihkdXJhdGlvbkluZm8ucXVldWVkKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2R1cmF0aW9uSW5mby5yYW4gIT09IHVuZGVmaW5lZCAmJiAoXG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgUmFuIGZvcnsnICd9XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbW9ubyB0YWJ1bGFyLW51bXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0RHVyYXRpb24oZHVyYXRpb25JbmZvLnJhbil9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsvKiBQYXlsb2FkICovfVxuICAgICAgICAgICAge2Rpc3BsYXlQYXlsb2FkICE9IG51bGwgPyAoXG4gICAgICAgICAgICAgIDxQYXlsb2FkQmxvY2sgZGF0YT17ZGlzcGxheVBheWxvYWR9IGV2ZW50VHlwZT17ZXZlbnQuZXZlbnRUeXBlfSAvPlxuICAgICAgICAgICAgKSA6IGxvYWRFcnJvciA/IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYm9yZGVyIHAtMyB0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1yZWQtNDAwKScsXG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1yZWQtMTAwKScsXG4gICAgICAgICAgICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLXJlZC05MDApJyxcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2xvYWRFcnJvcn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogaXNMb2FkaW5nIHx8XG4gICAgICAgICAgICAgIChsb2FkZWRFdmVudERhdGEgPT09IG51bGwgJiZcbiAgICAgICAgICAgICAgICAhaGFzQXR0ZW1wdGVkTG9hZCAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmNvcnJlbGF0aW9uSWQpID8gKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgZ2FwLTIgcC0zXCI+XG4gICAgICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtM1wiIHN0eWxlPXt7IHdpZHRoOiAnNzUlJyB9fSAvPlxuICAgICAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJoLTNcIiBzdHlsZT17eyB3aWR0aDogJzUwJScgfX0gLz5cbiAgICAgICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC0zXCIgc3R5bGU9e3sgd2lkdGg6ICc2MCUnIH19IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInAtMiB0ZXh0LXhzXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLWRzLWdyYXktOTAwKScgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIE5vIGRhdGFcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gTWFpbiBjb21wb25lbnRcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgZnVuY3Rpb24gRXZlbnRMaXN0Vmlldyh7XG4gIGV2ZW50cyxcbiAgcnVuLFxuICBvbkxvYWRFdmVudERhdGEsXG4gIGhhc01vcmVFdmVudHMgPSBmYWxzZSxcbiAgaXNMb2FkaW5nTW9yZUV2ZW50cyA9IGZhbHNlLFxuICBvbkxvYWRNb3JlRXZlbnRzLFxuICBlbmNyeXB0aW9uS2V5LFxuICBpc0xvYWRpbmcgPSBmYWxzZSxcbiAgc29ydE9yZGVyOiBzb3J0T3JkZXJQcm9wLFxuICBvblNvcnRPcmRlckNoYW5nZSxcbiAgb25EZWNyeXB0LFxuICBpc0RlY3J5cHRpbmcgPSBmYWxzZSxcbiAgaGFzRW5jcnlwdGVkRGF0YTogaGFzRW5jcnlwdGVkRGF0YVByb3AgPSBmYWxzZSxcbn06IEV2ZW50c0xpc3RQcm9wcykge1xuICBjb25zdCBbaW50ZXJuYWxTb3J0T3JkZXIsIHNldEludGVybmFsU29ydE9yZGVyXSA9IHVzZVN0YXRlPCdhc2MnIHwgJ2Rlc2MnPihcbiAgICAnYXNjJ1xuICApO1xuICBjb25zdCBlZmZlY3RpdmVTb3J0T3JkZXIgPSBzb3J0T3JkZXJQcm9wID8/IGludGVybmFsU29ydE9yZGVyO1xuICBjb25zdCBoYW5kbGVTb3J0T3JkZXJDaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICAob3JkZXI6ICdhc2MnIHwgJ2Rlc2MnKSA9PiB7XG4gICAgICBpZiAob25Tb3J0T3JkZXJDaGFuZ2UpIHtcbiAgICAgICAgb25Tb3J0T3JkZXJDaGFuZ2Uob3JkZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0SW50ZXJuYWxTb3J0T3JkZXIob3JkZXIpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW29uU29ydE9yZGVyQ2hhbmdlXVxuICApO1xuXG4gIGNvbnN0IHNvcnRlZEV2ZW50cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZXZlbnRzIHx8IGV2ZW50cy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcbiAgICBjb25zdCBkaXIgPSBlZmZlY3RpdmVTb3J0T3JkZXIgPT09ICdkZXNjJyA/IC0xIDogMTtcbiAgICByZXR1cm4gWy4uLmV2ZW50c10uc29ydChcbiAgICAgIChhLCBiKSA9PlxuICAgICAgICBkaXIgKlxuICAgICAgICAobmV3IERhdGUoYS5jcmVhdGVkQXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIuY3JlYXRlZEF0KS5nZXRUaW1lKCkpXG4gICAgKTtcbiAgfSwgW2V2ZW50cywgZWZmZWN0aXZlU29ydE9yZGVyXSk7XG5cbiAgLy8gRGV0ZWN0IGVuY3J5cHRlZCBmaWVsZHMgYWNyb3NzIGFsbCBsb2FkZWQgZXZlbnRzIChpbmxpbmUgZXZlbnREYXRhKS5cbiAgY29uc3QgaGFzRW5jcnlwdGVkSW5saW5lRGF0YSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZXZlbnRzKSByZXR1cm4gZmFsc2U7XG4gICAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICAgIGNvbnN0IGVkID0gKGV2ZW50IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5ldmVudERhdGE7XG4gICAgICBpZiAoaGFzRW5jcnlwdGVkVmFsdWVzKGVkKSkgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSwgW2V2ZW50c10pO1xuXG4gIC8vIFRyYWNrcyB3aGV0aGVyIGFueSBleHBhbmRlZCByb3cncyBsYXp5LWxvYWRlZCBkYXRhIGNvbnRhaW5lZCBlbmNyeXB0ZWQgbWFya2Vycy5cbiAgLy8gU2V0IHRvIHRydWUgYnkgRXZlbnRSb3cgdmlhIG9uRW5jcnlwdGVkRGF0YURldGVjdGVkOyBuZXZlciByZXNldCAoc3RpY2t5KS5cbiAgY29uc3QgW2ZvdW5kRW5jcnlwdGVkSW5MYXp5RGF0YSwgc2V0Rm91bmRFbmNyeXB0ZWRJbkxhenlEYXRhXSA9XG4gICAgdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVFbmNyeXB0ZWREYXRhRGV0ZWN0ZWQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0Rm91bmRFbmNyeXB0ZWRJbkxhenlEYXRhKHRydWUpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgaGFzRW5jcnlwdGVkRGF0YSA9XG4gICAgaGFzRW5jcnlwdGVkRGF0YVByb3AgfHwgaGFzRW5jcnlwdGVkSW5saW5lRGF0YSB8fCBmb3VuZEVuY3J5cHRlZEluTGF6eURhdGE7XG5cbiAgY29uc3QgeyBjb3JyZWxhdGlvbk5hbWVNYXAsIHdvcmtmbG93TmFtZSB9ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBidWlsZE5hbWVNYXBzKGV2ZW50cyA/PyBudWxsLCBydW4gPz8gbnVsbCksXG4gICAgW2V2ZW50cywgcnVuXVxuICApO1xuXG4gIGNvbnN0IGR1cmF0aW9uTWFwID0gdXNlTWVtbyhcbiAgICAoKSA9PiBidWlsZER1cmF0aW9uTWFwKHNvcnRlZEV2ZW50cyksXG4gICAgW3NvcnRlZEV2ZW50c11cbiAgKTtcblxuICBjb25zdCBbc2VsZWN0ZWRHcm91cEtleSwgc2V0U2VsZWN0ZWRHcm91cEtleV0gPSB1c2VTdGF0ZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuICBjb25zdCBbaG92ZXJlZEdyb3VwS2V5LCBzZXRIb3ZlcmVkR3JvdXBLZXldID0gdXNlU3RhdGU8c3RyaW5nIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgY29uc3Qgb25TZWxlY3RHcm91cCA9IHVzZUNhbGxiYWNrKChncm91cEtleTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWRHcm91cEtleShncm91cEtleSk7XG4gIH0sIFtdKTtcbiAgY29uc3Qgb25Ib3Zlckdyb3VwID0gdXNlQ2FsbGJhY2soKGdyb3VwS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgICBzZXRIb3ZlcmVkR3JvdXBLZXkoZ3JvdXBLZXkpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgYWN0aXZlR3JvdXBLZXkgPSBzZWxlY3RlZEdyb3VwS2V5ID8/IGhvdmVyZWRHcm91cEtleTtcblxuICAvLyBFeHBhbmRlZCBzdGF0ZSBsaWZ0ZWQgb3V0IG9mIEV2ZW50Um93IHNvIGl0IHN1cnZpdmVzIHZpcnR1YWxpemF0aW9uXG4gIGNvbnN0IFtleHBhbmRlZEV2ZW50SWRzLCBzZXRFeHBhbmRlZEV2ZW50SWRzXSA9IHVzZVN0YXRlPFNldDxzdHJpbmc+PihcbiAgICAoKSA9PiBuZXcgU2V0KClcbiAgKTtcbiAgY29uc3QgdG9nZ2xlRXZlbnRFeHBhbmRlZCA9IHVzZUNhbGxiYWNrKChldmVudElkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRFeHBhbmRlZEV2ZW50SWRzKChwcmV2KSA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gbmV3IFNldChwcmV2KTtcbiAgICAgIGlmIChuZXh0LmhhcyhldmVudElkKSkge1xuICAgICAgICBuZXh0LmRlbGV0ZShldmVudElkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQuYWRkKGV2ZW50SWQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBFdmVudCBkYXRhIGNhY2hlIOKAlCByZWYgYXZvaWRzIHJlLXJlbmRlcnMgd2hlbiBjYWNoZSB1cGRhdGVzXG4gIGNvbnN0IGV2ZW50RGF0YUNhY2hlUmVmID0gdXNlUmVmPE1hcDxzdHJpbmcsIHVua25vd24+PihuZXcgTWFwKCkpO1xuICBjb25zdCBjYWNoZUV2ZW50RGF0YSA9IHVzZUNhbGxiYWNrKChldmVudElkOiBzdHJpbmcsIGRhdGE6IHVua25vd24pID0+IHtcbiAgICBldmVudERhdGFDYWNoZVJlZi5jdXJyZW50LnNldChldmVudElkLCBkYXRhKTtcbiAgfSwgW10pO1xuXG4gIC8vIExvb2t1cCBmcm9tIGV2ZW50SWQg4oaSIGdyb3VwS2V5IGZvciBlZmZpY2llbnQgY29sbGFwc2UgZmlsdGVyaW5nXG4gIGNvbnN0IGV2ZW50R3JvdXBLZXlNYXAgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGZvciAoY29uc3QgZXYgb2Ygc29ydGVkRXZlbnRzKSB7XG4gICAgICBjb25zdCBnayA9IGlzUnVuTGV2ZWwoZXYuZXZlbnRUeXBlKVxuICAgICAgICA/ICdfX3J1bl9fJ1xuICAgICAgICA6IChldi5jb3JyZWxhdGlvbklkID8/ICcnKTtcbiAgICAgIGlmIChnaykgbWFwLnNldChldi5ldmVudElkLCBnayk7XG4gICAgfVxuICAgIHJldHVybiBtYXA7XG4gIH0sIFtzb3J0ZWRFdmVudHNdKTtcblxuICAvLyBDb2xsYXBzZSBleHBhbmRlZCBldmVudHMgdGhhdCBkb24ndCBiZWxvbmcgdG8gdGhlIG5ld2x5IHNlbGVjdGVkIGdyb3VwXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHNlbGVjdGVkR3JvdXBLZXkgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHNldEV4cGFuZGVkRXZlbnRJZHMoKHByZXYpID0+IHtcbiAgICAgIGlmIChwcmV2LnNpemUgPT09IDApIHJldHVybiBwcmV2O1xuICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgIGZvciAoY29uc3QgZXZlbnRJZCBvZiBwcmV2KSB7XG4gICAgICAgIGlmIChldmVudEdyb3VwS2V5TWFwLmdldChldmVudElkKSA9PT0gc2VsZWN0ZWRHcm91cEtleSkge1xuICAgICAgICAgIG5leHQuYWRkKGV2ZW50SWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY2hhbmdlZCA/IG5leHQgOiBwcmV2O1xuICAgIH0pO1xuICB9LCBbc2VsZWN0ZWRHcm91cEtleSwgZXZlbnRHcm91cEtleU1hcF0pO1xuXG4gIC8vIENvbXB1dGUgdGhlIHJvdy1pbmRleCByYW5nZSBmb3IgdGhlIGFjdGl2ZSBncm91cCdzIGNvbm5lY3RpbmcgbGFuZSBsaW5lLlxuICAvLyBPbmx5IGFwcGxpZXMgdG8gbm9uLXJ1biBncm91cHMgKHN0ZXAvaG9vay93YWl0IGNvcnJlbGF0aW9ucykuXG4gIGNvbnN0IHNlbGVjdGVkR3JvdXBSYW5nZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghYWN0aXZlR3JvdXBLZXkgfHwgYWN0aXZlR3JvdXBLZXkgPT09ICdfX3J1bl9fJykgcmV0dXJuIG51bGw7XG4gICAgbGV0IGZpcnN0ID0gLTE7XG4gICAgbGV0IGxhc3QgPSAtMTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZEV2ZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHNvcnRlZEV2ZW50c1tpXS5jb3JyZWxhdGlvbklkID09PSBhY3RpdmVHcm91cEtleSkge1xuICAgICAgICBpZiAoZmlyc3QgPT09IC0xKSBmaXJzdCA9IGk7XG4gICAgICAgIGxhc3QgPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlyc3QgPj0gMCA/IHsgZmlyc3QsIGxhc3QgfSA6IG51bGw7XG4gIH0sIFthY3RpdmVHcm91cEtleSwgc29ydGVkRXZlbnRzXSk7XG5cbiAgY29uc3QgW3NlYXJjaFF1ZXJ5LCBzZXRTZWFyY2hRdWVyeV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IHZpcnR1b3NvUmVmID0gdXNlUmVmPFZpcnR1b3NvSGFuZGxlPihudWxsKTtcblxuICBjb25zdCBzZWFyY2hJbmRleCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGVudHJpZXM6IHtcbiAgICAgIGZpZWxkczogc3RyaW5nW107XG4gICAgICBncm91cEtleT86IHN0cmluZztcbiAgICAgIGV2ZW50SWQ6IHN0cmluZztcbiAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRFdmVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGV2ID0gc29ydGVkRXZlbnRzW2ldO1xuICAgICAgY29uc3QgaXNSdW4gPSBpc1J1bkxldmVsKGV2LmV2ZW50VHlwZSk7XG4gICAgICBjb25zdCBuYW1lID0gaXNSdW5cbiAgICAgICAgPyAod29ya2Zsb3dOYW1lID8/ICcnKVxuICAgICAgICA6IGV2LmNvcnJlbGF0aW9uSWRcbiAgICAgICAgICA/IChjb3JyZWxhdGlvbk5hbWVNYXAuZ2V0KGV2LmNvcnJlbGF0aW9uSWQpID8/ICcnKVxuICAgICAgICAgIDogJyc7XG4gICAgICBlbnRyaWVzLnB1c2goe1xuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICBldi5ldmVudElkLFxuICAgICAgICAgIGV2LmNvcnJlbGF0aW9uSWQgPz8gJycsXG4gICAgICAgICAgZXYuZXZlbnRUeXBlLFxuICAgICAgICAgIGZvcm1hdEV2ZW50VHlwZShldi5ldmVudFR5cGUpLFxuICAgICAgICAgIG5hbWUsXG4gICAgICAgIF0ubWFwKChmKSA9PiBmLnRvTG93ZXJDYXNlKCkpLFxuICAgICAgICBncm91cEtleTogZXYuY29ycmVsYXRpb25JZCA/PyAoaXNSdW4gPyAnX19ydW5fXycgOiB1bmRlZmluZWQpLFxuICAgICAgICBldmVudElkOiBldi5ldmVudElkLFxuICAgICAgICBpbmRleDogaSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZW50cmllcztcbiAgfSwgW3NvcnRlZEV2ZW50cywgY29ycmVsYXRpb25OYW1lTWFwLCB3b3JrZmxvd05hbWVdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHEgPSBzZWFyY2hRdWVyeS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoIXEpIHtcbiAgICAgIHNldFNlbGVjdGVkR3JvdXBLZXkodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IGJlc3RNYXRjaDogKHR5cGVvZiBzZWFyY2hJbmRleClbbnVtYmVyXSB8IG51bGwgPSBudWxsO1xuICAgIGxldCBiZXN0U2NvcmUgPSAwO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2Ygc2VhcmNoSW5kZXgpIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZW50cnkuZmllbGRzKSB7XG4gICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC5pbmNsdWRlcyhxKSkge1xuICAgICAgICAgIGNvbnN0IHNjb3JlID0gcS5sZW5ndGggLyBmaWVsZC5sZW5ndGg7XG4gICAgICAgICAgaWYgKHNjb3JlID4gYmVzdFNjb3JlKSB7XG4gICAgICAgICAgICBiZXN0U2NvcmUgPSBzY29yZTtcbiAgICAgICAgICAgIGJlc3RNYXRjaCA9IGVudHJ5O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYmVzdE1hdGNoKSB7XG4gICAgICBzZXRTZWxlY3RlZEdyb3VwS2V5KGJlc3RNYXRjaC5ncm91cEtleSk7XG4gICAgICB2aXJ0dW9zb1JlZi5jdXJyZW50Py5zY3JvbGxUb0luZGV4KHtcbiAgICAgICAgaW5kZXg6IGJlc3RNYXRjaC5pbmRleCxcbiAgICAgICAgYWxpZ246ICdjZW50ZXInLFxuICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtzZWFyY2hRdWVyeSwgc2VhcmNoSW5kZXhdKTtcblxuICAvLyBUcmFjayB3aGV0aGVyIHdlJ3ZlIGV2ZXIgaGFkIGV2ZW50cyB0byBkaXN0aW5ndWlzaCBpbml0aWFsIGxvYWQgZnJvbSByZWZldGNoXG4gIGNvbnN0IGhhc0hhZEV2ZW50c1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gIGlmIChzb3J0ZWRFdmVudHMubGVuZ3RoID4gMCkge1xuICAgIGhhc0hhZEV2ZW50c1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgfVxuICBjb25zdCBpc0luaXRpYWxMb2FkID0gaXNMb2FkaW5nICYmICFoYXNIYWRFdmVudHNSZWYuY3VycmVudDtcbiAgY29uc3QgaXNSZWZldGNoaW5nID1cbiAgICBpc0xvYWRpbmcgJiYgaGFzSGFkRXZlbnRzUmVmLmN1cnJlbnQgJiYgc29ydGVkRXZlbnRzLmxlbmd0aCA9PT0gMDtcblxuICBpZiAoaXNJbml0aWFsTG9hZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBmbGV4IGZsZXgtY29sIG92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgICB7LyogU2tlbGV0b24gc2VhcmNoIGJhciAqL31cbiAgICAgICAgPGRpdiBzdHlsZT17eyBwYWRkaW5nOiA2IH19PlxuICAgICAgICAgIDxTa2VsZXRvbiBzdHlsZT17eyBoZWlnaHQ6IDQwLCBib3JkZXJSYWRpdXM6IDYgfX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvKiBTa2VsZXRvbiBoZWFkZXIgKi99XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMCBoLTEwIGJvcmRlci1iIGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgIHN0eWxlPXt7IGJvcmRlckNvbG9yOiAndmFyKC0tZHMtZ3JheS1hbHBoYS0yMDApJyB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wXCIgc3R5bGU9e3sgd2lkdGg6IEdVVFRFUl9XSURUSCB9fSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy01IGZsZXgtc2hyaW5rLTBcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMCBweC00XCIgc3R5bGU9e3sgZmxleDogJzIgMSAwJScgfX0+XG4gICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC0zXCIgc3R5bGU9e3sgd2lkdGg6IDQwIH19IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4tdy0wIHB4LTRcIiBzdHlsZT17eyBmbGV4OiAnMiAxIDAlJyB9fT5cbiAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJoLTNcIiBzdHlsZT17eyB3aWR0aDogNzIgfX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgcHgtNFwiIHN0eWxlPXt7IGZsZXg6ICcyIDEgMCUnIH19PlxuICAgICAgICAgICAgPFNrZWxldG9uIGNsYXNzTmFtZT1cImgtM1wiIHN0eWxlPXt7IHdpZHRoOiA0NCB9fSAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMCBweC00XCIgc3R5bGU9e3sgZmxleDogJzMgMSAwJScgfX0+XG4gICAgICAgICAgICA8U2tlbGV0b24gY2xhc3NOYW1lPVwiaC0zXCIgc3R5bGU9e3sgd2lkdGg6IDkyIH19IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4tdy0wIHB4LTRcIiBzdHlsZT17eyBmbGV4OiAnMyAxIDAlJyB9fT5cbiAgICAgICAgICAgIDxTa2VsZXRvbiBjbGFzc05hbWU9XCJoLTNcIiBzdHlsZT17eyB3aWR0aDogNjAgfX0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxSb3dzU2tlbGV0b24gLz5cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cblxuICBpZiAoIWlzTG9hZGluZyAmJiAoIWV2ZW50cyB8fCBldmVudHMubGVuZ3RoID09PSAwKSkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGgtZnVsbCB0ZXh0LXNtXCJcbiAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTcwMCknIH19XG4gICAgICA+XG4gICAgICAgIE5vIGV2ZW50cyBmb3VuZFxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPERlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXJcbiAgICAgIHZhbHVlPXtvbkRlY3J5cHQgPyB7IG9uRGVjcnlwdCwgaXNEZWNyeXB0aW5nIH0gOiB1bmRlZmluZWR9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLWZ1bGwgZmxleCBmbGV4LWNvbCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgPHN0eWxlPntgQGtleWZyYW1lcyB3b3JrZmxvdy1kb3QtcHVsc2V7MCV7dHJhbnNmb3JtOnNjYWxlKDEpO29wYWNpdHk6Ljd9NzAlLDEwMCV7dHJhbnNmb3JtOnNjYWxlKDIuMik7b3BhY2l0eTowfX1gfTwvc3R5bGU+XG4gICAgICAgIHsvKiBTZWFyY2ggYmFyICsgc29ydCAqL31cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBwYWRkaW5nOiA2LFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtYmFja2dyb3VuZC0xMDApJyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGdhcDogNixcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogNixcbiAgICAgICAgICAgICAgYm94U2hhZG93OiAnMCAwIDAgMXB4IHZhcigtLWRzLWdyYXktYWxwaGEtNDAwKScsXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCknLFxuICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHdpZHRoOiA0MCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwLFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTgwMCknLFxuICAgICAgICAgICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICB3aWR0aD17MTZ9XG4gICAgICAgICAgICAgICAgaGVpZ2h0PXsxNn1cbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgICAgICAgICBjeD1cIjdcIlxuICAgICAgICAgICAgICAgICAgY3k9XCI3XCJcbiAgICAgICAgICAgICAgICAgIHI9XCI0LjVcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBkPVwiTTExLjUgMTEuNUwxNCAxNFwiXG4gICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBuYW1lLCBldmVudCB0eXBlLCBvciBJROKAplwiXG4gICAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hRdWVyeX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hRdWVyeShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogLTE2LFxuICAgICAgICAgICAgICAgIHBhZGRpbmdJbmxpbmU6IDEyLFxuICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6ICdpbmhlcml0JyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTQsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDxNZW51RHJvcGRvd25cbiAgICAgICAgICAgIG9wdGlvbnM9e1NPUlRfT1BUSU9OU31cbiAgICAgICAgICAgIHZhbHVlPXtlZmZlY3RpdmVTb3J0T3JkZXJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU29ydE9yZGVyQ2hhbmdlfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyhoYXNFbmNyeXB0ZWREYXRhIHx8IGVuY3J5cHRpb25LZXkpICYmIG9uRGVjcnlwdCAmJiAoXG4gICAgICAgICAgICA8RGVjcnlwdEJ1dHRvblxuICAgICAgICAgICAgICBkZWNyeXB0ZWQ9eyEhZW5jcnlwdGlvbktleX1cbiAgICAgICAgICAgICAgbG9hZGluZz17aXNEZWNyeXB0aW5nfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtvbkRlY3J5cHR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMCB0ZXh0LVsxM3B4XSBmb250LW1lZGl1bSBoLTEwIGJvcmRlci1iIGZsZXgtc2hyaW5rLTBcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBib3JkZXJDb2xvcjogJ3ZhcigtLWRzLWdyYXktYWxwaGEtMjAwKScsXG4gICAgICAgICAgICBjb2xvcjogJ3ZhcigtLWRzLWdyYXktOTAwKScsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1kcy1iYWNrZ3JvdW5kLTEwMCknLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTBcIiBzdHlsZT17eyB3aWR0aDogR1VUVEVSX1dJRFRIIH19IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTUgZmxleC1zaHJpbmstMFwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4tdy0wIHB4LTRcIiBzdHlsZT17eyBmbGV4OiAnMiAxIDAlJyB9fT5cbiAgICAgICAgICAgIFRpbWVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi13LTAgcHgtNFwiIHN0eWxlPXt7IGZsZXg6ICcyIDEgMCUnIH19PlxuICAgICAgICAgICAgRXZlbnQgVHlwZVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWluLXctMCBweC00XCIgc3R5bGU9e3sgZmxleDogJzIgMSAwJScgfX0+XG4gICAgICAgICAgICBOYW1lXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4tdy0wIHB4LTRcIiBzdHlsZT17eyBmbGV4OiAnMyAxIDAlJyB9fT5cbiAgICAgICAgICAgIENvcnJlbGF0aW9uIElEXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtaW4tdy0wIHB4LTRcIiBzdHlsZT17eyBmbGV4OiAnMyAxIDAlJyB9fT5cbiAgICAgICAgICAgIEV2ZW50IElEXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBWaXJ0dWFsaXplZCBldmVudCByb3dzIG9yIHJlZmV0Y2hpbmcgc2tlbGV0b24gKi99XG4gICAgICAgIHtpc1JlZmV0Y2hpbmcgPyAoXG4gICAgICAgICAgPFJvd3NTa2VsZXRvbiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxWaXJ0dW9zb1xuICAgICAgICAgICAgcmVmPXt2aXJ0dW9zb1JlZn1cbiAgICAgICAgICAgIHRvdGFsQ291bnQ9e3NvcnRlZEV2ZW50cy5sZW5ndGh9XG4gICAgICAgICAgICBvdmVyc2Nhbj17MjB9XG4gICAgICAgICAgICBkZWZhdWx0SXRlbUhlaWdodD17NDB9XG4gICAgICAgICAgICBlbmRSZWFjaGVkPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaGFzTW9yZUV2ZW50cyB8fCBpc0xvYWRpbmdNb3JlRXZlbnRzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZvaWQgb25Mb2FkTW9yZUV2ZW50cz8uKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgaXRlbUNvbnRlbnQ9eyhpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGV2ID0gc29ydGVkRXZlbnRzW2luZGV4XTtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RXZlbnRSb3dcbiAgICAgICAgICAgICAgICAgIGV2ZW50PXtldn1cbiAgICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgIGlzRmlyc3Q9e2luZGV4ID09PSAwfVxuICAgICAgICAgICAgICAgICAgaXNMYXN0PXtpbmRleCA9PT0gc29ydGVkRXZlbnRzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICBpc0V4cGFuZGVkPXtleHBhbmRlZEV2ZW50SWRzLmhhcyhldi5ldmVudElkKX1cbiAgICAgICAgICAgICAgICAgIG9uVG9nZ2xlRXhwYW5kPXt0b2dnbGVFdmVudEV4cGFuZGVkfVxuICAgICAgICAgICAgICAgICAgYWN0aXZlR3JvdXBLZXk9e2FjdGl2ZUdyb3VwS2V5fVxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRHcm91cEtleT17c2VsZWN0ZWRHcm91cEtleX1cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkR3JvdXBSYW5nZT17c2VsZWN0ZWRHcm91cFJhbmdlfVxuICAgICAgICAgICAgICAgICAgY29ycmVsYXRpb25OYW1lTWFwPXtjb3JyZWxhdGlvbk5hbWVNYXB9XG4gICAgICAgICAgICAgICAgICB3b3JrZmxvd05hbWU9e3dvcmtmbG93TmFtZX1cbiAgICAgICAgICAgICAgICAgIGR1cmF0aW9uTWFwPXtkdXJhdGlvbk1hcH1cbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0R3JvdXA9e29uU2VsZWN0R3JvdXB9XG4gICAgICAgICAgICAgICAgICBvbkhvdmVyR3JvdXA9e29uSG92ZXJHcm91cH1cbiAgICAgICAgICAgICAgICAgIG9uTG9hZEV2ZW50RGF0YT17b25Mb2FkRXZlbnREYXRhfVxuICAgICAgICAgICAgICAgICAgY2FjaGVkRXZlbnREYXRhPXtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnREYXRhQ2FjaGVSZWYuY3VycmVudC5nZXQoZXYuZXZlbnRJZCkgPz8gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgb25DYWNoZUV2ZW50RGF0YT17Y2FjaGVFdmVudERhdGF9XG4gICAgICAgICAgICAgICAgICBlbmNyeXB0aW9uS2V5PXtlbmNyeXB0aW9uS2V5fVxuICAgICAgICAgICAgICAgICAgb25FbmNyeXB0ZWREYXRhRGV0ZWN0ZWQ9e2hhbmRsZUVuY3J5cHRlZERhdGFEZXRlY3RlZH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7IGZsZXg6IDEsIG1pbkhlaWdodDogMCB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG5cbiAgICAgICAgey8qIEZpeGVkIGZvb3RlciDigJQgY291bnQgKyBsb2FkIG1vcmUgKi99XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4LXNocmluay0wIGZsZXggaXRlbXMtY2VudGVyIGgtMTAgYm9yZGVyLXQgcHgtNCB0ZXh0LXhzXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICd2YXIoLS1kcy1ncmF5LWFscGhhLTIwMCknLFxuICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1kcy1ncmF5LTkwMCknLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tZHMtYmFja2dyb3VuZC0xMDApJyxcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICB7c29ydGVkRXZlbnRzLmxlbmd0aH0gZXZlbnRcbiAgICAgICAgICAgIHtzb3J0ZWRFdmVudHMubGVuZ3RoICE9PSAxID8gJ3MnIDogJyd9IGxvYWRlZFxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB7aGFzTW9yZUV2ZW50cyAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcG9pbnRlci1ldmVudHMtbm9uZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLWF1dG9cIj5cbiAgICAgICAgICAgICAgICA8TG9hZE1vcmVCdXR0b25cbiAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2lzTG9hZGluZ01vcmVFdmVudHN9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB2b2lkIG9uTG9hZE1vcmVFdmVudHM/LigpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L0RlY3J5cHRDbGlja0NvbnRleHQuUHJvdmlkZXI+XG4gICk7XG59XG4iXX0=
|
|
@@ -73,4 +73,4 @@ export function HookResolveModalWrapper({ hookActions, }) {
|
|
|
73
73
|
}
|
|
74
74
|
// Re-export the modal for direct use
|
|
75
75
|
export { ResolveHookModal } from './sidebar/resolve-hook-modal';
|
|
76
|
-
//# sourceMappingURL=hook-actions.js.map
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9vay1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvaG9vay1hY3Rpb25zLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBR2IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBNkJoRSwrRUFBK0U7QUFDL0UsdUNBQXVDO0FBQ3ZDLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEVBQzdCLFNBQVMsRUFDVCxTQUFTLEdBQ2E7SUFDdEIsTUFBTSxLQUFLLEdBQUcsUUFBUSxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsTUFBTSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsR0FBRyxRQUFRLENBQWMsSUFBSSxDQUFDLENBQUM7SUFFcEUsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsQ0FBQyxJQUFVLEVBQUUsRUFBRTtRQUNsRCxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ3pDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFUCxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQy9CLEtBQUssRUFBRSxPQUFnQixFQUFFLEVBQUU7UUFDekIsSUFBSSxXQUFXLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUV6QyxJQUFJLENBQUM7WUFDSCxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckIsTUFBTSxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO2dCQUM3QixXQUFXLEVBQUUsa0RBQWtEO2FBQ2hFLENBQUMsQ0FBQztZQUNILGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUMsS0FBSyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRTtnQkFDcEMsV0FBVyxFQUNULEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDJCQUEyQjthQUNuRSxDQUFDLENBQUM7UUFDTCxDQUFDO2dCQUFTLENBQUM7WUFDVCxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUMsRUFDRCxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUNsRCxDQUFDO0lBRUYsT0FBTztRQUNMLFdBQVc7UUFDWCxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixhQUFhO0tBQ2QsQ0FBQztBQUNKLENBQUM7QUF1QkQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEVBQ3RDLElBQUksRUFDSixlQUFlLEdBQUcsS0FBSyxFQUN2QixjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2E7SUFDN0IsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFtQixFQUFFLEVBQUU7UUFDMUMsSUFBSSxlQUFlO1lBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFFRixPQUFPLENBQ0wsTUFBQyxnQkFBZ0IsSUFBQyxPQUFPLEVBQUUsV0FBVyxhQUNwQyxLQUFDLElBQUksSUFBQyxTQUFTLEVBQUMsY0FBYyxHQUFHLG9CQUVoQixDQUNwQixDQUFDO0FBQ0osQ0FBQztBQVdEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxFQUN0QyxXQUFXLEdBQ1c7SUFDdEIsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQ25FLFdBQVcsQ0FBQztJQUVkLE9BQU8sQ0FDTCxLQUFDLGdCQUFnQixJQUNmLE1BQU0sRUFBRSxZQUFZLEtBQUssSUFBSSxFQUM3QixPQUFPLEVBQUUsaUJBQWlCLEVBQzFCLFFBQVEsRUFBRSxhQUFhLEVBQ3ZCLFlBQVksRUFBRSxXQUFXLEdBQ3pCLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFFRCxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB0eXBlIHsgSG9vaywgV29ya2Zsb3dSdW5TdGF0dXMgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgU2VuZCB9IGZyb20gJ2x1Y2lkZS1yZWFjdCc7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUb2FzdCB9IGZyb20gJy4uL2xpYi90b2FzdCc7XG5pbXBvcnQgeyBSZXNvbHZlSG9va01vZGFsIH0gZnJvbSAnLi9zaWRlYmFyL3Jlc29sdmUtaG9vay1tb2RhbCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9va0FjdGlvbkNhbGxiYWNrcyB7XG4gIC8qKiBDYWxsZWQgYWZ0ZXIgYSBzdWNjZXNzZnVsIGFjdGlvbiAqL1xuICBvblN1Y2Nlc3M/OiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZUhvb2tBY3Rpb25zT3B0aW9ucyB7XG4gIG9uUmVzb2x2ZTogKGhvb2s6IEhvb2ssIHBheWxvYWQ6IHVua25vd24pID0+IFByb21pc2U8dm9pZD47XG4gIGNhbGxiYWNrcz86IEhvb2tBY3Rpb25DYWxsYmFja3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlSG9va0FjdGlvbnNSZXR1cm4ge1xuICAvKiogV2hldGhlciB0aGUgaG9vayBpcyBjdXJyZW50bHkgYmVpbmcgcmVzb2x2ZWQgKi9cbiAgaXNSZXNvbHZpbmc6IGJvb2xlYW47XG4gIC8qKiBUaGUgaG9vayBjdXJyZW50bHkgc2VsZWN0ZWQgZm9yIHJlc29sdXRpb24gKG51bGwgaWYgbm9uZSkgKi9cbiAgc2VsZWN0ZWRIb29rOiBIb29rIHwgbnVsbDtcbiAgLyoqIE9wZW4gdGhlIHJlc29sdmUgbW9kYWwgZm9yIGEgc3BlY2lmaWMgaG9vayAqL1xuICBvcGVuUmVzb2x2ZU1vZGFsOiAoaG9vazogSG9vaykgPT4gdm9pZDtcbiAgLyoqIENsb3NlIHRoZSByZXNvbHZlIG1vZGFsICovXG4gIGNsb3NlUmVzb2x2ZU1vZGFsOiAoKSA9PiB2b2lkO1xuICAvKiogSGFuZGxlIHN1Ym1pdHRpbmcgdGhlIHJlc29sdmUgcGF5bG9hZCAqL1xuICBoYW5kbGVSZXNvbHZlOiAocGF5bG9hZDogdW5rbm93bikgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSG9vayBmb3IgbWFuYWdpbmcgaG9vayBhY3Rpb25zIHN0YXRlXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVhY3QgaG9vayBmb3IgbWFuYWdpbmcgaG9vayBhY3Rpb24gc3RhdGUuXG4gKiBVc2UgdGhpcyB0byBjb29yZGluYXRlIHRoZSByZXNvbHZlIG1vZGFsIGFjcm9zcyBjb21wb25lbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSG9va0FjdGlvbnMoe1xuICBvblJlc29sdmUsXG4gIGNhbGxiYWNrcyxcbn06IFVzZUhvb2tBY3Rpb25zT3B0aW9ucyk6IFVzZUhvb2tBY3Rpb25zUmV0dXJuIHtcbiAgY29uc3QgdG9hc3QgPSB1c2VUb2FzdCgpO1xuICBjb25zdCBbaXNSZXNvbHZpbmcsIHNldElzUmVzb2x2aW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3NlbGVjdGVkSG9vaywgc2V0U2VsZWN0ZWRIb29rXSA9IHVzZVN0YXRlPEhvb2sgfCBudWxsPihudWxsKTtcblxuICBjb25zdCBvcGVuUmVzb2x2ZU1vZGFsID0gdXNlQ2FsbGJhY2soKGhvb2s6IEhvb2spID0+IHtcbiAgICBzZXRTZWxlY3RlZEhvb2soaG9vayk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjbG9zZVJlc29sdmVNb2RhbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTZWxlY3RlZEhvb2sobnVsbCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVSZXNvbHZlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ6IHVua25vd24pID0+IHtcbiAgICAgIGlmIChpc1Jlc29sdmluZyB8fCAhc2VsZWN0ZWRIb29rKSByZXR1cm47XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNldElzUmVzb2x2aW5nKHRydWUpO1xuICAgICAgICBhd2FpdCBvblJlc29sdmUoc2VsZWN0ZWRIb29rLCBwYXlsb2FkKTtcbiAgICAgICAgdG9hc3Quc3VjY2VzcygnSG9vayByZXNvbHZlZCcsIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RoZSBwYXlsb2FkIGhhcyBiZWVuIHNlbnQgYW5kIHRoZSBob29rIHJlc29sdmVkLicsXG4gICAgICAgIH0pO1xuICAgICAgICBzZXRTZWxlY3RlZEhvb2sobnVsbCk7XG4gICAgICAgIGNhbGxiYWNrcz8ub25TdWNjZXNzPy4oKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcmVzb2x2ZSBob29rOicsIGVycik7XG4gICAgICAgIHRvYXN0LmVycm9yKCdGYWlsZWQgdG8gcmVzb2x2ZSBob29rJywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc1Jlc29sdmluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbb25SZXNvbHZlLCBzZWxlY3RlZEhvb2ssIGlzUmVzb2x2aW5nLCBjYWxsYmFja3NdXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBpc1Jlc29sdmluZyxcbiAgICBzZWxlY3RlZEhvb2ssXG4gICAgb3BlblJlc29sdmVNb2RhbCxcbiAgICBjbG9zZVJlc29sdmVNb2RhbCxcbiAgICBoYW5kbGVSZXNvbHZlLFxuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biBNZW51IEl0ZW0gQ29tcG9uZW50XG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG9va0FjdGlvbnNEcm9wZG93bkl0ZW1Qcm9wcyB7XG4gIC8qKiBUaGUgaG9vayB0byBhY3Qgb24gKi9cbiAgaG9vazogSG9vaztcbiAgLyoqIFRoZSBjdXJyZW50IHJ1biBzdGF0dXMgKHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFjdGlvbnMgYXJlIGF2YWlsYWJsZSkgKi9cbiAgcnVuU3RhdHVzPzogV29ya2Zsb3dSdW5TdGF0dXM7XG4gIC8qKiBTdG9wIGNsaWNrIGV2ZW50IHByb3BhZ2F0aW9uICh1c2VmdWwgaW4gdGFibGUgcm93cykgKi9cbiAgc3RvcFByb3BhZ2F0aW9uPzogYm9vbGVhbjtcbiAgLyoqIENhbGxlZCB3aGVuIHRoZSByZXNvbHZlIGFjdGlvbiBpcyB0cmlnZ2VyZWQgKi9cbiAgb25SZXNvbHZlQ2xpY2s6IChob29rOiBIb29rKSA9PiB2b2lkO1xuICAvKiogQ3VzdG9tIERyb3Bkb3duTWVudUl0ZW0gY29tcG9uZW50IChhbGxvd3MgdXNpbmcgdGhlIGNvbnN1bWVyJ3MgVUkgbGlicmFyeSkgKi9cbiAgRHJvcGRvd25NZW51SXRlbTogUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gICAgb25DbGljaz86IChlOiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB2b2lkO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICB9Pjtcbn1cblxuLyoqXG4gKiBEcm9wZG93biBtZW51IGl0ZW0gZm9yIHJlc29sdmluZyBhIGhvb2suXG4gKiBUaGlzIGlzIGEgc2luZ2xlIG1lbnUgaXRlbSBjb21wb25lbnQgdGhhdCBjYW4gYmUgY29tcG9zZWQgaW50byBkcm9wZG93biBtZW51cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlc29sdmVIb29rRHJvcGRvd25JdGVtKHtcbiAgaG9vayxcbiAgc3RvcFByb3BhZ2F0aW9uID0gZmFsc2UsXG4gIG9uUmVzb2x2ZUNsaWNrLFxuICBEcm9wZG93bk1lbnVJdGVtLFxufTogSG9va0FjdGlvbnNEcm9wZG93bkl0ZW1Qcm9wcyk6IFJlYWN0LkpTWC5FbGVtZW50IHtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChzdG9wUHJvcGFnYXRpb24pIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgb25SZXNvbHZlQ2xpY2soaG9vayk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51SXRlbSBvbkNsaWNrPXtoYW5kbGVDbGlja30+XG4gICAgICA8U2VuZCBjbGFzc05hbWU9XCJoLTQgdy00IG1yLTJcIiAvPlxuICAgICAgUmVzb2x2ZSBIb29rXG4gICAgPC9Ecm9wZG93bk1lbnVJdGVtPlxuICApO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNb2RhbCB3cmFwcGVyIGZvciBjb252ZW5pZW5jZVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvb2tSZXNvbHZlTW9kYWxQcm9wcyB7XG4gIC8qKiBUaGUgaG9vayBhY3Rpb25zIHN0YXRlIGZyb20gdXNlSG9va0FjdGlvbnMgKi9cbiAgaG9va0FjdGlvbnM6IFVzZUhvb2tBY3Rpb25zUmV0dXJuO1xufVxuXG4vKipcbiAqIENvbnZlbmllbmNlIHdyYXBwZXIgdGhhdCByZW5kZXJzIHRoZSBSZXNvbHZlSG9va01vZGFsIHVzaW5nIHVzZUhvb2tBY3Rpb25zIHN0YXRlLlxuICogUGxhY2UgdGhpcyBhdCB0aGUgdG9wIGxldmVsIG9mIHlvdXIgY29tcG9uZW50IChvdXRzaWRlIGFueSBpdGVyYXRpb24pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gSG9va1Jlc29sdmVNb2RhbFdyYXBwZXIoe1xuICBob29rQWN0aW9ucyxcbn06IEhvb2tSZXNvbHZlTW9kYWxQcm9wcyk6IFJlYWN0LkpTWC5FbGVtZW50IHwgbnVsbCB7XG4gIGNvbnN0IHsgc2VsZWN0ZWRIb29rLCBjbG9zZVJlc29sdmVNb2RhbCwgaGFuZGxlUmVzb2x2ZSwgaXNSZXNvbHZpbmcgfSA9XG4gICAgaG9va0FjdGlvbnM7XG5cbiAgcmV0dXJuIChcbiAgICA8UmVzb2x2ZUhvb2tNb2RhbFxuICAgICAgaXNPcGVuPXtzZWxlY3RlZEhvb2sgIT09IG51bGx9XG4gICAgICBvbkNsb3NlPXtjbG9zZVJlc29sdmVNb2RhbH1cbiAgICAgIG9uU3VibWl0PXtoYW5kbGVSZXNvbHZlfVxuICAgICAgaXNTdWJtaXR0aW5nPXtpc1Jlc29sdmluZ31cbiAgICAvPlxuICApO1xufVxuXG4vLyBSZS1leHBvcnQgdGhlIG1vZGFsIGZvciBkaXJlY3QgdXNlXG5leHBvcnQgeyBSZXNvbHZlSG9va01vZGFsIH0gZnJvbSAnLi9zaWRlYmFyL3Jlc29sdmUtaG9vay1tb2RhbCc7XG4iXX0=
|
package/dist/components/index.js
CHANGED
|
@@ -12,4 +12,4 @@ export { MenuDropdown } from './ui/menu-dropdown';
|
|
|
12
12
|
export { Spinner } from './ui/spinner';
|
|
13
13
|
export { WorkflowTraceViewer } from './workflow-trace-view';
|
|
14
14
|
export { NewTraceViewer } from './trace-viewer-new';
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUWxELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUNMLG1CQUFtQixHQUVwQixNQUFNLGdDQUFnQyxDQUFDO0FBS3hDLE9BQU8sRUFBb0IsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUNMLGFBQWEsRUFFYixtQkFBbUIsR0FFcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQTJCLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBFcnJvckJvdW5kYXJ5IH0gZnJvbSAnLi9lcnJvci1ib3VuZGFyeSc7XG5leHBvcnQgeyBFdmVudExpc3RWaWV3IH0gZnJvbSAnLi9ldmVudC1saXN0LXZpZXcnO1xuZXhwb3J0IHR5cGUge1xuICBIb29rQWN0aW9uQ2FsbGJhY2tzLFxuICBIb29rQWN0aW9uc0Ryb3Bkb3duSXRlbVByb3BzLFxuICBIb29rUmVzb2x2ZU1vZGFsUHJvcHMsXG4gIFVzZUhvb2tBY3Rpb25zT3B0aW9ucyxcbiAgVXNlSG9va0FjdGlvbnNSZXR1cm4sXG59IGZyb20gJy4vaG9vay1hY3Rpb25zJztcbmV4cG9ydCB7XG4gIEhvb2tSZXNvbHZlTW9kYWxXcmFwcGVyLFxuICBSZXNvbHZlSG9va0Ryb3Bkb3duSXRlbSxcbiAgUmVzb2x2ZUhvb2tNb2RhbCxcbiAgdXNlSG9va0FjdGlvbnMsXG59IGZyb20gJy4vaG9vay1hY3Rpb25zJztcbmV4cG9ydCB7IFJ1blRyYWNlVmlldyB9IGZyb20gJy4vcnVuLXRyYWNlLXZpZXcnO1xuZXhwb3J0IHsgQ29udmVyc2F0aW9uVmlldyB9IGZyb20gJy4vc2lkZWJhci9jb252ZXJzYXRpb24tdmlldyc7XG5leHBvcnQge1xuICBTaWRlYmFyRGF0YVByb3ZpZGVyLFxuICB0eXBlIFNpZGViYXJEYXRhQ29udGV4dFZhbHVlLFxufSBmcm9tICcuL3NpZGViYXIvc2lkZWJhci1kYXRhLWNvbnRleHQnO1xuZXhwb3J0IHR5cGUge1xuICBTZWxlY3RlZFNwYW5JbmZvLFxuICBTcGFuU2VsZWN0aW9uSW5mbyxcbn0gZnJvbSAnLi9zaWRlYmFyL2VudGl0eS1kZXRhaWwtcGFuZWwnO1xuZXhwb3J0IHsgdHlwZSBTdHJlYW1DaHVuaywgU3RyZWFtVmlld2VyIH0gZnJvbSAnLi9zdHJlYW0tdmlld2VyJztcbmV4cG9ydCB0eXBlIHsgU3BhbiwgU3BhbkV2ZW50IH0gZnJvbSAnLi90cmFjZS12aWV3ZXIvdHlwZXMnO1xuZXhwb3J0IHtcbiAgRGF0YUluc3BlY3RvcixcbiAgdHlwZSBEYXRhSW5zcGVjdG9yUHJvcHMsXG4gIERlY3J5cHRDbGlja0NvbnRleHQsXG4gIHR5cGUgRGVjcnlwdENsaWNrQ29udGV4dFZhbHVlLFxufSBmcm9tICcuL3VpL2RhdGEtaW5zcGVjdG9yJztcbmV4cG9ydCB7IERlY3J5cHRCdXR0b24gfSBmcm9tICcuL3VpL2RlY3J5cHQtYnV0dG9uJztcbmV4cG9ydCB7IExvYWRNb3JlQnV0dG9uIH0gZnJvbSAnLi91aS9sb2FkLW1vcmUtYnV0dG9uJztcbmV4cG9ydCB7IE1lbnVEcm9wZG93biwgdHlwZSBNZW51RHJvcGRvd25PcHRpb24gfSBmcm9tICcuL3VpL21lbnUtZHJvcGRvd24nO1xuZXhwb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4vdWkvc3Bpbm5lcic7XG5leHBvcnQgeyBXb3JrZmxvd1RyYWNlVmlld2VyIH0gZnJvbSAnLi93b3JrZmxvdy10cmFjZS12aWV3JztcbmV4cG9ydCB7IE5ld1RyYWNlVmlld2VyIH0gZnJvbSAnLi90cmFjZS12aWV3ZXItbmV3JztcbiJdfQ==
|
|
@@ -13,7 +13,7 @@ export function CopyButton({ copyText, ariaLabel, className, }) {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
}, []);
|
|
16
|
-
return (_jsx("button", { type: "button", "aria-label": ariaLabel, className: cn('cursor-pointer text-gray-800 hover:text-gray-1000 bg-transparent border-
|
|
16
|
+
return (_jsx("button", { type: "button", "aria-label": ariaLabel, className: cn('cursor-pointer text-gray-800 hover:text-gray-1000 bg-transparent border-0 p-1 m-0', className), onClick: (e) => {
|
|
17
17
|
e.stopPropagation();
|
|
18
18
|
if (timeoutRef.current) {
|
|
19
19
|
clearTimeout(timeoutRef.current);
|
|
@@ -24,4 +24,4 @@ export function CopyButton({ copyText, ariaLabel, className, }) {
|
|
|
24
24
|
});
|
|
25
25
|
}, children: _jsxs("div", { className: "relative w-3 h-3", children: [_jsx("div", { className: cn('absolute inset-0 flex items-center justify-center transition-all duration-150 ease-out', copied ? 'scale-100 opacity-100' : 'scale-0 opacity-0'), children: _jsx(Check, { className: "w-3 h-3" }) }), _jsx("div", { className: cn('absolute inset-0 flex items-center justify-center transition-all duration-150 ease-out', copied ? 'scale-0 opacity-0' : 'scale-100 opacity-100'), children: _jsx(Copy, { className: "w-3 h-3" }) })] }) }));
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS1idXR0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvY29weS1idXR0b24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUXhDLE1BQU0sVUFBVSxVQUFVLENBQUMsRUFDekIsUUFBUSxFQUNSLFNBQVMsRUFDVCxTQUFTLEdBQ087SUFDaEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUF1QyxJQUFJLENBQUMsQ0FBQztJQUV0RSxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdkIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRVAsT0FBTyxDQUNMLGlCQUNFLElBQUksRUFBQyxRQUFRLGdCQUNELFNBQVMsRUFDckIsU0FBUyxFQUFFLEVBQUUsQ0FDWCxtRkFBbUYsRUFDbkYsU0FBUyxDQUNWLEVBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDYixDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLFlBQVksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDckQsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixVQUFVLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLFlBRUQsZUFBSyxTQUFTLEVBQUMsa0JBQWtCLGFBQy9CLGNBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCx3RkFBd0YsRUFDeEYsTUFBTSxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQ3ZELFlBRUQsS0FBQyxLQUFLLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUN6QixFQUNOLGNBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCx3RkFBd0YsRUFDeEYsTUFBTSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQ3ZELFlBRUQsS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUN4QixJQUNGLEdBQ0MsQ0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgQ2hlY2ssIENvcHkgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgdHlwZSBKU1gsIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcblxuaW50ZXJmYWNlIENvcHlCdXR0b25Qcm9wcyB7XG4gIGNvcHlUZXh0OiBzdHJpbmc7XG4gIGFyaWFMYWJlbDogc3RyaW5nO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb3B5QnV0dG9uKHtcbiAgY29weVRleHQsXG4gIGFyaWFMYWJlbCxcbiAgY2xhc3NOYW1lLFxufTogQ29weUJ1dHRvblByb3BzKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCBbY29waWVkLCBzZXRDb3BpZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0aW1lb3V0UmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRpbWVvdXRSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH1cbiAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICdjdXJzb3ItcG9pbnRlciB0ZXh0LWdyYXktODAwIGhvdmVyOnRleHQtZ3JheS0xMDAwIGJnLXRyYW5zcGFyZW50IGJvcmRlci0wIHAtMSBtLTAnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAodGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRSZWYuY3VycmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dChjb3B5VGV4dCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgc2V0Q29waWVkKHRydWUpO1xuICAgICAgICAgIHRpbWVvdXRSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4gc2V0Q29waWVkKGZhbHNlKSwgMTAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctMyBoLTNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y24oXG4gICAgICAgICAgICAnYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0xNTAgZWFzZS1vdXQnLFxuICAgICAgICAgICAgY29waWVkID8gJ3NjYWxlLTEwMCBvcGFjaXR5LTEwMCcgOiAnc2NhbGUtMCBvcGFjaXR5LTAnXG4gICAgICAgICAgKX1cbiAgICAgICAgPlxuICAgICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJ3LTMgaC0zXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NuKFxuICAgICAgICAgICAgJ2Fic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTUwIGVhc2Utb3V0JyxcbiAgICAgICAgICAgIGNvcGllZCA/ICdzY2FsZS0wIG9wYWNpdHktMCcgOiAnc2NhbGUtMTAwIG9wYWNpdHktMTAwJ1xuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICA8Q29weSBjbGFzc05hbWU9XCJ3LTMgaC0zXCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn1cbiJdfQ==
|
|
@@ -8,7 +8,7 @@ import { MiddleTruncate } from './middle-truncate/middle-truncate';
|
|
|
8
8
|
const eventStyles = {
|
|
9
9
|
run: { icon: WorkflowIcon, className: 'text-blue-900' },
|
|
10
10
|
step: { icon: StepForwardIcon, className: 'text-green-900' },
|
|
11
|
-
hook: { icon: WebhookIcon, className: 'text-
|
|
11
|
+
hook: { icon: WebhookIcon, className: 'text-gray-900' },
|
|
12
12
|
sleep: { icon: SleepIcon, className: 'text-gray-900' },
|
|
13
13
|
};
|
|
14
14
|
const defaultStyle = {
|
|
@@ -27,7 +27,7 @@ const EventRow = ({ span, isSelected, onSelectSpan, }) => {
|
|
|
27
27
|
const durationMs = getSpanDurationMs(span);
|
|
28
28
|
const isErrored = span.attributes.data.status === 'failed';
|
|
29
29
|
const { icon: Icon, className: tagClassName } = getEventStyle(span.resource, isErrored);
|
|
30
|
-
return (_jsx("li", { className: cn('relative overflow-clip group after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-gray-alpha-400', ROW_HEIGHT_CLASS), role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, onClick: () => onSelectSpan(span.spanId), children: _jsx("div", { className: "h-full hover:bg-gray-100 group-aria-selected:bg-gray-100 group-aria-selected:hover:bg-gray-200", children: _jsxs("div", { className: "flex h-full min-w-0 items-center
|
|
30
|
+
return (_jsx("li", { className: cn('relative overflow-clip group after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-gray-alpha-400', ROW_HEIGHT_CLASS), role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, onClick: () => onSelectSpan(span.spanId), children: _jsx("div", { className: "h-full hover:bg-gray-100 group-aria-selected:bg-gray-100 group-aria-selected:hover:bg-gray-200", children: _jsxs("div", { className: "flex h-full min-w-0 items-center pl-4 pr-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [_jsx("span", { className: cn('shrink-0', tagClassName), children: _jsx(Icon, { className: "w-4 h-4" }) }), _jsx("span", { className: "min-w-0 text-label-14", children: _jsx(MiddleTruncate, { value: span.name }) })] }), _jsx("div", { className: "ml-2 shrink-0", children: _jsx("span", { className: "text-label-14 text-gray-900 tabular-nums", children: formatDuration(durationMs) }) })] }) }) }));
|
|
31
31
|
};
|
|
32
32
|
const EventList = ({ spans, activeSpanId, onSelectSpan, }) => {
|
|
33
33
|
return (_jsx("ul", { id: "event-list", role: "tree", className: "block min-h-0 overflow-visible", children: spans.map((span) => {
|
|
@@ -35,4 +35,4 @@ const EventList = ({ spans, activeSpanId, onSelectSpan, }) => {
|
|
|
35
35
|
}) }));
|
|
36
36
|
};
|
|
37
37
|
export default EventList;
|
|
38
|
-
//# sourceMappingURL=
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25ldy10cmFjZS12aWV3ZXIvY29tcG9uZW50cy9ldmVudC1saXN0LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2hFLE9BQU8sRUFDTCxZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsRUFDVCxlQUFlLEdBQ2hCLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFPbkUsTUFBTSxXQUFXLEdBQStCO0lBQzlDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRTtJQUN2RCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtJQUM1RCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7SUFDdkQsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFO0NBQ3ZELENBQUM7QUFFRixNQUFNLFlBQVksR0FBZTtJQUMvQixJQUFJLEVBQUUsTUFBTTtJQUNaLFNBQVMsRUFBRSxlQUFlO0NBQzNCLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQztBQUVoQyxTQUFTLGFBQWEsQ0FBQyxRQUFnQixFQUFFLFNBQWtCO0lBQ3pELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxZQUFZLENBQUM7SUFDcEQsT0FBTztRQUNMLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtRQUNoQixTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0tBQzVELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxFQUNoQixJQUFJLEVBQ0osVUFBVSxFQUNWLFlBQVksR0FLYixFQUFFLEVBQUU7SUFDSCxNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxNQUFNLFNBQVMsR0FDWixJQUFJLENBQUMsVUFBVSxDQUFDLElBQWdDLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQztJQUN4RSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEdBQUcsYUFBYSxDQUMzRCxJQUFJLENBQUMsUUFBUSxFQUNiLFNBQVMsQ0FDVixDQUFDO0lBRUYsT0FBTyxDQUNMLGFBQ0UsU0FBUyxFQUFFLEVBQUUsQ0FDWCwrR0FBK0csRUFDL0csZ0JBQWdCLENBQ2pCLEVBQ0QsSUFBSSxFQUFDLFVBQVUsbUJBQ0EsVUFBVSxtQkFDVixVQUFVLGdCQUNiLENBQUMsRUFDYixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFFeEMsY0FBSyxTQUFTLEVBQUMsZ0dBQWdHLFlBQzdHLGVBQUssU0FBUyxFQUFDLDRDQUE0QyxhQUN6RCxlQUFLLFNBQVMsRUFBQyx3Q0FBd0MsYUFDckQsZUFBTSxTQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsWUFDM0MsS0FBQyxJQUFJLElBQUMsU0FBUyxFQUFDLFNBQVMsR0FBRyxHQUN2QixFQUNQLGVBQU0sU0FBUyxFQUFDLHVCQUF1QixZQUNyQyxLQUFDLGNBQWMsSUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBSSxHQUMvQixJQUNILEVBQ04sY0FBSyxTQUFTLEVBQUMsZUFBZSxZQUM1QixlQUFNLFNBQVMsRUFBQywwQ0FBMEMsWUFDdkQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUN0QixHQUNILElBQ0YsR0FDRixHQUNILENBQ04sQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLENBQUMsRUFDakIsS0FBSyxFQUNMLFlBQVksRUFDWixZQUFZLEdBS2IsRUFBRSxFQUFFO0lBQ0gsT0FBTyxDQUNMLGFBQUksRUFBRSxFQUFDLFlBQVksRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxnQ0FBZ0MsWUFDdkUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xCLE9BQU8sQ0FDTCxLQUFDLFFBQVEsSUFFUCxJQUFJLEVBQUUsSUFBSSxFQUNWLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxLQUFLLFlBQVksRUFDeEMsWUFBWSxFQUFFLFlBQVksSUFIckIsSUFBSSxDQUFDLE1BQU0sQ0FJaEIsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLEdBQ0MsQ0FDTixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaXJjbGUgfSBmcm9tICdsdWNpZGUtcmVhY3QnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBTcGFuIH0gZnJvbSAnLi4vLi4vdHJhY2Utdmlld2VyL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdER1cmF0aW9uIH0gZnJvbSAnLi4vLi4vdHJhY2Utdmlld2VyL3V0aWwvdGltaW5nJztcbmltcG9ydCB7XG4gIFdvcmtmbG93SWNvbixcbiAgV2ViaG9va0ljb24sXG4gIFNsZWVwSWNvbixcbiAgU3RlcEZvcndhcmRJY29uLFxufSBmcm9tICcuLi9pY29ucyc7XG5pbXBvcnQgeyBnZXRTcGFuRHVyYXRpb25NcyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE1pZGRsZVRydW5jYXRlIH0gZnJvbSAnLi9taWRkbGUtdHJ1bmNhdGUvbWlkZGxlLXRydW5jYXRlJztcblxuaW50ZXJmYWNlIEV2ZW50U3R5bGUge1xuICBpY29uOiBSZWFjdC5Db21wb25lbnRUeXBlPHsgY2xhc3NOYW1lPzogc3RyaW5nIH0+O1xuICBjbGFzc05hbWU6IHN0cmluZztcbn1cblxuY29uc3QgZXZlbnRTdHlsZXM6IFJlY29yZDxzdHJpbmcsIEV2ZW50U3R5bGU+ID0ge1xuICBydW46IHsgaWNvbjogV29ya2Zsb3dJY29uLCBjbGFzc05hbWU6ICd0ZXh0LWJsdWUtOTAwJyB9LFxuICBzdGVwOiB7IGljb246IFN0ZXBGb3J3YXJkSWNvbiwgY2xhc3NOYW1lOiAndGV4dC1ncmVlbi05MDAnIH0sXG4gIGhvb2s6IHsgaWNvbjogV2ViaG9va0ljb24sIGNsYXNzTmFtZTogJ3RleHQtZ3JheS05MDAnIH0sXG4gIHNsZWVwOiB7IGljb246IFNsZWVwSWNvbiwgY2xhc3NOYW1lOiAndGV4dC1ncmF5LTkwMCcgfSxcbn07XG5cbmNvbnN0IGRlZmF1bHRTdHlsZTogRXZlbnRTdHlsZSA9IHtcbiAgaWNvbjogQ2lyY2xlLFxuICBjbGFzc05hbWU6ICd0ZXh0LWdyYXktOTAwJyxcbn07XG5cbmNvbnN0IFJPV19IRUlHSFRfQ0xBU1MgPSAnaC0xMCc7XG5cbmZ1bmN0aW9uIGdldEV2ZW50U3R5bGUocmVzb3VyY2U6IHN0cmluZywgaXNFcnJvcmVkOiBib29sZWFuKTogRXZlbnRTdHlsZSB7XG4gIGNvbnN0IHN0eWxlID0gZXZlbnRTdHlsZXNbcmVzb3VyY2VdID8/IGRlZmF1bHRTdHlsZTtcbiAgcmV0dXJuIHtcbiAgICBpY29uOiBzdHlsZS5pY29uLFxuICAgIGNsYXNzTmFtZTogY24oaXNFcnJvcmVkID8gJ3RleHQtcmVkLTkwMCcgOiBzdHlsZS5jbGFzc05hbWUpLFxuICB9O1xufVxuXG5jb25zdCBFdmVudFJvdyA9ICh7XG4gIHNwYW4sXG4gIGlzU2VsZWN0ZWQsXG4gIG9uU2VsZWN0U3Bhbixcbn06IHtcbiAgc3BhbjogU3BhbjtcbiAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgb25TZWxlY3RTcGFuOiAoc3BhbklkOiBzdHJpbmcpID0+IHZvaWQ7XG59KSA9PiB7XG4gIGNvbnN0IGR1cmF0aW9uTXMgPSBnZXRTcGFuRHVyYXRpb25NcyhzcGFuKTtcbiAgY29uc3QgaXNFcnJvcmVkID1cbiAgICAoc3Bhbi5hdHRyaWJ1dGVzLmRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnN0YXR1cyA9PT0gJ2ZhaWxlZCc7XG4gIGNvbnN0IHsgaWNvbjogSWNvbiwgY2xhc3NOYW1lOiB0YWdDbGFzc05hbWUgfSA9IGdldEV2ZW50U3R5bGUoXG4gICAgc3Bhbi5yZXNvdXJjZSxcbiAgICBpc0Vycm9yZWRcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxsaVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3JlbGF0aXZlIG92ZXJmbG93LWNsaXAgZ3JvdXAgYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6aW5zZXQteC0wIGFmdGVyOmJvdHRvbS0wIGFmdGVyOmgtcHggYWZ0ZXI6YmctZ3JheS1hbHBoYS00MDAnLFxuICAgICAgICBST1dfSEVJR0hUX0NMQVNTXG4gICAgICApfVxuICAgICAgcm9sZT1cInRyZWVpdGVtXCJcbiAgICAgIGFyaWEtc2VsZWN0ZWQ9e2lzU2VsZWN0ZWR9XG4gICAgICBhcmlhLWV4cGFuZGVkPXtpc1NlbGVjdGVkfVxuICAgICAgYXJpYS1sZXZlbD17MX1cbiAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2VsZWN0U3BhbihzcGFuLnNwYW5JZCl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLWZ1bGwgaG92ZXI6YmctZ3JheS0xMDAgZ3JvdXAtYXJpYS1zZWxlY3RlZDpiZy1ncmF5LTEwMCBncm91cC1hcmlhLXNlbGVjdGVkOmhvdmVyOmJnLWdyYXktMjAwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgbWluLXctMCBpdGVtcy1jZW50ZXIgcGwtNCBwci0yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IG1pbi13LTAgZmxleC0xIGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbignc2hyaW5rLTAnLCB0YWdDbGFzc05hbWUpfT5cbiAgICAgICAgICAgICAgPEljb24gY2xhc3NOYW1lPVwidy00IGgtNFwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtaW4tdy0wIHRleHQtbGFiZWwtMTRcIj5cbiAgICAgICAgICAgICAgPE1pZGRsZVRydW5jYXRlIHZhbHVlPXtzcGFuLm5hbWV9IC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtbC0yIHNocmluay0wXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxhYmVsLTE0IHRleHQtZ3JheS05MDAgdGFidWxhci1udW1zXCI+XG4gICAgICAgICAgICAgIHtmb3JtYXREdXJhdGlvbihkdXJhdGlvbk1zKX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICApO1xufTtcblxuY29uc3QgRXZlbnRMaXN0ID0gKHtcbiAgc3BhbnMsXG4gIGFjdGl2ZVNwYW5JZCxcbiAgb25TZWxlY3RTcGFuLFxufToge1xuICBzcGFuczogU3BhbltdO1xuICBhY3RpdmVTcGFuSWQ6IHN0cmluZyB8IG51bGw7XG4gIG9uU2VsZWN0U3BhbjogKHNwYW5JZDogc3RyaW5nKSA9PiB2b2lkO1xufSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDx1bCBpZD1cImV2ZW50LWxpc3RcIiByb2xlPVwidHJlZVwiIGNsYXNzTmFtZT1cImJsb2NrIG1pbi1oLTAgb3ZlcmZsb3ctdmlzaWJsZVwiPlxuICAgICAge3NwYW5zLm1hcCgoc3BhbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxFdmVudFJvd1xuICAgICAgICAgICAga2V5PXtzcGFuLnNwYW5JZH1cbiAgICAgICAgICAgIHNwYW49e3NwYW59XG4gICAgICAgICAgICBpc1NlbGVjdGVkPXtzcGFuLnNwYW5JZCA9PT0gYWN0aXZlU3BhbklkfVxuICAgICAgICAgICAgb25TZWxlY3RTcGFuPXtvblNlbGVjdFNwYW59XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH0pfVxuICAgIDwvdWw+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFdmVudExpc3Q7XG4iXX0=
|
|
@@ -51,4 +51,4 @@ function getMiddleTruncateCopyTextFromSelectionText({ prefixText, selectionText,
|
|
|
51
51
|
return mappedText === null ? null : leading + mappedText + trailing;
|
|
52
52
|
}
|
|
53
53
|
export { getMiddleTruncateCopyText, getMiddleTruncateCopyTextFromSelectionText, };
|
|
54
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS1zZWxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvbWlkZGxlLXRydW5jYXRlL2NvcHktc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBaUJuRCxTQUFTLHlCQUF5QixDQUFDLEVBQ2pDLFVBQVUsRUFDVixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixLQUFLLEdBQzRCO0lBQ2pDLE1BQU0sV0FBVyxHQUFHLFVBQVUsR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBRXZELElBQ0UsY0FBYyxHQUFHLENBQUM7UUFDbEIsWUFBWSxHQUFHLFdBQVcsQ0FBQyxNQUFNO1FBQ2pDLGNBQWMsSUFBSSxZQUFZLEVBQzlCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLGNBQWMsS0FBSyxDQUFDLElBQUksWUFBWSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ3hDLE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBRXBELElBQUksY0FBYyxHQUFHLGFBQWEsSUFBSSxZQUFZLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsTUFBTSwyQkFBMkIsR0FBRyxXQUFXLENBQzdDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUNyQyxDQUFDLE1BQU0sQ0FBQztJQUNULE1BQU0sMkJBQTJCLEdBQUcsV0FBVyxDQUM3QyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FDN0MsQ0FBQyxNQUFNLENBQUM7SUFDVCxNQUFNLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUU5RSxPQUFPLGlCQUFpQjtTQUNyQixLQUFLLENBQ0osMkJBQTJCLEVBQzNCLFdBQVcsR0FBRywyQkFBMkIsQ0FDMUM7U0FDQSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUywwQ0FBMEMsQ0FBQyxFQUNsRCxVQUFVLEVBQ1YsYUFBYSxFQUNiLFVBQVUsRUFDVixLQUFLLEdBQzZDO0lBQ2xELE1BQU0sV0FBVyxHQUFHLFVBQVUsR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQ3ZELE1BQU0sb0JBQW9CLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRWxELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQ2pDLENBQUMsRUFDRCxhQUFhLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQ3hELENBQUM7SUFDRixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVyRSxJQUFJLG9CQUFvQixLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sT0FBTyxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDakUsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxjQUFjLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDO0lBQ2xFLE1BQU0sVUFBVSxHQUFHLHlCQUF5QixDQUFDO1FBQzNDLFVBQVU7UUFDVixZQUFZO1FBQ1osY0FBYztRQUNkLFVBQVU7UUFDVixLQUFLO0tBQ04sQ0FBQyxDQUFDO0lBRUgsT0FBTyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDO0FBQ3RFLENBQUM7QUFFRCxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLDBDQUEwQyxHQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRUxMSVBTSVMsIHRvR3JhcGhlbWVzIH0gZnJvbSAnLi90cnVuY2F0ZSc7XG5cbmludGVyZmFjZSBHZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0T3B0aW9ucyB7XG4gIHByZWZpeFRleHQ6IHN0cmluZztcbiAgc2VsZWN0aW9uRW5kOiBudW1iZXI7XG4gIHNlbGVjdGlvblN0YXJ0OiBudW1iZXI7XG4gIHN1ZmZpeFRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEdldE1pZGRsZVRydW5jYXRlQ29weVRleHRGcm9tU2VsZWN0aW9uVGV4dE9wdGlvbnMge1xuICBwcmVmaXhUZXh0OiBzdHJpbmc7XG4gIHNlbGVjdGlvblRleHQ6IHN0cmluZztcbiAgc3VmZml4VGV4dDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBnZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0KHtcbiAgcHJlZml4VGV4dCxcbiAgc2VsZWN0aW9uRW5kLFxuICBzZWxlY3Rpb25TdGFydCxcbiAgc3VmZml4VGV4dCxcbiAgdmFsdWUsXG59OiBHZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0T3B0aW9ucyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB2aXNpYmxlVGV4dCA9IHByZWZpeFRleHQgKyBFTExJUFNJUyArIHN1ZmZpeFRleHQ7XG5cbiAgaWYgKFxuICAgIHNlbGVjdGlvblN0YXJ0IDwgMCB8fFxuICAgIHNlbGVjdGlvbkVuZCA+IHZpc2libGVUZXh0Lmxlbmd0aCB8fFxuICAgIHNlbGVjdGlvblN0YXJ0ID49IHNlbGVjdGlvbkVuZFxuICApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChzZWxlY3Rpb25TdGFydCA9PT0gMCAmJiBzZWxlY3Rpb25FbmQgPT09IHZpc2libGVUZXh0Lmxlbmd0aCkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IGVsbGlwc2lzU3RhcnQgPSBwcmVmaXhUZXh0Lmxlbmd0aDtcbiAgY29uc3QgZWxsaXBzaXNFbmQgPSBlbGxpcHNpc1N0YXJ0ICsgRUxMSVBTSVMubGVuZ3RoO1xuXG4gIGlmIChzZWxlY3Rpb25TdGFydCA+IGVsbGlwc2lzU3RhcnQgfHwgc2VsZWN0aW9uRW5kIDwgZWxsaXBzaXNFbmQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsR3JhcGhlbWVzID0gdG9HcmFwaGVtZXModmFsdWUpO1xuICBjb25zdCBzZWxlY3RlZFByZWZpeEdyYXBoZW1lQ291bnQgPSB0b0dyYXBoZW1lcyhcbiAgICB2aXNpYmxlVGV4dC5zbGljZSgwLCBzZWxlY3Rpb25TdGFydClcbiAgKS5sZW5ndGg7XG4gIGNvbnN0IHNlbGVjdGVkU3VmZml4R3JhcGhlbWVDb3VudCA9IHRvR3JhcGhlbWVzKFxuICAgIHZpc2libGVUZXh0LnNsaWNlKGVsbGlwc2lzRW5kLCBzZWxlY3Rpb25FbmQpXG4gICkubGVuZ3RoO1xuICBjb25zdCBzdWZmaXhTdGFydCA9IG9yaWdpbmFsR3JhcGhlbWVzLmxlbmd0aCAtIHRvR3JhcGhlbWVzKHN1ZmZpeFRleHQpLmxlbmd0aDtcblxuICByZXR1cm4gb3JpZ2luYWxHcmFwaGVtZXNcbiAgICAuc2xpY2UoXG4gICAgICBzZWxlY3RlZFByZWZpeEdyYXBoZW1lQ291bnQsXG4gICAgICBzdWZmaXhTdGFydCArIHNlbGVjdGVkU3VmZml4R3JhcGhlbWVDb3VudFxuICAgIClcbiAgICAuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGdldE1pZGRsZVRydW5jYXRlQ29weVRleHRGcm9tU2VsZWN0aW9uVGV4dCh7XG4gIHByZWZpeFRleHQsXG4gIHNlbGVjdGlvblRleHQsXG4gIHN1ZmZpeFRleHQsXG4gIHZhbHVlLFxufTogR2V0TWlkZGxlVHJ1bmNhdGVDb3B5VGV4dEZyb21TZWxlY3Rpb25UZXh0T3B0aW9ucyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCB2aXNpYmxlVGV4dCA9IHByZWZpeFRleHQgKyBFTExJUFNJUyArIHN1ZmZpeFRleHQ7XG4gIGNvbnN0IHRyaW1tZWRTZWxlY3Rpb25UZXh0ID0gc2VsZWN0aW9uVGV4dC50cmltKCk7XG5cbiAgaWYgKCF0cmltbWVkU2VsZWN0aW9uVGV4dCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgbGVhZGluZyA9IHNlbGVjdGlvblRleHQuc2xpY2UoXG4gICAgMCxcbiAgICBzZWxlY3Rpb25UZXh0Lmxlbmd0aCAtIHNlbGVjdGlvblRleHQudHJpbVN0YXJ0KCkubGVuZ3RoXG4gICk7XG4gIGNvbnN0IHRyYWlsaW5nID0gc2VsZWN0aW9uVGV4dC5zbGljZShzZWxlY3Rpb25UZXh0LnRyaW1FbmQoKS5sZW5ndGgpO1xuXG4gIGlmICh0cmltbWVkU2VsZWN0aW9uVGV4dCA9PT0gdmlzaWJsZVRleHQpIHtcbiAgICByZXR1cm4gbGVhZGluZyArIHZhbHVlICsgdHJhaWxpbmc7XG4gIH1cblxuICBpZiAoIXRyaW1tZWRTZWxlY3Rpb25UZXh0LmluY2x1ZGVzKEVMTElQU0lTKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSB2aXNpYmxlVGV4dC5pbmRleE9mKHRyaW1tZWRTZWxlY3Rpb25UZXh0KTtcbiAgaWYgKHNlbGVjdGlvblN0YXJ0ID09PSAtMSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qgc2VsZWN0aW9uRW5kID0gc2VsZWN0aW9uU3RhcnQgKyB0cmltbWVkU2VsZWN0aW9uVGV4dC5sZW5ndGg7XG4gIGNvbnN0IG1hcHBlZFRleHQgPSBnZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0KHtcbiAgICBwcmVmaXhUZXh0LFxuICAgIHNlbGVjdGlvbkVuZCxcbiAgICBzZWxlY3Rpb25TdGFydCxcbiAgICBzdWZmaXhUZXh0LFxuICAgIHZhbHVlLFxuICB9KTtcblxuICByZXR1cm4gbWFwcGVkVGV4dCA9PT0gbnVsbCA/IG51bGwgOiBsZWFkaW5nICsgbWFwcGVkVGV4dCArIHRyYWlsaW5nO1xufVxuXG5leHBvcnQge1xuICBnZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0LFxuICBnZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0RnJvbVNlbGVjdGlvblRleHQsXG59O1xuZXhwb3J0IHR5cGUge1xuICBHZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0RnJvbVNlbGVjdGlvblRleHRPcHRpb25zLFxuICBHZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0T3B0aW9ucyxcbn07XG4iXX0=
|
|
@@ -78,4 +78,4 @@ function MiddleTruncate({ value, className, onCopy: onCopyProp, ...props }) {
|
|
|
78
78
|
return (_jsxs("span", { title: isTruncated ? value : undefined, ...props, ref: ref, className: cn('relative inline-grid min-w-0 max-w-full overflow-hidden whitespace-nowrap', className), onCopy: handleCopy, children: [isTruncated && _jsx("span", { className: "sr-only select-none", children: value }), _jsx("span", { "aria-hidden": "true", className: "pointer-events-none col-start-1 row-start-1 invisible select-none whitespace-nowrap", children: value }), _jsx("span", { "aria-hidden": isTruncated || undefined, className: "col-start-1 row-start-1 min-w-0 overflow-hidden", ref: visibleRef, children: isTruncated ? (_jsxs(_Fragment, { children: [_jsx("span", { children: prefixText }), _jsx("span", { children: ELLIPSIS }), _jsx("span", { children: suffixText })] })) : (displayText) }), _jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute left-0 top-0 inline-block invisible select-none whitespace-nowrap", ref: measureRef })] }));
|
|
79
79
|
}
|
|
80
80
|
export { MiddleTruncate };
|
|
81
|
-
//# sourceMappingURL=middle-truncate.js.map
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxlLXRydW5jYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbmV3LXRyYWNlLXZpZXdlci9jb21wb25lbnRzL21pZGRsZS10cnVuY2F0ZS9taWRkbGUtdHJ1bmNhdGUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUU1QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0MsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwwQ0FBMEMsR0FDM0MsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUzFELFNBQVMsZUFBZSxDQUN0QixTQUFzQixFQUN0QixLQUFZO0lBRVosSUFDRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUN6QyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUN2QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFDLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTNELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLE1BQU0sQ0FB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QkFBcUIsWUFBRSxLQUFLLEdBQVEsRUFDcEUsOEJBQ2MsTUFBTSxFQUNsQixTQUFTLEVBQUMscUZBQXFGLFlBRTlGLEtBQUssR0FDRCxFQUNQLDhCQUNlLFdBQVcsSUFBSSxTQUFTLEVBQ3JDLFNBQVMsRUFBQyxpREFBaUQsRUFDM0QsR0FBRyxFQUFFLFVBQVUsWUFFZCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2IsOEJBQ0UseUJBQU8sVUFBVSxHQUFRLEVBQ3pCLHlCQUFPLFFBQVEsR0FBUSxFQUN2Qix5QkFBTyxVQUFVLEdBQVEsSUFDeEIsQ0FDSixDQUFDLENBQUMsQ0FBQyxDQUNGLFdBQVcsQ0FDWixHQUNJLEVBQ1AsOEJBQ2MsTUFBTSxFQUNsQixTQUFTLEVBQUMsZ0dBQWdHLEVBQzFHLEdBQUcsRUFBRSxVQUFVLEdBQ2YsSUFDRyxDQUNSLENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBDbGlwYm9hcmRFdmVudCwgQ29tcG9uZW50UHJvcHNXaXRob3V0UmVmLCBKU1ggfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4uLy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQge1xuICBnZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0LFxuICBnZXRNaWRkbGVUcnVuY2F0ZUNvcHlUZXh0RnJvbVNlbGVjdGlvblRleHQsXG59IGZyb20gJy4vY29weS1zZWxlY3Rpb24nO1xuaW1wb3J0IHsgRUxMSVBTSVMgfSBmcm9tICcuL3RydW5jYXRlJztcbmltcG9ydCB7IHVzZU1pZGRsZVRydW5jYXRlIH0gZnJvbSAnLi91c2UtbWlkZGxlLXRydW5jYXRlJztcblxuLyoqIFByb3BzIGZvciB0aGUge0BsaW5rIE1pZGRsZVRydW5jYXRlfSBjb21wb25lbnQuICovXG5pbnRlcmZhY2UgTWlkZGxlVHJ1bmNhdGVQcm9wc1xuICBleHRlbmRzIE9taXQ8Q29tcG9uZW50UHJvcHNXaXRob3V0UmVmPCdzcGFuJz4sICdjaGlsZHJlbic+IHtcbiAgLyoqIFRoZSBmdWxsIHRleHQgc3RyaW5nIHRvIGRpc3BsYXksIHRydW5jYXRlZCBmcm9tIHRoZSBtaWRkbGUgd2hlbiBpdCBvdmVyZmxvd3MuICovXG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFJhbmdlT2Zmc2V0cyhcbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudCxcbiAgcmFuZ2U6IFJhbmdlXG4pOiB7IGVuZDogbnVtYmVyOyBzdGFydDogbnVtYmVyIH0gfCBudWxsIHtcbiAgaWYgKFxuICAgICFjb250YWluZXIuY29udGFpbnMocmFuZ2Uuc3RhcnRDb250YWluZXIpIHx8XG4gICAgIWNvbnRhaW5lci5jb250YWlucyhyYW5nZS5lbmRDb250YWluZXIpXG4gICkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3Qgc3RhcnRSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gIHN0YXJ0UmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGNvbnRhaW5lcik7XG4gIHN0YXJ0UmFuZ2Uuc2V0RW5kKHJhbmdlLnN0YXJ0Q29udGFpbmVyLCByYW5nZS5zdGFydE9mZnNldCk7XG5cbiAgY29uc3QgZW5kUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICBlbmRSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoY29udGFpbmVyKTtcbiAgZW5kUmFuZ2Uuc2V0RW5kKHJhbmdlLmVuZENvbnRhaW5lciwgcmFuZ2UuZW5kT2Zmc2V0KTtcblxuICByZXR1cm4ge1xuICAgIGVuZDogZW5kUmFuZ2UudG9TdHJpbmcoKS5sZW5ndGgsXG4gICAgc3RhcnQ6IHN0YXJ0UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGgsXG4gIH07XG59XG5cbi8qKlxuICogQGdkb2NcbiAqXG4gKiBUcnVuY2F0ZXMgdGV4dCBmcm9tIHRoZSBtaWRkbGUgd2l0aCBhbiBlbGxpcHNpcyB3aGVuIGl0IG92ZXJmbG93cywgcHJlc2VydmluZyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgKGUuZy4gZmlsZSBwYXRocywgVVJMcykuIENvcHkgYmVoYXZpb3IgcmVzdG9yZXMgdGhlIGZ1bGwgdW50cnVuY2F0ZWQgdGV4dCB0byB0aGUgY2xpcGJvYXJkLlxuICogUmVuZGVycyBhIGA8c3Bhbj5gIGVsZW1lbnQuXG4gKlxuICogRG9jdW1lbnRhdGlvbjogW0dlaXN0IE1pZGRsZSBUcnVuY2F0ZV0oaHR0cHM6Ly92ZXJjZWwuY29tL2dlaXN0L21pZGRsZS10cnVuY2F0ZSlcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBGdWxsIHRleHQgc3RyaW5nIHRvIGRpc3BsYXkuXG4gKi9cbmZ1bmN0aW9uIE1pZGRsZVRydW5jYXRlKHtcbiAgdmFsdWUsXG4gIGNsYXNzTmFtZSxcbiAgb25Db3B5OiBvbkNvcHlQcm9wLFxuICAuLi5wcm9wc1xufTogTWlkZGxlVHJ1bmNhdGVQcm9wcyk6IEpTWC5FbGVtZW50IHtcbiAgY29uc3QgeyByZWYsIG1lYXN1cmVSZWYsIGRpc3BsYXlUZXh0LCBpc1RydW5jYXRlZCwgcHJlZml4VGV4dCwgc3VmZml4VGV4dCB9ID1cbiAgICB1c2VNaWRkbGVUcnVuY2F0ZSh2YWx1ZSk7XG4gIGNvbnN0IHZpc2libGVSZWYgPSB1c2VSZWY8SFRNTFNwYW5FbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3QgaGFuZGxlQ29weSA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBDbGlwYm9hcmRFdmVudDxIVE1MU3BhbkVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkNvcHlQcm9wPy4oZSk7XG4gICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkIHx8ICFpc1RydW5jYXRlZCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICBpZiAoIXNlbGVjdGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkgcmV0dXJuO1xuICAgICAgY29uc3Qgc2VsZWN0aW9uVGV4dCA9IHNlbGVjdGlvbi50b1N0cmluZygpO1xuICAgICAgaWYgKCFzZWxlY3Rpb25UZXh0KSByZXR1cm47XG5cbiAgICAgIC8vIE9ubHkgaW50ZXJjZXB0IHdoZW4gdGhlIHNlbGVjdGlvbiBpcyBmdWxseSB3aXRoaW4gdGhpcyBlbGVtZW50LlxuICAgICAgLy8gSWYgdGhlIHVzZXIgc2VsZWN0ZWQgYWNyb3NzIGVsZW1lbnRzIChlLmcuIGEgdGFibGUgcm93KSwgbGV0XG4gICAgICAvLyB0aGUgYnJvd3NlcidzIGRlZmF1bHQgYmVoYXZpb3IgcHJlc2VydmUgc3Vycm91bmRpbmcgY29udGV4dC5cbiAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgICBjb25zdCB2aXNpYmxlRWwgPSB2aXNpYmxlUmVmLmN1cnJlbnQ7XG4gICAgICBsZXQgY29weVRleHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGUuY3VycmVudFRhcmdldC5jb250YWlucyhyYW5nZS5zdGFydENvbnRhaW5lcikgJiZcbiAgICAgICAgZS5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKHJhbmdlLmVuZENvbnRhaW5lcikgJiZcbiAgICAgICAgdmlzaWJsZUVsXG4gICAgICApIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFJhbmdlT2Zmc2V0cyh2aXNpYmxlRWwsIHJhbmdlKTtcbiAgICAgICAgaWYgKG9mZnNldHMpIHtcbiAgICAgICAgICBjb3B5VGV4dCA9IGdldE1pZGRsZVRydW5jYXRlQ29weVRleHQoe1xuICAgICAgICAgICAgcHJlZml4VGV4dCxcbiAgICAgICAgICAgIHNlbGVjdGlvbkVuZDogb2Zmc2V0cy5lbmQsXG4gICAgICAgICAgICBzZWxlY3Rpb25TdGFydDogb2Zmc2V0cy5zdGFydCxcbiAgICAgICAgICAgIHN1ZmZpeFRleHQsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb3B5VGV4dCA/Pz0gZ2V0TWlkZGxlVHJ1bmNhdGVDb3B5VGV4dEZyb21TZWxlY3Rpb25UZXh0KHtcbiAgICAgICAgcHJlZml4VGV4dCxcbiAgICAgICAgc2VsZWN0aW9uVGV4dCxcbiAgICAgICAgc3VmZml4VGV4dCxcbiAgICAgICAgdmFsdWUsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGNvcHlUZXh0ID09PSBudWxsKSByZXR1cm47XG5cbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0L3BsYWluJywgY29weVRleHQpO1xuICAgIH0sXG4gICAgW29uQ29weVByb3AsIGlzVHJ1bmNhdGVkLCBwcmVmaXhUZXh0LCBzdWZmaXhUZXh0LCB2YWx1ZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICB0aXRsZT17aXNUcnVuY2F0ZWQgPyB2YWx1ZSA6IHVuZGVmaW5lZH1cbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIHJlZj17cmVmfVxuICAgICAgY2xhc3NOYW1lPXtjbihcbiAgICAgICAgJ3JlbGF0aXZlIGlubGluZS1ncmlkIG1pbi13LTAgbWF4LXctZnVsbCBvdmVyZmxvdy1oaWRkZW4gd2hpdGVzcGFjZS1ub3dyYXAnLFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgICBvbkNvcHk9e2hhbmRsZUNvcHl9XG4gICAgPlxuICAgICAge2lzVHJ1bmNhdGVkICYmIDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHkgc2VsZWN0LW5vbmVcIj57dmFsdWV9PC9zcGFuPn1cbiAgICAgIDxzcGFuXG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIGNsYXNzTmFtZT1cInBvaW50ZXItZXZlbnRzLW5vbmUgY29sLXN0YXJ0LTEgcm93LXN0YXJ0LTEgaW52aXNpYmxlIHNlbGVjdC1ub25lIHdoaXRlc3BhY2Utbm93cmFwXCJcbiAgICAgID5cbiAgICAgICAge3ZhbHVlfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgYXJpYS1oaWRkZW49e2lzVHJ1bmNhdGVkIHx8IHVuZGVmaW5lZH1cbiAgICAgICAgY2xhc3NOYW1lPVwiY29sLXN0YXJ0LTEgcm93LXN0YXJ0LTEgbWluLXctMCBvdmVyZmxvdy1oaWRkZW5cIlxuICAgICAgICByZWY9e3Zpc2libGVSZWZ9XG4gICAgICA+XG4gICAgICAgIHtpc1RydW5jYXRlZCA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPHNwYW4+e3ByZWZpeFRleHR9PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4+e0VMTElQU0lTfTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuPntzdWZmaXhUZXh0fTwvc3Bhbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5VGV4dFxuICAgICAgICApfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgY2xhc3NOYW1lPVwicG9pbnRlci1ldmVudHMtbm9uZSBhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgaW5saW5lLWJsb2NrIGludmlzaWJsZSBzZWxlY3Qtbm9uZSB3aGl0ZXNwYWNlLW5vd3JhcFwiXG4gICAgICAgIHJlZj17bWVhc3VyZVJlZn1cbiAgICAgIC8+XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgeyBNaWRkbGVUcnVuY2F0ZSB9O1xuZXhwb3J0IHR5cGUgeyBNaWRkbGVUcnVuY2F0ZVByb3BzIH07XG4iXX0=
|
|
@@ -98,4 +98,4 @@ function middleTruncate(graphemes, availableWidth, measure, fullWidth) {
|
|
|
98
98
|
return buildCandidate(graphemes, best);
|
|
99
99
|
}
|
|
100
100
|
export { middleTruncate, toGraphemes, ELLIPSIS, MIN_START, MIN_END };
|
|
101
|
-
//# sourceMappingURL=
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1bmNhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9uZXctdHJhY2Utdmlld2VyL2NvbXBvbmVudHMvbWlkZGxlLXRydW5jYXRlL3RydW5jYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN2QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQ2xCLE1BQU0sUUFBUSxHQUFHLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDckMsTUFBTSxpQkFBaUIsR0FDckIsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLFdBQVcsSUFBSSxJQUFJO0lBQ2hELENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQzVELENBQUMsQ0FBQyxJQUFJLENBQUM7QUFJWDs7O0dBR0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBQy9CLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFXRCxTQUFTLGNBQWMsQ0FBQyxTQUFtQixFQUFFLElBQVk7SUFDdkQsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDZCxPQUFPO1lBQ0wsVUFBVSxFQUFFLEVBQUU7WUFDZCxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsbUJBQW1CLEVBQUUsQ0FBQztZ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LENBQUMsRUFBRSxDQUFDO1FBQ2hCLE9BQU87WUFDTCxVQUFVLEVBQUUsRUFBRTtZQUNkLG1CQUFtQixFQUFFLENBQUM7WUFDdEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLElBQUksRUFBRSxFQUFFO1lBQ1IsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFTExJUFNJUyA9ICcuLi4nO1xuY29uc3QgTUlOX1NUQVJUID0gMztcbmNvbnN0IE1JTl9FTkQgPSAzO1xuY29uc3QgTUlOX0tFUFQgPSBNSU5fU1RBUlQgKyBNSU5fRU5EO1xuY29uc3QgZ3JhcGhlbWVTZWdtZW50ZXIgPVxuICB0eXBlb2YgSW50bCAhPT0gJ3VuZGVmaW5lZCcgJiYgJ1NlZ21lbnRlcicgaW4gSW50bFxuICAgID8gbmV3IEludGwuU2VnbWVudGVyKHVuZGVmaW5lZCwgeyBncmFudWxhcml0eTogJ2dyYXBoZW1lJyB9KVxuICAgIDogbnVsbDtcblxudHlwZSBNZWFzdXJlRm4gPSAodGV4dDogc3RyaW5nKSA9PiBudW1iZXI7XG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gZ3JhcGhlbWUgY2x1c3RlcnMgdXNpbmcgSW50bC5TZWdtZW50ZXIuXG4gKiBGYWxscyBiYWNrIHRvIEFycmF5LmZyb20gZm9yIGVudmlyb25tZW50cyB3aXRob3V0IEludGwuU2VnbWVudGVyLlxuICovXG5mdW5jdGlvbiB0b0dyYXBoZW1lcyh0ZXh0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGlmIChncmFwaGVtZVNlZ21lbnRlcikge1xuICAgIHJldHVybiBbLi4uZ3JhcGhlbWVTZWdtZW50ZXIuc2VnbWVudCh0ZXh0KV0ubWFwKChzKSA9PiBzLnNlZ21lbnQpO1xuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKHRleHQpO1xufVxuXG5pbnRlcmZhY2UgVHJ1bmNhdGVSZXN1bHQge1xuICBwcmVmaXhUZXh0OiBzdHJpbmc7XG4gIHByZWZpeEdyYXBoZW1lQ291bnQ6IG51bWJlcjtcbiAgc3VmZml4VGV4dDogc3RyaW5nO1xuICBzdWZmaXhHcmFwaGVtZUNvdW50OiBudW1iZXI7XG4gIHRleHQ6IHN0cmluZztcbiAgdHJ1bmNhdGVkOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBidWlsZENhbmRpZGF0ZShncmFwaGVtZXM6IHN0cmluZ1tdLCBrZXB0OiBudW1iZXIpOiBUcnVuY2F0ZVJlc3VsdCB7XG4gIGlmIChrZXB0IDw9IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4VGV4dDogJycsXG4gICAgICBwcmVmaXhHcmFwaGVtZUNvdW50OiAwLFxuICAgICAgc3VmZml4VGV4dDogJycsXG4gICAgICBzdWZmaXhHcmFwaGVtZUNvdW50OiAwLFxuICAgICAgdGV4dDogRUxMSVBTSVMsXG4gICAgICB0cnVuY2F0ZWQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHN1ZmZpeEdyYXBoZW1lQ291bnQgPVxuICAgIGtlcHQgPj0gTUlOX0tFUFRcbiAgICAgID8gTWF0aC5tYXgoTUlOX0VORCwgTWF0aC5mbG9vcihrZXB0IC8gMikpXG4gICAgICA6IE1hdGguZmxvb3Ioa2VwdCAvIDIpO1xuICBjb25zdCBwcmVmaXhHcmFwaGVtZUNvdW50ID0ga2VwdCAtIHN1ZmZpeEdyYXBoZW1lQ291bnQ7XG4gIGNvbnN0IHByZWZpeFRleHQgPSBncmFwaGVtZXMuc2xpY2UoMCwgcHJlZml4R3JhcGhlbWVDb3VudCkuam9pbignJyk7XG4gIGNvbnN0IHN1ZmZpeFRleHQgPVxuICAgIHN1ZmZpeEdyYXBoZW1lQ291bnQgPiAwXG4gICAgICA/IGdyYXBoZW1lcy5zbGljZSgtc3VmZml4R3JhcGhlbWVDb3VudCkuam9pbignJylcbiAgICAgIDogJyc7XG5cbiAgcmV0dXJuIHtcbiAgICBwcmVmaXhUZXh0LFxuICAgIHByZWZpeEdyYXBoZW1lQ291bnQsXG4gICAgc3VmZml4VGV4dCxcbiAgICBzdWZmaXhHcmFwaGVtZUNvdW50LFxuICAgIHRleHQ6IHByZWZpeFRleHQgKyBFTExJUFNJUyArIHN1ZmZpeFRleHQsXG4gICAgdHJ1bmNhdGVkOiB0cnVlLFxuICB9O1xufVxuXG4vKipcbiAqIE1pZGRsZS10cnVuY2F0ZXMgYSBzdHJpbmcgc28gYHByZWZpeC4uLnN1ZmZpeGAgZml0cyB3aXRoaW4gYGF2YWlsYWJsZVdpZHRoYC5cbiAqIFVzZXMgYmluYXJ5IHNlYXJjaCBvdmVyIGdyYXBoZW1lIGNsdXN0ZXJzIHdpdGggYW4gaW5qZWN0YWJsZSBtZWFzdXJlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtaWRkbGVUcnVuY2F0ZShcbiAgZ3JhcGhlbWVzOiBzdHJpbmdbXSxcbiAgYXZhaWxhYmxlV2lkdGg6IG51bWJlcixcbiAgbWVhc3VyZTogTWVhc3VyZUZuLFxuICBmdWxsV2lkdGg/OiBudW1iZXJcbik6IFRydW5jYXRlUmVzdWx0IHtcbiAgY29uc3QgZnVsbFRleHQgPSBncmFwaGVtZXMuam9pbignJyk7XG4gIGNvbnN0IHJlc29sdmVkRnVsbFdpZHRoID0gZnVsbFdpZHRoID8/IG1lYXN1cmUoZnVsbFRleHQpO1xuXG4gIGlmIChhdmFpbGFibGVXaWR0aCA8PSAwIHx8IGdyYXBoZW1lcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4VGV4dDogZnVsbFRleHQsXG4gICAgICBwcmVmaXhHcmFwaGVtZUNvdW50OiBncmFwaGVtZXMubGVuZ3RoLFxuICAgICAgc3VmZml4VGV4dDogJycsXG4gICAgICBzdWZmaXhHcmFwaGVtZUNvdW50OiAwLFxuICAgICAgdGV4dDogZnVsbFRleHQsXG4gICAgICB0cnVuY2F0ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBpZiAocmVzb2x2ZWRGdWxsV2lkdGggPD0gYXZhaWxhYmxlV2lkdGgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHJlZml4VGV4dDogZnVsbFRleHQsXG4gICAgICBwcmVmaXhHcmFwaGVtZUNvdW50OiBncmFwaGVtZXMubGVuZ3RoLFxuICAgICAgc3VmZml4VGV4dDogJycsXG4gICAgICBzdWZmaXhHcmFwaGVtZUNvdW50OiAwLFxuICAgICAgdGV4dDogZnVsbFRleHQsXG4gICAgICB0cnVuY2F0ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvLyBCaW5hcnkgc2VhcmNoIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2Yga2VwdCBncmFwaGVtZXNcbiAgbGV0IGxvID0gMDtcbiAgbGV0IGhpID0gZ3JhcGhlbWVzLmxlbmd0aCAtIDE7XG4gIGxldCBiZXN0ID0gLTE7XG5cbiAgd2hpbGUgKGxvIDw9IGhpKSB7XG4gICAgY29uc3QgbWlkID0gKGxvICsgaGkpID4+PiAxO1xuICAgIGNvbnN0IGNhbmRpZGF0ZSA9IGJ1aWxkQ2FuZGlkYXRlKGdyYXBoZW1lcywgbWlkKTtcblxuICAgIGlmIChtZWFzdXJlKGNhbmRpZGF0ZS50ZXh0KSA8PSBhdmFpbGFibGVXaWR0aCkge1xuICAgICAgYmVzdCA9IG1pZDtcbiAgICAgIGxvID0gbWlkICsgMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGkgPSBtaWQgLSAxO1xuICAgIH1cbiAgfVxuXG4gIGlmIChiZXN0ID09PSAtMSkge1xuICAgIHJldHVybiB7XG4gICAgICBwcmVmaXhUZXh0OiAnJyxcbiAgICAgIHByZWZpeEdyYXBoZW1lQ291bnQ6IDAsXG4gICAgICBzdWZmaXhUZXh0OiAnJyxcbiAgICAgIHN1ZmZpeEdyYXBoZW1lQ291bnQ6IDAsXG4gICAgICB0ZXh0OiAnJyxcbiAgICAgIHRydW5jYXRlZDogdHJ1ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGJ1aWxkQ2FuZGlkYXRlKGdyYXBoZW1lcywgYmVzdCk7XG59XG5cbmV4cG9ydCB7IG1pZGRsZVRydW5jYXRlLCB0b0dyYXBoZW1lcywgRUxMSVBTSVMsIE1JTl9TVEFSVCwgTUlOX0VORCB9O1xuZXhwb3J0IHR5cGUgeyBNZWFzdXJlRm4sIFRydW5jYXRlUmVzdWx0IH07XG4iXX0=
|