@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.
Files changed (131) hide show
  1. package/README.md +9 -9
  2. package/lib/esm/ResourcePage.d.ts +5 -4
  3. package/lib/esm/ResourcePage.d.ts.map +1 -1
  4. package/lib/esm/ResourcePage.js +5 -2
  5. package/lib/esm/builder.d.ts +5 -5
  6. package/lib/esm/builder.d.ts.map +1 -1
  7. package/lib/esm/builder.js +1 -1
  8. package/lib/esm/history/BrowserHistory.d.ts +2 -2
  9. package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
  10. package/lib/esm/history/BrowserHistory.js +1 -1
  11. package/lib/esm/history/types.d.ts +7 -1
  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 +0 -1
  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 +3 -1
  18. package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
  19. package/lib/esm/instrumentation/adapters/devtoolsBridge.js +12 -7
  20. package/lib/esm/internal/routerLoadState.d.ts +10 -0
  21. package/lib/esm/internal/routerLoadState.d.ts.map +1 -0
  22. package/lib/esm/internal/routerLoadState.js +51 -0
  23. package/lib/esm/internal/routerSearchState.d.ts +11 -0
  24. package/lib/esm/internal/routerSearchState.d.ts.map +1 -0
  25. package/lib/esm/internal/routerSearchState.js +15 -0
  26. package/lib/esm/routing/Link.d.ts +2 -4
  27. package/lib/esm/routing/Link.d.ts.map +1 -1
  28. package/lib/esm/routing/Link.js +6 -28
  29. package/lib/esm/routing/RouteComponentWrapper.d.ts +2 -2
  30. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  31. package/lib/esm/routing/RouteComponentWrapper.js +14 -11
  32. package/lib/esm/routing/RouterRenderer.js +9 -9
  33. package/lib/esm/routing/RoutingContext.d.ts +2 -2
  34. package/lib/esm/routing/RoutingContext.d.ts.map +1 -1
  35. package/lib/esm/routing/RoutingContext.js +1 -1
  36. package/lib/esm/routing/createRouter.d.ts +4 -6
  37. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  38. package/lib/esm/routing/createRouter.js +6 -77
  39. package/lib/esm/routing/createStaticRouter.d.ts +4 -5
  40. package/lib/esm/routing/createStaticRouter.d.ts.map +1 -1
  41. package/lib/esm/routing/createStaticRouter.js +8 -50
  42. package/lib/esm/routing/useFilterDiagnostics.d.ts.map +1 -1
  43. package/lib/esm/routing/useFilterDiagnostics.js +4 -5
  44. package/lib/esm/routing/useFilters.d.ts +0 -5
  45. package/lib/esm/routing/useFilters.d.ts.map +1 -1
  46. package/lib/esm/routing/useFilters.js +12 -30
  47. package/lib/esm/routing/useLocation.d.ts +2 -1
  48. package/lib/esm/routing/useLocation.d.ts.map +1 -1
  49. package/lib/esm/routing/useLocation.js +1 -1
  50. package/lib/esm/routing/usePathname.d.ts.map +1 -1
  51. package/lib/esm/routing/usePathname.js +2 -5
  52. package/lib/esm/routing/useQueryState.d.ts +0 -1
  53. package/lib/esm/routing/useQueryState.d.ts.map +1 -1
  54. package/lib/esm/routing/useQueryState.js +1 -1
  55. package/lib/esm/routing/useRouteTelemetry.d.ts +2 -1
  56. package/lib/esm/routing/useRouteTelemetry.d.ts.map +1 -1
  57. package/lib/esm/routing/useRouteTelemetry.js +1 -1
  58. package/lib/esm/tools/buildCombinedSearch.js +1 -1
  59. package/lib/esm/tools.d.ts +5 -4
  60. package/lib/esm/tools.d.ts.map +1 -1
  61. package/lib/esm/tools.js +2 -5
  62. package/lib/esm/types.d.ts +12 -22
  63. package/lib/esm/types.d.ts.map +1 -1
  64. package/lib/esm/types.js +1 -1
  65. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  66. package/lib/types/ResourcePage.d.ts +5 -4
  67. package/lib/types/ResourcePage.d.ts.map +1 -1
  68. package/lib/types/builder.d.ts +5 -5
  69. package/lib/types/builder.d.ts.map +1 -1
  70. package/lib/types/history/BrowserHistory.d.ts +2 -2
  71. package/lib/types/history/BrowserHistory.d.ts.map +1 -1
  72. package/lib/types/history/types.d.ts +7 -1
  73. package/lib/types/history/types.d.ts.map +1 -1
  74. package/lib/types/instrumentation/Instrumentation.d.ts +0 -1
  75. package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -1
  76. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts +3 -1
  77. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
  78. package/lib/types/internal/routerLoadState.d.ts +10 -0
  79. package/lib/types/internal/routerLoadState.d.ts.map +1 -0
  80. package/lib/types/internal/routerSearchState.d.ts +11 -0
  81. package/lib/types/internal/routerSearchState.d.ts.map +1 -0
  82. package/lib/types/routing/Link.d.ts +2 -4
  83. package/lib/types/routing/Link.d.ts.map +1 -1
  84. package/lib/types/routing/RouteComponentWrapper.d.ts +2 -2
  85. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  86. package/lib/types/routing/RoutingContext.d.ts +2 -2
  87. package/lib/types/routing/RoutingContext.d.ts.map +1 -1
  88. package/lib/types/routing/createRouter.d.ts +4 -6
  89. package/lib/types/routing/createRouter.d.ts.map +1 -1
  90. package/lib/types/routing/createStaticRouter.d.ts +4 -5
  91. package/lib/types/routing/createStaticRouter.d.ts.map +1 -1
  92. package/lib/types/routing/useFilterDiagnostics.d.ts.map +1 -1
  93. package/lib/types/routing/useFilters.d.ts +0 -5
  94. package/lib/types/routing/useFilters.d.ts.map +1 -1
  95. package/lib/types/routing/useLocation.d.ts +2 -1
  96. package/lib/types/routing/useLocation.d.ts.map +1 -1
  97. package/lib/types/routing/usePathname.d.ts.map +1 -1
  98. package/lib/types/routing/useQueryState.d.ts +0 -1
  99. package/lib/types/routing/useQueryState.d.ts.map +1 -1
  100. package/lib/types/routing/useRouteTelemetry.d.ts +2 -1
  101. package/lib/types/routing/useRouteTelemetry.d.ts.map +1 -1
  102. package/lib/types/tools.d.ts +5 -4
  103. package/lib/types/tools.d.ts.map +1 -1
  104. package/lib/types/types.d.ts +12 -22
  105. package/lib/types/types.d.ts.map +1 -1
  106. package/package.json +11 -6
  107. package/lib/esm/routing/RouterPrimitives.stories.d.ts +0 -18
  108. package/lib/esm/routing/RouterPrimitives.stories.d.ts.map +0 -1
  109. package/lib/esm/routing/RouterPrimitives.stories.js +0 -96
  110. package/lib/esm/type-tests/navigation-destination.test-d.d.ts +0 -2
  111. package/lib/esm/type-tests/navigation-destination.test-d.d.ts.map +0 -1
  112. package/lib/esm/type-tests/navigation-destination.test-d.js +0 -74
  113. package/lib/esm/type-tests/query-infer.test-d.d.ts +0 -2
  114. package/lib/esm/type-tests/query-infer.test-d.d.ts.map +0 -1
  115. package/lib/esm/type-tests/query-infer.test-d.js +0 -2
  116. package/lib/esm/type-tests/routes-inference.test-d.d.ts +0 -1
  117. package/lib/esm/type-tests/routes-inference.test-d.d.ts.map +0 -1
  118. package/lib/esm/type-tests/routes-inference.test-d.js +0 -2
  119. package/lib/esm/type-tests/useFilters-typed.test-d.d.ts +0 -2
  120. package/lib/esm/type-tests/useFilters-typed.test-d.d.ts.map +0 -1
  121. package/lib/esm/type-tests/useFilters-typed.test-d.js +0 -33
  122. package/lib/types/routing/RouterPrimitives.stories.d.ts +0 -18
  123. package/lib/types/routing/RouterPrimitives.stories.d.ts.map +0 -1
  124. package/lib/types/type-tests/navigation-destination.test-d.d.ts +0 -2
  125. package/lib/types/type-tests/navigation-destination.test-d.d.ts.map +0 -1
  126. package/lib/types/type-tests/query-infer.test-d.d.ts +0 -2
  127. package/lib/types/type-tests/query-infer.test-d.d.ts.map +0 -1
  128. package/lib/types/type-tests/routes-inference.test-d.d.ts +0 -1
  129. package/lib/types/type-tests/routes-inference.test-d.d.ts.map +0 -1
  130. package/lib/types/type-tests/useFilters-typed.test-d.d.ts +0 -2
  131. package/lib/types/type-tests/useFilters-typed.test-d.d.ts.map +0 -1
package/lib/esm/tools.js CHANGED
@@ -72,7 +72,6 @@ export function prepareMatch(match, query, instrumentation, context, reuse, sear
72
72
  return {
73
73
  match,
74
74
  segments: [],
75
- routes: [],
76
75
  };
77
76
  }
78
77
  const matchedRoute = match.route;
@@ -113,7 +112,7 @@ export function prepareMatch(match, query, instrumentation, context, reuse, sear
113
112
  return prepare({
114
113
  match,
115
114
  matchedRoute,
116
- context: context,
115
+ context,
117
116
  resourcePage,
118
117
  variables: { ...match.params },
119
118
  query: query ?? {},
@@ -200,7 +199,6 @@ export function prepareMatch(match, query, instrumentation, context, reuse, sear
200
199
  return {
201
200
  match,
202
201
  segments,
203
- routes: segments,
204
202
  };
205
203
  }
206
204
  export async function prepareMatchAsync(match, query, instrumentation, context) {
@@ -230,10 +228,9 @@ export async function prepareMatchAsync(match, query, instrumentation, context)
230
228
  return {
231
229
  match: preparedMatch.match,
232
230
  segments,
233
- routes: segments,
234
231
  };
235
232
  }
236
233
  export function r(route) {
237
234
  return route;
238
235
  }
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBbUJuRSxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLElBQXVCLEVBQ3ZCLEtBQXdCLEVBQ2YsRUFBRTtJQUNYLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLENBQzVCLFVBQTZCLEVBQzdCLElBQTJCLEVBQzNCLEtBQWdCLEVBQ1AsRUFBRTtJQUNYLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFD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QUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25DLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVE7WUFDUixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUM7SUFDSixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBRUYsT0FBTztRQUNMLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztRQUMxQixRQUFRO1FBQ1IsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLFVBQVUsQ0FBQyxDQVNmLEtBQW1FO0lBRW5FLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQge1xuICB0eXBlIEZpbHRlclNjaGVtYSxcbiAgdHlwZSBQcmVwYXJlUmVzdWx0LFxuICB0eXBlIFByZXBhcmVkTWF0Y2gsXG4gIHR5cGUgUHJlcGFyZWRNYXRjaFJvdXRlLFxuICB0eXBlIFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJlZGlyZWN0LFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRNYXRjaCxcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJvdXRlLFxuICB0eXBlIFJvdXRlTm9kZSxcbiAgdHlwZSBSb3V0ZXJNYXRjaGVkUm91dGUsXG4gIHR5cGUgUmF3UXVlcnksXG4gIHR5cGUgVW5rbm93bkZpbHRlcnMsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlclByZXBhcmVFdmVudCxcbiAgUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbn0gZnJvbSAnLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlIH0gZnJvbSAnLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIFByZXBhcmVJbnN0cnVtZW50YXRpb24gPSB7XG4gIGVtaXQ6IChldmVudDogUm91dGVyUHJlcGFyZUV2ZW50KSA9PiB2b2lkO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xufTtcblxudHlwZSBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4gPSB7XG4gIHByZXZpb3VzU2VnbWVudHM/OiBQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXTtcbiAgcHJldmlvdXNQYXJhbXM/OiBQYXJhbURhdGE7XG4gIHNhbWVTZWFyY2g/OiBib29sZWFuO1xufTtcblxudHlwZSBQcmVwYXJlU2VhcmNoU3RhdGUgPSB7XG4gIHJhd1F1ZXJ5PzogUmF3UXVlcnk7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbn07XG5cbmNvbnN0IGlzUGFyYW1WYWx1ZUVxdWFsID0gKFxuICBsZWZ0OiBQYXJhbURhdGFbc3RyaW5nXSxcbiAgcmlnaHQ6IFBhcmFtRGF0YVtzdHJpbmddLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGxlZnQpIHx8IEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxlZnQpIHx8ICFBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHJpZ2h0W2luZGV4XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG59O1xuXG5jb25zdCBhcmVTZWdtZW50UGFyYW1zRXF1YWwgPSAoXG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBsZWZ0OiBQYXJhbURhdGEgfCB1bmRlZmluZWQsXG4gIHJpZ2h0OiBQYXJhbURhdGEsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHBhcmFtTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGxlZnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFyYW1OYW1lcy5ldmVyeSgocGFyYW1OYW1lKSA9PiB7XG4gICAgcmV0dXJuIGlzUGFyYW1WYWx1ZUVxdWFsKGxlZnRbcGFyYW1OYW1lXSwgcmlnaHRbcGFyYW1OYW1lXSk7XG4gIH0pO1xufTtcblxuLyoqIEVtaXRzIHByZXBhcmUgaW5zdHJ1bWVudGF0aW9uIHdpdGhvdXQgYWxsb3dpbmcgaW5zdHJ1bWVudGF0aW9uIGZhaWx1cmVzIHRvIGFmZmVjdCByb3V0aW5nLiAqL1xuZnVuY3Rpb24gZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oXG4gIGluc3RydW1lbnRhdGlvbjogUHJlcGFyZUluc3RydW1lbnRhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXZlbnQ6IFJvdXRlclByZXBhcmVFdmVudCxcbik6IHZvaWQge1xuICBpZiAoaW5zdHJ1bWVudGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBpbnN0cnVtZW50YXRpb24uZW1pdChldmVudCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEluc3RydW1lbnRhdGlvbiBtdXN0IG5ldmVyIGJyZWFrIHJvdXRpbmcgb3IgcHJlcGFyZSBsaWZlY3ljbGUuXG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG5leHBvcnQgY29uc3QgX190ZXN0VG9vbHMgPSB7XG4gIGJ1aWxkSGlnaGxpZ2h0SWQsXG4gIGFyZVNlZ21lbnRQYXJhbXNFcXVhbCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogUHJlcGFyZXMgYSBtYXRjaGVkIHJvdXRlIGJ5IGV4ZWN1dGluZyBgcHJlcGFyZWAgY2FsbGJhY2tzIGFuZCByZXNvbHZpbmcgcmVzb3VyY2UgcGFnZXMuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHJlYWR5IGZvciB0aGUgcmVuZGVyZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSwgVENvbnRleHQgPSB1bmtub3duPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbiAgcmV1c2U/OiBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4sXG4gIHNlYXJjaFN0YXRlPzogUHJlcGFyZVNlYXJjaFN0YXRlLFxuKTogUHJlcGFyZWRNYXRjaDxUUGFyYW1zLCBUQ29udGV4dD4ge1xuICAvLyBOT1RFOiBSdW50aW1lIHJldGFpbnMgYSBnZW5lcmljIFByZXBhcmVkUmVzdWx0OyB0eXBlLWxldmVsIG5hcnJvd2luZyBpcyBhY2hpZXZlZCBleHRlcm5hbGx5XG4gIC8vIHRocm91Z2ggdGhlIHJvdXRlIHVuaW9uIGFuZCBQcmVwYXJlZEFjY2VzcyBoZWxwZXJzLiBXZSBpbnRlbnRpb25hbGx5IGF2b2lkIGluamVjdGluZ1xuICAvLyBnZW5lcmljIHBhcmFtZXRlcnMgaGVyZSB0byBrZWVwIHJ1bnRpbWUgbGlnaHR3ZWlnaHQgd2hpbGUgc3RpbGwgZW5hYmxpbmcgY29tcGlsZS10aW1lXG4gIC8vIGRpc2NyaW1pbmF0aW9uIGluIHVzZXJsYW5kIHZpYSBjcmVhdGVSb3V0ZXIgZ2VuZXJpY3MuXG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoLFxuICAgICAgc2VnbWVudHM6IFtdLFxuICAgICAgcm91dGVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgc2VnbWVudHM6IFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PltdID0gbWF0Y2gucm91dGUucm91dGVzLm1hcChcbiAgICAocm91dGUsIHJvdXRlSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcHJlcGFyZSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgcmVuZGVyLFxuICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5LFxuICAgICAgICBmYWxsYmFjayxcbiAgICAgIH0gPSByb3V0ZTtcbiAgICAgIGNvbnN0IHJvdXRlU2VnbWVudCA9IG1hdGNoLnJvdXRlLnJvdXRlU2VnbWVudHM/Lltyb3V0ZUluZGV4XTtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VnbWVudCA9IHJldXNlPy5wcmV2aW91c1NlZ21lbnRzPy5bcm91dGVJbmRleF07XG4gICAgICBpZiAoXG4gICAgICAgIHByZXZpb3VzU2VnbWVudD8ucm91dGVOb2RlID09PSByb3V0ZSAmJlxuICAgICAgICAocmV1c2U/LnNhbWVTZWFyY2ggPT09IHRydWUgfHxcbiAgICAgICAgICByb3V0ZS5wcmVwYXJlU2VhcmNoQmVoYXZpb3IgPT09ICdwYXRoJyB8fFxuICAgICAgICAgIHByZXBhcmUgPT0gbnVsbCkgJiZcbiAgICAgICAgYXJlU2VnbWVudFBhcmFtc0VxdWFsKFxuICAgICAgICAgIHJvdXRlU2VnbWVudD8ucGFyYW1OYW1lcyA/PyBbXSxcbiAgICAgICAgICByZXVzZT8ucHJldmlvdXNQYXJhbXMsXG4gICAgICAgICAgbWF0Y2gucGFyYW1zLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzU2VnbWVudDtcbiAgICAgIH1cblxuICAgICAgbGV0IG1vZHVsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc291cmNlUGFnZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiByZXNvdXJjZVBhZ2UuZ2V0TW9kdWxlSWQgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZXNvbHZlZE1vZHVsZUlkID0gcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkKCk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRNb2R1bGVJZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtb2R1bGVJZCA9IHJlc29sdmVkTW9kdWxlSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHByZXBhcmVTdGFydGVkQXQgPSAwO1xuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVTdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1zdGFydCcsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmVwYXJlZFJlc291cmNlOiBQcmVwYXJlZE1hdGNoUm91dGVbJ3ByZXBhcmVkUmVzb3VyY2UnXTtcbiAgICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZWRSZXNvdXJjZSA9IGNyZWF0ZVByZXBhcmVkVmFsdWVSZXNvdXJjZSgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXBhcmUoe1xuICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0IGFzIFRDb250ZXh0LFxuICAgICAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgICAgIHZhcmlhYmxlczogeyAuLi5tYXRjaC5wYXJhbXMgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyB7fSxcbiAgICAgICAgICAgIHJhd1F1ZXJ5OlxuICAgICAgICAgICAgICBzZWFyY2hTdGF0ZT8ucmF3UXVlcnkgPz8gKHF1ZXJ5IGFzIFJhd1F1ZXJ5IHwgdW5kZWZpbmVkKSA/PyB7fSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHNlYXJjaFN0YXRlPy5maWx0ZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gRWFnZXJseSBldmFsdWF0ZSBwcmVwYXJlIHNvIHRoZSBwcmVwYXJlZCByZXNvdXJjZSBpbW1lZGlhdGVseSByZWZsZWN0c1xuICAgICAgICAvLyBzeW5jIHJlc29sdXRpb24gb3IgYXN5bmMgcGVuZGluZyBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgcm91dGUgc25hcHNob3QuXG4gICAgICAgIGNvbnN0IHByZXBhcmVkTG9hZCA9IHByZXBhcmVkUmVzb3VyY2UubG9hZCgpO1xuXG4gICAgICAgIGlmIChpbnN0cnVtZW50YXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHByZXBhcmVkTG9hZFxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVqZWN0ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByZXBhcmVkTG9hZC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwgJiYgcHJlcGFyZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1jb21wbGV0ZScsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogZmluaXNoZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgICBkdXJhdGlvbk1zOiBmaW5pc2hlZEF0IC0gcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBoYXNQcmVwYXJlZDogZmFsc2UsXG4gICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlUGFnZSAhPSBudWxsICYmIHJlc291cmNlUGFnZS5nZXQoKSA9PSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHJlc291cmNlUGFnZS5sb2FkKCkpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZDogcm91dGUgcmVuZGVyaW5nL2Vycm9yIGJvdW5kYXJpZXMgb3duIHRoZSBmYWlsdXJlLlxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm91dGVOb2RlOiByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZnVsbFBhdGg6IHJvdXRlU2VnbWVudD8uZnVsbFBhdGggPz8gcGF0aCxcbiAgICAgICAgc2VnbWVudEtleTpcbiAgICAgICAgICByb3V0ZVNlZ21lbnQ/LmtleSA/PyBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcGFyYW1OYW1lczogcm91dGVTZWdtZW50Py5wYXJhbU5hbWVzID8/IFtdLFxuICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlSW5kZXgsXG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UsXG4gICAgICAgIHJlZGlyZWN0VG86IG1hdGNoZWRSb3V0ZS5yZWRpcmVjdFRvID8/IG51bGwsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5OiBzdXNwZW5zZUJvdW5kYXJ5ID8/ICdpbmhlcml0JyxcbiAgICAgICAgZmFsbGJhY2ssXG4gICAgICAgIGhpZ2hsaWdodElkOiBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgICByb3V0ZXM6IHNlZ21lbnRzLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGV2ZXJ5IGFzeW5jIHByZXBhcmUgcmVzb3VyY2UgZm9yIGEgbWF0Y2hlZCByb3V0ZSBoaWVyYXJjaHkuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBpbnN0cnVtZW50YXRpb24gLSBPcHRpb25hbCBpbnN0cnVtZW50YXRpb24gc2luayBmb3IgcHJlcGFyZSBsaWZlY3ljbGUgZXZlbnRzLlxuICogQHBhcmFtIGNvbnRleHQgLSBPcHRpb25hbCByb3V0ZXIgY29udGV4dCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcmV0dXJucyBQcmVwYXJlZCBoaWVyYXJjaHkgd2l0aCBjb25jcmV0ZSBwcmVwYXJlZCB2YWx1ZXMgaW5zdGVhZCBvZiByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlTWF0Y2hBc3luYzxcbiAgVFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbik6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZE1hdGNoPFRQYXJhbXMsIFRDb250ZXh0Pj4ge1xuICBjb25zdCBwcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKG1hdGNoLCBxdWVyeSwgaW5zdHJ1bWVudGF0aW9uLCBjb250ZXh0KTtcbiAgY29uc3Qgc2VnbWVudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcmVwYXJlZE1hdGNoLnNlZ21lbnRzLm1hcChcbiAgICAgIGFzeW5jIChyb3V0ZSk6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD4+ID0+IHtcbiAgICAgICAgbGV0IHByZXBhcmVkOiB1bmtub3duO1xuICAgICAgICBpZiAocm91dGUucHJlcGFyZWRSZXNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgcHJlcGFyZWQgPSBhd2FpdCByb3V0ZS5wcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlTm9kZTogcm91dGUucm91dGVOb2RlLFxuICAgICAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHJvdXRlLmZ1bGxQYXRoLFxuICAgICAgICAgIHNlZ21lbnRLZXk6IHJvdXRlLnNlZ21lbnRLZXksXG4gICAgICAgICAgcGFyYW1OYW1lczogcm91dGUucGFyYW1OYW1lcyxcbiAgICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlLnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlZCxcbiAgICAgICAgICByZWRpcmVjdFRvOiByb3V0ZS5yZWRpcmVjdFRvLFxuICAgICAgICAgIHJlbmRlcjogcm91dGUucmVuZGVyLFxuICAgICAgICAgIHJlc291cmNlUGFnZTogcm91dGUucmVzb3VyY2VQYWdlLFxuICAgICAgICAgIHN1c3BlbnNlQm91bmRhcnk6IHJvdXRlLnN1c3BlbnNlQm91bmRhcnksXG4gICAgICAgICAgZmFsbGJhY2s6IHJvdXRlLmZhbGxiYWNrLFxuICAgICAgICAgIGhpZ2hsaWdodElkOiByb3V0ZS5oaWdobGlnaHRJZCxcbiAgICAgICAgICBxdWVyeVNjaGVtYTogcm91dGUucXVlcnlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaDogcHJlcGFyZWRNYXRjaC5tYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgICByb3V0ZXM6IHNlZ21lbnRzLFxuICB9O1xufVxuXG4vKipcbiAqIFJvdXRlIGhlbHBlciB0aGF0IHByZXNlcnZlcyBUeXBlU2NyaXB0IGluZmVyZW5jZSAoaW5jbHVkaW5nIGNvbmRpdGlvbmFsIHF1ZXJ5LXNjaGVtYSBpbmZlcmVuY2UpLlxuICpcbiAqIEBwYXJhbSByb3V0ZSAtIFJvdXRlIGRlZmluaXRpb24gdG8gcmV0dXJuIHVuY2hhbmdlZCB3aXRoIGluZmVycmVkIGdlbmVyaWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcjxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgVENoaWxkcmVuIGV4dGVuZHMgcmVhZG9ubHkgKFJvdXRlTm9kZSB8IFJlZGlyZWN0KVtdIHwgdW5kZWZpbmVkID1cbiAgICByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW10gfCB1bmRlZmluZWQsXG4+KFxuICByb3V0ZTogUm91dGU8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5LCBTLCBUQ2hpbGRyZW4+LFxuKTogUm91dGU8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5LCBTLCBUQ2hpbGRyZW4+IHtcbiAgcmV0dXJuIHJvdXRlO1xufVxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBbUJuRSxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLElBQXVCLEVBQ3ZCLEtBQXdCLEVBQ2YsRUFBRTtJQUNYLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLENBQzVCLFVBQTZCLEVBQzdCLElBQTJCLEVBQzNCLEtBQWdCLEVBQ1AsRUFBRTtJQUNYLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFD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QUNuQyxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU87WUFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxRQUFRO1lBQ1IsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztTQUMvQixDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQ0YsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7UUFDMUIsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDO0FBT0QsTUFBTSxVQUFVLENBQUMsQ0FTZixLQUFtRTtJQUVuRSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcbmltcG9ydCB0eXBlIHsgSGlzdG9yeUxvY2F0aW9uU25hcHNob3QgfSBmcm9tICcuL2hpc3RvcnkvdHlwZXMuanMnO1xuXG5pbXBvcnQge1xuICB0eXBlIEZpbHRlclNjaGVtYSxcbiAgdHlwZSBQcmVwYXJlUmVzdWx0LFxuICB0eXBlIFByZXBhcmVkUm91dGVDaGFpbixcbiAgdHlwZSBQcmVwYXJlZFJvdXRlU2VnbWVudCxcbiAgdHlwZSBSZWRpcmVjdCxcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVDaGFpbixcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJvdXRlLFxuICB0eXBlIFJvdXRlTm9kZSxcbiAgdHlwZSBSb3V0ZXJNYXRjaGVkUm91dGUsXG4gIHR5cGUgUmF3UXVlcnksXG4gIHR5cGUgVW5rbm93bkZpbHRlcnMsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlclByZXBhcmVFdmVudCxcbiAgUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbn0gZnJvbSAnLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlIH0gZnJvbSAnLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIFByZXBhcmVJbnN0cnVtZW50YXRpb24gPSB7XG4gIGVtaXQ6IChldmVudDogUm91dGVyUHJlcGFyZUV2ZW50KSA9PiB2b2lkO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xufTtcblxudHlwZSBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4gPSB7XG4gIHByZXZpb3VzU2VnbWVudHM/OiBQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXTtcbiAgcHJldmlvdXNQYXJhbXM/OiBQYXJhbURhdGE7XG4gIHNhbWVTZWFyY2g/OiBib29sZWFuO1xufTtcblxudHlwZSBQcmVwYXJlU2VhcmNoU3RhdGUgPSB7XG4gIHJhd1F1ZXJ5PzogUmF3UXVlcnk7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbn07XG5cbmNvbnN0IGlzUGFyYW1WYWx1ZUVxdWFsID0gKFxuICBsZWZ0OiBQYXJhbURhdGFbc3RyaW5nXSxcbiAgcmlnaHQ6IFBhcmFtRGF0YVtzdHJpbmddLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGxlZnQpIHx8IEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxlZnQpIHx8ICFBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHJpZ2h0W2luZGV4XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG59O1xuXG5jb25zdCBhcmVTZWdtZW50UGFyYW1zRXF1YWwgPSAoXG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBsZWZ0OiBQYXJhbURhdGEgfCB1bmRlZmluZWQsXG4gIHJpZ2h0OiBQYXJhbURhdGEsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHBhcmFtTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGxlZnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFyYW1OYW1lcy5ldmVyeSgocGFyYW1OYW1lKSA9PiB7XG4gICAgcmV0dXJuIGlzUGFyYW1WYWx1ZUVxdWFsKGxlZnRbcGFyYW1OYW1lXSwgcmlnaHRbcGFyYW1OYW1lXSk7XG4gIH0pO1xufTtcblxuLyoqIEVtaXRzIHByZXBhcmUgaW5zdHJ1bWVudGF0aW9uIHdpdGhvdXQgYWxsb3dpbmcgaW5zdHJ1bWVudGF0aW9uIGZhaWx1cmVzIHRvIGFmZmVjdCByb3V0aW5nLiAqL1xuZnVuY3Rpb24gZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oXG4gIGluc3RydW1lbnRhdGlvbjogUHJlcGFyZUluc3RydW1lbnRhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXZlbnQ6IFJvdXRlclByZXBhcmVFdmVudCxcbik6IHZvaWQge1xuICBpZiAoaW5zdHJ1bWVudGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBpbnN0cnVtZW50YXRpb24uZW1pdChldmVudCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEluc3RydW1lbnRhdGlvbiBtdXN0IG5ldmVyIGJyZWFrIHJvdXRpbmcgb3IgcHJlcGFyZSBsaWZlY3ljbGUuXG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBIaXN0b3J5TG9jYXRpb25TbmFwc2hvdCxcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG5leHBvcnQgY29uc3QgX190ZXN0VG9vbHMgPSB7XG4gIGJ1aWxkSGlnaGxpZ2h0SWQsXG4gIGFyZVNlZ21lbnRQYXJhbXNFcXVhbCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogUHJlcGFyZXMgYSBtYXRjaGVkIHJvdXRlIGJ5IGV4ZWN1dGluZyBgcHJlcGFyZWAgY2FsbGJhY2tzIGFuZCByZXNvbHZpbmcgcmVzb3VyY2UgcGFnZXMuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHJlYWR5IGZvciB0aGUgcmVuZGVyZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSwgVENvbnRleHQgPSB1bmtub3duPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbiAgcmV1c2U/OiBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4sXG4gIHNlYXJjaFN0YXRlPzogUHJlcGFyZVNlYXJjaFN0YXRlLFxuKTogUHJlcGFyZWRSb3V0ZUNoYWluPFRQYXJhbXMsIFRDb250ZXh0PiB7XG4gIC8vIE5PVEU6IFJ1bnRpbWUgcmV0YWlucyBhIGdlbmVyaWMgUHJlcGFyZWRSZXN1bHQ7IHR5cGUtbGV2ZWwgbmFycm93aW5nIGlzIGFjaGlldmVkIGV4dGVybmFsbHlcbiAgLy8gdGhyb3VnaCB0aGUgcm91dGUgdW5pb24gYW5kIFByZXBhcmVkQWNjZXNzIGhlbHBlcnMuIFdlIGludGVudGlvbmFsbHkgYXZvaWQgaW5qZWN0aW5nXG4gIC8vIGdlbmVyaWMgcGFyYW1ldGVycyBoZXJlIHRvIGtlZXAgcnVudGltZSBsaWdodHdlaWdodCB3aGlsZSBzdGlsbCBlbmFibGluZyBjb21waWxlLXRpbWVcbiAgLy8gZGlzY3JpbWluYXRpb24gaW4gdXNlcmxhbmQgdmlhIGNyZWF0ZVJvdXRlciBnZW5lcmljcy5cbiAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2gsXG4gICAgICBzZWdtZW50czogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZWRSb3V0ZSA9IG1hdGNoLnJvdXRlO1xuXG4gIGNvbnN0IHNlZ21lbnRzOiBQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXSA9IG1hdGNoLnJvdXRlLnJvdXRlcy5tYXAoXG4gICAgKHJvdXRlLCByb3V0ZUluZGV4KSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHByZXBhcmUsXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgICByZXNvdXJjZVBhZ2UsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgc3VzcGVuc2VCb3VuZGFyeSxcbiAgICAgICAgZmFsbGJhY2ssXG4gICAgICB9ID0gcm91dGU7XG4gICAgICBjb25zdCByb3V0ZVNlZ21lbnQgPSBtYXRjaC5yb3V0ZS5yb3V0ZVNlZ21lbnRzPy5bcm91dGVJbmRleF07XG4gICAgICBjb25zdCBwcmV2aW91c1NlZ21lbnQgPSByZXVzZT8ucHJldmlvdXNTZWdtZW50cz8uW3JvdXRlSW5kZXhdO1xuICAgICAgaWYgKFxuICAgICAgICBwcmV2aW91c1NlZ21lbnQ/LnJvdXRlTm9kZSA9PT0gcm91dGUgJiZcbiAgICAgICAgKHJldXNlPy5zYW1lU2VhcmNoID09PSB0cnVlIHx8XG4gICAgICAgICAgcm91dGUucHJlcGFyZVNlYXJjaEJlaGF2aW9yID09PSAncGF0aCcgfHxcbiAgICAgICAgICBwcmVwYXJlID09IG51bGwpICYmXG4gICAgICAgIGFyZVNlZ21lbnRQYXJhbXNFcXVhbChcbiAgICAgICAgICByb3V0ZVNlZ21lbnQ/LnBhcmFtTmFtZXMgPz8gW10sXG4gICAgICAgICAgcmV1c2U/LnByZXZpb3VzUGFyYW1zLFxuICAgICAgICAgIG1hdGNoLnBhcmFtcyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1NlZ21lbnQ7XG4gICAgICB9XG5cbiAgICAgIGxldCBtb2R1bGVJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKFxuICAgICAgICByZXNvdXJjZVBhZ2UgIT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2YgcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRNb2R1bGVJZCA9IHJlc291cmNlUGFnZS5nZXRNb2R1bGVJZCgpO1xuICAgICAgICBpZiAodHlwZW9mIHJlc29sdmVkTW9kdWxlSWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbW9kdWxlSWQgPSByZXNvbHZlZE1vZHVsZUlkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmVwYXJlU3RhcnRlZEF0ID0gMDtcbiAgICAgIGlmIChpbnN0cnVtZW50YXRpb24gIT0gbnVsbCkge1xuICAgICAgICBwcmVwYXJlU3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtc3RhcnQnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJlcGFyZWRSZXNvdXJjZTogUHJlcGFyZWRSb3V0ZVNlZ21lbnRbJ3ByZXBhcmVkUmVzb3VyY2UnXTtcbiAgICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZWRSZXNvdXJjZSA9IGNyZWF0ZVByZXBhcmVkVmFsdWVSZXNvdXJjZSgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXBhcmUoe1xuICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgICAgIHZhcmlhYmxlczogeyAuLi5tYXRjaC5wYXJhbXMgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyB7fSxcbiAgICAgICAgICAgIHJhd1F1ZXJ5OlxuICAgICAgICAgICAgICBzZWFyY2hTdGF0ZT8ucmF3UXVlcnkgPz8gKHF1ZXJ5IGFzIFJhd1F1ZXJ5IHwgdW5kZWZpbmVkKSA/PyB7fSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHNlYXJjaFN0YXRlPy5maWx0ZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gRWFnZXJseSBldmFsdWF0ZSBwcmVwYXJlIHNvIHRoZSBwcmVwYXJlZCByZXNvdXJjZSBpbW1lZGlhdGVseSByZWZsZWN0c1xuICAgICAgICAvLyBzeW5jIHJlc29sdXRpb24gb3IgYXN5bmMgcGVuZGluZyBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgcm91dGUgc25hcHNob3QuXG4gICAgICAgIGNvbnN0IHByZXBhcmVkTG9hZCA9IHByZXBhcmVkUmVzb3VyY2UubG9hZCgpO1xuXG4gICAgICAgIGlmIChpbnN0cnVtZW50YXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHByZXBhcmVkTG9hZFxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVqZWN0ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByZXBhcmVkTG9hZC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwgJiYgcHJlcGFyZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1jb21wbGV0ZScsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogZmluaXNoZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgICBkdXJhdGlvbk1zOiBmaW5pc2hlZEF0IC0gcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBoYXNQcmVwYXJlZDogZmFsc2UsXG4gICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlUGFnZSAhPSBudWxsICYmIHJlc291cmNlUGFnZS5nZXQoKSA9PSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHJlc291cmNlUGFnZS5sb2FkKCkpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZDogcm91dGUgcmVuZGVyaW5nL2Vycm9yIGJvdW5kYXJpZXMgb3duIHRoZSBmYWlsdXJlLlxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm91dGVOb2RlOiByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZnVsbFBhdGg6IHJvdXRlU2VnbWVudD8uZnVsbFBhdGggPz8gcGF0aCxcbiAgICAgICAgc2VnbWVudEtleTpcbiAgICAgICAgICByb3V0ZVNlZ21lbnQ/LmtleSA/PyBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcGFyYW1OYW1lczogcm91dGVTZWdtZW50Py5wYXJhbU5hbWVzID8/IFtdLFxuICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlSW5kZXgsXG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UsXG4gICAgICAgIHJlZGlyZWN0VG86IG1hdGNoZWRSb3V0ZS5yZWRpcmVjdFRvID8/IG51bGwsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5OiBzdXNwZW5zZUJvdW5kYXJ5ID8/ICdpbmhlcml0JyxcbiAgICAgICAgZmFsbGJhY2ssXG4gICAgICAgIGhpZ2hsaWdodElkOiBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBldmVyeSBhc3luYyBwcmVwYXJlIHJlc291cmNlIGZvciBhIG1hdGNoZWQgcm91dGUgaGllcmFyY2h5LlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gaW5zdHJ1bWVudGF0aW9uIC0gT3B0aW9uYWwgaW5zdHJ1bWVudGF0aW9uIHNpbmsgZm9yIHByZXBhcmUgbGlmZWN5Y2xlIGV2ZW50cy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHdpdGggY29uY3JldGUgcHJlcGFyZWQgdmFsdWVzIGluc3RlYWQgb2YgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZU1hdGNoQXN5bmM8XG4gIFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcm9taXNlPFJlc29sdmVkUHJlcGFyZWRSb3V0ZUNoYWluPFRQYXJhbXMsIFRDb250ZXh0Pj4ge1xuICBjb25zdCBwcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKG1hdGNoLCBxdWVyeSwgaW5zdHJ1bWVudGF0aW9uLCBjb250ZXh0KTtcbiAgY29uc3Qgc2VnbWVudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcmVwYXJlZE1hdGNoLnNlZ21lbnRzLm1hcChcbiAgICAgIGFzeW5jIChyb3V0ZSk6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD4+ID0+IHtcbiAgICAgICAgbGV0IHByZXBhcmVkOiB1bmtub3duO1xuICAgICAgICBpZiAocm91dGUucHJlcGFyZWRSZXNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgcHJlcGFyZWQgPSBhd2FpdCByb3V0ZS5wcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlTm9kZTogcm91dGUucm91dGVOb2RlLFxuICAgICAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHJvdXRlLmZ1bGxQYXRoLFxuICAgICAgICAgIHNlZ21lbnRLZXk6IHJvdXRlLnNlZ21lbnRLZXksXG4gICAgICAgICAgcGFyYW1OYW1lczogcm91dGUucGFyYW1OYW1lcyxcbiAgICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlLnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlZCxcbiAgICAgICAgICByZWRpcmVjdFRvOiByb3V0ZS5yZWRpcmVjdFRvLFxuICAgICAgICAgIHJlbmRlcjogcm91dGUucmVuZGVyLFxuICAgICAgICAgIHJlc291cmNlUGFnZTogcm91dGUucmVzb3VyY2VQYWdlLFxuICAgICAgICAgIHN1c3BlbnNlQm91bmRhcnk6IHJvdXRlLnN1c3BlbnNlQm91bmRhcnksXG4gICAgICAgICAgZmFsbGJhY2s6IHJvdXRlLmZhbGxiYWNrLFxuICAgICAgICAgIGhpZ2hsaWdodElkOiByb3V0ZS5oaWdobGlnaHRJZCxcbiAgICAgICAgICBxdWVyeVNjaGVtYTogcm91dGUucXVlcnlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaDogcHJlcGFyZWRNYXRjaC5tYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSb3V0ZSBoZWxwZXIgdGhhdCBwcmVzZXJ2ZXMgVHlwZVNjcmlwdCBpbmZlcmVuY2UgKGluY2x1ZGluZyBjb25kaXRpb25hbCBxdWVyeS1zY2hlbWEgaW5mZXJlbmNlKS5cbiAqXG4gKiBAcGFyYW0gcm91dGUgLSBSb3V0ZSBkZWZpbml0aW9uIHRvIHJldHVybiB1bmNoYW5nZWQgd2l0aCBpbmZlcnJlZCBnZW5lcmljcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHI8XG4gIFRDb250ZXh0ID0gdW5rbm93bixcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCA9IFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gIFRDaGlsZHJlbiBleHRlbmRzIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZCA9XG4gICAgcmVhZG9ubHkgKFJvdXRlTm9kZSB8IFJlZGlyZWN0KVtdIHwgdW5kZWZpbmVkLFxuPihcbiAgcm91dGU6IFJvdXRlPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeSwgUywgVENoaWxkcmVuPixcbik6IFJvdXRlPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeSwgUywgVENoaWxkcmVuPiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
@@ -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 { BrowserHistory } from './history/index.js';
7
+ import type { History, HistoryLocationSnapshot } 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>;
@@ -69,7 +69,7 @@ export type FlatRouteInput<TVariables extends ParamData> = {
69
69
  routeSegments?: FlatRouteSegment[];
70
70
  redirectTo?: string;
71
71
  matchFunction: MatchFunction<TVariables>;
72
- routes: AnyRoute[];
72
+ routes: RouteNode[];
73
73
  };
74
74
  export type FlatRouteSegment = {
75
75
  key: string;
@@ -92,7 +92,6 @@ export type RouteRenderOpts<TContext, TPrepared extends PrepareResult, TVariable
92
92
  Component?: RouteReactComponent;
93
93
  prepared: TPrepared | undefined;
94
94
  preparedSegment: PreparedRouteSegment<TContext, TPrepared, TVariables, TQueryShape>;
95
- preparedRoute: PreparedRouteSegment<TContext, TPrepared, TVariables, TQueryShape>;
96
95
  preparedSegments: PreparedRouteSegments<TContext>;
97
96
  segmentIndex: number;
98
97
  leafSegment: PreparedRouteSegment<TContext>;
@@ -103,7 +102,6 @@ export type RouteRenderOpts<TContext, TPrepared extends PrepareResult, TVariable
103
102
  filters: S extends FilterSchema ? InferFilterResult<S> : UnknownFilters | undefined;
104
103
  };
105
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>>;
106
- export type RouteRenderArgs<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape, S extends FilterSchema | undefined = FilterSchema | undefined> = RouteRenderOpts<TContext, TPrepared, TVariables, TQueryShape, S>;
107
105
  export type PreparedRouteSegment<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
108
106
  routeNode?: RouteNode;
109
107
  path?: string;
@@ -120,7 +118,6 @@ export type PreparedRouteSegment<TContext = unknown, TPrepared extends PrepareRe
120
118
  highlightId?: string;
121
119
  querySchema?: FilterSchema;
122
120
  };
123
- export type PreparedMatchRoute = PreparedRouteSegment;
124
121
  export type PreparedRouteSegments<TContext = unknown> = PreparedRouteSegment<TContext>[];
125
122
  export type PreparedRouteSegmentSnapshot = {
126
123
  routeNode?: RouteNode;
@@ -140,9 +137,7 @@ export type PreparedRouteSegmentSnapshot = {
140
137
  export type PreparedRouteChain<TVariables extends ParamData, TContext = unknown> = {
141
138
  match: RouterMatchedRoute<TVariables> | null;
142
139
  segments: PreparedRouteSegments<TContext>;
143
- routes: PreparedRouteSegments<TContext>;
144
140
  };
145
- export type PreparedMatch<TVariables extends ParamData, TContext = unknown> = PreparedRouteChain<TVariables, TContext>;
146
141
  export type ResolvedPreparedRouteSegment<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
147
142
  routeNode?: RouteNode;
148
143
  path?: string;
@@ -159,19 +154,16 @@ export type ResolvedPreparedRouteSegment<TContext = unknown, TPrepared extends P
159
154
  highlightId?: string;
160
155
  querySchema?: FilterSchema;
161
156
  };
162
- export type ResolvedPreparedMatchRoute = ResolvedPreparedRouteSegment;
163
157
  export type ResolvedPreparedRouteChain<TVariables extends ParamData, TContext = unknown> = {
164
158
  match: RouterMatchedRoute<TVariables> | null;
165
159
  segments: ResolvedPreparedRouteSegment<TContext>[];
166
- routes: ResolvedPreparedRouteSegment<TContext>[];
167
160
  };
168
- export type ResolvedPreparedMatch<TVariables extends ParamData, TContext = unknown> = ResolvedPreparedRouteChain<TVariables, TContext>;
169
161
  export type RouteEntry<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TContext = unknown> = {
170
162
  preparedMatch: PreparedRouteChain<TVariables, TContext>;
171
163
  activeLoadState: RouterActiveLoadState;
172
164
  loadState: RouterLoadState;
173
165
  context: TContext;
174
- location: Location;
166
+ location: HistoryLocationSnapshot;
175
167
  route: RouterMatchedRoute<TVariables> | null;
176
168
  forceRerender: boolean;
177
169
  rawSearch?: string;
@@ -193,13 +185,13 @@ export type Redirect = {
193
185
  export type RouteNode = {
194
186
  children?: readonly (RouteNode | Redirect)[];
195
187
  path?: string;
196
- prepare?: BivariantCallback<(params: PrepareParams<any, any, any>) => unknown>;
188
+ prepare?: BivariantCallback<(params: PrepareParams<unknown, ParamData>) => unknown>;
197
189
  prepareSearchBehavior?: RoutePrepareSearchBehavior;
198
190
  querySchema?: FilterSchema;
199
- render?: BivariantCallback<(opts: RouteRenderOpts<any, any, any, any>) => ReactElement | null | undefined | Promise<ReactElement | null | undefined>>;
191
+ render?: BivariantCallback<(opts: RouteRenderOpts<unknown, unknown>) => ReactElement | null | undefined | Promise<ReactElement | null | undefined>>;
200
192
  resourcePage?: ResourcePage | null;
201
193
  suspenseBoundary?: RouteSuspenseBoundary;
202
- fallback?: RouteFallback<any>;
194
+ fallback?: RouteFallback;
203
195
  };
204
196
  export type PrepareResult = unknown;
205
197
  export type PrepareParams<TContext, TVariables extends ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape, S extends FilterSchema | undefined = FilterSchema | undefined> = {
@@ -242,7 +234,7 @@ export type RoutingContextType<TVariables extends ParamData, S extends FilterSch
242
234
  query?: UnknownQueryShape;
243
235
  filters?: UnknownFilters;
244
236
  }) => string;
245
- history: BrowserHistory;
237
+ history: History;
246
238
  get: () => RouteEntry<TVariables, S, TContext>;
247
239
  preloadCode: (target: PreloadTarget) => void;
248
240
  preload: (target: PreloadTarget) => void;
@@ -256,11 +248,11 @@ export type RoutingContextType<TVariables extends ParamData, S extends FilterSch
256
248
  }) => void;
257
249
  };
258
250
  export type ResourcePageReturn = {
259
- default: ComponentType<any>;
260
- } | ComponentType<any>;
251
+ default: ComponentType<never>;
252
+ } | ComponentType<never>;
261
253
  export type ResourcePageLoader = () => Promise<ResourcePageReturn>;
262
254
  export type PreparedValueResource<TPrepared extends PrepareResult = PrepareResult> = ReadableResource<TPrepared>;
263
- export type InferFilters<S extends FilterSchema | undefined> = S extends FilterSchema ? InferFilterResult<S> : Record<string, never>;
255
+ export type InferFilters<S extends FilterSchema> = InferFilterResult<S>;
264
256
  export type { FilterSchema };
265
257
  export type { InferFilterField as InferField };
266
258
  export type TypedFilterActions<S extends FilterSchema> = {
@@ -277,13 +269,11 @@ export type TypedFilterActions<S extends FilterSchema> = {
277
269
  replace?: boolean;
278
270
  }) => void;
279
271
  };
280
- export type RouteTreeNode = RouteNode;
281
272
  export type UnknownRoute<TContext = unknown> = Route<TContext, unknown>;
282
- export type AnyRoute = RouteNode;
283
273
  export type ChildRouteOf<R> = R extends {
284
274
  children?: readonly (infer C)[];
285
- } ? Extract<C, RouteTreeNode> : never;
286
- export type RouteTreeRouteUnion<R> = R extends RouteTreeNode ? R | RouteTreeRouteUnion<ChildRouteOf<R>> : never;
275
+ } ? Extract<C, RouteNode> : never;
276
+ export type RouteTreeRouteUnion<R> = R extends RouteNode ? R | RouteTreeRouteUnion<ChildRouteOf<R>> : never;
287
277
  export type RouteUnion<Routes extends readonly unknown[]> = RouteTreeRouteUnion<Routes[number]>;
288
278
  type RouteTypeParts<R> = R extends Route<infer TContext, infer TPrepared, infer TVars, infer TQuery, infer TSchema, infer TChildren extends readonly (RouteNode | Redirect)[] | undefined> ? {
289
279
  context: TContext;
@@ -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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"}
package/lib/esm/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUsIEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgRGlhZ25vc3RpYyBhcyBGaWx0ZXJEaWFnbm9zdGljIH0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5L2Vycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFNjaGVtYSBhcyBGaWx0ZXJTY2hlbWEsXG4gIEluZmVyRmlsdGVycyBhcyBJbmZlckZpbHRlclJlc3VsdCxcbiAgSW5mZXJGaWVsZCBhcyBJbmZlckZpbHRlckZpZWxkLFxufSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnkvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBNYXRjaCwgTWF0Y2hGdW5jdGlvbiwgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgdHlwZSB7IEZsYXRSb3V0ZSB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlUGFnZSB9IGZyb20gJy4vUmVzb3VyY2VQYWdlLmpzJztcbmltcG9ydCB0eXBlIHsgQnJvd3Nlckhpc3RvcnkgfSBmcm9tICcuL2hpc3RvcnkvaW5kZXguanMnO1xuXG5leHBvcnQgdHlwZSBNYXliZVByb21pc2U8VD4gPSBUIHwgUHJvbWlzZTxUPjtcbmV4cG9ydCB0eXBlIFJhd1F1ZXJ5VmFsdWUgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbmV4cG9ydCB0eXBlIFJhd1F1ZXJ5ID0gUmVjb3JkPHN0cmluZywgUmF3UXVlcnlWYWx1ZT47XG5leHBvcnQgdHlwZSBVbmtub3duUXVlcnlTaGFwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuZXhwb3J0IHR5cGUgVW5rbm93bkZpbHRlcnMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IHR5cGUgUm91dGVyU3RydWN0dXJlZERlc3RpbmF0aW9uPFxuICBURmlsdGVycyBleHRlbmRzIFVua25vd25GaWx0ZXJzID0gVW5rbm93bkZpbHRlcnMsXG4gIFRRdWVyeSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID0ge1xuICBwYXRobmFtZTogc3RyaW5nO1xuICBmaWx0ZXJzPzogVEZpbHRlcnM7XG4gIHF1ZXJ5PzogVFF1ZXJ5O1xuICBoYXNoPzogc3RyaW5nO1xuICBzZWFyY2g/OiBuZXZlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlckV4cGxpY2l0U2VhcmNoRGVzdGluYXRpb24gPSB7XG4gIHBhdGhuYW1lOiBzdHJpbmc7XG4gIHNlYXJjaD86IHN0cmluZztcbiAgaGFzaD86IHN0cmluZztcbiAgZmlsdGVycz86IG5ldmVyO1xuICBxdWVyeT86IG5ldmVyO1xufTtcblxuLyoqIEEgcm91dGVyIGRlc3RpbmF0aW9uIHdpdGggZWl0aGVyIHN0cnVjdHVyZWQgc3RhdGUgb3IgYW4gZXhwbGljaXQgc2VhcmNoIHN0cmluZy4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlckRlc3RpbmF0aW9uPFxuICBURmlsdGVycyBleHRlbmRzIFVua25vd25GaWx0ZXJzID0gVW5rbm93bkZpbHRlcnMsXG4gIFRRdWVyeSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID1cbiAgfCBSb3V0ZXJTdHJ1Y3R1cmVkRGVzdGluYXRpb248VEZpbHRlcnMsIFRRdWVyeT5cbiAgfCBSb3V0ZXJFeHBsaWNpdFNlYXJjaERlc3RpbmF0aW9uO1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJEZXN0aW5hdGlvbklucHV0PFxuICBURmlsdGVycyBleHRlbmRzIFVua25vd25GaWx0ZXJzID0gVW5rbm93bkZpbHRlcnMsXG4gIFRRdWVyeSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID0gc3RyaW5nIHwgUm91dGVyRGVzdGluYXRpb248VEZpbHRlcnMsIFRRdWVyeT47XG5cbmV4cG9ydCB0eXBlIEFzeW5jUmVzb3VyY2VTdGF0dXMgPSAnaWRsZScgfCAncGVuZGluZycgfCAncmVzb2x2ZWQnIHwgJ3JlamVjdGVkJztcblxuZXhwb3J0IHR5cGUgUm91dGVyQWN0aXZlTG9hZFN0YXR1cyA9IEFzeW5jUmVzb3VyY2VTdGF0dXM7XG5cbmV4cG9ydCB0eXBlIFJvdXRlckFjdGl2ZUxvYWRTdGF0ZSA9IHtcbiAgc3RhdHVzOiBSb3V0ZXJBY3RpdmVMb2FkU3RhdHVzO1xuICBwZW5kaW5nQ291bnQ6IG51bWJlcjtcbiAgcmVqZWN0ZWRDb3VudDogbnVtYmVyO1xuICB2ZXJzaW9uOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJTZWdtZW50TG9hZFN0YXRlID0ge1xuICBwYXRoPzogc3RyaW5nO1xuICBmdWxsUGF0aD86IHN0cmluZztcbiAgc2VnbWVudEluZGV4OiBudW1iZXI7XG4gIHByZXBhcmVTdGF0dXM6IEFzeW5jUmVzb3VyY2VTdGF0dXM7XG4gIGNvZGVTdGF0dXM6IEFzeW5jUmVzb3VyY2VTdGF0dXM7XG4gIHN0YXR1czogUm91dGVyQWN0aXZlTG9hZFN0YXR1cztcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlckxvYWRTdGF0ZSA9IHtcbiAgc3RhdHVzOiBSb3V0ZXJBY3RpdmVMb2FkU3RhdHVzO1xuICBwZW5kaW5nQ291bnQ6IG51bWJlcjtcbiAgcmVqZWN0ZWRDb3VudDogbnVtYmVyO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIHNlZ21lbnRzOiBSb3V0ZXJTZWdtZW50TG9hZFN0YXRlW107XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZVByZXBhcmVTZWFyY2hCZWhhdmlvciA9ICdhbHdheXMnIHwgJ3BhdGgnO1xuXG5leHBvcnQgdHlwZSBSb3V0ZVN1c3BlbnNlQm91bmRhcnkgPSAnaW5oZXJpdCcgfCAnc2VnbWVudCcgfCAnbm9uZSc7XG5cbmV4cG9ydCB0eXBlIFJvdXRlRmFsbGJhY2tBcmdzPFRDb250ZXh0ID0gdW5rbm93bj4gPSB7XG4gIHNlZ21lbnQ6IFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PjtcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxQYXJhbURhdGE+IHwgbnVsbDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZUZhbGxiYWNrPFRDb250ZXh0ID0gdW5rbm93bj4gPVxuICBSZWFjdE5vZGUgfCAoKGFyZ3M6IFJvdXRlRmFsbGJhY2tBcmdzPFRDb250ZXh0PikgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgUmVhZGFibGVSZXNvdXJjZTxUPiA9IHtcbiAgZ2V0OiAoKSA9PiBUIHwgdW5kZWZpbmVkO1xuICBnZXRFcnJvcjogKCkgPT4gdW5rbm93bjtcbiAgZ2V0U3RhdHVzOiAoKSA9PiBBc3luY1Jlc291cmNlU3RhdHVzO1xuICBsb2FkOiAoKSA9PiBQcm9taXNlPFQ+O1xuICByZWFkOiAoKSA9PiBUO1xufTtcblxuLyoqXG4gKiBJbnB1dCB0eXBlIGZvciBjcmVhdGluZyBhIEZsYXRSb3V0ZSBpbnN0YW5jZS5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBGbGF0Um91dGVJbnB1dDxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBVUkwgcGF0aCBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIFBlci1yZW5kZXJlZC1yb3V0ZSBtZXRhZGF0YSBhbGlnbmVkIHdpdGggYHJvdXRlc2AuICovXG4gIHJvdXRlU2VnbWVudHM/OiBGbGF0Um91dGVTZWdtZW50W107XG4gIC8qKiBPcHRpb25hbCByZWRpcmVjdCBkZXN0aW5hdGlvbiBpZiB0aGlzIHJvdXRlIHNob3VsZCByZWRpcmVjdCAqL1xuICByZWRpcmVjdFRvPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdG8gbWF0Y2ggVVJMIHBhdGhzIGFnYWluc3QgdGhpcyByb3V0ZSBwYXR0ZXJuICovXG4gIG1hdGNoRnVuY3Rpb246IE1hdGNoRnVuY3Rpb248VFZhcmlhYmxlcz47XG4gIC8qKiBOZXN0ZWQgcm91dGVzIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIHdpdGhpbiB0aGlzIHJvdXRlICovXG4gIHJvdXRlczogQW55Um91dGVbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEZsYXRSb3V0ZVNlZ21lbnQgPSB7XG4gIC8qKiBTdGFibGUga2V5IGZvciB0aGUgcmVuZGVyZWQgc2VnbWVudCB3aXRoaW4gYSBmbGF0IHJvdXRlIGNoYWluLiAqL1xuICBrZXk6IHN0cmluZztcbiAgLyoqIExvY2FsIHJvdXRlIHBhdGggY29uZmlndXJlZCBvbiB0aGUgcm91dGUgbm9kZS4gKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIEFic29sdXRlIHBhdGggcmVwcmVzZW50ZWQgYnkgdGhpcyBzZWdtZW50LiAqL1xuICBmdWxsUGF0aDogc3RyaW5nO1xuICAvKiogUGFyYW1zIHRoYXQgbWF5IGJlIHJlYWQgYnkgdGhpcyBzZWdtZW50LCBpbmNsdWRpbmcgYW5jZXN0b3IgcGFyYW1zLiAqL1xuICBwYXJhbU5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCBleHRyYWN0ZWQgcGFyYW1ldGVycyBhbmQgbWV0YWRhdGEuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIG1hdGNoIHJlc3VsdCBmcm9tIHBhdGgtdG8tcmVnZXhwICovXG4gIG1hdGNoOiBNYXRjaDxUVmFyaWFibGVzPjtcbiAgLyoqIEV4dHJhY3RlZCBwYXJhbWV0ZXJzIGZyb20gdGhlIFVSTCBwYXRoICovXG4gIHBhcmFtczogVFZhcmlhYmxlcztcbiAgLyoqIFRoZSBtYXRjaGVkIHBhdGggc3RyaW5nICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIFRoZSBmbGF0IHJvdXRlIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcm91dGU6IEZsYXRSb3V0ZTxUVmFyaWFibGVzPjtcbn07XG5cbi8qKlxuICogQSBSZWFjdCBjb21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhIHJvdXRlIGNvbXBvbmVudC5cbiAqIEB0ZW1wbGF0ZSBUUHJvcHMgLSBUaGUgcHJvcHMgdHlwZSBmb3IgdGhlIGNvbXBvbmVudFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVJlYWN0Q29tcG9uZW50PFRQcm9wcyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IChcbiAgcHJvcHM6IFRQcm9wcyxcbikgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuXG50eXBlIEJpdmFyaWFudENhbGxiYWNrPEZuIGV4dGVuZHMgKC4uLmFyZ3M6IG5ldmVyW10pID0+IHVua25vd24+ID0ge1xuICAvLyBQdWJsaWMgcm91dGUgY2FsbGJhY2tzIG5lZWQgdG8gcmVtYWluIGFzc2lnbmFibGUgYWZ0ZXIgdGhlaXIgc2NoZW1hLXNwZWNpZmljXG4gIC8vIHBhcmFtZXRlcnMgYXJlIGVyYXNlZCB0byBSb3V0ZU5vZGUgYnkgcmVjdXJzaXZlIHJvdXRlIGFuZCByb3V0ZXIgaGVscGVycy5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZXRob2Qtc2lnbmF0dXJlLXN0eWxlXG4gIGJpdmFyaWFuY2VIYWNrKC4uLmFyZ3M6IFBhcmFtZXRlcnM8Rm4+KTogUmV0dXJuVHlwZTxGbj47XG59WydiaXZhcmlhbmNlSGFjayddO1xuXG4vKipcbiAqIE9wdGlvbnMgcGFzc2VkIHRvIGEgcm91dGUgcmVuZGVyIGZ1bmN0aW9uLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlUmVuZGVyT3B0czxcbiAgVENvbnRleHQsXG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbj4gPSB7XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRvIHJlbmRlciB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICAvKiogT3B0aW9uYWwgY29tcG9uZW50IHRvIHJlbmRlciAoZnJvbSBSZXNvdXJjZVBhZ2UpICovXG4gIENvbXBvbmVudD86IFJvdXRlUmVhY3RDb21wb25lbnQ7XG4gIC8qKiBEYXRhIHByZXBhcmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24gKi9cbiAgcHJlcGFyZWQ6IFRQcmVwYXJlZCB8IHVuZGVmaW5lZDtcbiAgLyoqIFRoZSBwcmVwYXJlZCBzZWdtZW50IHRoYXQgaXMgYmVpbmcgcmVuZGVyZWQgKi9cbiAgcHJlcGFyZWRTZWdtZW50OiBQcmVwYXJlZFJvdXRlU2VnbWVudDxcbiAgICBUQ29udGV4dCxcbiAgICBUUHJlcGFyZWQsXG4gICAgVFZhcmlhYmxlcyxcbiAgICBUUXVlcnlTaGFwZVxuICA+O1xuICAvKiogQWxpYXMga2VwdCBmb3IgbWlncmF0aW9uIGNvbXBhdGliaWxpdHkgKi9cbiAgcHJlcGFyZWRSb3V0ZTogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8XG4gICAgVENvbnRleHQsXG4gICAgVFByZXBhcmVkLFxuICAgIFRWYXJpYWJsZXMsXG4gICAgVFF1ZXJ5U2hhcGVcbiAgPjtcbiAgLyoqIFRoZSBmdWxsIHByZXBhcmVkIGNoYWluIGZvciB0aGUgY3VycmVudCBtYXRjaCAqL1xuICBwcmVwYXJlZFNlZ21lbnRzOiBQcmVwYXJlZFJvdXRlU2VnbWVudHM8VENvbnRleHQ+O1xuICAvKiogSW5kZXggb2YgdGhlIGN1cnJlbnQgc2VnbWVudCBpbiB0aGUgcHJlcGFyZWQgY2hhaW4gKi9cbiAgc2VnbWVudEluZGV4OiBudW1iZXI7XG4gIC8qKiBUaGUgbGVhZiBzZWdtZW50IG9mIHRoZSBwcmVwYXJlZCBjaGFpbiAqL1xuICBsZWFmU2VnbWVudDogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+O1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIFJvdXRlci1sZXZlbCBjb250ZXh0ICovXG4gIGNvbnRleHQ6IFRDb250ZXh0O1xuICAvKiogUmF3IHF1ZXJ5IG9iamVjdCAoUGhhc2UgMiBnZW5lcmljIHBhcnNpbmcpICovXG4gIHJhd1F1ZXJ5OiBSYXdRdWVyeTtcbiAgLyoqIFJhdyBVUkwgcXVlcnkgdmFsdWVzLiAqL1xuICBxdWVyeTogVFF1ZXJ5U2hhcGU7XG4gIC8qKiBQYXJzZWQgZmlsdGVycyB3aGVuIHRoZSBhY3RpdmUgZGVzdGluYXRpb24gZGVjbGFyZXMgYSBxdWVyeSBzY2hlbWEuICovXG4gIGZpbHRlcnM6IFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWFcbiAgICA/IEluZmVyRmlsdGVyUmVzdWx0PFM+XG4gICAgOiBVbmtub3duRmlsdGVycyB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gcmVuZGVyIGEgcm91dGUgd2l0aCBjdXN0b20gbG9naWMuXG4gKiBAdGVtcGxhdGUgVFByZXBhcmVkIC0gVGhlIHR5cGUgb2YgcHJlcGFyZWQgZGF0YSByZXR1cm5lZCBieSB0aGUgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVSZW5kZXI8XG4gIFRDb250ZXh0LFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4+ID0gQml2YXJpYW50Q2FsbGJhY2s8XG4gIChcbiAgICBvcHRzOiBSb3V0ZVJlbmRlck9wdHM8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5U2hhcGUsIFM+LFxuICApID0+XG4gICAgUmVhY3RFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB8IFByb21pc2U8UmVhY3RFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD5cbj47XG5cbi8qKiBBbGlhcyBmb3IgcmVuZGVyIGFyZ3MgKGtlcHQgZm9yIHB1YmxpYyBBUEkgY2xhcml0eSkuICovXG5leHBvcnQgdHlwZSBSb3V0ZVJlbmRlckFyZ3M8XG4gIFRDb250ZXh0LFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4+ID0gUm91dGVSZW5kZXJPcHRzPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlLCBTPjtcblxuLyoqXG4gKiBBIHNpbmdsZSBhY3RpdmUgcHJlcGFyZWQgcm91dGUgc2VnbWVudCB3aXRoaW4gdGhlIGN1cnJlbnQgcm91dGUgY2hhaW4uXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkUm91dGVTZWdtZW50PFxuICBUQ29udGV4dCA9IHVua25vd24sXG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQgPSBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID0ge1xuICAvKiogVGhlIHJvdXRlIGRlZmluaXRpb24gdGhhdCBwcm9kdWNlZCB0aGlzIHByZXBhcmVkIHNlZ21lbnQgKi9cbiAgcm91dGVOb2RlPzogUm91dGVOb2RlO1xuICAvKiogVGhlIHBhdGggdGhhdCB3YXMgbWF0Y2hlZCAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogQWJzb2x1dGUgcm91dGUgcGF0aCBmb3IgdGhlIGN1cnJlbnQgc2VnbWVudCB3aGVuIGtub3duICovXG4gIGZ1bGxQYXRoPzogc3RyaW5nO1xuICAvKiogU3RhYmxlIGtleSB1c2VkIGZvciByb3V0ZSBzZWdtZW50IHJlY29uY2lsaWF0aW9uLiAqL1xuICBzZWdtZW50S2V5OiBzdHJpbmc7XG4gIC8qKiBQYXJhbXMgdGhhdCBtYXkgYWZmZWN0IHRoaXMgc2VnbWVudC4gKi9cbiAgcGFyYW1OYW1lczogcmVhZG9ubHkgc3RyaW5nW107XG4gIC8qKiBPcmRlciBvZiB0aGUgc2VnbWVudCBpbiB0aGUgYWN0aXZlIHByZXBhcmVkIGNoYWluICovXG4gIHNlZ21lbnRJbmRleDogbnVtYmVyO1xuICAvKiogQXN5bmMgcmVzb3VyY2UgZXhwb3NpbmcgdGhlIHJvdXRlJ3MgcHJlcGFyZWQgdmFsdWUgKi9cbiAgcHJlcGFyZWRSZXNvdXJjZT86IFByZXBhcmVkVmFsdWVSZXNvdXJjZTxUUHJlcGFyZWQ+O1xuICAvKiogQ3VzdG9tIHJlbmRlciBmdW5jdGlvbiBmb3IgdGhpcyByb3V0ZSAqL1xuICByZW5kZXI/OiBSb3V0ZVJlbmRlcjxUQ29udGV4dCwgVFByZXBhcmVkLCBUVmFyaWFibGVzLCBUUXVlcnlTaGFwZT47XG4gIC8qKiBSZWRpcmVjdCBkZXN0aW5hdGlvbiBpZiB0aGlzIHJvdXRlIHNob3VsZCByZWRpcmVjdCAqL1xuICByZWRpcmVjdFRvOiBzdHJpbmcgfCBudWxsO1xuICAvKiogUmVzb3VyY2UgcGFnZSBmb3IgbGF6eS1sb2FkZWQgY29tcG9uZW50cyAqL1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2UgfCBudWxsO1xuICAvKiogQ29udHJvbHMgd2hldGhlciB0aGlzIHNlZ21lbnQgb3ducyBhIGxvY2FsIFN1c3BlbnNlIGJvdW5kYXJ5LiAqL1xuICBzdXNwZW5zZUJvdW5kYXJ5OiBSb3V0ZVN1c3BlbnNlQm91bmRhcnk7XG4gIC8qKiBGYWxsYmFjayB1c2VkIHdoZW4gdGhpcyBzZWdtZW50J3MgbG9jYWwgU3VzcGVuc2UgYm91bmRhcnkgaXMgYWN0aXZlLiAqL1xuICBmYWxsYmFjaz86IFJvdXRlRmFsbGJhY2s8VENvbnRleHQ+O1xuICAvKiogSWRlbnRpZmllciB1c2VkIGJ5IGRldmVsb3BlciB0b29saW5nIHRvIG1hcCByZW5kZXJlZCBET00gcmVnaW9ucyAqL1xuICBoaWdobGlnaHRJZD86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHF1ZXJ5IHNjaGVtYSBkZWNsYXJlZCBieSB0aGUgcm91dGUgc2VnbWVudCAqL1xuICBxdWVyeVNjaGVtYT86IEZpbHRlclNjaGVtYTtcbn07XG5cbi8qKiBCYWNrd2FyZC1jb21wYXRpYmxlIGFsaWFzIGtlcHQgZHVyaW5nIHRoZSBzZWdtZW50LW9yaWVudGVkIG1pZ3JhdGlvbi4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkTWF0Y2hSb3V0ZSA9IFByZXBhcmVkUm91dGVTZWdtZW50O1xuXG5leHBvcnQgdHlwZSBQcmVwYXJlZFJvdXRlU2VnbWVudHM8VENvbnRleHQgPSB1bmtub3duPiA9XG4gIFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PltdO1xuXG5leHBvcnQgdHlwZSBQcmVwYXJlZFJvdXRlU2VnbWVudFNuYXBzaG90ID0ge1xuICByb3V0ZU5vZGU/OiBSb3V0ZU5vZGU7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGZ1bGxQYXRoPzogc3RyaW5nO1xuICBzZWdtZW50S2V5OiBzdHJpbmc7XG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBzZWdtZW50SW5kZXg6IG51bWJlcjtcbiAgcHJlcGFyZWRSZXNvdXJjZT86IFByZXBhcmVkVmFsdWVSZXNvdXJjZTtcbiAgcmVkaXJlY3RUbzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbiAgc3VzcGVuc2VCb3VuZGFyeTogUm91dGVTdXNwZW5zZUJvdW5kYXJ5O1xuICBmYWxsYmFjaz86IFJvdXRlRmFsbGJhY2s7XG4gIGhpZ2hsaWdodElkPzogc3RyaW5nO1xuICBxdWVyeVNjaGVtYT86IEZpbHRlclNjaGVtYTtcbn07XG5cbi8qKlxuICogUmVzdWx0IG9mIHByZXBhcmluZyBhIG1hdGNoZWQgcm91dGUsIGluY2x1ZGluZyB0aGUgb3JkZXJlZCBjaGFpbiBvZiBuZXN0ZWQgYWN0aXZlIHNlZ21lbnRzLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkUm91dGVDaGFpbjxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiA9IHtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBPcmRlcmVkIGFjdGl2ZSBwcmVwYXJlZCBzZWdtZW50cyBmcm9tIG91dGVybW9zdCB0byBpbm5lcm1vc3QgKi9cbiAgc2VnbWVudHM6IFByZXBhcmVkUm91dGVTZWdtZW50czxUQ29udGV4dD47XG4gIC8qKiBCYWNrd2FyZC1jb21wYXRpYmxlIGFsaWFzIGtlcHQgZHVyaW5nIHRoZSBzZWdtZW50LW9yaWVudGVkIG1pZ3JhdGlvbiAqL1xuICByb3V0ZXM6IFByZXBhcmVkUm91dGVTZWdtZW50czxUQ29udGV4dD47XG59O1xuXG4vKiogQmFja3dhcmQtY29tcGF0aWJsZSBhbGlhcyBrZXB0IGR1cmluZyB0aGUgc2VnbWVudC1vcmllbnRlZCBtaWdyYXRpb24uICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZE1hdGNoPFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+ID0gUHJlcGFyZWRSb3V0ZUNoYWluPFRWYXJpYWJsZXMsIFRDb250ZXh0PjtcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZWRQcmVwYXJlZFJvdXRlU2VnbWVudDxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBVbmtub3duUXVlcnlTaGFwZSA9IFVua25vd25RdWVyeVNoYXBlLFxuPiA9IHtcbiAgcm91dGVOb2RlPzogUm91dGVOb2RlO1xuICBwYXRoPzogc3RyaW5nO1xuICBmdWxsUGF0aD86IHN0cmluZztcbiAgc2VnbWVudEtleTogc3RyaW5nO1xuICBwYXJhbU5hbWVzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgc2VnbWVudEluZGV4OiBudW1iZXI7XG4gIHByZXBhcmVkOiBUUHJlcGFyZWQgfCB1bmRlZmluZWQ7XG4gIHJlbmRlcj86IFJvdXRlUmVuZGVyPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlPjtcbiAgcmVkaXJlY3RUbzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbiAgc3VzcGVuc2VCb3VuZGFyeTogUm91dGVTdXNwZW5zZUJvdW5kYXJ5O1xuICBmYWxsYmFjaz86IFJvdXRlRmFsbGJhY2s8VENvbnRleHQ+O1xuICBoaWdobGlnaHRJZD86IHN0cmluZztcbiAgcXVlcnlTY2hlbWE/OiBGaWx0ZXJTY2hlbWE7XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZFByZXBhcmVkTWF0Y2hSb3V0ZSA9IFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQ7XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkUHJlcGFyZWRSb3V0ZUNoYWluPFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+ID0ge1xuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgc2VnbWVudHM6IFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+W107XG4gIHJvdXRlczogUmVzb2x2ZWRQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkUHJlcGFyZWRNYXRjaDxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiA9IFJlc29sdmVkUHJlcGFyZWRSb3V0ZUNoYWluPFRWYXJpYWJsZXMsIFRDb250ZXh0PjtcblxuLyoqXG4gKiBDb21wbGV0ZSByb3V0ZSBlbnRyeSByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgcm91dGVyIHN0YXRlLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlRW50cnk8XG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4gPSB7XG4gIC8qKiBUaGUgcHJlcGFyZWQgbWF0Y2ggd2l0aCBsb2FkZWQgZGF0YSBhbmQgY29tcG9uZW50cyAqL1xuICBwcmVwYXJlZE1hdGNoOiBQcmVwYXJlZFJvdXRlQ2hhaW48VFZhcmlhYmxlcywgVENvbnRleHQ+O1xuICAvKiogR2xvYmFsIGxvYWQgc3RhdGUgZm9yIHRoZSBhY3RpdmUgcm91dGUuICovXG4gIGFjdGl2ZUxvYWRTdGF0ZTogUm91dGVyQWN0aXZlTG9hZFN0YXRlO1xuICAvKiogUGVyLXNlZ21lbnQgbG9hZCBzdGF0ZSBkZXRhaWxzIGZvciB0aGUgYWN0aXZlIHJvdXRlLiAqL1xuICBsb2FkU3RhdGU6IFJvdXRlckxvYWRTdGF0ZTtcbiAgLyoqIFJvdXRlci1sZXZlbCBjb250ZXh0IHJlc29sdmVkIGZvciB0aGlzIGVudHJ5ICovXG4gIGNvbnRleHQ6IFRDb250ZXh0O1xuICAvKiogQ3VycmVudCBicm93c2VyIGxvY2F0aW9uICovXG4gIGxvY2F0aW9uOiBMb2NhdGlvbjtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgcm91dGU6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBXaGV0aGVyIHRvIGZvcmNlIGEgcmUtcmVuZGVyIGV2ZW4gaWYgdGhlIHBhdGggaGFzbid0IGNoYW5nZWQgKi9cbiAgZm9yY2VSZXJlbmRlcjogYm9vbGVhbjtcbiAgLyoqIFJhdyBzZWFyY2ggc3RyaW5nIChxdWVyeSBwYXJ0KSBvZiB0aGUgbG9jYXRpb24gZm9yIGNoYW5nZSBkZXRlY3Rpb24gKi9cbiAgcmF3U2VhcmNoPzogc3RyaW5nO1xuICAvKiogUGFyc2VkIHJhdyBxdWVyeSBwYXJhbWV0ZXJzICh2YWx1ZXMgYWdncmVnYXRlZDsgZHVwbGljYXRlcyA9PiBhcnJheSkgKi9cbiAgcXVlcnk6IFJhd1F1ZXJ5O1xuICAvKiogTGVnYWN5IHR5cGVkUXVlcnkgcmVtb3ZlZCDigJMgdW5pZmllZCBmaWx0ZXJzIGhhbmRsZSB0eXBlZCBhY2Nlc3MgKi9cbiAgLy8gdHlwZWRRdWVyeT86IG5ldmVyO1xuICAvKiogUGFyc2VkIGZpbHRlcnMgb2JqZWN0IGRlcml2ZWQgZnJvbSB0aGUgZGVlcGVzdCBhY3RpdmUgcXVlcnlTY2hlbWEgKGlmIGFueSkgKi9cbiAgZmlsdGVycz86IFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgPyBJbmZlckZpbHRlclJlc3VsdDxTPiA6IFVua25vd25GaWx0ZXJzO1xuICAvKiogRGlhZ25vc3RpY3MgZnJvbSBmaWx0ZXIgcGFyc2luZyAoaWYgYW55KSAqL1xuICBmaWx0ZXJEaWFnbm9zdGljcz86IEZpbHRlckRpYWdub3N0aWNbXTtcbiAgLyoqIERlZXBlc3QgYWN0aXZlIHF1ZXJ5IHNjaGVtYSAoRmlsdGVyU2NoZW1hIGZyb20gQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5KSBmb3IgY3VycmVudCBtYXRjaGVkIHJvdXRlICovXG4gIGFjdGl2ZVF1ZXJ5U2NoZW1hPzogUztcbn07XG5cbi8vIFF1ZXJ5U2NoZW1hICYgZGVzY3JpcHRvcnMgcmVtb3ZlZCAoUGhhc2UgMiB1bmlmaWVkIG1vZGVsKSDigJMgaGlzdG9yaWNhbCB0eXBlcyBpbnRlbnRpb25hbGx5IG9taXR0ZWQuXG5cbi8qKlxuICogSFRUUCBzdGF0dXMgY29kZXMgZm9yIHJlZGlyZWN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyUmVkaXJlY3RTdGF0dXMgPSAzMDEgfCAzMDI7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIG1hdGNoZWQgcm91dGUgd2l0aCByZWdleCBtYXRjaCByZXN1bHQuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGE+ID0ge1xuICAvKiogVGhlIHJlZ2V4IG1hdGNoIHJlc3VsdCAqL1xuICBtYXRjaDogUmVnRXhwRXhlY0FycmF5O1xuICAvKiogVGhlIGZsYXQgcm91dGUgdGhhdCB3YXMgbWF0Y2hlZCAqL1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xufTtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHJvdXRlIHJlZGlyZWN0LlxuICovXG5leHBvcnQgdHlwZSBSZWRpcmVjdCA9IHtcbiAgLyoqIE9wdGlvbmFsIHNvdXJjZSBwYXRoIHBhdHRlcm4gKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIERlc3RpbmF0aW9uIHBhdGggZm9yIHRoZSByZWRpcmVjdCAqL1xuICB0bzogc3RyaW5nO1xuICAvKiogSFRUUCBzdGF0dXMgY29kZSBmb3IgdGhlIHJlZGlyZWN0ICovXG4gIHN0YXR1cz86IFJvdXRlclJlZGlyZWN0U3RhdHVzO1xufTtcblxuLyoqIE1pbmltYWwgZXJhc2VkIHJvdXRlIG5vZGUgc2hhcGUgdXNlZCBieSBydW50aW1lIGhlbHBlcnMgYW5kIHJlY3Vyc2l2ZSByb3V0ZSB0cmVlcy4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlTm9kZSA9IHtcbiAgY2hpbGRyZW4/OiByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW107XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHByZXBhcmU/OiBCaXZhcmlhbnRDYWxsYmFjazxcbiAgICAocGFyYW1zOiBQcmVwYXJlUGFyYW1zPGFueSwgYW55LCBhbnk+KSA9PiB1bmtub3duXG4gID47XG4gIHByZXBhcmVTZWFyY2hCZWhhdmlvcj86IFJvdXRlUHJlcGFyZVNlYXJjaEJlaGF2aW9yO1xuICBxdWVyeVNjaGVtYT86IEZpbHRlclNjaGVtYTtcbiAgcmVuZGVyPzogQml2YXJpYW50Q2FsbGJhY2s8XG4gICAgKFxuICAgICAgb3B0czogUm91dGVSZW5kZXJPcHRzPGFueSwgYW55LCBhbnksIGFueT4sXG4gICAgKSA9PlxuICAgICAgUmVhY3RFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB8IFByb21pc2U8UmVhY3RFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD5cbiAgPjtcbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbiAgc3VzcGVuc2VCb3VuZGFyeT86IFJvdXRlU3VzcGVuc2VCb3VuZGFyeTtcbiAgZmFsbGJhY2s/OiBSb3V0ZUZhbGxiYWNrPGFueT47XG59O1xuXG4vKipcbiAqIEJhc2UgdHlwZSBmb3IgZGF0YSBwcmVwYXJlZCBieSByb3V0ZSBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZVJlc3VsdCA9IHVua25vd247XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24uXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZVBhcmFtczxcbiAgVENvbnRleHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbj4gPSB7XG4gIC8qKiBUaGUgbWF0Y2hlZCByb3V0ZSB3aXRoIGV4dHJhY3RlZCBwYXJhbWV0ZXJzICovXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFZhcmlhYmxlcz47XG4gIC8qKiBUaGUgZmxhdCByb3V0ZSB0aGF0IHdhcyBtYXRjaGVkICovXG4gIG1hdGNoZWRSb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xuICAvKiogUm91dGVyLWxldmVsIGNvbnRleHQgKi9cbiAgY29udGV4dDogVENvbnRleHQ7XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG4gIC8qKiBFeHRyYWN0ZWQgVVJMIHBhcmFtZXRlcnMgKi9cbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICAvKiogUmF3IFVSTCBxdWVyeSB2YWx1ZXMuICovXG4gIHF1ZXJ5OiBUUXVlcnlTaGFwZTtcbiAgLyoqIFJhdyBxdWVyeSB2YWx1ZXMgYmVmb3JlIHNjaGVtYSBwYXJzaW5nLiAqL1xuICByYXdRdWVyeTogUmF3UXVlcnk7XG4gIC8qKiBQYXJzZWQgZmlsdGVycyB3aGVuIHRoaXMgZGVzdGluYXRpb24gZGVjbGFyZXMgYSBxdWVyeSBzY2hlbWEuICovXG4gIGZpbHRlcnM6IFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWFcbiAgICA/IEluZmVyRmlsdGVyUmVzdWx0PFM+XG4gICAgOiBVbmtub3duRmlsdGVycyB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKiBBbGlhcyBmb3IgcHJlcGFyZSBhcmdzIChrZXB0IGZvciBwdWJsaWMgQVBJIGNsYXJpdHkpLiAqL1xuZXhwb3J0IHR5cGUgUm91dGVQcmVwYXJlQXJnczxcbiAgVENvbnRleHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbj4gPSBQcmVwYXJlUGFyYW1zPFRDb250ZXh0LCBUVmFyaWFibGVzLCBUUXVlcnlTaGFwZSwgUz47XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gcHJlcGFyZSBkYXRhIGZvciBhIHJvdXRlIGJlZm9yZSByZW5kZXJpbmcuXG4gKiBAdGVtcGxhdGUgVFByZXBhcmVkIC0gVGhlIHR5cGUgb2YgZGF0YSB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVByZXBhcmU8XG4gIFRDb250ZXh0LFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4+ID0gQml2YXJpYW50Q2FsbGJhY2s8XG4gIChcbiAgICBwYXJhbXM6IFByZXBhcmVQYXJhbXM8VENvbnRleHQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlLCBTPixcbiAgKSA9PiBNYXliZVByb21pc2U8VFByZXBhcmVkPlxuPjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSByb3V0ZSBpbiB0aGUgcm91dGVyLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlPFxuICBUQ29udGV4dCxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBVbmtub3duUXVlcnlTaGFwZSA9IFVua25vd25RdWVyeVNoYXBlLFxuICBTIGV4dGVuZHMgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBUQ2hpbGRyZW4gZXh0ZW5kcyByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW10gfCB1bmRlZmluZWQgPVxuICAgIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZCxcbj4gPSB7XG4gIC8qKlxuICAgKiBOZXN0ZWQgY2hpbGQgcm91dGVzIG9yIHJlZGlyZWN0cy5cbiAgICpcbiAgICogSU1QT1JUQU5UOiBUaGlzIHVzZWQgdG8gYmUgdHlwZWQgYXMgYChSb3V0ZTxhbnksIFByZXBhcmVSZXN1bHQ+IHwgUmVkaXJlY3QpW11gIHdoaWNoXG4gICAqIHdpZGVuZWQgKGVyYXNlZCkgdGhlIGdlbmVyaWMgcGFyYW1ldGVyIHR5cGVzIChub3RhYmx5IHRoZSBgVFZhcmlhYmxlc2Agb2YgZWFjaFxuICAgKiBjaGlsZCkuIFRoYXQgY2F1c2VkIFR5cGVTY3JpcHQgdG8gdHJlYXQgZXZlcnkgY2hpbGQgcm91dGUncyBgcHJlcGFyZWAgY2FsbGJhY2tcbiAgICogYXMgYWNjZXB0aW5nIHRoZSBkZWZhdWx0IGBQYXJhbURhdGFgIHNoYXBlIChlZmZlY3RpdmVseSBgUGFydGlhbDxSZWNvcmQ8c3RyaW5nLHN0cmluZ3xzdHJpbmdbXT4+YCkuXG4gICAqIFdoZW4gdXNlciBjb2RlIHNwZWNpZmllZCBhIG1vcmUgc3BlY2lmaWMgcGFyYW1ldGVyIG9iamVjdCAoZS5nLiBgeyBzbHVnOiBzdHJpbmcgfWApXG4gICAqIGZvciBhIHBhdGggbGlrZSBgOnNsdWdgLCB0aGUgZnVuY3Rpb24gdHlwZSBiZWNhbWUgbm9u4oCRYXNzaWduYWJsZSBiZWNhdXNlIGl0c1xuICAgKiBwYXJhbWV0ZXIgd2FzIHN0cmljdGVyIHRoYW4gdGhlIHdpZGVuZWQgdmVyc2lvbi4gQnkgc3dpdGNoaW5nIHRvIGBBbnlSb3V0ZWAgd2VcbiAgICogcmV0YWluIGBhbnlgIGluIHRoZSBlcmFzZWQgcG9zaXRpb24gaW5zdGVhZCBvZiBhIGNvbmNyZXRlIGBQYXJhbURhdGFgLCB3aGljaFxuICAgKiBhbGxvd3Mgc3RyaWN0ZXIgY2hpbGQgYHZhcmlhYmxlc2Agc2hhcGVzIHdpdGhvdXQgY29uZmxpY3QuXG4gICAqXG4gICAqIFVzaW5nIGBBbnlSb3V0ZWAgcHVycG9zZWx5IHByZXNlcnZlcyBpbmRlcGVuZGVuY2Ugb2YgZWFjaCByb3V0ZSdzIGdlbmVyaWNcbiAgICogcGFyYW1ldGVycyB3aGlsZSBzdGlsbCBrZWVwaW5nIHJ1bnRpbWUgcmVwcmVzZW50YXRpb24gaWRlbnRpY2FsLlxuICAgKi9cbiAgY2hpbGRyZW4/OiBUQ2hpbGRyZW47XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG4gIC8qKiBDb250cm9scyB3aGV0aGVyIHRoaXMgcm91dGUgc2VnbWVudCBvd25zIGEgbG9jYWwgU3VzcGVuc2UgYm91bmRhcnkuICovXG4gIHN1c3BlbnNlQm91bmRhcnk/OiBSb3V0ZVN1c3BlbnNlQm91bmRhcnk7XG4gIC8qKiBGYWxsYmFjayB1c2VkIGJ5IHRoaXMgcm91dGUgc2VnbWVudCB3aGVuIGl0cyBsb2NhbCBTdXNwZW5zZSBib3VuZGFyeSBpcyBhY3RpdmUuICovXG4gIGZhbGxiYWNrPzogUm91dGVGYWxsYmFjazxUQ29udGV4dD47XG4gIC8qKiBVUkwgcGF0aCBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBGdW5jdGlvbiB0byBwcmVwYXJlIGRhdGEgYmVmb3JlIHJlbmRlcmluZyAqL1xuICBwcmVwYXJlPzogUm91dGVQcmVwYXJlPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlLCBTPjtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXRoZXIgdGhpcyByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24gc2hvdWxkIHJ1biBhZ2FpbiB3aGVuIG9ubHlcbiAgICogdGhlIFVSTCBzZWFyY2ggY2hhbmdlcy4gRGVmYXVsdHMgdG8gYGFsd2F5c2AgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcHJlcGFyZVNlYXJjaEJlaGF2aW9yPzogUm91dGVQcmVwYXJlU2VhcmNoQmVoYXZpb3I7XG4gIC8qKiBDdXN0b20gcmVuZGVyIGZ1bmN0aW9uIGZvciB0aGlzIHJvdXRlICovXG4gIHJlbmRlcj86IFJvdXRlUmVuZGVyPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlLCBTPjtcbiAgLyoqIFVuaWZpZWQgc2NoZW1hIChmaWx0ZXIgLyBxdWVyeSkgKi9cbiAgcXVlcnlTY2hlbWE/OiBTO1xufTtcblxuLyoqXG4gKiBQcm9wcyBwYXNzZWQgdG8gUm91dGVDb21wb25lbnQgaW5zdGFuY2VzLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlQ29tcG9uZW50UHJvcHM8XG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbj4gPSB7XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRvIHJlbmRlciAqL1xuICBjaGlsZHJlbjogUmVhY3RFbGVtZW50O1xuICAvKiogUm91dGVyIGNvbnRleHQgY29udGFpbmluZyBuYXZpZ2F0aW9uIGFuZCBzdGF0ZSAqL1xuICByb3V0ZXJDb250ZXh0OiBSb3V0aW5nQ29udGV4dFR5cGU8VFZhcmlhYmxlcywgUywgVFF1ZXJ5U2hhcGU+O1xuICAvKiogVGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gKi9cbiAgcm91dGU6IFJvdXRlPHVua25vd24sIHVua25vd24sIFBhcmFtRGF0YSwgVW5rbm93blF1ZXJ5U2hhcGUsIFM+O1xufTtcblxuLyoqXG4gKiBDYWxsYmFjayBmdW5jdGlvbiBmb3Igcm91dGUgY2hhbmdlcy5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVDYWxsYmFjazxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiA9IChuZXh0RW50cnk6IFJvdXRlRW50cnk8VFZhcmlhYmxlcywgUywgVENvbnRleHQ+KSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBQcmVsb2FkVGFyZ2V0ID0ge1xuICBwYXRobmFtZTogc3RyaW5nO1xuICBzZWFyY2g/OiBzdHJpbmc7XG4gIHNvdXJjZT86IHN0cmluZztcbn07XG5cbi8qKlxuICogUm91dGVyIGNvbnRleHQgdHlwZSB0aGF0IHByb3ZpZGVzIG5hdmlnYXRpb24gYW5kIHN0YXRlIG1hbmFnZW1lbnQuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGluZ0NvbnRleHRUeXBlPFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhLFxuICBTIGV4dGVuZHMgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4gPSB7XG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHF1ZXJ5IHBhcmFtZXRlcnMgYW5kIGZpbHRlcnMgd2l0aCB0aGUgc2NoZW1hIG9mIHRoZSBkZXN0aW5hdGlvblxuICAgKiByb3V0ZS4gVW5saWtlIG5hdmlnYXRlKCksIHRoaXMgb25seSBpbmNsdWRlcyB2YWx1ZXMgc3VwcGxpZWQgYnkgdGhlIGNhbGxlci5cbiAgICovXG4gIGJ1aWxkU2VhcmNoOiAob3B0czoge1xuICAgIHBhdGhuYW1lPzogc3RyaW5nO1xuICAgIHF1ZXJ5PzogVW5rbm93blF1ZXJ5U2hhcGU7XG4gICAgZmlsdGVycz86IFVua25vd25GaWx0ZXJzO1xuICB9KSA9PiBzdHJpbmc7XG4gIC8qKiBCcm93c2VyIGhpc3RvcnkgaW5zdGFuY2UgZm9yIG5hdmlnYXRpb24gKi9cbiAgaGlzdG9yeTogQnJvd3Nlckhpc3Rvcnk7XG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgcm91dGUgZW50cnkgKi9cbiAgZ2V0OiAoKSA9PiBSb3V0ZUVudHJ5PFRWYXJpYWJsZXMsIFMsIFRDb250ZXh0PjtcbiAgLyoqIFByZWxvYWQgY29kZSBmb3IgYSByb3V0ZSB3aXRob3V0IHN0b3JpbmcgdGhlIHJlc3VsdCAqL1xuICBwcmVsb2FkQ29kZTogKHRhcmdldDogUHJlbG9hZFRhcmdldCkgPT4gdm9pZDtcbiAgLyoqIFByZWxvYWQgY29kZSBhbmQgZGF0YSBmb3IgYSByb3V0ZSB3aXRob3V0IHN0b3JpbmcgdGhlIHJlc3VsdCAqL1xuICBwcmVsb2FkOiAodGFyZ2V0OiBQcmVsb2FkVGFyZ2V0KSA9PiB2b2lkO1xuICAvKiogU3Vic2NyaWJlIHRvIHJvdXRlIGNoYW5nZXMgKHNjaGVtYSBkZXJpdmFibGUsIG5vdCBuZWVkZWQgaW4gc2lnbmF0dXJlKSAqL1xuICBzdWJzY3JpYmU6IChcbiAgICBjYWxsYmFjazogU3Vic2NyaWJlQ2FsbGJhY2s8VFZhcmlhYmxlcywgUywgVENvbnRleHQ+LFxuICApID0+ICgpID0+IHZvaWQ7XG4gIC8qKiBOYXZpZ2F0ZSB3aXRoIG9wdGlvbmFsIHBhdGhuYW1lIGFuZCB0eXBlZC9yYXcgcXVlcnkgb2JqZWN0ICovXG4gIG5hdmlnYXRlOiAob3B0czoge1xuICAgIHBhdGhuYW1lPzogc3RyaW5nO1xuICAgIHF1ZXJ5PzogVFF1ZXJ5U2hhcGU7XG4gICAgLyoqIE9wdGlvbmFsIGZpbHRlcnMgb2JqZWN0IHRvIHNlcmlhbGl6ZSB1c2luZyB0aGUgYWN0aXZlIHF1ZXJ5U2NoZW1hICovXG4gICAgZmlsdGVycz86IFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgPyBJbmZlckZpbHRlclJlc3VsdDxTPiA6IFVua25vd25GaWx0ZXJzO1xuICAgIGhhc2g/OiBzdHJpbmc7XG4gICAgcmVwbGFjZT86IGJvb2xlYW47XG4gIH0pID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFJldHVybiB0eXBlIGZvciByZXNvdXJjZSBwYWdlIGxvYWRlcnMuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc291cmNlUGFnZVJldHVybiA9XG4gIHsgZGVmYXVsdDogQ29tcG9uZW50VHlwZTxhbnk+IH0gfCBDb21wb25lbnRUeXBlPGFueT47XG5cbi8qKlxuICogRnVuY3Rpb24gdGhhdCBsb2FkcyBhIHJlc291cmNlIHBhZ2UgY29tcG9uZW50LlxuICovXG5leHBvcnQgdHlwZSBSZXNvdXJjZVBhZ2VMb2FkZXIgPSAoKSA9PiBQcm9taXNlPFJlc291cmNlUGFnZVJldHVybj47XG5cbmV4cG9ydCB0eXBlIFByZXBhcmVkVmFsdWVSZXNvdXJjZTxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCA9IFByZXBhcmVSZXN1bHQsXG4+ID0gUmVhZGFibGVSZXNvdXJjZTxUUHJlcGFyZWQ+O1xuXG4vKiogVXRpbGl0eTogaW5mZXIgZmlsdGVycyB0eXBlIGZvciBhIGdpdmVuIHF1ZXJ5IHNjaGVtYSAqL1xuZXhwb3J0IHR5cGUgSW5mZXJGaWx0ZXJzPFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQ+ID1cbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSA/IEluZmVyRmlsdGVyUmVzdWx0PFM+IDogUmVjb3JkPHN0cmluZywgbmV2ZXI+O1xuXG5leHBvcnQgdHlwZSB7IEZpbHRlclNjaGVtYSB9O1xuXG4vKiogUmUtZXhwb3J0IGhlbHBlciBmaWx0ZXItcXVlcnkgdHlwZSBmb3IgdXNlciBjb252ZW5pZW5jZSAqL1xuZXhwb3J0IHR5cGUgeyBJbmZlckZpbHRlckZpZWxkIGFzIEluZmVyRmllbGQgfTtcblxuLyoqXG4gKiBTdHJvbmdseSB0eXBlZCBmaWx0ZXIgYWN0aW9ucyAoUGhhc2UgMSBiYXNlIHR5cGVzKS4gSW1wbGVtZW50YXRpb24gd2lsbCBiZSB3aXJlZFxuICogaW4gYSBsYXRlciBwaGFzZSB3aGVuIGB1c2VGaWx0ZXJzYCBiZWNvbWVzIGdlbmVyaWMuXG4gKlxuICogUzogU2NoZW1hIHR5cGUgcGFzc2VkIHRvIHRoZSBob29rL3JvdXRlLlxuICovXG5leHBvcnQgdHlwZSBUeXBlZEZpbHRlckFjdGlvbnM8UyBleHRlbmRzIEZpbHRlclNjaGVtYT4gPSB7XG4gIC8qKiBTZXQgb3IgdW5zZXQgKHZhbHVlID0gdW5kZWZpbmVkKSBhIHNwZWNpZmljIG9wZXJhdG9yIHZhbHVlIGZvciBhIGZpZWxkICovXG4gIHNldDogPFxuICAgIEYgZXh0ZW5kcyBrZXlvZiBTICYgc3RyaW5nLFxuICAgIE8gZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxJbmZlckZpbHRlclJlc3VsdDxTPltGXT4gJiBzdHJpbmcsXG4gID4oXG4gICAgZmllbGQ6IEYsXG4gICAgb3BlcmF0b3I6IE8sXG4gICAgdmFsdWU6IE5vbk51bGxhYmxlPEluZmVyRmlsdGVyUmVzdWx0PFM+W0ZdPltPXSB8IHVuZGVmaW5lZCxcbiAgICBvcHRzPzogeyByZXBsYWNlPzogYm9vbGVhbiB9LFxuICApID0+IHZvaWQ7XG4gIC8qKiBSZW1vdmUgYSB3aG9sZSBmaWVsZCBvciBhIHNwZWNpZmljIG9wZXJhdG9yICovXG4gIHJlbW92ZTogPFxuICAgIEYgZXh0ZW5kcyBrZXlvZiBTICYgc3RyaW5nLFxuICAgIE8gZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxJbmZlckZpbHRlclJlc3VsdDxTPltGXT4gJiBzdHJpbmcsXG4gID4oXG4gICAgZmllbGQ6IEYsXG4gICAgb3BlcmF0b3I/OiBPLFxuICAgIG9wdHM/OiB7IHJlcGxhY2U/OiBib29sZWFuIH0sXG4gICkgPT4gdm9pZDtcbiAgLyoqIE1lcmdlIGEgcGFydGlhbCBmaWx0ZXJzIG9iamVjdCAqL1xuICBtZXJnZTogKFxuICAgIHBhdGNoOiBQYXJ0aWFsPEluZmVyRmlsdGVyUmVzdWx0PFM+PixcbiAgICBvcHRzPzogeyByZXBsYWNlPzogYm9vbGVhbiB9LFxuICApID0+IHZvaWQ7XG4gIC8qKiBDbGVhciBhbGwgZmlsdGVycyAqL1xuICBjbGVhcjogKG9wdHM/OiB7IHJlcGxhY2U/OiBib29sZWFuIH0pID0+IHZvaWQ7XG59O1xuXG4vKiogTWluaW1hbCByb3V0ZSBub2RlIHNoYXBlIHVzZWQgYnkgcmVjdXJzaXZlIHRyZWUgdXRpbGl0aWVzLiAqL1xuZXhwb3J0IHR5cGUgUm91dGVUcmVlTm9kZSA9IFJvdXRlTm9kZTtcblxuLyoqXG4gKiBDb252ZW5pZW5jZSB1bWJyZWxsYSByb3V0ZSB0eXBlLlxuICogVXNlZCB3aGVyZSB3ZSBqdXN0IHdhbnQgdG8gY2FycnkgYXJiaXRyYXJ5IHJvdXRlIGdlbmVyaWNzIGZvcndhcmQgd2l0aG91dCBlcmFzdXJlLlxuICovXG5leHBvcnQgdHlwZSBVbmtub3duUm91dGU8VENvbnRleHQgPSB1bmtub3duPiA9IFJvdXRlPFRDb250ZXh0LCB1bmtub3duPjtcblxuLyoqIEJhY2t3YXJkLWNvbXBhdGlibGUgdW1icmVsbGEgcm91dGUgdHlwZS4gKi9cbmV4cG9ydCB0eXBlIEFueVJvdXRlID0gUm91dGVOb2RlO1xuXG4vKiogRXh0cmFjdCBuZXN0ZWQgY2hpbGQgcm91dGUgdW5pb24gZnJvbSBhIHJvdXRlIGRlZmluaXRpb24uICovXG5leHBvcnQgdHlwZSBDaGlsZFJvdXRlT2Y8Uj4gPSBSIGV4dGVuZHMgeyBjaGlsZHJlbj86IHJlYWRvbmx5IChpbmZlciBDKVtdIH1cbiAgPyBFeHRyYWN0PEMsIFJvdXRlVHJlZU5vZGU+XG4gIDogbmV2ZXI7XG5cbi8qKiBSZWN1cnNpdmVseSBmbGF0dGVuIGEgcm91dGUgdHJlZSBpbnRvIGEgcm91dGUgdW5pb24uICovXG5leHBvcnQgdHlwZSBSb3V0ZVRyZWVSb3V0ZVVuaW9uPFI+ID0gUiBleHRlbmRzIFJvdXRlVHJlZU5vZGVcbiAgPyBSIHwgUm91dGVUcmVlUm91dGVVbmlvbjxDaGlsZFJvdXRlT2Y8Uj4+XG4gIDogbmV2ZXI7XG5cbi8qKiBGbGF0dGVuIGEgdHVwbGUgb2Ygcm91dGVzIGludG8gYSByZWN1cnNpdmUgcm91dGUgdW5pb24uICovXG5leHBvcnQgdHlwZSBSb3V0ZVVuaW9uPFJvdXRlcyBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4gPSBSb3V0ZVRyZWVSb3V0ZVVuaW9uPFxuICBSb3V0ZXNbbnVtYmVyXVxuPjtcblxuLyoqIEV4dHJhY3QgdGhlIHByZXBhcmVkIHR5cGUgZnJvbSBhIFJvdXRlICovXG50eXBlIFJvdXRlVHlwZVBhcnRzPFI+ID1cbiAgUiBleHRlbmRzIFJvdXRlPFxuICAgIGluZmVyIFRDb250ZXh0LFxuICAgIGluZmVyIFRQcmVwYXJlZCxcbiAgICBpbmZlciBUVmFycyxcbiAgICBpbmZlciBUUXVlcnksXG4gICAgaW5mZXIgVFNjaGVtYSxcbiAgICBpbmZlciBUQ2hpbGRyZW4gZXh0ZW5kcyByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW10gfCB1bmRlZmluZWRcbiAgPlxuICAgID8ge1xuICAgICAgICBjb250ZXh0OiBUQ29udGV4dDtcbiAgICAgICAgcHJlcGFyZWQ6IFRQcmVwYXJlZDtcbiAgICAgICAgdmFyaWFibGVzOiBUVmFycztcbiAgICAgICAgcXVlcnk6IFRRdWVyeTtcbiAgICAgICAgc2NoZW1hOiBUU2NoZW1hO1xuICAgICAgICBjaGlsZHJlbjogVENoaWxkcmVuO1xuICAgICAgfVxuICAgIDogbmV2ZXI7XG5cbi8qKiBFeHRyYWN0IHRoZSBwcmVwYXJlZCB0eXBlIGZyb20gYSBSb3V0ZSAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZWRPZjxSPiA9IFJvdXRlVHlwZVBhcnRzPFI+WydwcmVwYXJlZCddO1xuLyoqIEV4dHJhY3QgdGhlIHZhcmlhYmxlcyB0eXBlIGZyb20gYSBSb3V0ZSAqL1xuZXhwb3J0IHR5cGUgVmFyaWFibGVzT2Y8Uj4gPSBSb3V0ZVR5cGVQYXJ0czxSPlsndmFyaWFibGVzJ107XG4vKiogRXh0cmFjdCB0aGUgcXVlcnkgc2hhcGUgdHlwZSBmcm9tIGEgUm91dGUgKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U2hhcGVPZjxSPiA9IFJvdXRlVHlwZVBhcnRzPFI+WydxdWVyeSddO1xuXG4vKiogUGF0aCBsaXRlcmFsIHR5cGUgaWYgcHJlc2VudCAqL1xuZXhwb3J0IHR5cGUgUGF0aE9mPFI+ID0gUiBleHRlbmRzIHsgcGF0aD86IGluZmVyIFAgfVxuICA/IFAgZXh0ZW5kcyBzdHJpbmdcbiAgICA/IFBcbiAgICA6IG5ldmVyXG4gIDogbmV2ZXI7XG5cbi8qKiBVbmlvbiBvZiBhbGwgY29uY3JldGUgcGF0aCBzdHJpbmdzIGZyb20gYSB0dXBsZS9hcnJheSBvZiByb3V0ZXMgKHJlY3Vyc2l2ZSkuICovXG5leHBvcnQgdHlwZSBQYXRoc09mPFJvdXRlcyBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4gPSBQYXRoT2Y8XG4gIFJvdXRlVW5pb248Um91dGVzPlxuPjtcblxuLyoqIE1hcCBwYXRoIC0+IHByZXBhcmVkIHR5cGUgdW5pb24gKHBlci1yb3V0ZSBwcmVjaXNpb24gaXMgaW50ZW50aW9uYWxseSBlcmFzZWQgaGVyZSkuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZE1hcDxSb3V0ZXMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gUmVjb3JkPFxuICBQYXRoc09mPFJvdXRlcz4sXG4gIFByZXBhcmVkT2Y8Um91dGVVbmlvbjxSb3V0ZXM+PiB8IHVuZGVmaW5lZFxuPjtcblxuLyoqIE1hcCBwYXRoIC0+IG9yZGVyZWQgcHJlcGFyZWQgc2VnbWVudCB0dXBsZSBvciBhcnJheSBzaGFwZS4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkU2VnbWVudHNNYXA8Um91dGVzIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IFJlY29yZDxcbiAgUGF0aHNPZjxSb3V0ZXM+LFxuICBQcmVwYXJlZFJvdXRlU2VnbWVudFtdXG4+O1xuXG4vKiogTWFwIHBhdGggLT4gcXVlcnkgc2hhcGUgKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5U2hhcGVNYXA8Um91dGVzIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IFJlY29yZDxcbiAgUGF0aHNPZjxSb3V0ZXM+LFxuICBRdWVyeVNoYXBlT2Y8Um91dGVVbmlvbjxSb3V0ZXM+PlxuPjtcblxuLyoqIEV4dHJhY3Qgc2NoZW1hIGZyb20gYSByb3V0ZSAodW5kZWZpbmVkIGlmIGFic2VudCkgKi9cbmV4cG9ydCB0eXBlIFNjaGVtYU9mPFI+ID0gUiBleHRlbmRzIHsgcXVlcnlTY2hlbWE/OiBpbmZlciBTIH1cbiAgPyBTIGV4dGVuZHMgRmlsdGVyU2NoZW1hXG4gICAgPyBTXG4gICAgOiB1bmRlZmluZWRcbiAgOiB1bmRlZmluZWQ7XG5cbi8qKiBGaWx0ZXJzIGluZmVycmVkIGZyb20gdGhlIHJvdXRlJ3Mgc2NoZW1hICovXG5leHBvcnQgdHlwZSBGaWx0ZXJzT2Y8Uj4gPVxuICBTY2hlbWFPZjxSPiBleHRlbmRzIEZpbHRlclNjaGVtYVxuICAgID8gSW5mZXJGaWx0ZXJSZXN1bHQ8U2NoZW1hT2Y8Uj4+XG4gICAgOiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj47XG5cbi8qKiBNYXAgcGF0aCAtPiBpbmZlcnJlZCBmaWx0ZXJzIHR5cGUgKi9cbmV4cG9ydCB0eXBlIEZpbHRlcnNNYXA8Um91dGVzIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IFJlY29yZDxcbiAgUGF0aHNPZjxSb3V0ZXM+LFxuICBGaWx0ZXJzT2Y8Um91dGVVbmlvbjxSb3V0ZXM+PlxuPjtcblxuLyoqIFJ1bnRpbWUgaGVscGVyIGludGVyZmFjZSBhdWdtZW50YXRpb24gZm9yIHJvdXRlciBjb250ZXh0IChhZGRlZCBpbiBjcmVhdGVSb3V0ZXIpICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZEFjY2VzczxSb3V0ZXMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gUmVjb3JkPFxuICBuZXZlcixcbiAgbmV2ZXJcbj4gJiB7XG4gIC8qKiBSZXRyaWV2ZSB0aGUgcHJlcGFyZWQgb2JqZWN0IGZvciBhIGNvbmNyZXRlIHBhdGggKGlmIGN1cnJlbnQgbWF0Y2ggaW5jbHVkZXMgaXQpICovXG4gIGdldFByZXBhcmVkOiAocGF0aDogc3RyaW5nKSA9PiBQcmVwYXJlZE9mPFJvdXRlVW5pb248Um91dGVzPj4gfCB1bmRlZmluZWQ7XG4gIC8qKiBSZXRyaWV2ZSB0aGUgZnVsbCBwcmVwYXJlZCBzZWdtZW50IGNoYWluIGZvciBhIGNvbmNyZXRlIHBhdGguICovXG4gIGdldFByZXBhcmVkU2VnbWVudHM6IChwYXRoOiBzdHJpbmcpID0+IFByZXBhcmVkUm91dGVTZWdtZW50U25hcHNob3RbXTtcbiAgLy8gZ2V0VHlwZWRRdWVyeSByZW1vdmVkIOKAkyB1c2UgZmlsdGVycy9xdWVyeSBkaXJlY3RseVxufTtcblxuLyoqIElucHV0IHNoYXBlIGZvciBhIG5hdmlnYXRpb24gdG8gYSBzcGVjaWZpYyBwYXRoICh0eXBlZCBxdWVyeSkgKi9cbmV4cG9ydCB0eXBlIE5hdmlnYXRlSW5wdXRGb3JQYXRoPFJvdXRlcyBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4gPSB7XG4gIHBhdGhuYW1lOiBQYXRoc09mPFJvdXRlcz47XG4gIHF1ZXJ5PzogUXVlcnlTaGFwZU9mPFJvdXRlVW5pb248Um91dGVzPj47XG4gIGZpbHRlcnM/OiBGaWx0ZXJzT2Y8Um91dGVVbmlvbjxSb3V0ZXM+PjtcbiAgaGFzaD86IHN0cmluZztcbiAgcmVwbGFjZT86IGJvb2xlYW47XG59O1xuXG4vKiogRmFsbGJhY2sgdW50eXBlZCBuYXZpZ2F0ZSBpbnB1dCAqL1xuZXhwb3J0IHR5cGUgTmF2aWdhdGVJbnB1dFVudHlwZWQgPSB7XG4gIHBhdGhuYW1lPzogc3RyaW5nO1xuICBxdWVyeT86IFVua25vd25RdWVyeVNoYXBlO1xuICBmaWx0ZXJzPzogVW5rbm93bkZpbHRlcnM7XG4gIGhhc2g/OiBzdHJpbmc7XG4gIHJlcGxhY2U/OiBib29sZWFuO1xufTtcblxuLyoqIE92ZXJsb2FkZWQgbmF2aWdhdGUgZnVuY3Rpb24gdHlwZSAoY29tcGlsZS10aW1lIG9ubHk7IHJ1bnRpbWUgc2luZ2xlIGltcGwpICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRlT3ZlcmxvYWRzPFJvdXRlcyBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4ge1xuICAob3B0czogTmF2aWdhdGVJbnB1dEZvclBhdGg8Um91dGVzPik6IHZvaWQ7XG4gIChvcHRzOiBOYXZpZ2F0ZUlucHV0VW50eXBlZCk6IHZvaWQ7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29tcG9uZW50VHlwZSwgUmVhY3RFbGVtZW50LCBSZWFjdE5vZGUsIEpTWCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgRGlhZ25vc3RpYyBhcyBGaWx0ZXJEaWFnbm9zdGljIH0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5L2Vycm9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFNjaGVtYSBhcyBGaWx0ZXJTY2hlbWEsXG4gIEluZmVyRmlsdGVycyBhcyBJbmZlckZpbHRlclJlc3VsdCxcbiAgSW5mZXJGaWVsZCBhcyBJbmZlckZpbHRlckZpZWxkLFxufSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnkvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBNYXRjaCwgTWF0Y2hGdW5jdGlvbiwgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgdHlwZSB7IEZsYXRSb3V0ZSB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlUGFnZSB9IGZyb20gJy4vUmVzb3VyY2VQYWdlLmpzJztcbmltcG9ydCB0eXBlIHsgSGlzdG9yeSwgSGlzdG9yeUxvY2F0aW9uU25hcHNob3QgfSBmcm9tICcuL2hpc3RvcnkvdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBNYXliZVByb21pc2U8VD4gPSBUIHwgUHJvbWlzZTxUPjtcbmV4cG9ydCB0eXBlIFJhd1F1ZXJ5VmFsdWUgPSBzdHJpbmcgfCBzdHJpbmdbXTtcbmV4cG9ydCB0eXBlIFJhd1F1ZXJ5ID0gUmVjb3JkPHN0cmluZywgUmF3UXVlcnlWYWx1ZT47XG5leHBvcnQgdHlwZSBVbmtub3duUXVlcnlTaGFwZSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuZXhwb3J0IHR5cGUgVW5rbm93bkZpbHRlcnMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuZXhwb3J0IHR5cGUgUm91dGVyU3RydWN0dXJlZERlc3RpbmF0aW9uPFxuICBURmlsdGVycyBleHRlbmRzIFVua25vd25GaWx0ZXJzID0gVW5rbm93bkZpbHRlcnMsXG4gIFRRdWVyeSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID0ge1xuICBwYXRobmFtZTogc3RyaW5nO1xuICBmaWx0ZXJzPzogVEZpbHRlcnM7XG4gIHF1ZXJ5PzogVFF1ZXJ5O1xuICBoYXNoPzogc3RyaW5nO1xuICBzZWFyY2g/OiBuZXZlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlckV4cGxpY2l0U2VhcmNoRGVzdGluYXRpb24gPSB7XG4gIHBhdGhuYW1lOiBzdHJpbmc7XG4gIHNlYXJjaD86IHN0cmluZztcbiAgaGFzaD86IHN0cmluZztcbiAgZmlsdGVycz86IG5ldmVyO1xuICBxdWVyeT86IG5ldmVyO1xufTtcblxuLyoqIEEgcm91dGVyIGRlc3RpbmF0aW9uIHdpdGggZWl0aGVyIHN0cnVjdHVyZWQgc3RhdGUgb3IgYW4gZXhwbGljaXQgc2VhcmNoIHN0cmluZy4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlckRlc3RpbmF0aW9uPFxuICBURmlsdGVycyBleHRlbmRzIFVua25vd25GaWx0ZXJzID0gVW5rbm93bkZpbHRlcnMsXG4gIFRRdWVyeSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID1cbiAgfCBSb3V0ZXJTdHJ1Y3R1cmVkRGVzdGluYXRpb248VEZpbHRlcnMsIFRRdWVyeT5cbiAgfCBSb3V0ZXJFeHBsaWNpdFNlYXJjaERlc3RpbmF0aW9uO1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJEZXN0aW5hdGlvbklucHV0PFxuICBURmlsdGVycyBleHRlbmRzIFVua25vd25GaWx0ZXJzID0gVW5rbm93bkZpbHRlcnMsXG4gIFRRdWVyeSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID0gc3RyaW5nIHwgUm91dGVyRGVzdGluYXRpb248VEZpbHRlcnMsIFRRdWVyeT47XG5cbmV4cG9ydCB0eXBlIEFzeW5jUmVzb3VyY2VTdGF0dXMgPSAnaWRsZScgfCAncGVuZGluZycgfCAncmVzb2x2ZWQnIHwgJ3JlamVjdGVkJztcblxuZXhwb3J0IHR5cGUgUm91dGVyQWN0aXZlTG9hZFN0YXR1cyA9IEFzeW5jUmVzb3VyY2VTdGF0dXM7XG5cbmV4cG9ydCB0eXBlIFJvdXRlckFjdGl2ZUxvYWRTdGF0ZSA9IHtcbiAgc3RhdHVzOiBSb3V0ZXJBY3RpdmVMb2FkU3RhdHVzO1xuICBwZW5kaW5nQ291bnQ6IG51bWJlcjtcbiAgcmVqZWN0ZWRDb3VudDogbnVtYmVyO1xuICB2ZXJzaW9uOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJTZWdtZW50TG9hZFN0YXRlID0ge1xuICBwYXRoPzogc3RyaW5nO1xuICBmdWxsUGF0aD86IHN0cmluZztcbiAgc2VnbWVudEluZGV4OiBudW1iZXI7XG4gIHByZXBhcmVTdGF0dXM6IEFzeW5jUmVzb3VyY2VTdGF0dXM7XG4gIGNvZGVTdGF0dXM6IEFzeW5jUmVzb3VyY2VTdGF0dXM7XG4gIHN0YXR1czogUm91dGVyQWN0aXZlTG9hZFN0YXR1cztcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlckxvYWRTdGF0ZSA9IHtcbiAgc3RhdHVzOiBSb3V0ZXJBY3RpdmVMb2FkU3RhdHVzO1xuICBwZW5kaW5nQ291bnQ6IG51bWJlcjtcbiAgcmVqZWN0ZWRDb3VudDogbnVtYmVyO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIHNlZ21lbnRzOiBSb3V0ZXJTZWdtZW50TG9hZFN0YXRlW107XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZVByZXBhcmVTZWFyY2hCZWhhdmlvciA9ICdhbHdheXMnIHwgJ3BhdGgnO1xuXG5leHBvcnQgdHlwZSBSb3V0ZVN1c3BlbnNlQm91bmRhcnkgPSAnaW5oZXJpdCcgfCAnc2VnbWVudCcgfCAnbm9uZSc7XG5cbmV4cG9ydCB0eXBlIFJvdXRlRmFsbGJhY2tBcmdzPFRDb250ZXh0ID0gdW5rbm93bj4gPSB7XG4gIHNlZ21lbnQ6IFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PjtcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxQYXJhbURhdGE+IHwgbnVsbDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZUZhbGxiYWNrPFRDb250ZXh0ID0gdW5rbm93bj4gPVxuICBSZWFjdE5vZGUgfCAoKGFyZ3M6IFJvdXRlRmFsbGJhY2tBcmdzPFRDb250ZXh0PikgPT4gUmVhY3ROb2RlKTtcblxuZXhwb3J0IHR5cGUgUmVhZGFibGVSZXNvdXJjZTxUPiA9IHtcbiAgZ2V0OiAoKSA9PiBUIHwgdW5kZWZpbmVkO1xuICBnZXRFcnJvcjogKCkgPT4gdW5rbm93bjtcbiAgZ2V0U3RhdHVzOiAoKSA9PiBBc3luY1Jlc291cmNlU3RhdHVzO1xuICBsb2FkOiAoKSA9PiBQcm9taXNlPFQ+O1xuICByZWFkOiAoKSA9PiBUO1xufTtcblxuLyoqXG4gKiBJbnB1dCB0eXBlIGZvciBjcmVhdGluZyBhIEZsYXRSb3V0ZSBpbnN0YW5jZS5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBGbGF0Um91dGVJbnB1dDxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBVUkwgcGF0aCBwYXR0ZXJuIGZvciB0aGlzIHJvdXRlICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqIFBlci1yZW5kZXJlZC1yb3V0ZSBtZXRhZGF0YSBhbGlnbmVkIHdpdGggYHJvdXRlc2AuICovXG4gIHJvdXRlU2VnbWVudHM/OiBGbGF0Um91dGVTZWdtZW50W107XG4gIC8qKiBPcHRpb25hbCByZWRpcmVjdCBkZXN0aW5hdGlvbiBpZiB0aGlzIHJvdXRlIHNob3VsZCByZWRpcmVjdCAqL1xuICByZWRpcmVjdFRvPzogc3RyaW5nO1xuICAvKiogRnVuY3Rpb24gdG8gbWF0Y2ggVVJMIHBhdGhzIGFnYWluc3QgdGhpcyByb3V0ZSBwYXR0ZXJuICovXG4gIG1hdGNoRnVuY3Rpb246IE1hdGNoRnVuY3Rpb248VFZhcmlhYmxlcz47XG4gIC8qKiBOZXN0ZWQgcm91dGVzIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIHdpdGhpbiB0aGlzIHJvdXRlICovXG4gIHJvdXRlczogUm91dGVOb2RlW107XG59O1xuXG5leHBvcnQgdHlwZSBGbGF0Um91dGVTZWdtZW50ID0ge1xuICAvKiogU3RhYmxlIGtleSBmb3IgdGhlIHJlbmRlcmVkIHNlZ21lbnQgd2l0aGluIGEgZmxhdCByb3V0ZSBjaGFpbi4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBMb2NhbCByb3V0ZSBwYXRoIGNvbmZpZ3VyZWQgb24gdGhlIHJvdXRlIG5vZGUuICovXG4gIHBhdGg/OiBzdHJpbmc7XG4gIC8qKiBBYnNvbHV0ZSBwYXRoIHJlcHJlc2VudGVkIGJ5IHRoaXMgc2VnbWVudC4gKi9cbiAgZnVsbFBhdGg6IHN0cmluZztcbiAgLyoqIFBhcmFtcyB0aGF0IG1heSBiZSByZWFkIGJ5IHRoaXMgc2VnbWVudCwgaW5jbHVkaW5nIGFuY2VzdG9yIHBhcmFtcy4gKi9cbiAgcGFyYW1OYW1lczogcmVhZG9ubHkgc3RyaW5nW107XG59O1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBtYXRjaGVkIHJvdXRlIHdpdGggZXh0cmFjdGVkIHBhcmFtZXRlcnMgYW5kIG1ldGFkYXRhLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhPiA9IHtcbiAgLyoqIFRoZSBtYXRjaCByZXN1bHQgZnJvbSBwYXRoLXRvLXJlZ2V4cCAqL1xuICBtYXRjaDogTWF0Y2g8VFZhcmlhYmxlcz47XG4gIC8qKiBFeHRyYWN0ZWQgcGFyYW1ldGVycyBmcm9tIHRoZSBVUkwgcGF0aCAqL1xuICBwYXJhbXM6IFRWYXJpYWJsZXM7XG4gIC8qKiBUaGUgbWF0Y2hlZCBwYXRoIHN0cmluZyAqL1xuICBwYXRoOiBzdHJpbmc7XG4gIC8qKiBUaGUgZmxhdCByb3V0ZSB0aGF0IHdhcyBtYXRjaGVkICovXG4gIHJvdXRlOiBGbGF0Um91dGU8VFZhcmlhYmxlcz47XG59O1xuXG4vKipcbiAqIEEgUmVhY3QgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgYXMgYSByb3V0ZSBjb21wb25lbnQuXG4gKiBAdGVtcGxhdGUgVFByb3BzIC0gVGhlIHByb3BzIHR5cGUgZm9yIHRoZSBjb21wb25lbnRcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVSZWFjdENvbXBvbmVudDxUUHJvcHMgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSAoXG4gIHByb3BzOiBUUHJvcHMsXG4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcblxudHlwZSBCaXZhcmlhbnRDYWxsYmFjazxGbiBleHRlbmRzICguLi5hcmdzOiBuZXZlcltdKSA9PiB1bmtub3duPiA9IHtcbiAgLy8gUHVibGljIHJvdXRlIGNhbGxiYWNrcyBuZWVkIHRvIHJlbWFpbiBhc3NpZ25hYmxlIGFmdGVyIHRoZWlyIHNjaGVtYS1zcGVjaWZpY1xuICAvLyBwYXJhbWV0ZXJzIGFyZSBlcmFzZWQgdG8gUm91dGVOb2RlIGJ5IHJlY3Vyc2l2ZSByb3V0ZSBhbmQgcm91dGVyIGhlbHBlcnMuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWV0aG9kLXNpZ25hdHVyZS1zdHlsZVxuICBiaXZhcmlhbmNlSGFjayguLi5hcmdzOiBQYXJhbWV0ZXJzPEZuPik6IFJldHVyblR5cGU8Rm4+O1xufVsnYml2YXJpYW5jZUhhY2snXTtcblxuLyoqXG4gKiBPcHRpb25zIHBhc3NlZCB0byBhIHJvdXRlIHJlbmRlciBmdW5jdGlvbi5cbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVJlbmRlck9wdHM8XG4gIFRDb250ZXh0LFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4+ID0ge1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgd2l0aGluIHRoaXMgcm91dGUgKi9cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgLyoqIE9wdGlvbmFsIGNvbXBvbmVudCB0byByZW5kZXIgKGZyb20gUmVzb3VyY2VQYWdlKSAqL1xuICBDb21wb25lbnQ/OiBSb3V0ZVJlYWN0Q29tcG9uZW50O1xuICAvKiogRGF0YSBwcmVwYXJlZCBieSB0aGUgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uICovXG4gIHByZXBhcmVkOiBUUHJlcGFyZWQgfCB1bmRlZmluZWQ7XG4gIC8qKiBUaGUgcHJlcGFyZWQgc2VnbWVudCB0aGF0IGlzIGJlaW5nIHJlbmRlcmVkICovXG4gIHByZXBhcmVkU2VnbWVudDogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8XG4gICAgVENvbnRleHQsXG4gICAgVFByZXBhcmVkLFxuICAgIFRWYXJpYWJsZXMsXG4gICAgVFF1ZXJ5U2hhcGVcbiAgPjtcbiAgLyoqIFRoZSBmdWxsIHByZXBhcmVkIGNoYWluIGZvciB0aGUgY3VycmVudCBtYXRjaCAqL1xuICBwcmVwYXJlZFNlZ21lbnRzOiBQcmVwYXJlZFJvdXRlU2VnbWVudHM8VENvbnRleHQ+O1xuICAvKiogSW5kZXggb2YgdGhlIGN1cnJlbnQgc2VnbWVudCBpbiB0aGUgcHJlcGFyZWQgY2hhaW4gKi9cbiAgc2VnbWVudEluZGV4OiBudW1iZXI7XG4gIC8qKiBUaGUgbGVhZiBzZWdtZW50IG9mIHRoZSBwcmVwYXJlZCBjaGFpbiAqL1xuICBsZWFmU2VnbWVudDogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+O1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICByb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIFJvdXRlci1sZXZlbCBjb250ZXh0ICovXG4gIGNvbnRleHQ6IFRDb250ZXh0O1xuICAvKiogUmF3IHF1ZXJ5IG9iamVjdCAoUGhhc2UgMiBnZW5lcmljIHBhcnNpbmcpICovXG4gIHJhd1F1ZXJ5OiBSYXdRdWVyeTtcbiAgLyoqIFJhdyBVUkwgcXVlcnkgdmFsdWVzLiAqL1xuICBxdWVyeTogVFF1ZXJ5U2hhcGU7XG4gIC8qKiBQYXJzZWQgZmlsdGVycyB3aGVuIHRoZSBhY3RpdmUgZGVzdGluYXRpb24gZGVjbGFyZXMgYSBxdWVyeSBzY2hlbWEuICovXG4gIGZpbHRlcnM6IFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWFcbiAgICA/IEluZmVyRmlsdGVyUmVzdWx0PFM+XG4gICAgOiBVbmtub3duRmlsdGVycyB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gcmVuZGVyIGEgcm91dGUgd2l0aCBjdXN0b20gbG9naWMuXG4gKiBAdGVtcGxhdGUgVFByZXBhcmVkIC0gVGhlIHR5cGUgb2YgcHJlcGFyZWQgZGF0YSByZXR1cm5lZCBieSB0aGUgcm91dGUncyBwcmVwYXJlIGZ1bmN0aW9uXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVSZW5kZXI8XG4gIFRDb250ZXh0LFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4+ID0gQml2YXJpYW50Q2FsbGJhY2s8XG4gIChcbiAgICBvcHRzOiBSb3V0ZVJlbmRlck9wdHM8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5U2hhcGUsIFM+LFxuICApID0+XG4gICAgUmVhY3RFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB8IFByb21pc2U8UmVhY3RFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZD5cbj47XG5cbi8qKlxuICogQSBzaW5nbGUgYWN0aXZlIHByZXBhcmVkIHJvdXRlIHNlZ21lbnQgd2l0aGluIHRoZSBjdXJyZW50IHJvdXRlIGNoYWluLlxuICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZFJvdXRlU2VnbWVudDxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBVbmtub3duUXVlcnlTaGFwZSA9IFVua25vd25RdWVyeVNoYXBlLFxuPiA9IHtcbiAgLyoqIFRoZSByb3V0ZSBkZWZpbml0aW9uIHRoYXQgcHJvZHVjZWQgdGhpcyBwcmVwYXJlZCBzZWdtZW50ICovXG4gIHJvdXRlTm9kZT86IFJvdXRlTm9kZTtcbiAgLyoqIFRoZSBwYXRoIHRoYXQgd2FzIG1hdGNoZWQgKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIEFic29sdXRlIHJvdXRlIHBhdGggZm9yIHRoZSBjdXJyZW50IHNlZ21lbnQgd2hlbiBrbm93biAqL1xuICBmdWxsUGF0aD86IHN0cmluZztcbiAgLyoqIFN0YWJsZSBrZXkgdXNlZCBmb3Igcm91dGUgc2VnbWVudCByZWNvbmNpbGlhdGlvbi4gKi9cbiAgc2VnbWVudEtleTogc3RyaW5nO1xuICAvKiogUGFyYW1zIHRoYXQgbWF5IGFmZmVjdCB0aGlzIHNlZ21lbnQuICovXG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogT3JkZXIgb2YgdGhlIHNlZ21lbnQgaW4gdGhlIGFjdGl2ZSBwcmVwYXJlZCBjaGFpbiAqL1xuICBzZWdtZW50SW5kZXg6IG51bWJlcjtcbiAgLyoqIEFzeW5jIHJlc291cmNlIGV4cG9zaW5nIHRoZSByb3V0ZSdzIHByZXBhcmVkIHZhbHVlICovXG4gIHByZXBhcmVkUmVzb3VyY2U/OiBQcmVwYXJlZFZhbHVlUmVzb3VyY2U8VFByZXBhcmVkPjtcbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gZm9yIHRoaXMgcm91dGUgKi9cbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5U2hhcGU+O1xuICAvKiogUmVkaXJlY3QgZGVzdGluYXRpb24gaWYgdGhpcyByb3V0ZSBzaG91bGQgcmVkaXJlY3QgKi9cbiAgcmVkaXJlY3RUbzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJlc291cmNlIHBhZ2UgZm9yIGxhenktbG9hZGVkIGNvbXBvbmVudHMgKi9cbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbiAgLyoqIENvbnRyb2xzIHdoZXRoZXIgdGhpcyBzZWdtZW50IG93bnMgYSBsb2NhbCBTdXNwZW5zZSBib3VuZGFyeS4gKi9cbiAgc3VzcGVuc2VCb3VuZGFyeTogUm91dGVTdXNwZW5zZUJvdW5kYXJ5O1xuICAvKiogRmFsbGJhY2sgdXNlZCB3aGVuIHRoaXMgc2VnbWVudCdzIGxvY2FsIFN1c3BlbnNlIGJvdW5kYXJ5IGlzIGFjdGl2ZS4gKi9cbiAgZmFsbGJhY2s/OiBSb3V0ZUZhbGxiYWNrPFRDb250ZXh0PjtcbiAgLyoqIElkZW50aWZpZXIgdXNlZCBieSBkZXZlbG9wZXIgdG9vbGluZyB0byBtYXAgcmVuZGVyZWQgRE9NIHJlZ2lvbnMgKi9cbiAgaGlnaGxpZ2h0SWQ/OiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCBxdWVyeSBzY2hlbWEgZGVjbGFyZWQgYnkgdGhlIHJvdXRlIHNlZ21lbnQgKi9cbiAgcXVlcnlTY2hlbWE/OiBGaWx0ZXJTY2hlbWE7XG59O1xuXG5leHBvcnQgdHlwZSBQcmVwYXJlZFJvdXRlU2VnbWVudHM8VENvbnRleHQgPSB1bmtub3duPiA9XG4gIFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PltdO1xuXG5leHBvcnQgdHlwZSBQcmVwYXJlZFJvdXRlU2VnbWVudFNuYXBzaG90ID0ge1xuICByb3V0ZU5vZGU/OiBSb3V0ZU5vZGU7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGZ1bGxQYXRoPzogc3RyaW5nO1xuICBzZWdtZW50S2V5OiBzdHJpbmc7XG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBzZWdtZW50SW5kZXg6IG51bWJlcjtcbiAgcHJlcGFyZWRSZXNvdXJjZT86IFByZXBhcmVkVmFsdWVSZXNvdXJjZTtcbiAgcmVkaXJlY3RUbzogc3RyaW5nIHwgbnVsbDtcbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbiAgc3VzcGVuc2VCb3VuZGFyeTogUm91dGVTdXNwZW5zZUJvdW5kYXJ5O1xuICBmYWxsYmFjaz86IFJvdXRlRmFsbGJhY2s7XG4gIGhpZ2hsaWdodElkPzogc3RyaW5nO1xuICBxdWVyeVNjaGVtYT86IEZpbHRlclNjaGVtYTtcbn07XG5cbi8qKlxuICogUmVzdWx0IG9mIHByZXBhcmluZyBhIG1hdGNoZWQgcm91dGUsIGluY2x1ZGluZyB0aGUgb3JkZXJlZCBjaGFpbiBvZiBuZXN0ZWQgYWN0aXZlIHNlZ21lbnRzLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkUm91dGVDaGFpbjxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiA9IHtcbiAgLyoqIFRoZSBtYXRjaGVkIHJvdXRlIG9yIG51bGwgaWYgbm8gbWF0Y2ggKi9cbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFyaWFibGVzPiB8IG51bGw7XG4gIC8qKiBPcmRlcmVkIGFjdGl2ZSBwcmVwYXJlZCBzZWdtZW50cyBmcm9tIG91dGVybW9zdCB0byBpbm5lcm1vc3QgKi9cbiAgc2VnbWVudHM6IFByZXBhcmVkUm91dGVTZWdtZW50czxUQ29udGV4dD47XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50PFxuICBUQ29udGV4dCA9IHVua25vd24sXG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQgPSBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4+ID0ge1xuICByb3V0ZU5vZGU/OiBSb3V0ZU5vZGU7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGZ1bGxQYXRoPzogc3RyaW5nO1xuICBzZWdtZW50S2V5OiBzdHJpbmc7XG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBzZWdtZW50SW5kZXg6IG51bWJlcjtcbiAgcHJlcGFyZWQ6IFRQcmVwYXJlZCB8IHVuZGVmaW5lZDtcbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5U2hhcGU+O1xuICByZWRpcmVjdFRvOiBzdHJpbmcgfCBudWxsO1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2UgfCBudWxsO1xuICBzdXNwZW5zZUJvdW5kYXJ5OiBSb3V0ZVN1c3BlbnNlQm91bmRhcnk7XG4gIGZhbGxiYWNrPzogUm91dGVGYWxsYmFjazxUQ29udGV4dD47XG4gIGhpZ2hsaWdodElkPzogc3RyaW5nO1xuICBxdWVyeVNjaGVtYT86IEZpbHRlclNjaGVtYTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkUHJlcGFyZWRSb3V0ZUNoYWluPFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+ID0ge1xuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgc2VnbWVudHM6IFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+W107XG59O1xuXG4vKipcbiAqIENvbXBsZXRlIHJvdXRlIGVudHJ5IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCByb3V0ZXIgc3RhdGUuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVFbnRyeTxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiA9IHtcbiAgLyoqIFRoZSBwcmVwYXJlZCBtYXRjaCB3aXRoIGxvYWRlZCBkYXRhIGFuZCBjb21wb25lbnRzICovXG4gIHByZXBhcmVkTWF0Y2g6IFByZXBhcmVkUm91dGVDaGFpbjxUVmFyaWFibGVzLCBUQ29udGV4dD47XG4gIC8qKiBHbG9iYWwgbG9hZCBzdGF0ZSBmb3IgdGhlIGFjdGl2ZSByb3V0ZS4gKi9cbiAgYWN0aXZlTG9hZFN0YXRlOiBSb3V0ZXJBY3RpdmVMb2FkU3RhdGU7XG4gIC8qKiBQZXItc2VnbWVudCBsb2FkIHN0YXRlIGRldGFpbHMgZm9yIHRoZSBhY3RpdmUgcm91dGUuICovXG4gIGxvYWRTdGF0ZTogUm91dGVyTG9hZFN0YXRlO1xuICAvKiogUm91dGVyLWxldmVsIGNvbnRleHQgcmVzb2x2ZWQgZm9yIHRoaXMgZW50cnkgKi9cbiAgY29udGV4dDogVENvbnRleHQ7XG4gIC8qKiBDdXJyZW50IGJyb3dzZXIgbG9jYXRpb24gKi9cbiAgbG9jYXRpb246IEhpc3RvcnlMb2NhdGlvblNuYXBzaG90O1xuICAvKiogVGhlIG1hdGNoZWQgcm91dGUgb3IgbnVsbCBpZiBubyBtYXRjaCAqL1xuICByb3V0ZTogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJpYWJsZXM+IHwgbnVsbDtcbiAgLyoqIFdoZXRoZXIgdG8gZm9yY2UgYSByZS1yZW5kZXIgZXZlbiBpZiB0aGUgcGF0aCBoYXNuJ3QgY2hhbmdlZCAqL1xuICBmb3JjZVJlcmVuZGVyOiBib29sZWFuO1xuICAvKiogUmF3IHNlYXJjaCBzdHJpbmcgKHF1ZXJ5IHBhcnQpIG9mIHRoZSBsb2NhdGlvbiBmb3IgY2hhbmdlIGRldGVjdGlvbiAqL1xuICByYXdTZWFyY2g/OiBzdHJpbmc7XG4gIC8qKiBQYXJzZWQgcmF3IHF1ZXJ5IHBhcmFtZXRlcnMgKHZhbHVlcyBhZ2dyZWdhdGVkOyBkdXBsaWNhdGVzID0+IGFycmF5KSAqL1xuICBxdWVyeTogUmF3UXVlcnk7XG4gIC8qKiBMZWdhY3kgdHlwZWRRdWVyeSByZW1vdmVkIOKAkyB1bmlmaWVkIGZpbHRlcnMgaGFuZGxlIHR5cGVkIGFjY2VzcyAqL1xuICAvLyB0eXBlZFF1ZXJ5PzogbmV2ZXI7XG4gIC8qKiBQYXJzZWQgZmlsdGVycyBvYmplY3QgZGVyaXZlZCBmcm9tIHRoZSBkZWVwZXN0IGFjdGl2ZSBxdWVyeVNjaGVtYSAoaWYgYW55KSAqL1xuICBmaWx0ZXJzPzogUyBleHRlbmRzIEZpbHRlclNjaGVtYSA/IEluZmVyRmlsdGVyUmVzdWx0PFM+IDogVW5rbm93bkZpbHRlcnM7XG4gIC8qKiBEaWFnbm9zdGljcyBmcm9tIGZpbHRlciBwYXJzaW5nIChpZiBhbnkpICovXG4gIGZpbHRlckRpYWdub3N0aWNzPzogRmlsdGVyRGlhZ25vc3RpY1tdO1xuICAvKiogRGVlcGVzdCBhY3RpdmUgcXVlcnkgc2NoZW1hIChGaWx0ZXJTY2hlbWEgZnJvbSBAcGx1bWlsZS9maWx0ZXItcXVlcnkpIGZvciBjdXJyZW50IG1hdGNoZWQgcm91dGUgKi9cbiAgYWN0aXZlUXVlcnlTY2hlbWE/OiBTO1xufTtcblxuLy8gUXVlcnlTY2hlbWEgJiBkZXNjcmlwdG9ycyByZW1vdmVkIChQaGFzZSAyIHVuaWZpZWQgbW9kZWwpIOKAkyBoaXN0b3JpY2FsIHR5cGVzIGludGVudGlvbmFsbHkgb21pdHRlZC5cblxuLyoqXG4gKiBIVFRQIHN0YXR1cyBjb2RlcyBmb3IgcmVkaXJlY3RzLlxuICovXG5leHBvcnQgdHlwZSBSb3V0ZXJSZWRpcmVjdFN0YXR1cyA9IDMwMSB8IDMwMjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWF0Y2hlZCByb3V0ZSB3aXRoIHJlZ2V4IG1hdGNoIHJlc3VsdC5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBNYXRjaGVkUm91dGU8VFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YT4gPSB7XG4gIC8qKiBUaGUgcmVnZXggbWF0Y2ggcmVzdWx0ICovXG4gIG1hdGNoOiBSZWdFeHBFeGVjQXJyYXk7XG4gIC8qKiBUaGUgZmxhdCByb3V0ZSB0aGF0IHdhcyBtYXRjaGVkICovXG4gIHJvdXRlOiBGbGF0Um91dGU8VFZhcmlhYmxlcz47XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGEgcm91dGUgcmVkaXJlY3QuXG4gKi9cbmV4cG9ydCB0eXBlIFJlZGlyZWN0ID0ge1xuICAvKiogT3B0aW9uYWwgc291cmNlIHBhdGggcGF0dGVybiAqL1xuICBwYXRoPzogc3RyaW5nO1xuICAvKiogRGVzdGluYXRpb24gcGF0aCBmb3IgdGhlIHJlZGlyZWN0ICovXG4gIHRvOiBzdHJpbmc7XG4gIC8qKiBIVFRQIHN0YXR1cyBjb2RlIGZvciB0aGUgcmVkaXJlY3QgKi9cbiAgc3RhdHVzPzogUm91dGVyUmVkaXJlY3RTdGF0dXM7XG59O1xuXG4vKiogTWluaW1hbCBlcmFzZWQgcm91dGUgbm9kZSBzaGFwZSB1c2VkIGJ5IHJ1bnRpbWUgaGVscGVycyBhbmQgcmVjdXJzaXZlIHJvdXRlIHRyZWVzLiAqL1xuZXhwb3J0IHR5cGUgUm91dGVOb2RlID0ge1xuICBjaGlsZHJlbj86IHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXTtcbiAgcGF0aD86IHN0cmluZztcbiAgcHJlcGFyZT86IEJpdmFyaWFudENhbGxiYWNrPFxuICAgIChwYXJhbXM6IFByZXBhcmVQYXJhbXM8dW5rbm93biwgUGFyYW1EYXRhPikgPT4gdW5rbm93blxuICA+O1xuICBwcmVwYXJlU2VhcmNoQmVoYXZpb3I/OiBSb3V0ZVByZXBhcmVTZWFyY2hCZWhhdmlvcjtcbiAgcXVlcnlTY2hlbWE/OiBGaWx0ZXJTY2hlbWE7XG4gIHJlbmRlcj86IEJpdmFyaWFudENhbGxiYWNrPFxuICAgIChcbiAgICAgIG9wdHM6IFJvdXRlUmVuZGVyT3B0czx1bmtub3duLCB1bmtub3duPixcbiAgICApID0+XG4gICAgICBSZWFjdEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkIHwgUHJvbWlzZTxSZWFjdEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPlxuICA+O1xuICByZXNvdXJjZVBhZ2U/OiBSZXNvdXJjZVBhZ2UgfCBudWxsO1xuICBzdXNwZW5zZUJvdW5kYXJ5PzogUm91dGVTdXNwZW5zZUJvdW5kYXJ5O1xuICBmYWxsYmFjaz86IFJvdXRlRmFsbGJhY2s7XG59O1xuXG4vKipcbiAqIEJhc2UgdHlwZSBmb3IgZGF0YSBwcmVwYXJlZCBieSByb3V0ZSBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZVJlc3VsdCA9IHVua25vd247XG5cbi8qKlxuICogUGFyYW1ldGVycyBwYXNzZWQgdG8gYSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb24uXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZVBhcmFtczxcbiAgVENvbnRleHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbj4gPSB7XG4gIC8qKiBUaGUgbWF0Y2hlZCByb3V0ZSB3aXRoIGV4dHJhY3RlZCBwYXJhbWV0ZXJzICovXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFZhcmlhYmxlcz47XG4gIC8qKiBUaGUgZmxhdCByb3V0ZSB0aGF0IHdhcyBtYXRjaGVkICovXG4gIG1hdGNoZWRSb3V0ZTogRmxhdFJvdXRlPFRWYXJpYWJsZXM+O1xuICAvKiogUm91dGVyLWxldmVsIGNvbnRleHQgKi9cbiAgY29udGV4dDogVENvbnRleHQ7XG4gIC8qKiBSZXNvdXJjZSBwYWdlIGZvciBsYXp5LWxvYWRlZCBjb21wb25lbnRzICovXG4gIHJlc291cmNlUGFnZT86IFJlc291cmNlUGFnZSB8IG51bGw7XG4gIC8qKiBFeHRyYWN0ZWQgVVJMIHBhcmFtZXRlcnMgKi9cbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICAvKiogUmF3IFVSTCBxdWVyeSB2YWx1ZXMuICovXG4gIHF1ZXJ5OiBUUXVlcnlTaGFwZTtcbiAgLyoqIFJhdyBxdWVyeSB2YWx1ZXMgYmVmb3JlIHNjaGVtYSBwYXJzaW5nLiAqL1xuICByYXdRdWVyeTogUmF3UXVlcnk7XG4gIC8qKiBQYXJzZWQgZmlsdGVycyB3aGVuIHRoaXMgZGVzdGluYXRpb24gZGVjbGFyZXMgYSBxdWVyeSBzY2hlbWEuICovXG4gIGZpbHRlcnM6IFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWFcbiAgICA/IEluZmVyRmlsdGVyUmVzdWx0PFM+XG4gICAgOiBVbmtub3duRmlsdGVycyB8IHVuZGVmaW5lZDtcbn07XG5cbi8qKiBBbGlhcyBmb3IgcHJlcGFyZSBhcmdzIChrZXB0IGZvciBwdWJsaWMgQVBJIGNsYXJpdHkpLiAqL1xuZXhwb3J0IHR5cGUgUm91dGVQcmVwYXJlQXJnczxcbiAgVENvbnRleHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbj4gPSBQcmVwYXJlUGFyYW1zPFRDb250ZXh0LCBUVmFyaWFibGVzLCBUUXVlcnlTaGFwZSwgUz47XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gcHJlcGFyZSBkYXRhIGZvciBhIHJvdXRlIGJlZm9yZSByZW5kZXJpbmcuXG4gKiBAdGVtcGxhdGUgVFByZXBhcmVkIC0gVGhlIHR5cGUgb2YgZGF0YSB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0ZVByZXBhcmU8XG4gIFRDb250ZXh0LFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnlTaGFwZSBleHRlbmRzIFVua25vd25RdWVyeVNoYXBlID0gVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4+ID0gQml2YXJpYW50Q2FsbGJhY2s8XG4gIChcbiAgICBwYXJhbXM6IFByZXBhcmVQYXJhbXM8VENvbnRleHQsIFRWYXJpYWJsZXMsIFRRdWVyeVNoYXBlLCBTPixcbiAgKSA9PiBNYXliZVByb21pc2U8VFByZXBhcmVkPlxuPjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhIHNpbmdsZSByb3V0ZSBpbiB0aGUgcm91dGVyLlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlPFxuICBUQ29udGV4dCxcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBVbmtub3duUXVlcnlTaGFwZSA9IFVua25vd25RdWVyeVNoYXBlLFxuICBTIGV4dGVuZHMgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBUQ2hpbGRyZW4gZXh0ZW5kcyByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW10gfCB1bmRlZmluZWQgPVxuICAgIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZCxcbj4gPSB7XG4gIC8qKlxuICAgKiBOZXN0ZWQgY2hpbGQgcm91dGVzIG9yIHJlZGlyZWN0cy5cbiAgICpcbiAgICogSU1QT1JUQU5UOiBUaGlzIHVzZWQgdG8gYmUgdHlwZWQgYXMgYChSb3V0ZTxhbnksIFByZXBhcmVSZXN1bHQ+IHwgUmVkaXJlY3QpW11gIHdoaWNoXG4gICAqIHdpZGVuZWQgKGVyYXNlZCkgdGhlIGdlbmVyaWMgcGFyYW1ldGVyIHR5cGVzIChub3RhYmx5IHRoZSBgVFZhcmlhYmxlc2Agb2YgZWFjaFxuICAgKiBjaGlsZCkuIFRoYXQgY2F1c2VkIFR5cGVTY3JpcHQgdG8gdHJlYXQgZXZlcnkgY2hpbGQgcm91dGUncyBgcHJlcGFyZWAgY2FsbGJhY2tcbiAgICogYXMgYWNjZXB0aW5nIHRoZSBkZWZhdWx0IGBQYXJhbURhdGFgIHNoYXBlIChlZmZlY3RpdmVseSBgUGFydGlhbDxSZWNvcmQ8c3RyaW5nLHN0cmluZ3xzdHJpbmdbXT4+YCkuXG4gICAqIFdoZW4gdXNlciBjb2RlIHNwZWNpZmllZCBhIG1vcmUgc3BlY2lmaWMgcGFyYW1ldGVyIG9iamVjdCAoZS5nLiBgeyBzbHVnOiBzdHJpbmcgfWApXG4gICAqIGZvciBhIHBhdGggbGlrZSBgOnNsdWdgLCB0aGUgZnVuY3Rpb24gdHlwZSBiZWNhbWUgbm9u4oCRYXNzaWduYWJsZSBiZWNhdXNlIGl0c1xuICAgKiBwYXJhbWV0ZXIgd2FzIHN0cmljdGVyIHRoYW4gdGhlIHdpZGVuZWQgdmVyc2lvbi4gVGhlIGVyYXNlZCBgUm91dGVOb2RlYCBzaGFwZVxuICAgKiBwcmVzZXJ2ZXMgZWFjaCBjaGlsZCdzIG93biBnZW5lcmljIHBhcmFtZXRlcnMgd2hpbGUga2VlcGluZyB0aGUgcnVudGltZVxuICAgKiByZXByZXNlbnRhdGlvbiB1bmNoYW5nZWQuXG4gICAqL1xuICBjaGlsZHJlbj86IFRDaGlsZHJlbjtcbiAgLyoqIFJlc291cmNlIHBhZ2UgZm9yIGxhenktbG9hZGVkIGNvbXBvbmVudHMgKi9cbiAgcmVzb3VyY2VQYWdlPzogUmVzb3VyY2VQYWdlIHwgbnVsbDtcbiAgLyoqIENvbnRyb2xzIHdoZXRoZXIgdGhpcyByb3V0ZSBzZWdtZW50IG93bnMgYSBsb2NhbCBTdXNwZW5zZSBib3VuZGFyeS4gKi9cbiAgc3VzcGVuc2VCb3VuZGFyeT86IFJvdXRlU3VzcGVuc2VCb3VuZGFyeTtcbiAgLyoqIEZhbGxiYWNrIHVzZWQgYnkgdGhpcyByb3V0ZSBzZWdtZW50IHdoZW4gaXRzIGxvY2FsIFN1c3BlbnNlIGJvdW5kYXJ5IGlzIGFjdGl2ZS4gKi9cbiAgZmFsbGJhY2s/OiBSb3V0ZUZhbGxiYWNrPFRDb250ZXh0PjtcbiAgLyoqIFVSTCBwYXRoIHBhdHRlcm4gZm9yIHRoaXMgcm91dGUgKi9cbiAgcGF0aD86IHN0cmluZztcbiAgLyoqIEZ1bmN0aW9uIHRvIHByZXBhcmUgZGF0YSBiZWZvcmUgcmVuZGVyaW5nICovXG4gIHByZXBhcmU/OiBSb3V0ZVByZXBhcmU8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5U2hhcGUsIFM+O1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0aGlzIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvbiBzaG91bGQgcnVuIGFnYWluIHdoZW4gb25seVxuICAgKiB0aGUgVVJMIHNlYXJjaCBjaGFuZ2VzLiBEZWZhdWx0cyB0byBgYWx3YXlzYCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gICAqL1xuICBwcmVwYXJlU2VhcmNoQmVoYXZpb3I/OiBSb3V0ZVByZXBhcmVTZWFyY2hCZWhhdmlvcjtcbiAgLyoqIEN1c3RvbSByZW5kZXIgZnVuY3Rpb24gZm9yIHRoaXMgcm91dGUgKi9cbiAgcmVuZGVyPzogUm91dGVSZW5kZXI8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5U2hhcGUsIFM+O1xuICAvKiogVW5pZmllZCBzY2hlbWEgKGZpbHRlciAvIHF1ZXJ5KSAqL1xuICBxdWVyeVNjaGVtYT86IFM7XG59O1xuXG4vKipcbiAqIFByb3BzIHBhc3NlZCB0byBSb3V0ZUNvbXBvbmVudCBpbnN0YW5jZXMuXG4gKiBAdGVtcGxhdGUgVFZhcmlhYmxlcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVDb21wb25lbnRQcm9wczxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgVFF1ZXJ5U2hhcGUgZXh0ZW5kcyBVbmtub3duUXVlcnlTaGFwZSA9IFVua25vd25RdWVyeVNoYXBlLFxuPiA9IHtcbiAgLyoqIENoaWxkIGNvbXBvbmVudHMgdG8gcmVuZGVyICovXG4gIGNoaWxkcmVuOiBSZWFjdEVsZW1lbnQ7XG4gIC8qKiBSb3V0ZXIgY29udGV4dCBjb250YWluaW5nIG5hdmlnYXRpb24gYW5kIHN0YXRlICovXG4gIHJvdXRlckNvbnRleHQ6IFJvdXRpbmdDb250ZXh0VHlwZTxUVmFyaWFibGVzLCBTLCBUUXVlcnlTaGFwZT47XG4gIC8qKiBUaGUgcm91dGUgY29uZmlndXJhdGlvbiAqL1xuICByb3V0ZTogUm91dGU8dW5rbm93biwgdW5rbm93biwgUGFyYW1EYXRhLCBVbmtub3duUXVlcnlTaGFwZSwgUz47XG59O1xuXG4vKipcbiAqIENhbGxiYWNrIGZ1bmN0aW9uIGZvciByb3V0ZSBjaGFuZ2VzLlxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCB0eXBlIFN1YnNjcmliZUNhbGxiYWNrPFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhLFxuICBTIGV4dGVuZHMgRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+ID0gKG5leHRFbnRyeTogUm91dGVFbnRyeTxUVmFyaWFibGVzLCBTLCBUQ29udGV4dD4pID0+IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIFByZWxvYWRUYXJnZXQgPSB7XG4gIHBhdGhuYW1lOiBzdHJpbmc7XG4gIHNlYXJjaD86IHN0cmluZztcbiAgc291cmNlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBSb3V0ZXIgY29udGV4dCB0eXBlIHRoYXQgcHJvdmlkZXMgbmF2aWdhdGlvbiBhbmQgc3RhdGUgbWFuYWdlbWVudC5cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgdHlwZSBSb3V0aW5nQ29udGV4dFR5cGU8XG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQgPSBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gIFRRdWVyeVNoYXBlIGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPiA9IHtcbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgcXVlcnkgcGFyYW1ldGVycyBhbmQgZmlsdGVycyB3aXRoIHRoZSBzY2hlbWEgb2YgdGhlIGRlc3RpbmF0aW9uXG4gICAqIHJvdXRlLiBVbmxpa2UgbmF2aWdhdGUoKSwgdGhpcyBvbmx5IGluY2x1ZGVzIHZhbHVlcyBzdXBwbGllZCBieSB0aGUgY2FsbGVyLlxuICAgKi9cbiAgYnVpbGRTZWFyY2g6IChvcHRzOiB7XG4gICAgcGF0aG5hbWU/OiBzdHJpbmc7XG4gICAgcXVlcnk/OiBVbmtub3duUXVlcnlTaGFwZTtcbiAgICBmaWx0ZXJzPzogVW5rbm93bkZpbHRlcnM7XG4gIH0pID0+IHN0cmluZztcbiAgLyoqIEJyb3dzZXIgaGlzdG9yeSBpbnN0YW5jZSBmb3IgbmF2aWdhdGlvbiAqL1xuICBoaXN0b3J5OiBIaXN0b3J5O1xuICAvKiogR2V0IHRoZSBjdXJyZW50IHJvdXRlIGVudHJ5ICovXG4gIGdldDogKCkgPT4gUm91dGVFbnRyeTxUVmFyaWFibGVzLCBTLCBUQ29udGV4dD47XG4gIC8qKiBQcmVsb2FkIGNvZGUgZm9yIGEgcm91dGUgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHQgKi9cbiAgcHJlbG9hZENvZGU6ICh0YXJnZXQ6IFByZWxvYWRUYXJnZXQpID0+IHZvaWQ7XG4gIC8qKiBQcmVsb2FkIGNvZGUgYW5kIGRhdGEgZm9yIGEgcm91dGUgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHQgKi9cbiAgcHJlbG9hZDogKHRhcmdldDogUHJlbG9hZFRhcmdldCkgPT4gdm9pZDtcbiAgLyoqIFN1YnNjcmliZSB0byByb3V0ZSBjaGFuZ2VzIChzY2hlbWEgZGVyaXZhYmxlLCBub3QgbmVlZGVkIGluIHNpZ25hdHVyZSkgKi9cbiAgc3Vic2NyaWJlOiAoXG4gICAgY2FsbGJhY2s6IFN1YnNjcmliZUNhbGxiYWNrPFRWYXJpYWJsZXMsIFMsIFRDb250ZXh0PixcbiAgKSA9PiAoKSA9PiB2b2lkO1xuICAvKiogTmF2aWdhdGUgd2l0aCBvcHRpb25hbCBwYXRobmFtZSBhbmQgdHlwZWQvcmF3IHF1ZXJ5IG9iamVjdCAqL1xuICBuYXZpZ2F0ZTogKG9wdHM6IHtcbiAgICBwYXRobmFtZT86IHN0cmluZztcbiAgICBxdWVyeT86IFRRdWVyeVNoYXBlO1xuICAgIC8qKiBPcHRpb25hbCBmaWx0ZXJzIG9iamVjdCB0byBzZXJpYWxpemUgdXNpbmcgdGhlIGFjdGl2ZSBxdWVyeVNjaGVtYSAqL1xuICAgIGZpbHRlcnM/OiBTIGV4dGVuZHMgRmlsdGVyU2NoZW1hID8gSW5mZXJGaWx0ZXJSZXN1bHQ8Uz4gOiBVbmtub3duRmlsdGVycztcbiAgICBoYXNoPzogc3RyaW5nO1xuICAgIHJlcGxhY2U/OiBib29sZWFuO1xuICB9KSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBmb3IgcmVzb3VyY2UgcGFnZSBsb2FkZXJzLlxuICovXG5leHBvcnQgdHlwZSBSZXNvdXJjZVBhZ2VSZXR1cm4gPVxuICB7IGRlZmF1bHQ6IENvbXBvbmVudFR5cGU8bmV2ZXI+IH0gfCBDb21wb25lbnRUeXBlPG5ldmVyPjtcblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IGxvYWRzIGEgcmVzb3VyY2UgcGFnZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIFJlc291cmNlUGFnZUxvYWRlciA9ICgpID0+IFByb21pc2U8UmVzb3VyY2VQYWdlUmV0dXJuPjtcblxuZXhwb3J0IHR5cGUgUHJlcGFyZWRWYWx1ZVJlc291cmNlPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbj4gPSBSZWFkYWJsZVJlc291cmNlPFRQcmVwYXJlZD47XG5cbi8qKiBVdGlsaXR5OiBpbmZlciBmaWx0ZXJzIHR5cGUgZm9yIGEgZ2l2ZW4gcXVlcnkgc2NoZW1hICovXG5leHBvcnQgdHlwZSBJbmZlckZpbHRlcnM8UyBleHRlbmRzIEZpbHRlclNjaGVtYT4gPSBJbmZlckZpbHRlclJlc3VsdDxTPjtcblxuZXhwb3J0IHR5cGUgeyBGaWx0ZXJTY2hlbWEgfTtcblxuLyoqIFJlLWV4cG9ydCBoZWxwZXIgZmlsdGVyLXF1ZXJ5IHR5cGUgZm9yIHVzZXIgY29udmVuaWVuY2UgKi9cbmV4cG9ydCB0eXBlIHsgSW5mZXJGaWx0ZXJGaWVsZCBhcyBJbmZlckZpZWxkIH07XG5cbi8qKlxuICogU3Ryb25nbHkgdHlwZWQgZmlsdGVyIGFjdGlvbnMgKFBoYXNlIDEgYmFzZSB0eXBlcykuIEltcGxlbWVudGF0aW9uIHdpbGwgYmUgd2lyZWRcbiAqIGluIGEgbGF0ZXIgcGhhc2Ugd2hlbiBgdXNlRmlsdGVyc2AgYmVjb21lcyBnZW5lcmljLlxuICpcbiAqIFM6IFNjaGVtYSB0eXBlIHBhc3NlZCB0byB0aGUgaG9vay9yb3V0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgVHlwZWRGaWx0ZXJBY3Rpb25zPFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWE+ID0ge1xuICAvKiogU2V0IG9yIHVuc2V0ICh2YWx1ZSA9IHVuZGVmaW5lZCkgYSBzcGVjaWZpYyBvcGVyYXRvciB2YWx1ZSBmb3IgYSBmaWVsZCAqL1xuICBzZXQ6IDxcbiAgICBGIGV4dGVuZHMga2V5b2YgUyAmIHN0cmluZyxcbiAgICBPIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8SW5mZXJGaWx0ZXJSZXN1bHQ8Uz5bRl0+ICYgc3RyaW5nLFxuICA+KFxuICAgIGZpZWxkOiBGLFxuICAgIG9wZXJhdG9yOiBPLFxuICAgIHZhbHVlOiBOb25OdWxsYWJsZTxJbmZlckZpbHRlclJlc3VsdDxTPltGXT5bT10gfCB1bmRlZmluZWQsXG4gICAgb3B0cz86IHsgcmVwbGFjZT86IGJvb2xlYW4gfSxcbiAgKSA9PiB2b2lkO1xuICAvKiogUmVtb3ZlIGEgd2hvbGUgZmllbGQgb3IgYSBzcGVjaWZpYyBvcGVyYXRvciAqL1xuICByZW1vdmU6IDxcbiAgICBGIGV4dGVuZHMga2V5b2YgUyAmIHN0cmluZyxcbiAgICBPIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8SW5mZXJGaWx0ZXJSZXN1bHQ8Uz5bRl0+ICYgc3RyaW5nLFxuICA+KFxuICAgIGZpZWxkOiBGLFxuICAgIG9wZXJhdG9yPzogTyxcbiAgICBvcHRzPzogeyByZXBsYWNlPzogYm9vbGVhbiB9LFxuICApID0+IHZvaWQ7XG4gIC8qKiBNZXJnZSBhIHBhcnRpYWwgZmlsdGVycyBvYmplY3QgKi9cbiAgbWVyZ2U6IChcbiAgICBwYXRjaDogUGFydGlhbDxJbmZlckZpbHRlclJlc3VsdDxTPj4sXG4gICAgb3B0cz86IHsgcmVwbGFjZT86IGJvb2xlYW4gfSxcbiAgKSA9PiB2b2lkO1xuICAvKiogQ2xlYXIgYWxsIGZpbHRlcnMgKi9cbiAgY2xlYXI6IChvcHRzPzogeyByZXBsYWNlPzogYm9vbGVhbiB9KSA9PiB2b2lkO1xufTtcblxuLyoqXG4gKiBDb252ZW5pZW5jZSB1bWJyZWxsYSByb3V0ZSB0eXBlLlxuICogVXNlZCB3aGVyZSB3ZSBqdXN0IHdhbnQgdG8gY2FycnkgYXJiaXRyYXJ5IHJvdXRlIGdlbmVyaWNzIGZvcndhcmQgd2l0aG91dCBlcmFzdXJlLlxuICovXG5leHBvcnQgdHlwZSBVbmtub3duUm91dGU8VENvbnRleHQgPSB1bmtub3duPiA9IFJvdXRlPFRDb250ZXh0LCB1bmtub3duPjtcblxuLyoqIEV4dHJhY3QgbmVzdGVkIGNoaWxkIHJvdXRlIHVuaW9uIGZyb20gYSByb3V0ZSBkZWZpbml0aW9uLiAqL1xuZXhwb3J0IHR5cGUgQ2hpbGRSb3V0ZU9mPFI+ID0gUiBleHRlbmRzIHsgY2hpbGRyZW4/OiByZWFkb25seSAoaW5mZXIgQylbXSB9XG4gID8gRXh0cmFjdDxDLCBSb3V0ZU5vZGU+XG4gIDogbmV2ZXI7XG5cbi8qKiBSZWN1cnNpdmVseSBmbGF0dGVuIGEgcm91dGUgdHJlZSBpbnRvIGEgcm91dGUgdW5pb24uICovXG5leHBvcnQgdHlwZSBSb3V0ZVRyZWVSb3V0ZVVuaW9uPFI+ID0gUiBleHRlbmRzIFJvdXRlTm9kZVxuICA/IFIgfCBSb3V0ZVRyZWVSb3V0ZVVuaW9uPENoaWxkUm91dGVPZjxSPj5cbiAgOiBuZXZlcjtcblxuLyoqIEZsYXR0ZW4gYSB0dXBsZSBvZiByb3V0ZXMgaW50byBhIHJlY3Vyc2l2ZSByb3V0ZSB1bmlvbi4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlVW5pb248Um91dGVzIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IFJvdXRlVHJlZVJvdXRlVW5pb248XG4gIFJvdXRlc1tudW1iZXJdXG4+O1xuXG4vKiogRXh0cmFjdCB0aGUgcHJlcGFyZWQgdHlwZSBmcm9tIGEgUm91dGUgKi9cbnR5cGUgUm91dGVUeXBlUGFydHM8Uj4gPVxuICBSIGV4dGVuZHMgUm91dGU8XG4gICAgaW5mZXIgVENvbnRleHQsXG4gICAgaW5mZXIgVFByZXBhcmVkLFxuICAgIGluZmVyIFRWYXJzLFxuICAgIGluZmVyIFRRdWVyeSxcbiAgICBpbmZlciBUU2NoZW1hLFxuICAgIGluZmVyIFRDaGlsZHJlbiBleHRlbmRzIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZFxuICA+XG4gICAgPyB7XG4gICAgICAgIGNvbnRleHQ6IFRDb250ZXh0O1xuICAgICAgICBwcmVwYXJlZDogVFByZXBhcmVkO1xuICAgICAgICB2YXJpYWJsZXM6IFRWYXJzO1xuICAgICAgICBxdWVyeTogVFF1ZXJ5O1xuICAgICAgICBzY2hlbWE6IFRTY2hlbWE7XG4gICAgICAgIGNoaWxkcmVuOiBUQ2hpbGRyZW47XG4gICAgICB9XG4gICAgOiBuZXZlcjtcblxuLyoqIEV4dHJhY3QgdGhlIHByZXBhcmVkIHR5cGUgZnJvbSBhIFJvdXRlICovXG5leHBvcnQgdHlwZSBQcmVwYXJlZE9mPFI+ID0gUm91dGVUeXBlUGFydHM8Uj5bJ3ByZXBhcmVkJ107XG4vKiogRXh0cmFjdCB0aGUgdmFyaWFibGVzIHR5cGUgZnJvbSBhIFJvdXRlICovXG5leHBvcnQgdHlwZSBWYXJpYWJsZXNPZjxSPiA9IFJvdXRlVHlwZVBhcnRzPFI+Wyd2YXJpYWJsZXMnXTtcbi8qKiBFeHRyYWN0IHRoZSBxdWVyeSBzaGFwZSB0eXBlIGZyb20gYSBSb3V0ZSAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTaGFwZU9mPFI+ID0gUm91dGVUeXBlUGFydHM8Uj5bJ3F1ZXJ5J107XG5cbi8qKiBQYXRoIGxpdGVyYWwgdHlwZSBpZiBwcmVzZW50ICovXG5leHBvcnQgdHlwZSBQYXRoT2Y8Uj4gPSBSIGV4dGVuZHMgeyBwYXRoPzogaW5mZXIgUCB9XG4gID8gUCBleHRlbmRzIHN0cmluZ1xuICAgID8gUFxuICAgIDogbmV2ZXJcbiAgOiBuZXZlcjtcblxuLyoqIFVuaW9uIG9mIGFsbCBjb25jcmV0ZSBwYXRoIHN0cmluZ3MgZnJvbSBhIHR1cGxlL2FycmF5IG9mIHJvdXRlcyAocmVjdXJzaXZlKS4gKi9cbmV4cG9ydCB0eXBlIFBhdGhzT2Y8Um91dGVzIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IFBhdGhPZjxcbiAgUm91dGVVbmlvbjxSb3V0ZXM+XG4+O1xuXG4vKiogTWFwIHBhdGggLT4gcHJlcGFyZWQgdHlwZSB1bmlvbiAocGVyLXJvdXRlIHByZWNpc2lvbiBpcyBpbnRlbnRpb25hbGx5IGVyYXNlZCBoZXJlKS4gKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkTWFwPFJvdXRlcyBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4gPSBSZWNvcmQ8XG4gIFBhdGhzT2Y8Um91dGVzPixcbiAgUHJlcGFyZWRPZjxSb3V0ZVVuaW9uPFJvdXRlcz4+IHwgdW5kZWZpbmVkXG4+O1xuXG4vKiogTWFwIHBhdGggLT4gb3JkZXJlZCBwcmVwYXJlZCBzZWdtZW50IHR1cGxlIG9yIGFycmF5IHNoYXBlLiAqL1xuZXhwb3J0IHR5cGUgUHJlcGFyZWRTZWdtZW50c01hcDxSb3V0ZXMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gUmVjb3JkPFxuICBQYXRoc09mPFJvdXRlcz4sXG4gIFByZXBhcmVkUm91dGVTZWdtZW50W11cbj47XG5cbi8qKiBNYXAgcGF0aCAtPiBxdWVyeSBzaGFwZSAqL1xuZXhwb3J0IHR5cGUgUXVlcnlTaGFwZU1hcDxSb3V0ZXMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gUmVjb3JkPFxuICBQYXRoc09mPFJvdXRlcz4sXG4gIFF1ZXJ5U2hhcGVPZjxSb3V0ZVVuaW9uPFJvdXRlcz4+XG4+O1xuXG4vKiogRXh0cmFjdCBzY2hlbWEgZnJvbSBhIHJvdXRlICh1bmRlZmluZWQgaWYgYWJzZW50KSAqL1xuZXhwb3J0IHR5cGUgU2NoZW1hT2Y8Uj4gPSBSIGV4dGVuZHMgeyBxdWVyeVNjaGVtYT86IGluZmVyIFMgfVxuICA/IFMgZXh0ZW5kcyBGaWx0ZXJTY2hlbWFcbiAgICA/IFNcbiAgICA6IHVuZGVmaW5lZFxuICA6IHVuZGVmaW5lZDtcblxuLyoqIEZpbHRlcnMgaW5mZXJyZWQgZnJvbSB0aGUgcm91dGUncyBzY2hlbWEgKi9cbmV4cG9ydCB0eXBlIEZpbHRlcnNPZjxSPiA9XG4gIFNjaGVtYU9mPFI+IGV4dGVuZHMgRmlsdGVyU2NoZW1hXG4gICAgPyBJbmZlckZpbHRlclJlc3VsdDxTY2hlbWFPZjxSPj5cbiAgICA6IFJlY29yZDxzdHJpbmcsIG5ldmVyPjtcblxuLyoqIE1hcCBwYXRoIC0+IGluZmVycmVkIGZpbHRlcnMgdHlwZSAqL1xuZXhwb3J0IHR5cGUgRmlsdGVyc01hcDxSb3V0ZXMgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+ID0gUmVjb3JkPFxuICBQYXRoc09mPFJvdXRlcz4sXG4gIEZpbHRlcnNPZjxSb3V0ZVVuaW9uPFJvdXRlcz4+XG4+O1xuXG4vKiogUnVudGltZSBoZWxwZXIgaW50ZXJmYWNlIGF1Z21lbnRhdGlvbiBmb3Igcm91dGVyIGNvbnRleHQgKGFkZGVkIGluIGNyZWF0ZVJvdXRlcikgKi9cbmV4cG9ydCB0eXBlIFByZXBhcmVkQWNjZXNzPFJvdXRlcyBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXT4gPSBSZWNvcmQ8XG4gIG5ldmVyLFxuICBuZXZlclxuPiAmIHtcbiAgLyoqIFJldHJpZXZlIHRoZSBwcmVwYXJlZCBvYmplY3QgZm9yIGEgY29uY3JldGUgcGF0aCAoaWYgY3VycmVudCBtYXRjaCBpbmNsdWRlcyBpdCkgKi9cbiAgZ2V0UHJlcGFyZWQ6IChwYXRoOiBzdHJpbmcpID0+IFByZXBhcmVkT2Y8Um91dGVVbmlvbjxSb3V0ZXM+PiB8IHVuZGVmaW5lZDtcbiAgLyoqIFJldHJpZXZlIHRoZSBmdWxsIHByZXBhcmVkIHNlZ21lbnQgY2hhaW4gZm9yIGEgY29uY3JldGUgcGF0aC4gKi9cbiAgZ2V0UHJlcGFyZWRTZWdtZW50czogKHBhdGg6IHN0cmluZykgPT4gUHJlcGFyZWRSb3V0ZVNlZ21lbnRTbmFwc2hvdFtdO1xuICAvLyBnZXRUeXBlZFF1ZXJ5IHJlbW92ZWQg4oCTIHVzZSBmaWx0ZXJzL3F1ZXJ5IGRpcmVjdGx5XG59O1xuXG4vKiogSW5wdXQgc2hhcGUgZm9yIGEgbmF2aWdhdGlvbiB0byBhIHNwZWNpZmljIHBhdGggKHR5cGVkIHF1ZXJ5KSAqL1xuZXhwb3J0IHR5cGUgTmF2aWdhdGVJbnB1dEZvclBhdGg8Um91dGVzIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiA9IHtcbiAgcGF0aG5hbWU6IFBhdGhzT2Y8Um91dGVzPjtcbiAgcXVlcnk/OiBRdWVyeVNoYXBlT2Y8Um91dGVVbmlvbjxSb3V0ZXM+PjtcbiAgZmlsdGVycz86IEZpbHRlcnNPZjxSb3V0ZVVuaW9uPFJvdXRlcz4+O1xuICBoYXNoPzogc3RyaW5nO1xuICByZXBsYWNlPzogYm9vbGVhbjtcbn07XG5cbi8qKiBGYWxsYmFjayB1bnR5cGVkIG5hdmlnYXRlIGlucHV0ICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0ZUlucHV0VW50eXBlZCA9IHtcbiAgcGF0aG5hbWU/OiBzdHJpbmc7XG4gIHF1ZXJ5PzogVW5rbm93blF1ZXJ5U2hhcGU7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbiAgaGFzaD86IHN0cmluZztcbiAgcmVwbGFjZT86IGJvb2xlYW47XG59O1xuXG4vKiogT3ZlcmxvYWRlZCBuYXZpZ2F0ZSBmdW5jdGlvbiB0eXBlIChjb21waWxlLXRpbWUgb25seTsgcnVudGltZSBzaW5nbGUgaW1wbCkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGVPdmVybG9hZHM8Um91dGVzIGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdPiB7XG4gIChvcHRzOiBOYXZpZ2F0ZUlucHV0Rm9yUGF0aDxSb3V0ZXM+KTogdm9pZDtcbiAgKG9wdHM6IE5hdmlnYXRlSW5wdXRVbnR5cGVkKTogdm9pZDtcbn1cbiJdfQ==