@plumile/router 0.2.3 → 0.2.5

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.
Files changed (79) hide show
  1. package/README.md +2 -1
  2. package/lib/esm/builder.d.ts +1 -0
  3. package/lib/esm/builder.d.ts.map +1 -1
  4. package/lib/esm/builder.js +27 -4
  5. package/lib/esm/errors/HttpRedirect.d.ts +3 -2
  6. package/lib/esm/errors/HttpRedirect.d.ts.map +1 -1
  7. package/lib/esm/errors/HttpRedirect.js +1 -1
  8. package/lib/esm/history/BrowserHistory.d.ts +4 -1
  9. package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
  10. package/lib/esm/history/BrowserHistory.js +52 -2
  11. package/lib/esm/history/types.d.ts +6 -0
  12. package/lib/esm/history/types.d.ts.map +1 -1
  13. package/lib/esm/history/types.js +1 -1
  14. package/lib/esm/instrumentation/Instrumentation.d.ts +8 -10
  15. package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -1
  16. package/lib/esm/instrumentation/Instrumentation.js +1 -1
  17. package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts +1 -0
  18. package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
  19. package/lib/esm/instrumentation/adapters/devtoolsBridge.js +18 -7
  20. package/lib/esm/routing/Link.d.ts.map +1 -1
  21. package/lib/esm/routing/Link.js +24 -10
  22. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  23. package/lib/esm/routing/RouteComponentWrapper.js +26 -50
  24. package/lib/esm/routing/RouterRenderer.d.ts +5 -2
  25. package/lib/esm/routing/RouterRenderer.d.ts.map +1 -1
  26. package/lib/esm/routing/RouterRenderer.js +8 -2
  27. package/lib/esm/routing/createRouter.d.ts +2 -1
  28. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  29. package/lib/esm/routing/createRouter.js +192 -16
  30. package/lib/esm/routing/createStaticRouter.d.ts +16 -2
  31. package/lib/esm/routing/createStaticRouter.d.ts.map +1 -1
  32. package/lib/esm/routing/createStaticRouter.js +46 -10
  33. package/lib/esm/routing/index.d.ts +3 -3
  34. package/lib/esm/routing/index.d.ts.map +1 -1
  35. package/lib/esm/routing/index.js +3 -3
  36. package/lib/esm/routing/routerHydration.d.ts +5 -0
  37. package/lib/esm/routing/routerHydration.d.ts.map +1 -0
  38. package/lib/esm/routing/routerHydration.js +57 -0
  39. package/lib/esm/tools.d.ts +6 -2
  40. package/lib/esm/tools.d.ts.map +1 -1
  41. package/lib/esm/tools.js +56 -5
  42. package/lib/esm/types.d.ts +42 -11
  43. package/lib/esm/types.d.ts.map +1 -1
  44. package/lib/esm/types.js +1 -1
  45. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  46. package/lib/types/builder.d.ts +1 -0
  47. package/lib/types/builder.d.ts.map +1 -1
  48. package/lib/types/errors/HttpRedirect.d.ts +3 -2
  49. package/lib/types/errors/HttpRedirect.d.ts.map +1 -1
  50. package/lib/types/history/BrowserHistory.d.ts +4 -1
  51. package/lib/types/history/BrowserHistory.d.ts.map +1 -1
  52. package/lib/types/history/types.d.ts +6 -0
  53. package/lib/types/history/types.d.ts.map +1 -1
  54. package/lib/types/instrumentation/Instrumentation.d.ts +8 -10
  55. package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -1
  56. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts +1 -0
  57. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
  58. package/lib/types/routing/Link.d.ts.map +1 -1
  59. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  60. package/lib/types/routing/RouterRenderer.d.ts +5 -2
  61. package/lib/types/routing/RouterRenderer.d.ts.map +1 -1
  62. package/lib/types/routing/createRouter.d.ts +2 -1
  63. package/lib/types/routing/createRouter.d.ts.map +1 -1
  64. package/lib/types/routing/createStaticRouter.d.ts +16 -2
  65. package/lib/types/routing/createStaticRouter.d.ts.map +1 -1
  66. package/lib/types/routing/index.d.ts +3 -3
  67. package/lib/types/routing/index.d.ts.map +1 -1
  68. package/lib/types/routing/routerHydration.d.ts +5 -0
  69. package/lib/types/routing/routerHydration.d.ts.map +1 -0
  70. package/lib/types/tools.d.ts +6 -2
  71. package/lib/types/tools.d.ts.map +1 -1
  72. package/lib/types/types.d.ts +42 -11
  73. package/lib/types/types.d.ts.map +1 -1
  74. package/package.json +3 -3
  75. package/lib/esm/routing/RouteComponent.d.ts +0 -8
  76. package/lib/esm/routing/RouteComponent.d.ts.map +0 -1
  77. package/lib/esm/routing/RouteComponent.js +0 -20
  78. package/lib/types/routing/RouteComponent.d.ts +0 -8
  79. package/lib/types/routing/RouteComponent.d.ts.map +0 -1
package/lib/esm/tools.js CHANGED
@@ -67,7 +67,7 @@ export const __testTools = {
67
67
  buildHighlightId,
68
68
  areSegmentParamsEqual,
69
69
  };
70
- export function prepareMatch(match, query, instrumentation, context, reuse, searchState) {
70
+ export function prepareMatch(match, query, instrumentation, context, reuse, searchState, hydration) {
71
71
  if (match == null) {
72
72
  return {
73
73
  match,
@@ -76,7 +76,7 @@ export function prepareMatch(match, query, instrumentation, context, reuse, sear
76
76
  }
77
77
  const matchedRoute = match.route;
78
78
  const segments = match.route.routes.map((route, routeIndex) => {
79
- const { path, prepare, querySchema, resourcePage, render, suspenseBoundary, fallback, } = route;
79
+ const { path, prepare, preparedHydration, querySchema, resourcePage, render, suspenseBoundary, fallback, } = route;
80
80
  const routeSegment = match.route.routeSegments?.[routeIndex];
81
81
  const previousSegment = reuse?.previousSegments?.[routeIndex];
82
82
  if (previousSegment?.routeNode === route &&
@@ -94,6 +94,7 @@ export function prepareMatch(match, query, instrumentation, context, reuse, sear
94
94
  moduleId = resolvedModuleId;
95
95
  }
96
96
  }
97
+ const segmentKey = routeSegment?.key ?? buildHighlightId(path, routeIndex, moduleId);
97
98
  let prepareStartedAt = 0;
98
99
  if (instrumentation != null) {
99
100
  prepareStartedAt = Date.now();
@@ -107,7 +108,53 @@ export function prepareMatch(match, query, instrumentation, context, reuse, sear
107
108
  });
108
109
  }
109
110
  let preparedResource;
110
- if (prepare != null) {
111
+ if (hydration?.values.has(segmentKey) === true) {
112
+ if (preparedHydration == null) {
113
+ throw new Error(`Router hydration segment has no prepared codec: ${segmentKey}`);
114
+ }
115
+ const hydratedValue = preparedHydration.deserialize(hydration.values.get(segmentKey));
116
+ hydration.consumed.add(segmentKey);
117
+ preparedResource = createPreparedValueResource(() => {
118
+ return hydratedValue;
119
+ });
120
+ const preparedLoad = preparedResource.load();
121
+ if (instrumentation != null) {
122
+ preparedLoad
123
+ .then(() => {
124
+ const finishedAt = Date.now();
125
+ emitPrepareInstrumentation(instrumentation, {
126
+ kind: 'prepare-complete',
127
+ source: instrumentation.source,
128
+ timestamp: finishedAt,
129
+ location: instrumentation.location,
130
+ routePath: path,
131
+ moduleId,
132
+ durationMs: finishedAt - prepareStartedAt,
133
+ hasPrepared: true,
134
+ status: 'resolved',
135
+ });
136
+ })
137
+ .catch(() => {
138
+ const finishedAt = Date.now();
139
+ emitPrepareInstrumentation(instrumentation, {
140
+ kind: 'prepare-complete',
141
+ source: instrumentation.source,
142
+ timestamp: finishedAt,
143
+ location: instrumentation.location,
144
+ routePath: path,
145
+ moduleId,
146
+ durationMs: finishedAt - prepareStartedAt,
147
+ hasPrepared: true,
148
+ status: 'rejected',
149
+ });
150
+ });
151
+ }
152
+ else {
153
+ preparedLoad.catch(() => {
154
+ });
155
+ }
156
+ }
157
+ else if (prepare != null) {
111
158
  preparedResource = createPreparedValueResource(() => {
112
159
  return prepare({
113
160
  match,
@@ -183,11 +230,13 @@ export function prepareMatch(match, query, instrumentation, context, reuse, sear
183
230
  routeNode: route,
184
231
  path,
185
232
  fullPath: routeSegment?.fullPath ?? path,
186
- segmentKey: routeSegment?.key ?? buildHighlightId(path, routeIndex, moduleId),
233
+ segmentKey,
187
234
  paramNames: routeSegment?.paramNames ?? [],
188
235
  segmentIndex: routeIndex,
189
236
  preparedResource,
237
+ preparedHydration,
190
238
  redirectTo: matchedRoute.redirectTo ?? null,
239
+ redirectStatus: matchedRoute.redirectStatus,
191
240
  render,
192
241
  resourcePage,
193
242
  suspenseBoundary: suspenseBoundary ?? 'inherit',
@@ -216,7 +265,9 @@ export async function prepareMatchAsync(match, query, instrumentation, context)
216
265
  paramNames: route.paramNames,
217
266
  segmentIndex: route.segmentIndex,
218
267
  prepared,
268
+ preparedHydration: route.preparedHydration,
219
269
  redirectTo: route.redirectTo,
270
+ redirectStatus: route.redirectStatus,
220
271
  render: route.render,
221
272
  resourcePage: route.resourcePage,
222
273
  suspenseBoundary: route.suspenseBoundary,
@@ -233,4 +284,4 @@ export async function prepareMatchAsync(match, query, instrumentation, context)
233
284
  export function r(route) {
234
285
  return route;
235
286
  }
236
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBbUJuRSxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLElBQXVCLEVBQ3ZCLEtBQXdCLEVBQ2YsRUFBRTtJQUNYLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLENBQzVCLFVBQTZCLEVBQzdCLElBQTJCLEVBQzNCLEtBQWdCLEVBQ1AsRUFBRTtJQUNYLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNwQyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUdGLFNBQVMsMEJBQTBCLENBQ2pDLGVBQW1ELEVBQ25ELEtBQXlCO0lBRXpCLElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzVCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQUMsTUFBTSxDQUFDO0lBRVQsQ0FBQztBQUNILENBQUM7QUFTRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixNQUE0QixFQUM1QixRQUFpQztJQUVqQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQy9CLE9BQU87Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLElBQUk7Z0JBQ0osTUFBTTthQUNQLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUtELFNBQVMsZ0JBQWdCLENBQ3ZCLFNBQTZCLEVBQzdCLEtBQWEsRUFDYixRQUFpQjtJQUVqQixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDN0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixnQkFBZ0I7SUFDaEIscUJBQXFCO0NBQ2IsQ0FBQztBQVVYLE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQXlDLEVBQ3pDLEtBQStCLEVBQy9CLGVBQXdDLEVBQ3hDLE9BQWtCLEVBQ2xCLEtBQW1DLEVBQ25DLFdBQWdDO0lBTWhDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU87WUFDTCxLQUFLO1lBQ0wsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFFakMsTUFBTSxRQUFRLEdBQXFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDdkUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDcEIsTUFBTSxFQUNKLElBQUksRUFDSixPQUFPLEVBQ1AsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLFFBQVEsR0FDVCxHQUFHLEtBQUssQ0FBQztRQUNWLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0QsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsSUFDRSxlQUFlLEVBQUUsU0FBUyxLQUFLLEtBQUs7WUFDcEMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxLQUFLLElBQUk7Z0JBQ3pCLEtBQUssQ0FBQyxxQkFBcUIsS0FBSyxNQUFNO2dCQUN0QyxPQUFPLElBQUksSUFBSSxDQUFDO1lBQ2xCLHFCQUFxQixDQUNuQixZQUFZLEVBQUUsVUFBVSxJQUFJLEVBQUUsRUFDOUIsS0FBSyxFQUFFLGNBQWMsRUFDckIsS0FBSyxDQUFDLE1BQU0sQ0FDYixFQUNELENBQUM7WUFDRCxPQUFPLGVBQWUsQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxRQUE0QixDQUFDO1FBQ2pDLElBQ0UsWUFBWSxJQUFJLElBQUk7WUFDcEIsT0FBTyxZQUFZLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFDOUMsQ0FBQztZQUNELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BELElBQUksT0FBTyxnQkFBZ0IsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDekMsUUFBUSxHQUFHLGdCQUFnQixDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlCLDBCQUEwQixDQUFDLGVBQWUsRUFBRTtnQkFDMUMsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTtnQkFDOUIsU0FBUyxFQUFFLGdCQUFnQjtnQkFDM0IsUUFBUSxFQUFFLGVBQWUsQ0FBQyxRQUFRO2dCQUNsQyxTQUFTLEVBQUUsSUFBSTtnQkFDZixRQUFRO2FBQ1QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksZ0JBQTBELENBQUM7UUFDL0QsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEIsZ0JBQWdCLEdBQUcsMkJBQTJCLENBQUMsR0FBRyxFQUFFO2dCQUNsRCxPQUFPLE9BQU8sQ0FBQztvQkFDYixLQUFLO29CQUNMLFlBQVk7b0JBQ1osT0FBTztvQkFDUCxZQUFZO29CQUVaLFNBQVMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtvQkFDOUIsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUNsQixRQUFRLEVBQ04sV0FBVyxFQUFFLFFBQVEsSUFBSyxLQUE4QixJQUFJLEVBQUU7b0JBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTztpQkFDOUIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFHSCxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUU3QyxJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsWUFBWTtxQkFDVCxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNULE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDOUIsMEJBQTBCLENBQUMsZUFBZSxFQUFFO3dCQUMxQyxJQUFJLEVBQUUsa0JBQWtCO3dCQUN4QixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU07d0JBQzlCLFNBQVMsRUFBRSxVQUFVO3dCQUNyQixRQUFRLEVBQUUsZUFBZSxDQUFDLFFBQVE7d0JBQ2xDLFNBQVMsRUFBRSxJQUFJO3dCQUNmLFFBQVE7d0JBQ1IsVUFBVSxFQUFFLFVBQVUsR0FBRyxnQkFBZ0I7d0JBQ3pDLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixNQUFNLEVBQUUsVUFBVTtxQkFDbkIsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQztxQkFDRCxLQUFLLENBQUMsR0FBRyxFQUFFO29CQUNWLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDOUIsMEJBQTBCLENBQUMsZUFBZSxFQUFFO3dCQUMxQyxJQUFJLEVBQUUsa0JBQWtCO3dCQUN4QixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU07d0JBQzlCLFNBQVMsRUFBRSxVQUFVO3dCQUNyQixRQUFRLEVBQUUsZUFBZSxDQUFDLFFBQVE7d0JBQ2xDLFNBQVMsRUFBRSxJQUFJO3dCQUNmLFFBQVE7d0JBQ1IsVUFBVSxFQUFFLFVBQVUsR0FBRyxnQkFBZ0I7d0JBQ3pDLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixNQUFNLEVBQUUsVUFBVTtxQkFDbkIsQ0FBQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUV4QixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDOUIsMEJBQTBCLENBQUMsZUFBZSxFQUFFO2dCQUMxQyxJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixNQUFNLEVBQUUsZUFBZSxDQUFDLE1BQU07Z0JBQzlCLFNBQVMsRUFBRSxVQUFVO2dCQUNyQixRQUFRLEVBQUUsZUFBZSxDQUFDLFFBQVE7Z0JBQ2xDLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVE7Z0JBQ1IsVUFBVSxFQUFFLFVBQVUsR0FBRyxnQkFBZ0I7Z0JBQ3pDLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixNQUFNLEVBQUUsVUFBVTthQUNuQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxZQUFZLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUVoRCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxNQUFNLENBQUM7WUFFVCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU87WUFDTCxTQUFTLEVBQUUsS0FBSztZQUNoQixJQUFJO1lBQ0osUUFBUSxFQUFFLFlBQVksRUFBRSxRQUFRLElBQUksSUFBSTtZQUN4QyxVQUFVLEVBQ1IsWUFBWSxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQztZQUNuRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsSUFBSSxFQUFFO1lBQzFDLFlBQVksRUFBRSxVQUFVO1lBQ3hCLGdCQUFnQjtZQUNoQixVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVUsSUFBSSxJQUFJO1lBQzNDLE1BQU07WUFDTixZQUFZO1lBQ1osZ0JBQWdCLEVBQUUsZ0JBQWdCLElBQUksU0FBUztZQUMvQyxRQUFRO1lBQ1IsV0FBVyxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDO1lBQ3pELFdBQVc7U0FDWixDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSztRQUNMLFFBQVE7S0FDVCxDQUFDO0FBQ0osQ0FBQztBQVdELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBSXJDLEtBQXlDLEVBQ3pDLEtBQStCLEVBQy9CLGVBQXdDLEVBQ3hDLE9BQWtCO0lBRWxCLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2hDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUN4QixLQUFLLEVBQUUsS0FBSyxFQUFtRCxFQUFFO1FBQy9ELElBQUksUUFBaUIsQ0FBQztRQUN0QixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQyxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU87WUFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxRQUFRO1lBQ1IsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztTQUMvQixDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQ0YsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7UUFDMUIsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDO0FBT0QsTUFBTSxVQUFVLENBQUMsQ0FTZixLQUFtRTtJQUVuRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcbmltcG9ydCB0eXBlIHsgSGlzdG9yeUxvY2F0aW9uU25hcHNob3QgfSBmcm9tICcuL2hpc3RvcnkvdHlwZXMuanMnO1xuXG5pbXBvcnQge1xuICB0eXBlIEZpbHRlclNjaGVtYSxcbiAgdHlwZSBQcmVwYXJlUmVzdWx0LFxuICB0eXBlIFByZXBhcmVkUm91dGVDaGFpbixcbiAgdHlwZSBQcmVwYXJlZFJvdXRlU2VnbWVudCxcbiAgdHlwZSBSZWRpcmVjdCxcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVDaGFpbixcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJvdXRlLFxuICB0eXBlIFJvdXRlTm9kZSxcbiAgdHlwZSBSb3V0ZXJNYXRjaGVkUm91dGUsXG4gIHR5cGUgUmF3UXVlcnksXG4gIHR5cGUgVW5rbm93bkZpbHRlcnMsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlclByZXBhcmVFdmVudCxcbiAgUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbn0gZnJvbSAnLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlIH0gZnJvbSAnLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIFByZXBhcmVJbnN0cnVtZW50YXRpb24gPSB7XG4gIGVtaXQ6IChldmVudDogUm91dGVyUHJlcGFyZUV2ZW50KSA9PiB2b2lkO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xufTtcblxudHlwZSBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4gPSB7XG4gIHByZXZpb3VzU2VnbWVudHM/OiBQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXTtcbiAgcHJldmlvdXNQYXJhbXM/OiBQYXJhbURhdGE7XG4gIHNhbWVTZWFyY2g/OiBib29sZWFuO1xufTtcblxudHlwZSBQcmVwYXJlU2VhcmNoU3RhdGUgPSB7XG4gIHJhd1F1ZXJ5PzogUmF3UXVlcnk7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbn07XG5cbmNvbnN0IGlzUGFyYW1WYWx1ZUVxdWFsID0gKFxuICBsZWZ0OiBQYXJhbURhdGFbc3RyaW5nXSxcbiAgcmlnaHQ6IFBhcmFtRGF0YVtzdHJpbmddLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGxlZnQpIHx8IEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxlZnQpIHx8ICFBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHJpZ2h0W2luZGV4XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG59O1xuXG5jb25zdCBhcmVTZWdtZW50UGFyYW1zRXF1YWwgPSAoXG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBsZWZ0OiBQYXJhbURhdGEgfCB1bmRlZmluZWQsXG4gIHJpZ2h0OiBQYXJhbURhdGEsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHBhcmFtTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGxlZnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFyYW1OYW1lcy5ldmVyeSgocGFyYW1OYW1lKSA9PiB7XG4gICAgcmV0dXJuIGlzUGFyYW1WYWx1ZUVxdWFsKGxlZnRbcGFyYW1OYW1lXSwgcmlnaHRbcGFyYW1OYW1lXSk7XG4gIH0pO1xufTtcblxuLyoqIEVtaXRzIHByZXBhcmUgaW5zdHJ1bWVudGF0aW9uIHdpdGhvdXQgYWxsb3dpbmcgaW5zdHJ1bWVudGF0aW9uIGZhaWx1cmVzIHRvIGFmZmVjdCByb3V0aW5nLiAqL1xuZnVuY3Rpb24gZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oXG4gIGluc3RydW1lbnRhdGlvbjogUHJlcGFyZUluc3RydW1lbnRhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXZlbnQ6IFJvdXRlclByZXBhcmVFdmVudCxcbik6IHZvaWQge1xuICBpZiAoaW5zdHJ1bWVudGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBpbnN0cnVtZW50YXRpb24uZW1pdChldmVudCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEluc3RydW1lbnRhdGlvbiBtdXN0IG5ldmVyIGJyZWFrIHJvdXRpbmcgb3IgcHJlcGFyZSBsaWZlY3ljbGUuXG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBIaXN0b3J5TG9jYXRpb25TbmFwc2hvdCxcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG5leHBvcnQgY29uc3QgX190ZXN0VG9vbHMgPSB7XG4gIGJ1aWxkSGlnaGxpZ2h0SWQsXG4gIGFyZVNlZ21lbnRQYXJhbXNFcXVhbCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogUHJlcGFyZXMgYSBtYXRjaGVkIHJvdXRlIGJ5IGV4ZWN1dGluZyBgcHJlcGFyZWAgY2FsbGJhY2tzIGFuZCByZXNvbHZpbmcgcmVzb3VyY2UgcGFnZXMuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHJlYWR5IGZvciB0aGUgcmVuZGVyZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSwgVENvbnRleHQgPSB1bmtub3duPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbiAgcmV1c2U/OiBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4sXG4gIHNlYXJjaFN0YXRlPzogUHJlcGFyZVNlYXJjaFN0YXRlLFxuKTogUHJlcGFyZWRSb3V0ZUNoYWluPFRQYXJhbXMsIFRDb250ZXh0PiB7XG4gIC8vIE5PVEU6IFJ1bnRpbWUgcmV0YWlucyBhIGdlbmVyaWMgUHJlcGFyZWRSZXN1bHQ7IHR5cGUtbGV2ZWwgbmFycm93aW5nIGlzIGFjaGlldmVkIGV4dGVybmFsbHlcbiAgLy8gdGhyb3VnaCB0aGUgcm91dGUgdW5pb24gYW5kIFByZXBhcmVkQWNjZXNzIGhlbHBlcnMuIFdlIGludGVudGlvbmFsbHkgYXZvaWQgaW5qZWN0aW5nXG4gIC8vIGdlbmVyaWMgcGFyYW1ldGVycyBoZXJlIHRvIGtlZXAgcnVudGltZSBsaWdodHdlaWdodCB3aGlsZSBzdGlsbCBlbmFibGluZyBjb21waWxlLXRpbWVcbiAgLy8gZGlzY3JpbWluYXRpb24gaW4gdXNlcmxhbmQgdmlhIGNyZWF0ZVJvdXRlciBnZW5lcmljcy5cbiAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2gsXG4gICAgICBzZWdtZW50czogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZWRSb3V0ZSA9IG1hdGNoLnJvdXRlO1xuXG4gIGNvbnN0IHNlZ21lbnRzOiBQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXSA9IG1hdGNoLnJvdXRlLnJvdXRlcy5tYXAoXG4gICAgKHJvdXRlLCByb3V0ZUluZGV4KSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHByZXBhcmUsXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgICByZXNvdXJjZVBhZ2UsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgc3VzcGVuc2VCb3VuZGFyeSxcbiAgICAgICAgZmFsbGJhY2ssXG4gICAgICB9ID0gcm91dGU7XG4gICAgICBjb25zdCByb3V0ZVNlZ21lbnQgPSBtYXRjaC5yb3V0ZS5yb3V0ZVNlZ21lbnRzPy5bcm91dGVJbmRleF07XG4gICAgICBjb25zdCBwcmV2aW91c1NlZ21lbnQgPSByZXVzZT8ucHJldmlvdXNTZWdtZW50cz8uW3JvdXRlSW5kZXhdO1xuICAgICAgaWYgKFxuICAgICAgICBwcmV2aW91c1NlZ21lbnQ/LnJvdXRlTm9kZSA9PT0gcm91dGUgJiZcbiAgICAgICAgKHJldXNlPy5zYW1lU2VhcmNoID09PSB0cnVlIHx8XG4gICAgICAgICAgcm91dGUucHJlcGFyZVNlYXJjaEJlaGF2aW9yID09PSAncGF0aCcgfHxcbiAgICAgICAgICBwcmVwYXJlID09IG51bGwpICYmXG4gICAgICAgIGFyZVNlZ21lbnRQYXJhbXNFcXVhbChcbiAgICAgICAgICByb3V0ZVNlZ21lbnQ/LnBhcmFtTmFtZXMgPz8gW10sXG4gICAgICAgICAgcmV1c2U/LnByZXZpb3VzUGFyYW1zLFxuICAgICAgICAgIG1hdGNoLnBhcmFtcyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1NlZ21lbnQ7XG4gICAgICB9XG5cbiAgICAgIGxldCBtb2R1bGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKFxuICAgICAgICByZXNvdXJjZVBhZ2UgIT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRNb2R1bGVJZCA9IHJlc291cmNlUGFnZS5nZXRNb2R1bGVJZCgpO1xuICAgICAgICBpZiAodHlwZW9mIHJlc29sdmVkTW9kdWxlSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbW9kdWxlSWQgPSByZXNvbHZlZE1vZHVsZUlkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmVwYXJlU3RhcnRlZEF0ID0gMDtcbiAgICAgIGlmIChpbnN0cnVtZW50YXRpb24gIT0gbnVsbCkge1xuICAgICAgICBwcmVwYXJlU3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtc3RhcnQnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJlcGFyZWRSZXNvdXJjZTogUHJlcGFyZWRSb3V0ZVNlZ21lbnRbJ3ByZXBhcmVkUmVzb3VyY2UnXTtcbiAgICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZWRSZXNvdXJjZSA9IGNyZWF0ZVByZXBhcmVkVmFsdWVSZXNvdXJjZSgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXBhcmUoe1xuICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgICAgIHZhcmlhYmxlczogeyAuLi5tYXRjaC5wYXJhbXMgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyB7fSxcbiAgICAgICAgICAgIHJhd1F1ZXJ5OlxuICAgICAgICAgICAgICBzZWFyY2hTdGF0ZT8ucmF3UXVlcnkgPz8gKHF1ZXJ5IGFzIFJhd1F1ZXJ5IHwgdW5kZWZpbmVkKSA/PyB7fSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHNlYXJjaFN0YXRlPy5maWx0ZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gRWFnZXJseSBldmFsdWF0ZSBwcmVwYXJlIHNvIHRoZSBwcmVwYXJlZCByZXNvdXJjZSBpbW1lZGlhdGVseSByZWZsZWN0c1xuICAgICAgICAvLyBzeW5jIHJlc29sdXRpb24gb3IgYXN5bmMgcGVuZGluZyBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgcm91dGUgc25hcHNob3QuXG4gICAgICAgIGNvbnN0IHByZXBhcmVkTG9hZCA9IHByZXBhcmVkUmVzb3VyY2UubG9hZCgpO1xuXG4gICAgICAgIGlmIChpbnN0cnVtZW50YXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHByZXBhcmVkTG9hZFxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVqZWN0ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByZXBhcmVkTG9hZC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwgJiYgcHJlcGFyZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1jb21wbGV0ZScsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogZmluaXNoZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgICBkdXJhdGlvbk1zOiBmaW5pc2hlZEF0IC0gcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBoYXNQcmVwYXJlZDogZmFsc2UsXG4gICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlUGFnZSAhPSBudWxsICYmIHJlc291cmNlUGFnZS5nZXQoKSA9PSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHJlc291cmNlUGFnZS5sb2FkKCkpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZDogcm91dGUgcmVuZGVyaW5nL2Vycm9yIGJvdW5kYXJpZXMgb3duIHRoZSBmYWlsdXJlLlxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm91dGVOb2RlOiByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZnVsbFBhdGg6IHJvdXRlU2VnbWVudD8uZnVsbFBhdGggPz8gcGF0aCxcbiAgICAgICAgc2VnbWVudEtleTpcbiAgICAgICAgICByb3V0ZVNlZ21lbnQ/LmtleSA/PyBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcGFyYW1OYW1lczogcm91dGVTZWdtZW50Py5wYXJhbU5hbWVzID8/IFtdLFxuICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlSW5kZXgsXG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UsXG4gICAgICAgIHJlZGlyZWN0VG86IG1hdGNoZWRSb3V0ZS5yZWRpcmVjdFRvID8/IG51bGwsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5OiBzdXNwZW5zZUJvdW5kYXJ5ID8/ICdpbmhlcml0JyxcbiAgICAgICAgZmFsbGJhY2ssXG4gICAgICAgIGhpZ2hsaWdodElkOiBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBldmVyeSBhc3luYyBwcmVwYXJlIHJlc291cmNlIGZvciBhIG1hdGNoZWQgcm91dGUgaGllcmFyY2h5LlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gaW5zdHJ1bWVudGF0aW9uIC0gT3B0aW9uYWwgaW5zdHJ1bWVudGF0aW9uIHNpbmsgZm9yIHByZXBhcmUgbGlmZWN5Y2xlIGV2ZW50cy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHdpdGggY29uY3JldGUgcHJlcGFyZWQgdmFsdWVzIGluc3RlYWQgb2YgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZU1hdGNoQXN5bmM8XG4gIFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcm9taXNlPFJlc29sdmVkUHJlcGFyZWRSb3V0ZUNoYWluPFRQYXJhbXMsIFRDb250ZXh0Pj4ge1xuICBjb25zdCBwcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKG1hdGNoLCBxdWVyeSwgaW5zdHJ1bWVudGF0aW9uLCBjb250ZXh0KTtcbiAgY29uc3Qgc2VnbWVudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcmVwYXJlZE1hdGNoLnNlZ21lbnRzLm1hcChcbiAgICAgIGFzeW5jIChyb3V0ZSk6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD4+ID0+IHtcbiAgICAgICAgbGV0IHByZXBhcmVkOiB1bmtub3duO1xuICAgICAgICBpZiAocm91dGUucHJlcGFyZWRSZXNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgcHJlcGFyZWQgPSBhd2FpdCByb3V0ZS5wcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlTm9kZTogcm91dGUucm91dGVOb2RlLFxuICAgICAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHJvdXRlLmZ1bGxQYXRoLFxuICAgICAgICAgIHNlZ21lbnRLZXk6IHJvdXRlLnNlZ21lbnRLZXksXG4gICAgICAgICAgcGFyYW1OYW1lczogcm91dGUucGFyYW1OYW1lcyxcbiAgICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlLnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlZCxcbiAgICAgICAgICByZWRpcmVjdFRvOiByb3V0ZS5yZWRpcmVjdFRvLFxuICAgICAgICAgIHJlbmRlcjogcm91dGUucmVuZGVyLFxuICAgICAgICAgIHJlc291cmNlUGFnZTogcm91dGUucmVzb3VyY2VQYWdlLFxuICAgICAgICAgIHN1c3BlbnNlQm91bmRhcnk6IHJvdXRlLnN1c3BlbnNlQm91bmRhcnksXG4gICAgICAgICAgZmFsbGJhY2s6IHJvdXRlLmZhbGxiYWNrLFxuICAgICAgICAgIGhpZ2hsaWdodElkOiByb3V0ZS5oaWdobGlnaHRJZCxcbiAgICAgICAgICBxdWVyeVNjaGVtYTogcm91dGUucXVlcnlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaDogcHJlcGFyZWRNYXRjaC5tYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSb3V0ZSBoZWxwZXIgdGhhdCBwcmVzZXJ2ZXMgVHlwZVNjcmlwdCBpbmZlcmVuY2UgKGluY2x1ZGluZyBjb25kaXRpb25hbCBxdWVyeS1zY2hlbWEgaW5mZXJlbmNlKS5cbiAqXG4gKiBAcGFyYW0gcm91dGUgLSBSb3V0ZSBkZWZpbml0aW9uIHRvIHJldHVybiB1bmNoYW5nZWQgd2l0aCBpbmZlcnJlZCBnZW5lcmljcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHI8XG4gIFRDb250ZXh0ID0gdW5rbm93bixcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCA9IFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gIFRDaGlsZHJlbiBleHRlbmRzIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZCA9XG4gICAgcmVhZG9ubHkgKFJvdXRlTm9kZSB8IFJlZGlyZWN0KVtdIHwgdW5kZWZpbmVkLFxuPihcbiAgcm91dGU6IFJvdXRlPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeSwgUywgVENoaWxkcmVuPixcbik6IFJvdXRlPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeSwgUywgVENoaWxkcmVuPiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBd0JuRSxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLElBQXVCLEVBQ3ZCLEtBQXdCLEVBQ2YsRUFBRTtJQUNYLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLENBQzVCLFVBQTZCLEVBQzdCLElBQTJCLEVBQzNCLEtBQWdCLEVBQ1AsRUFBRTtJQUNYLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtRQUNwQyxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUdGLFNBQVMsMEJBQTBCLENBQ2pDLGVBQW1ELEVBQ25ELEtBQXlCO0lBRXpCLElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQzVCLE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQUMsTUFBTSxDQUFDO0lBRVQsQ0FBQztBQUNILENBQUM7QUFTRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixNQUE0QixFQUM1QixRQUFpQztJQUVqQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQy9CLE9BQU87Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLElBQUk7Z0JBQ0osTUFBTTthQUNQLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUtELFNBQVMsZ0JBQWdCLENBQ3ZCLFNBQTZCLEVBQzdCLEtBQWEsRUFDYixRQUFpQjtJQUVqQixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDN0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixnQkFBZ0I7SUFDaEIscUJBQXFCO0NBQ2IsQ0FBQztBQVVYLE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQXlDLEVBQ3pDLEtBQStCLEVBQy9CLGVBQXdDLEVBQ3hDLE9BQWtCLEVBQ2xCLEtBQW1DLEVBQ25DLFdBQWdDLEVBQ2hDLFNBQWlDO0lBTWpDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU87WUFDTCxLQUFLO1lBQ0wsUUFBUSxFQUFFLEVBQUU7U0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFFakMsTUFBTSxRQUFRLEdBQXFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDdkUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7UUFDcEIsTUFBTSxFQUNKLElBQUksRUFDSixPQUFPLEVBQ1AsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLGdCQUFnQixFQUNoQixRQUFRLEdBQ1QsR0FBRyxLQUFLLENBQUM7UUFDVixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdELE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELElBQ0UsZUFBZSxFQUFFLFNBQVMsS0FBSyxLQUFLO1lBQ3BDLENBQUMsS0FBSyxFQUFFLFVBQVUsS0FBSyxJQUFJO2dCQUN6QixLQUFLLENBQUMscUJBQXFCLEtBQUssTUFBTTtnQkFDdEMsT0FBTyxJQUFJLElBQUksQ0FBQztZQUNsQixxQkFBcUIsQ0FDbkIsWUFBWSxFQUFFLFVBQVUsSUFBSSxFQUFFLEVBQzlCLEtBQUssRUFBRSxjQUFjLEVBQ3JCLEtBQUssQ0FBQyxNQUFNLENBQ2IsRUFDRCxDQUFDO1lBQ0QsT0FBTyxlQUFlLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksUUFBNEIsQ0FBQztRQUNqQyxJQUNFLFlBQVksSUFBSSxJQUFJO1lBQ3BCLE9BQU8sWUFBWSxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQzlDLENBQUM7WUFDRCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwRCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sVUFBVSxHQUNkLFlBQVksRUFBRSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVwRSxJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUM1QixnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDOUIsMEJBQTBCLENBQUMsZUFBZSxFQUFFO2dCQUMxQyxJQUFJLEVBQUUsZUFBZTtnQkFDckIsTUFBTSxFQUFFLGVBQWUsQ0FBQyxNQUFNO2dCQUM5QixTQUFTLEVBQUUsZ0JBQWdCO2dCQUMzQixRQUFRLEVBQUUsZUFBZSxDQUFDLFFBQVE7Z0JBQ2xDLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFFBQVE7YUFDVCxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxnQkFBMEQsQ0FBQztRQUMvRCxJQUFJLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9DLElBQUksaUJBQWlCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzlCLE1BQU0sSUFBSSxLQUFLLENBQ2IsbURBQW1ELFVBQVUsRUFBRSxDQUNoRSxDQUFDO1lBQ0osQ0FBQztZQUNELE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FDakQsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFvQixDQUNwRCxDQUFDO1lBQ0YsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsZ0JBQWdCLEdBQUcsMkJBQTJCLENBQUMsR0FBRyxFQUFFO2dCQUNsRCxPQUFPLGFBQWEsQ0FBQztZQUN2QixDQUFDLENBQUMsQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzdDLElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM1QixZQUFZO3FCQUNULElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ1QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUM5QiwwQkFBMEIsQ0FBQyxlQUFlLEVBQUU7d0JBQzFDLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTt3QkFDOUIsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUTt3QkFDbEMsU0FBUyxFQUFFLElBQUk7d0JBQ2YsUUFBUTt3QkFDUixVQUFVLEVBQUUsVUFBVSxHQUFHLGdCQUFnQjt3QkFDekMsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ1YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUM5QiwwQkFBMEIsQ0FBQyxlQUFlLEVBQUU7d0JBQzFDLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTt3QkFDOUIsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUTt3QkFDbEMsU0FBUyxFQUFFLElBQUk7d0JBQ2YsUUFBUTt3QkFDUixVQUFVLEVBQUUsVUFBVSxHQUFHLGdCQUFnQjt3QkFDekMsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBRXhCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMzQixnQkFBZ0IsR0FBRywyQkFBMkIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2xELE9BQU8sT0FBTyxDQUFDO29CQUNiLEtBQUs7b0JBQ0wsWUFBWTtvQkFDWixPQUFPO29CQUNQLFlBQVk7b0JBRVosU0FBUyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO29CQUM5QixLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUU7b0JBQ2xCLFFBQVEsRUFDTixXQUFXLEVBQUUsUUFBUSxJQUFLLEtBQThCLElBQUksRUFBRTtvQkFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPO2lCQUM5QixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUdILE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1lBRTdDLElBQUksZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUM1QixZQUFZO3FCQUNULElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ1QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUM5QiwwQkFBMEIsQ0FBQyxlQUFlLEVBQUU7d0JBQzFDLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTt3QkFDOUIsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUTt3QkFDbEMsU0FBUyxFQUFFLElBQUk7d0JBQ2YsUUFBUTt3QkFDUixVQUFVLEVBQUUsVUFBVSxHQUFHLGdCQUFnQjt3QkFDekMsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ1YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUM5QiwwQkFBMEIsQ0FBQyxlQUFlLEVBQUU7d0JBQzFDLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTt3QkFDOUIsU0FBUyxFQUFFLFVBQVU7d0JBQ3JCLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUTt3QkFDbEMsU0FBUyxFQUFFLElBQUk7d0JBQ2YsUUFBUTt3QkFDUixVQUFVLEVBQUUsVUFBVSxHQUFHLGdCQUFnQjt3QkFDekMsV0FBVyxFQUFFLElBQUk7d0JBQ2pCLE1BQU0sRUFBRSxVQUFVO3FCQUNuQixDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBRXhCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGVBQWUsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM5QiwwQkFBMEIsQ0FBQyxlQUFlLEVBQUU7Z0JBQzFDLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTTtnQkFDOUIsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCLFFBQVEsRUFBRSxlQUFlLENBQUMsUUFBUTtnQkFDbEMsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsUUFBUTtnQkFDUixVQUFVLEVBQUUsVUFBVSxHQUFHLGdCQUFnQjtnQkFDekMsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFlBQVksSUFBSSxJQUFJLElBQUksWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQztnQkFDSCxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBRWhELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUFDLE1BQU0sQ0FBQztZQUVULENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUk7WUFDSixRQUFRLEVBQUUsWUFBWSxFQUFFLFFBQVEsSUFBSSxJQUFJO1lBQ3hDLFVBQVU7WUFDVixVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVUsSUFBSSxFQUFFO1lBQzFDLFlBQVksRUFBRSxVQUFVO1lBQ3hCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsVUFBVSxFQUFFLFlBQVksQ0FBQyxVQUFVLElBQUksSUFBSTtZQUMzQyxjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWM7WUFDM0MsTUFBTTtZQUNOLFlBQVk7WUFDWixnQkFBZ0IsRUFBRSxnQkFBZ0IsSUFBSSxTQUFTO1lBQy9DLFFBQVE7WUFDUixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7WUFDekQsV0FBVztTQUNaLENBQUM7SUFDSixDQUFDLENBQ0YsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLO1FBQ0wsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDO0FBV0QsTUFBTSxDQUFDLEtBQUssVUFBVSxpQkFBaUIsQ0FJckMsS0FBeUMsRUFDekMsS0FBK0IsRUFDL0IsZUFBd0MsRUFDeEMsT0FBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDaEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ3hCLEtBQUssRUFBRSxLQUFLLEVBQW1ELEVBQUU7UUFDL0QsSUFBSSxRQUFpQixDQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25DLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVE7WUFDUixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDcEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUM7SUFDSixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBRUYsT0FBTztRQUNMLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztRQUMxQixRQUFRO0tBQ1QsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLFVBQVUsQ0FBQyxDQVNmLEtBQW1FO0lBRW5FLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuaW1wb3J0IHR5cGUgeyBIaXN0b3J5TG9jYXRpb25TbmFwc2hvdCB9IGZyb20gJy4vaGlzdG9yeS90eXBlcy5qcyc7XG5cbmltcG9ydCB7XG4gIHR5cGUgRmlsdGVyU2NoZW1hLFxuICB0eXBlIFByZXBhcmVSZXN1bHQsXG4gIHR5cGUgUHJlcGFyZWRSb3V0ZUNoYWluLFxuICB0eXBlIFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJlZGlyZWN0LFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRSb3V0ZUNoYWluLFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQsXG4gIHR5cGUgUm91dGUsXG4gIHR5cGUgUm91dGVOb2RlLFxuICB0eXBlIFJvdXRlckpzb25WYWx1ZSxcbiAgdHlwZSBSb3V0ZXJNYXRjaGVkUm91dGUsXG4gIHR5cGUgUmF3UXVlcnksXG4gIHR5cGUgVW5rbm93bkZpbHRlcnMsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlclByZXBhcmVFdmVudCxcbiAgUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbn0gZnJvbSAnLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlIH0gZnJvbSAnLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIFByZXBhcmVJbnN0cnVtZW50YXRpb24gPSB7XG4gIGVtaXQ6IChldmVudDogUm91dGVyUHJlcGFyZUV2ZW50KSA9PiB2b2lkO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xufTtcblxudHlwZSBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4gPSB7XG4gIHByZXZpb3VzU2VnbWVudHM/OiBQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXTtcbiAgcHJldmlvdXNQYXJhbXM/OiBQYXJhbURhdGE7XG4gIHNhbWVTZWFyY2g/OiBib29sZWFuO1xufTtcblxudHlwZSBQcmVwYXJlU2VhcmNoU3RhdGUgPSB7XG4gIHJhd1F1ZXJ5PzogUmF3UXVlcnk7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbn07XG5cbmV4cG9ydCB0eXBlIFByZXBhcmVIeWRyYXRpb25TdGF0ZSA9IHtcbiAgdmFsdWVzOiBSZWFkb25seU1hcDxzdHJpbmcsIFJvdXRlckpzb25WYWx1ZT47XG4gIGNvbnN1bWVkOiBTZXQ8c3RyaW5nPjtcbn07XG5cbmNvbnN0IGlzUGFyYW1WYWx1ZUVxdWFsID0gKFxuICBsZWZ0OiBQYXJhbURhdGFbc3RyaW5nXSxcbiAgcmlnaHQ6IFBhcmFtRGF0YVtzdHJpbmddLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGxlZnQpIHx8IEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxlZnQpIHx8ICFBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHJpZ2h0W2luZGV4XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG59O1xuXG5jb25zdCBhcmVTZWdtZW50UGFyYW1zRXF1YWwgPSAoXG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBsZWZ0OiBQYXJhbURhdGEgfCB1bmRlZmluZWQsXG4gIHJpZ2h0OiBQYXJhbURhdGEsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHBhcmFtTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGxlZnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFyYW1OYW1lcy5ldmVyeSgocGFyYW1OYW1lKSA9PiB7XG4gICAgcmV0dXJuIGlzUGFyYW1WYWx1ZUVxdWFsKGxlZnRbcGFyYW1OYW1lXSwgcmlnaHRbcGFyYW1OYW1lXSk7XG4gIH0pO1xufTtcblxuLyoqIEVtaXRzIHByZXBhcmUgaW5zdHJ1bWVudGF0aW9uIHdpdGhvdXQgYWxsb3dpbmcgaW5zdHJ1bWVudGF0aW9uIGZhaWx1cmVzIHRvIGFmZmVjdCByb3V0aW5nLiAqL1xuZnVuY3Rpb24gZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oXG4gIGluc3RydW1lbnRhdGlvbjogUHJlcGFyZUluc3RydW1lbnRhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXZlbnQ6IFJvdXRlclByZXBhcmVFdmVudCxcbik6IHZvaWQge1xuICBpZiAoaW5zdHJ1bWVudGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBpbnN0cnVtZW50YXRpb24uZW1pdChldmVudCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEluc3RydW1lbnRhdGlvbiBtdXN0IG5ldmVyIGJyZWFrIHJvdXRpbmcgb3IgcHJlcGFyZSBsaWZlY3ljbGUuXG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBIaXN0b3J5TG9jYXRpb25TbmFwc2hvdCxcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG5leHBvcnQgY29uc3QgX190ZXN0VG9vbHMgPSB7XG4gIGJ1aWxkSGlnaGxpZ2h0SWQsXG4gIGFyZVNlZ21lbnRQYXJhbXNFcXVhbCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogUHJlcGFyZXMgYSBtYXRjaGVkIHJvdXRlIGJ5IGV4ZWN1dGluZyBgcHJlcGFyZWAgY2FsbGJhY2tzIGFuZCByZXNvbHZpbmcgcmVzb3VyY2UgcGFnZXMuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHJlYWR5IGZvciB0aGUgcmVuZGVyZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSwgVENvbnRleHQgPSB1bmtub3duPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbiAgcmV1c2U/OiBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4sXG4gIHNlYXJjaFN0YXRlPzogUHJlcGFyZVNlYXJjaFN0YXRlLFxuICBoeWRyYXRpb24/OiBQcmVwYXJlSHlkcmF0aW9uU3RhdGUsXG4pOiBQcmVwYXJlZFJvdXRlQ2hhaW48VFBhcmFtcywgVENvbnRleHQ+IHtcbiAgLy8gTk9URTogUnVudGltZSByZXRhaW5zIGEgZ2VuZXJpYyBQcmVwYXJlZFJlc3VsdDsgdHlwZS1sZXZlbCBuYXJyb3dpbmcgaXMgYWNoaWV2ZWQgZXh0ZXJuYWxseVxuICAvLyB0aHJvdWdoIHRoZSByb3V0ZSB1bmlvbiBhbmQgUHJlcGFyZWRBY2Nlc3MgaGVscGVycy4gV2UgaW50ZW50aW9uYWxseSBhdm9pZCBpbmplY3RpbmdcbiAgLy8gZ2VuZXJpYyBwYXJhbWV0ZXJzIGhlcmUgdG8ga2VlcCBydW50aW1lIGxpZ2h0d2VpZ2h0IHdoaWxlIHN0aWxsIGVuYWJsaW5nIGNvbXBpbGUtdGltZVxuICAvLyBkaXNjcmltaW5hdGlvbiBpbiB1c2VybGFuZCB2aWEgY3JlYXRlUm91dGVyIGdlbmVyaWNzLlxuICBpZiAobWF0Y2ggPT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBtYXRjaCxcbiAgICAgIHNlZ21lbnRzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgc2VnbWVudHM6IFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PltdID0gbWF0Y2gucm91dGUucm91dGVzLm1hcChcbiAgICAocm91dGUsIHJvdXRlSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcHJlcGFyZSxcbiAgICAgICAgcHJlcGFyZWRIeWRyYXRpb24sXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgICByZXNvdXJjZVBhZ2UsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgc3VzcGVuc2VCb3VuZGFyeSxcbiAgICAgICAgZmFsbGJhY2ssXG4gICAgICB9ID0gcm91dGU7XG4gICAgICBjb25zdCByb3V0ZVNlZ21lbnQgPSBtYXRjaC5yb3V0ZS5yb3V0ZVNlZ21lbnRzPy5bcm91dGVJbmRleF07XG4gICAgICBjb25zdCBwcmV2aW91c1NlZ21lbnQgPSByZXVzZT8ucHJldmlvdXNTZWdtZW50cz8uW3JvdXRlSW5kZXhdO1xuICAgICAgaWYgKFxuICAgICAgICBwcmV2aW91c1NlZ21lbnQ/LnJvdXRlTm9kZSA9PT0gcm91dGUgJiZcbiAgICAgICAgKHJldXNlPy5zYW1lU2VhcmNoID09PSB0cnVlIHx8XG4gICAgICAgICAgcm91dGUucHJlcGFyZVNlYXJjaEJlaGF2aW9yID09PSAncGF0aCcgfHxcbiAgICAgICAgICBwcmVwYXJlID09IG51bGwpICYmXG4gICAgICAgIGFyZVNlZ21lbnRQYXJhbXNFcXVhbChcbiAgICAgICAgICByb3V0ZVNlZ21lbnQ/LnBhcmFtTmFtZXMgPz8gW10sXG4gICAgICAgICAgcmV1c2U/LnByZXZpb3VzUGFyYW1zLFxuICAgICAgICAgIG1hdGNoLnBhcmFtcyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1NlZ21lbnQ7XG4gICAgICB9XG5cbiAgICAgIGxldCBtb2R1bGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKFxuICAgICAgICByZXNvdXJjZVBhZ2UgIT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRNb2R1bGVJZCA9IHJlc291cmNlUGFnZS5nZXRNb2R1bGVJZCgpO1xuICAgICAgICBpZiAodHlwZW9mIHJlc29sdmVkTW9kdWxlSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbW9kdWxlSWQgPSByZXNvbHZlZE1vZHVsZUlkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBzZWdtZW50S2V5ID1cbiAgICAgICAgcm91dGVTZWdtZW50Py5rZXkgPz8gYnVpbGRIaWdobGlnaHRJZChwYXRoLCByb3V0ZUluZGV4LCBtb2R1bGVJZCk7XG5cbiAgICAgIGxldCBwcmVwYXJlU3RhcnRlZEF0ID0gMDtcbiAgICAgIGlmIChpbnN0cnVtZW50YXRpb24gIT0gbnVsbCkge1xuICAgICAgICBwcmVwYXJlU3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtc3RhcnQnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJlcGFyZWRSZXNvdXJjZTogUHJlcGFyZWRSb3V0ZVNlZ21lbnRbJ3ByZXBhcmVkUmVzb3VyY2UnXTtcbiAgICAgIGlmIChoeWRyYXRpb24/LnZhbHVlcy5oYXMoc2VnbWVudEtleSkgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHByZXBhcmVkSHlkcmF0aW9uID09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgUm91dGVyIGh5ZHJhdGlvbiBzZWdtZW50IGhhcyBubyBwcmVwYXJlZCBjb2RlYzogJHtzZWdtZW50S2V5fWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoeWRyYXRlZFZhbHVlID0gcHJlcGFyZWRIeWRyYXRpb24uZGVzZXJpYWxpemUoXG4gICAgICAgICAgaHlkcmF0aW9uLnZhbHVlcy5nZXQoc2VnbWVudEtleSkgYXMgUm91dGVySnNvblZhbHVlLFxuICAgICAgICApO1xuICAgICAgICBoeWRyYXRpb24uY29uc3VtZWQuYWRkKHNlZ21lbnRLZXkpO1xuICAgICAgICBwcmVwYXJlZFJlc291cmNlID0gY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gaHlkcmF0ZWRWYWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHByZXBhcmVkTG9hZCA9IHByZXBhcmVkUmVzb3VyY2UubG9hZCgpO1xuICAgICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWRcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3JlamVjdGVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWQuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocHJlcGFyZSAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UgPSBjcmVhdGVQcmVwYXJlZFZhbHVlUmVzb3VyY2UoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwcmVwYXJlKHtcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlZFJvdXRlLFxuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgICAgIC8vIEZpeCBPYmplY3QuY3JlYXRlKG51bGwpIGlzc3VlIGluIHBhdGgtdG8tcmVnZXhwXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHsgLi4ubWF0Y2gucGFyYW1zIH0sXG4gICAgICAgICAgICBxdWVyeTogcXVlcnkgPz8ge30sXG4gICAgICAgICAgICByYXdRdWVyeTpcbiAgICAgICAgICAgICAgc2VhcmNoU3RhdGU/LnJhd1F1ZXJ5ID8/IChxdWVyeSBhcyBSYXdRdWVyeSB8IHVuZGVmaW5lZCkgPz8ge30sXG4gICAgICAgICAgICBmaWx0ZXJzOiBzZWFyY2hTdGF0ZT8uZmlsdGVycyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEVhZ2VybHkgZXZhbHVhdGUgcHJlcGFyZSBzbyB0aGUgcHJlcGFyZWQgcmVzb3VyY2UgaW1tZWRpYXRlbHkgcmVmbGVjdHNcbiAgICAgICAgLy8gc3luYyByZXNvbHV0aW9uIG9yIGFzeW5jIHBlbmRpbmcgc3RhdGUgZm9yIHRoZSBjdXJyZW50IHJvdXRlIHNuYXBzaG90LlxuICAgICAgICBjb25zdCBwcmVwYXJlZExvYWQgPSBwcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcblxuICAgICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWRcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3JlamVjdGVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWQuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsICYmIHByZXBhcmUgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgaGFzUHJlcGFyZWQ6IGZhbHNlLFxuICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZVBhZ2UgIT0gbnVsbCAmJiByZXNvdXJjZVBhZ2UuZ2V0KCkgPT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXNvdXJjZVBhZ2UubG9hZCgpKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJvdXRlTm9kZTogcm91dGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGZ1bGxQYXRoOiByb3V0ZVNlZ21lbnQ/LmZ1bGxQYXRoID8/IHBhdGgsXG4gICAgICAgIHNlZ21lbnRLZXksXG4gICAgICAgIHBhcmFtTmFtZXM6IHJvdXRlU2VnbWVudD8ucGFyYW1OYW1lcyA/PyBbXSxcbiAgICAgICAgc2VnbWVudEluZGV4OiByb3V0ZUluZGV4LFxuICAgICAgICBwcmVwYXJlZFJlc291cmNlLFxuICAgICAgICBwcmVwYXJlZEh5ZHJhdGlvbixcbiAgICAgICAgcmVkaXJlY3RUbzogbWF0Y2hlZFJvdXRlLnJlZGlyZWN0VG8gPz8gbnVsbCxcbiAgICAgICAgcmVkaXJlY3RTdGF0dXM6IG1hdGNoZWRSb3V0ZS5yZWRpcmVjdFN0YXR1cyxcbiAgICAgICAgcmVuZGVyLFxuICAgICAgICByZXNvdXJjZVBhZ2UsXG4gICAgICAgIHN1c3BlbnNlQm91bmRhcnk6IHN1c3BlbnNlQm91bmRhcnkgPz8gJ2luaGVyaXQnLFxuICAgICAgICBmYWxsYmFjayxcbiAgICAgICAgaGlnaGxpZ2h0SWQ6IGJ1aWxkSGlnaGxpZ2h0SWQocGF0aCwgcm91dGVJbmRleCwgbW9kdWxlSWQpLFxuICAgICAgICBxdWVyeVNjaGVtYSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHNlZ21lbnRzLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGV2ZXJ5IGFzeW5jIHByZXBhcmUgcmVzb3VyY2UgZm9yIGEgbWF0Y2hlZCByb3V0ZSBoaWVyYXJjaHkuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBpbnN0cnVtZW50YXRpb24gLSBPcHRpb25hbCBpbnN0cnVtZW50YXRpb24gc2luayBmb3IgcHJlcGFyZSBsaWZlY3ljbGUgZXZlbnRzLlxuICogQHBhcmFtIGNvbnRleHQgLSBPcHRpb25hbCByb3V0ZXIgY29udGV4dCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcmV0dXJucyBQcmVwYXJlZCBoaWVyYXJjaHkgd2l0aCBjb25jcmV0ZSBwcmVwYXJlZCB2YWx1ZXMgaW5zdGVhZCBvZiByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlTWF0Y2hBc3luYzxcbiAgVFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbik6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZFJvdXRlQ2hhaW48VFBhcmFtcywgVENvbnRleHQ+PiB7XG4gIGNvbnN0IHByZXBhcmVkTWF0Y2ggPSBwcmVwYXJlTWF0Y2gobWF0Y2gsIHF1ZXJ5LCBpbnN0cnVtZW50YXRpb24sIGNvbnRleHQpO1xuICBjb25zdCBzZWdtZW50cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHByZXBhcmVkTWF0Y2guc2VnbWVudHMubWFwKFxuICAgICAgYXN5bmMgKHJvdXRlKTogUHJvbWlzZTxSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0Pj4gPT4ge1xuICAgICAgICBsZXQgcHJlcGFyZWQ6IHVua25vd247XG4gICAgICAgIGlmIChyb3V0ZS5wcmVwYXJlZFJlc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICBwcmVwYXJlZCA9IGF3YWl0IHJvdXRlLnByZXBhcmVkUmVzb3VyY2UubG9hZCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcm91dGVOb2RlOiByb3V0ZS5yb3V0ZU5vZGUsXG4gICAgICAgICAgcGF0aDogcm91dGUucGF0aCxcbiAgICAgICAgICBmdWxsUGF0aDogcm91dGUuZnVsbFBhdGgsXG4gICAgICAgICAgc2VnbWVudEtleTogcm91dGUuc2VnbWVudEtleSxcbiAgICAgICAgICBwYXJhbU5hbWVzOiByb3V0ZS5wYXJhbU5hbWVzLFxuICAgICAgICAgIHNlZ21lbnRJbmRleDogcm91dGUuc2VnbWVudEluZGV4LFxuICAgICAgICAgIHByZXBhcmVkLFxuICAgICAgICAgIHByZXBhcmVkSHlkcmF0aW9uOiByb3V0ZS5wcmVwYXJlZEh5ZHJhdGlvbixcbiAgICAgICAgICByZWRpcmVjdFRvOiByb3V0ZS5yZWRpcmVjdFRvLFxuICAgICAgICAgIHJlZGlyZWN0U3RhdHVzOiByb3V0ZS5yZWRpcmVjdFN0YXR1cyxcbiAgICAgICAgICByZW5kZXI6IHJvdXRlLnJlbmRlcixcbiAgICAgICAgICByZXNvdXJjZVBhZ2U6IHJvdXRlLnJlc291cmNlUGFnZSxcbiAgICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5OiByb3V0ZS5zdXNwZW5zZUJvdW5kYXJ5LFxuICAgICAgICAgIGZhbGxiYWNrOiByb3V0ZS5mYWxsYmFjayxcbiAgICAgICAgICBoaWdobGlnaHRJZDogcm91dGUuaGlnaGxpZ2h0SWQsXG4gICAgICAgICAgcXVlcnlTY2hlbWE6IHJvdXRlLnF1ZXJ5U2NoZW1hLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2g6IHByZXBhcmVkTWF0Y2gubWF0Y2gsXG4gICAgc2VnbWVudHMsXG4gIH07XG59XG5cbi8qKlxuICogUm91dGUgaGVscGVyIHRoYXQgcHJlc2VydmVzIFR5cGVTY3JpcHQgaW5mZXJlbmNlIChpbmNsdWRpbmcgY29uZGl0aW9uYWwgcXVlcnktc2NoZW1hIGluZmVyZW5jZSkuXG4gKlxuICogQHBhcmFtIHJvdXRlIC0gUm91dGUgZGVmaW5pdGlvbiB0byByZXR1cm4gdW5jaGFuZ2VkIHdpdGggaW5mZXJyZWQgZ2VuZXJpY3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByPFxuICBUQ29udGV4dCA9IHVua25vd24sXG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQgPSBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBTIGV4dGVuZHMgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBUQ2hpbGRyZW4gZXh0ZW5kcyByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW10gfCB1bmRlZmluZWQgPVxuICAgIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZCxcbj4oXG4gIHJvdXRlOiBSb3V0ZTxUQ29udGV4dCwgVFByZXBhcmVkLCBUVmFyaWFibGVzLCBUUXVlcnksIFMsIFRDaGlsZHJlbj4sXG4pOiBSb3V0ZTxUQ29udGV4dCwgVFByZXBhcmVkLCBUVmFyaWFibGVzLCBUUXVlcnksIFMsIFRDaGlsZHJlbj4ge1xuICByZXR1cm4gcm91dGU7XG59XG4iXX0=
@@ -4,7 +4,7 @@ import type { Schema as FilterSchema, InferFilters as InferFilterResult, InferFi
4
4
  import type { Match, MatchFunction, ParamData } from 'path-to-regexp';
5
5
  import type { FlatRoute } from './builder.js';
6
6
  import type { ResourcePage } from './ResourcePage.js';
7
- import type { History, HistoryLocationSnapshot } from './history/types.js';
7
+ import type { History, HistoryLocationSnapshot, RouterNavigation } from './history/types.js';
8
8
  export type MaybePromise<T> = T | Promise<T>;
9
9
  export type RawQueryValue = string | string[];
10
10
  export type RawQuery = Record<string, RawQueryValue>;
@@ -68,6 +68,7 @@ export type FlatRouteInput<TVariables extends ParamData> = {
68
68
  path: string;
69
69
  routeSegments?: FlatRouteSegment[];
70
70
  redirectTo?: string;
71
+ redirectStatus?: RouterRedirectStatus;
71
72
  matchFunction: MatchFunction<TVariables>;
72
73
  routes: RouteNode[];
73
74
  };
@@ -101,7 +102,7 @@ export type RouteRenderOpts<TContext, TPrepared extends PrepareResult, TVariable
101
102
  query: TQueryShape;
102
103
  filters: S extends FilterSchema ? InferFilterResult<S> : UnknownFilters | undefined;
103
104
  };
104
- export type RouteRender<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape, S extends FilterSchema | undefined = FilterSchema | undefined> = BivariantCallback<(opts: RouteRenderOpts<TContext, TPrepared, TVariables, TQueryShape, S>) => ReactElement | null | undefined | Promise<ReactElement | null | undefined>>;
105
+ export type RouteRender<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape, S extends FilterSchema | undefined = FilterSchema | undefined> = BivariantCallback<(opts: RouteRenderOpts<TContext, TPrepared, TVariables, TQueryShape, S>) => ReactElement | null | undefined>;
105
106
  export type PreparedRouteSegment<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
106
107
  routeNode?: RouteNode;
107
108
  path?: string;
@@ -110,8 +111,10 @@ export type PreparedRouteSegment<TContext = unknown, TPrepared extends PrepareRe
110
111
  paramNames: readonly string[];
111
112
  segmentIndex: number;
112
113
  preparedResource?: PreparedValueResource<TPrepared>;
114
+ preparedHydration?: RoutePreparedHydration<TPrepared>;
113
115
  render?: RouteRender<TContext, TPrepared, TVariables, TQueryShape>;
114
116
  redirectTo: string | null;
117
+ redirectStatus?: RouterRedirectStatus;
115
118
  resourcePage?: ResourcePage | null;
116
119
  suspenseBoundary: RouteSuspenseBoundary;
117
120
  fallback?: RouteFallback<TContext>;
@@ -127,7 +130,10 @@ export type PreparedRouteSegmentSnapshot = {
127
130
  paramNames: readonly string[];
128
131
  segmentIndex: number;
129
132
  preparedResource?: PreparedValueResource;
133
+ preparedHydration?: RoutePreparedHydration<unknown>;
134
+ render?: PreparedRouteSegment['render'];
130
135
  redirectTo: string | null;
136
+ redirectStatus?: RouterRedirectStatus;
131
137
  resourcePage?: ResourcePage | null;
132
138
  suspenseBoundary: RouteSuspenseBoundary;
133
139
  fallback?: RouteFallback;
@@ -146,8 +152,10 @@ export type ResolvedPreparedRouteSegment<TContext = unknown, TPrepared extends P
146
152
  paramNames: readonly string[];
147
153
  segmentIndex: number;
148
154
  prepared: TPrepared | undefined;
155
+ preparedHydration?: RoutePreparedHydration<TPrepared>;
149
156
  render?: RouteRender<TContext, TPrepared, TVariables, TQueryShape>;
150
157
  redirectTo: string | null;
158
+ redirectStatus?: RouterRedirectStatus;
151
159
  resourcePage?: ResourcePage | null;
152
160
  suspenseBoundary: RouteSuspenseBoundary;
153
161
  fallback?: RouteFallback<TContext>;
@@ -165,6 +173,8 @@ export type RouteEntry<TVariables extends ParamData, S extends FilterSchema | un
165
173
  context: TContext;
166
174
  location: HistoryLocationSnapshot;
167
175
  route: RouterMatchedRoute<TVariables> | null;
176
+ status: RouterRenderStatus;
177
+ navigation: RouterNavigation;
168
178
  forceRerender: boolean;
169
179
  rawSearch?: string;
170
180
  query: RawQuery;
@@ -173,6 +183,23 @@ export type RouteEntry<TVariables extends ParamData, S extends FilterSchema | un
173
183
  activeQuerySchema?: S;
174
184
  };
175
185
  export type RouterRedirectStatus = 301 | 302;
186
+ export type RouterRenderStatus = 200 | 404;
187
+ export type RouterJsonPrimitive = string | number | boolean | null;
188
+ export type RouterJsonValue = RouterJsonPrimitive | RouterJsonValue[] | {
189
+ [key: string]: RouterJsonValue;
190
+ };
191
+ export type RoutePreparedHydration<TPrepared> = {
192
+ serialize: BivariantCallback<(prepared: TPrepared) => RouterJsonValue>;
193
+ deserialize: (value: RouterJsonValue) => TPrepared;
194
+ };
195
+ export type RouterHydrationSnapshot = {
196
+ version: 1;
197
+ location: HistoryLocationSnapshot;
198
+ segments: {
199
+ key: string;
200
+ prepared: RouterJsonValue;
201
+ }[];
202
+ };
176
203
  export type MatchedRoute<TVariables extends ParamData> = {
177
204
  match: RegExpExecArray;
178
205
  route: FlatRoute<TVariables>;
@@ -183,15 +210,17 @@ export type Redirect = {
183
210
  status?: RouterRedirectStatus;
184
211
  };
185
212
  export type RouteNode = {
186
- children?: readonly (RouteNode | Redirect)[];
187
- path?: string;
188
- prepare?: BivariantCallback<(params: PrepareParams<unknown, ParamData>) => unknown>;
189
- prepareSearchBehavior?: RoutePrepareSearchBehavior;
190
- querySchema?: FilterSchema;
191
- render?: BivariantCallback<(opts: RouteRenderOpts<unknown, unknown>) => ReactElement | null | undefined | Promise<ReactElement | null | undefined>>;
192
- resourcePage?: ResourcePage | null;
193
- suspenseBoundary?: RouteSuspenseBoundary;
194
- fallback?: RouteFallback;
213
+ children?: readonly (RouteNode | Redirect)[] | undefined;
214
+ path?: string | undefined;
215
+ prepare?: BivariantCallback<(params: PrepareParams<unknown, ParamData>) => unknown> | undefined;
216
+ prepareSearchBehavior?: RoutePrepareSearchBehavior | undefined;
217
+ preparedHydration?: RoutePreparedHydration<unknown> | undefined;
218
+ querySchema?: FilterSchema | undefined;
219
+ render?: BivariantCallback<(opts: RouteRenderOpts<unknown, unknown>) => ReactElement | null | undefined> | undefined;
220
+ resourcePage?: ResourcePage | null | undefined;
221
+ status?: RouterRenderStatus | undefined;
222
+ suspenseBoundary?: RouteSuspenseBoundary | undefined;
223
+ fallback?: RouteFallback | undefined;
195
224
  };
196
225
  export type PrepareResult = unknown;
197
226
  export type PrepareParams<TContext, TVariables extends ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape, S extends FilterSchema | undefined = FilterSchema | undefined> = {
@@ -213,9 +242,11 @@ export type Route<TContext, TPrepared extends PrepareResult, TVariables extends
213
242
  fallback?: RouteFallback<TContext>;
214
243
  path?: string;
215
244
  prepare?: RoutePrepare<TContext, TPrepared, TVariables, TQueryShape, S>;
245
+ preparedHydration?: RoutePreparedHydration<TPrepared>;
216
246
  prepareSearchBehavior?: RoutePrepareSearchBehavior;
217
247
  render?: RouteRender<TContext, TPrepared, TVariables, TQueryShape, S>;
218
248
  querySchema?: S;
249
+ status?: RouterRenderStatus;
219
250
  };
220
251
  export type RouteComponentProps<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
221
252
  children: ReactElement;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}