@plumile/router 0.1.200 → 0.1.205
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/README.md +9 -9
- package/lib/esm/ResourcePage.d.ts +5 -4
- package/lib/esm/ResourcePage.d.ts.map +1 -1
- package/lib/esm/ResourcePage.js +5 -2
- package/lib/esm/builder.d.ts +5 -5
- package/lib/esm/builder.d.ts.map +1 -1
- package/lib/esm/builder.js +1 -1
- package/lib/esm/history/BrowserHistory.d.ts +2 -2
- package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
- package/lib/esm/history/BrowserHistory.js +1 -1
- package/lib/esm/history/types.d.ts +7 -1
- package/lib/esm/history/types.d.ts.map +1 -1
- package/lib/esm/history/types.js +1 -1
- package/lib/esm/instrumentation/Instrumentation.d.ts +0 -1
- package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -1
- package/lib/esm/instrumentation/Instrumentation.js +1 -1
- package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts +3 -1
- package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
- package/lib/esm/instrumentation/adapters/devtoolsBridge.js +12 -7
- package/lib/esm/internal/routerLoadState.d.ts +10 -0
- package/lib/esm/internal/routerLoadState.d.ts.map +1 -0
- package/lib/esm/internal/routerLoadState.js +51 -0
- package/lib/esm/internal/routerSearchState.d.ts +11 -0
- package/lib/esm/internal/routerSearchState.d.ts.map +1 -0
- package/lib/esm/internal/routerSearchState.js +15 -0
- package/lib/esm/routing/Link.d.ts +2 -4
- package/lib/esm/routing/Link.d.ts.map +1 -1
- package/lib/esm/routing/Link.js +6 -28
- package/lib/esm/routing/RouteComponentWrapper.d.ts +2 -2
- package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/esm/routing/RouteComponentWrapper.js +14 -11
- package/lib/esm/routing/RouterRenderer.js +9 -9
- package/lib/esm/routing/RoutingContext.d.ts +2 -2
- package/lib/esm/routing/RoutingContext.d.ts.map +1 -1
- package/lib/esm/routing/RoutingContext.js +1 -1
- package/lib/esm/routing/createRouter.d.ts +4 -6
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +6 -77
- package/lib/esm/routing/createStaticRouter.d.ts +4 -5
- package/lib/esm/routing/createStaticRouter.d.ts.map +1 -1
- package/lib/esm/routing/createStaticRouter.js +8 -50
- package/lib/esm/routing/useFilterDiagnostics.d.ts.map +1 -1
- package/lib/esm/routing/useFilterDiagnostics.js +4 -5
- package/lib/esm/routing/useFilters.d.ts +0 -5
- package/lib/esm/routing/useFilters.d.ts.map +1 -1
- package/lib/esm/routing/useFilters.js +12 -30
- package/lib/esm/routing/useLocation.d.ts +2 -1
- package/lib/esm/routing/useLocation.d.ts.map +1 -1
- package/lib/esm/routing/useLocation.js +1 -1
- package/lib/esm/routing/usePathname.d.ts.map +1 -1
- package/lib/esm/routing/usePathname.js +2 -5
- package/lib/esm/routing/useQueryState.d.ts +0 -1
- package/lib/esm/routing/useQueryState.d.ts.map +1 -1
- package/lib/esm/routing/useQueryState.js +1 -1
- package/lib/esm/routing/useRouteTelemetry.d.ts +2 -1
- package/lib/esm/routing/useRouteTelemetry.d.ts.map +1 -1
- package/lib/esm/routing/useRouteTelemetry.js +1 -1
- package/lib/esm/tools/buildCombinedSearch.js +1 -1
- package/lib/esm/tools.d.ts +5 -4
- package/lib/esm/tools.d.ts.map +1 -1
- package/lib/esm/tools.js +2 -5
- package/lib/esm/types.d.ts +12 -22
- package/lib/esm/types.d.ts.map +1 -1
- package/lib/esm/types.js +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/ResourcePage.d.ts +5 -4
- package/lib/types/ResourcePage.d.ts.map +1 -1
- package/lib/types/builder.d.ts +5 -5
- package/lib/types/builder.d.ts.map +1 -1
- package/lib/types/history/BrowserHistory.d.ts +2 -2
- package/lib/types/history/BrowserHistory.d.ts.map +1 -1
- package/lib/types/history/types.d.ts +7 -1
- package/lib/types/history/types.d.ts.map +1 -1
- package/lib/types/instrumentation/Instrumentation.d.ts +0 -1
- package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -1
- package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts +3 -1
- package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
- package/lib/types/internal/routerLoadState.d.ts +10 -0
- package/lib/types/internal/routerLoadState.d.ts.map +1 -0
- package/lib/types/internal/routerSearchState.d.ts +11 -0
- package/lib/types/internal/routerSearchState.d.ts.map +1 -0
- package/lib/types/routing/Link.d.ts +2 -4
- package/lib/types/routing/Link.d.ts.map +1 -1
- package/lib/types/routing/RouteComponentWrapper.d.ts +2 -2
- package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/types/routing/RoutingContext.d.ts +2 -2
- package/lib/types/routing/RoutingContext.d.ts.map +1 -1
- package/lib/types/routing/createRouter.d.ts +4 -6
- package/lib/types/routing/createRouter.d.ts.map +1 -1
- package/lib/types/routing/createStaticRouter.d.ts +4 -5
- package/lib/types/routing/createStaticRouter.d.ts.map +1 -1
- package/lib/types/routing/useFilterDiagnostics.d.ts.map +1 -1
- package/lib/types/routing/useFilters.d.ts +0 -5
- package/lib/types/routing/useFilters.d.ts.map +1 -1
- package/lib/types/routing/useLocation.d.ts +2 -1
- package/lib/types/routing/useLocation.d.ts.map +1 -1
- package/lib/types/routing/usePathname.d.ts.map +1 -1
- package/lib/types/routing/useQueryState.d.ts +0 -1
- package/lib/types/routing/useQueryState.d.ts.map +1 -1
- package/lib/types/routing/useRouteTelemetry.d.ts +2 -1
- package/lib/types/routing/useRouteTelemetry.d.ts.map +1 -1
- package/lib/types/tools.d.ts +5 -4
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/types.d.ts +12 -22
- package/lib/types/types.d.ts.map +1 -1
- package/package.json +11 -6
- package/lib/esm/routing/RouterPrimitives.stories.d.ts +0 -18
- package/lib/esm/routing/RouterPrimitives.stories.d.ts.map +0 -1
- package/lib/esm/routing/RouterPrimitives.stories.js +0 -96
- package/lib/esm/type-tests/navigation-destination.test-d.d.ts +0 -2
- package/lib/esm/type-tests/navigation-destination.test-d.d.ts.map +0 -1
- package/lib/esm/type-tests/navigation-destination.test-d.js +0 -74
- package/lib/esm/type-tests/query-infer.test-d.d.ts +0 -2
- package/lib/esm/type-tests/query-infer.test-d.d.ts.map +0 -1
- package/lib/esm/type-tests/query-infer.test-d.js +0 -2
- package/lib/esm/type-tests/routes-inference.test-d.d.ts +0 -1
- package/lib/esm/type-tests/routes-inference.test-d.d.ts.map +0 -1
- package/lib/esm/type-tests/routes-inference.test-d.js +0 -2
- package/lib/esm/type-tests/useFilters-typed.test-d.d.ts +0 -2
- package/lib/esm/type-tests/useFilters-typed.test-d.d.ts.map +0 -1
- package/lib/esm/type-tests/useFilters-typed.test-d.js +0 -33
- package/lib/types/routing/RouterPrimitives.stories.d.ts +0 -18
- package/lib/types/routing/RouterPrimitives.stories.d.ts.map +0 -1
- package/lib/types/type-tests/navigation-destination.test-d.d.ts +0 -2
- package/lib/types/type-tests/navigation-destination.test-d.d.ts.map +0 -1
- package/lib/types/type-tests/query-infer.test-d.d.ts +0 -2
- package/lib/types/type-tests/query-infer.test-d.d.ts.map +0 -1
- package/lib/types/type-tests/routes-inference.test-d.d.ts +0 -1
- package/lib/types/type-tests/routes-inference.test-d.d.ts.map +0 -1
- package/lib/types/type-tests/useFilters-typed.test-d.d.ts +0 -2
- package/lib/types/type-tests/useFilters-typed.test-d.d.ts.map +0 -1
|
@@ -36,9 +36,9 @@ const resolveRouteFallback = (fallback, defaultFallback, args) => {
|
|
|
36
36
|
}
|
|
37
37
|
return defaultFallback;
|
|
38
38
|
};
|
|
39
|
-
const RouteSegmentBoundary = ({ children, entry, fallback, match,
|
|
40
|
-
const routeComponent = (_jsx(RouteComponentWrapper, { entry: entry, match: match,
|
|
41
|
-
if (
|
|
39
|
+
const RouteSegmentBoundary = ({ children, entry, fallback, match, preparedSegment, }) => {
|
|
40
|
+
const routeComponent = (_jsx(RouteComponentWrapper, { entry: entry, match: match, preparedSegment: preparedSegment, children: children }));
|
|
41
|
+
if (preparedSegment.suspenseBoundary !== 'segment') {
|
|
42
42
|
return routeComponent;
|
|
43
43
|
}
|
|
44
44
|
return _jsx(Suspense, { fallback: fallback, children: routeComponent });
|
|
@@ -51,7 +51,7 @@ const canRenderPendingEntryWithLocalBoundaries = (entry) => {
|
|
|
51
51
|
if (segment.status !== 'pending') {
|
|
52
52
|
return true;
|
|
53
53
|
}
|
|
54
|
-
return entry.preparedMatch.
|
|
54
|
+
return entry.preparedMatch.segments[index]?.suspenseBoundary === 'segment';
|
|
55
55
|
});
|
|
56
56
|
};
|
|
57
57
|
const routeLocationKey = (entry) => {
|
|
@@ -62,7 +62,7 @@ const canDisplayRouteEntry = (entry, currentEntry, externalPending) => {
|
|
|
62
62
|
return true;
|
|
63
63
|
}
|
|
64
64
|
const isRouteChange = routeLocationKey(entry) !== routeLocationKey(currentEntry);
|
|
65
|
-
const hasLocalBoundary = entry.preparedMatch.
|
|
65
|
+
const hasLocalBoundary = entry.preparedMatch.segments.some((route) => {
|
|
66
66
|
return route.suspenseBoundary === 'segment';
|
|
67
67
|
});
|
|
68
68
|
if (externalPending && isRouteChange && !hasLocalBoundary) {
|
|
@@ -75,7 +75,7 @@ const renderRouteEntry = (entry, fallback) => {
|
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
77
|
const result = [];
|
|
78
|
-
const reversedItems = result.concat(entry.preparedMatch.
|
|
78
|
+
const reversedItems = result.concat(entry.preparedMatch.segments).reverse();
|
|
79
79
|
const firstItem = reversedItems[0];
|
|
80
80
|
if (firstItem == null) {
|
|
81
81
|
return null;
|
|
@@ -84,7 +84,7 @@ const renderRouteEntry = (entry, fallback) => {
|
|
|
84
84
|
let mainComponent = (_jsx(RouteSegmentBoundary, { entry: entry, fallback: resolveRouteFallback(firstItem.fallback, fallback, {
|
|
85
85
|
match,
|
|
86
86
|
segment: firstItem,
|
|
87
|
-
}), match: match,
|
|
87
|
+
}), match: match, preparedSegment: firstItem }, firstItem.segmentKey));
|
|
88
88
|
for (let index = 1; index < reversedItems.length; index += 1) {
|
|
89
89
|
const nextItem = reversedItems[index];
|
|
90
90
|
if (nextItem != null) {
|
|
@@ -92,7 +92,7 @@ const renderRouteEntry = (entry, fallback) => {
|
|
|
92
92
|
children: mainComponent,
|
|
93
93
|
match,
|
|
94
94
|
segment: nextItem,
|
|
95
|
-
}), match: match,
|
|
95
|
+
}), match: match, preparedSegment: nextItem, children: mainComponent }, nextItem.segmentKey));
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
return mainComponent;
|
|
@@ -189,4 +189,4 @@ const RouterRenderer = (props) => {
|
|
|
189
189
|
return (_jsxs(_Fragment, { children: [pendingContent, _jsx(Suspense, { fallback: transitionFallback, children: _jsx(RouteEntryCommitObserver, { entry: displayedRouteEntry, onCommit: handleRouteEntryCommit, children: routeComponent }) })] }));
|
|
190
190
|
};
|
|
191
191
|
export default RouterRenderer;
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9Sb3V0ZXJSZW5kZXJlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBRVosV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixlQUFlLEdBRWhCLE1BQU0sT0FBTyxDQUFDO0FBVWYsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxxQkFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztBQUV2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFRZCxNQUFNLFVBQVUsV0FBVztJQUN6QixLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ1gsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBbUNELE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsS0FBb0MsRUFDdkIsRUFBRTtJQUNmLE1BQU0sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUU7WUFDVixlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUV0QixPQUFPLDRCQUFHLFFBQVEsR0FBSSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsS0FBb0MsRUFDdkIsRUFBRTtJQUNmLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUU1QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHR5cGUgUmVhY3ROb2RlLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICBzdGFydFRyYW5zaXRpb24sXG4gIHR5cGUgSlNYLFxufSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgUHJlcGFyZWRNYXRjaFJvdXRlLFxuICBSb3V0ZUZhbGxiYWNrLFxuICBSb3V0ZUVudHJ5LFxuICBSb3V0ZXJNYXRjaGVkUm91dGUsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgUm91dGVDb21wb25lbnRXcmFwcGVyIGZyb20gJy4vUm91dGVDb21wb25lbnRXcmFwcGVyLmpzJztcblxuY29uc3QgeyB1c2VDb250ZXh0LCBTdXNwZW5zZSB9ID0gUmVhY3Q7XG5cbmxldCBpbmRleCA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIGluZGV4IGZvciBjb21wb25lbnQgaW5zdGFuY2VzLlxuICogVGhpcyBpcyB1c2VkIGludGVybmFsbHkgdG8gZW5zdXJlIHByb3BlciBSZWFjdCByZWNvbmNpbGlhdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBBIHVuaXF1ZSBpbmNyZW1lbnRhbCBudW1iZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ld0luZGV4KCk6IG51bWJlciB7XG4gIGluZGV4ICs9IDE7XG4gIHJldHVybiBpbmRleDtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIFJvdXRlclJlbmRlcmVyIGNvbXBvbmVudC5cbiAqL1xudHlwZSBQcm9wcyA9IHtcbiAgLyoqIEZhbGxiYWNrIFVJIHRvIHNob3cgd2hpbGUgbG9hZGluZyBjb21wb25lbnRzICovXG4gIGZhbGxiYWNrOiBSZWFjdE5vZGU7XG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgcGVuZGluZyBjb250ZW50IHdoaWxlIFJlYWN0IHJlcG9ydHMgYSB0cmFuc2l0aW9uIGVsc2V3aGVyZSAqL1xuICBlbmFibGVUcmFuc2l0aW9uPzogYm9vbGVhbjtcbiAgLyoqIEV4dGVybmFsIGFzeW5jIGFjdGl2aXR5IHRoYXQgc2hvdWxkIGFsc28gc2hvdyBwZW5kaW5nIGNvbnRlbnQgKi9cbiAgZXh0ZXJuYWxQZW5kaW5nPzogYm9vbGVhbjtcbiAgLyoqIFVJIHRvIHNob3cgZHVyaW5nIHRyYW5zaXRpb25zICh3aGVuIGVuYWJsZVRyYW5zaXRpb24gaXMgdHJ1ZSkgKi9cbiAgcGVuZGluZz86IFJlYWN0Tm9kZTtcbn07XG5cbnR5cGUgU3VzcGVuc2VGYWxsYmFja09ic2VydmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIG9uUGVuZGluZ0NoYW5nZTogKGlzUGVuZGluZzogYm9vbGVhbikgPT4gdm9pZDtcbn07XG5cbnR5cGUgUm91dGVTZWdtZW50Qm91bmRhcnlQcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gIGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT47XG4gIGZhbGxiYWNrOiBSZWFjdE5vZGU7XG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8UGFyYW1EYXRhPiB8IG51bGw7XG4gIHByZXBhcmVkUm91dGU6IFByZXBhcmVkTWF0Y2hSb3V0ZTtcbn07XG5cbnR5cGUgUm91dGVFbnRyeUNvbW1pdE9ic2VydmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4gfCB1bmRlZmluZWQ7XG4gIG9uQ29tbWl0OiAoZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFN1c3BlbnNlRmFsbGJhY2tPYnNlcnZlciA9IChcbiAgcHJvcHM6IFN1c3BlbnNlRmFsbGJhY2tPYnNlcnZlclByb3BzLFxuKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBvblBlbmRpbmdDaGFuZ2UgfSA9IHByb3BzO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgb25QZW5kaW5nQ2hhbmdlKHRydWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBvblBlbmRpbmdDaGFuZ2UoZmFsc2UpO1xuICAgIH07XG4gIH0sIFtvblBlbmRpbmdDaGFuZ2VdKTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuY29uc3QgUm91dGVFbnRyeUNvbW1pdE9ic2VydmVyID0gKFxuICBwcm9wczogUm91dGVFbnRyeUNvbW1pdE9ic2VydmVyUHJvcHMsXG4pOiBKU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGVudHJ5LCBvbkNvbW1pdCB9ID0gcHJvcHM7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW50cnkgIT0gbnVsbCkge1xuICAgICAgb25Db21taXQoZW50cnkpO1xuICAgIH1cbiAgfSwgW2VudHJ5LCBvbkNvbW1pdF0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5jb25zdCByZXNvbHZlUm91dGVGYWxsYmFjayA9IChcbiAgZmFsbGJhY2s6IFJvdXRlRmFsbGJhY2sgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRGYWxsYmFjazogUmVhY3ROb2RlLFxuICBhcmdzOiB7XG4gICAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gICAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxQYXJhbURhdGE+IHwgbnVsbDtcbiAgICBzZWdtZW50OiBQcmVwYXJlZE1hdGNoUm91dGU7XG4gIH0sXG4pOiBSZWFjdE5vZGUgPT4ge1xuICBpZiAodHlwZW9mIGZhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGZhbGxiYWNrKGFyZ3MpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBmYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsbGJhY2s7XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdEZhbGxiYWNrO1xufTtcblxuY29uc3QgUm91dGVTZWdtZW50Qm91bmRhcnkgPSAoe1xuICBjaGlsZHJlbixcbiAgZW50cnksXG4gIGZhbGxiYWNrLFxuICBtYXRjaCxcbiAgcHJlcGFyZWRSb3V0ZSxcbn06IFJvdXRlU2VnbWVudEJvdW5kYXJ5UHJvcHMpOiBKU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IHJvdXRlQ29tcG9uZW50ID0gKFxuICAgIDxSb3V0ZUNvbXBvbmVudFdyYXBwZXJcbiAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgIG1hdGNoPXttYXRjaH1cbiAgICAgIHByZXBhcmVkUm91dGU9e3ByZXBhcmVkUm91dGV9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvUm91dGVDb21wb25lbnRXcmFwcGVyPlxuICApO1xuXG4gIGlmIChwcmVwYXJlZFJvdXRlLnN1c3BlbnNlQm91bmRhcnkgIT09ICdzZWdtZW50Jykge1xuICAgIHJldHVybiByb3V0ZUNvbXBvbmVudDtcbiAgfVxuXG4gIHJldHVybiA8U3VzcGVuc2UgZmFsbGJhY2s9e2ZhbGxiYWNrfT57cm91dGVDb21wb25lbnR9PC9TdXNwZW5zZT47XG59O1xuXG5jb25zdCBjYW5SZW5kZXJQZW5kaW5nRW50cnlXaXRoTG9jYWxCb3VuZGFyaWVzID0gKFxuICBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGE+LFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChlbnRyeS5hY3RpdmVMb2FkU3RhdGUuc3RhdHVzICE9PSAncGVuZGluZycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBlbnRyeS5sb2FkU3RhdGUuc2VnbWVudHMuZXZlcnkoKHNlZ21lbnQsIGluZGV4KSA9PiB7XG4gICAgaWYgKHNlZ21lbnQuc3RhdHVzICE9PSAncGVuZGluZycpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRyeS5wcmVwYXJlZE1hdGNoLnJvdXRlc1tpbmRleF0/LnN1c3BlbnNlQm91bmRhcnkgPT09ICdzZWdtZW50JztcbiAgfSk7XG59O1xuXG5jb25zdCByb3V0ZUxvY2F0aW9uS2V5ID0gKGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYCR7ZW50cnkubG9jYXRpb24ucGF0aG5hbWV9JHtlbnRyeS5sb2NhdGlvbi5zZWFyY2h9JHtlbnRyeS5sb2NhdGlvbi5oYXNofWA7XG59O1xuXG5jb25zdCBjYW5EaXNwbGF5Um91dGVFbnRyeSA9IChcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPixcbiAgY3VycmVudEVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4gfCB1bmRlZmluZWQsXG4gIGV4dGVybmFsUGVuZGluZzogYm9vbGVhbixcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAoY3VycmVudEVudHJ5ID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGlzUm91dGVDaGFuZ2UgPVxuICAgIHJvdXRlTG9jYXRpb25LZXkoZW50cnkpICE9PSByb3V0ZUxvY2F0aW9uS2V5KGN1cnJlbnRFbnRyeSk7XG4gIGNvbnN0IGhhc0xvY2FsQm91bmRhcnkgPSBlbnRyeS5wcmVwYXJlZE1hdGNoLnJvdXRlcy5zb21lKChyb3V0ZSkgPT4ge1xuICAgIHJldHVybiByb3V0ZS5zdXNwZW5zZUJvdW5kYXJ5ID09PSAnc2VnbWVudCc7XG4gIH0pO1xuXG4gIGlmIChleHRlcm5hbFBlbmRpbmcgJiYgaXNSb3V0ZUNoYW5nZSAmJiAhaGFzTG9jYWxCb3VuZGFyeSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBjYW5SZW5kZXJQZW5kaW5nRW50cnlXaXRoTG9jYWxCb3VuZGFyaWVzKGVudHJ5KTtcbn07XG5cbmNvbnN0IHJlbmRlclJvdXRlRW50cnkgPSAoXG4gIGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4gfCB1bmRlZmluZWQsXG4gIGZhbGxiYWNrOiBSZWFjdE5vZGUsXG4pOiBSZWFjdE5vZGUgPT4ge1xuICBpZiAoZW50cnkgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBQcmVwYXJlZE1hdGNoUm91dGVbXSA9IFtdO1xuXG4gIGNvbnN0IHJldmVyc2VkSXRlbXMgPSByZXN1bHQuY29uY2F0KGVudHJ5LnByZXBhcmVkTWF0Y2gucm91dGVzKS5yZXZlcnNlKCk7XG4gIGNvbnN0IGZpcnN0SXRlbSA9IHJldmVyc2VkSXRlbXNbMF07XG5cbiAgaWYgKGZpcnN0SXRlbSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGVudHJ5LnByZXBhcmVkTWF0Y2gubWF0Y2ggPz8gbnVsbDtcbiAgbGV0IG1haW5Db21wb25lbnQgPSAoXG4gICAgPFJvdXRlU2VnbWVudEJvdW5kYXJ5XG4gICAgICBrZXk9e2ZpcnN0SXRlbS5zZWdtZW50S2V5fVxuICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgZmFsbGJhY2s9e3Jlc29sdmVSb3V0ZUZhbGxiYWNrKGZpcnN0SXRlbS5mYWxsYmFjaywgZmFsbGJhY2ssIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHNlZ21lbnQ6IGZpcnN0SXRlbSxcbiAgICAgIH0pfVxuICAgICAgbWF0Y2g9e21hdGNofVxuICAgICAgcHJlcGFyZWRSb3V0ZT17Zmlyc3RJdGVtfVxuICAgIC8+XG4gICk7XG5cbiAgZm9yIChsZXQgaW5kZXggPSAxOyBpbmRleCA8IHJldmVyc2VkSXRlbXMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgY29uc3QgbmV4dEl0ZW0gPSByZXZlcnNlZEl0ZW1zW2luZGV4XTtcbiAgICBpZiAobmV4dEl0ZW0gIT0gbnVsbCkge1xuICAgICAgbWFpbkNvbXBvbmVudCA9IChcbiAgICAgICAgPFJvdXRlU2VnbWVudEJvdW5kYXJ5XG4gICAgICAgICAga2V5PXtuZXh0SXRlbS5zZWdtZW50S2V5fVxuICAgICAgICAgIGVudHJ5PXtlbnRyeX1cbiAgICAgICAgICBmYWxsYmFjaz17cmVzb2x2ZVJvdXRlRmFsbGJhY2sobmV4dEl0ZW0uZmFsbGJhY2ssIGZhbGxiYWNrLCB7XG4gICAgICAgICAgICBjaGlsZHJlbjogbWFpbkNvbXBvbmVudCxcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgc2VnbWVudDogbmV4dEl0ZW0sXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgbWF0Y2g9e21hdGNofVxuICAgICAgICAgIHByZXBhcmVkUm91dGU9e25leHRJdGVtfVxuICAgICAgICA+XG4gICAgICAgICAge21haW5Db21wb25lbnR9XG4gICAgICAgIDwvUm91dGVTZWdtZW50Qm91bmRhcnk+XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYWluQ29tcG9uZW50O1xufTtcblxuLyoqXG4gKiBNYWluIHJvdXRlciByZW5kZXJlciBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyB0aGUgY3VycmVudCByb3V0ZS5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBhY2Nlc3NlcyB0aGUgY3VycmVudCByb3V0ZSBlbnRyeSBmcm9tIFJvdXRpbmdDb250ZXh0IGFuZCByZW5kZXJzXG4gKiB0aGUgYXBwcm9wcmlhdGUgY29tcG9uZW50cy4gSXQgc3VwcG9ydHMgUmVhY3QgU3VzcGVuc2UgZm9yIGxhenktbG9hZGVkIGNvbXBvbmVudHNcbiAqIGFuZCBjYW4gb3B0aW9uYWxseSBkZWZlciB2aXNpYmxlIHJvdXRlIGNoYW5nZXMgZm9yIHNtb290aGVyIG5hdmlnYXRpb24uXG4gKlxuICogVGhlIGNvbXBvbmVudCBoYW5kbGVzIG5lc3RlZCByb3V0ZXMgYnkgY3JlYXRpbmcgYSBoaWVyYXJjaHkgb2YgUm91dGVDb21wb25lbnRXcmFwcGVyXG4gKiBjb21wb25lbnRzLCB3aGVyZSBlYWNoIGxldmVsIGNhbiByZW5kZXIgaXRzIG93biBjb21wb25lbnQgYW5kIGNoaWxkcmVuLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggU3VzcGVuc2UgZmFsbGJhY2tcbiAqIDxSb3V0ZXJSZW5kZXJlciBmYWxsYmFjaz17PGRpdj5Mb2FkaW5nLi4uPC9kaXY+fSAvPlxuICpcbiAqIC8vIFdpdGggUmVhY3QgMTggdHJhbnNpdGlvbnNcbiAqIDxSb3V0ZXJSZW5kZXJlclxuICogICBlbmFibGVUcmFuc2l0aW9uXG4gKiAgIGZhbGxiYWNrPXs8ZGl2PkxvYWRpbmcuLi48L2Rpdj59XG4gKiAgIHBlbmRpbmc9ezxkaXY+TmF2aWdhdGluZy4uLjwvZGl2Pn1cbiAqIC8+XG4gKiBgYGBcbiAqL1xuY29uc3QgUm91dGVyUmVuZGVyZXIgPSAocHJvcHM6IFByb3BzKTogSlNYLkVsZW1lbnQgfCBudWxsID0+IHtcbiAgY29uc3Qge1xuICAgIGV4dGVybmFsUGVuZGluZyA9IGZhbHNlLFxuICAgIGZhbGxiYWNrLFxuICAgIHBlbmRpbmcsXG4gICAgZW5hYmxlVHJhbnNpdGlvbiA9IGZhbHNlLFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtpc1N1c3BlbnNlUGVuZGluZywgc2V0SXNTdXNwZW5zZVBlbmRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIC8vIEFjY2VzcyB0aGUgcm91dGVyIGNvbnRleHRcbiAgY29uc3Qgcm91dGVyID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIGNvbnN0IFthY3RpdmVSb3V0ZUVudHJ5LCBzZXRBY3RpdmVSb3V0ZUVudHJ5XSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gcm91dGVyPy5nZXQoKTtcbiAgfSk7XG4gIGNvbnN0IFtkaXNwbGF5ZWRSb3V0ZUVudHJ5LCBzZXREaXNwbGF5ZWRSb3V0ZUVudHJ5XSA9IHVzZVN0YXRlKCgpID0+IHtcbiAgICByZXR1cm4gcm91dGVyPy5nZXQoKTtcbiAgfSk7XG4gIGNvbnN0IGNvbW1pdHRlZFJvdXRlRW50cnlSZWYgPSB1c2VSZWY8Um91dGVFbnRyeTxQYXJhbURhdGE+IHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocm91dGVyID09IG51bGwpIHtcbiAgICAgIHNldEFjdGl2ZVJvdXRlRW50cnkodW5kZWZpbmVkKTtcbiAgICAgIHNldERpc3BsYXllZFJvdXRlRW50cnkodW5kZWZpbmVkKTtcbiAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBzY2hlZHVsZURpc3BsYXllZFJvdXRlRW50cnkgPSAoZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPikgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlRGlzcGxheWVkUm91dGVFbnRyeSA9ICgpID0+IHtcbiAgICAgICAgc2V0RGlzcGxheWVkUm91dGVFbnRyeSgoY3VycmVudEVudHJ5KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkS2VlcEN1cnJlbnRFbnRyeSA9XG4gICAgICAgICAgICBlbmFibGVUcmFuc2l0aW9uICYmXG4gICAgICAgICAgICAhY2FuRGlzcGxheVJvdXRlRW50cnkoZW50cnksIGN1cnJlbnRFbnRyeSwgZXh0ZXJuYWxQZW5kaW5nKTtcblxuICAgICAgICAgIGlmIChzaG91bGRLZWVwQ3VycmVudEVudHJ5KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEVudHJ5O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAoZW5hYmxlVHJhbnNpdGlvbikge1xuICAgICAgICBzdGFydFRyYW5zaXRpb24odXBkYXRlRGlzcGxheWVkUm91dGVFbnRyeSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlRGlzcGxheWVkUm91dGVFbnRyeSgpO1xuICAgIH07XG5cbiAgICBjb25zdCBuZXh0RW50cnkgPSByb3V0ZXIuZ2V0KCk7XG4gICAgc2V0QWN0aXZlUm91dGVFbnRyeShuZXh0RW50cnkpO1xuICAgIHNjaGVkdWxlRGlzcGxheWVkUm91dGVFbnRyeShuZXh0RW50cnkpO1xuICAgIHJldHVybiByb3V0ZXIuc3Vic2NyaWJlKChlbnRyeSkgPT4ge1xuICAgICAgc2V0QWN0aXZlUm91dGVFbnRyeShlbnRyeSk7XG4gICAgICBzY2hlZHVsZURpc3BsYXllZFJvdXRlRW50cnkoZW50cnkpO1xuICAgIH0pO1xuICB9LCBbZW5hYmxlVHJhbnNpdGlvbiwgZXh0ZXJuYWxQZW5kaW5nLCByb3V0ZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZW5hYmxlVHJhbnNpdGlvbiB8fCBleHRlcm5hbFBlbmRpbmcgfHwgYWN0aXZlUm91dGVFbnRyeSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgIHNldERpc3BsYXllZFJvdXRlRW50cnkoYWN0aXZlUm91dGVFbnRyeSk7XG4gICAgfSk7XG4gIH0sIFthY3RpdmVSb3V0ZUVudHJ5LCBlbmFibGVUcmFuc2l0aW9uLCBleHRlcm5hbFBlbmRpbmddKTtcbiAgLy8gVGhlIGN1cnJlbnQgcm91dGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgbWF0Y2hpbmcgZW50cmllcyAtIG9uZSBlbnRyeSBwZXJcbiAgLy8gbGV2ZWwgb2Ygcm91dGVzICh0byBhbGxvdyBuZXN0ZWQgcm91dGVzKS4gV2UgaGF2ZSB0byBtYXAgZWFjaCBvbmUgdG8gYVxuICAvLyBSb3V0ZUNvbXBvbmVudCB0byBhbGxvdyBzdXNwZW5kaW5nLCBhbmQgYWxzbyBwYXNzIGl0cyBjaGlsZHJlbiBjb3JyZWN0bHkuXG4gIC8vIENvbmNlcHR1YWxseSwgd2Ugd2FudCB0aGlzIHN0cnVjdHVyZTpcbiAgLy8gYGBgXG4gIC8vIDxSb3V0ZUNvbXBvbmVudFxuICAvLyAgIGNvbXBvbmVudD17ZW50cnlbMF0uY29tcG9uZW50fVxuICAvLyAgIHByZXBhcmVkPXtlbnRycnlbMF0ucHJlcGFyZWR9PlxuICAvLyAgIDxSb3V0ZUNvbXBvbmVudFxuICAvLyAgICAgY29tcG9uZW50PXtlbnRyeVsxXS5jb21wb25lbnR9XG4gIC8vICAgICBwcmVwYXJlZD17ZW50cnlbMV0ucHJlcGFyZWR9PlxuICAvLyAgICAgICAvLyBjb250aW51ZSBmb3IgbmVzdGVkIGl0ZW1zLi4uXG4gIC8vICAgPC9Sb3V0ZUNvbXBvbmVudD5cbiAgLy8gPC9Sb3V0ZUNvbXBvbmVudD5cbiAgLy8gYGBgXG4gIC8vIFRvIGFjaGlldmUgdGhpcywgd2UgcmV2ZXJzZSB0aGUgbGlzdCBzbyB3ZSBjYW4gc3RhcnQgYXQgdGhlIGJvdHRvbS1tb3N0XG4gIC8vIGNvbXBvbmVudCwgYW5kIGl0ZXJhdGl2ZWx5IGNvbnN0cnVjdCBwYXJlbnQgY29tcG9uZW50cyB3IHRoZSBwcmV2aW91c1xuICAvLyB2YWx1ZSBhcyB0aGUgY2hpbGQgb2YgdGhlIG5leHQgb25lOlxuICAvLyByZXZlcnNlIGlzIGluIHBsYWNlLCBidXQgd2Ugd2FudCBhIGNvcHkgc28gY29uY2F0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJvbWlzZS1mdW5jdGlvbi1hc3luY1xuICBjb25zdCBwZW5kaW5nQ29udGVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhc1JvdXRlclBlbmRpbmcgPVxuICAgICAgYWN0aXZlUm91dGVFbnRyeT8uYWN0aXZlTG9hZFN0YXRlLnN0YXR1cyA9PT0gJ3BlbmRpbmcnO1xuICAgIGNvbnN0IGNvbW1pdHRlZFJvdXRlRW50cnkgPSBjb21taXR0ZWRSb3V0ZUVudHJ5UmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgaGFzUm91dGVUcmFuc2l0aW9uUGVuZGluZyA9XG4gICAgICBleHRlcm5hbFBlbmRpbmcgJiZcbiAgICAgIGFjdGl2ZVJvdXRlRW50cnkgIT0gbnVsbCAmJlxuICAgICAgKGNvbW1pdHRlZFJvdXRlRW50cnkgPT0gbnVsbCB8fFxuICAgICAgICByb3V0ZUxvY2F0aW9uS2V5KGFjdGl2ZVJvdXRlRW50cnkpICE9PVxuICAgICAgICAgIHJvdXRlTG9jYXRpb25LZXkoY29tbWl0dGVkUm91dGVFbnRyeSkpO1xuICAgIGNvbnN0IGhhc1BlbmRpbmcgPVxuICAgICAgaGFzUm91dGVyUGVuZGluZyB8fCBpc1N1c3BlbnNlUGVuZGluZyB8fCBoYXNSb3V0ZVRyYW5zaXRpb25QZW5kaW5nO1xuICAgIGlmIChlbmFibGVUcmFuc2l0aW9uICYmIGhhc1BlbmRpbmcpIHtcbiAgICAgIHJldHVybiBwZW5kaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9LCBbXG4gICAgZW5hYmxlVHJhbnNpdGlvbixcbiAgICBleHRlcm5hbFBlbmRpbmcsXG4gICAgYWN0aXZlUm91dGVFbnRyeSxcbiAgICBpc1N1c3BlbnNlUGVuZGluZyxcbiAgICBwZW5kaW5nLFxuICBdKTtcblxuICBjb25zdCBoYW5kbGVTdXNwZW5zZVBlbmRpbmdDaGFuZ2UgPSB1c2VDYWxsYmFjaygoaXNQZW5kaW5nOiBib29sZWFuKSA9PiB7XG4gICAgc2V0SXNTdXNwZW5zZVBlbmRpbmcoaXNQZW5kaW5nKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9ic2VydmVkRmFsbGJhY2sgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFN1c3BlbnNlRmFsbGJhY2tPYnNlcnZlciBvblBlbmRpbmdDaGFuZ2U9e2hhbmRsZVN1c3BlbnNlUGVuZGluZ0NoYW5nZX0+XG4gICAgICAgIHtmYWxsYmFja31cbiAgICAgIDwvU3VzcGVuc2VGYWxsYmFja09ic2VydmVyPlxuICAgICk7XG4gIH0sIFtmYWxsYmFjaywgaGFuZGxlU3VzcGVuc2VQZW5kaW5nQ2hhbmdlXSk7XG5cbiAgY29uc3Qgcm91dGVDb21wb25lbnQgPSB1c2VNZW1vKCgpOiBSZWFjdE5vZGUgPT4ge1xuICAgIHJldHVybiByZW5kZXJSb3V0ZUVudHJ5KGRpc3BsYXllZFJvdXRlRW50cnksIGZhbGxiYWNrKTtcbiAgfSwgW2Rpc3BsYXllZFJvdXRlRW50cnksIGZhbGxiYWNrXSk7XG5cbiAgY29uc3QgaGFuZGxlUm91dGVFbnRyeUNvbW1pdCA9IHVzZUNhbGxiYWNrKChlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGE+KSA9PiB7XG4gICAgY29tbWl0dGVkUm91dGVFbnRyeVJlZi5jdXJyZW50ID0gZW50cnk7XG4gIH0sIFtdKTtcblxuICBjb25zdCB0cmFuc2l0aW9uRmFsbGJhY2sgPSB1c2VNZW1vKCgpOiBSZWFjdE5vZGUgPT4ge1xuICAgIGlmICghZW5hYmxlVHJhbnNpdGlvbikge1xuICAgICAgcmV0dXJuIG9ic2VydmVkRmFsbGJhY2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIHJlbmRlclJvdXRlRW50cnkoY29tbWl0dGVkUm91dGVFbnRyeVJlZi5jdXJyZW50LCBmYWxsYmFjaykgPz9cbiAgICAgIG9ic2VydmVkRmFsbGJhY2tcbiAgICApO1xuICB9LCBbZW5hYmxlVHJhbnNpdGlvbiwgZmFsbGJhY2ssIG9ic2VydmVkRmFsbGJhY2tdKTtcblxuICAvLyBSb3V0ZXMgY2FuIGVycm9yIHNvIHdyYXAgaW4gYW4gPEVycm9yQm91bmRhcnk+XG4gIC8vIFJvdXRlcyBjYW4gc3VzcGVuZCwgc28gd3JhcCBpbiA8U3VzcGVuc2U+XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtwZW5kaW5nQ29udGVudH1cbiAgICAgIDxTdXNwZW5zZSBmYWxsYmFjaz17dHJhbnNpdGlvbkZhbGxiYWNrfT5cbiAgICAgICAgPFJvdXRlRW50cnlDb21taXRPYnNlcnZlclxuICAgICAgICAgIGVudHJ5PXtkaXNwbGF5ZWRSb3V0ZUVudHJ5fVxuICAgICAgICAgIG9uQ29tbWl0PXtoYW5kbGVSb3V0ZUVudHJ5Q29tbWl0fVxuICAgICAgICA+XG4gICAgICAgICAge3JvdXRlQ29tcG9uZW50fVxuICAgICAgICA8L1JvdXRlRW50cnlDb21taXRPYnNlcnZlcj5cbiAgICAgIDwvU3VzcGVuc2U+XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSb3V0ZXJSZW5kZXJlcjtcbiJdfQ==
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVyUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9Sb3V0ZXJSZW5kZXJlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBRVosV0FBVyxFQUNYLFNBQVMsRUFDVCxPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixlQUFlLEdBRWhCLE1BQU0sT0FBTyxDQUFDO0FBVWYsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxxQkFBcUIsTUFBTSw0QkFBNEIsQ0FBQztBQUUvRCxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztBQUV2QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFRZCxNQUFNLFVBQVUsV0FBVztJQUN6QixLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ1gsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBbUNELE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsS0FBb0MsRUFDdkIsRUFBRTtJQUNmLE1BQU0sRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRTVDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDYixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxHQUFHLEVBQUU7WUFDVixlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUV0QixPQUFPLDRCQUFHLFFBQVEsR0FBSSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsS0FBb0MsRUFDdkIsRUFBRTtJQUNmLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUU1QyxTQUFTLENBQUMsR0FBRyxFQUFFO1FB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHR5cGUgUmVhY3ROb2RlLFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxuICBzdGFydFRyYW5zaXRpb24sXG4gIHR5cGUgSlNYLFxufSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgUHJlcGFyZWRSb3V0ZVNlZ21lbnQsXG4gIFJvdXRlRmFsbGJhY2ssXG4gIFJvdXRlRW50cnksXG4gIFJvdXRlck1hdGNoZWRSb3V0ZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5cbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbmltcG9ydCBSb3V0ZUNvbXBvbmVudFdyYXBwZXIgZnJvbSAnLi9Sb3V0ZUNvbXBvbmVudFdyYXBwZXIuanMnO1xuXG5jb25zdCB7IHVzZUNvbnRleHQsIFN1c3BlbnNlIH0gPSBSZWFjdDtcblxubGV0IGluZGV4ID0gMDtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSB1bmlxdWUgaW5kZXggZm9yIGNvbXBvbmVudCBpbnN0YW5jZXMuXG4gKiBUaGlzIGlzIHVzZWQgaW50ZXJuYWxseSB0byBlbnN1cmUgcHJvcGVyIFJlYWN0IHJlY29uY2lsaWF0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEgdW5pcXVlIGluY3JlbWVudGFsIG51bWJlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3SW5kZXgoKTogbnVtYmVyIHtcbiAgaW5kZXggKz0gMTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgUm91dGVyUmVuZGVyZXIgY29tcG9uZW50LlxuICovXG50eXBlIFByb3BzID0ge1xuICAvKiogRmFsbGJhY2sgVUkgdG8gc2hvdyB3aGlsZSBsb2FkaW5nIGNvbXBvbmVudHMgKi9cbiAgZmFsbGJhY2s6IFJlYWN0Tm9kZTtcbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyBwZW5kaW5nIGNvbnRlbnQgd2hpbGUgUmVhY3QgcmVwb3J0cyBhIHRyYW5zaXRpb24gZWxzZXdoZXJlICovXG4gIGVuYWJsZVRyYW5zaXRpb24/OiBib29sZWFuO1xuICAvKiogRXh0ZXJuYWwgYXN5bmMgYWN0aXZpdHkgdGhhdCBzaG91bGQgYWxzbyBzaG93IHBlbmRpbmcgY29udGVudCAqL1xuICBleHRlcm5hbFBlbmRpbmc/OiBib29sZWFuO1xuICAvKiogVUkgdG8gc2hvdyBkdXJpbmcgdHJhbnNpdGlvbnMgKHdoZW4gZW5hYmxlVHJhbnNpdGlvbiBpcyB0cnVlKSAqL1xuICBwZW5kaW5nPzogUmVhY3ROb2RlO1xufTtcblxudHlwZSBTdXNwZW5zZUZhbGxiYWNrT2JzZXJ2ZXJQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgb25QZW5kaW5nQ2hhbmdlOiAoaXNQZW5kaW5nOiBib29sZWFuKSA9PiB2b2lkO1xufTtcblxudHlwZSBSb3V0ZVNlZ21lbnRCb3VuZGFyeVByb3BzID0ge1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPjtcbiAgZmFsbGJhY2s6IFJlYWN0Tm9kZTtcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxQYXJhbURhdGE+IHwgbnVsbDtcbiAgcHJlcGFyZWRTZWdtZW50OiBQcmVwYXJlZFJvdXRlU2VnbWVudDtcbn07XG5cbnR5cGUgUm91dGVFbnRyeUNvbW1pdE9ic2VydmVyUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4gfCB1bmRlZmluZWQ7XG4gIG9uQ29tbWl0OiAoZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPikgPT4gdm9pZDtcbn07XG5cbmNvbnN0IFN1c3BlbnNlRmFsbGJhY2tPYnNlcnZlciA9IChcbiAgcHJvcHM6IFN1c3BlbnNlRmFsbGJhY2tPYnNlcnZlclByb3BzLFxuKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBvblBlbmRpbmdDaGFuZ2UgfSA9IHByb3BzO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgb25QZW5kaW5nQ2hhbmdlKHRydWUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBvblBlbmRpbmdDaGFuZ2UoZmFsc2UpO1xuICAgIH07XG4gIH0sIFtvblBlbmRpbmdDaGFuZ2VdKTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuY29uc3QgUm91dGVFbnRyeUNvbW1pdE9ic2VydmVyID0gKFxuICBwcm9wczogUm91dGVFbnRyeUNvbW1pdE9ic2VydmVyUHJvcHMsXG4pOiBKU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IHsgY2hpbGRyZW4sIGVudHJ5LCBvbkNvbW1pdCB9ID0gcHJvcHM7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZW50cnkgIT0gbnVsbCkge1xuICAgICAgb25Db21taXQoZW50cnkpO1xuICAgIH1cbiAgfSwgW2VudHJ5LCBvbkNvbW1pdF0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5jb25zdCByZXNvbHZlUm91dGVGYWxsYmFjayA9IChcbiAgZmFsbGJhY2s6IFJvdXRlRmFsbGJhY2sgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRGYWxsYmFjazogUmVhY3ROb2RlLFxuICBhcmdzOiB7XG4gICAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG4gICAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxQYXJhbURhdGE+IHwgbnVsbDtcbiAgICBzZWdtZW50OiBQcmVwYXJlZFJvdXRlU2VnbWVudDtcbiAgfSxcbik6IFJlYWN0Tm9kZSA9PiB7XG4gIGlmICh0eXBlb2YgZmFsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmFsbGJhY2soYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGZhbGxiYWNrICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxuXG4gIHJldHVybiBkZWZhdWx0RmFsbGJhY2s7XG59O1xuXG5jb25zdCBSb3V0ZVNlZ21lbnRCb3VuZGFyeSA9ICh7XG4gIGNoaWxkcmVuLFxuICBlbnRyeSxcbiAgZmFsbGJhY2ssXG4gIG1hdGNoLFxuICBwcmVwYXJlZFNlZ21lbnQsXG59OiBSb3V0ZVNlZ21lbnRCb3VuZGFyeVByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCByb3V0ZUNvbXBvbmVudCA9IChcbiAgICA8Um91dGVDb21wb25lbnRXcmFwcGVyXG4gICAgICBlbnRyeT17ZW50cnl9XG4gICAgICBtYXRjaD17bWF0Y2h9XG4gICAgICBwcmVwYXJlZFNlZ21lbnQ9e3ByZXBhcmVkU2VnbWVudH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Sb3V0ZUNvbXBvbmVudFdyYXBwZXI+XG4gICk7XG5cbiAgaWYgKHByZXBhcmVkU2VnbWVudC5zdXNwZW5zZUJvdW5kYXJ5ICE9PSAnc2VnbWVudCcpIHtcbiAgICByZXR1cm4gcm91dGVDb21wb25lbnQ7XG4gIH1cblxuICByZXR1cm4gPFN1c3BlbnNlIGZhbGxiYWNrPXtmYWxsYmFja30+e3JvdXRlQ29tcG9uZW50fTwvU3VzcGVuc2U+O1xufTtcblxuY29uc3QgY2FuUmVuZGVyUGVuZGluZ0VudHJ5V2l0aExvY2FsQm91bmRhcmllcyA9IChcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPixcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAoZW50cnkuYWN0aXZlTG9hZFN0YXRlLnN0YXR1cyAhPT0gJ3BlbmRpbmcnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZW50cnkubG9hZFN0YXRlLnNlZ21lbnRzLmV2ZXJ5KChzZWdtZW50LCBpbmRleCkgPT4ge1xuICAgIGlmIChzZWdtZW50LnN0YXR1cyAhPT0gJ3BlbmRpbmcnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50cnkucHJlcGFyZWRNYXRjaC5zZWdtZW50c1tpbmRleF0/LnN1c3BlbnNlQm91bmRhcnkgPT09ICdzZWdtZW50JztcbiAgfSk7XG59O1xuXG5jb25zdCByb3V0ZUxvY2F0aW9uS2V5ID0gKGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4pOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYCR7ZW50cnkubG9jYXRpb24ucGF0aG5hbWV9JHtlbnRyeS5sb2NhdGlvbi5zZWFyY2h9JHtlbnRyeS5sb2NhdGlvbi5oYXNofWA7XG59O1xuXG5jb25zdCBjYW5EaXNwbGF5Um91dGVFbnRyeSA9IChcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPixcbiAgY3VycmVudEVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4gfCB1bmRlZmluZWQsXG4gIGV4dGVybmFsUGVuZGluZzogYm9vbGVhbixcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAoY3VycmVudEVudHJ5ID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGlzUm91dGVDaGFuZ2UgPVxuICAgIHJvdXRlTG9jYXRpb25LZXkoZW50cnkpICE9PSByb3V0ZUxvY2F0aW9uS2V5KGN1cnJlbnRFbnRyeSk7XG4gIGNvbnN0IGhhc0xvY2FsQm91bmRhcnkgPSBlbnRyeS5wcmVwYXJlZE1hdGNoLnNlZ21lbnRzLnNvbWUoKHJvdXRlKSA9PiB7XG4gICAgcmV0dXJuIHJvdXRlLnN1c3BlbnNlQm91bmRhcnkgPT09ICdzZWdtZW50JztcbiAgfSk7XG5cbiAgaWYgKGV4dGVybmFsUGVuZGluZyAmJiBpc1JvdXRlQ2hhbmdlICYmICFoYXNMb2NhbEJvdW5kYXJ5KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGNhblJlbmRlclBlbmRpbmdFbnRyeVdpdGhMb2NhbEJvdW5kYXJpZXMoZW50cnkpO1xufTtcblxuY29uc3QgcmVuZGVyUm91dGVFbnRyeSA9IChcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPiB8IHVuZGVmaW5lZCxcbiAgZmFsbGJhY2s6IFJlYWN0Tm9kZSxcbik6IFJlYWN0Tm9kZSA9PiB7XG4gIGlmIChlbnRyeSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFByZXBhcmVkUm91dGVTZWdtZW50W10gPSBbXTtcblxuICBjb25zdCByZXZlcnNlZEl0ZW1zID0gcmVzdWx0LmNvbmNhdChlbnRyeS5wcmVwYXJlZE1hdGNoLnNlZ21lbnRzKS5yZXZlcnNlKCk7XG4gIGNvbnN0IGZpcnN0SXRlbSA9IHJldmVyc2VkSXRlbXNbMF07XG5cbiAgaWYgKGZpcnN0SXRlbSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGVudHJ5LnByZXBhcmVkTWF0Y2gubWF0Y2ggPz8gbnVsbDtcbiAgbGV0IG1haW5Db21wb25lbnQgPSAoXG4gICAgPFJvdXRlU2VnbWVudEJvdW5kYXJ5XG4gICAgICBrZXk9e2ZpcnN0SXRlbS5zZWdtZW50S2V5fVxuICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgZmFsbGJhY2s9e3Jlc29sdmVSb3V0ZUZhbGxiYWNrKGZpcnN0SXRlbS5mYWxsYmFjaywgZmFsbGJhY2ssIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHNlZ21lbnQ6IGZpcnN0SXRlbSxcbiAgICAgIH0pfVxuICAgICAgbWF0Y2g9e21hdGNofVxuICAgICAgcHJlcGFyZWRTZWdtZW50PXtmaXJzdEl0ZW19XG4gICAgLz5cbiAgKTtcblxuICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgcmV2ZXJzZWRJdGVtcy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBjb25zdCBuZXh0SXRlbSA9IHJldmVyc2VkSXRlbXNbaW5kZXhdO1xuICAgIGlmIChuZXh0SXRlbSAhPSBudWxsKSB7XG4gICAgICBtYWluQ29tcG9uZW50ID0gKFxuICAgICAgICA8Um91dGVTZWdtZW50Qm91bmRhcnlcbiAgICAgICAgICBrZXk9e25leHRJdGVtLnNlZ21lbnRLZXl9XG4gICAgICAgICAgZW50cnk9e2VudHJ5fVxuICAgICAgICAgIGZhbGxiYWNrPXtyZXNvbHZlUm91dGVGYWxsYmFjayhuZXh0SXRlbS5mYWxsYmFjaywgZmFsbGJhY2ssIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBtYWluQ29tcG9uZW50LFxuICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICBzZWdtZW50OiBuZXh0SXRlbSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgICBtYXRjaD17bWF0Y2h9XG4gICAgICAgICAgcHJlcGFyZWRTZWdtZW50PXtuZXh0SXRlbX1cbiAgICAgICAgPlxuICAgICAgICAgIHttYWluQ29tcG9uZW50fVxuICAgICAgICA8L1JvdXRlU2VnbWVudEJvdW5kYXJ5PlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFpbkNvbXBvbmVudDtcbn07XG5cbi8qKlxuICogTWFpbiByb3V0ZXIgcmVuZGVyZXIgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgdGhlIGN1cnJlbnQgcm91dGUuXG4gKlxuICogVGhpcyBjb21wb25lbnQgYWNjZXNzZXMgdGhlIGN1cnJlbnQgcm91dGUgZW50cnkgZnJvbSBSb3V0aW5nQ29udGV4dCBhbmQgcmVuZGVyc1xuICogdGhlIGFwcHJvcHJpYXRlIGNvbXBvbmVudHMuIEl0IHN1cHBvcnRzIFJlYWN0IFN1c3BlbnNlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzXG4gKiBhbmQgY2FuIG9wdGlvbmFsbHkgZGVmZXIgdmlzaWJsZSByb3V0ZSBjaGFuZ2VzIGZvciBzbW9vdGhlciBuYXZpZ2F0aW9uLlxuICpcbiAqIFRoZSBjb21wb25lbnQgaGFuZGxlcyBuZXN0ZWQgcm91dGVzIGJ5IGNyZWF0aW5nIGEgaGllcmFyY2h5IG9mIFJvdXRlQ29tcG9uZW50V3JhcHBlclxuICogY29tcG9uZW50cywgd2hlcmUgZWFjaCBsZXZlbCBjYW4gcmVuZGVyIGl0cyBvd24gY29tcG9uZW50IGFuZCBjaGlsZHJlbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIFN1c3BlbnNlIGZhbGxiYWNrXG4gKiA8Um91dGVyUmVuZGVyZXIgZmFsbGJhY2s9ezxkaXY+TG9hZGluZy4uLjwvZGl2Pn0gLz5cbiAqXG4gKiAvLyBXaXRoIFJlYWN0IDE4IHRyYW5zaXRpb25zXG4gKiA8Um91dGVyUmVuZGVyZXJcbiAqICAgZW5hYmxlVHJhbnNpdGlvblxuICogICBmYWxsYmFjaz17PGRpdj5Mb2FkaW5nLi4uPC9kaXY+fVxuICogICBwZW5kaW5nPXs8ZGl2Pk5hdmlnYXRpbmcuLi48L2Rpdj59XG4gKiAvPlxuICogYGBgXG4gKi9cbmNvbnN0IFJvdXRlclJlbmRlcmVyID0gKHByb3BzOiBQcm9wcyk6IEpTWC5FbGVtZW50IHwgbnVsbCA9PiB7XG4gIGNvbnN0IHtcbiAgICBleHRlcm5hbFBlbmRpbmcgPSBmYWxzZSxcbiAgICBmYWxsYmFjayxcbiAgICBwZW5kaW5nLFxuICAgIGVuYWJsZVRyYW5zaXRpb24gPSBmYWxzZSxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBbaXNTdXNwZW5zZVBlbmRpbmcsIHNldElzU3VzcGVuc2VQZW5kaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAvLyBBY2Nlc3MgdGhlIHJvdXRlciBjb250ZXh0XG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICBjb25zdCBbYWN0aXZlUm91dGVFbnRyeSwgc2V0QWN0aXZlUm91dGVFbnRyeV0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIHJvdXRlcj8uZ2V0KCk7XG4gIH0pO1xuICBjb25zdCBbZGlzcGxheWVkUm91dGVFbnRyeSwgc2V0RGlzcGxheWVkUm91dGVFbnRyeV0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIHJvdXRlcj8uZ2V0KCk7XG4gIH0pO1xuICBjb25zdCBjb21taXR0ZWRSb3V0ZUVudHJ5UmVmID0gdXNlUmVmPFJvdXRlRW50cnk8UGFyYW1EYXRhPiB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJvdXRlciA9PSBudWxsKSB7XG4gICAgICBzZXRBY3RpdmVSb3V0ZUVudHJ5KHVuZGVmaW5lZCk7XG4gICAgICBzZXREaXNwbGF5ZWRSb3V0ZUVudHJ5KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfVxuXG4gICAgY29uc3Qgc2NoZWR1bGVEaXNwbGF5ZWRSb3V0ZUVudHJ5ID0gKGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YT4pID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZURpc3BsYXllZFJvdXRlRW50cnkgPSAoKSA9PiB7XG4gICAgICAgIHNldERpc3BsYXllZFJvdXRlRW50cnkoKGN1cnJlbnRFbnRyeSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNob3VsZEtlZXBDdXJyZW50RW50cnkgPVxuICAgICAgICAgICAgZW5hYmxlVHJhbnNpdGlvbiAmJlxuICAgICAgICAgICAgIWNhbkRpc3BsYXlSb3V0ZUVudHJ5KGVudHJ5LCBjdXJyZW50RW50cnksIGV4dGVybmFsUGVuZGluZyk7XG5cbiAgICAgICAgICBpZiAoc2hvdWxkS2VlcEN1cnJlbnRFbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbnRyeTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgaWYgKGVuYWJsZVRyYW5zaXRpb24pIHtcbiAgICAgICAgc3RhcnRUcmFuc2l0aW9uKHVwZGF0ZURpc3BsYXllZFJvdXRlRW50cnkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZURpc3BsYXllZFJvdXRlRW50cnkoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgbmV4dEVudHJ5ID0gcm91dGVyLmdldCgpO1xuICAgIHNldEFjdGl2ZVJvdXRlRW50cnkobmV4dEVudHJ5KTtcbiAgICBzY2hlZHVsZURpc3BsYXllZFJvdXRlRW50cnkobmV4dEVudHJ5KTtcbiAgICByZXR1cm4gcm91dGVyLnN1YnNjcmliZSgoZW50cnkpID0+IHtcbiAgICAgIHNldEFjdGl2ZVJvdXRlRW50cnkoZW50cnkpO1xuICAgICAgc2NoZWR1bGVEaXNwbGF5ZWRSb3V0ZUVudHJ5KGVudHJ5KTtcbiAgICB9KTtcbiAgfSwgW2VuYWJsZVRyYW5zaXRpb24sIGV4dGVybmFsUGVuZGluZywgcm91dGVyXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWVuYWJsZVRyYW5zaXRpb24gfHwgZXh0ZXJuYWxQZW5kaW5nIHx8IGFjdGl2ZVJvdXRlRW50cnkgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBzZXREaXNwbGF5ZWRSb3V0ZUVudHJ5KGFjdGl2ZVJvdXRlRW50cnkpO1xuICAgIH0pO1xuICB9LCBbYWN0aXZlUm91dGVFbnRyeSwgZW5hYmxlVHJhbnNpdGlvbiwgZXh0ZXJuYWxQZW5kaW5nXSk7XG4gIC8vIFRoZSBjdXJyZW50IHJvdXRlIHZhbHVlIGlzIGFuIGFycmF5IG9mIG1hdGNoaW5nIGVudHJpZXMgLSBvbmUgZW50cnkgcGVyXG4gIC8vIGxldmVsIG9mIHJvdXRlcyAodG8gYWxsb3cgbmVzdGVkIHJvdXRlcykuIFdlIGhhdmUgdG8gbWFwIGVhY2ggb25lIHRvIGFcbiAgLy8gUm91dGVDb21wb25lbnQgdG8gYWxsb3cgc3VzcGVuZGluZywgYW5kIGFsc28gcGFzcyBpdHMgY2hpbGRyZW4gY29ycmVjdGx5LlxuICAvLyBDb25jZXB0dWFsbHksIHdlIHdhbnQgdGhpcyBzdHJ1Y3R1cmU6XG4gIC8vIGBgYFxuICAvLyA8Um91dGVDb21wb25lbnRcbiAgLy8gICBjb21wb25lbnQ9e2VudHJ5WzBdLmNvbXBvbmVudH1cbiAgLy8gICBwcmVwYXJlZD17ZW50cnJ5WzBdLnByZXBhcmVkfT5cbiAgLy8gICA8Um91dGVDb21wb25lbnRcbiAgLy8gICAgIGNvbXBvbmVudD17ZW50cnlbMV0uY29tcG9uZW50fVxuICAvLyAgICAgcHJlcGFyZWQ9e2VudHJ5WzFdLnByZXBhcmVkfT5cbiAgLy8gICAgICAgLy8gY29udGludWUgZm9yIG5lc3RlZCBpdGVtcy4uLlxuICAvLyAgIDwvUm91dGVDb21wb25lbnQ+XG4gIC8vIDwvUm91dGVDb21wb25lbnQ+XG4gIC8vIGBgYFxuICAvLyBUbyBhY2hpZXZlIHRoaXMsIHdlIHJldmVyc2UgdGhlIGxpc3Qgc28gd2UgY2FuIHN0YXJ0IGF0IHRoZSBib3R0b20tbW9zdFxuICAvLyBjb21wb25lbnQsIGFuZCBpdGVyYXRpdmVseSBjb25zdHJ1Y3QgcGFyZW50IGNvbXBvbmVudHMgdyB0aGUgcHJldmlvdXNcbiAgLy8gdmFsdWUgYXMgdGhlIGNoaWxkIG9mIHRoZSBuZXh0IG9uZTpcbiAgLy8gcmV2ZXJzZSBpcyBpbiBwbGFjZSwgYnV0IHdlIHdhbnQgYSBjb3B5IHNvIGNvbmNhdFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Byb21pc2UtZnVuY3Rpb24tYXN5bmNcbiAgY29uc3QgcGVuZGluZ0NvbnRlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBoYXNSb3V0ZXJQZW5kaW5nID1cbiAgICAgIGFjdGl2ZVJvdXRlRW50cnk/LmFjdGl2ZUxvYWRTdGF0ZS5zdGF0dXMgPT09ICdwZW5kaW5nJztcbiAgICBjb25zdCBjb21taXR0ZWRSb3V0ZUVudHJ5ID0gY29tbWl0dGVkUm91dGVFbnRyeVJlZi5jdXJyZW50O1xuICAgIGNvbnN0IGhhc1JvdXRlVHJhbnNpdGlvblBlbmRpbmcgPVxuICAgICAgZXh0ZXJuYWxQZW5kaW5nICYmXG4gICAgICBhY3RpdmVSb3V0ZUVudHJ5ICE9IG51bGwgJiZcbiAgICAgIChjb21taXR0ZWRSb3V0ZUVudHJ5ID09IG51bGwgfHxcbiAgICAgICAgcm91dGVMb2NhdGlvbktleShhY3RpdmVSb3V0ZUVudHJ5KSAhPT1cbiAgICAgICAgICByb3V0ZUxvY2F0aW9uS2V5KGNvbW1pdHRlZFJvdXRlRW50cnkpKTtcbiAgICBjb25zdCBoYXNQZW5kaW5nID1cbiAgICAgIGhhc1JvdXRlclBlbmRpbmcgfHwgaXNTdXNwZW5zZVBlbmRpbmcgfHwgaGFzUm91dGVUcmFuc2l0aW9uUGVuZGluZztcbiAgICBpZiAoZW5hYmxlVHJhbnNpdGlvbiAmJiBoYXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gcGVuZGluZztcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgW1xuICAgIGVuYWJsZVRyYW5zaXRpb24sXG4gICAgZXh0ZXJuYWxQZW5kaW5nLFxuICAgIGFjdGl2ZVJvdXRlRW50cnksXG4gICAgaXNTdXNwZW5zZVBlbmRpbmcsXG4gICAgcGVuZGluZyxcbiAgXSk7XG5cbiAgY29uc3QgaGFuZGxlU3VzcGVuc2VQZW5kaW5nQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGlzUGVuZGluZzogYm9vbGVhbikgPT4ge1xuICAgIHNldElzU3VzcGVuc2VQZW5kaW5nKGlzUGVuZGluZyk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvYnNlcnZlZEZhbGxiYWNrID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxTdXNwZW5zZUZhbGxiYWNrT2JzZXJ2ZXIgb25QZW5kaW5nQ2hhbmdlPXtoYW5kbGVTdXNwZW5zZVBlbmRpbmdDaGFuZ2V9PlxuICAgICAgICB7ZmFsbGJhY2t9XG4gICAgICA8L1N1c3BlbnNlRmFsbGJhY2tPYnNlcnZlcj5cbiAgICApO1xuICB9LCBbZmFsbGJhY2ssIGhhbmRsZVN1c3BlbnNlUGVuZGluZ0NoYW5nZV0pO1xuXG4gIGNvbnN0IHJvdXRlQ29tcG9uZW50ID0gdXNlTWVtbygoKTogUmVhY3ROb2RlID0+IHtcbiAgICByZXR1cm4gcmVuZGVyUm91dGVFbnRyeShkaXNwbGF5ZWRSb3V0ZUVudHJ5LCBmYWxsYmFjayk7XG4gIH0sIFtkaXNwbGF5ZWRSb3V0ZUVudHJ5LCBmYWxsYmFja10pO1xuXG4gIGNvbnN0IGhhbmRsZVJvdXRlRW50cnlDb21taXQgPSB1c2VDYWxsYmFjaygoZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhPikgPT4ge1xuICAgIGNvbW1pdHRlZFJvdXRlRW50cnlSZWYuY3VycmVudCA9IGVudHJ5O1xuICB9LCBbXSk7XG5cbiAgY29uc3QgdHJhbnNpdGlvbkZhbGxiYWNrID0gdXNlTWVtbygoKTogUmVhY3ROb2RlID0+IHtcbiAgICBpZiAoIWVuYWJsZVRyYW5zaXRpb24pIHtcbiAgICAgIHJldHVybiBvYnNlcnZlZEZhbGxiYWNrO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICByZW5kZXJSb3V0ZUVudHJ5KGNvbW1pdHRlZFJvdXRlRW50cnlSZWYuY3VycmVudCwgZmFsbGJhY2spID8/XG4gICAgICBvYnNlcnZlZEZhbGxiYWNrXG4gICAgKTtcbiAgfSwgW2VuYWJsZVRyYW5zaXRpb24sIGZhbGxiYWNrLCBvYnNlcnZlZEZhbGxiYWNrXSk7XG5cbiAgLy8gUm91dGVzIGNhbiBlcnJvciBzbyB3cmFwIGluIGFuIDxFcnJvckJvdW5kYXJ5PlxuICAvLyBSb3V0ZXMgY2FuIHN1c3BlbmQsIHNvIHdyYXAgaW4gPFN1c3BlbnNlPlxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7cGVuZGluZ0NvbnRlbnR9XG4gICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e3RyYW5zaXRpb25GYWxsYmFja30+XG4gICAgICAgIDxSb3V0ZUVudHJ5Q29tbWl0T2JzZXJ2ZXJcbiAgICAgICAgICBlbnRyeT17ZGlzcGxheWVkUm91dGVFbnRyeX1cbiAgICAgICAgICBvbkNvbW1pdD17aGFuZGxlUm91dGVFbnRyeUNvbW1pdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtyb3V0ZUNvbXBvbmVudH1cbiAgICAgICAgPC9Sb3V0ZUVudHJ5Q29tbWl0T2JzZXJ2ZXI+XG4gICAgICA8L1N1c3BlbnNlPlxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUm91dGVyUmVuZGVyZXI7XG4iXX0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type { RoutingContextType
|
|
3
|
-
declare const RoutingContext: React.Context<RoutingContextType<
|
|
2
|
+
import type { RoutingContextType } from '../types.js';
|
|
3
|
+
declare const RoutingContext: React.Context<RoutingContextType<Partial<Record<string, string | string[]>>> | null>;
|
|
4
4
|
export default RoutingContext;
|
|
5
5
|
//# sourceMappingURL=RoutingContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoutingContext.d.ts","sourceRoot":"","sources":["../../../src/routing/RoutingContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"RoutingContext.d.ts","sourceRoot":"","sources":["../../../src/routing/RoutingContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,QAAA,MAAM,cAAc,sFAC6C,CAAC;eAKnD,cAAc"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
const RoutingContext = React.createContext(null);
|
|
3
3
|
export default RoutingContext;
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGluZ0NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9Sb3V0aW5nQ29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLMUIsTUFBTSxjQUFjLEdBQ2xCLEtBQUssQ0FBQyxhQUFhLENBQXVDLElBQUksQ0FBQyxDQUFDO0FBS2xFLGVBQWUsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUgeyBSb3V0aW5nQ29udGV4dFR5cGUgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuY29uc3QgUm91dGluZ0NvbnRleHQgPVxuICBSZWFjdC5jcmVhdGVDb250ZXh0PFJvdXRpbmdDb250ZXh0VHlwZTxQYXJhbURhdGE+IHwgbnVsbD4obnVsbCk7XG5cbi8qKlxuICogQSBjdXN0b20gY29udGV4dCBpbnN0YW5jZSBmb3Igb3VyIHJvdXRlciB0eXBlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IFJvdXRpbmdDb250ZXh0O1xuIl19
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { type Schema as FilterSchema } from '@plumile/filter-query/types.js';
|
|
2
1
|
import type { ParamData } from 'path-to-regexp';
|
|
3
|
-
import { type RoutingContextType, type
|
|
2
|
+
import { type RoutingContextType, type RouteNode, type PreparedAccess, type NavigateOverloads, type UnknownQueryShape } from '../types.js';
|
|
4
3
|
import { type InstrumentationAPI } from '../instrumentation/Instrumentation.js';
|
|
5
|
-
type RouterQuerySchema
|
|
6
|
-
export type CreateRouterReturn<TContext, R extends
|
|
4
|
+
import { type RouterQuerySchema } from '../internal/routerSearchState.js';
|
|
5
|
+
export type CreateRouterReturn<TContext, R extends RouteNode[]> = {
|
|
7
6
|
cleanup: () => void;
|
|
8
7
|
context: RoutingContextType<ParamData, RouterQuerySchema, UnknownQueryShape, TContext> & PreparedAccess<R> & {
|
|
9
8
|
navigate: NavigateOverloads<R>;
|
|
@@ -14,6 +13,5 @@ export type CreateRouterOptions<TContext> = {
|
|
|
14
13
|
context?: TContext | (() => TContext);
|
|
15
14
|
getContext?: () => TContext;
|
|
16
15
|
};
|
|
17
|
-
export default function createRouter<TContext = unknown, R extends
|
|
18
|
-
export {};
|
|
16
|
+
export default function createRouter<TContext = unknown, R extends RouteNode[] = RouteNode[]>(routes: [...R] | RouteNode[], options?: CreateRouterOptions<TContext>): CreateRouterReturn<TContext, R>;
|
|
19
17
|
//# sourceMappingURL=createRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createRouter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAOtB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,kBAAkB,EAKxB,MAAM,uCAAuC,CAAC;AAY/C,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kCAAkC,CAAC;AA0C1C,MAAM,MAAM,kBAAkB,CAAC,QAAQ,EAAE,CAAC,SAAS,SAAS,EAAE,IAAI;IAEhE,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,GACC,cAAc,CAAC,CAAC,CAAC,GAAG;QAClB,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAChC,CAAC;CACL,CAAC;AAwCF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAE1C,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAExC,OAAO,CAAC,EAAE,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;CAC7B,CAAC;AASF,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,EAEnC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,EAC5B,OAAO,GAAE,mBAAmB,CAAC,QAAQ,CAAM,GAC1C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAwlCjC"}
|