@dbx-tools/appkit 0.9.154 → 0.9.158

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 (44) hide show
  1. package/index.ts +18 -13
  2. package/lib/index.d.ts +18 -13
  3. package/lib/index.js +19 -12
  4. package/lib/src/appkit.js +6 -6
  5. package/lib/src/brand-context.js +3 -3
  6. package/lib/src/cache-storage.d.ts +1 -1
  7. package/lib/src/cache-storage.js +6 -6
  8. package/lib/src/databricks.js +3 -3
  9. package/lib/src/files-cache.js +9 -9
  10. package/lib/src/identity.d.ts +0 -14
  11. package/lib/src/identity.js +9 -23
  12. package/lib/src/interceptor.js +3 -3
  13. package/lib/src/lakebase-resolver.d.ts +1 -1
  14. package/lib/src/lakebase-resolver.js +16 -17
  15. package/lib/src/migration.js +6 -6
  16. package/lib/src/openapi-tool.js +5 -5
  17. package/lib/src/plugin-execution.d.ts +2 -2
  18. package/lib/src/plugin-execution.js +4 -4
  19. package/lib/src/provision.d.ts +2 -2
  20. package/lib/src/provision.js +4 -4
  21. package/lib/src/request-tags.js +2 -2
  22. package/lib/src/telemetry.js +4 -4
  23. package/lib/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +10 -178
  25. package/src/appkit.ts +5 -5
  26. package/src/brand-context.ts +2 -2
  27. package/src/cache-storage.ts +5 -5
  28. package/src/databricks.ts +2 -2
  29. package/src/files-cache.ts +8 -8
  30. package/src/identity.ts +16 -25
  31. package/src/interceptor.ts +2 -2
  32. package/src/lakebase-resolver.ts +27 -34
  33. package/src/migration.ts +11 -5
  34. package/src/openapi-tool.ts +4 -4
  35. package/src/plugin-execution.ts +4 -4
  36. package/src/provision.ts +4 -4
  37. package/src/request-tags.ts +1 -1
  38. package/src/telemetry.ts +3 -3
  39. package/lib/src/bundle.d.ts +0 -33
  40. package/lib/src/bundle.js +0 -38
  41. package/lib/src/pgaddress.d.ts +0 -20
  42. package/lib/src/pgaddress.js +0 -21
  43. package/src/bundle.ts +0 -57
  44. package/src/pgaddress.ts +0 -42
@@ -4,8 +4,8 @@
4
4
  * @module
5
5
  */
6
6
  import { readFile } from "node:fs/promises";
7
- import { object } from "@dbx-tools/shared-core";
8
- import { urlBuilder } from "@dbx-tools/shared-core/net";
7
+ import { isRecord } from "@dbx-tools/shared-core";
8
+ import { urlBuilder } from "@dbx-tools/shared-core";
9
9
  import { z } from "zod";
10
10
  const HTTP_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD", "TRACE"];
11
11
  const JsonObjectSchema = z
@@ -137,7 +137,7 @@ function operationUrl(document, sourceUrl, path) {
137
137
  function resolveReferences(document, value, active = new Set()) {
138
138
  if (Array.isArray(value))
139
139
  return value.map((item) => resolveReferences(document, item, active));
140
- if (!object.isRecord(value))
140
+ if (!isRecord(value))
141
141
  return value;
142
142
  const reference = typeof value.$ref === "string" ? value.$ref : undefined;
143
143
  if (reference) {
@@ -159,7 +159,7 @@ function referenceTarget(document, reference) {
159
159
  let current = document;
160
160
  for (const rawSegment of reference.slice(2).split("/")) {
161
161
  const segment = rawSegment.replaceAll("~1", "/").replaceAll("~0", "~");
162
- if (!object.isRecord(current) || !(segment in current)) {
162
+ if (!isRecord(current) || !(segment in current)) {
163
163
  throw new Error(`Unresolved OpenAPI reference: ${reference}`);
164
164
  }
165
165
  current = current[segment];
@@ -172,4 +172,4 @@ if (import.meta.main) {
172
172
  throw new Error("Usage: bun openapi-tool.ts <openapi-url-or-file>");
173
173
  console.log(JSON.stringify(await openApiTools(source), null, 2));
174
174
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGktdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLDRCQUE0QixDQUFDO0FBRXpFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFFcEcsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDO0tBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQy9CLFFBQVEsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0FBRTlELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQztLQUM3QixNQUFNLENBQUM7SUFDTixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLHNDQUFzQyxDQUFDO0NBQzFFLENBQUM7S0FDRCxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUV2QyxNQUFNLHdCQUF3QixHQUFHLENBQUM7S0FDL0IsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLENBQUM7U0FDUCxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLHNCQUFzQixDQUFDO1NBQzFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQztDQUMxRCxDQUFDO0tBQ0QsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFeEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDO0tBQzVCLE1BQU0s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QUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLE1BQU07UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDakYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wZW5BUEkgb3BlcmF0aW9uIGxvYWRpbmcgYW5kIEpTT04gU2NoZW1hIGV4dHJhY3Rpb24uXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB1cmxCdWlsZGVyLCB0eXBlIFVybEJ1aWxkZXIgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZS9uZXRcIjtcbmltcG9ydCB0eXBlIHsgSlNPTlNjaGVtYTcgfSBmcm9tIFwianNvbi1zY2hlbWFcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IEhUVFBfTUVUSE9EUyA9IFtcIkdFVFwiLCBcIlBPU1RcIiwgXCJQVVRcIiwgXCJQQVRDSFwiLCBcIkRFTEVURVwiLCBcIk9QVElPTlNcIiwgXCJIRUFEXCIsIFwiVFJBQ0VcIl0gYXMgY29uc3Q7XG5cbmNvbnN0IEpzb25PYmplY3RTY2hlbWEgPSB6XG4gIC5yZWNvcmQoei5zdHJpbmcoKSwgei51bmtub3duKCkpXG4gIC5kZXNjcmliZShcIkEgSlNPTiBvYmplY3QgZW1iZWRkZWQgaW4gYW4gT3BlbkFQSSBkb2N1bWVudC5cIik7XG5cbmNvbnN0IE9wZW5BcGlNZWRpYVR5cGVTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHNjaGVtYTogSnNvbk9iamVjdFNjaGVtYS5kZXNjcmliZShcIlRoZSBKU09OIFNjaGVtYSBmb3IgdGhpcyBtZWRpYSB0eXBlLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiT25lIE9wZW5BUEkgbWVkaWEgdHlwZS5cIik7XG5cbmNvbnN0IE9wZW5BcGlSZXF1ZXN0Qm9keVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgY29udGVudDogelxuICAgICAgLnJlY29yZCh6LnN0cmluZygpLCBPcGVuQXBpTWVkaWFUeXBlU2NoZW1hKVxuICAgICAgLmRlc2NyaWJlKFwiUmVxdWVzdCBtZWRpYSB0eXBlcyBrZXllZCBieSBjb250ZW50IHR5cGUuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJBbiBPcGVuQVBJIHJlcXVlc3QgYm9keS5cIik7XG5cbmNvbnN0IE9wZW5BcGlSZXNwb25zZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgY29udGVudDogelxuICAgICAgLnJlY29yZCh6LnN0cmluZygpLCBPcGVuQXBpTWVkaWFUeXBlU2NoZW1hKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIlJlc3BvbnNlIG1lZGlhIHR5cGVzIGtleWVkIGJ5IGNvbnRlbnQgdHlwZS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIk9uZSBPcGVuQVBJIHJlc3BvbnNlLlwiKTtcblxuY29uc3QgT3BlbkFwaU9wZXJhdGlvblNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgb3BlcmF0aW9uSWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJUaGUgc3RhYmxlIG9wZXJhdGlvbiBpZGVudGlmaWVyLlwiKSxcbiAgICBzdW1tYXJ5OiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgc2hvcnQgb3BlcmF0aW9uIHN1bW1hcnkuXCIpLFxuICAgIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJUaGUgZnVsbCBvcGVyYXRpb24gZGVzY3JpcHRpb24uXCIpLFxuICAgIHJlcXVlc3RCb2R5OiBPcGVuQXBpUmVxdWVzdEJvZHlTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcbiAgICAgIFwiVGhlIG9wdGlvbmFsIG9wZXJhdGlvbiByZXF1ZXN0IGJvZHkuXCIsXG4gICAgKSxcbiAgICByZXNwb25zZXM6IHpcbiAgICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgT3BlbkFwaVJlc3BvbnNlU2NoZW1hKVxuICAgICAgLmRlc2NyaWJlKFwiT3BlcmF0aW9uIHJlc3BvbnNlcyBrZXllZCBieSBIVFRQIHN0YXR1cy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIlRoZSBPcGVuQVBJIGZpZWxkcyByZXF1aXJlZCB0byBkZWZpbmUgYSB0b29sLlwiKTtcblxuY29uc3QgT3BlbkFwaVBhdGhTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGdldDogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIHBvc3Q6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBwdXQ6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBwYXRjaDogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGRlbGV0ZTogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIG9wdGlvbnM6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICBoZWFkOiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgdHJhY2U6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiT3BlcmF0aW9ucyBhdmFpbGFibGUgYXQgb25lIE9wZW5BUEkgcGF0aC5cIik7XG5cbmNvbnN0IE9wZW5BcGlEb2N1bWVudFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcGF0aHM6IHpcbiAgICAgIC5yZWNvcmQoei5zdHJpbmcoKSwgT3BlbkFwaVBhdGhTY2hlbWEpXG4gICAgICAucmVmaW5lKChwYXRocykgPT4gT2JqZWN0LmtleXMocGF0aHMpLmxlbmd0aCA+IDAsIFwiT3BlbkFQSSBwYXRocyBtdXN0IG5vdCBiZSBlbXB0eVwiKVxuICAgICAgLmRlc2NyaWJlKFwiT3BlbkFQSSBwYXRoIGl0ZW1zIGtleWVkIGJ5IFVSTCBwYXRoLlwiKSxcbiAgICBjb21wb25lbnRzOiBKc29uT2JqZWN0U2NoZW1hLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJSZXVzYWJsZSBPcGVuQVBJIGNvbXBvbmVudHMuXCIpLFxuICAgIHNlcnZlcnM6IHpcbiAgICAgIC5hcnJheShcbiAgICAgICAgei5vYmplY3Qoe1xuICAgICAgICAgIHVybDogei5zdHJpbmcoKS5kZXNjcmliZShcIlNlcnZlciBiYXNlIFVSTC5cIiksXG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk9wZW5BUEkgc2VydmVyIGRlZmluaXRpb25zLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiQW4gT3BlbkFQSSBkb2N1bWVudCB1c2VkIHRvIGRlZmluZSBIVFRQIHRvb2xzLlwiKTtcblxudHlwZSBPcGVuQXBpRG9jdW1lbnQgPSB6LmluZmVyPHR5cGVvZiBPcGVuQXBpRG9jdW1lbnRTY2hlbWE+O1xudHlwZSBPcGVuQXBpT3BlcmF0aW9uID0gei5pbmZlcjx0eXBlb2YgT3BlbkFwaU9wZXJhdGlvblNjaGVtYT47XG5cbi8qKiBIVFRQIG1ldGhvZCBzdXBwb3J0ZWQgYnkgYW4ge0BsaW5rIE9wZW5BcGlUb29sfS4gKi9cbmV4cG9ydCB0eXBlIE9wZW5BcGlIdHRwTWV0aG9kID0gKHR5cGVvZiBIVFRQX01FVEhPRFMpW251bWJlcl07XG5cbi8qKiBPbmUgZXhlY3V0YWJsZSBIVFRQIG9wZXJhdGlvbiBkZXJpdmVkIGZyb20gYW4gT3BlbkFQSSBkb2N1bWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkFwaVRvb2wge1xuICAvKiogU3RhYmxlIG9wZXJhdGlvbiBpZGVudGlmaWVyLiAqL1xuICBpZDogc3RyaW5nO1xuICAvKiogTW9kZWwtZmFjaW5nIG9wZXJhdGlvbiBkZXNjcmlwdGlvbi4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIFJlc29sdmVkIG9wZXJhdGlvbiBVUkwsIG9yIHRoZSBPcGVuQVBJIHBhdGggZm9yIGEgbG9jYWwgZG9jdW1lbnQgd2l0aG91dCBhIHNlcnZlciBVUkwuICovXG4gIHVybDogc3RyaW5nO1xuICAvKiogSFRUUCBtZXRob2QgdXNlZCBieSB0aGUgb3BlcmF0aW9uLiAqL1xuICBtZXRob2Q6IE9wZW5BcGlIdHRwTWV0aG9kO1xuICAvKiogSlNPTiBTY2hlbWEgZGVzY3JpYmluZyBvcGVyYXRpb24gaW5wdXQuICovXG4gIGlucHV0U2NoZW1hOiBKU09OU2NoZW1hNztcbiAgLyoqIEpTT04gU2NoZW1hIGRlc2NyaWJpbmcgYSBzdWNjZXNzZnVsIG9wZXJhdGlvbiByZXN1bHQuICovXG4gIG91dHB1dFNjaGVtYTogSlNPTlNjaGVtYTc7XG59XG5cbi8qKiBSZXF1ZXN0IG9wdGlvbnMgdXNlZCB3aGlsZSBsb2FkaW5nIGFuIE9wZW5BUEkgZG9jdW1lbnQuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BcGlUb29sc09wdGlvbnMge1xuICAvKiogQ2FuY2VscyBhbiBIVFRQIHJlcXVlc3Qgb3IgZmlsZSByZWFkLiAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIEhlYWRlcnMgc2VudCB3aGVuIGBzb3VyY2VgIGlzIGFuIEhUVFAoUykgVVJMLiAqL1xuICBoZWFkZXJzPzogUmVxdWVzdEluaXRbXCJoZWFkZXJzXCJdO1xufVxuXG4vKiogTG9hZCBhbiBIVFRQKFMpIFVSTCBvciBsb2NhbCBmaWxlIGFuZCByZXR1cm4gaXRzIE9wZW5BUEkgb3BlcmF0aW9ucyBhcyB0b29sIHNjaGVtYXMuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbkFwaVRvb2xzKFxuICBzb3VyY2U6IHN0cmluZyxcbiAgb3B0aW9uczogT3BlbkFwaVRvb2xzT3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTxPcGVuQXBpVG9vbFtdPiB7XG4gIGNvbnN0IHNvdXJjZVVybCA9IGh0dHBVcmwoc291cmNlKTtcbiAgY29uc3QgZG9jdW1lbnQgPSBPcGVuQXBpRG9jdW1lbnRTY2hlbWEucGFyc2UoXG4gICAgc291cmNlVXJsXG4gICAgICA/IGF3YWl0IGZldGNoRG9jdW1lbnQoc291cmNlVXJsLCBvcHRpb25zKVxuICAgICAgOiBhd2FpdCByZWFkRG9jdW1lbnQoc291cmNlLCBvcHRpb25zLnNpZ25hbCksXG4gICk7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkb2N1bWVudC5wYXRocykuZmxhdE1hcCgoW3BhdGgsIGl0ZW1dKSA9PlxuICAgIEhUVFBfTUVUSE9EUy5mbGF0TWFwKChtZXRob2QpID0+IHtcbiAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IGl0ZW1bbWV0aG9kLnRvTG93ZXJDYXNlKCkgYXMgTG93ZXJjYXNlPE9wZW5BcGlIdHRwTWV0aG9kPl07XG4gICAgICByZXR1cm4gb3BlcmF0aW9uID8gW29wZXJhdGlvblRvb2woZG9jdW1lbnQsIHNvdXJjZVVybCwgcGF0aCwgbWV0aG9kLCBvcGVyYXRpb24pXSA6IFtdO1xuICAgIH0pLFxuICApO1xufVxuXG5mdW5jdGlvbiBodHRwVXJsKHNvdXJjZTogc3RyaW5nKTogVXJsQnVpbGRlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZhbHVlID0gc291cmNlLnRyaW0oKTtcbiAgaWYgKCF2YWx1ZS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSAmJiAhdmFsdWUuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCB1cmwgPSB1cmxCdWlsZGVyKHZhbHVlKTtcbiAgcmV0dXJuIHVybD8uc2NoZW1lID09PSBcImh0dHBcIiB8fCB1cmw/LnNjaGVtZSA9PT0gXCJodHRwc1wiID8gdXJsIDogdW5kZWZpbmVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaERvY3VtZW50KHVybDogVVJMLCBvcHRpb25zOiBPcGVuQXBpVG9vbHNPcHRpb25zKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7XG4gICAgc2lnbmFsOiBvcHRpb25zLnNpZ25hbCxcbiAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gIH0pO1xuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBPcGVuQVBJIHJlcXVlc3QgZmFpbGVkIHdpdGggSFRUUCAke3Jlc3BvbnNlLnN0YXR1c306ICR7dXJsfWApO1xuICB9XG4gIHJldHVybiByZXNwb25zZS5qc29uKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWREb2N1bWVudChwYXRoOiBzdHJpbmcsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKHBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBzaWduYWwgfSkpO1xufVxuXG5mdW5jdGlvbiBvcGVyYXRpb25Ub29sKFxuICBkb2N1bWVudDogT3BlbkFwaURvY3VtZW50LFxuICBzb3VyY2VVcmw6IFVSTCB8IHVuZGVmaW5lZCxcbiAgcGF0aDogc3RyaW5nLFxuICBtZXRob2Q6IE9wZW5BcGlIdHRwTWV0aG9kLFxuICBvcGVyYXRpb246IE9wZW5BcGlPcGVyYXRpb24sXG4pOiBPcGVuQXBpVG9vbCB7XG4gIGNvbnN0IHJlcXVlc3RTY2hlbWEgPSBqc29uU2NoZW1hKG9wZXJhdGlvbi5yZXF1ZXN0Qm9keT8uY29udGVudCkgPz8geyB0eXBlOiBcIm9iamVjdFwiIH07XG4gIGNvbnN0IHJlc3BvbnNlU2NoZW1hID0gc3VjY2Vzc2Z1bFJlc3BvbnNlU2NoZW1hKG9wZXJhdGlvbik7XG4gIHJldHVybiB7XG4gICAgaWQ6IG9wZXJhdGlvbi5vcGVyYXRpb25JZCxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIG9wZXJhdGlvbi5kZXNjcmlwdGlvbj8udHJpbSgpIHx8IG9wZXJhdGlvbi5zdW1tYXJ5Py50cmltKCkgfHwgb3BlcmF0aW9uLm9wZXJhdGlvbklkLFxuICAgIHVybDogb3BlcmF0aW9uVXJsKGRvY3VtZW50LCBzb3VyY2VVcmwsIHBhdGgpLFxuICAgIG1ldGhvZCxcbiAgICBpbnB1dFNjaGVtYTogcmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIHJlcXVlc3RTY2hlbWEpIGFzIEpTT05TY2hlbWE3LFxuICAgIG91dHB1dFNjaGVtYTogcmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIHJlc3BvbnNlU2NoZW1hKSBhcyBKU09OU2NoZW1hNyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3VjY2Vzc2Z1bFJlc3BvbnNlU2NoZW1hKG9wZXJhdGlvbjogT3BlbkFwaU9wZXJhdGlvbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgZm9yIChjb25zdCBbc3RhdHVzLCByZXNwb25zZV0gb2YgT2JqZWN0LmVudHJpZXMob3BlcmF0aW9uLnJlc3BvbnNlcykpIHtcbiAgICBjb25zdCBzY2hlbWEgPSBqc29uU2NoZW1hKHJlc3BvbnNlLmNvbnRlbnQpO1xuICAgIGlmICgvXjIoPzpcXGR7Mn18WFgpJC9pLnRlc3Qoc3RhdHVzKSAmJiBzY2hlbWEpIHJldHVybiBzY2hlbWE7XG4gIH1cbiAgcmV0dXJuIHt9O1xufVxuXG5mdW5jdGlvbiBqc29uU2NoZW1hKFxuICBjb250ZW50OiBSZWNvcmQ8c3RyaW5nLCB6LmluZmVyPHR5cGVvZiBPcGVuQXBpTWVkaWFUeXBlU2NoZW1hPj4gfCB1bmRlZmluZWQsXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1lZGlhVHlwZSA9IE9iamVjdC5lbnRyaWVzKGNvbnRlbnQgPz8ge30pLmZpbmQoKFt0eXBlXSkgPT5cbiAgICAvXmFwcGxpY2F0aW9uXFwvKD86W14rO10rXFwrKT9qc29uKD86O3wkKS9pLnRlc3QodHlwZSksXG4gICk7XG4gIHJldHVybiBtZWRpYVR5cGU/LlsxXS5zY2hlbWE7XG59XG5cbmZ1bmN0aW9uIG9wZXJhdGlvblVybChkb2N1bWVudDogT3BlbkFwaURvY3VtZW50LCBzb3VyY2VVcmw6IFVSTCB8IHVuZGVmaW5lZCwgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3Qgc2VydmVyID0gZG9jdW1lbnQuc2VydmVycz8uWzBdPy51cmw7XG4gIGlmIChzZXJ2ZXIpIHtcbiAgICBjb25zdCBiYXNlID0gc291cmNlVXJsID8gdXJsQnVpbGRlcihuZXcgVVJMKHNlcnZlciwgc291cmNlVXJsKSkgOiBodHRwVXJsKHNlcnZlcik7XG4gICAgcmV0dXJuIGJhc2VcbiAgICAgID8gYmFzZS53aXRoUGF0aEFwcGVuZChwYXRoKS50b1N0cmluZygpXG4gICAgICA6IGAke3NlcnZlci5yZXBsYWNlKC9cXC8kLywgXCJcIil9LyR7cGF0aC5yZXBsYWNlKC9eXFwvLywgXCJcIil9YDtcbiAgfVxuICByZXR1cm4gc291cmNlVXJsID8gKHVybEJ1aWxkZXIoc291cmNlVXJsKT8ud2l0aFBhdGhSZXBsYWNlKHBhdGgpLnRvU3RyaW5nKCkgPz8gcGF0aCkgOiBwYXRoO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlUmVmZXJlbmNlcyhcbiAgZG9jdW1lbnQ6IE9wZW5BcGlEb2N1bWVudCxcbiAgdmFsdWU6IHVua25vd24sXG4gIGFjdGl2ZTogUmVhZG9ubHlTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKSxcbik6IHVua25vd24ge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiB2YWx1ZS5tYXAoKGl0ZW0pID0+IHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCBpdGVtLCBhY3RpdmUpKTtcbiAgaWYgKCFvYmplY3QuaXNSZWNvcmQodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIGNvbnN0IHJlZmVyZW5jZSA9IHR5cGVvZiB2YWx1ZS4kcmVmID09PSBcInN0cmluZ1wiID8gdmFsdWUuJHJlZiA6IHVuZGVmaW5lZDtcbiAgaWYgKHJlZmVyZW5jZSkge1xuICAgIGlmIChhY3RpdmUuaGFzKHJlZmVyZW5jZSkpIHRocm93IG5ldyBFcnJvcihgQ3ljbGljIE9wZW5BUEkgcmVmZXJlbmNlOiAke3JlZmVyZW5jZX1gKTtcbiAgICBjb25zdCB0YXJnZXQgPSByZWZlcmVuY2VUYXJnZXQoZG9jdW1lbnQsIHJlZmVyZW5jZSk7XG4gICAgY29uc3QgbmV4dCA9IG5ldyBTZXQoYWN0aXZlKS5hZGQocmVmZXJlbmNlKTtcbiAgICBjb25zdCB7ICRyZWY6IF9pZ25vcmVkLCAuLi5zaWJsaW5ncyB9ID0gdmFsdWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihyZXNvbHZlUmVmZXJlbmNlcyhkb2N1bWVudCwgdGFyZ2V0LCBuZXh0KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiksXG4gICAgICAuLi4ocmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIHNpYmxpbmdzLCBuZXh0KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtrZXksIGNoaWxkXSkgPT4gW2tleSwgcmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIGNoaWxkLCBhY3RpdmUpXSksXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlZmVyZW5jZVRhcmdldChkb2N1bWVudDogT3BlbkFwaURvY3VtZW50LCByZWZlcmVuY2U6IHN0cmluZyk6IHVua25vd24ge1xuICBpZiAoIXJlZmVyZW5jZS5zdGFydHNXaXRoKFwiIy9cIikpIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgT3BlbkFQSSByZWZlcmVuY2U6ICR7cmVmZXJlbmNlfWApO1xuICBsZXQgY3VycmVudDogdW5rbm93biA9IGRvY3VtZW50O1xuICBmb3IgKGNvbnN0IHJhd1NlZ21lbnQgb2YgcmVmZXJlbmNlLnNsaWNlKDIpLnNwbGl0KFwiL1wiKSkge1xuICAgIGNvbnN0IHNlZ21lbnQgPSByYXdTZWdtZW50LnJlcGxhY2VBbGwoXCJ+MVwiLCBcIi9cIikucmVwbGFjZUFsbChcIn4wXCIsIFwiflwiKTtcbiAgICBpZiAoIW9iamVjdC5pc1JlY29yZChjdXJyZW50KSB8fCAhKHNlZ21lbnQgaW4gY3VycmVudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZXNvbHZlZCBPcGVuQVBJIHJlZmVyZW5jZTogJHtyZWZlcmVuY2V9YCk7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50W3NlZ21lbnRdO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEubWFpbikge1xuICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGlmICghc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJVc2FnZTogYnVuIG9wZW5hcGktdG9vbC50cyA8b3BlbmFwaS11cmwtb3ItZmlsZT5cIik7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGF3YWl0IG9wZW5BcGlUb29scyhzb3VyY2UpLCBudWxsLCAyKSk7XG59XG4iXX0=
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZW5hcGktdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLHdCQUF3QixDQUFDO0FBRXJFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFFcEcsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDO0tBQ3ZCLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQy9CLFFBQVEsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0FBRTlELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQztLQUM3QixNQUFNLENBQUM7SUFDTixNQUFNLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLHNDQUFzQyxDQUFDO0NBQzFFLENBQUM7S0FDRCxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUV2QyxNQUFNLHdCQUF3QixHQUFHLENBQUM7S0FDL0IsTUFBTSxDQUFDO0lBQ04sT0FBTyxFQUFFLENBQUM7U0FDUCxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLHNCQUFzQixDQUFDO1NBQzFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQztDQUMxRCxDQUFDO0tBQ0QsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFFeEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDO0tBQzVCLE1BQU0s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QUNoRSxDQUFDO1FBQ0QsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2pGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBPcGVuQVBJIG9wZXJhdGlvbiBsb2FkaW5nIGFuZCBKU09OIFNjaGVtYSBleHRyYWN0aW9uLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBpc1JlY29yZCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB1cmxCdWlsZGVyLCB0eXBlIFVybEJ1aWxkZXIgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHR5cGUgeyBKU09OU2NoZW1hNyB9IGZyb20gXCJqc29uLXNjaGVtYVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuY29uc3QgSFRUUF9NRVRIT0RTID0gW1wiR0VUXCIsIFwiUE9TVFwiLCBcIlBVVFwiLCBcIlBBVENIXCIsIFwiREVMRVRFXCIsIFwiT1BUSU9OU1wiLCBcIkhFQURcIiwgXCJUUkFDRVwiXSBhcyBjb25zdDtcblxuY29uc3QgSnNvbk9iamVjdFNjaGVtYSA9IHpcbiAgLnJlY29yZCh6LnN0cmluZygpLCB6LnVua25vd24oKSlcbiAgLmRlc2NyaWJlKFwiQSBKU09OIG9iamVjdCBlbWJlZGRlZCBpbiBhbiBPcGVuQVBJIGRvY3VtZW50LlwiKTtcblxuY29uc3QgT3BlbkFwaU1lZGlhVHlwZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgc2NoZW1hOiBKc29uT2JqZWN0U2NoZW1hLmRlc2NyaWJlKFwiVGhlIEpTT04gU2NoZW1hIGZvciB0aGlzIG1lZGlhIHR5cGUuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJPbmUgT3BlbkFQSSBtZWRpYSB0eXBlLlwiKTtcblxuY29uc3QgT3BlbkFwaVJlcXVlc3RCb2R5U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBjb250ZW50OiB6XG4gICAgICAucmVjb3JkKHouc3RyaW5nKCksIE9wZW5BcGlNZWRpYVR5cGVTY2hlbWEpXG4gICAgICAuZGVzY3JpYmUoXCJSZXF1ZXN0IG1lZGlhIHR5cGVzIGtleWVkIGJ5IGNvbnRlbnQgdHlwZS5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkFuIE9wZW5BUEkgcmVxdWVzdCBib2R5LlwiKTtcblxuY29uc3QgT3BlbkFwaVJlc3BvbnNlU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBjb250ZW50OiB6XG4gICAgICAucmVjb3JkKHouc3RyaW5nKCksIE9wZW5BcGlNZWRpYVR5cGVTY2hlbWEpXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiUmVzcG9uc2UgbWVkaWEgdHlwZXMga2V5ZWQgYnkgY29udGVudCB0eXBlLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiT25lIE9wZW5BUEkgcmVzcG9uc2UuXCIpO1xuXG5jb25zdCBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBvcGVyYXRpb25JZDogei5zdHJpbmcoKS5kZXNjcmliZShcIlRoZSBzdGFibGUgb3BlcmF0aW9uIGlkZW50aWZpZXIuXCIpLFxuICAgIHN1bW1hcnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBzaG9ydCBvcGVyYXRpb24gc3VtbWFyeS5cIiksXG4gICAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIlRoZSBmdWxsIG9wZXJhdGlvbiBkZXNjcmlwdGlvbi5cIiksXG4gICAgcmVxdWVzdEJvZHk6IE9wZW5BcGlSZXF1ZXN0Qm9keVNjaGVtYS5vcHRpb25hbCgpLmRlc2NyaWJlKFxuICAgICAgXCJUaGUgb3B0aW9uYWwgb3BlcmF0aW9uIHJlcXVlc3QgYm9keS5cIixcbiAgICApLFxuICAgIHJlc3BvbnNlczogelxuICAgICAgLnJlY29yZCh6LnN0cmluZygpLCBPcGVuQXBpUmVzcG9uc2VTY2hlbWEpXG4gICAgICAuZGVzY3JpYmUoXCJPcGVyYXRpb24gcmVzcG9uc2VzIGtleWVkIGJ5IEhUVFAgc3RhdHVzLlwiKSxcbiAgfSlcbiAgLmRlc2NyaWJlKFwiVGhlIE9wZW5BUEkgZmllbGRzIHJlcXVpcmVkIHRvIGRlZmluZSBhIHRvb2wuXCIpO1xuXG5jb25zdCBPcGVuQXBpUGF0aFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgZ2V0OiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgcG9zdDogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIHB1dDogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIHBhdGNoOiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgZGVsZXRlOiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgb3B0aW9uczogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGhlYWQ6IE9wZW5BcGlPcGVyYXRpb25TY2hlbWEub3B0aW9uYWwoKSxcbiAgICB0cmFjZTogT3BlbkFwaU9wZXJhdGlvblNjaGVtYS5vcHRpb25hbCgpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJPcGVyYXRpb25zIGF2YWlsYWJsZSBhdCBvbmUgT3BlbkFQSSBwYXRoLlwiKTtcblxuY29uc3QgT3BlbkFwaURvY3VtZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICBwYXRoczogelxuICAgICAgLnJlY29yZCh6LnN0cmluZygpLCBPcGVuQXBpUGF0aFNjaGVtYSlcbiAgICAgIC5yZWZpbmUoKHBhdGhzKSA9PiBPYmplY3Qua2V5cyhwYXRocykubGVuZ3RoID4gMCwgXCJPcGVuQVBJIHBhdGhzIG11c3Qgbm90IGJlIGVtcHR5XCIpXG4gICAgICAuZGVzY3JpYmUoXCJPcGVuQVBJIHBhdGggaXRlbXMga2V5ZWQgYnkgVVJMIHBhdGguXCIpLFxuICAgIGNvbXBvbmVudHM6IEpzb25PYmplY3RTY2hlbWEub3B0aW9uYWwoKS5kZXNjcmliZShcIlJldXNhYmxlIE9wZW5BUEkgY29tcG9uZW50cy5cIiksXG4gICAgc2VydmVyczogelxuICAgICAgLmFycmF5KFxuICAgICAgICB6Lm9iamVjdCh7XG4gICAgICAgICAgdXJsOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiU2VydmVyIGJhc2UgVVJMLlwiKSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAub3B0aW9uYWwoKVxuICAgICAgLmRlc2NyaWJlKFwiT3BlbkFQSSBzZXJ2ZXIgZGVmaW5pdGlvbnMuXCIpLFxuICB9KVxuICAuZGVzY3JpYmUoXCJBbiBPcGVuQVBJIGRvY3VtZW50IHVzZWQgdG8gZGVmaW5lIEhUVFAgdG9vbHMuXCIpO1xuXG50eXBlIE9wZW5BcGlEb2N1bWVudCA9IHouaW5mZXI8dHlwZW9mIE9wZW5BcGlEb2N1bWVudFNjaGVtYT47XG50eXBlIE9wZW5BcGlPcGVyYXRpb24gPSB6LmluZmVyPHR5cGVvZiBPcGVuQXBpT3BlcmF0aW9uU2NoZW1hPjtcblxuLyoqIEhUVFAgbWV0aG9kIHN1cHBvcnRlZCBieSBhbiB7QGxpbmsgT3BlbkFwaVRvb2x9LiAqL1xuZXhwb3J0IHR5cGUgT3BlbkFwaUh0dHBNZXRob2QgPSAodHlwZW9mIEhUVFBfTUVUSE9EUylbbnVtYmVyXTtcblxuLyoqIE9uZSBleGVjdXRhYmxlIEhUVFAgb3BlcmF0aW9uIGRlcml2ZWQgZnJvbSBhbiBPcGVuQVBJIGRvY3VtZW50LiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuQXBpVG9vbCB7XG4gIC8qKiBTdGFibGUgb3BlcmF0aW9uIGlkZW50aWZpZXIuICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBNb2RlbC1mYWNpbmcgb3BlcmF0aW9uIGRlc2NyaXB0aW9uLiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogUmVzb2x2ZWQgb3BlcmF0aW9uIFVSTCwgb3IgdGhlIE9wZW5BUEkgcGF0aCBmb3IgYSBsb2NhbCBkb2N1bWVudCB3aXRob3V0IGEgc2VydmVyIFVSTC4gKi9cbiAgdXJsOiBzdHJpbmc7XG4gIC8qKiBIVFRQIG1ldGhvZCB1c2VkIGJ5IHRoZSBvcGVyYXRpb24uICovXG4gIG1ldGhvZDogT3BlbkFwaUh0dHBNZXRob2Q7XG4gIC8qKiBKU09OIFNjaGVtYSBkZXNjcmliaW5nIG9wZXJhdGlvbiBpbnB1dC4gKi9cbiAgaW5wdXRTY2hlbWE6IEpTT05TY2hlbWE3O1xuICAvKiogSlNPTiBTY2hlbWEgZGVzY3JpYmluZyBhIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uIHJlc3VsdC4gKi9cbiAgb3V0cHV0U2NoZW1hOiBKU09OU2NoZW1hNztcbn1cblxuLyoqIFJlcXVlc3Qgb3B0aW9ucyB1c2VkIHdoaWxlIGxvYWRpbmcgYW4gT3BlbkFQSSBkb2N1bWVudC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbkFwaVRvb2xzT3B0aW9ucyB7XG4gIC8qKiBDYW5jZWxzIGFuIEhUVFAgcmVxdWVzdCBvciBmaWxlIHJlYWQuICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAvKiogSGVhZGVycyBzZW50IHdoZW4gYHNvdXJjZWAgaXMgYW4gSFRUUChTKSBVUkwuICovXG4gIGhlYWRlcnM/OiBSZXF1ZXN0SW5pdFtcImhlYWRlcnNcIl07XG59XG5cbi8qKiBMb2FkIGFuIEhUVFAoUykgVVJMIG9yIGxvY2FsIGZpbGUgYW5kIHJldHVybiBpdHMgT3BlbkFQSSBvcGVyYXRpb25zIGFzIHRvb2wgc2NoZW1hcy4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuQXBpVG9vbHMoXG4gIHNvdXJjZTogc3RyaW5nLFxuICBvcHRpb25zOiBPcGVuQXBpVG9vbHNPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPE9wZW5BcGlUb29sW10+IHtcbiAgY29uc3Qgc291cmNlVXJsID0gaHR0cFVybChzb3VyY2UpO1xuICBjb25zdCBkb2N1bWVudCA9IE9wZW5BcGlEb2N1bWVudFNjaGVtYS5wYXJzZShcbiAgICBzb3VyY2VVcmxcbiAgICAgID8gYXdhaXQgZmV0Y2hEb2N1bWVudChzb3VyY2VVcmwsIG9wdGlvbnMpXG4gICAgICA6IGF3YWl0IHJlYWREb2N1bWVudChzb3VyY2UsIG9wdGlvbnMuc2lnbmFsKSxcbiAgKTtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRvY3VtZW50LnBhdGhzKS5mbGF0TWFwKChbcGF0aCwgaXRlbV0pID0+XG4gICAgSFRUUF9NRVRIT0RTLmZsYXRNYXAoKG1ldGhvZCkgPT4ge1xuICAgICAgY29uc3Qgb3BlcmF0aW9uID0gaXRlbVttZXRob2QudG9Mb3dlckNhc2UoKSBhcyBMb3dlcmNhc2U8T3BlbkFwaUh0dHBNZXRob2Q+XTtcbiAgICAgIHJldHVybiBvcGVyYXRpb24gPyBbb3BlcmF0aW9uVG9vbChkb2N1bWVudCwgc291cmNlVXJsLCBwYXRoLCBtZXRob2QsIG9wZXJhdGlvbildIDogW107XG4gICAgfSksXG4gICk7XG59XG5cbmZ1bmN0aW9uIGh0dHBVcmwoc291cmNlOiBzdHJpbmcpOiBVcmxCdWlsZGVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBzb3VyY2UudHJpbSgpO1xuICBpZiAoIXZhbHVlLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpICYmICF2YWx1ZS5zdGFydHNXaXRoKFwiaHR0cHM6Ly9cIikpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHVybCA9IHVybEJ1aWxkZXIodmFsdWUpO1xuICByZXR1cm4gdXJsPy5zY2hlbWUgPT09IFwiaHR0cFwiIHx8IHVybD8uc2NoZW1lID09PSBcImh0dHBzXCIgPyB1cmwgOiB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoRG9jdW1lbnQodXJsOiBVUkwsIG9wdGlvbnM6IE9wZW5BcGlUb29sc09wdGlvbnMpOiBQcm9taXNlPHVua25vd24+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICBzaWduYWw6IG9wdGlvbnMuc2lnbmFsLFxuICAgIGhlYWRlcnM6IG9wdGlvbnMuaGVhZGVycyxcbiAgfSk7XG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZW5BUEkgcmVxdWVzdCBmYWlsZWQgd2l0aCBIVFRQICR7cmVzcG9uc2Uuc3RhdHVzfTogJHt1cmx9YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZERvY3VtZW50KHBhdGg6IHN0cmluZywgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHVua25vd24+IHtcbiAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUocGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIsIHNpZ25hbCB9KSk7XG59XG5cbmZ1bmN0aW9uIG9wZXJhdGlvblRvb2woXG4gIGRvY3VtZW50OiBPcGVuQXBpRG9jdW1lbnQsXG4gIHNvdXJjZVVybDogVVJMIHwgdW5kZWZpbmVkLFxuICBwYXRoOiBzdHJpbmcsXG4gIG1ldGhvZDogT3BlbkFwaUh0dHBNZXRob2QsXG4gIG9wZXJhdGlvbjogT3BlbkFwaU9wZXJhdGlvbixcbik6IE9wZW5BcGlUb29sIHtcbiAgY29uc3QgcmVxdWVzdFNjaGVtYSA9IGpzb25TY2hlbWEob3BlcmF0aW9uLnJlcXVlc3RCb2R5Py5jb250ZW50KSA/PyB7IHR5cGU6IFwib2JqZWN0XCIgfTtcbiAgY29uc3QgcmVzcG9uc2VTY2hlbWEgPSBzdWNjZXNzZnVsUmVzcG9uc2VTY2hlbWEob3BlcmF0aW9uKTtcbiAgcmV0dXJuIHtcbiAgICBpZDogb3BlcmF0aW9uLm9wZXJhdGlvbklkLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgb3BlcmF0aW9uLmRlc2NyaXB0aW9uPy50cmltKCkgfHwgb3BlcmF0aW9uLnN1bW1hcnk/LnRyaW0oKSB8fCBvcGVyYXRpb24ub3BlcmF0aW9uSWQsXG4gICAgdXJsOiBvcGVyYXRpb25VcmwoZG9jdW1lbnQsIHNvdXJjZVVybCwgcGF0aCksXG4gICAgbWV0aG9kLFxuICAgIGlucHV0U2NoZW1hOiByZXNvbHZlUmVmZXJlbmNlcyhkb2N1bWVudCwgcmVxdWVzdFNjaGVtYSkgYXMgSlNPTlNjaGVtYTcsXG4gICAgb3V0cHV0U2NoZW1hOiByZXNvbHZlUmVmZXJlbmNlcyhkb2N1bWVudCwgcmVzcG9uc2VTY2hlbWEpIGFzIEpTT05TY2hlbWE3LFxuICB9O1xufVxuXG5mdW5jdGlvbiBzdWNjZXNzZnVsUmVzcG9uc2VTY2hlbWEob3BlcmF0aW9uOiBPcGVuQXBpT3BlcmF0aW9uKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICBmb3IgKGNvbnN0IFtzdGF0dXMsIHJlc3BvbnNlXSBvZiBPYmplY3QuZW50cmllcyhvcGVyYXRpb24ucmVzcG9uc2VzKSkge1xuICAgIGNvbnN0IHNjaGVtYSA9IGpzb25TY2hlbWEocmVzcG9uc2UuY29udGVudCk7XG4gICAgaWYgKC9eMig/OlxcZHsyfXxYWCkkL2kudGVzdChzdGF0dXMpICYmIHNjaGVtYSkgcmV0dXJuIHNjaGVtYTtcbiAgfVxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGpzb25TY2hlbWEoXG4gIGNvbnRlbnQ6IFJlY29yZDxzdHJpbmcsIHouaW5mZXI8dHlwZW9mIE9wZW5BcGlNZWRpYVR5cGVTY2hlbWE+PiB8IHVuZGVmaW5lZCxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWVkaWFUeXBlID0gT2JqZWN0LmVudHJpZXMoY29udGVudCA/PyB7fSkuZmluZCgoW3R5cGVdKSA9PlxuICAgIC9eYXBwbGljYXRpb25cXC8oPzpbXis7XStcXCspP2pzb24oPzo7fCQpL2kudGVzdCh0eXBlKSxcbiAgKTtcbiAgcmV0dXJuIG1lZGlhVHlwZT8uWzFdLnNjaGVtYTtcbn1cblxuZnVuY3Rpb24gb3BlcmF0aW9uVXJsKGRvY3VtZW50OiBPcGVuQXBpRG9jdW1lbnQsIHNvdXJjZVVybDogVVJMIHwgdW5kZWZpbmVkLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzZXJ2ZXIgPSBkb2N1bWVudC5zZXJ2ZXJzPy5bMF0/LnVybDtcbiAgaWYgKHNlcnZlcikge1xuICAgIGNvbnN0IGJhc2UgPSBzb3VyY2VVcmwgPyB1cmxCdWlsZGVyKG5ldyBVUkwoc2VydmVyLCBzb3VyY2VVcmwpKSA6IGh0dHBVcmwoc2VydmVyKTtcbiAgICByZXR1cm4gYmFzZVxuICAgICAgPyBiYXNlLndpdGhQYXRoQXBwZW5kKHBhdGgpLnRvU3RyaW5nKClcbiAgICAgIDogYCR7c2VydmVyLnJlcGxhY2UoL1xcLyQvLCBcIlwiKX0vJHtwYXRoLnJlcGxhY2UoL15cXC8vLCBcIlwiKX1gO1xuICB9XG4gIHJldHVybiBzb3VyY2VVcmwgPyAodXJsQnVpbGRlcihzb3VyY2VVcmwpPy53aXRoUGF0aFJlcGxhY2UocGF0aCkudG9TdHJpbmcoKSA/PyBwYXRoKSA6IHBhdGg7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogT3BlbkFwaURvY3VtZW50LFxuICB2YWx1ZTogdW5rbm93bixcbiAgYWN0aXZlOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldCgpLFxuKTogdW5rbm93biB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLm1hcCgoaXRlbSkgPT4gcmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIGl0ZW0sIGFjdGl2ZSkpO1xuICBpZiAoIWlzUmVjb3JkKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICBjb25zdCByZWZlcmVuY2UgPSB0eXBlb2YgdmFsdWUuJHJlZiA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlLiRyZWYgOiB1bmRlZmluZWQ7XG4gIGlmIChyZWZlcmVuY2UpIHtcbiAgICBpZiAoYWN0aXZlLmhhcyhyZWZlcmVuY2UpKSB0aHJvdyBuZXcgRXJyb3IoYEN5Y2xpYyBPcGVuQVBJIHJlZmVyZW5jZTogJHtyZWZlcmVuY2V9YCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gcmVmZXJlbmNlVGFyZ2V0KGRvY3VtZW50LCByZWZlcmVuY2UpO1xuICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KGFjdGl2ZSkuYWRkKHJlZmVyZW5jZSk7XG4gICAgY29uc3QgeyAkcmVmOiBfaWdub3JlZCwgLi4uc2libGluZ3MgfSA9IHZhbHVlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi4ocmVzb2x2ZVJlZmVyZW5jZXMoZG9jdW1lbnQsIHRhcmdldCwgbmV4dCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLFxuICAgICAgLi4uKHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCBzaWJsaW5ncywgbmV4dCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyh2YWx1ZSkubWFwKChba2V5LCBjaGlsZF0pID0+IFtrZXksIHJlc29sdmVSZWZlcmVuY2VzKGRvY3VtZW50LCBjaGlsZCwgYWN0aXZlKV0pLFxuICApO1xufVxuXG5mdW5jdGlvbiByZWZlcmVuY2VUYXJnZXQoZG9jdW1lbnQ6IE9wZW5BcGlEb2N1bWVudCwgcmVmZXJlbmNlOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgaWYgKCFyZWZlcmVuY2Uuc3RhcnRzV2l0aChcIiMvXCIpKSB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIE9wZW5BUEkgcmVmZXJlbmNlOiAke3JlZmVyZW5jZX1gKTtcbiAgbGV0IGN1cnJlbnQ6IHVua25vd24gPSBkb2N1bWVudDtcbiAgZm9yIChjb25zdCByYXdTZWdtZW50IG9mIHJlZmVyZW5jZS5zbGljZSgyKS5zcGxpdChcIi9cIikpIHtcbiAgICBjb25zdCBzZWdtZW50ID0gcmF3U2VnbWVudC5yZXBsYWNlQWxsKFwifjFcIiwgXCIvXCIpLnJlcGxhY2VBbGwoXCJ+MFwiLCBcIn5cIik7XG4gICAgaWYgKCFpc1JlY29yZChjdXJyZW50KSB8fCAhKHNlZ21lbnQgaW4gY3VycmVudCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZXNvbHZlZCBPcGVuQVBJIHJlZmVyZW5jZTogJHtyZWZlcmVuY2V9YCk7XG4gICAgfVxuICAgIGN1cnJlbnQgPSBjdXJyZW50W3NlZ21lbnRdO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufVxuXG5pZiAoaW1wb3J0Lm1ldGEubWFpbikge1xuICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzLmFyZ3ZbMl07XG4gIGlmICghc291cmNlKSB0aHJvdyBuZXcgRXJyb3IoXCJVc2FnZTogYnVuIG9wZW5hcGktdG9vbC50cyA8b3BlbmFwaS11cmwtb3ItZmlsZT5cIik7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGF3YWl0IG9wZW5BcGlUb29scyhzb3VyY2UpLCBudWxsLCAyKSk7XG59XG4iXX0=
@@ -1,12 +1,12 @@
1
1
  /** AppKit-specific adapters over the shared intercepted-execution contract. */
2
- import { execution, type Logger } from "@dbx-tools/shared-core";
2
+ import { type Logger, type Executor } from "@dbx-tools/shared-core";
3
3
  /** Inputs for one plugin operation routed through AppKit interceptors. */
4
4
  export interface RunPluginExecutionOptions<T, Settings> {
5
5
  readonly plugin: string;
6
6
  readonly logger: Pick<Logger, "warn">;
7
7
  readonly operation: string;
8
8
  readonly settings: Settings;
9
- readonly execute: execution.Executor<Settings>;
9
+ readonly execute: Executor<Settings>;
10
10
  readonly fn: (signal?: AbortSignal) => Promise<T>;
11
11
  readonly signal?: AbortSignal;
12
12
  }
@@ -1,12 +1,12 @@
1
1
  /** AppKit-specific adapters over the shared intercepted-execution contract. */
2
2
  import { ExecutionError } from "@databricks/appkit";
3
- import { errorUtils, execution } from "@dbx-tools/shared-core";
3
+ import { toError, run } from "@dbx-tools/shared-core";
4
4
  /**
5
5
  * Run and unwrap one AppKit plugin operation with the shared stable failure
6
6
  * message, structured warning, status context, and cancellation behavior.
7
7
  */
8
8
  export function runPluginExecution(options) {
9
- return execution.run({
9
+ return run({
10
10
  operation: options.operation,
11
11
  settings: options.settings,
12
12
  execute: options.execute,
@@ -17,7 +17,7 @@ export function runPluginExecution(options) {
17
17
  options.logger.warn("execution-failed", {
18
18
  operation: failure.operation,
19
19
  status: failure.status,
20
- error: errorUtils.toError(failure.message),
20
+ error: toError(failure.message),
21
21
  });
22
22
  return new ExecutionError(`${options.plugin}: ${failure.operation} failed`, {
23
23
  context: { operation: failure.operation, status: failure.status },
@@ -25,4 +25,4 @@ export function runPluginExecution(options) {
25
25
  },
26
26
  });
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW4tZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQUUvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQWUsTUFBTSx3QkFBd0IsQ0FBQztBQWE1RTs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQStDO0lBRS9DLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQztRQUNuQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7UUFDNUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1FBQzFCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDZCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsUUFBUSxFQUFFLGNBQWMsQ0FBQyxRQUFRO1FBQ2pDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO2dCQUN0QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7Z0JBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzthQUMzQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksY0FBYyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsU0FBUyxTQUFTLEVBQUU7Z0JBQzFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFO2FBQ2xFLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEFwcEtpdC1zcGVjaWZpYyBhZGFwdGVycyBvdmVyIHRoZSBzaGFyZWQgaW50ZXJjZXB0ZWQtZXhlY3V0aW9uIGNvbnRyYWN0LiAqL1xuXG5pbXBvcnQgeyBFeGVjdXRpb25FcnJvciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IGVycm9yVXRpbHMsIGV4ZWN1dGlvbiwgdHlwZSBMb2dnZXIgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG4vKiogSW5wdXRzIGZvciBvbmUgcGx1Z2luIG9wZXJhdGlvbiByb3V0ZWQgdGhyb3VnaCBBcHBLaXQgaW50ZXJjZXB0b3JzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5QbHVnaW5FeGVjdXRpb25PcHRpb25zPFQsIFNldHRpbmdzPiB7XG4gIHJlYWRvbmx5IHBsdWdpbjogc3RyaW5nO1xuICByZWFkb25seSBsb2dnZXI6IFBpY2s8TG9nZ2VyLCBcIndhcm5cIj47XG4gIHJlYWRvbmx5IG9wZXJhdGlvbjogc3RyaW5nO1xuICByZWFkb25seSBzZXR0aW5nczogU2V0dGluZ3M7XG4gIHJlYWRvbmx5IGV4ZWN1dGU6IGV4ZWN1dGlvbi5FeGVjdXRvcjxTZXR0aW5ncz47XG4gIHJlYWRvbmx5IGZuOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8VD47XG4gIHJlYWRvbmx5IHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG4vKipcbiAqIFJ1biBhbmQgdW53cmFwIG9uZSBBcHBLaXQgcGx1Z2luIG9wZXJhdGlvbiB3aXRoIHRoZSBzaGFyZWQgc3RhYmxlIGZhaWx1cmVcbiAqIG1lc3NhZ2UsIHN0cnVjdHVyZWQgd2FybmluZywgc3RhdHVzIGNvbnRleHQsIGFuZCBjYW5jZWxsYXRpb24gYmVoYXZpb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5QbHVnaW5FeGVjdXRpb248VCwgU2V0dGluZ3M+KFxuICBvcHRpb25zOiBSdW5QbHVnaW5FeGVjdXRpb25PcHRpb25zPFQsIFNldHRpbmdzPixcbik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gZXhlY3V0aW9uLnJ1bih7XG4gICAgb3BlcmF0aW9uOiBvcHRpb25zLm9wZXJhdGlvbixcbiAgICBzZXR0aW5nczogb3B0aW9ucy5zZXR0aW5ncyxcbiAgICBleGVjdXRlOiBvcHRpb25zLmV4ZWN1dGUsXG4gICAgZm46IG9wdGlvbnMuZm4sXG4gICAgc2lnbmFsOiBvcHRpb25zLnNpZ25hbCxcbiAgICBjYW5jZWxlZDogRXhlY3V0aW9uRXJyb3IuY2FuY2VsZWQsXG4gICAgZmFpbGVkOiAoZmFpbHVyZSkgPT4ge1xuICAgICAgb3B0aW9ucy5sb2dnZXIud2FybihcImV4ZWN1dGlvbi1mYWlsZWRcIiwge1xuICAgICAgICBvcGVyYXRpb246IGZhaWx1cmUub3BlcmF0aW9uLFxuICAgICAgICBzdGF0dXM6IGZhaWx1cmUuc3RhdHVzLFxuICAgICAgICBlcnJvcjogZXJyb3JVdGlscy50b0Vycm9yKGZhaWx1cmUubWVzc2FnZSksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgRXhlY3V0aW9uRXJyb3IoYCR7b3B0aW9ucy5wbHVnaW59OiAke2ZhaWx1cmUub3BlcmF0aW9ufSBmYWlsZWRgLCB7XG4gICAgICAgIGNvbnRleHQ6IHsgb3BlcmF0aW9uOiBmYWlsdXJlLm9wZXJhdGlvbiwgc3RhdHVzOiBmYWlsdXJlLnN0YXR1cyB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW4tZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQUUvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFlLE9BQU8sRUFBaUIsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFhbEY7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxPQUErQztJQUUvQyxPQUFPLEdBQUcsQ0FBQztRQUNULFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7UUFDMUIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRTtRQUNkLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtRQUN0QixRQUFRLEVBQUUsY0FBYyxDQUFDLFFBQVE7UUFDakMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3RDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztnQkFDNUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUN0QixLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxJQUFJLGNBQWMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLFNBQVMsU0FBUyxFQUFFO2dCQUMxRSxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRTthQUNsRSxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBcHBLaXQtc3BlY2lmaWMgYWRhcHRlcnMgb3ZlciB0aGUgc2hhcmVkIGludGVyY2VwdGVkLWV4ZWN1dGlvbiBjb250cmFjdC4gKi9cblxuaW1wb3J0IHsgRXhlY3V0aW9uRXJyb3IgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciwgdG9FcnJvciwgdHlwZSBFeGVjdXRvciwgcnVuIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcblxuLyoqIElucHV0cyBmb3Igb25lIHBsdWdpbiBvcGVyYXRpb24gcm91dGVkIHRocm91Z2ggQXBwS2l0IGludGVyY2VwdG9ycy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuUGx1Z2luRXhlY3V0aW9uT3B0aW9uczxULCBTZXR0aW5ncz4ge1xuICByZWFkb25seSBwbHVnaW46IHN0cmluZztcbiAgcmVhZG9ubHkgbG9nZ2VyOiBQaWNrPExvZ2dlciwgXCJ3YXJuXCI+O1xuICByZWFkb25seSBvcGVyYXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgc2V0dGluZ3M6IFNldHRpbmdzO1xuICByZWFkb25seSBleGVjdXRlOiBFeGVjdXRvcjxTZXR0aW5ncz47XG4gIHJlYWRvbmx5IGZuOiAoc2lnbmFsPzogQWJvcnRTaWduYWwpID0+IFByb21pc2U8VD47XG4gIHJlYWRvbmx5IHNpZ25hbD86IEFib3J0U2lnbmFsO1xufVxuXG4vKipcbiAqIFJ1biBhbmQgdW53cmFwIG9uZSBBcHBLaXQgcGx1Z2luIG9wZXJhdGlvbiB3aXRoIHRoZSBzaGFyZWQgc3RhYmxlIGZhaWx1cmVcbiAqIG1lc3NhZ2UsIHN0cnVjdHVyZWQgd2FybmluZywgc3RhdHVzIGNvbnRleHQsIGFuZCBjYW5jZWxsYXRpb24gYmVoYXZpb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5QbHVnaW5FeGVjdXRpb248VCwgU2V0dGluZ3M+KFxuICBvcHRpb25zOiBSdW5QbHVnaW5FeGVjdXRpb25PcHRpb25zPFQsIFNldHRpbmdzPixcbik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gcnVuKHtcbiAgICBvcGVyYXRpb246IG9wdGlvbnMub3BlcmF0aW9uLFxuICAgIHNldHRpbmdzOiBvcHRpb25zLnNldHRpbmdzLFxuICAgIGV4ZWN1dGU6IG9wdGlvbnMuZXhlY3V0ZSxcbiAgICBmbjogb3B0aW9ucy5mbixcbiAgICBzaWduYWw6IG9wdGlvbnMuc2lnbmFsLFxuICAgIGNhbmNlbGVkOiBFeGVjdXRpb25FcnJvci5jYW5jZWxlZCxcbiAgICBmYWlsZWQ6IChmYWlsdXJlKSA9PiB7XG4gICAgICBvcHRpb25zLmxvZ2dlci53YXJuKFwiZXhlY3V0aW9uLWZhaWxlZFwiLCB7XG4gICAgICAgIG9wZXJhdGlvbjogZmFpbHVyZS5vcGVyYXRpb24sXG4gICAgICAgIHN0YXR1czogZmFpbHVyZS5zdGF0dXMsXG4gICAgICAgIGVycm9yOiB0b0Vycm9yKGZhaWx1cmUubWVzc2FnZSksXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuZXcgRXhlY3V0aW9uRXJyb3IoYCR7b3B0aW9ucy5wbHVnaW59OiAke2ZhaWx1cmUub3BlcmF0aW9ufSBmYWlsZWRgLCB7XG4gICAgICAgIGNvbnRleHQ6IHsgb3BlcmF0aW9uOiBmYWlsdXJlLm9wZXJhdGlvbiwgc3RhdHVzOiBmYWlsdXJlLnN0YXR1cyB9LFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
@@ -20,7 +20,7 @@
20
20
  *
21
21
  * @module
22
22
  */
23
- import { log } from "@dbx-tools/shared-core";
23
+ import { type Logger } from "@dbx-tools/shared-core";
24
24
  /**
25
25
  * Idempotent grants that make the (already-existing) AppKit cache schema fully
26
26
  * usable by `role`. The `ALTER DEFAULT PRIVILEGES` lines cover the cache table
@@ -48,4 +48,4 @@ export declare function cacheGrantStatements(role: string): readonly string[];
48
48
  *
49
49
  * await provision.provisionCacheSchema("app-service-principal@databricks.com");
50
50
  */
51
- export declare function provisionCacheSchema(role: string | undefined, logger?: log.Logger): Promise<void>;
51
+ export declare function provisionCacheSchema(role: string | undefined, logger?: Logger): Promise<void>;
@@ -22,7 +22,7 @@
22
22
  */
23
23
  import { createLakebasePool, getWorkspaceClient, ValidationError } from "@databricks/appkit";
24
24
  import { postgresConnectionOptions, quotePostgresIdentifier } from "@dbx-tools/postgres";
25
- import { environmentUtils, errorUtils, log } from "@dbx-tools/shared-core";
25
+ import { log, isDatabricksAppEnv, toError } from "@dbx-tools/shared-core";
26
26
  const defaultLogger = log.logger("provision");
27
27
  /** AppKit persistent-cache schema (see AppKit's `PersistentStorage`). */
28
28
  const CACHE_SCHEMA = "appkit";
@@ -79,7 +79,7 @@ export function cacheGrantStatements(role) {
79
79
  * await provision.provisionCacheSchema("app-service-principal@databricks.com");
80
80
  */
81
81
  export async function provisionCacheSchema(role, logger = defaultLogger) {
82
- if (environmentUtils.isDatabricksAppEnv()) {
82
+ if (isDatabricksAppEnv()) {
83
83
  logger.debug("autopg: skip cache provisioning (inside a Databricks App)");
84
84
  return;
85
85
  }
@@ -113,11 +113,11 @@ export async function provisionCacheSchema(role, logger = defaultLogger) {
113
113
  catch (err) {
114
114
  logger.warn("autopg: cache provisioning failed (continuing)", {
115
115
  schema: CACHE_SCHEMA,
116
- error: errorUtils.toError(err),
116
+ error: toError(err),
117
117
  });
118
118
  }
119
119
  finally {
120
120
  await pool.end().catch(() => { });
121
121
  }
122
122
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zpc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFM0UsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUU5Qyx5RUFBeUU7QUFDekUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBRTlCOzs7R0FHRztBQUNILE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQUNsQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztBQUVwQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQVk7SUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxPQUFPO1FBQ0wsaUNBQWlDLE1BQU0sT0FBTyxNQUFNLEVBQUU7UUFDdEQsZ0RBQWdELE1BQU0sT0FBTyxNQUFNLEVBQUU7UUFDckUsbURBQW1ELE1BQU0sT0FBTyxNQUFNLEVBQUU7UUFDeEUsc0NBQXNDLE1BQU0sMkJBQTJCLE1BQU0sRUFBRTtRQUMvRSxzQ0FBc0MsTUFBTSw4QkFBOEIsTUFBTSxFQUFFO0tBQ25GLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsSUFBd0IsRUFDeEIsU0FBcUIsYUFBYTtJQUVsQyxJQUFJLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztRQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDMUUsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLENBQUMsSUFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDbkYsT0FBTztJQUNULENBQUM7SUFDRCxnRUFBZ0U7SUFDaEUsMkVBQTJFO0lBQzNFLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsMEVBQTBFO0lBQzFFLGlGQUFpRjtJQUNqRixNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FDN0IseUJBQXlCLENBQUM7UUFDeEIsSUFBSSxFQUFFLElBQUk7UUFDVixlQUFlLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLHVCQUF1QixFQUFFLGtCQUFrQjtRQUMzQyxpQkFBaUIsRUFBRSxvQkFBb0I7S0FDeEMsQ0FBQyxDQUNILENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQzVCLGtFQUFrRSxFQUNsRSxDQUFDLFlBQVksQ0FBQyxDQUNmLENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQUU7WUFDNUQsTUFBTSxFQUFFLFlBQVk7WUFDcEIsS0FBSyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7WUFBUyxDQUFDO1FBQ1QsTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMYWtlYmFzZSBjYWNoZS1zY2hlbWEgZ3JhbnQgZml4LXVwLlxuICpcbiAqIEFwcEtpdCdzIHBlcnNpc3RlbnQgY2FjaGUgKGBDYWNoZU1hbmFnZXJgIC0+IGBQZXJzaXN0ZW50U3RvcmFnZWApIHVzZXMgYVxuICogc2NoZW1hIGBhcHBraXRgIGFuZCBhIHRhYmxlIGBhcHBraXQuYXBwa2l0X2NhY2hlX2VudHJpZXNgLiBXaGVuIHRoZSBjb25uZWN0aW5nXG4gKiBEYXRhYnJpY2tzIGlkZW50aXR5IGxhY2tzIHByaXZpbGVnZXMgb24gdGhhdCBzY2hlbWEsIHRoZSBjYWNoZSBtaWdyYXRpb25cbiAqIHRocm93cywgYW5kIGJlY2F1c2UgQXBwS2l0IGlzIHR5cGljYWxseSBydW4gd2l0aCBgY2FjaGUuc3RyaWN0UGVyc2lzdGVuY2U6XG4gKiB0cnVlYCwgdGhlIGNhY2hlIGlzIHNpbGVudGx5IHN3aXRjaGVkIHRvIGEgZGlzYWJsZWQgaW4tbWVtb3J5IHN0dWIgLSBzbyBldmVyeVxuICogcGVyc2lzdGVudCByZWFkIChjaGFydCBsb25nLXBvbGwsIGhpc3RvcnksIGV0Yy4pIG1pc3NlcyBhbmQgNDA0cy5cbiAqXG4gKiBUaGlzIGdyYW50cyB0aGUgY29ubmVjdGluZyByb2xlIGZ1bGwgcmlnaHRzIG9uIHRoZSBjYWNoZSBzY2hlbWEsIGJ1dCBvbmx5IHdoZW5cbiAqIHRoZSBzY2hlbWEgQUxSRUFEWSBFWElTVFMgLSBpdCBuZXZlciBjcmVhdGVzIHRoZSBzY2hlbWEgaXRzZWxmLiBSdW4gZnJvbSBhXG4gKiBMT0NBTCBpZGVudGl0eSB0aGF0IG93bnMgdGhlIHNjaGVtYSAob3IgaG9sZHMgZ3JhbnQgb3B0aW9uIG9uIGl0KTsgaXQgaXNcbiAqIHNraXBwZWQgaW5zaWRlIGEgRGF0YWJyaWNrcyBBcHAsIHdoZXJlIHRoZSBhcHAgU1AgY2Fubm90IGdyYW50IGFuZCBpdHNcbiAqIFBvc3RncmVzIHJvbGUgZG9lcyBub3QgZXhpc3QgdW50aWwgaXRzIGZpcnN0IGNvbm5lY3Rpb24uXG4gKlxuICogTXVzdCBydW4gQUZURVIge0BsaW5rIGFwcGx5TGFrZWJhc2VUb0Vudn0gaGFzIHdyaXR0ZW4gdGhlIHJlc29sdmVkIGNvbm5lY3Rpb25cbiAqIHRvIGBwcm9jZXNzLmVudmAgKHNvIGBjcmVhdGVMYWtlYmFzZVBvb2xgIHBpY2tzIHVwIGhvc3QgLyBkYXRhYmFzZSAvIGVuZHBvaW50KVxuICogYW5kIEJFRk9SRSBgY3JlYXRlQXBwYCBpbml0aWFsaXplcyB0aGUgY2FjaGUuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGNyZWF0ZUxha2ViYXNlUG9vbCwgZ2V0V29ya3NwYWNlQ2xpZW50LCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tIFwiQGRhdGFicmlja3MvYXBwa2l0XCI7XG5pbXBvcnQgeyBwb3N0Z3Jlc0Nvbm5lY3Rpb25PcHRpb25zLCBxdW90ZVBvc3RncmVzSWRlbnRpZmllciB9IGZyb20gXCJAZGJ4LXRvb2xzL3Bvc3RncmVzXCI7XG5pbXBvcnQgeyBlbnZpcm9ubWVudFV0aWxzLCBlcnJvclV0aWxzLCBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuXG5jb25zdCBkZWZhdWx0TG9nZ2VyID0gbG9nLmxvZ2dlcihcInByb3Zpc2lvblwiKTtcblxuLyoqIEFwcEtpdCBwZXJzaXN0ZW50LWNhY2hlIHNjaGVtYSAoc2VlIEFwcEtpdCdzIGBQZXJzaXN0ZW50U3RvcmFnZWApLiAqL1xuY29uc3QgQ0FDSEVfU0NIRU1BID0gXCJhcHBraXRcIjtcblxuLyoqXG4gKiBDaGFyYWN0ZXJzIGEgTGFrZWJhc2UgUG9zdGdyZXMgcm9sZSBjYW4gbGVnaXRpbWF0ZWx5IGNvbnRhaW46IHdvcmtzcGFjZVxuICogaWRlbnRpdGllcyBhcmUgZW1haWxzLCBzZXJ2aWNlIHByaW5jaXBhbHMgYXJlIFVVSURzLlxuICovXG5jb25zdCBST0xFX1BBVFRFUk4gPSAvXltBLVphLXowLTkuX0ArLV17MSwyNTV9JC87XG5cbi8qKlxuICogUHJvdmlzaW9uaW5nIHJ1bnMgYXQgYm9vdCBhcyB0aGUgbG9jYWwgZGV2ZWxvcGVyIGlkZW50aXR5LCBiZWZvcmUgYW55IHBsdWdpblxuICogZXhpc3RzLCBzbyBpdCBpcyBvdXRzaWRlIEFwcEtpdCdzIGludGVyY2VwdG9yIGNoYWluIGFuZCBpbmhlcml0cyBubyB0aW1lb3V0XG4gKiBmcm9tIGl0LiBCb3RoIGJvdW5kcyBhcmUgZXhwbGljaXQgZm9yIHRoYXQgcmVhc29uLlxuICovXG5jb25zdCBDT05ORUNUX1RJTUVPVVRfTVMgPSAxMF8wMDA7XG5jb25zdCBTVEFURU1FTlRfVElNRU9VVF9NUyA9IDE1XzAwMDtcblxuLyoqXG4gKiBJZGVtcG90ZW50IGdyYW50cyB0aGF0IG1ha2UgdGhlIChhbHJlYWR5LWV4aXN0aW5nKSBBcHBLaXQgY2FjaGUgc2NoZW1hIGZ1bGx5XG4gKiB1c2FibGUgYnkgYHJvbGVgLiBUaGUgYEFMVEVSIERFRkFVTFQgUFJJVklMRUdFU2AgbGluZXMgY292ZXIgdGhlIGNhY2hlIHRhYmxlXG4gKiB3aGVuZXZlciB0aGUgc2NoZW1hIG93bmVyIGNyZWF0ZXMgaXQgbGF0ZXIuXG4gKlxuICogVGhyb3dzIGEge0BsaW5rIFZhbGlkYXRpb25FcnJvcn0gd2hlbiBgcm9sZWAgaXMgbm90IGEgcGxhdXNpYmxlIFBvc3RncmVzIHJvbGVcbiAqIG5hbWUsIHNpbmNlIHRoZSB2YWx1ZSBsYW5kcyBpbiBhbiBpZGVudGlmaWVyIHBvc2l0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVHcmFudFN0YXRlbWVudHMocm9sZTogc3RyaW5nKTogcmVhZG9ubHkgc3RyaW5nW10ge1xuICBpZiAoIVJPTEVfUEFUVEVSTi50ZXN0KHJvbGUpKSB7XG4gICAgdGhyb3cgVmFsaWRhdGlvbkVycm9yLmludmFsaWRWYWx1ZShcInJvbGVcIiwgcm9sZSwgXCJhIFBvc3RncmVzIHJvbGUgbmFtZVwiKTtcbiAgfVxuICBjb25zdCBzY2hlbWEgPSBxdW90ZVBvc3RncmVzSWRlbnRpZmllcihDQUNIRV9TQ0hFTUEpO1xuICBjb25zdCB0YXJnZXQgPSBxdW90ZVBvc3RncmVzSWRlbnRpZmllcihyb2xlKTtcbiAgcmV0dXJuIFtcbiAgICBgR1JBTlQgVVNBR0UsIENSRUFURSBPTiBTQ0hFTUEgJHtzY2hlbWF9IFRPICR7dGFyZ2V0fWAsXG4gICAgYEdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIEFMTCBUQUJMRVMgSU4gU0NIRU1BICR7c2NoZW1hfSBUTyAke3RhcmdldH1gLFxuICAgIGBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBBTEwgU0VRVUVOQ0VTIElOIFNDSEVNQSAke3NjaGVtYX0gVE8gJHt0YXJnZXR9YCxcbiAgICBgQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIElOIFNDSEVNQSAke3NjaGVtYX0gR1JBTlQgQUxMIE9OIFRBQkxFUyBUTyAke3RhcmdldH1gLFxuICAgIGBBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BICR7c2NoZW1hfSBHUkFOVCBBTEwgT04gU0VRVUVOQ0VTIFRPICR7dGFyZ2V0fWAsXG4gIF07XG59XG5cbi8qKlxuICogR3JhbnQgYHJvbGVgIHJpZ2h0cyBvbiB0aGUgQXBwS2l0IGNhY2hlIHNjaGVtYSwgYnV0IG9ubHkgd2hlbiB0aGF0IHNjaGVtYVxuICogYWxyZWFkeSBleGlzdHMuXG4gKlxuICogTm8tb3BzIGluc2lkZSBhIERhdGFicmlja3MgQXBwIGVudiwgd2hlbiBgcm9sZWAgaXMgdW5kZWZpbmVkLCBvciB3aGVuIHRoZVxuICogc2NoZW1hIGlzIGFic2VudC4gQmVzdC1lZmZvcnQgb3RoZXJ3aXNlOiBhbnkgZmFpbHVyZSAoZS5nLiB0aGUgbG9jYWwgaWRlbnRpdHlcbiAqIGRvZXNuJ3Qgb3duIHRoZSBzY2hlbWEpIGlzIGxvZ2dlZCBhbmQgc3dhbGxvd2VkIHNvIGl0IG5ldmVyIGJsb2NrcyBzdGFydHVwIC1cbiAqIGEgZGlzYWJsZWQgY2FjaGUgaXMgZGVncmFkZWQsIG5vdCBmYXRhbC5cbiAqXG4gKiBAcGFyYW0gcm9sZSAtIFBvc3RncmVzIHJvbGUgdG8gZ3JhbnQgdG8gYW5kIGNvbm5lY3QgYXMgKHRoZSByZXNvbHZlZFxuICogICB3b3Jrc3BhY2UtY2xpZW50IGlkZW50aXR5KTsgc2tpcHMgd2hlbiB1bmRlZmluZWQuXG4gKiBAcGFyYW0gbG9nZ2VyIC0gTG9nZ2VyIHRvIHJlcG9ydCBwcm9ncmVzcyBvbi4gRGVmYXVsdHMgdG8gdGhpcyBtb2R1bGUncy5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgcHJvdmlzaW9uIH0gZnJvbSBcIkBkYngtdG9vbHMvYXBwa2l0XCI7XG4gKlxuICogYXdhaXQgcHJvdmlzaW9uLnByb3Zpc2lvbkNhY2hlU2NoZW1hKFwiYXBwLXNlcnZpY2UtcHJpbmNpcGFsQGRhdGFicmlja3MuY29tXCIpO1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvdmlzaW9uQ2FjaGVTY2hlbWEoXG4gIHJvbGU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgbG9nZ2VyOiBsb2cuTG9nZ2VyID0gZGVmYXVsdExvZ2dlcixcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoZW52aXJvbm1lbnRVdGlscy5pc0RhdGFicmlja3NBcHBFbnYoKSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcImF1dG9wZzogc2tpcCBjYWNoZSBwcm92aXNpb25pbmcgKGluc2lkZSBhIERhdGFicmlja3MgQXBwKVwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFyb2xlKSB7XG4gICAgbG9nZ2VyLndhcm4oXCJhdXRvcGc6IHNraXAgY2FjaGUgcHJvdmlzaW9uaW5nIChjb3VsZCBub3QgcmVzb2x2ZSBjb25uZWN0aW5nIHJvbGUpXCIpO1xuICAgIHJldHVybjtcbiAgfVxuICAvLyBQYXNzIGB1c2VyYCBleHBsaWNpdGx5OiBhdXRvcGcgcmVzb2x2ZXMgdGhlIGNvbm5lY3Rpb24gdGFyZ2V0XG4gIC8vIChob3N0L2RhdGFiYXNlL2VuZHBvaW50KSBidXQgbm90IHRoZSBpZGVudGl0eSwgc28gYGNyZWF0ZUxha2ViYXNlUG9vbGAnc1xuICAvLyBzeW5jaHJvbm91cyB1c2VybmFtZSBsb29rdXAgd291bGQgb3RoZXJ3aXNlIHRocm93LiBgZ2V0V29ya3NwYWNlQ2xpZW50KHt9KWBcbiAgLy8gcmV0dXJucyBhIGZyZXNoIGRlZmF1bHQtYXV0aCBjbGllbnQgLSBsaXRlcmFsbHkgYG5ldyBXb3Jrc3BhY2VDbGllbnQoe30pYCxcbiAgLy8gYnV0IGJ1aWx0IGFnYWluc3QgdGhlIFNESyB2ZXJzaW9uIEFwcEtpdCdzIGBjcmVhdGVMYWtlYmFzZVBvb2xgIGV4cGVjdHNcbiAgLy8gKGltcG9ydGluZyB0aGUgU0RLIGNsYXNzIGRpcmVjdGx5IGhlcmUgcHVsbHMgYSBuZXdlciwgdHlwZS1pbmNvbXBhdGlibGUgY29weSkuXG4gIGNvbnN0IHBvb2wgPSBjcmVhdGVMYWtlYmFzZVBvb2woXG4gICAgcG9zdGdyZXNDb25uZWN0aW9uT3B0aW9ucyh7XG4gICAgICB1c2VyOiByb2xlLFxuICAgICAgd29ya3NwYWNlQ2xpZW50OiBnZXRXb3Jrc3BhY2VDbGllbnQoe30pLFxuICAgICAgY29ubmVjdGlvblRpbWVvdXRNaWxsaXM6IENPTk5FQ1RfVElNRU9VVF9NUyxcbiAgICAgIHN0YXRlbWVudF90aW1lb3V0OiBTVEFURU1FTlRfVElNRU9VVF9NUyxcbiAgICB9KSxcbiAgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBmb3VuZCA9IGF3YWl0IHBvb2wucXVlcnkoXG4gICAgICBcIlNFTEVDVCAxIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnNjaGVtYXRhIFdIRVJFIHNjaGVtYV9uYW1lID0gJDFcIixcbiAgICAgIFtDQUNIRV9TQ0hFTUFdLFxuICAgICk7XG4gICAgaWYgKGZvdW5kLnJvd0NvdW50ID09PSAwKSB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJhdXRvcGc6IHNraXAgY2FjaGUgcHJvdmlzaW9uaW5nIChzY2hlbWEgYWJzZW50KVwiLCB7IHNjaGVtYTogQ0FDSEVfU0NIRU1BIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHNxbCBvZiBjYWNoZUdyYW50U3RhdGVtZW50cyhyb2xlKSkge1xuICAgICAgYXdhaXQgcG9vbC5xdWVyeShzcWwpO1xuICAgIH1cbiAgICBsb2dnZXIuaW5mbyhcImF1dG9wZzogZ3JhbnRlZCBjYWNoZSBzY2hlbWFcIiwgeyBzY2hlbWE6IENBQ0hFX1NDSEVNQSwgcm9sZSB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLndhcm4oXCJhdXRvcGc6IGNhY2hlIHByb3Zpc2lvbmluZyBmYWlsZWQgKGNvbnRpbnVpbmcpXCIsIHtcbiAgICAgIHNjaGVtYTogQ0FDSEVfU0NIRU1BLFxuICAgICAgZXJyb3I6IGVycm9yVXRpbHMudG9FcnJvcihlcnIpLFxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHBvb2wuZW5kKCkuY2F0Y2goKCkgPT4ge30pO1xuICB9XG59XG4iXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zpc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBRUgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFlLE1BQU0sd0JBQXdCLENBQUM7QUFFdkYsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUU5Qyx5RUFBeUU7QUFDekUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDO0FBRTlCOzs7R0FHRztBQUNILE1BQU0sWUFBWSxHQUFHLDJCQUEyQixDQUFDO0FBRWpEOzs7O0dBSUc7QUFDSCxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQUNsQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQztBQUVwQzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQVk7SUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxNQUFNLE1BQU0sR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxPQUFPO1FBQ0wsaUNBQWlDLE1BQU0sT0FBTyxNQUFNLEVBQUU7UUFDdEQsZ0RBQWdELE1BQU0sT0FBTyxNQUFNLEVBQUU7UUFDckUsbURBQW1ELE1BQU0sT0FBTyxNQUFNLEVBQUU7UUFDeEUsc0NBQXNDLE1BQU0sMkJBQTJCLE1BQU0sRUFBRTtRQUMvRSxzQ0FBc0MsTUFBTSw4QkFBOEIsTUFBTSxFQUFFO0tBQ25GLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsSUFBd0IsRUFDeEIsU0FBaUIsYUFBYTtJQUU5QixJQUFJLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztRQUN6QixNQUFNLENBQUMsS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7UUFDMUUsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLENBQUMsSUFBSSxDQUFDLHFFQUFxRSxDQUFDLENBQUM7UUFDbkYsT0FBTztJQUNULENBQUM7SUFDRCxnRUFBZ0U7SUFDaEUsMkVBQTJFO0lBQzNFLDhFQUE4RTtJQUM5RSw2RUFBNkU7SUFDN0UsMEVBQTBFO0lBQzFFLGlGQUFpRjtJQUNqRixNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FDN0IseUJBQXlCLENBQUM7UUFDeEIsSUFBSSxFQUFFLElBQUk7UUFDVixlQUFlLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLHVCQUF1QixFQUFFLGtCQUFrQjtRQUMzQyxpQkFBaUIsRUFBRSxvQkFBb0I7S0FDeEMsQ0FBQyxDQUNILENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQzVCLGtFQUFrRSxFQUNsRSxDQUFDLFlBQVksQ0FBQyxDQUNmLENBQUM7UUFDRixJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQzFGLE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQUU7WUFDNUQsTUFBTSxFQUFFLFlBQVk7WUFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIExha2ViYXNlIGNhY2hlLXNjaGVtYSBncmFudCBmaXgtdXAuXG4gKlxuICogQXBwS2l0J3MgcGVyc2lzdGVudCBjYWNoZSAoYENhY2hlTWFuYWdlcmAgLT4gYFBlcnNpc3RlbnRTdG9yYWdlYCkgdXNlcyBhXG4gKiBzY2hlbWEgYGFwcGtpdGAgYW5kIGEgdGFibGUgYGFwcGtpdC5hcHBraXRfY2FjaGVfZW50cmllc2AuIFdoZW4gdGhlIGNvbm5lY3RpbmdcbiAqIERhdGFicmlja3MgaWRlbnRpdHkgbGFja3MgcHJpdmlsZWdlcyBvbiB0aGF0IHNjaGVtYSwgdGhlIGNhY2hlIG1pZ3JhdGlvblxuICogdGhyb3dzLCBhbmQgYmVjYXVzZSBBcHBLaXQgaXMgdHlwaWNhbGx5IHJ1biB3aXRoIGBjYWNoZS5zdHJpY3RQZXJzaXN0ZW5jZTpcbiAqIHRydWVgLCB0aGUgY2FjaGUgaXMgc2lsZW50bHkgc3dpdGNoZWQgdG8gYSBkaXNhYmxlZCBpbi1tZW1vcnkgc3R1YiAtIHNvIGV2ZXJ5XG4gKiBwZXJzaXN0ZW50IHJlYWQgKGNoYXJ0IGxvbmctcG9sbCwgaGlzdG9yeSwgZXRjLikgbWlzc2VzIGFuZCA0MDRzLlxuICpcbiAqIFRoaXMgZ3JhbnRzIHRoZSBjb25uZWN0aW5nIHJvbGUgZnVsbCByaWdodHMgb24gdGhlIGNhY2hlIHNjaGVtYSwgYnV0IG9ubHkgd2hlblxuICogdGhlIHNjaGVtYSBBTFJFQURZIEVYSVNUUyAtIGl0IG5ldmVyIGNyZWF0ZXMgdGhlIHNjaGVtYSBpdHNlbGYuIFJ1biBmcm9tIGFcbiAqIExPQ0FMIGlkZW50aXR5IHRoYXQgb3ducyB0aGUgc2NoZW1hIChvciBob2xkcyBncmFudCBvcHRpb24gb24gaXQpOyBpdCBpc1xuICogc2tpcHBlZCBpbnNpZGUgYSBEYXRhYnJpY2tzIEFwcCwgd2hlcmUgdGhlIGFwcCBTUCBjYW5ub3QgZ3JhbnQgYW5kIGl0c1xuICogUG9zdGdyZXMgcm9sZSBkb2VzIG5vdCBleGlzdCB1bnRpbCBpdHMgZmlyc3QgY29ubmVjdGlvbi5cbiAqXG4gKiBNdXN0IHJ1biBBRlRFUiB7QGxpbmsgYXBwbHlMYWtlYmFzZVRvRW52fSBoYXMgd3JpdHRlbiB0aGUgcmVzb2x2ZWQgY29ubmVjdGlvblxuICogdG8gYHByb2Nlc3MuZW52YCAoc28gYGNyZWF0ZUxha2ViYXNlUG9vbGAgcGlja3MgdXAgaG9zdCAvIGRhdGFiYXNlIC8gZW5kcG9pbnQpXG4gKiBhbmQgQkVGT1JFIGBjcmVhdGVBcHBgIGluaXRpYWxpemVzIHRoZSBjYWNoZS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgY3JlYXRlTGFrZWJhc2VQb29sLCBnZXRXb3Jrc3BhY2VDbGllbnQsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCJAZGF0YWJyaWNrcy9hcHBraXRcIjtcbmltcG9ydCB7IHBvc3RncmVzQ29ubmVjdGlvbk9wdGlvbnMsIHF1b3RlUG9zdGdyZXNJZGVudGlmaWVyIH0gZnJvbSBcIkBkYngtdG9vbHMvcG9zdGdyZXNcIjtcbmltcG9ydCB7IGxvZywgaXNEYXRhYnJpY2tzQXBwRW52LCB0b0Vycm9yLCB0eXBlIExvZ2dlciB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5cbmNvbnN0IGRlZmF1bHRMb2dnZXIgPSBsb2cubG9nZ2VyKFwicHJvdmlzaW9uXCIpO1xuXG4vKiogQXBwS2l0IHBlcnNpc3RlbnQtY2FjaGUgc2NoZW1hIChzZWUgQXBwS2l0J3MgYFBlcnNpc3RlbnRTdG9yYWdlYCkuICovXG5jb25zdCBDQUNIRV9TQ0hFTUEgPSBcImFwcGtpdFwiO1xuXG4vKipcbiAqIENoYXJhY3RlcnMgYSBMYWtlYmFzZSBQb3N0Z3JlcyByb2xlIGNhbiBsZWdpdGltYXRlbHkgY29udGFpbjogd29ya3NwYWNlXG4gKiBpZGVudGl0aWVzIGFyZSBlbWFpbHMsIHNlcnZpY2UgcHJpbmNpcGFscyBhcmUgVVVJRHMuXG4gKi9cbmNvbnN0IFJPTEVfUEFUVEVSTiA9IC9eW0EtWmEtejAtOS5fQCstXXsxLDI1NX0kLztcblxuLyoqXG4gKiBQcm92aXNpb25pbmcgcnVucyBhdCBib290IGFzIHRoZSBsb2NhbCBkZXZlbG9wZXIgaWRlbnRpdHksIGJlZm9yZSBhbnkgcGx1Z2luXG4gKiBleGlzdHMsIHNvIGl0IGlzIG91dHNpZGUgQXBwS2l0J3MgaW50ZXJjZXB0b3IgY2hhaW4gYW5kIGluaGVyaXRzIG5vIHRpbWVvdXRcbiAqIGZyb20gaXQuIEJvdGggYm91bmRzIGFyZSBleHBsaWNpdCBmb3IgdGhhdCByZWFzb24uXG4gKi9cbmNvbnN0IENPTk5FQ1RfVElNRU9VVF9NUyA9IDEwXzAwMDtcbmNvbnN0IFNUQVRFTUVOVF9USU1FT1VUX01TID0gMTVfMDAwO1xuXG4vKipcbiAqIElkZW1wb3RlbnQgZ3JhbnRzIHRoYXQgbWFrZSB0aGUgKGFscmVhZHktZXhpc3RpbmcpIEFwcEtpdCBjYWNoZSBzY2hlbWEgZnVsbHlcbiAqIHVzYWJsZSBieSBgcm9sZWAuIFRoZSBgQUxURVIgREVGQVVMVCBQUklWSUxFR0VTYCBsaW5lcyBjb3ZlciB0aGUgY2FjaGUgdGFibGVcbiAqIHdoZW5ldmVyIHRoZSBzY2hlbWEgb3duZXIgY3JlYXRlcyBpdCBsYXRlci5cbiAqXG4gKiBUaHJvd3MgYSB7QGxpbmsgVmFsaWRhdGlvbkVycm9yfSB3aGVuIGByb2xlYCBpcyBub3QgYSBwbGF1c2libGUgUG9zdGdyZXMgcm9sZVxuICogbmFtZSwgc2luY2UgdGhlIHZhbHVlIGxhbmRzIGluIGFuIGlkZW50aWZpZXIgcG9zaXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUdyYW50U3RhdGVtZW50cyhyb2xlOiBzdHJpbmcpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIGlmICghUk9MRV9QQVRURVJOLnRlc3Qocm9sZSkpIHtcbiAgICB0aHJvdyBWYWxpZGF0aW9uRXJyb3IuaW52YWxpZFZhbHVlKFwicm9sZVwiLCByb2xlLCBcImEgUG9zdGdyZXMgcm9sZSBuYW1lXCIpO1xuICB9XG4gIGNvbnN0IHNjaGVtYSA9IHF1b3RlUG9zdGdyZXNJZGVudGlmaWVyKENBQ0hFX1NDSEVNQSk7XG4gIGNvbnN0IHRhcmdldCA9IHF1b3RlUG9zdGdyZXNJZGVudGlmaWVyKHJvbGUpO1xuICByZXR1cm4gW1xuICAgIGBHUkFOVCBVU0FHRSwgQ1JFQVRFIE9OIFNDSEVNQSAke3NjaGVtYX0gVE8gJHt0YXJnZXR9YCxcbiAgICBgR1JBTlQgQUxMIFBSSVZJTEVHRVMgT04gQUxMIFRBQkxFUyBJTiBTQ0hFTUEgJHtzY2hlbWF9IFRPICR7dGFyZ2V0fWAsXG4gICAgYEdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIEFMTCBTRVFVRU5DRVMgSU4gU0NIRU1BICR7c2NoZW1hfSBUTyAke3RhcmdldH1gLFxuICAgIGBBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BICR7c2NoZW1hfSBHUkFOVCBBTEwgT04gVEFCTEVTIFRPICR7dGFyZ2V0fWAsXG4gICAgYEFMVEVSIERFRkFVTFQgUFJJVklMRUdFUyBJTiBTQ0hFTUEgJHtzY2hlbWF9IEdSQU5UIEFMTCBPTiBTRVFVRU5DRVMgVE8gJHt0YXJnZXR9YCxcbiAgXTtcbn1cblxuLyoqXG4gKiBHcmFudCBgcm9sZWAgcmlnaHRzIG9uIHRoZSBBcHBLaXQgY2FjaGUgc2NoZW1hLCBidXQgb25seSB3aGVuIHRoYXQgc2NoZW1hXG4gKiBhbHJlYWR5IGV4aXN0cy5cbiAqXG4gKiBOby1vcHMgaW5zaWRlIGEgRGF0YWJyaWNrcyBBcHAgZW52LCB3aGVuIGByb2xlYCBpcyB1bmRlZmluZWQsIG9yIHdoZW4gdGhlXG4gKiBzY2hlbWEgaXMgYWJzZW50LiBCZXN0LWVmZm9ydCBvdGhlcndpc2U6IGFueSBmYWlsdXJlIChlLmcuIHRoZSBsb2NhbCBpZGVudGl0eVxuICogZG9lc24ndCBvd24gdGhlIHNjaGVtYSkgaXMgbG9nZ2VkIGFuZCBzd2FsbG93ZWQgc28gaXQgbmV2ZXIgYmxvY2tzIHN0YXJ0dXAgLVxuICogYSBkaXNhYmxlZCBjYWNoZSBpcyBkZWdyYWRlZCwgbm90IGZhdGFsLlxuICpcbiAqIEBwYXJhbSByb2xlIC0gUG9zdGdyZXMgcm9sZSB0byBncmFudCB0byBhbmQgY29ubmVjdCBhcyAodGhlIHJlc29sdmVkXG4gKiAgIHdvcmtzcGFjZS1jbGllbnQgaWRlbnRpdHkpOyBza2lwcyB3aGVuIHVuZGVmaW5lZC5cbiAqIEBwYXJhbSBsb2dnZXIgLSBMb2dnZXIgdG8gcmVwb3J0IHByb2dyZXNzIG9uLiBEZWZhdWx0cyB0byB0aGlzIG1vZHVsZSdzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBwcm92aXNpb24gfSBmcm9tIFwiQGRieC10b29scy9hcHBraXRcIjtcbiAqXG4gKiBhd2FpdCBwcm92aXNpb24ucHJvdmlzaW9uQ2FjaGVTY2hlbWEoXCJhcHAtc2VydmljZS1wcmluY2lwYWxAZGF0YWJyaWNrcy5jb21cIik7XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm92aXNpb25DYWNoZVNjaGVtYShcbiAgcm9sZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBsb2dnZXI6IExvZ2dlciA9IGRlZmF1bHRMb2dnZXIsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGlzRGF0YWJyaWNrc0FwcEVudigpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiYXV0b3BnOiBza2lwIGNhY2hlIHByb3Zpc2lvbmluZyAoaW5zaWRlIGEgRGF0YWJyaWNrcyBBcHApXCIpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXJvbGUpIHtcbiAgICBsb2dnZXIud2FybihcImF1dG9wZzogc2tpcCBjYWNoZSBwcm92aXNpb25pbmcgKGNvdWxkIG5vdCByZXNvbHZlIGNvbm5lY3Rpbmcgcm9sZSlcIik7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIFBhc3MgYHVzZXJgIGV4cGxpY2l0bHk6IGF1dG9wZyByZXNvbHZlcyB0aGUgY29ubmVjdGlvbiB0YXJnZXRcbiAgLy8gKGhvc3QvZGF0YWJhc2UvZW5kcG9pbnQpIGJ1dCBub3QgdGhlIGlkZW50aXR5LCBzbyBgY3JlYXRlTGFrZWJhc2VQb29sYCdzXG4gIC8vIHN5bmNocm9ub3VzIHVzZXJuYW1lIGxvb2t1cCB3b3VsZCBvdGhlcndpc2UgdGhyb3cuIGBnZXRXb3Jrc3BhY2VDbGllbnQoe30pYFxuICAvLyByZXR1cm5zIGEgZnJlc2ggZGVmYXVsdC1hdXRoIGNsaWVudCAtIGxpdGVyYWxseSBgbmV3IFdvcmtzcGFjZUNsaWVudCh7fSlgLFxuICAvLyBidXQgYnVpbHQgYWdhaW5zdCB0aGUgU0RLIHZlcnNpb24gQXBwS2l0J3MgYGNyZWF0ZUxha2ViYXNlUG9vbGAgZXhwZWN0c1xuICAvLyAoaW1wb3J0aW5nIHRoZSBTREsgY2xhc3MgZGlyZWN0bHkgaGVyZSBwdWxscyBhIG5ld2VyLCB0eXBlLWluY29tcGF0aWJsZSBjb3B5KS5cbiAgY29uc3QgcG9vbCA9IGNyZWF0ZUxha2ViYXNlUG9vbChcbiAgICBwb3N0Z3Jlc0Nvbm5lY3Rpb25PcHRpb25zKHtcbiAgICAgIHVzZXI6IHJvbGUsXG4gICAgICB3b3Jrc3BhY2VDbGllbnQ6IGdldFdvcmtzcGFjZUNsaWVudCh7fSksXG4gICAgICBjb25uZWN0aW9uVGltZW91dE1pbGxpczogQ09OTkVDVF9USU1FT1VUX01TLFxuICAgICAgc3RhdGVtZW50X3RpbWVvdXQ6IFNUQVRFTUVOVF9USU1FT1VUX01TLFxuICAgIH0pLFxuICApO1xuICB0cnkge1xuICAgIGNvbnN0IGZvdW5kID0gYXdhaXQgcG9vbC5xdWVyeShcbiAgICAgIFwiU0VMRUNUIDEgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEuc2NoZW1hdGEgV0hFUkUgc2NoZW1hX25hbWUgPSAkMVwiLFxuICAgICAgW0NBQ0hFX1NDSEVNQV0sXG4gICAgKTtcbiAgICBpZiAoZm91bmQucm93Q291bnQgPT09IDApIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImF1dG9wZzogc2tpcCBjYWNoZSBwcm92aXNpb25pbmcgKHNjaGVtYSBhYnNlbnQpXCIsIHsgc2NoZW1hOiBDQUNIRV9TQ0hFTUEgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3Qgc3FsIG9mIGNhY2hlR3JhbnRTdGF0ZW1lbnRzKHJvbGUpKSB7XG4gICAgICBhd2FpdCBwb29sLnF1ZXJ5KHNxbCk7XG4gICAgfVxuICAgIGxvZ2dlci5pbmZvKFwiYXV0b3BnOiBncmFudGVkIGNhY2hlIHNjaGVtYVwiLCB7IHNjaGVtYTogQ0FDSEVfU0NIRU1BLCByb2xlIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIud2FybihcImF1dG9wZzogY2FjaGUgcHJvdmlzaW9uaW5nIGZhaWxlZCAoY29udGludWluZylcIiwge1xuICAgICAgc2NoZW1hOiBDQUNIRV9TQ0hFTUEsXG4gICAgICBlcnJvcjogdG9FcnJvcihlcnIpLFxuICAgIH0pO1xuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IHBvb2wuZW5kKCkuY2F0Y2goKCkgPT4ge30pO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  /** In-process request tags shared by AppKit plugins. */
2
- const STORE_KEY = Symbol.for("@dbx-tools/appkit/request-tags");
2
+ const STORE_KEY = Symbol.for("@dbx-tools/appkit");
3
3
  const globalStore = globalThis;
4
4
  const store = (globalStore[STORE_KEY] ??= new WeakMap());
5
5
  /** Inject one tag into an in-process request context. */
@@ -25,4 +25,4 @@ export function injectRequestTags(request, tags) {
25
25
  export function getRequestTags(request) {
26
26
  return Object.fromEntries(store.get(request) ?? []);
27
27
  }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC10YWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlcXVlc3QtdGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFPeEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQy9ELE1BQU0sV0FBVyxHQUFHLFVBRW5CLENBQUM7QUFDRixNQUFNLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBeUIsQ0FBQyxDQUFDO0FBRWhGLHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLElBQVksRUFBRSxLQUFzQjtJQUNwRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPO0lBQ3hCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsSUFBSSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBQzFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBZSxFQUNmLElBQTJEO0lBRTNELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakQsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztBQUNILENBQUM7QUFFRCwwRUFBMEU7QUFDMUUsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogSW4tcHJvY2VzcyByZXF1ZXN0IHRhZ3Mgc2hhcmVkIGJ5IEFwcEtpdCBwbHVnaW5zLiAqL1xuXG4vKiogUHJpbWl0aXZlIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHJlcXVlc3QgdGFnIHN0b3JlLiAqL1xuZXhwb3J0IHR5cGUgUmVxdWVzdFRhZ1ZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcblxudHlwZSBSZXF1ZXN0VGFnTWFwID0gTWFwPHN0cmluZywgUmVxdWVzdFRhZ1ZhbHVlPjtcblxuY29uc3QgU1RPUkVfS0VZID0gU3ltYm9sLmZvcihcIkBkYngtdG9vbHMvYXBwa2l0L3JlcXVlc3QtdGFnc1wiKTtcbmNvbnN0IGdsb2JhbFN0b3JlID0gZ2xvYmFsVGhpcyBhcyB0eXBlb2YgZ2xvYmFsVGhpcyAmIHtcbiAgW1NUT1JFX0tFWV0/OiBXZWFrTWFwPG9iamVjdCwgUmVxdWVzdFRhZ01hcD47XG59O1xuY29uc3Qgc3RvcmUgPSAoZ2xvYmFsU3RvcmVbU1RPUkVfS0VZXSA/Pz0gbmV3IFdlYWtNYXA8b2JqZWN0LCBSZXF1ZXN0VGFnTWFwPigpKTtcblxuLyoqIEluamVjdCBvbmUgdGFnIGludG8gYW4gaW4tcHJvY2VzcyByZXF1ZXN0IGNvbnRleHQuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmVxdWVzdFRhZyhyZXF1ZXN0OiBvYmplY3QsIG5hbWU6IHN0cmluZywgdmFsdWU6IFJlcXVlc3RUYWdWYWx1ZSk6IHZvaWQge1xuICBjb25zdCBub3JtYWxpemVkID0gbmFtZS50cmltKCk7XG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuO1xuICBsZXQgdGFncyA9IHN0b3JlLmdldChyZXF1ZXN0KTtcbiAgaWYgKCF0YWdzKSB7XG4gICAgdGFncyA9IG5ldyBNYXA8c3RyaW5nLCBSZXF1ZXN0VGFnVmFsdWU+KCk7XG4gICAgc3RvcmUuc2V0KHJlcXVlc3QsIHRhZ3MpO1xuICB9XG4gIHRhZ3Muc2V0KG5vcm1hbGl6ZWQsIHZhbHVlKTtcbn1cblxuLyoqIEluamVjdCBtdWx0aXBsZSB0YWdzIGludG8gYW4gaW4tcHJvY2VzcyByZXF1ZXN0IGNvbnRleHQuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UmVxdWVzdFRhZ3MoXG4gIHJlcXVlc3Q6IG9iamVjdCxcbiAgdGFnczogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgUmVxdWVzdFRhZ1ZhbHVlIHwgdW5kZWZpbmVkPj4sXG4pOiB2b2lkIHtcbiAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRhZ3MpKSB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIGluamVjdFJlcXVlc3RUYWcocmVxdWVzdCwgbmFtZSwgdmFsdWUpO1xuICB9XG59XG5cbi8qKiBSZWFkIGEgc25hcHNob3Qgb2YgdGFncyBpbmplY3RlZCBieSBBcHBLaXQgcGx1Z2lucyBmb3Igb25lIHJlcXVlc3QuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWVzdFRhZ3MocmVxdWVzdDogb2JqZWN0KTogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgUmVxdWVzdFRhZ1ZhbHVlPj4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKHN0b3JlLmdldChyZXF1ZXN0KSA/PyBbXSk7XG59XG4iXX0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC10YWdzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JlcXVlc3QtdGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFPeEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2xELE1BQU0sV0FBVyxHQUFHLFVBRW5CLENBQUM7QUFDRixNQUFNLEtBQUssR0FBRyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLE9BQU8sRUFBeUIsQ0FBQyxDQUFDO0FBRWhGLHlEQUF5RDtBQUN6RCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBZSxFQUFFLElBQVksRUFBRSxLQUFzQjtJQUNwRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsSUFBSSxDQUFDLFVBQVU7UUFBRSxPQUFPO0lBQ3hCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1YsSUFBSSxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO1FBQzFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBZSxFQUNmLElBQTJEO0lBRTNELEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakQsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztBQUNILENBQUM7QUFFRCwwRUFBMEU7QUFDMUUsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFlO0lBQzVDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogSW4tcHJvY2VzcyByZXF1ZXN0IHRhZ3Mgc2hhcmVkIGJ5IEFwcEtpdCBwbHVnaW5zLiAqL1xuXG4vKiogUHJpbWl0aXZlIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHJlcXVlc3QgdGFnIHN0b3JlLiAqL1xuZXhwb3J0IHR5cGUgUmVxdWVzdFRhZ1ZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbjtcblxudHlwZSBSZXF1ZXN0VGFnTWFwID0gTWFwPHN0cmluZywgUmVxdWVzdFRhZ1ZhbHVlPjtcblxuY29uc3QgU1RPUkVfS0VZID0gU3ltYm9sLmZvcihcIkBkYngtdG9vbHMvYXBwa2l0XCIpO1xuY29uc3QgZ2xvYmFsU3RvcmUgPSBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICYge1xuICBbU1RPUkVfS0VZXT86IFdlYWtNYXA8b2JqZWN0LCBSZXF1ZXN0VGFnTWFwPjtcbn07XG5jb25zdCBzdG9yZSA9IChnbG9iYWxTdG9yZVtTVE9SRV9LRVldID8/PSBuZXcgV2Vha01hcDxvYmplY3QsIFJlcXVlc3RUYWdNYXA+KCkpO1xuXG4vKiogSW5qZWN0IG9uZSB0YWcgaW50byBhbiBpbi1wcm9jZXNzIHJlcXVlc3QgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSZXF1ZXN0VGFnKHJlcXVlc3Q6IG9iamVjdCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogUmVxdWVzdFRhZ1ZhbHVlKTogdm9pZCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBuYW1lLnRyaW0oKTtcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm47XG4gIGxldCB0YWdzID0gc3RvcmUuZ2V0KHJlcXVlc3QpO1xuICBpZiAoIXRhZ3MpIHtcbiAgICB0YWdzID0gbmV3IE1hcDxzdHJpbmcsIFJlcXVlc3RUYWdWYWx1ZT4oKTtcbiAgICBzdG9yZS5zZXQocmVxdWVzdCwgdGFncyk7XG4gIH1cbiAgdGFncy5zZXQobm9ybWFsaXplZCwgdmFsdWUpO1xufVxuXG4vKiogSW5qZWN0IG11bHRpcGxlIHRhZ3MgaW50byBhbiBpbi1wcm9jZXNzIHJlcXVlc3QgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSZXF1ZXN0VGFncyhcbiAgcmVxdWVzdDogb2JqZWN0LFxuICB0YWdzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBSZXF1ZXN0VGFnVmFsdWUgfCB1bmRlZmluZWQ+Pixcbik6IHZvaWQge1xuICBmb3IgKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGFncykpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgaW5qZWN0UmVxdWVzdFRhZyhyZXF1ZXN0LCBuYW1lLCB2YWx1ZSk7XG4gIH1cbn1cblxuLyoqIFJlYWQgYSBzbmFwc2hvdCBvZiB0YWdzIGluamVjdGVkIGJ5IEFwcEtpdCBwbHVnaW5zIGZvciBvbmUgcmVxdWVzdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1ZXN0VGFncyhyZXF1ZXN0OiBvYmplY3QpOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBSZXF1ZXN0VGFnVmFsdWU+PiB7XG4gIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoc3RvcmUuZ2V0KHJlcXVlc3QpID8/IFtdKTtcbn1cbiJdfQ==
@@ -10,7 +10,7 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
10
10
  import { createRequire } from "node:module";
11
11
  import path from "node:path";
12
12
  import { pathToFileURL } from "node:url";
13
- import { stringUtils, token } from "@dbx-tools/shared-core";
13
+ import { trimToNull, USER_EMAIL_HEADER, USER_ID_HEADER } from "@dbx-tools/shared-core";
14
14
  import { trace, } from "@opentelemetry/api";
15
15
  /** Root-span user attribute consumed by MLflow and OpenTelemetry backends. */
16
16
  export const USER_TRACE_ATTRIBUTE = "user.id";
@@ -49,9 +49,9 @@ export function stampHttpTraceUser(span, request) {
49
49
  const first = (name) => {
50
50
  const raw = record[name];
51
51
  const value = Array.isArray(raw) ? raw[0] : raw;
52
- return stringUtils.trimToNull(value) ?? undefined;
52
+ return trimToNull(value) ?? undefined;
53
53
  };
54
- const user = first(token.USER_EMAIL_HEADER) ?? first(token.USER_ID_HEADER);
54
+ const user = first(USER_EMAIL_HEADER) ?? first(USER_ID_HEADER);
55
55
  if (user)
56
56
  span.setAttribute(USER_TRACE_ATTRIBUTE, user);
57
57
  }
@@ -155,4 +155,4 @@ export async function deferredNativeTracerProvider() {
155
155
  },
156
156
  };
157
157
  }
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7Ozs7Ozs7OztBQUc5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUNMLEtBQUssR0FLTixNQUFNLG9CQUFvQixDQUFDO0FBTzVCLDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7QUEyQzlDLDREQUE0RDtBQUM1RCxTQUFTLFdBQVcsQ0FBQyxPQUF3QjtJQUMzQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0MsQ0FBQztBQUVELHVGQUF1RjtBQUN2RixNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLE9BQXdCLEVBQ3hCLFVBQXNDLEVBQUU7SUFFeEMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzVDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dC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QUFFRCw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxTQUF3QjtJQUN4RSxDQUFDLE1BQU0sMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSw0QkFBNEI7SUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxzQkFBc0IsRUFBRSxDQUFDO0lBQy9DLE9BQU87UUFDTCxTQUFTLENBQUMsSUFBWSxFQUFFLE9BQWdCLEVBQUUsT0FBdUI7WUFDL0QsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFZLEVBQUU7Z0JBQzdCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUTtvQkFDbkIsTUFBTSxNQUFNLEdBQUcsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3RGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQVksQ0FBQztvQkFDL0QsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDbEUsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBcHBLaXQgdGVsZW1ldHJ5IGNvbXBhdGliaWxpdHkgaGVscGVycy4gKi9cblxuaW1wb3J0IHR5cGUgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tIFwibm9kZTpodHRwXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5cbmltcG9ydCB7IHN0cmluZ1V0aWxzLCB0b2tlbiB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQge1xuICB0cmFjZSxcbiAgdHlwZSBTcGFuLFxuICB0eXBlIFRyYWNlcixcbiAgdHlwZSBUcmFjZXJPcHRpb25zLFxuICB0eXBlIFRyYWNlclByb3ZpZGVyLFxufSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvYXBpXCI7XG5pbXBvcnQgdHlwZSB7IFNwYW5Qcm9jZXNzb3IgfSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvc2RrLXRyYWNlLWJhc2VcIjtcblxudHlwZSBJbmNvbWluZ1JlcXVlc3RGaWx0ZXIgPSAocmVxdWVzdDogSW5jb21pbmdNZXNzYWdlKSA9PiBib29sZWFuO1xudHlwZSBPdXRnb2luZ1JlcXVlc3RGaWx0ZXIgPSAocmVxdWVzdDogdW5rbm93bikgPT4gYm9vbGVhbjtcbnR5cGUgU3BhbkF0dHJpYnV0ZUhvb2sgPSAoc3BhbjogU3BhbiwgcmVxdWVzdDogdW5rbm93bikgPT4gdm9pZDtcblxuLyoqIFJvb3Qtc3BhbiB1c2VyIGF0dHJpYnV0ZSBjb25zdW1lZCBieSBNTGZsb3cgYW5kIE9wZW5UZWxlbWV0cnkgYmFja2VuZHMuICovXG5leHBvcnQgY29uc3QgVVNFUl9UUkFDRV9BVFRSSUJVVEUgPSBcInVzZXIuaWRcIjtcblxuaW50ZXJmYWNlIE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb25Db25maWcge1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaWdub3JlSW5jb21pbmdSZXF1ZXN0SG9vaz86IEluY29taW5nUmVxdWVzdEZpbHRlcjtcbiAgcmVhZG9ubHkgaWdub3JlT3V0Z29pbmdSZXF1ZXN0SG9vaz86IE91dGdvaW5nUmVxdWVzdEZpbHRlcjtcbiAgcmVhZG9ubHkgYXBwbHlDdXN0b21BdHRyaWJ1dGVzT25TcGFuPzogU3BhbkF0dHJpYnV0ZUhvb2s7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmludGVyZmFjZSBOYXRpdmVJbnN0cnVtZW50YXRpb24ge1xuICBzZXRUcmFjZXJQcm92aWRlcj8ocHJvdmlkZXI6IFRyYWNlclByb3ZpZGVyKTogdm9pZDtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24gZXh0ZW5kcyBOYXRpdmVJbnN0cnVtZW50YXRpb24ge1xuICBnZXRDb25maWcoKTogTmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbkNvbmZpZztcbiAgc2V0Q29uZmlnKGNvbmZpZzogTmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbkNvbmZpZyk6IHZvaWQ7XG59XG5cbmludGVyZmFjZSBOYXRpdmVUZWxlbWV0cnlNYW5hZ2VyIHtcbiAgdHJhY2VyUHJvdmlkZXI/OiBUcmFjZXJQcm92aWRlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVRlbGVtZXRyeU1hbmFnZXJDbGFzcyB7XG4gIGdldEluc3RhbmNlKCk6IE5hdGl2ZVRlbGVtZXRyeU1hbmFnZXI7XG4gIHJlZ2lzdGVyU3BhblByb2Nlc3Nvcihwcm9jZXNzb3I6IFNwYW5Qcm9jZXNzb3IpOiB2b2lkO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgQXBwS2l0J3MgbmF0aXZlIEhUVFAgcmVxdWVzdCB0cmFjaW5nLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVIdHRwVGVsZW1ldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IHBhdGhzIHRvIGV4Y2x1ZGUuIEEgdHJhaWxpbmcgYCpgIG1hdGNoZXMgZXZlcnkgcGF0aCB3aXRoIHRoYXRcbiAgICogcHJlZml4OyBvdGhlciB2YWx1ZXMgYXJlIGV4YWN0IHBhdGggbWF0Y2hlcy4gUXVlcnkgc3RyaW5ncyBhcmUgaWdub3JlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIEFkZGl0aW9uYWwgY2FsbGVyLW93bmVkIHJlcXVlc3QgZmlsdGVyLiBSZXR1cm5pbmcgYHRydWVgIGV4Y2x1ZGVzIHRoZSByZXF1ZXN0LiAqL1xuICByZWFkb25seSBmaWx0ZXI/OiBJbmNvbWluZ1JlcXVlc3RGaWx0ZXI7XG4gIC8qKiBBZGRpdGlvbmFsIGNhbGxlci1vd25lZCBvdXRnb2luZyByZXF1ZXN0IGZpbHRlci4gUmV0dXJuaW5nIGB0cnVlYCBleGNsdWRlcyB0aGUgcmVxdWVzdC4gKi9cbiAgcmVhZG9ubHkgb3V0Z29pbmdGaWx0ZXI/OiBPdXRnb2luZ1JlcXVlc3RGaWx0ZXI7XG4gIC8qKiBBZGRpdGlvbmFsIGNhbGxlci1vd25lZCBob29rIGZvciBhdHRyaWJ1dGVzIG9uIG5hdGl2ZSBIVFRQIHNwYW5zLiAqL1xuICByZWFkb25seSBzcGFuSG9vaz86IFNwYW5BdHRyaWJ1dGVIb29rO1xufVxuXG4vKiogUmV0dXJuIHRoZSByZXF1ZXN0IHBhdGhuYW1lIHdpdGhvdXQgaXRzIHF1ZXJ5IHN0cmluZy4gKi9cbmZ1bmN0aW9uIHJlcXVlc3RQYXRoKHJlcXVlc3Q6IEluY29taW5nTWVzc2FnZSk6IHN0cmluZyB7XG4gIHJldHVybiByZXF1ZXN0LnVybD8uc3BsaXQoXCI/XCIsIDEpWzBdID8/IFwiXCI7XG59XG5cbi8qKiBXaGV0aGVyIG9uZSByZXF1ZXN0IG1hdGNoZXMgdGhlIGRlZmF1bHQgb3IgY29uZmlndXJlZCBIVFRQIHRlbGVtZXRyeSBleGNsdXNpb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4Y2x1ZGVIdHRwVGVsZW1ldHJ5UmVxdWVzdChcbiAgcmVxdWVzdDogSW5jb21pbmdNZXNzYWdlLFxuICBvcHRpb25zOiBOYXRpdmVIdHRwVGVsZW1ldHJ5T3B0aW9ucyA9IHt9LFxuKTogYm9vbGVhbiB7XG4gIGlmIChyZXF1ZXN0Lm1ldGhvZCA9PT0gXCJIRUFEXCIpIHJldHVybiB0cnVlO1xuICBjb25zdCBwYXRobmFtZSA9IHJlcXVlc3RQYXRoKHJlcXVlc3QpO1xuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2Ygb3B0aW9ucy5leGNsdWRlID8/IFtdKSB7XG4gICAgaWYgKHBhdHRlcm4uZW5kc1dpdGgoXCIqXCIpKSB7XG4gICAgICBpZiAocGF0aG5hbWUuc3RhcnRzV2l0aChwYXR0ZXJuLnNsaWNlKDAsIC0xKSkpIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAocGF0aG5hbWUgPT09IHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9ucy5maWx0ZXI/LihyZXF1ZXN0KSA/PyBmYWxzZTtcbn1cblxuLyoqIEV4Y2x1ZGUgb3V0Z29pbmcgSFRUUCBzcGFucyB0aGF0IGhhdmUgbm8gcmVjb3JkaW5nIHNlbWFudGljIHBhcmVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGNsdWRlVW5wYXJlbnRlZE91dGdvaW5nSHR0cFRlbGVtZXRyeShcbiAgX3JlcXVlc3Q/OiB1bmtub3duLFxuICBzcGFuOiBTcGFuIHwgdW5kZWZpbmVkID0gdHJhY2UuZ2V0QWN0aXZlU3BhbigpLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAhc3Bhbj8uaXNSZWNvcmRpbmcoKTtcbn1cblxuLyoqIFN0YW1wIHRoZSBmb3J3YXJkZWQgcmVxdWVzdCBpZGVudGl0eSBvbnRvIGEgbmF0aXZlIEFwcEtpdCBIVFRQIHNwYW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RhbXBIdHRwVHJhY2VVc2VyKHNwYW46IFNwYW4sIHJlcXVlc3Q6IHVua25vd24pOiB2b2lkIHtcbiAgaWYgKCFyZXF1ZXN0IHx8IHR5cGVvZiByZXF1ZXN0ICE9PSBcIm9iamVjdFwiKSByZXR1cm47XG4gIGNvbnN0IGhlYWRlcnMgPSAocmVxdWVzdCBhcyB7IGhlYWRlcnM/OiB1bmtub3duIH0pLmhlYWRlcnM7XG4gIGlmICghaGVhZGVycyB8fCB0eXBlb2YgaGVhZGVycyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGhlYWRlcnMpKSByZXR1cm47XG4gIGNvbnN0IHJlY29yZCA9IGhlYWRlcnMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ+O1xuICBjb25zdCBmaXJzdCA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHJhdyA9IHJlY29yZFtuYW1lXTtcbiAgICBjb25zdCB2YWx1ZSA9IEFycmF5LmlzQXJyYXkocmF3KSA/IHJhd1swXSA6IHJhdztcbiAgICByZXR1cm4gc3RyaW5nVXRpbHMudHJpbVRvTnVsbCh2YWx1ZSkgPz8gdW5kZWZpbmVkO1xuICB9O1xuICBjb25zdCB1c2VyID0gZmlyc3QodG9rZW4uVVNFUl9FTUFJTF9IRUFERVIpID8/IGZpcnN0KHRva2VuLlVTRVJfSURfSEVBREVSKTtcbiAgaWYgKHVzZXIpIHNwYW4uc2V0QXR0cmlidXRlKFVTRVJfVFJBQ0VfQVRUUklCVVRFLCB1c2VyKTtcbn1cblxuZnVuY3Rpb24gYXBwS2l0SW50ZXJuYWxNb2R1bGVVcmwocmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuICBjb25zdCBwYWNrYWdlUm9vdCA9IHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoXCJAZGF0YWJyaWNrcy9hcHBraXQvcGFja2FnZS5qc29uXCIpKTtcbiAgcmV0dXJuIHBhdGhUb0ZpbGVVUkwocGF0aC5qb2luKHBhY2thZ2VSb290LCBcImRpc3RcIiwgLi4ucmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKSkpLmhyZWY7XG59XG5cbmZ1bmN0aW9uIGlzTmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24ge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBjYW5kaWRhdGUgPSB2YWx1ZSBhcyBQYXJ0aWFsPE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24+O1xuICByZXR1cm4gdHlwZW9mIGNhbmRpZGF0ZS5nZXRDb25maWcgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgY2FuZGlkYXRlLnNldENvbmZpZyA9PT0gXCJmdW5jdGlvblwiO1xufVxuXG5hc3luYyBmdW5jdGlvbiBuYXRpdmVJbnN0cnVtZW50YXRpb25zKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgTmF0aXZlSW5zdHJ1bWVudGF0aW9uPj4ge1xuICBjb25zdCBsb2FkZWQgPSAoYXdhaXQgaW1wb3J0KGFwcEtpdEludGVybmFsTW9kdWxlVXJsKFwidGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbnMuanNcIikpKSBhcyB7XG4gICAgaW5zdHJ1bWVudGF0aW9ucz86IFJlY29yZDxzdHJpbmcsIE5hdGl2ZUluc3RydW1lbnRhdGlvbj47XG4gIH07XG4gIGlmICghbG9hZGVkLmluc3RydW1lbnRhdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJAZGF0YWJyaWNrcy9hcHBraXQgbm8gbG9uZ2VyIGV4cG9zZXMgaXRzIG5hdGl2ZSBpbnN0cnVtZW50YXRpb25zXCIpO1xuICB9XG4gIHJldHVybiBsb2FkZWQuaW5zdHJ1bWVudGF0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbigpOiBQcm9taXNlPE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24+IHtcbiAgY29uc3QgaW5zdHJ1bWVudGF0aW9uID0gKGF3YWl0IG5hdGl2ZUluc3RydW1lbnRhdGlvbnMoKSkuaHR0cDtcbiAgaWYgKCFpc05hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQGRhdGFicmlja3MvYXBwa2l0IG5vIGxvbmdlciBleHBvc2VzIHRoZSBleHBlY3RlZCBuYXRpdmUgSFRUUCB0ZWxlbWV0cnkgaW5zdHJ1bWVudGF0aW9uXCIsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyQ2xhc3MoKTogUHJvbWlzZTxOYXRpdmVUZWxlbWV0cnlNYW5hZ2VyQ2xhc3M+IHtcbiAgY29uc3QgbG9hZGVkID0gKGF3YWl0IGltcG9ydChhcHBLaXRJbnRlcm5hbE1vZHVsZVVybChcInRlbGVtZXRyeS90ZWxlbWV0cnktbWFuYWdlci5qc1wiKSkpIGFzIHtcbiAgICBUZWxlbWV0cnlNYW5hZ2VyPzogTmF0aXZlVGVsZW1ldHJ5TWFuYWdlckNsYXNzO1xuICB9O1xuICBpZiAoIWxvYWRlZC5UZWxlbWV0cnlNYW5hZ2VyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQGRhdGFicmlja3MvYXBwa2l0IG5vIGxvbmdlciBleHBvc2VzIGl0cyBuYXRpdmUgdGVsZW1ldHJ5IG1hbmFnZXJcIik7XG4gIH1cbiAgcmV0dXJuIGxvYWRlZC5UZWxlbWV0cnlNYW5hZ2VyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyKCk6IFByb21pc2U8TmF0aXZlVGVsZW1ldHJ5TWFuYWdlcj4ge1xuICByZXR1cm4gKGF3YWl0IG5hdGl2ZVRlbGVtZXRyeU1hbmFnZXJDbGFzcygpKS5nZXRJbnN0YW5jZSgpO1xufVxuXG5mdW5jdGlvbiByZXF1aXJlTmF0aXZlVHJhY2VyUHJvdmlkZXIobWFuYWdlcjogTmF0aXZlVGVsZW1ldHJ5TWFuYWdlcik6IFRyYWNlclByb3ZpZGVyIHtcbiAgaWYgKCFtYW5hZ2VyLnRyYWNlclByb3ZpZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQXBwS2l0J3MgbmF0aXZlIHRyYWNlciBwcm92aWRlciBoYXMgbm90IHN0YXJ0ZWRcIik7XG4gIH1cbiAgcmV0dXJuIG1hbmFnZXIudHJhY2VyUHJvdmlkZXI7XG59XG5cbi8qKlxuICogRXh0ZW5kIEFwcEtpdCdzIG5hdGl2ZSBIVFRQIHJlcXVlc3QgZmlsdGVyIHdpdGhvdXQgcmVnaXN0ZXJpbmcgYSBzZWNvbmQgSFRUUFxuICogaW5zdHJ1bWVudGF0aW9uLiBBcHBLaXQgMC44MSBvd25zIHRoZSBpbnN0cnVtZW50YXRpb24gYnV0IGRvZXMgbm90IGV4cG9zZSBhXG4gKiBwdWJsaWMgZmlsdGVyIG9wdGlvbiwgc28gdGhpcyBjb21wYXRpYmlsaXR5IGhvb2sgbXV0YXRlcyBpdHMgZXhpc3RpbmdcbiAqIHNpbmdsZXRvbiBiZWZvcmUgYGNyZWF0ZUFwcCgpYCByZWdpc3RlcnMgaXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25maWd1cmVOYXRpdmVIdHRwVGVsZW1ldHJ5KFxuICBvcHRpb25zOiBOYXRpdmVIdHRwVGVsZW1ldHJ5T3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGluc3RydW1lbnRhdGlvbiA9IGF3YWl0IG5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24oKTtcbiAgY29uc3QgY29uZmlnID0gaW5zdHJ1bWVudGF0aW9uLmdldENvbmZpZygpO1xuICBjb25zdCBhcHBLaXRGaWx0ZXIgPSBjb25maWcuaWdub3JlSW5jb21pbmdSZXF1ZXN0SG9vaztcbiAgY29uc3QgYXBwS2l0T3V0Z29pbmdGaWx0ZXIgPSBjb25maWcuaWdub3JlT3V0Z29pbmdSZXF1ZXN0SG9vaztcbiAgY29uc3QgYXBwS2l0U3Bhbkhvb2sgPSBjb25maWcuYXBwbHlDdXN0b21BdHRyaWJ1dGVzT25TcGFuO1xuICBpbnN0cnVtZW50YXRpb24uc2V0Q29uZmlnKHtcbiAgICAuLi5jb25maWcsXG4gICAgaWdub3JlSW5jb21pbmdSZXF1ZXN0SG9vazogKHJlcXVlc3QpID0+XG4gICAgICBCb29sZWFuKGFwcEtpdEZpbHRlcj8uKHJlcXVlc3QpKSB8fCBleGNsdWRlSHR0cFRlbGVtZXRyeVJlcXVlc3QocmVxdWVzdCwgb3B0aW9ucyksXG4gICAgaWdub3JlT3V0Z29pbmdSZXF1ZXN0SG9vazogKHJlcXVlc3QpID0+XG4gICAgICBCb29sZWFuKGFwcEtpdE91dGdvaW5nRmlsdGVyPy4ocmVxdWVzdCkpIHx8IEJvb2xlYW4ob3B0aW9ucy5vdXRnb2luZ0ZpbHRlcj8uKHJlcXVlc3QpKSxcbiAgICBhcHBseUN1c3RvbUF0dHJpYnV0ZXNPblNwYW46IChzcGFuLCByZXF1ZXN0KSA9PiB7XG4gICAgICBhcHBLaXRTcGFuSG9vaz8uKHNwYW4sIHJlcXVlc3QpO1xuICAgICAgb3B0aW9ucy5zcGFuSG9vaz8uKHNwYW4sIHJlcXVlc3QpO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEJpbmQgQXBwS2l0J3MgbmF0aXZlIGluc3RydW1lbnRhdGlvbnMgdG8gdGhlIHByb3ZpZGVyIEFwcEtpdCBzdGFydGVkLiBUaGlzIGlzXG4gKiBjYWxsZWQgYWZ0ZXIgQXBwS2l0J3MgZGVmZXJyZWQgYFRlbGVtZXRyeU1hbmFnZXIuc3RhcnQoKWAgcGhhc2Ugc28gYSBydW50aW1lXG4gKiB0aGF0IGFscmVhZHkgb2NjdXBpZWQgdGhlIGdsb2JhbCBPVGVsIHNsb3QgY2Fubm90IGxlYXZlIG5hdGl2ZSBzcGFucyBuby1vcC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJpbmROYXRpdmVUZWxlbWV0cnlQcm92aWRlcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbWFuYWdlciA9IGF3YWl0IG5hdGl2ZVRlbGVtZXRyeU1hbmFnZXIoKTtcbiAgaWYgKCFtYW5hZ2VyLnRyYWNlclByb3ZpZGVyKSByZXR1cm4gZmFsc2U7XG4gIGZvciAoY29uc3QgaW5zdHJ1bWVudGF0aW9uIG9mIE9iamVjdC52YWx1ZXMoYXdhaXQgbmF0aXZlSW5zdHJ1bWVudGF0aW9ucygpKSkge1xuICAgIGluc3RydW1lbnRhdGlvbi5zZXRUcmFjZXJQcm92aWRlcj8uKG1hbmFnZXIudHJhY2VyUHJvdmlkZXIpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ29udHJpYnV0ZSBhIHByb2Nlc3NvciBiZWZvcmUgQXBwS2l0IGJ1aWxkcyBpdHMgbmF0aXZlIHRyYWNlciBwcm92aWRlci4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlck5hdGl2ZVNwYW5Qcm9jZXNzb3IocHJvY2Vzc29yOiBTcGFuUHJvY2Vzc29yKTogUHJvbWlzZTx2b2lkPiB7XG4gIChhd2FpdCBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyQ2xhc3MoKSkucmVnaXN0ZXJTcGFuUHJvY2Vzc29yKHByb2Nlc3Nvcik7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgdHJhY2VyIHByb3ZpZGVyIHRoYXQgcmVzb2x2ZXMgQXBwS2l0J3MgcHJvdmlkZXIgd2hlbiBhIHRyYWNlciBtZXRob2RcbiAqIGlzIGludm9rZWQuIEFwcEtpdCBzdGFydHMgaXRzIHByb3ZpZGVyIGFmdGVyIHBsdWdpbiBzZXR1cCwgd2hpbGUgY29uc3VtZXJzXG4gKiBzdWNoIGFzIE1hc3RyYSBjb25zdHJ1Y3QgdGhlaXIgT1RlbCBicmlkZ2UgZHVyaW5nIHNldHVwLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVmZXJyZWROYXRpdmVUcmFjZXJQcm92aWRlcigpOiBQcm9taXNlPFRyYWNlclByb3ZpZGVyPiB7XG4gIGNvbnN0IG1hbmFnZXIgPSBhd2FpdCBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyKCk7XG4gIHJldHVybiB7XG4gICAgZ2V0VHJhY2VyKG5hbWU6IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgb3B0aW9ucz86IFRyYWNlck9wdGlvbnMpOiBUcmFjZXIge1xuICAgICAgcmV0dXJuIG5ldyBQcm94eSh7fSBhcyBUcmFjZXIsIHtcbiAgICAgICAgZ2V0KF90YXJnZXQsIHByb3BlcnR5KSB7XG4gICAgICAgICAgY29uc3QgdHJhY2VyID0gcmVxdWlyZU5hdGl2ZVRyYWNlclByb3ZpZGVyKG1hbmFnZXIpLmdldFRyYWNlcihuYW1lLCB2ZXJzaW9uLCBvcHRpb25zKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHRyYWNlciwgcHJvcGVydHksIHRyYWNlcikgYXMgdW5rbm93bjtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyB2YWx1ZS5iaW5kKHRyYWNlcikgOiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVsZW1ldHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbGVtZXRyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4Q0FBOEM7Ozs7Ozs7OztBQUc5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkYsT0FBTyxFQUNMLEtBQUssR0FLTixNQUFNLG9CQUFvQixDQUFDO0FBTzVCLDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7QUEyQzlDLDREQUE0RDtBQUM1RCxTQUFTLFdBQVcsQ0FBQyxPQUF3QjtJQUMzQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0MsQ0FBQztBQUVELHVGQUF1RjtBQUN2RixNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLE9BQXdCLEVBQ3hCLFVBQXNDLEVBQUU7SUFFeEMsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzVDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMs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TUFBTSxDQUFDLEtBQUssVUFBVSwyQkFBMkIsQ0FBQyxTQUF3QjtJQUN4RSxDQUFDLE1BQU0sMkJBQTJCLEVBQUUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSw0QkFBNEI7SUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxzQkFBc0IsRUFBRSxDQUFDO0lBQy9DLE9BQU87UUFDTCxTQUFTLENBQUMsSUFBWSxFQUFFLE9BQWdCLEVBQUUsT0FBdUI7WUFDL0QsT0FBTyxJQUFJLEtBQUssQ0FBQyxFQUFZLEVBQUU7Z0JBQzdCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUTtvQkFDbkIsTUFBTSxNQUFNLEdBQUcsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7b0JBQ3RGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQVksQ0FBQztvQkFDL0QsT0FBTyxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDbEUsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBcHBLaXQgdGVsZW1ldHJ5IGNvbXBhdGliaWxpdHkgaGVscGVycy4gKi9cblxuaW1wb3J0IHR5cGUgeyBJbmNvbWluZ01lc3NhZ2UgfSBmcm9tIFwibm9kZTpodHRwXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwYXRoVG9GaWxlVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5cbmltcG9ydCB7IHRyaW1Ub051bGwsIFVTRVJfRU1BSUxfSEVBREVSLCBVU0VSX0lEX0hFQURFUiB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQge1xuICB0cmFjZSxcbiAgdHlwZSBTcGFuLFxuICB0eXBlIFRyYWNlcixcbiAgdHlwZSBUcmFjZXJPcHRpb25zLFxuICB0eXBlIFRyYWNlclByb3ZpZGVyLFxufSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvYXBpXCI7XG5pbXBvcnQgdHlwZSB7IFNwYW5Qcm9jZXNzb3IgfSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvc2RrLXRyYWNlLWJhc2VcIjtcblxudHlwZSBJbmNvbWluZ1JlcXVlc3RGaWx0ZXIgPSAocmVxdWVzdDogSW5jb21pbmdNZXNzYWdlKSA9PiBib29sZWFuO1xudHlwZSBPdXRnb2luZ1JlcXVlc3RGaWx0ZXIgPSAocmVxdWVzdDogdW5rbm93bikgPT4gYm9vbGVhbjtcbnR5cGUgU3BhbkF0dHJpYnV0ZUhvb2sgPSAoc3BhbjogU3BhbiwgcmVxdWVzdDogdW5rbm93bikgPT4gdm9pZDtcblxuLyoqIFJvb3Qtc3BhbiB1c2VyIGF0dHJpYnV0ZSBjb25zdW1lZCBieSBNTGZsb3cgYW5kIE9wZW5UZWxlbWV0cnkgYmFja2VuZHMuICovXG5leHBvcnQgY29uc3QgVVNFUl9UUkFDRV9BVFRSSUJVVEUgPSBcInVzZXIuaWRcIjtcblxuaW50ZXJmYWNlIE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb25Db25maWcge1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgaWdub3JlSW5jb21pbmdSZXF1ZXN0SG9vaz86IEluY29taW5nUmVxdWVzdEZpbHRlcjtcbiAgcmVhZG9ubHkgaWdub3JlT3V0Z29pbmdSZXF1ZXN0SG9vaz86IE91dGdvaW5nUmVxdWVzdEZpbHRlcjtcbiAgcmVhZG9ubHkgYXBwbHlDdXN0b21BdHRyaWJ1dGVzT25TcGFuPzogU3BhbkF0dHJpYnV0ZUhvb2s7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmludGVyZmFjZSBOYXRpdmVJbnN0cnVtZW50YXRpb24ge1xuICBzZXRUcmFjZXJQcm92aWRlcj8ocHJvdmlkZXI6IFRyYWNlclByb3ZpZGVyKTogdm9pZDtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24gZXh0ZW5kcyBOYXRpdmVJbnN0cnVtZW50YXRpb24ge1xuICBnZXRDb25maWcoKTogTmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbkNvbmZpZztcbiAgc2V0Q29uZmlnKGNvbmZpZzogTmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbkNvbmZpZyk6IHZvaWQ7XG59XG5cbmludGVyZmFjZSBOYXRpdmVUZWxlbWV0cnlNYW5hZ2VyIHtcbiAgdHJhY2VyUHJvdmlkZXI/OiBUcmFjZXJQcm92aWRlcjtcbn1cblxuaW50ZXJmYWNlIE5hdGl2ZVRlbGVtZXRyeU1hbmFnZXJDbGFzcyB7XG4gIGdldEluc3RhbmNlKCk6IE5hdGl2ZVRlbGVtZXRyeU1hbmFnZXI7XG4gIHJlZ2lzdGVyU3BhblByb2Nlc3Nvcihwcm9jZXNzb3I6IFNwYW5Qcm9jZXNzb3IpOiB2b2lkO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgQXBwS2l0J3MgbmF0aXZlIEhUVFAgcmVxdWVzdCB0cmFjaW5nLiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXRpdmVIdHRwVGVsZW1ldHJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXF1ZXN0IHBhdGhzIHRvIGV4Y2x1ZGUuIEEgdHJhaWxpbmcgYCpgIG1hdGNoZXMgZXZlcnkgcGF0aCB3aXRoIHRoYXRcbiAgICogcHJlZml4OyBvdGhlciB2YWx1ZXMgYXJlIGV4YWN0IHBhdGggbWF0Y2hlcy4gUXVlcnkgc3RyaW5ncyBhcmUgaWdub3JlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiByZWFkb25seSBzdHJpbmdbXTtcbiAgLyoqIEFkZGl0aW9uYWwgY2FsbGVyLW93bmVkIHJlcXVlc3QgZmlsdGVyLiBSZXR1cm5pbmcgYHRydWVgIGV4Y2x1ZGVzIHRoZSByZXF1ZXN0LiAqL1xuICByZWFkb25seSBmaWx0ZXI/OiBJbmNvbWluZ1JlcXVlc3RGaWx0ZXI7XG4gIC8qKiBBZGRpdGlvbmFsIGNhbGxlci1vd25lZCBvdXRnb2luZyByZXF1ZXN0IGZpbHRlci4gUmV0dXJuaW5nIGB0cnVlYCBleGNsdWRlcyB0aGUgcmVxdWVzdC4gKi9cbiAgcmVhZG9ubHkgb3V0Z29pbmdGaWx0ZXI/OiBPdXRnb2luZ1JlcXVlc3RGaWx0ZXI7XG4gIC8qKiBBZGRpdGlvbmFsIGNhbGxlci1vd25lZCBob29rIGZvciBhdHRyaWJ1dGVzIG9uIG5hdGl2ZSBIVFRQIHNwYW5zLiAqL1xuICByZWFkb25seSBzcGFuSG9vaz86IFNwYW5BdHRyaWJ1dGVIb29rO1xufVxuXG4vKiogUmV0dXJuIHRoZSByZXF1ZXN0IHBhdGhuYW1lIHdpdGhvdXQgaXRzIHF1ZXJ5IHN0cmluZy4gKi9cbmZ1bmN0aW9uIHJlcXVlc3RQYXRoKHJlcXVlc3Q6IEluY29taW5nTWVzc2FnZSk6IHN0cmluZyB7XG4gIHJldHVybiByZXF1ZXN0LnVybD8uc3BsaXQoXCI/XCIsIDEpWzBdID8/IFwiXCI7XG59XG5cbi8qKiBXaGV0aGVyIG9uZSByZXF1ZXN0IG1hdGNoZXMgdGhlIGRlZmF1bHQgb3IgY29uZmlndXJlZCBIVFRQIHRlbGVtZXRyeSBleGNsdXNpb25zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4Y2x1ZGVIdHRwVGVsZW1ldHJ5UmVxdWVzdChcbiAgcmVxdWVzdDogSW5jb21pbmdNZXNzYWdlLFxuICBvcHRpb25zOiBOYXRpdmVIdHRwVGVsZW1ldHJ5T3B0aW9ucyA9IHt9LFxuKTogYm9vbGVhbiB7XG4gIGlmIChyZXF1ZXN0Lm1ldGhvZCA9PT0gXCJIRUFEXCIpIHJldHVybiB0cnVlO1xuICBjb25zdCBwYXRobmFtZSA9IHJlcXVlc3RQYXRoKHJlcXVlc3QpO1xuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2Ygb3B0aW9ucy5leGNsdWRlID8/IFtdKSB7XG4gICAgaWYgKHBhdHRlcm4uZW5kc1dpdGgoXCIqXCIpKSB7XG4gICAgICBpZiAocGF0aG5hbWUuc3RhcnRzV2l0aChwYXR0ZXJuLnNsaWNlKDAsIC0xKSkpIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAocGF0aG5hbWUgPT09IHBhdHRlcm4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9ucy5maWx0ZXI/LihyZXF1ZXN0KSA/PyBmYWxzZTtcbn1cblxuLyoqIEV4Y2x1ZGUgb3V0Z29pbmcgSFRUUCBzcGFucyB0aGF0IGhhdmUgbm8gcmVjb3JkaW5nIHNlbWFudGljIHBhcmVudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGNsdWRlVW5wYXJlbnRlZE91dGdvaW5nSHR0cFRlbGVtZXRyeShcbiAgX3JlcXVlc3Q/OiB1bmtub3duLFxuICBzcGFuOiBTcGFuIHwgdW5kZWZpbmVkID0gdHJhY2UuZ2V0QWN0aXZlU3BhbigpLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAhc3Bhbj8uaXNSZWNvcmRpbmcoKTtcbn1cblxuLyoqIFN0YW1wIHRoZSBmb3J3YXJkZWQgcmVxdWVzdCBpZGVudGl0eSBvbnRvIGEgbmF0aXZlIEFwcEtpdCBIVFRQIHNwYW4uICovXG5leHBvcnQgZnVuY3Rpb24gc3RhbXBIdHRwVHJhY2VVc2VyKHNwYW46IFNwYW4sIHJlcXVlc3Q6IHVua25vd24pOiB2b2lkIHtcbiAgaWYgKCFyZXF1ZXN0IHx8IHR5cGVvZiByZXF1ZXN0ICE9PSBcIm9iamVjdFwiKSByZXR1cm47XG4gIGNvbnN0IGhlYWRlcnMgPSAocmVxdWVzdCBhcyB7IGhlYWRlcnM/OiB1bmtub3duIH0pLmhlYWRlcnM7XG4gIGlmICghaGVhZGVycyB8fCB0eXBlb2YgaGVhZGVycyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KGhlYWRlcnMpKSByZXR1cm47XG4gIGNvbnN0IHJlY29yZCA9IGhlYWRlcnMgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQ+O1xuICBjb25zdCBmaXJzdCA9IChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHJhdyA9IHJlY29yZFtuYW1lXTtcbiAgICBjb25zdCB2YWx1ZSA9IEFycmF5LmlzQXJyYXkocmF3KSA/IHJhd1swXSA6IHJhdztcbiAgICByZXR1cm4gdHJpbVRvTnVsbCh2YWx1ZSkgPz8gdW5kZWZpbmVkO1xuICB9O1xuICBjb25zdCB1c2VyID0gZmlyc3QoVVNFUl9FTUFJTF9IRUFERVIpID8/IGZpcnN0KFVTRVJfSURfSEVBREVSKTtcbiAgaWYgKHVzZXIpIHNwYW4uc2V0QXR0cmlidXRlKFVTRVJfVFJBQ0VfQVRUUklCVVRFLCB1c2VyKTtcbn1cblxuZnVuY3Rpb24gYXBwS2l0SW50ZXJuYWxNb2R1bGVVcmwocmVsYXRpdmVQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuICBjb25zdCBwYWNrYWdlUm9vdCA9IHBhdGguZGlybmFtZShyZXF1aXJlLnJlc29sdmUoXCJAZGF0YWJyaWNrcy9hcHBraXQvcGFja2FnZS5qc29uXCIpKTtcbiAgcmV0dXJuIHBhdGhUb0ZpbGVVUkwocGF0aC5qb2luKHBhY2thZ2VSb290LCBcImRpc3RcIiwgLi4ucmVsYXRpdmVQYXRoLnNwbGl0KFwiL1wiKSkpLmhyZWY7XG59XG5cbmZ1bmN0aW9uIGlzTmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24ge1xuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBjYW5kaWRhdGUgPSB2YWx1ZSBhcyBQYXJ0aWFsPE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24+O1xuICByZXR1cm4gdHlwZW9mIGNhbmRpZGF0ZS5nZXRDb25maWcgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgY2FuZGlkYXRlLnNldENvbmZpZyA9PT0gXCJmdW5jdGlvblwiO1xufVxuXG5hc3luYyBmdW5jdGlvbiBuYXRpdmVJbnN0cnVtZW50YXRpb25zKCk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgTmF0aXZlSW5zdHJ1bWVudGF0aW9uPj4ge1xuICBjb25zdCBsb2FkZWQgPSAoYXdhaXQgaW1wb3J0KGFwcEtpdEludGVybmFsTW9kdWxlVXJsKFwidGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbnMuanNcIikpKSBhcyB7XG4gICAgaW5zdHJ1bWVudGF0aW9ucz86IFJlY29yZDxzdHJpbmcsIE5hdGl2ZUluc3RydW1lbnRhdGlvbj47XG4gIH07XG4gIGlmICghbG9hZGVkLmluc3RydW1lbnRhdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJAZGF0YWJyaWNrcy9hcHBraXQgbm8gbG9uZ2VyIGV4cG9zZXMgaXRzIG5hdGl2ZSBpbnN0cnVtZW50YXRpb25zXCIpO1xuICB9XG4gIHJldHVybiBsb2FkZWQuaW5zdHJ1bWVudGF0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF0aXZlSHR0cEluc3RydW1lbnRhdGlvbigpOiBQcm9taXNlPE5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24+IHtcbiAgY29uc3QgaW5zdHJ1bWVudGF0aW9uID0gKGF3YWl0IG5hdGl2ZUluc3RydW1lbnRhdGlvbnMoKSkuaHR0cDtcbiAgaWYgKCFpc05hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQGRhdGFicmlja3MvYXBwa2l0IG5vIGxvbmdlciBleHBvc2VzIHRoZSBleHBlY3RlZCBuYXRpdmUgSFRUUCB0ZWxlbWV0cnkgaW5zdHJ1bWVudGF0aW9uXCIsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uO1xufVxuXG5hc3luYyBmdW5jdGlvbiBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyQ2xhc3MoKTogUHJvbWlzZTxOYXRpdmVUZWxlbWV0cnlNYW5hZ2VyQ2xhc3M+IHtcbiAgY29uc3QgbG9hZGVkID0gKGF3YWl0IGltcG9ydChhcHBLaXRJbnRlcm5hbE1vZHVsZVVybChcInRlbGVtZXRyeS90ZWxlbWV0cnktbWFuYWdlci5qc1wiKSkpIGFzIHtcbiAgICBUZWxlbWV0cnlNYW5hZ2VyPzogTmF0aXZlVGVsZW1ldHJ5TWFuYWdlckNsYXNzO1xuICB9O1xuICBpZiAoIWxvYWRlZC5UZWxlbWV0cnlNYW5hZ2VyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQGRhdGFicmlja3MvYXBwa2l0IG5vIGxvbmdlciBleHBvc2VzIGl0cyBuYXRpdmUgdGVsZW1ldHJ5IG1hbmFnZXJcIik7XG4gIH1cbiAgcmV0dXJuIGxvYWRlZC5UZWxlbWV0cnlNYW5hZ2VyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyKCk6IFByb21pc2U8TmF0aXZlVGVsZW1ldHJ5TWFuYWdlcj4ge1xuICByZXR1cm4gKGF3YWl0IG5hdGl2ZVRlbGVtZXRyeU1hbmFnZXJDbGFzcygpKS5nZXRJbnN0YW5jZSgpO1xufVxuXG5mdW5jdGlvbiByZXF1aXJlTmF0aXZlVHJhY2VyUHJvdmlkZXIobWFuYWdlcjogTmF0aXZlVGVsZW1ldHJ5TWFuYWdlcik6IFRyYWNlclByb3ZpZGVyIHtcbiAgaWYgKCFtYW5hZ2VyLnRyYWNlclByb3ZpZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQXBwS2l0J3MgbmF0aXZlIHRyYWNlciBwcm92aWRlciBoYXMgbm90IHN0YXJ0ZWRcIik7XG4gIH1cbiAgcmV0dXJuIG1hbmFnZXIudHJhY2VyUHJvdmlkZXI7XG59XG5cbi8qKlxuICogRXh0ZW5kIEFwcEtpdCdzIG5hdGl2ZSBIVFRQIHJlcXVlc3QgZmlsdGVyIHdpdGhvdXQgcmVnaXN0ZXJpbmcgYSBzZWNvbmQgSFRUUFxuICogaW5zdHJ1bWVudGF0aW9uLiBBcHBLaXQgMC44MSBvd25zIHRoZSBpbnN0cnVtZW50YXRpb24gYnV0IGRvZXMgbm90IGV4cG9zZSBhXG4gKiBwdWJsaWMgZmlsdGVyIG9wdGlvbiwgc28gdGhpcyBjb21wYXRpYmlsaXR5IGhvb2sgbXV0YXRlcyBpdHMgZXhpc3RpbmdcbiAqIHNpbmdsZXRvbiBiZWZvcmUgYGNyZWF0ZUFwcCgpYCByZWdpc3RlcnMgaXQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25maWd1cmVOYXRpdmVIdHRwVGVsZW1ldHJ5KFxuICBvcHRpb25zOiBOYXRpdmVIdHRwVGVsZW1ldHJ5T3B0aW9ucyA9IHt9LFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGluc3RydW1lbnRhdGlvbiA9IGF3YWl0IG5hdGl2ZUh0dHBJbnN0cnVtZW50YXRpb24oKTtcbiAgY29uc3QgY29uZmlnID0gaW5zdHJ1bWVudGF0aW9uLmdldENvbmZpZygpO1xuICBjb25zdCBhcHBLaXRGaWx0ZXIgPSBjb25maWcuaWdub3JlSW5jb21pbmdSZXF1ZXN0SG9vaztcbiAgY29uc3QgYXBwS2l0T3V0Z29pbmdGaWx0ZXIgPSBjb25maWcuaWdub3JlT3V0Z29pbmdSZXF1ZXN0SG9vaztcbiAgY29uc3QgYXBwS2l0U3Bhbkhvb2sgPSBjb25maWcuYXBwbHlDdXN0b21BdHRyaWJ1dGVzT25TcGFuO1xuICBpbnN0cnVtZW50YXRpb24uc2V0Q29uZmlnKHtcbiAgICAuLi5jb25maWcsXG4gICAgaWdub3JlSW5jb21pbmdSZXF1ZXN0SG9vazogKHJlcXVlc3QpID0+XG4gICAgICBCb29sZWFuKGFwcEtpdEZpbHRlcj8uKHJlcXVlc3QpKSB8fCBleGNsdWRlSHR0cFRlbGVtZXRyeVJlcXVlc3QocmVxdWVzdCwgb3B0aW9ucyksXG4gICAgaWdub3JlT3V0Z29pbmdSZXF1ZXN0SG9vazogKHJlcXVlc3QpID0+XG4gICAgICBCb29sZWFuKGFwcEtpdE91dGdvaW5nRmlsdGVyPy4ocmVxdWVzdCkpIHx8IEJvb2xlYW4ob3B0aW9ucy5vdXRnb2luZ0ZpbHRlcj8uKHJlcXVlc3QpKSxcbiAgICBhcHBseUN1c3RvbUF0dHJpYnV0ZXNPblNwYW46IChzcGFuLCByZXF1ZXN0KSA9PiB7XG4gICAgICBhcHBLaXRTcGFuSG9vaz8uKHNwYW4sIHJlcXVlc3QpO1xuICAgICAgb3B0aW9ucy5zcGFuSG9vaz8uKHNwYW4sIHJlcXVlc3QpO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIEJpbmQgQXBwS2l0J3MgbmF0aXZlIGluc3RydW1lbnRhdGlvbnMgdG8gdGhlIHByb3ZpZGVyIEFwcEtpdCBzdGFydGVkLiBUaGlzIGlzXG4gKiBjYWxsZWQgYWZ0ZXIgQXBwS2l0J3MgZGVmZXJyZWQgYFRlbGVtZXRyeU1hbmFnZXIuc3RhcnQoKWAgcGhhc2Ugc28gYSBydW50aW1lXG4gKiB0aGF0IGFscmVhZHkgb2NjdXBpZWQgdGhlIGdsb2JhbCBPVGVsIHNsb3QgY2Fubm90IGxlYXZlIG5hdGl2ZSBzcGFucyBuby1vcC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJpbmROYXRpdmVUZWxlbWV0cnlQcm92aWRlcigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgbWFuYWdlciA9IGF3YWl0IG5hdGl2ZVRlbGVtZXRyeU1hbmFnZXIoKTtcbiAgaWYgKCFtYW5hZ2VyLnRyYWNlclByb3ZpZGVyKSByZXR1cm4gZmFsc2U7XG4gIGZvciAoY29uc3QgaW5zdHJ1bWVudGF0aW9uIG9mIE9iamVjdC52YWx1ZXMoYXdhaXQgbmF0aXZlSW5zdHJ1bWVudGF0aW9ucygpKSkge1xuICAgIGluc3RydW1lbnRhdGlvbi5zZXRUcmFjZXJQcm92aWRlcj8uKG1hbmFnZXIudHJhY2VyUHJvdmlkZXIpO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKiogQ29udHJpYnV0ZSBhIHByb2Nlc3NvciBiZWZvcmUgQXBwS2l0IGJ1aWxkcyBpdHMgbmF0aXZlIHRyYWNlciBwcm92aWRlci4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWdpc3Rlck5hdGl2ZVNwYW5Qcm9jZXNzb3IocHJvY2Vzc29yOiBTcGFuUHJvY2Vzc29yKTogUHJvbWlzZTx2b2lkPiB7XG4gIChhd2FpdCBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyQ2xhc3MoKSkucmVnaXN0ZXJTcGFuUHJvY2Vzc29yKHByb2Nlc3Nvcik7XG59XG5cbi8qKlxuICogUmV0dXJuIGEgdHJhY2VyIHByb3ZpZGVyIHRoYXQgcmVzb2x2ZXMgQXBwS2l0J3MgcHJvdmlkZXIgd2hlbiBhIHRyYWNlciBtZXRob2RcbiAqIGlzIGludm9rZWQuIEFwcEtpdCBzdGFydHMgaXRzIHByb3ZpZGVyIGFmdGVyIHBsdWdpbiBzZXR1cCwgd2hpbGUgY29uc3VtZXJzXG4gKiBzdWNoIGFzIE1hc3RyYSBjb25zdHJ1Y3QgdGhlaXIgT1RlbCBicmlkZ2UgZHVyaW5nIHNldHVwLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGVmZXJyZWROYXRpdmVUcmFjZXJQcm92aWRlcigpOiBQcm9taXNlPFRyYWNlclByb3ZpZGVyPiB7XG4gIGNvbnN0IG1hbmFnZXIgPSBhd2FpdCBuYXRpdmVUZWxlbWV0cnlNYW5hZ2VyKCk7XG4gIHJldHVybiB7XG4gICAgZ2V0VHJhY2VyKG5hbWU6IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgb3B0aW9ucz86IFRyYWNlck9wdGlvbnMpOiBUcmFjZXIge1xuICAgICAgcmV0dXJuIG5ldyBQcm94eSh7fSBhcyBUcmFjZXIsIHtcbiAgICAgICAgZ2V0KF90YXJnZXQsIHByb3BlcnR5KSB7XG4gICAgICAgICAgY29uc3QgdHJhY2VyID0gcmVxdWlyZU5hdGl2ZVRyYWNlclByb3ZpZGVyKG1hbmFnZXIpLmdldFRyYWNlcihuYW1lLCB2ZXJzaW9uLCBvcHRpb25zKTtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IFJlZmxlY3QuZ2V0KHRyYWNlciwgcHJvcGVydHksIHRyYWNlcikgYXMgdW5rbm93bjtcbiAgICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyB2YWx1ZS5iaW5kKHRyYWNlcikgOiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -1 +1 @@
1
- {"root":["../src/_auto-configure.ts","../src/appkit.ts","../src/brand-context.ts","../src/bundle.ts","../src/cache-storage.ts","../src/databricks.ts","../src/files-cache.ts","../src/identity.ts","../src/interceptor.ts","../src/lakebase-resolver.ts","../src/migration.ts","../src/openapi-tool.ts","../src/pgaddress.ts","../src/plugin-execution.ts","../src/plugin-registry.ts","../src/provision.ts","../src/request-tags.ts","../src/telemetry.ts","../src/tool-operations.ts","../src/tool-provider.ts","../src/toolkit-entries.ts","../index.ts"],"version":"5.9.3"}
1
+ {"root":["../src/_auto-configure.ts","../src/appkit.ts","../src/brand-context.ts","../src/cache-storage.ts","../src/databricks.ts","../src/files-cache.ts","../src/identity.ts","../src/interceptor.ts","../src/lakebase-resolver.ts","../src/migration.ts","../src/openapi-tool.ts","../src/plugin-execution.ts","../src/plugin-registry.ts","../src/provision.ts","../src/request-tags.ts","../src/telemetry.ts","../src/tool-operations.ts","../src/tool-provider.ts","../src/toolkit-entries.ts","../index.ts"],"version":"5.9.3"}