@workflow/core 5.0.0-beta.47 → 5.0.0-beta.49

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 (47) hide show
  1. package/dist/classify-error.d.ts.map +1 -1
  2. package/dist/classify-error.js +13 -3
  3. package/dist/describe-error.d.ts.map +1 -1
  4. package/dist/describe-error.js +16 -1
  5. package/dist/private.d.ts +2 -4
  6. package/dist/private.d.ts.map +1 -1
  7. package/dist/private.js +1 -1
  8. package/dist/runtime/constants.d.ts +9 -7
  9. package/dist/runtime/constants.d.ts.map +1 -1
  10. package/dist/runtime/constants.js +10 -8
  11. package/dist/runtime/helpers.d.ts +13 -0
  12. package/dist/runtime/helpers.d.ts.map +1 -1
  13. package/dist/runtime/helpers.js +14 -1
  14. package/dist/runtime/quickjs-serde.d.ts.map +1 -1
  15. package/dist/runtime/quickjs-serde.js +62 -1
  16. package/dist/runtime/run.d.ts +42 -0
  17. package/dist/runtime/run.d.ts.map +1 -1
  18. package/dist/runtime/run.js +102 -17
  19. package/dist/runtime/runs.d.ts.map +1 -1
  20. package/dist/runtime/runs.js +8 -4
  21. package/dist/runtime/start.d.ts +31 -1
  22. package/dist/runtime/start.d.ts.map +1 -1
  23. package/dist/runtime/start.js +38 -6
  24. package/dist/runtime/suspension-handler.d.ts +54 -1
  25. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  26. package/dist/runtime/suspension-handler.js +83 -20
  27. package/dist/runtime.d.ts +1 -1
  28. package/dist/runtime.d.ts.map +1 -1
  29. package/dist/runtime.js +174 -61
  30. package/dist/serialization/reducers/common-vm.d.ts.map +1 -1
  31. package/dist/serialization/reducers/common-vm.js +38 -1
  32. package/dist/serialization/reducers/common.d.ts.map +1 -1
  33. package/dist/serialization/reducers/common.js +26 -2
  34. package/dist/serialization/types.d.ts +7 -0
  35. package/dist/serialization/types.d.ts.map +1 -1
  36. package/dist/serialization/types.js +1 -1
  37. package/dist/serialization.d.ts +46 -2
  38. package/dist/serialization.d.ts.map +1 -1
  39. package/dist/serialization.js +249 -75
  40. package/dist/version.d.ts +1 -1
  41. package/dist/version.js +2 -2
  42. package/dist/workflow/sleep.d.ts.map +1 -1
  43. package/dist/workflow/sleep.js +3 -6
  44. package/dist/workflow.js +6 -6
  45. package/docs/foundations/streaming.mdx +28 -0
  46. package/docs/how-it-works/understanding-directives.mdx +1 -1
  47. package/package.json +10 -10
@@ -9,7 +9,7 @@
9
9
  * implementation will be needed.
10
10
  */
11
11
  import { types } from 'node:util';
12
- import { FatalError, HookConflictError, RetryableError, RuntimeDecryptionError, } from '@workflow/errors';
12
+ import { FatalError, HookConflictError, RetryableError, RuntimeDecryptionError, StreamError, } from '@workflow/errors';
13
13
  import { arrayBufferByteLength, dateGetDate, dateGetTime, dateToISOString, hasProperty, headersToEntries, isInstanceOfPrototype, mapToEntries, readProperty, recordGuestCode, regExpFlags, regExpSource, setToValues, urlHref, urlSearchParamsToString, viewInfo, } from '../hardened.js';
14
14
  // ---- Base64 helpers ----
15
15
  function arrayBufferToBase64(value, offset, length) {
@@ -272,6 +272,19 @@ _global = globalThis) {
272
272
  }
273
273
  return reduced;
274
274
  },
275
+ StreamError: (value) => {
276
+ const base = reduceNamedErrorSubclassBase('StreamError', value);
277
+ if (!base)
278
+ return false;
279
+ const reduced = { ...base };
280
+ const status = readProperty(value, 'status');
281
+ const url = readProperty(value, 'url');
282
+ if (typeof status === 'number')
283
+ reduced.status = status;
284
+ if (typeof url === 'string')
285
+ reduced.url = url;
286
+ return reduced;
287
+ },
275
288
  SyntaxError: makeErrorSubclassReducer('SyntaxError'),
276
289
  TypeError: makeErrorSubclassReducer('TypeError'),
277
290
  URIError: makeErrorSubclassReducer('URIError'),
@@ -433,6 +446,17 @@ export function getCommonRevivers(global = globalThis) {
433
446
  error.stack = value.stack;
434
447
  return error;
435
448
  },
449
+ StreamError: (value) => {
450
+ const Ctor = global[Symbol.for('@workflow/errors//StreamError')] ?? StreamError;
451
+ const error = new Ctor(value.message, {
452
+ ...('cause' in value ? { cause: value.cause } : {}),
453
+ status: value.status,
454
+ url: value.url,
455
+ });
456
+ if (value.stack !== undefined)
457
+ error.stack = value.stack;
458
+ return error;
459
+ },
436
460
  SyntaxError: makeErrorSubclassReviver(global, 'SyntaxError'),
437
461
  TypeError: makeErrorSubclassReviver(global, 'TypeError'),
438
462
  URIError: makeErrorSubclassReviver(global, 'URIError'),
@@ -475,4 +499,4 @@ export function getCommonRevivers(global = globalThis) {
475
499
  }
476
500
  // Re-export for use in legacy compat
477
501
  export { revive };
478
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6YXRpb24vcmVkdWNlcnMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLHNCQUFzQixHQUN2QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsV0FBVyxFQUNYLFdBQVcsRUFDWCxlQUFlLEVBQ2YsV0FBVyxFQUNYLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLFlBQVksRUFDWixlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEVBQ1gsT0FBTyxFQUNQLHVCQUF1QixFQUN2QixRQUFRLEdBQ1QsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QiwyQkFBMkI7QUFFM0IsU0FBUyxtQkFBbUIsQ0FDMUIsS0FBc0IsRUFDdEIsTUFBYyxFQUNkLE1BQWM7SUFFZCxzREFBc0Q7SUFDdEQsSUFBSSxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQzdCLDhEQUE4RDtJQUM5RCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQXNCO0lBQzFDLHlFQUF5RTtJQUN6RSwwRUFBMEU7SUFDMUUsd0VBQXdFO0lBQ3hFLGNBQWM7SUFDZCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsT0FBTyxtQkFBbUIs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QyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekQsaUJBQWlCLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUNuQyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDaEUsV0FBVyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDN0IsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMxRCxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUM3QixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzNELENBQUM7QUFDSixDQUFDO0FBRUQscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tbW9uIHJlZHVjZXJzIGFuZCByZXZpdmVycyBmb3IgdHlwZXMgc2hhcmVkIGFjcm9zcyBhbGwgc2VyaWFsaXphdGlvbiBtb2Rlcy5cbiAqXG4gKiBIYW5kbGVzOiBBcnJheUJ1ZmZlciwgQmlnSW50LCB0eXBlZCBhcnJheXMsIERhdGUsIEVycm9yLCBIZWFkZXJzLCBNYXAsIFNldCxcbiAqIFJlZ0V4cCwgUmVxdWVzdCwgUmVzcG9uc2UsIFVSTCwgVVJMU2VhcmNoUGFyYW1zLlxuICpcbiAqIE5vdGU6IFVzZXMgTm9kZS5qcyBCdWZmZXIgZm9yIGJhc2U2NCBlbmNvZGluZy9kZWNvZGluZy4gRm9yIGVudmlyb25tZW50c1xuICogd2l0aG91dCBCdWZmZXIgKGUuZy4gUXVpY2tKUyBWTSksIGEgcG9seWZpbGwgb3IgYWx0ZXJuYXRpdmUgYmFzZTY0XG4gKiBpbXBsZW1lbnRhdGlvbiB3aWxsIGJlIG5lZWRlZC5cbiAqL1xuXG5pbXBvcnQgeyB0eXBlcyB9IGZyb20gJ25vZGU6dXRpbCc7XG5pbXBvcnQge1xuICBGYXRhbEVycm9yLFxuICBIb29rQ29uZmxpY3RFcnJvcixcbiAgUmV0cnlhYmxlRXJyb3IsXG4gIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3IsXG59IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgYXJyYXlCdWZmZXJCeXRlTGVuZ3RoLFxuICBkYXRlR2V0RGF0ZSxcbiAgZGF0ZUdldFRpbWUsXG4gIGRhdGVUb0lTT1N0cmluZyxcbiAgaGFzUHJvcGVydHksXG4gIGhlYWRlcnNUb0VudHJpZXMsXG4gIGlzSW5zdGFuY2VPZlByb3RvdHlwZSxcbiAgbWFwVG9FbnRyaWVzLFxuICByZWFkUHJvcGVydHksXG4gIHJlY29yZEd1ZXN0Q29kZSxcbiAgcmVnRXhwRmxhZ3MsXG4gIHJlZ0V4cFNvdXJjZSxcbiAgc2V0VG9WYWx1ZXMsXG4gIHVybEhyZWYsXG4gIHVybFNlYXJjaFBhcmFtc1RvU3RyaW5nLFxuICB2aWV3SW5mbyxcbn0gZnJvbSAnLi4vaGFyZGVuZWQuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMsIFNlcmlhbGl6YWJsZVNwZWNpYWwgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gQmFzZTY0IGhlbHBlcnMgLS0tLVxuXG5mdW5jdGlvbiBhcnJheUJ1ZmZlclRvQmFzZTY0KFxuICB2YWx1ZTogQXJyYXlCdWZmZXJMaWtlLFxuICBvZmZzZXQ6IG51bWJlcixcbiAgbGVuZ3RoOiBudW1iZXJcbik6IHN0cmluZyB7XG4gIC8vIEF2b2lkIHJldHVybmluZyBmYWxzeSB2YWx1ZSBmb3IgemVyby1sZW5ndGggYnVmZmVyc1xuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJy4nO1xuICAvLyBDcmVhdGUgYSBwcm9wZXIgY29weSB0byBhdm9pZCBBcnJheUJ1ZmZlciBkZXRhY2htZW50IGlzc3Vlc1xuICBjb25zdCB1aW50OCA9IG5ldyBVaW50OEFycmF5KHZhbHVlLCBvZmZzZXQsIGxlbmd0aCk7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufVxuXG5mdW5jdGlvbiB2aWV3VG9CYXNlNjQodmFsdWU6IEFycmF5QnVmZmVyVmlldyk6IHN0cmluZyB7XG4gIC8vIFJlYWQgdGhlIHZpZXcncyByYW5nZSB0aHJvdWdoIGludGVybmFsLXNsb3QgZ2V0dGVycyAoc2VlIGhhcmRlbmVkLnRzKTpcbiAgLy8gb3duIHByb3BlcnRpZXMgc2hhZG93aW5nIGBidWZmZXJgL2BieXRlT2Zmc2V0YC9gYnl0ZUxlbmd0aGAgKG9yIHBhdGNoZWRcbiAgLy8gcHJvdG90eXBlIGdldHRlcnMgaW4gdGhlIHNhbmRib3ggcmVhbG0pIGNhbm5vdCBjaGFuZ2Ugd2hpY2ggYnl0ZXMgYXJlXG4gIC8vIHNlcmlhbGl6ZWQuXG4gIGNvbnN0IGluZm8gPSB2aWV3SW5mbyh2YWx1ZSk7XG4gIHJldHVybiBhcnJheUJ1ZmZlclRvQmFzZTY0KGluZm8uYnVmZmVyLCBpbmZvLmJ5dGVPZmZzZXQsIGluZm8uYnl0ZUxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHJldml2ZUFycmF5QnVmZmVyKFxuICB2YWx1ZTogc3RyaW5nLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IEFycmF5QnVmZmVyIHtcbiAgY29uc3QgYmFzZTY0ID0gdmFsdWUgPT09ICcuJyA/ICcnIDogdmFsdWU7XG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBnbG9iYWwuQXJyYXlCdWZmZXIoYnVmZmVyLmxlbmd0aCk7XG4gIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgZ2xvYmFsLlVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICB1aW50OEFycmF5LnNldChidWZmZXIpO1xuICByZXR1cm4gYXJyYXlCdWZmZXI7XG59XG5cbmZ1bmN0aW9uIHJldml2ZShzdHI6IHN0cmluZykge1xuICAvLyBkZXZhbHVlLnN0cmluZ2lmeSgpIGFsd2F5cyBwcm9kdWNlcyB2YWxpZCBKU09OOiBzcGVjaWFsIHZhbHVlc1xuICAvLyAodW5kZWZpbmVkLCBOYU4sIEluZmluaXR5LCAtMCkgYXJlIGVuY29kZWQgYXMgbmVnYXRpdmUgaW50ZWdlclxuICAvLyBzZW50aW5lbHMgYW5kIHRoZSByZW1haW5pbmcgc3RydWN0dXJlIGlzIG9yZGluYXJ5IEpTT04uIFBhcnNpbmdcbiAgLy8gd2l0aCBKU09OLnBhcnNlIHlpZWxkcyB0aGUgZmxhdHRlbmVkIGZvcm0gdGhhdCB1bmZsYXR0ZW4oKSBleHBlY3RzLlxuICByZXR1cm4gSlNPTi5wYXJzZShzdHIpO1xufVxuXG4vLyAtLS0tIEVycm9yIHN1YmNsYXNzIGhlbHBlcnMgLS0tLVxuXG4vKipcbiAqIFRoZSBzaGFyZWQgc2hhcGUgdGhhdCBldmVyeSBFcnJvci1zdWJjbGFzcyByZWR1Y2VyIGluIHRoaXMgbW9kdWxlXG4gKiBwcm9kdWNlcy4gU29tZSBzdWJjbGFzc2VzIChlLmcuIGBBZ2dyZWdhdGVFcnJvcmAsIGBSZXRyeWFibGVFcnJvcmApIGV4dGVuZFxuICogdGhpcyB3aXRoIGFkZGl0aW9uYWwgZmllbGRzIGJ5IHNwcmVhZGluZyB0aGUgYmFzZSBwYXlsb2FkLlxuICovXG50eXBlIEJhc2VFcnJvclBheWxvYWQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG4gIGNhdXNlPzogdW5rbm93bjtcbn07XG5cbi8qKlxuICogU3Vic2V0IG9mIGBTZXJpYWxpemFibGVTcGVjaWFsYCBrZXlzIHdob3NlIHBheWxvYWQgc2hhcGUgaXMgZXhhY3RseSB0aGVcbiAqIGBCYXNlRXJyb3JQYXlsb2FkYC4gYG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcmAgaXMgY29uc3RyYWluZWQgdG8gb25seVxuICogdGhlc2Uga2V5cyBzbyBpdHMgcmV0dXJuIHR5cGUgaXMgc291bmQ7IHN1YmNsYXNzZXMgdGhhdCBuZWVkIGV4dHJhXG4gKiBmaWVsZHMgKGxpa2UgYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2Agb3IgYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgKSB1c2VcbiAqIGByZWR1Y2VFcnJvckJhc2VgIGRpcmVjdGx5IGFuZCBleHRlbmQgdGhlIHJlc3VsdC5cbiAqL1xudHlwZSBTaW1wbGVFcnJvclN1YmNsYXNzS2V5ID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSBleHRlbmRzIEJhc2VFcnJvclBheWxvYWRcbiAgICA/IEJhc2VFcnJvclBheWxvYWQgZXh0ZW5kcyBTZXJpYWxpemFibGVTcGVjaWFsW0tdXG4gICAgICA/IEtcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTtcblxuLyoqXG4gKiBSZWFkcyBgZXJyb3Iuc3RhY2tgIGZvciBzZXJpYWxpemF0aW9uLiBBIG5hdHVyYWwgVjggZXJyb3IgY2FycmllcyBgc3RhY2tgXG4gKiBhcyBhbiBvd24gKmFjY2Vzc29yKiB3aG9zZSBmaXJzdCBpbnZvY2F0aW9uIGZvcm1hdHMgYW5kIGNhY2hlcyB0aGUgdHJhY2UuXG4gKiBUaGF0IHJlYWQgaXMgbm90IHBhc3NpdmU6IGl0IGV4ZWN1dGVzIGBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZWAgd2hlbiB0aGVcbiAqIHJlYWxtIGhhcyBvbmUgaW5zdGFsbGVkLCBhbmQgdGhlIGZvcm1hdC1hbmQtY2FjaGUgaXRzZWxmIGlzXG4gKiB3b3JrZmxvdy12aXNpYmxlIChhIGZvcm1hdHRlciBpbnN0YWxsZWQgbGF0ZXIgbmV2ZXIgcnVucyBmb3IgYW5cbiAqIGFscmVhZHktbWF0ZXJpYWxpemVkIGVycm9yKS4gQSBjb2xkIHJlcGxheSByZXBlYXRzIG5laXRoZXIgKGl0IHNraXBzXG4gKiBkZWh5ZHJhdGlvbiBlbnRpcmVseSksIHNvIHRoZSByZWFkIGlzIHJlY29yZGVkIGFzIGd1ZXN0IGNvZGUuIEFcbiAqIGRhdGEtcHJvcGVydHkgYHN0YWNrYCAocmVoeWRyYXRlZCBlcnJvcnMsIHdvcmtmbG93LWFzc2lnbmVkIHN0cmluZ3MpXG4gKiByZWFkcyBwYXNzaXZlbHkuXG4gKi9cbmZ1bmN0aW9uIHJlYWRFcnJvclN0YWNrKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUgYXMgb2JqZWN0LCAnc3RhY2snKTtcbiAgaWYgKGRlc2NyaXB0b3IgJiYgJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIGRlc2NyaXB0b3IudmFsdWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG4gIHJlY29yZEd1ZXN0Q29kZSgnZ2V0dGVyJywgJ3N0YWNrJyk7XG4gIGlmIChkZXNjcmlwdG9yPy5nZXQpIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5nZXQuY2FsbCh2YWx1ZSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiByZWFkUHJvcGVydHkodmFsdWUsICdzdGFjaycpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZWR1Y2VzIGFueSBuYXRpdmUgRXJyb3IgaW5zdGFuY2UgdG8gdGhlIHNoYXJlZCBgQmFzZUVycm9yUGF5bG9hZGAgc2hhcGUsXG4gKiBwcmVzZXJ2aW5nIGBjYXVzZWAgb25seSB3aGVuIHByZXNlbnQgKHRvIGRpc3Rpbmd1aXNoIFwibm8gY2F1c2VcIiBmcm9tXG4gKiBcImNhdXNlIGlzIHVuZGVmaW5lZFwiKS4gVXNlZCBkaXJlY3RseSBieSByZWR1Y2VycyBmb3Igc3ViY2xhc3NlcyB0aGF0IG5lZWRcbiAqIHRvIGV4dGVuZCB0aGUgc2hhcGUgd2l0aCBhZGRpdGlvbmFsIGZpZWxkcy5cbiAqXG4gKiBgdHlwZXMuaXNOYXRpdmVFcnJvcigpYCBpcyB1c2VkIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIGZvciBjcm9zcy1WTSBzYWZldHk6XG4gKiBlcnJvcnMgbWF5IG9yaWdpbmF0ZSBmcm9tIGEgZGlmZmVyZW50IFZNIGNvbnRleHQsIGFuZCBgaW5zdGFuY2VvZmAgZmFpbHNcbiAqIGFjcm9zcyBWTSBib3VuZGFyaWVzIHNpbmNlIGVhY2ggY29udGV4dCBoYXMgaXRzIG93biBFcnJvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZnVuY3Rpb24gcmVkdWNlRXJyb3JCYXNlKHZhbHVlOiB1bmtub3duKTogQmFzZUVycm9yUGF5bG9hZCB8IGZhbHNlIHtcbiAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAvLyBgbWVzc2FnZWAvYGNhdXNlYCBhcmUgb3duIGRhdGEgcHJvcGVydGllcyBvbiBuYXR1cmFsIGVycm9ycywgc28gdGhlXG4gIC8vIGRlc2NyaXB0b3ItYmFzZWQgcmVhZHMgY29zdCBub3RoaW5nOyBhIHNhbmRib3gtZGVmaW5lZCBhY2Nlc3NvclxuICAvLyAoZS5nLiBhIGdldHRlciBvbiBhbiBFcnJvciBzdWJjbGFzcykgaXMgc3RpbGwgaW52b2tlZCBidXQgcmVjb3JkZWQuXG4gIGNvbnN0IHJlZHVjZWQ6IEJhc2VFcnJvclBheWxvYWQgPSB7XG4gICAgbWVzc2FnZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbWVzc2FnZScpIGFzIHN0cmluZyxcbiAgICBzdGFjazogcmVhZEVycm9yU3RhY2sodmFsdWUpLFxuICB9O1xuICBpZiAoaGFzUHJvcGVydHkodmFsdWUsICdjYXVzZScpKSByZWR1Y2VkLmNhdXNlID0gcmVhZFByb3BlcnR5KHZhbHVlLCAnY2F1c2UnKTtcbiAgcmV0dXJuIHJlZHVjZWQ7XG59XG5cbi8qKlxuICogUmVkdWNlcyBhIG5hdGl2ZSBlcnJvciB0byB0aGUgc2hhcmVkIGBCYXNlRXJyb3JQYXlsb2FkYCwgYnV0IG9ubHkgd2hlbiBpdHNcbiAqIGBuYW1lYCBpbnN0YW5jZSBwcm9wZXJ0eSBtYXRjaGVzIGBzdWJjbGFzc05hbWVgLiBVc2VkIGJ5OlxuICogICAtIGBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXJgLCBmb3Igc3ViY2xhc3NlcyB3aG9zZSBzZXJpYWxpemVkIHNoYXBlIGlzXG4gKiAgICAgZXhhY3RseSBgQmFzZUVycm9yUGF5bG9hZGAuXG4gKiAgIC0gSW5saW5lIHJlZHVjZXJzIGZvciBzdWJjbGFzc2VzIHRoYXQgZXh0ZW5kIHRoZSBzaGFwZSB3aXRoIGFkZGl0aW9uYWxcbiAqICAgICBmaWVsZHMgKGUuZy4gYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2AsIGBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyYCkuXG4gKlxuICogTWF0Y2hpbmcgYnkgYHZhbHVlLm5hbWVgIChpbnN0ZWFkIG9mIGB2YWx1ZS5jb25zdHJ1Y3Rvcj8ubmFtZWApIHdvcmtzIHdpdGhcbiAqIGJ1bmRsZXJzIHRoYXQgZW1pdCB0aGUgY2xhc3MgYXMgYW4gYW5vbnltb3VzIGV4cHJlc3Npb24uIEUuZy4gVHVyYm9wYWNrXG4gKiBjb21waWxlcyBgZXhwb3J0IGNsYXNzIEZhdGFsRXJyb3IgZXh0ZW5kcyBFcnJvciB74oCmfWAgdG8gYSByZWdpc3RyYXRpb24gY2FsbFxuICogbGlrZSBgZS5zKFtcIkZhdGFsRXJyb3JcIiwgMCwgY2xhc3MgZXh0ZW5kcyBFcnJvciB74oCmfV0pYCwgYW5kIHRoZSByZXN1bHRpbmdcbiAqIGNvbnN0cnVjdG9yIGhhcyBgbmFtZSA9PT0gJydgLiBTaW5jZSBldmVyeSBFcnJvciBzdWJjbGFzcyB3ZSBjYXJlIGFib3V0XG4gKiBzZXRzIGB0aGlzLm5hbWVgIGV4cGxpY2l0bHkgaW4gaXRzIGNvbnN0cnVjdG9yIChidWlsdC1pbiBzdWJjbGFzc2VzIGRvIHRoaXNcbiAqIGF1dG9tYXRpY2FsbHk7IGBGYXRhbEVycm9yYC9gUmV0cnlhYmxlRXJyb3JgIGRvIGl0IGluIHVzZXIgY29kZSksIHRoZVxuICogaW5zdGFuY2UgcHJvcGVydHkgaXMgdGhlIHJlbGlhYmxlIGlkZW50aXR5IG1hcmtlciBhY3Jvc3MgcmVhbG1zIGFuZFxuICogYnVuZGxlcnMuXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoXG4gIHN1YmNsYXNzTmFtZTogc3RyaW5nLFxuICB2YWx1ZTogdW5rbm93blxuKTogQmFzZUVycm9yUGF5bG9hZCB8IGZhbHNlIHtcbiAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAocmVhZFByb3BlcnR5KHZhbHVlLCAnbmFtZScpICE9PSBzdWJjbGFzc05hbWUpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHJlZHVjZUVycm9yQmFzZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZHVjZXIgZm9yIGEgYnVpbHQtaW4gRXJyb3Igc3ViY2xhc3Mgd2hvc2Ugc2VyaWFsaXplZCBzaGFwZSBpc1xuICogZXhhY3RseSBgQmFzZUVycm9yUGF5bG9hZGAgKG5vIGV4dHJhIGZpZWxkcykuIFRoZSByZWR1Y2VyIG1hdGNoZXMgYnlcbiAqIGNvbnN0cnVjdG9yIG5hbWUgKGFmdGVyIHRoZSBpc05hdGl2ZUVycm9yIGdhdGUpLCBzaW5jZSBgaW5zdGFuY2VvZmAgbWF5XG4gKiBmYWlsIGFjcm9zcyBWTSBib3VuZGFyaWVzLlxuICovXG5mdW5jdGlvbiBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXI8SyBleHRlbmRzIFNpbXBsZUVycm9yU3ViY2xhc3NLZXk+KFxuICBzdWJjbGFzc05hbWU6IEtcbikge1xuICByZXR1cm4gKHZhbHVlOiB1bmtub3duKTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSB8IGZhbHNlID0+IHtcbiAgICBjb25zdCBiYXNlID0gcmVkdWNlTmFtZWRFcnJvclN1YmNsYXNzQmFzZShzdWJjbGFzc05hbWUsIHZhbHVlKTtcbiAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYmFzZSBhcyBTZXJpYWxpemFibGVTcGVjaWFsW0tdO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByZXZpdmVyIGZvciBhIGJ1aWx0LWluIEVycm9yIHN1YmNsYXNzLiBSZWNvbnN0cnVjdHMgdGhlIGNvcnJlY3RcbiAqIGJ1aWx0LWluIEVycm9yIHR5cGUgdXNpbmcgdGhlIGNvbnRleHQncyBjb25zdHJ1Y3Rvci4gVGhlIGBjYXVzZWAgb3B0aW9uIGlzXG4gKiBvbmx5IHBhc3NlZCB3aGVuIHRoZSBzZXJpYWxpemVkIGRhdGEgaW5jbHVkZXMgaXQsIHByZXNlcnZpbmcgdGhlIGRpc3RpbmN0aW9uXG4gKiBiZXR3ZWVuIFwibm8gY2F1c2VcIiBhbmQgXCJjYXVzZSBpcyB1bmRlZmluZWRcIi5cbiAqL1xuZnVuY3Rpb24gbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyPEsgZXh0ZW5kcyBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsPihcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBjdG9yTmFtZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuICh2YWx1ZTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSkgPT4ge1xuICAgIGNvbnN0IHYgPSB2YWx1ZSBhcyBCYXNlRXJyb3JQYXlsb2FkO1xuICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHYgPyB7IGNhdXNlOiB2LmNhdXNlIH0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgQ3RvciA9IGdsb2JhbFtjdG9yTmFtZV07XG4gICAgY29uc3QgZXJyb3I6IEVycm9yID0gbmV3IEN0b3Iodi5tZXNzYWdlLCBvcHRzKTtcbiAgICBpZiAodi5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHYuc3RhY2s7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9O1xufVxuXG4vLyAtLS0tIFJlZHVjZXJzIC0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1vblJlZHVjZXJzKFxuICAvLyBUaGUgYGdsb2JhbGAgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBBUEkgY29tcGF0aWJpbGl0eSwgYnV0IHRoZVxuICAvLyByZWR1Y2VycyBubyBsb25nZXIgcGVyZm9ybSBgaW5zdGFuY2VvZiBnbG9iYWwuWGAgY2hlY2tzOiBjbGFzc2lmaWNhdGlvblxuICAvLyBpcyBkb25lIHdpdGggZW5naW5lLWxldmVsIGJyYW5kIGNoZWNrcyAocmVhbG0tYWdub3N0aWMsIGltbXVuZSB0b1xuICAvLyByZWFzc2lnbmVkIHNhbmRib3ggZ2xvYmFscyBhbmQgYFN5bWJvbC5oYXNJbnN0YW5jZWApLCBhbmQgZXh0cmFjdGlvblxuICAvLyBnb2VzIHRocm91Z2ggaW50cmluc2ljcyBjYXB0dXJlZCBhdCBob3N0IGJvb3QuIFNlZSAuLi9oYXJkZW5lZC50cy5cbiAgX2dsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbik6IFBhcnRpYWw8UmVkdWNlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBBcnJheUJ1ZmZlcjogKHZhbHVlKSA9PlxuICAgICAgdHlwZXMuaXNBcnJheUJ1ZmZlcih2YWx1ZSkgJiZcbiAgICAgIGFycmF5QnVmZmVyVG9CYXNlNjQodmFsdWUsIDAsIGFycmF5QnVmZmVyQnl0ZUxlbmd0aCh2YWx1ZSkpLFxuICAgIEJpZ0ludDogKHZhbHVlKSA9PlxuICAgICAgLy8gU3RyaW5nKGJpZ2ludCkgaXMgYSBzcGVjLWludGVybmFsIG51bWVyaWMgY29udmVyc2lvbjogdW5saWtlXG4gICAgICAvLyBgdmFsdWUudG9TdHJpbmcoKWAsIGl0IG5ldmVyIGNvbnN1bHRzIEJpZ0ludC5wcm90b3R5cGUuXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnICYmIFN0cmluZyh2YWx1ZSksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdHlwZXMuaXNCaWdJbnQ2NEFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB0eXBlcy5pc0JpZ1VpbnQ2NEFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIERhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gQnJhbmQgY2hlY2sgKyBjYXB0dXJlZCBpbnRyaW5zaWNzOiBhIHNhbmRib3gtc2lkZSBwYXRjaCBvZlxuICAgICAgLy8gYERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nYCAoZS5nLiBhIFRlbXBvcmFsIHBvbHlmaWxsIHdyYXBwaW5nIGl0KVxuICAgICAgLy8gaXMgbmV2ZXIgZXhlY3V0ZWQsIGFuZCBjYW5ub3QgcGVydHVyYiBWTSBzdGF0ZSBkdXJpbmcgc2VyaWFsaXphdGlvbi5cbiAgICAgIGlmICghdHlwZXMuaXNEYXRlKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgdmFsaWQgPSAhTnVtYmVyLmlzTmFOKGRhdGVHZXREYXRlKHZhbHVlKSk7XG4gICAgICByZXR1cm4gdmFsaWQgPyBkYXRlVG9JU09TdHJpbmcodmFsdWUpIDogJy4nO1xuICAgIH0sXG4gICAgLy8gRE9NRXhjZXB0aW9uIGlzIGEgc3BlY2lhbCBjYXNlOiBpdCBgaW5zdGFuY2VvZiBFcnJvcmAgaXMgdHJ1ZSBpbiBOb2RlLFxuICAgIC8vIGJ1dCBgdHlwZXMuaXNOYXRpdmVFcnJvcigpYCByZXR1cm5zIEZBTFNFIGZvciBpdCwgc28gdGhlIGdlbmVyaWMgRXJyb3JcbiAgICAvLyByZWR1Y2VyICh3aGljaCBnYXRlcyBvbiBpc05hdGl2ZUVycm9yKSB3b24ndCBtYXRjaC4gQ2hlY2sgaXQgZXhwbGljaXRseVxuICAgIC8vIGJ5IGNvbnN0cnVjdG9yIG5hbWUgKyBFcnJvciBpbmhlcml0YW5jZSBzbyB3ZSBjYXRjaCBET01FeGNlcHRpb25zIGZyb21cbiAgICAvLyBhbnkgcmVhbG0gKGNyb3NzLVZNIHNhZmV0eTogaW5zdGFuY2VvZiBnbG9iYWwuRE9NRXhjZXB0aW9uIHdvdWxkIGZhaWxcbiAgICAvLyBmb3IgaW5zdGFuY2VzIG1pbnRlZCBpbiBhbm90aGVyIGNvbnRleHQpLlxuICAgIERPTUV4Y2VwdGlvbjogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgY3RvciA9IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ2NvbnN0cnVjdG9yJyk7XG4gICAgICBpZiAoIWN0b3IgfHwgcmVhZFByb3BlcnR5KGN0b3IsICduYW1lJykgIT09ICdET01FeGNlcHRpb24nKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCByZWR1Y2VkOiBTZXJpYWxpemFibGVTcGVjaWFsWydET01FeGNlcHRpb24nXSA9IHtcbiAgICAgICAgbWVzc2FnZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbWVzc2FnZScpIGFzIHN0cmluZyxcbiAgICAgICAgbmFtZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbmFtZScpIGFzIHN0cmluZyxcbiAgICAgICAgc3RhY2s6IHJlYWRFcnJvclN0YWNrKHZhbHVlKSxcbiAgICAgIH07XG4gICAgICBpZiAoaGFzUHJvcGVydHkodmFsdWUsICdjYXVzZScpKSB7XG4gICAgICAgIHJlZHVjZWQuY2F1c2UgPSByZWFkUHJvcGVydHkodmFsdWUsICdjYXVzZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZWQ7XG4gICAgfSxcbiAgICAvLyBFcnJvciBzdWJjbGFzcyByZWR1Y2VycyBhcmUgaW50ZW50aW9uYWxseSBwbGFjZWQgYmVmb3JlIHRoZSBiYXNlIEVycm9yXG4gICAgLy8gcmVkdWNlciBiZWNhdXNlIGRldmFsdWUgdXNlcyBmaXJzdC1tYXRjaC13aW5zLiBTdWJjbGFzcy1zcGVjaWZpYyByZWR1Y2Vyc1xuICAgIC8vIG11c3QgYmUgY2hlY2tlZCBmaXJzdCBzbyB0aGF0IGUuZy4gYSBUeXBlRXJyb3IgaXMgc2VyaWFsaXplZCBhcyBcIlR5cGVFcnJvclwiXG4gICAgLy8gcmF0aGVyIHRoYW4gZmFsbGluZyB0aHJvdWdoIHRvIHRoZSBnZW5lcmljIFwiRXJyb3JcIiByZWR1Y2VyLlxuICAgIC8vIFNlZSBgbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyYCBmb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbiAgICBFdmFsRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignRXZhbEVycm9yJyksXG4gICAgRmF0YWxFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdGYXRhbEVycm9yJyksXG4gICAgSG9va0NvbmZsaWN0RXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoJ0hvb2tDb25mbGljdEVycm9yJywgdmFsdWUpO1xuICAgICAgaWYgKCFiYXNlKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCByZWR1Y2VkOiBTZXJpYWxpemFibGVTcGVjaWFsWydIb29rQ29uZmxpY3RFcnJvciddID0ge1xuICAgICAgICAuLi5iYXNlLFxuICAgICAgICB0b2tlbjogcmVhZFByb3BlcnR5KHZhbHVlLCAndG9rZW4nKSBhcyBIb29rQ29uZmxpY3RFcnJvclsndG9rZW4nXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBjb25mbGljdGluZ1J1bklkID0gcmVhZFByb3BlcnR5KHZhbHVlLCAnY29uZmxpY3RpbmdSdW5JZCcpIGFzXG4gICAgICAgIHwgSG9va0NvbmZsaWN0RXJyb3JbJ2NvbmZsaWN0aW5nUnVuSWQnXVxuICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChjb25mbGljdGluZ1J1bklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVkdWNlZC5jb25mbGljdGluZ1J1bklkID0gY29uZmxpY3RpbmdSdW5JZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWR1Y2VkO1xuICAgIH0sXG4gICAgUmFuZ2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdSYW5nZUVycm9yJyksXG4gICAgUmVmZXJlbmNlRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignUmVmZXJlbmNlRXJyb3InKSxcbiAgICAvLyBSZXRyeWFibGVFcnJvciBjYXJyaWVzIGFuIGV4dHJhIGByZXRyeUFmdGVyYCBEYXRlIHRoYXQgd2Ugc2VyaWFsaXplIGFzXG4gICAgLy8gYSBudW1lcmljIGVwb2NoIHRpbWVzdGFtcC4gVGhlIERhdGUgcmVkdWNlciB1c2VzIGBpbnN0YW5jZW9mIGdsb2JhbC5EYXRlYCxcbiAgICAvLyB3aGljaCBmYWlscyBmb3IgRGF0ZXMgZnJvbSBhIGRpZmZlcmVudCBWTSByZWFsbTsgc2VyaWFsaXppbmcgYXMgYVxuICAgIC8vIG51bWJlciBzaWRlc3RlcHMgdGhhdCBpc3N1ZS5cbiAgICBSZXRyeWFibGVFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBiYXNlID0gcmVkdWNlTmFtZWRFcnJvclN1YmNsYXNzQmFzZSgnUmV0cnlhYmxlRXJyb3InLCB2YWx1ZSk7XG4gICAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJSYXcgPSByZWFkUHJvcGVydHkodmFsdWUsICdyZXRyeUFmdGVyJyk7XG4gICAgICBsZXQgcmV0cnlBZnRlcjogbnVtYmVyO1xuICAgICAgaWYgKHR5cGVzLmlzRGF0ZShyZXRyeUFmdGVyUmF3KSkge1xuICAgICAgICAvLyBHZW51aW5lIERhdGUgKGFueSByZWFsbSk6IHJlYWQgdGhlIGVwb2NoIHRocm91Z2ggdGhlIGludHJpbnNpYy5cbiAgICAgICAgY29uc3QgdCA9IGRhdGVHZXRUaW1lKHJldHJ5QWZ0ZXJSYXcpO1xuICAgICAgICByZXRyeUFmdGVyID0gTnVtYmVyLmlzTmFOKHQpID8gRGF0ZS5ub3coKSArIDEwMDAgOiB0O1xuICAgICAgfSBlbHNlIGlmIChyZXRyeUFmdGVyUmF3ICYmIHR5cGVvZiByZXRyeUFmdGVyUmF3ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBEdWNrLXR5cGVkIGRhdGUtbGlrZTogaW52b2tpbmcgaXRzIGdldFRpbWUoKSBydW5zIHdvcmtmbG93IGNvZGUuXG4gICAgICAgIGNvbnN0IGdldFRpbWUgPSByZWFkUHJvcGVydHkocmV0cnlBZnRlclJhdywgJ2dldFRpbWUnKTtcbiAgICAgICAgaWYgKHR5cGVvZiBnZXRUaW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmVjb3JkR3Vlc3RDb2RlKCdtZXRob2QnLCAnZ2V0VGltZScpO1xuICAgICAgICAgIGNvbnN0IHQgPSAoZ2V0VGltZSBhcyAodGhpczogdW5rbm93bikgPT4gbnVtYmVyKS5jYWxsKHJldHJ5QWZ0ZXJSYXcpO1xuICAgICAgICAgIHJldHJ5QWZ0ZXIgPSBOdW1iZXIuaXNOYU4odCkgPyBEYXRlLm5vdygpICsgMTAwMCA6IHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0cnlBZnRlciA9IERhdGUubm93KCkgKyAxMDAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2YgcmV0cnlBZnRlclJhdyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHJldHJ5QWZ0ZXJSYXcgPT09ICdudW1iZXInXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdCA9IG5ldyBEYXRlKHJldHJ5QWZ0ZXJSYXcpLmdldFRpbWUoKTtcbiAgICAgICAgcmV0cnlBZnRlciA9IE51bWJlci5pc05hTih0KSA/IERhdGUubm93KCkgKyAxMDAwIDogdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHJ5QWZ0ZXIgPSBEYXRlLm5vdygpICsgMTAwMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2UsXG4gICAgICAgIHJldHJ5QWZ0ZXIsXG4gICAgICB9IHNhdGlzZmllcyBTZXJpYWxpemFibGVTcGVjaWFsWydSZXRyeWFibGVFcnJvciddO1xuICAgIH0sXG4gICAgLy8gUnVudGltZURlY3J5cHRpb25FcnJvciBjYXJyaWVzIGFuIGV4dHJhIGBjb250ZXh0YCBvYmplY3QgKG9wZXJhdGlvbixcbiAgICAvLyBieXRlTGVuZ3RoLCBmb3JtYXRQcmVmaXgpIHRoYXQgdGhlIGdlbmVyaWMgRXJyb3IgcmVkdWNlciB3b3VsZCBkcm9wLlxuICAgIC8vIFByZXNlcnZlIGl0IHNvIHRoZSBkaWFnbm9zdGljIGRhdGEgc3Vydml2ZXMgdGhlIHJ1bi1lcnJvciByb3VuZCB0cmlwLlxuICAgIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoXG4gICAgICAgICdSdW50aW1lRGVjcnlwdGlvbkVycm9yJyxcbiAgICAgICAgdmFsdWVcbiAgICAgICk7XG4gICAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZHVjZWQ6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ1J1bnRpbWVEZWNyeXB0aW9uRXJyb3InXSA9IHtcbiAgICAgICAgLi4uYmFzZSxcbiAgICAgIH07XG4gICAgICBjb25zdCBjb250ZXh0ID0gcmVhZFByb3BlcnR5KHZhbHVlLCAnY29udGV4dCcpIGFzXG4gICAgICAgIHwgUnVudGltZURlY3J5cHRpb25FcnJvclsnY29udGV4dCddXG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWR1Y2VkLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZWQ7XG4gICAgfSxcbiAgICBTeW50YXhFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdTeW50YXhFcnJvcicpLFxuICAgIFR5cGVFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdUeXBlRXJyb3InKSxcbiAgICBVUklFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdVUklFcnJvcicpLFxuICAgIC8vIEFnZ3JlZ2F0ZUVycm9yIGlzIHNpbWlsYXIgdG8gb3RoZXIgc3ViY2xhc3NlcyBidXQgYWxzbyBwcmVzZXJ2ZXMgdGhlXG4gICAgLy8gYGVycm9yc2AgYXJyYXkuIFdlIGV4dGVuZCB0aGUgYmFzZSBoZWxwZXIncyBvdXRwdXQgaGVyZS5cbiAgICBBZ2dyZWdhdGVFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBiYXNlID0gcmVkdWNlTmFtZWRFcnJvclN1YmNsYXNzQmFzZSgnQWdncmVnYXRlRXJyb3InLCB2YWx1ZSk7XG4gICAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2UsXG4gICAgICAgIGVycm9yczogcmVhZFByb3BlcnR5KHZhbHVlLCAnZXJyb3JzJykgYXMgQWdncmVnYXRlRXJyb3JbJ2Vycm9ycyddLFxuICAgICAgfSBzYXRpc2ZpZXMgU2VyaWFsaXphYmxlU3BlY2lhbFsnQWdncmVnYXRlRXJyb3InXTtcbiAgICB9LFxuICAgIC8vIEJhc2UgRXJyb3IgcmVkdWNlcjogY2F0Y2gtYWxsIGZvciBhbnkgRXJyb3IgaW5zdGFuY2Ugbm90IG1hdGNoZWQgYnkgYVxuICAgIC8vIHNwZWNpZmljIHN1YmNsYXNzIHJlZHVjZXIgYWJvdmUgKGluY2x1ZGluZyB1c2VyIEVycm9yIHN1YmNsYXNzZXMgd2l0aG91dFxuICAgIC8vIFdPUktGTE9XX1NFUklBTElaRSkuIFByZXNlcnZlcyBgbmFtZWAgc28gdGhlIGVycm9yJ3MgaWRlbnRpdHkgaXMgcmV0YWluZWRcbiAgICAvLyBldmVuIHRob3VnaCB0aGUgZXhhY3QgY2xhc3MgY2Fubm90IGJlIHJlY29uc3RydWN0ZWQuXG4gICAgRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgcmVkdWNlZDogU2VyaWFsaXphYmxlU3BlY2lhbFsnRXJyb3InXSA9IHtcbiAgICAgICAgbmFtZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbmFtZScpIGFzIHN0cmluZyxcbiAgICAgICAgbWVzc2FnZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbWVzc2FnZScpIGFzIHN0cmluZyxcbiAgICAgICAgc3RhY2s6IHJlYWRFcnJvclN0YWNrKHZhbHVlKSxcbiAgICAgIH07XG4gICAgICBpZiAoaGFzUHJvcGVydHkodmFsdWUsICdjYXVzZScpKSB7XG4gICAgICAgIHJlZHVjZWQuY2F1c2UgPSByZWFkUHJvcGVydHkodmFsdWUsICdjYXVzZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZWQ7XG4gICAgfSxcbiAgICBGbG9hdDMyQXJyYXk6ICh2YWx1ZSkgPT4gdHlwZXMuaXNGbG9hdDMyQXJyYXkodmFsdWUpICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgRmxvYXQ2NEFycmF5OiAodmFsdWUpID0+IHR5cGVzLmlzRmxvYXQ2NEFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIC8vIEhlYWRlcnMgaXMgYSBob3N0IGNsYXNzIGluamVjdGVkIGludG8gdGhlIHNhbmRib3gsIHNvIGl0cyAoc2hhcmVkKVxuICAgIC8vIHByb3RvdHlwZSBpcyByZWFjaGFibGUgZnJvbSB3b3JrZmxvdyBjb2RlOyBpdGVyYXRlIHRocm91Z2ggdGhlXG4gICAgLy8gYm9vdC1jYXB0dXJlZCBpdGVyYXRvciBpbnN0ZWFkIG9mIGEgbGl2ZSBTeW1ib2wuaXRlcmF0b3IgbG9va3VwLlxuICAgIEhlYWRlcnM6ICh2YWx1ZSkgPT5cbiAgICAgIGlzSW5zdGFuY2VPZlByb3RvdHlwZSh2YWx1ZSwgSGVhZGVycy5wcm90b3R5cGUpICYmXG4gICAgICBoZWFkZXJzVG9FbnRyaWVzKHZhbHVlIGFzIEhlYWRlcnMpLFxuICAgIEludDhBcnJheTogKHZhbHVlKSA9PiB0eXBlcy5pc0ludDhBcnJheSh2YWx1ZSkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBJbnQxNkFycmF5OiAodmFsdWUpID0+IHR5cGVzLmlzSW50MTZBcnJheSh2YWx1ZSkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBJbnQzMkFycmF5OiAodmFsdWUpID0+IHR5cGVzLmlzSW50MzJBcnJheSh2YWx1ZSkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICAvLyBFbmdpbmUgYnJhbmQgY2hlY2sgKyBob3N0LXJlYWxtIGl0ZXJhdGlvbjogYSBwYXRjaGVkXG4gICAgLy8gYE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXWAgaW4gdGhlIHNhbmRib3ggaXMgbmV2ZXIgY29uc3VsdGVkLlxuICAgIE1hcDogKHZhbHVlKSA9PlxuICAgICAgdHlwZXMuaXNNYXAodmFsdWUpICYmIG1hcFRvRW50cmllcyh2YWx1ZSBhcyBNYXA8dW5rbm93biwgdW5rbm93bj4pLFxuICAgIFJlZ0V4cDogKHZhbHVlKSA9PlxuICAgICAgdHlwZXMuaXNSZWdFeHAodmFsdWUpICYmIHtcbiAgICAgICAgc291cmNlOiByZWdFeHBTb3VyY2UodmFsdWUpLFxuICAgICAgICBmbGFnczogcmVnRXhwRmxhZ3ModmFsdWUpLFxuICAgICAgfSxcbiAgICAvLyBSZXF1ZXN0IGFuZCBSZXNwb25zZSBhcmUgaW50ZW50aW9uYWxseSBOT1QgaW4gY29tbW9uIHJlZHVjZXJzLlxuICAgIC8vIFRoZXkgcmVxdWlyZSBtb2RlLXNwZWNpZmljIHJldml2ZXJzIChzdHJlYW0gaGFuZGxpbmcsIGV0Yy4pIGFuZFxuICAgIC8vIGluY2x1ZGluZyB0aGVtIGhlcmUgd2l0aG91dCBtYXRjaGluZyByZXZpdmVycyB3b3VsZCBjYXVzZSB0aGVtXG4gICAgLy8gdG8gZGVzZXJpYWxpemUgYXMgcGxhaW4gb2JqZWN0cy5cbiAgICBTZXQ6ICh2YWx1ZSkgPT4gdHlwZXMuaXNTZXQodmFsdWUpICYmIHNldFRvVmFsdWVzKHZhbHVlIGFzIFNldDx1bmtub3duPiksXG4gICAgVVJMOiAodmFsdWUpID0+XG4gICAgICBpc0luc3RhbmNlT2ZQcm90b3R5cGUodmFsdWUsIFVSTC5wcm90b3R5cGUpICYmIHVybEhyZWYodmFsdWUgYXMgVVJMKSxcbiAgICBXb3JrZmxvd0Z1bmN0aW9uOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIE9ubHkgbWF0Y2ggZnVuY3Rpb24gcmVmZXJlbmNlcyB3aXRoIGEgd29ya2Zsb3dJZCBwcm9wZXJ0eSAoc2V0IGJ5XG4gICAgICAvLyB0aGUgU1dDIGNvbXBpbGVyIG9uIHdvcmtmbG93IGZ1bmN0aW9ucykuIFBsYWluIHsgd29ya2Zsb3dJZCB9IG9iamVjdHNcbiAgICAgIC8vIGFyZSBOT1QgbWF0Y2hlZDsgdGhpcyBwcmV2ZW50cyBpbmZpbml0ZSByZWN1cnNpb24gc2luY2UgdGhlIHJlZHVjZWRcbiAgICAgIC8vIGZvcm0geyB3b3JrZmxvd0lkIH0gaXMgYSBwbGFpbiBvYmplY3QsIG5vdCBhIGZ1bmN0aW9uLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3Qgd29ya2Zsb3dJZCA9IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ3dvcmtmbG93SWQnKTtcbiAgICAgIGlmICh0eXBlb2Ygd29ya2Zsb3dJZCAhPT0gJ3N0cmluZycpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB7IHdvcmtmbG93SWQgfTtcbiAgICB9LFxuICAgIFVSTFNlYXJjaFBhcmFtczogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIWlzSW5zdGFuY2VPZlByb3RvdHlwZSh2YWx1ZSwgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgY29uc3QgdGV4dCA9IHVybFNlYXJjaFBhcmFtc1RvU3RyaW5nKHZhbHVlIGFzIFVSTFNlYXJjaFBhcmFtcyk7XG4gICAgICByZXR1cm4gdGV4dCA9PT0gJycgPyAnLicgOiB0ZXh0O1xuICAgIH0sXG4gICAgVWludDhBcnJheTogKHZhbHVlKSA9PiB0eXBlcy5pc1VpbnQ4QXJyYXkodmFsdWUpICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgVWludDhDbGFtcGVkQXJyYXk6ICh2YWx1ZSkgPT5cbiAgICAgIHR5cGVzLmlzVWludDhDbGFtcGVkQXJyYXkodmFsdWUpICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgVWludDE2QXJyYXk6ICh2YWx1ZSkgPT4gdHlwZXMuaXNVaW50MTZBcnJheSh2YWx1ZSkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICBVaW50MzJBcnJheTogKHZhbHVlKSA9PiB0eXBlcy5pc1VpbnQzMkFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICB9O1xufVxuXG4vLyAtLS0tIFJldml2ZXJzIC0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1vblJldml2ZXJzKFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBnbG9iYWxUaGlzXG4pOiBQYXJ0aWFsPFJldml2ZXJzPiB7XG4gIHJldHVybiB7XG4gICAgQXJyYXlCdWZmZXI6ICh2YWx1ZTogc3RyaW5nKSA9PiByZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSxcbiAgICBCaWdJbnQ6ICh2YWx1ZTogc3RyaW5nKSA9PiBnbG9iYWwuQmlnSW50KHZhbHVlKSxcbiAgICBCaWdJbnQ2NEFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuQmlnSW50NjRBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgQmlnVWludDY0QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5CaWdVaW50NjRBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgRGF0ZTogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLkRhdGUodmFsdWUpLFxuICAgIERPTUV4Y2VwdGlvbjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBnbG9iYWwuRE9NRXhjZXB0aW9uKHZhbHVlLm1lc3NhZ2UsIHZhbHVlLm5hbWUpO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICAvLyBET01FeGNlcHRpb24ncyBjb25zdHJ1Y3RvciBkb2Vzbid0IGFjY2VwdCBhIGNhdXNlIG9wdGlvbiwgc29cbiAgICAgIC8vIHdlIHNldCBpdCBtYW51YWxseSB3aGVuIHByZXNlbnQgaW4gdGhlIHNlcmlhbGl6ZWQgZGF0YS5cbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSBlcnJvci5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgLy8gRXJyb3Igc3ViY2xhc3MgcmV2aXZlcnMgcmVjb25zdHJ1Y3QgdGhlIGNvcnJlY3QgYnVpbHQtaW4gRXJyb3IgdHlwZS5cbiAgICAvLyBTZWUgYG1ha2VFcnJvclN1YmNsYXNzUmV2aXZlcmAgZm9yIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4gICAgRXZhbEVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXIoZ2xvYmFsLCAnRXZhbEVycm9yJyksXG4gICAgLy8gYEZhdGFsRXJyb3JgIGFuZCBgUmV0cnlhYmxlRXJyb3JgIGFyZSBub3QgYnVpbHQtaW5zLCBzbyB3ZSByZXNvbHZlIHRoZW1cbiAgICAvLyBmcm9tIHRoZSBjb25zdW1lcidzIGBnbG9iYWxUaGlzYCB2aWEgYSBgU3ltYm9sLmZvciguLi4pYCBrZXkgcmVnaXN0ZXJlZFxuICAgIC8vIGJ5IGBAd29ya2Zsb3cvZXJyb3JzYCBvbiBsb2FkLiBUaGlzIG1ha2VzIGBpbnN0YW5jZW9mIEZhdGFsRXJyb3JgIHdvcmtcbiAgICAvLyBpbiB1c2VyIGNvZGUgdGhhdCBsaXZlcyBpbiBhIGRpZmZlcmVudCByZWFsbSB0aGFuIHRoaXMgcmVkdWNlciBtb2R1bGVcbiAgICAvLyAoZS5nLiB3aGVuIHRoZSBob3N0IGh5ZHJhdGVzIGEgdmFsdWUgZGVzdGluZWQgZm9yIGEgd29ya2Zsb3cgVk1cbiAgICAvLyBjb250ZXh0KS4gU2VlIHRoZSByZWdpc3RyYXRpb24gYmxvY2sgYXQgdGhlIGJvdHRvbSBvZlxuICAgIC8vIGBwYWNrYWdlcy9lcnJvcnMvc3JjL2luZGV4LnRzYCBmb3IgZGV0YWlscy4gRmFsbHMgYmFjayB0byB0aGUgaW1wb3J0ZWRcbiAgICAvLyBjbGFzcyBmb3IgZW52aXJvbm1lbnRzIHdoZXJlIG5vIGJ1bmRsZWQgYEB3b3JrZmxvdy9lcnJvcnNgIGhhcyBsb2FkZWRcbiAgICAvLyBpbiB0aGUgY29uc3VtZXIgcmVhbG0uXG4gICAgRmF0YWxFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBDdG9yID1cbiAgICAgICAgKChnbG9iYWwgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj4pW1xuICAgICAgICAgIFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy9lcnJvcnMvL0ZhdGFsRXJyb3InKVxuICAgICAgICBdIGFzIHR5cGVvZiBGYXRhbEVycm9yIHwgdW5kZWZpbmVkKSA/PyBGYXRhbEVycm9yO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgQ3Rvcih2YWx1ZS5tZXNzYWdlKTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIGVycm9yLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBIb29rQ29uZmxpY3RFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBDdG9yID1cbiAgICAgICAgKChnbG9iYWwgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj4pW1xuICAgICAgICAgIFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy9lcnJvcnMvL0hvb2tDb25mbGljdEVycm9yJylcbiAgICAgICAgXSBhcyB0eXBlb2YgSG9va0NvbmZsaWN0RXJyb3IgfCB1bmRlZmluZWQpID8/IEhvb2tDb25mbGljdEVycm9yO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgQ3Rvcih2YWx1ZS50b2tlbiwgdmFsdWUuY29uZmxpY3RpbmdSdW5JZCk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSB7XG4gICAgICAgIChlcnJvciBhcyBFcnJvciAmIHsgY2F1c2U/OiB1bmtub3duIH0pLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBSYW5nZUVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXIoZ2xvYmFsLCAnUmFuZ2VFcnJvcicpLFxuICAgIFJlZmVyZW5jZUVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXIoZ2xvYmFsLCAnUmVmZXJlbmNlRXJyb3InKSxcbiAgICBSZXRyeWFibGVFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBVc2UgdGhlIGNvbnRleHQncyBgRGF0ZWAgY29uc3RydWN0b3IgKG1hdGNoaW5nIHRoZSByZXN0IG9mIHRoaXNcbiAgICAgIC8vIG1vZHVsZSkgc28gdGhlIHJlc3VsdGluZyBgcmV0cnlBZnRlcmAgRGF0ZSBwYXNzZXMgYGluc3RhbmNlb2ZcbiAgICAgIC8vIGdsb2JhbC5EYXRlYCBjaGVja3MgaW4gdGhlIHRhcmdldCByZWFsbS4gU2VlIHRoZSBGYXRhbEVycm9yIHJldml2ZXJcbiAgICAgIC8vIGFib3ZlIGZvciB3aHkgd2UgcmVzb2x2ZSBgUmV0cnlhYmxlRXJyb3JgIGZyb20gdGhlIGNvbnN1bWVyJ3NcbiAgICAgIC8vIGdsb2JhbFRoaXMgaW5zdGVhZCBvZiB0aGUgaW1wb3J0ZWQgY2xhc3MuXG4gICAgICBjb25zdCBDdG9yID1cbiAgICAgICAgKChnbG9iYWwgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj4pW1xuICAgICAgICAgIFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy9lcnJvcnMvL1JldHJ5YWJsZUVycm9yJylcbiAgICAgICAgXSBhcyB0eXBlb2YgUmV0cnlhYmxlRXJyb3IgfCB1bmRlZmluZWQpID8/IFJldHJ5YWJsZUVycm9yO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgQ3Rvcih2YWx1ZS5tZXNzYWdlLCB7XG4gICAgICAgIHJldHJ5QWZ0ZXI6IG5ldyBnbG9iYWwuRGF0ZSh2YWx1ZS5yZXRyeUFmdGVyKSxcbiAgICAgIH0pO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkgZXJyb3IuY2F1c2UgPSB2YWx1ZS5jYXVzZTtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gUmVzb2x2ZSBmcm9tIHRoZSBjb25zdW1lcidzIGdsb2JhbFRoaXMgKHNlZSB0aGUgRmF0YWxFcnJvciByZXZpdmVyXG4gICAgICAvLyBhYm92ZSkgc28gYGluc3RhbmNlb2YgUnVudGltZURlY3J5cHRpb25FcnJvcmAgaG9sZHMgYWNyb3NzIHJlYWxtcy5cbiAgICAgIGNvbnN0IEN0b3IgPVxuICAgICAgICAoKGdsb2JhbCBhcyBSZWNvcmQ8c3ltYm9sLCB1bmtub3duPilbXG4gICAgICAgICAgU3ltYm9sLmZvcignQHdvcmtmbG93L2Vycm9ycy8vUnVudGltZURlY3J5cHRpb25FcnJvcicpXG4gICAgICAgIF0gYXMgdHlwZW9mIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3IgfCB1bmRlZmluZWQpID8/XG4gICAgICAgIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3I7XG4gICAgICBjb25zdCBvcHRzOiBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3I+WzFdID0ge307XG4gICAgICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkgb3B0cy5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgaWYgKHZhbHVlLmNvbnRleHQgIT09IHVuZGVmaW5lZCkgb3B0cy5jb250ZXh0ID0gdmFsdWUuY29udGV4dDtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSwgb3B0cyk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIFN5bnRheEVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXIoZ2xvYmFsLCAnU3ludGF4RXJyb3InKSxcbiAgICBUeXBlRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmV2aXZlcihnbG9iYWwsICdUeXBlRXJyb3InKSxcbiAgICBVUklFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1VSSUVycm9yJyksXG4gICAgQWdncmVnYXRlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3Qgb3B0cyA9ICdjYXVzZScgaW4gdmFsdWUgPyB7IGNhdXNlOiB2YWx1ZS5jYXVzZSB9IDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZ2xvYmFsLkFnZ3JlZ2F0ZUVycm9yKFxuICAgICAgICB2YWx1ZS5lcnJvcnMsXG4gICAgICAgIHZhbHVlLm1lc3NhZ2UsXG4gICAgICAgIG9wdHNcbiAgICAgICk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIC8vIEJhc2UgRXJyb3IgcmV2aXZlcjogdXNlZCBmb3IgcGxhaW4gRXJyb3IgaW5zdGFuY2VzIGFuZCB1bnJlY29nbml6ZWRcbiAgICAvLyBFcnJvciBzdWJjbGFzc2VzLiBQcmVzZXJ2ZXMgYG5hbWVgIHNvIHRoZSBlcnJvcidzIGlkZW50aXR5IGlzIHJldGFpbmVkLlxuICAgIEVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IGdsb2JhbC5FcnJvcih2YWx1ZS5tZXNzYWdlLCBvcHRzKTtcbiAgICAgIGVycm9yLm5hbWUgPSB2YWx1ZS5uYW1lO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBGbG9hdDMyQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5GbG9hdDMyQXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEZsb2F0NjRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkZsb2F0NjRBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgSGVhZGVyczogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLkhlYWRlcnModmFsdWUpLFxuICAgIEludDhBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkludDhBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgSW50MTZBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkludDE2QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEludDMyQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5JbnQzMkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBNYXA6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5NYXAodmFsdWUpLFxuICAgIFJlZ0V4cDogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLlJlZ0V4cCh2YWx1ZS5zb3VyY2UsIHZhbHVlLmZsYWdzKSxcbiAgICBTZXQ6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5TZXQodmFsdWUpLFxuICAgIFVSTDogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLlVSTCh2YWx1ZSksXG4gICAgV29ya2Zsb3dGdW5jdGlvbjogKHZhbHVlKSA9PlxuICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdXb3JrZmxvdyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBkaXJlY3RseS4gVXNlIHN0YXJ0KCkgdG8gaW52b2tlIHRoZW0uJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgd29ya2Zsb3dJZDogdmFsdWUud29ya2Zsb3dJZCB9XG4gICAgICApLFxuICAgIFVSTFNlYXJjaFBhcmFtczogKHZhbHVlKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VUkxTZWFyY2hQYXJhbXModmFsdWUgPT09ICcuJyA/ICcnIDogdmFsdWUpLFxuICAgIFVpbnQ4QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50OEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBVaW50OENsYW1wZWRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLlVpbnQ4Q2xhbXBlZEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBVaW50MTZBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLlVpbnQxNkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBVaW50MzJBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLlVpbnQzMkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgfTtcbn1cblxuLy8gUmUtZXhwb3J0IGZvciB1c2UgaW4gbGVnYWN5IGNvbXBhdFxuZXhwb3J0IHsgcmV2aXZlIH07XG4iXX0=
502
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6YXRpb24vcmVkdWNlcnMvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7R0FTRztBQUVILE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxFQUNMLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixXQUFXLEdBQ1osTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsZUFBZSxFQUNmLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixZQUFZLEVBQ1osZUFBZSxFQUNmLFdBQVcsRUFDWCxZQUFZLEVBQ1osV0FBVyxFQUNYLE9BQU8sRUFDUCx1QkFBdUIsRUFDdkIsUUFBUSxHQUNULE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsMkJBQTJCO0FBRTNCLFNBQVMsbUJBQW1CLENBQzFCLEtBQXNCLEVBQ3RCLE1BQWMsRUFDZCxNQUFjO0lBRWQsc0RBQXNEO0lBQ3RELElBQUksTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUM3Qiw4REFBOEQ7SUFDOUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFzQjtJQUMxQyx5RUFBeUU7SUFDekUsMEVBQTBFO0lBQzFFLHdFQUF3RTtJQUN4RSxjQUFjO0lBQ2QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLE9B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QUUsQ0FDNUIsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN6RCxpQkFBaUIsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQ25DLElBQUksTUFBTSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRSxXQUFXLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUM3QixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFELFdBQVcsRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQzdCLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDM0QsQ0FBQztBQUNKLENBQUM7QUFFRCxxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcmVkdWNlcnMgYW5kIHJldml2ZXJzIGZvciB0eXBlcyBzaGFyZWQgYWNyb3NzIGFsbCBzZXJpYWxpemF0aW9uIG1vZGVzLlxuICpcbiAqIEhhbmRsZXM6IEFycmF5QnVmZmVyLCBCaWdJbnQsIHR5cGVkIGFycmF5cywgRGF0ZSwgRXJyb3IsIEhlYWRlcnMsIE1hcCwgU2V0LFxuICogUmVnRXhwLCBSZXF1ZXN0LCBSZXNwb25zZSwgVVJMLCBVUkxTZWFyY2hQYXJhbXMuXG4gKlxuICogTm90ZTogVXNlcyBOb2RlLmpzIEJ1ZmZlciBmb3IgYmFzZTY0IGVuY29kaW5nL2RlY29kaW5nLiBGb3IgZW52aXJvbm1lbnRzXG4gKiB3aXRob3V0IEJ1ZmZlciAoZS5nLiBRdWlja0pTIFZNKSwgYSBwb2x5ZmlsbCBvciBhbHRlcm5hdGl2ZSBiYXNlNjRcbiAqIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgbmVlZGVkLlxuICovXG5cbmltcG9ydCB7IHR5cGVzIH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7XG4gIEZhdGFsRXJyb3IsXG4gIEhvb2tDb25mbGljdEVycm9yLFxuICBSZXRyeWFibGVFcnJvcixcbiAgUnVudGltZURlY3J5cHRpb25FcnJvcixcbiAgU3RyZWFtRXJyb3IsXG59IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgYXJyYXlCdWZmZXJCeXRlTGVuZ3RoLFxuICBkYXRlR2V0RGF0ZSxcbiAgZGF0ZUdldFRpbWUsXG4gIGRhdGVUb0lTT1N0cmluZyxcbiAgaGFzUHJvcGVydHksXG4gIGhlYWRlcnNUb0VudHJpZXMsXG4gIGlzSW5zdGFuY2VPZlByb3RvdHlwZSxcbiAgbWFwVG9FbnRyaWVzLFxuICByZWFkUHJvcGVydHksXG4gIHJlY29yZEd1ZXN0Q29kZSxcbiAgcmVnRXhwRmxhZ3MsXG4gIHJlZ0V4cFNvdXJjZSxcbiAgc2V0VG9WYWx1ZXMsXG4gIHVybEhyZWYsXG4gIHVybFNlYXJjaFBhcmFtc1RvU3RyaW5nLFxuICB2aWV3SW5mbyxcbn0gZnJvbSAnLi4vaGFyZGVuZWQuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWR1Y2VycywgUmV2aXZlcnMsIFNlcmlhbGl6YWJsZVNwZWNpYWwgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8vIC0tLS0gQmFzZTY0IGhlbHBlcnMgLS0tLVxuXG5mdW5jdGlvbiBhcnJheUJ1ZmZlclRvQmFzZTY0KFxuICB2YWx1ZTogQXJyYXlCdWZmZXJMaWtlLFxuICBvZmZzZXQ6IG51bWJlcixcbiAgbGVuZ3RoOiBudW1iZXJcbik6IHN0cmluZyB7XG4gIC8vIEF2b2lkIHJldHVybmluZyBmYWxzeSB2YWx1ZSBmb3IgemVyby1sZW5ndGggYnVmZmVyc1xuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJy4nO1xuICAvLyBDcmVhdGUgYSBwcm9wZXIgY29weSB0byBhdm9pZCBBcnJheUJ1ZmZlciBkZXRhY2htZW50IGlzc3Vlc1xuICBjb25zdCB1aW50OCA9IG5ldyBVaW50OEFycmF5KHZhbHVlLCBvZmZzZXQsIGxlbmd0aCk7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OCkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xufVxuXG5mdW5jdGlvbiB2aWV3VG9CYXNlNjQodmFsdWU6IEFycmF5QnVmZmVyVmlldyk6IHN0cmluZyB7XG4gIC8vIFJlYWQgdGhlIHZpZXcncyByYW5nZSB0aHJvdWdoIGludGVybmFsLXNsb3QgZ2V0dGVycyAoc2VlIGhhcmRlbmVkLnRzKTpcbiAgLy8gb3duIHByb3BlcnRpZXMgc2hhZG93aW5nIGBidWZmZXJgL2BieXRlT2Zmc2V0YC9gYnl0ZUxlbmd0aGAgKG9yIHBhdGNoZWRcbiAgLy8gcHJvdG90eXBlIGdldHRlcnMgaW4gdGhlIHNhbmRib3ggcmVhbG0pIGNhbm5vdCBjaGFuZ2Ugd2hpY2ggYnl0ZXMgYXJlXG4gIC8vIHNlcmlhbGl6ZWQuXG4gIGNvbnN0IGluZm8gPSB2aWV3SW5mbyh2YWx1ZSk7XG4gIHJldHVybiBhcnJheUJ1ZmZlclRvQmFzZTY0KGluZm8uYnVmZmVyLCBpbmZvLmJ5dGVPZmZzZXQsIGluZm8uYnl0ZUxlbmd0aCk7XG59XG5cbmZ1bmN0aW9uIHJldml2ZUFycmF5QnVmZmVyKFxuICB2YWx1ZTogc3RyaW5nLFxuICBnbG9iYWw6IFJlY29yZDxzdHJpbmcsIGFueT5cbik6IEFycmF5QnVmZmVyIHtcbiAgY29uc3QgYmFzZTY0ID0gdmFsdWUgPT09ICcuJyA/ICcnIDogdmFsdWU7XG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICBjb25zdCBhcnJheUJ1ZmZlciA9IG5ldyBnbG9iYWwuQXJyYXlCdWZmZXIoYnVmZmVyLmxlbmd0aCk7XG4gIGNvbnN0IHVpbnQ4QXJyYXkgPSBuZXcgZ2xvYmFsLlVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpO1xuICB1aW50OEFycmF5LnNldChidWZmZXIpO1xuICByZXR1cm4gYXJyYXlCdWZmZXI7XG59XG5cbmZ1bmN0aW9uIHJldml2ZShzdHI6IHN0cmluZykge1xuICAvLyBkZXZhbHVlLnN0cmluZ2lmeSgpIGFsd2F5cyBwcm9kdWNlcyB2YWxpZCBKU09OOiBzcGVjaWFsIHZhbHVlc1xuICAvLyAodW5kZWZpbmVkLCBOYU4sIEluZmluaXR5LCAtMCkgYXJlIGVuY29kZWQgYXMgbmVnYXRpdmUgaW50ZWdlclxuICAvLyBzZW50aW5lbHMgYW5kIHRoZSByZW1haW5pbmcgc3RydWN0dXJlIGlzIG9yZGluYXJ5IEpTT04uIFBhcnNpbmdcbiAgLy8gd2l0aCBKU09OLnBhcnNlIHlpZWxkcyB0aGUgZmxhdHRlbmVkIGZvcm0gdGhhdCB1bmZsYXR0ZW4oKSBleHBlY3RzLlxuICByZXR1cm4gSlNPTi5wYXJzZShzdHIpO1xufVxuXG4vLyAtLS0tIEVycm9yIHN1YmNsYXNzIGhlbHBlcnMgLS0tLVxuXG4vKipcbiAqIFRoZSBzaGFyZWQgc2hhcGUgdGhhdCBldmVyeSBFcnJvci1zdWJjbGFzcyByZWR1Y2VyIGluIHRoaXMgbW9kdWxlXG4gKiBwcm9kdWNlcy4gU29tZSBzdWJjbGFzc2VzIChlLmcuIGBBZ2dyZWdhdGVFcnJvcmAsIGBSZXRyeWFibGVFcnJvcmApIGV4dGVuZFxuICogdGhpcyB3aXRoIGFkZGl0aW9uYWwgZmllbGRzIGJ5IHNwcmVhZGluZyB0aGUgYmFzZSBwYXlsb2FkLlxuICovXG50eXBlIEJhc2VFcnJvclBheWxvYWQgPSB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc3RhY2s/OiBzdHJpbmc7XG4gIGNhdXNlPzogdW5rbm93bjtcbn07XG5cbi8qKlxuICogU3Vic2V0IG9mIGBTZXJpYWxpemFibGVTcGVjaWFsYCBrZXlzIHdob3NlIHBheWxvYWQgc2hhcGUgaXMgZXhhY3RseSB0aGVcbiAqIGBCYXNlRXJyb3JQYXlsb2FkYC4gYG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcmAgaXMgY29uc3RyYWluZWQgdG8gb25seVxuICogdGhlc2Uga2V5cyBzbyBpdHMgcmV0dXJuIHR5cGUgaXMgc291bmQ7IHN1YmNsYXNzZXMgdGhhdCBuZWVkIGV4dHJhXG4gKiBmaWVsZHMgKGxpa2UgYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2Agb3IgYFJldHJ5YWJsZUVycm9yLnJldHJ5QWZ0ZXJgKSB1c2VcbiAqIGByZWR1Y2VFcnJvckJhc2VgIGRpcmVjdGx5IGFuZCBleHRlbmQgdGhlIHJlc3VsdC5cbiAqL1xudHlwZSBTaW1wbGVFcnJvclN1YmNsYXNzS2V5ID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSBleHRlbmRzIEJhc2VFcnJvclBheWxvYWRcbiAgICA/IEJhc2VFcnJvclBheWxvYWQgZXh0ZW5kcyBTZXJpYWxpemFibGVTcGVjaWFsW0tdXG4gICAgICA/IEtcbiAgICAgIDogbmV2ZXJcbiAgICA6IG5ldmVyO1xufVtrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTtcblxuLyoqXG4gKiBSZWFkcyBgZXJyb3Iuc3RhY2tgIGZvciBzZXJpYWxpemF0aW9uLiBBIG5hdHVyYWwgVjggZXJyb3IgY2FycmllcyBgc3RhY2tgXG4gKiBhcyBhbiBvd24gKmFjY2Vzc29yKiB3aG9zZSBmaXJzdCBpbnZvY2F0aW9uIGZvcm1hdHMgYW5kIGNhY2hlcyB0aGUgdHJhY2UuXG4gKiBUaGF0IHJlYWQgaXMgbm90IHBhc3NpdmU6IGl0IGV4ZWN1dGVzIGBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZWAgd2hlbiB0aGVcbiAqIHJlYWxtIGhhcyBvbmUgaW5zdGFsbGVkLCBhbmQgdGhlIGZvcm1hdC1hbmQtY2FjaGUgaXRzZWxmIGlzXG4gKiB3b3JrZmxvdy12aXNpYmxlIChhIGZvcm1hdHRlciBpbnN0YWxsZWQgbGF0ZXIgbmV2ZXIgcnVucyBmb3IgYW5cbiAqIGFscmVhZHktbWF0ZXJpYWxpemVkIGVycm9yKS4gQSBjb2xkIHJlcGxheSByZXBlYXRzIG5laXRoZXIgKGl0IHNraXBzXG4gKiBkZWh5ZHJhdGlvbiBlbnRpcmVseSksIHNvIHRoZSByZWFkIGlzIHJlY29yZGVkIGFzIGd1ZXN0IGNvZGUuIEFcbiAqIGRhdGEtcHJvcGVydHkgYHN0YWNrYCAocmVoeWRyYXRlZCBlcnJvcnMsIHdvcmtmbG93LWFzc2lnbmVkIHN0cmluZ3MpXG4gKiByZWFkcyBwYXNzaXZlbHkuXG4gKi9cbmZ1bmN0aW9uIHJlYWRFcnJvclN0YWNrKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUgYXMgb2JqZWN0LCAnc3RhY2snKTtcbiAgaWYgKGRlc2NyaXB0b3IgJiYgJ3ZhbHVlJyBpbiBkZXNjcmlwdG9yKSB7XG4gICAgcmV0dXJuIGRlc2NyaXB0b3IudmFsdWUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG4gIHJlY29yZEd1ZXN0Q29kZSgnZ2V0dGVyJywgJ3N0YWNrJyk7XG4gIGlmIChkZXNjcmlwdG9yPy5nZXQpIHtcbiAgICByZXR1cm4gZGVzY3JpcHRvci5nZXQuY2FsbCh2YWx1ZSkgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiByZWFkUHJvcGVydHkodmFsdWUsICdzdGFjaycpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZWR1Y2VzIGFueSBuYXRpdmUgRXJyb3IgaW5zdGFuY2UgdG8gdGhlIHNoYXJlZCBgQmFzZUVycm9yUGF5bG9hZGAgc2hhcGUsXG4gKiBwcmVzZXJ2aW5nIGBjYXVzZWAgb25seSB3aGVuIHByZXNlbnQgKHRvIGRpc3Rpbmd1aXNoIFwibm8gY2F1c2VcIiBmcm9tXG4gKiBcImNhdXNlIGlzIHVuZGVmaW5lZFwiKS4gVXNlZCBkaXJlY3RseSBieSByZWR1Y2VycyBmb3Igc3ViY2xhc3NlcyB0aGF0IG5lZWRcbiAqIHRvIGV4dGVuZCB0aGUgc2hhcGUgd2l0aCBhZGRpdGlvbmFsIGZpZWxkcy5cbiAqXG4gKiBgdHlwZXMuaXNOYXRpdmVFcnJvcigpYCBpcyB1c2VkIGluc3RlYWQgb2YgYGluc3RhbmNlb2ZgIGZvciBjcm9zcy1WTSBzYWZldHk6XG4gKiBlcnJvcnMgbWF5IG9yaWdpbmF0ZSBmcm9tIGEgZGlmZmVyZW50IFZNIGNvbnRleHQsIGFuZCBgaW5zdGFuY2VvZmAgZmFpbHNcbiAqIGFjcm9zcyBWTSBib3VuZGFyaWVzIHNpbmNlIGVhY2ggY29udGV4dCBoYXMgaXRzIG93biBFcnJvciBjb25zdHJ1Y3Rvci5cbiAqL1xuZnVuY3Rpb24gcmVkdWNlRXJyb3JCYXNlKHZhbHVlOiB1bmtub3duKTogQmFzZUVycm9yUGF5bG9hZCB8IGZhbHNlIHtcbiAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAvLyBgbWVzc2FnZWAvYGNhdXNlYCBhcmUgb3duIGRhdGEgcHJvcGVydGllcyBvbiBuYXR1cmFsIGVycm9ycywgc28gdGhlXG4gIC8vIGRlc2NyaXB0b3ItYmFzZWQgcmVhZHMgY29zdCBub3RoaW5nOyBhIHNhbmRib3gtZGVmaW5lZCBhY2Nlc3NvclxuICAvLyAoZS5nLiBhIGdldHRlciBvbiBhbiBFcnJvciBzdWJjbGFzcykgaXMgc3RpbGwgaW52b2tlZCBidXQgcmVjb3JkZWQuXG4gIGNvbnN0IHJlZHVjZWQ6IEJhc2VFcnJvclBheWxvYWQgPSB7XG4gICAgbWVzc2FnZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbWVzc2FnZScpIGFzIHN0cmluZyxcbiAgICBzdGFjazogcmVhZEVycm9yU3RhY2sodmFsdWUpLFxuICB9O1xuICBpZiAoaGFzUHJvcGVydHkodmFsdWUsICdjYXVzZScpKSByZWR1Y2VkLmNhdXNlID0gcmVhZFByb3BlcnR5KHZhbHVlLCAnY2F1c2UnKTtcbiAgcmV0dXJuIHJlZHVjZWQ7XG59XG5cbi8qKlxuICogUmVkdWNlcyBhIG5hdGl2ZSBlcnJvciB0byB0aGUgc2hhcmVkIGBCYXNlRXJyb3JQYXlsb2FkYCwgYnV0IG9ubHkgd2hlbiBpdHNcbiAqIGBuYW1lYCBpbnN0YW5jZSBwcm9wZXJ0eSBtYXRjaGVzIGBzdWJjbGFzc05hbWVgLiBVc2VkIGJ5OlxuICogICAtIGBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXJgLCBmb3Igc3ViY2xhc3NlcyB3aG9zZSBzZXJpYWxpemVkIHNoYXBlIGlzXG4gKiAgICAgZXhhY3RseSBgQmFzZUVycm9yUGF5bG9hZGAuXG4gKiAgIC0gSW5saW5lIHJlZHVjZXJzIGZvciBzdWJjbGFzc2VzIHRoYXQgZXh0ZW5kIHRoZSBzaGFwZSB3aXRoIGFkZGl0aW9uYWxcbiAqICAgICBmaWVsZHMgKGUuZy4gYEFnZ3JlZ2F0ZUVycm9yLmVycm9yc2AsIGBSZXRyeWFibGVFcnJvci5yZXRyeUFmdGVyYCkuXG4gKlxuICogTWF0Y2hpbmcgYnkgYHZhbHVlLm5hbWVgIChpbnN0ZWFkIG9mIGB2YWx1ZS5jb25zdHJ1Y3Rvcj8ubmFtZWApIHdvcmtzIHdpdGhcbiAqIGJ1bmRsZXJzIHRoYXQgZW1pdCB0aGUgY2xhc3MgYXMgYW4gYW5vbnltb3VzIGV4cHJlc3Npb24uIEUuZy4gVHVyYm9wYWNrXG4gKiBjb21waWxlcyBgZXhwb3J0IGNsYXNzIEZhdGFsRXJyb3IgZXh0ZW5kcyBFcnJvciB74oCmfWAgdG8gYSByZWdpc3RyYXRpb24gY2FsbFxuICogbGlrZSBgZS5zKFtcIkZhdGFsRXJyb3JcIiwgMCwgY2xhc3MgZXh0ZW5kcyBFcnJvciB74oCmfV0pYCwgYW5kIHRoZSByZXN1bHRpbmdcbiAqIGNvbnN0cnVjdG9yIGhhcyBgbmFtZSA9PT0gJydgLiBTaW5jZSBldmVyeSBFcnJvciBzdWJjbGFzcyB3ZSBjYXJlIGFib3V0XG4gKiBzZXRzIGB0aGlzLm5hbWVgIGV4cGxpY2l0bHkgaW4gaXRzIGNvbnN0cnVjdG9yIChidWlsdC1pbiBzdWJjbGFzc2VzIGRvIHRoaXNcbiAqIGF1dG9tYXRpY2FsbHk7IGBGYXRhbEVycm9yYC9gUmV0cnlhYmxlRXJyb3JgIGRvIGl0IGluIHVzZXIgY29kZSksIHRoZVxuICogaW5zdGFuY2UgcHJvcGVydHkgaXMgdGhlIHJlbGlhYmxlIGlkZW50aXR5IG1hcmtlciBhY3Jvc3MgcmVhbG1zIGFuZFxuICogYnVuZGxlcnMuXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoXG4gIHN1YmNsYXNzTmFtZTogc3RyaW5nLFxuICB2YWx1ZTogdW5rbm93blxuKTogQmFzZUVycm9yUGF5bG9hZCB8IGZhbHNlIHtcbiAgaWYgKCF0eXBlcy5pc05hdGl2ZUVycm9yKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICBpZiAocmVhZFByb3BlcnR5KHZhbHVlLCAnbmFtZScpICE9PSBzdWJjbGFzc05hbWUpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHJlZHVjZUVycm9yQmFzZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZHVjZXIgZm9yIGEgYnVpbHQtaW4gRXJyb3Igc3ViY2xhc3Mgd2hvc2Ugc2VyaWFsaXplZCBzaGFwZSBpc1xuICogZXhhY3RseSBgQmFzZUVycm9yUGF5bG9hZGAgKG5vIGV4dHJhIGZpZWxkcykuIFRoZSByZWR1Y2VyIG1hdGNoZXMgYnlcbiAqIGNvbnN0cnVjdG9yIG5hbWUgKGFmdGVyIHRoZSBpc05hdGl2ZUVycm9yIGdhdGUpLCBzaW5jZSBgaW5zdGFuY2VvZmAgbWF5XG4gKiBmYWlsIGFjcm9zcyBWTSBib3VuZGFyaWVzLlxuICovXG5mdW5jdGlvbiBtYWtlRXJyb3JTdWJjbGFzc1JlZHVjZXI8SyBleHRlbmRzIFNpbXBsZUVycm9yU3ViY2xhc3NLZXk+KFxuICBzdWJjbGFzc05hbWU6IEtcbikge1xuICByZXR1cm4gKHZhbHVlOiB1bmtub3duKTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSB8IGZhbHNlID0+IHtcbiAgICBjb25zdCBiYXNlID0gcmVkdWNlTmFtZWRFcnJvclN1YmNsYXNzQmFzZShzdWJjbGFzc05hbWUsIHZhbHVlKTtcbiAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gYmFzZSBhcyBTZXJpYWxpemFibGVTcGVjaWFsW0tdO1xuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSByZXZpdmVyIGZvciBhIGJ1aWx0LWluIEVycm9yIHN1YmNsYXNzLiBSZWNvbnN0cnVjdHMgdGhlIGNvcnJlY3RcbiAqIGJ1aWx0LWluIEVycm9yIHR5cGUgdXNpbmcgdGhlIGNvbnRleHQncyBjb25zdHJ1Y3Rvci4gVGhlIGBjYXVzZWAgb3B0aW9uIGlzXG4gKiBvbmx5IHBhc3NlZCB3aGVuIHRoZSBzZXJpYWxpemVkIGRhdGEgaW5jbHVkZXMgaXQsIHByZXNlcnZpbmcgdGhlIGRpc3RpbmN0aW9uXG4gKiBiZXR3ZWVuIFwibm8gY2F1c2VcIiBhbmQgXCJjYXVzZSBpcyB1bmRlZmluZWRcIi5cbiAqL1xuZnVuY3Rpb24gbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyPEsgZXh0ZW5kcyBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsPihcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBjdG9yTmFtZTogc3RyaW5nXG4pIHtcbiAgcmV0dXJuICh2YWx1ZTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSkgPT4ge1xuICAgIGNvbnN0IHYgPSB2YWx1ZSBhcyBCYXNlRXJyb3JQYXlsb2FkO1xuICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHYgPyB7IGNhdXNlOiB2LmNhdXNlIH0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgQ3RvciA9IGdsb2JhbFtjdG9yTmFtZV07XG4gICAgY29uc3QgZXJyb3I6IEVycm9yID0gbmV3IEN0b3Iodi5tZXNzYWdlLCBvcHRzKTtcbiAgICBpZiAodi5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHYuc3RhY2s7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9O1xufVxuXG4vLyAtLS0tIFJlZHVjZXJzIC0tLS1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1vblJlZHVjZXJzKFxuICAvLyBUaGUgYGdsb2JhbGAgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBBUEkgY29tcGF0aWJpbGl0eSwgYnV0IHRoZVxuICAvLyByZWR1Y2VycyBubyBsb25nZXIgcGVyZm9ybSBgaW5zdGFuY2VvZiBnbG9iYWwuWGAgY2hlY2tzOiBjbGFzc2lmaWNhdGlvblxuICAvLyBpcyBkb25lIHdpdGggZW5naW5lLWxldmVsIGJyYW5kIGNoZWNrcyAocmVhbG0tYWdub3N0aWMsIGltbXVuZSB0b1xuICAvLyByZWFzc2lnbmVkIHNhbmRib3ggZ2xvYmFscyBhbmQgYFN5bWJvbC5oYXNJbnN0YW5jZWApLCBhbmQgZXh0cmFjdGlvblxuICAvLyBnb2VzIHRocm91Z2ggaW50cmluc2ljcyBjYXB0dXJlZCBhdCBob3N0IGJvb3QuIFNlZSAuLi9oYXJkZW5lZC50cy5cbiAgX2dsb2JhbDogUmVjb3JkPHN0cmluZywgYW55PiA9IGdsb2JhbFRoaXNcbik6IFBhcnRpYWw8UmVkdWNlcnM+IHtcbiAgcmV0dXJuIHtcbiAgICBBcnJheUJ1ZmZlcjogKHZhbHVlKSA9PlxuICAgICAgdHlwZXMuaXNBcnJheUJ1ZmZlcih2YWx1ZSkgJiZcbiAgICAgIGFycmF5QnVmZmVyVG9CYXNlNjQodmFsdWUsIDAsIGFycmF5QnVmZmVyQnl0ZUxlbmd0aCh2YWx1ZSkpLFxuICAgIEJpZ0ludDogKHZhbHVlKSA9PlxuICAgICAgLy8gU3RyaW5nKGJpZ2ludCkgaXMgYSBzcGVjLWludGVybmFsIG51bWVyaWMgY29udmVyc2lvbjogdW5saWtlXG4gICAgICAvLyBgdmFsdWUudG9TdHJpbmcoKWAsIGl0IG5ldmVyIGNvbnN1bHRzIEJpZ0ludC5wcm90b3R5cGUuXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdiaWdpbnQnICYmIFN0cmluZyh2YWx1ZSksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlKSA9PlxuICAgICAgdHlwZXMuaXNCaWdJbnQ2NEFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWUpID0+XG4gICAgICB0eXBlcy5pc0JpZ1VpbnQ2NEFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIERhdGU6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gQnJhbmQgY2hlY2sgKyBjYXB0dXJlZCBpbnRyaW5zaWNzOiBhIHNhbmRib3gtc2lkZSBwYXRjaCBvZlxuICAgICAgLy8gYERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nYCAoZS5nLiBhIFRlbXBvcmFsIHBvbHlmaWxsIHdyYXBwaW5nIGl0KVxuICAgICAgLy8gaXMgbmV2ZXIgZXhlY3V0ZWQsIGFuZCBjYW5ub3QgcGVydHVyYiBWTSBzdGF0ZSBkdXJpbmcgc2VyaWFsaXphdGlvbi5cbiAgICAgIGlmICghdHlwZXMuaXNEYXRlKHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgdmFsaWQgPSAhTnVtYmVyLmlzTmFOKGRhdGVHZXREYXRlKHZhbHVlKSk7XG4gICAgICByZXR1cm4gdmFsaWQgPyBkYXRlVG9JU09TdHJpbmcodmFsdWUpIDogJy4nO1xuICAgIH0sXG4gICAgLy8gRE9NRXhjZXB0aW9uIGlzIGEgc3BlY2lhbCBjYXNlOiBpdCBgaW5zdGFuY2VvZiBFcnJvcmAgaXMgdHJ1ZSBpbiBOb2RlLFxuICAgIC8vIGJ1dCBgdHlwZXMuaXNOYXRpdmVFcnJvcigpYCByZXR1cm5zIEZBTFNFIGZvciBpdCwgc28gdGhlIGdlbmVyaWMgRXJyb3JcbiAgICAvLyByZWR1Y2VyICh3aGljaCBnYXRlcyBvbiBpc05hdGl2ZUVycm9yKSB3b24ndCBtYXRjaC4gQ2hlY2sgaXQgZXhwbGljaXRseVxuICAgIC8vIGJ5IGNvbnN0cnVjdG9yIG5hbWUgKyBFcnJvciBpbmhlcml0YW5jZSBzbyB3ZSBjYXRjaCBET01FeGNlcHRpb25zIGZyb21cbiAgICAvLyBhbnkgcmVhbG0gKGNyb3NzLVZNIHNhZmV0eTogaW5zdGFuY2VvZiBnbG9iYWwuRE9NRXhjZXB0aW9uIHdvdWxkIGZhaWxcbiAgICAvLyBmb3IgaW5zdGFuY2VzIG1pbnRlZCBpbiBhbm90aGVyIGNvbnRleHQpLlxuICAgIERPTUV4Y2VwdGlvbjogKHZhbHVlKSA9PiB7XG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgY3RvciA9IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ2NvbnN0cnVjdG9yJyk7XG4gICAgICBpZiAoIWN0b3IgfHwgcmVhZFByb3BlcnR5KGN0b3IsICduYW1lJykgIT09ICdET01FeGNlcHRpb24nKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCByZWR1Y2VkOiBTZXJpYWxpemFibGVTcGVjaWFsWydET01FeGNlcHRpb24nXSA9IHtcbiAgICAgICAgbWVzc2FnZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbWVzc2FnZScpIGFzIHN0cmluZyxcbiAgICAgICAgbmFtZTogcmVhZFByb3BlcnR5KHZhbHVlLCAnbmFtZScpIGFzIHN0cmluZyxcbiAgICAgICAgc3RhY2s6IHJlYWRFcnJvclN0YWNrKHZhbHVlKSxcbiAgICAgIH07XG4gICAgICBpZiAoaGFzUHJvcGVydHkodmFsdWUsICdjYXVzZScpKSB7XG4gICAgICAgIHJlZHVjZWQuY2F1c2UgPSByZWFkUHJvcGVydHkodmFsdWUsICdjYXVzZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZWQ7XG4gICAgfSxcbiAgICAvLyBFcnJvciBzdWJjbGFzcyByZWR1Y2VycyBhcmUgaW50ZW50aW9uYWxseSBwbGFjZWQgYmVmb3JlIHRoZSBiYXNlIEVycm9yXG4gICAgLy8gcmVkdWNlciBiZWNhdXNlIGRldmFsdWUgdXNlcyBmaXJzdC1tYXRjaC13aW5zLiBTdWJjbGFzcy1zcGVjaWZpYyByZWR1Y2Vyc1xuICAgIC8vIG11c3QgYmUgY2hlY2tlZCBmaXJzdCBzbyB0aGF0IGUuZy4gYSBUeXBlRXJyb3IgaXMgc2VyaWFsaXplZCBhcyBcIlR5cGVFcnJvclwiXG4gICAgLy8gcmF0aGVyIHRoYW4gZmFsbGluZyB0aHJvdWdoIHRvIHRoZSBnZW5lcmljIFwiRXJyb3JcIiByZWR1Y2VyLlxuICAgIC8vIFNlZSBgbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyYCBmb3IgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbiAgICBFdmFsRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignRXZhbEVycm9yJyksXG4gICAgRmF0YWxFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdGYXRhbEVycm9yJyksXG4gICAgSG9va0NvbmZsaWN0RXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoJ0hvb2tDb25mbGljdEVycm9yJywgdmFsdWUpO1xuICAgICAgaWYgKCFiYXNlKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCByZWR1Y2VkOiBTZXJpYWxpemFibGVTcGVjaWFsWydIb29rQ29uZmxpY3RFcnJvciddID0ge1xuICAgICAgICAuLi5iYXNlLFxuICAgICAgICB0b2tlbjogcmVhZFByb3BlcnR5KHZhbHVlLCAndG9rZW4nKSBhcyBIb29rQ29uZmxpY3RFcnJvclsndG9rZW4nXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBjb25mbGljdGluZ1J1bklkID0gcmVhZFByb3BlcnR5KHZhbHVlLCAnY29uZmxpY3RpbmdSdW5JZCcpIGFzXG4gICAgICAgIHwgSG9va0NvbmZsaWN0RXJyb3JbJ2NvbmZsaWN0aW5nUnVuSWQnXVxuICAgICAgICB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChjb25mbGljdGluZ1J1bklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVkdWNlZC5jb25mbGljdGluZ1J1bklkID0gY29uZmxpY3RpbmdSdW5JZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWR1Y2VkO1xuICAgIH0sXG4gICAgUmFuZ2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZWR1Y2VyKCdSYW5nZUVycm9yJyksXG4gICAgUmVmZXJlbmNlRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignUmVmZXJlbmNlRXJyb3InKSxcbiAgICAvLyBSZXRyeWFibGVFcnJvciBjYXJyaWVzIGFuIGV4dHJhIGByZXRyeUFmdGVyYCBEYXRlIHRoYXQgd2Ugc2VyaWFsaXplIGFzXG4gICAgLy8gYSBudW1lcmljIGVwb2NoIHRpbWVzdGFtcC4gVGhlIERhdGUgcmVkdWNlciB1c2VzIGBpbnN0YW5jZW9mIGdsb2JhbC5EYXRlYCxcbiAgICAvLyB3aGljaCBmYWlscyBmb3IgRGF0ZXMgZnJvbSBhIGRpZmZlcmVudCBWTSByZWFsbTsgc2VyaWFsaXppbmcgYXMgYVxuICAgIC8vIG51bWJlciBzaWRlc3RlcHMgdGhhdCBpc3N1ZS5cbiAgICBSZXRyeWFibGVFcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBiYXNlID0gcmVkdWNlTmFtZWRFcnJvclN1YmNsYXNzQmFzZSgnUmV0cnlhYmxlRXJyb3InLCB2YWx1ZSk7XG4gICAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJSYXcgPSByZWFkUHJvcGVydHkodmFsdWUsICdyZXRyeUFmdGVyJyk7XG4gICAgICBsZXQgcmV0cnlBZnRlcjogbnVtYmVyO1xuICAgICAgaWYgKHR5cGVzLmlzRGF0ZShyZXRyeUFmdGVyUmF3KSkge1xuICAgICAgICAvLyBHZW51aW5lIERhdGUgKGFueSByZWFsbSk6IHJlYWQgdGhlIGVwb2NoIHRocm91Z2ggdGhlIGludHJpbnNpYy5cbiAgICAgICAgY29uc3QgdCA9IGRhdGVHZXRUaW1lKHJldHJ5QWZ0ZXJSYXcpO1xuICAgICAgICByZXRyeUFmdGVyID0gTnVtYmVyLmlzTmFOKHQpID8gRGF0ZS5ub3coKSArIDEwMDAgOiB0O1xuICAgICAgfSBlbHNlIGlmIChyZXRyeUFmdGVyUmF3ICYmIHR5cGVvZiByZXRyeUFmdGVyUmF3ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBEdWNrLXR5cGVkIGRhdGUtbGlrZTogaW52b2tpbmcgaXRzIGdldFRpbWUoKSBydW5zIHdvcmtmbG93IGNvZGUuXG4gICAgICAgIGNvbnN0IGdldFRpbWUgPSByZWFkUHJvcGVydHkocmV0cnlBZnRlclJhdywgJ2dldFRpbWUnKTtcbiAgICAgICAgaWYgKHR5cGVvZiBnZXRUaW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmVjb3JkR3Vlc3RDb2RlKCdtZXRob2QnLCAnZ2V0VGltZScpO1xuICAgICAgICAgIGNvbnN0IHQgPSAoZ2V0VGltZSBhcyAodGhpczogdW5rbm93bikgPT4gbnVtYmVyKS5jYWxsKHJldHJ5QWZ0ZXJSYXcpO1xuICAgICAgICAgIHJldHJ5QWZ0ZXIgPSBOdW1iZXIuaXNOYU4odCkgPyBEYXRlLm5vdygpICsgMTAwMCA6IHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0cnlBZnRlciA9IERhdGUubm93KCkgKyAxMDAwO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2YgcmV0cnlBZnRlclJhdyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgdHlwZW9mIHJldHJ5QWZ0ZXJSYXcgPT09ICdudW1iZXInXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdCA9IG5ldyBEYXRlKHJldHJ5QWZ0ZXJSYXcpLmdldFRpbWUoKTtcbiAgICAgICAgcmV0cnlBZnRlciA9IE51bWJlci5pc05hTih0KSA/IERhdGUubm93KCkgKyAxMDAwIDogdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHJ5QWZ0ZXIgPSBEYXRlLm5vdygpICsgMTAwMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2UsXG4gICAgICAgIHJldHJ5QWZ0ZXIsXG4gICAgICB9IHNhdGlzZmllcyBTZXJpYWxpemFibGVTcGVjaWFsWydSZXRyeWFibGVFcnJvciddO1xuICAgIH0sXG4gICAgLy8gUnVudGltZURlY3J5cHRpb25FcnJvciBjYXJyaWVzIGFuIGV4dHJhIGBjb250ZXh0YCBvYmplY3QgKG9wZXJhdGlvbixcbiAgICAvLyBieXRlTGVuZ3RoLCBmb3JtYXRQcmVmaXgpIHRoYXQgdGhlIGdlbmVyaWMgRXJyb3IgcmVkdWNlciB3b3VsZCBkcm9wLlxuICAgIC8vIFByZXNlcnZlIGl0IHNvIHRoZSBkaWFnbm9zdGljIGRhdGEgc3Vydml2ZXMgdGhlIHJ1bi1lcnJvciByb3VuZCB0cmlwLlxuICAgIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoXG4gICAgICAgICdSdW50aW1lRGVjcnlwdGlvbkVycm9yJyxcbiAgICAgICAgdmFsdWVcbiAgICAgICk7XG4gICAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZHVjZWQ6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ1J1bnRpbWVEZWNyeXB0aW9uRXJyb3InXSA9IHtcbiAgICAgICAgLi4uYmFzZSxcbiAgICAgIH07XG4gICAgICBjb25zdCBjb250ZXh0ID0gcmVhZFByb3BlcnR5KHZhbHVlLCAnY29udGV4dCcpIGFzXG4gICAgICAgIHwgUnVudGltZURlY3J5cHRpb25FcnJvclsnY29udGV4dCddXG4gICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZWR1Y2VkLmNvbnRleHQgPSBjb250ZXh0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlZHVjZWQ7XG4gICAgfSxcbiAgICBTdHJlYW1FcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBiYXNlID0gcmVkdWNlTmFtZWRFcnJvclN1YmNsYXNzQmFzZSgnU3RyZWFtRXJyb3InLCB2YWx1ZSk7XG4gICAgICBpZiAoIWJhc2UpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZHVjZWQ6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ1N0cmVhbUVycm9yJ10gPSB7IC4uLmJhc2UgfTtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ3N0YXR1cycpO1xuICAgICAgY29uc3QgdXJsID0gcmVhZFByb3BlcnR5KHZhbHVlLCAndXJsJyk7XG4gICAgICBpZiAodHlwZW9mIHN0YXR1cyA9PT0gJ251bWJlcicpIHJlZHVjZWQuc3RhdHVzID0gc3RhdHVzO1xuICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSByZWR1Y2VkLnVybCA9IHVybDtcbiAgICAgIHJldHVybiByZWR1Y2VkO1xuICAgIH0sXG4gICAgU3ludGF4RXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignU3ludGF4RXJyb3InKSxcbiAgICBUeXBlRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignVHlwZUVycm9yJyksXG4gICAgVVJJRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmVkdWNlcignVVJJRXJyb3InKSxcbiAgICAvLyBBZ2dyZWdhdGVFcnJvciBpcyBzaW1pbGFyIHRvIG90aGVyIHN1YmNsYXNzZXMgYnV0IGFsc28gcHJlc2VydmVzIHRoZVxuICAgIC8vIGBlcnJvcnNgIGFycmF5LiBXZSBleHRlbmQgdGhlIGJhc2UgaGVscGVyJ3Mgb3V0cHV0IGhlcmUuXG4gICAgQWdncmVnYXRlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgYmFzZSA9IHJlZHVjZU5hbWVkRXJyb3JTdWJjbGFzc0Jhc2UoJ0FnZ3JlZ2F0ZUVycm9yJywgdmFsdWUpO1xuICAgICAgaWYgKCFiYXNlKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5iYXNlLFxuICAgICAgICBlcnJvcnM6IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ2Vycm9ycycpIGFzIEFnZ3JlZ2F0ZUVycm9yWydlcnJvcnMnXSxcbiAgICAgIH0gc2F0aXNmaWVzIFNlcmlhbGl6YWJsZVNwZWNpYWxbJ0FnZ3JlZ2F0ZUVycm9yJ107XG4gICAgfSxcbiAgICAvLyBCYXNlIEVycm9yIHJlZHVjZXI6IGNhdGNoLWFsbCBmb3IgYW55IEVycm9yIGluc3RhbmNlIG5vdCBtYXRjaGVkIGJ5IGFcbiAgICAvLyBzcGVjaWZpYyBzdWJjbGFzcyByZWR1Y2VyIGFib3ZlIChpbmNsdWRpbmcgdXNlciBFcnJvciBzdWJjbGFzc2VzIHdpdGhvdXRcbiAgICAvLyBXT1JLRkxPV19TRVJJQUxJWkUpLiBQcmVzZXJ2ZXMgYG5hbWVgIHNvIHRoZSBlcnJvcidzIGlkZW50aXR5IGlzIHJldGFpbmVkXG4gICAgLy8gZXZlbiB0aG91Z2ggdGhlIGV4YWN0IGNsYXNzIGNhbm5vdCBiZSByZWNvbnN0cnVjdGVkLlxuICAgIEVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGlmICghdHlwZXMuaXNOYXRpdmVFcnJvcih2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHJlZHVjZWQ6IFNlcmlhbGl6YWJsZVNwZWNpYWxbJ0Vycm9yJ10gPSB7XG4gICAgICAgIG5hbWU6IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnKSBhcyBzdHJpbmcsXG4gICAgICAgIG1lc3NhZ2U6IHJlYWRQcm9wZXJ0eSh2YWx1ZSwgJ21lc3NhZ2UnKSBhcyBzdHJpbmcsXG4gICAgICAgIHN0YWNrOiByZWFkRXJyb3JTdGFjayh2YWx1ZSksXG4gICAgICB9O1xuICAgICAgaWYgKGhhc1Byb3BlcnR5KHZhbHVlLCAnY2F1c2UnKSkge1xuICAgICAgICByZWR1Y2VkLmNhdXNlID0gcmVhZFByb3BlcnR5KHZhbHVlLCAnY2F1c2UnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZWR1Y2VkO1xuICAgIH0sXG4gICAgRmxvYXQzMkFycmF5OiAodmFsdWUpID0+IHR5cGVzLmlzRmxvYXQzMkFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIEZsb2F0NjRBcnJheTogKHZhbHVlKSA9PiB0eXBlcy5pc0Zsb2F0NjRBcnJheSh2YWx1ZSkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgICAvLyBIZWFkZXJzIGlzIGEgaG9zdCBjbGFzcyBpbmplY3RlZCBpbnRvIHRoZSBzYW5kYm94LCBzbyBpdHMgKHNoYXJlZClcbiAgICAvLyBwcm90b3R5cGUgaXMgcmVhY2hhYmxlIGZyb20gd29ya2Zsb3cgY29kZTsgaXRlcmF0ZSB0aHJvdWdoIHRoZVxuICAgIC8vIGJvb3QtY2FwdHVyZWQgaXRlcmF0b3IgaW5zdGVhZCBvZiBhIGxpdmUgU3ltYm9sLml0ZXJhdG9yIGxvb2t1cC5cbiAgICBIZWFkZXJzOiAodmFsdWUpID0+XG4gICAgICBpc0luc3RhbmNlT2ZQcm90b3R5cGUodmFsdWUsIEhlYWRlcnMucHJvdG90eXBlKSAmJlxuICAgICAgaGVhZGVyc1RvRW50cmllcyh2YWx1ZSBhcyBIZWFkZXJzKSxcbiAgICBJbnQ4QXJyYXk6ICh2YWx1ZSkgPT4gdHlwZXMuaXNJbnQ4QXJyYXkodmFsdWUpICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgSW50MTZBcnJheTogKHZhbHVlKSA9PiB0eXBlcy5pc0ludDE2QXJyYXkodmFsdWUpICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgSW50MzJBcnJheTogKHZhbHVlKSA9PiB0eXBlcy5pc0ludDMyQXJyYXkodmFsdWUpICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgLy8gRW5naW5lIGJyYW5kIGNoZWNrICsgaG9zdC1yZWFsbSBpdGVyYXRpb246IGEgcGF0Y2hlZFxuICAgIC8vIGBNYXAucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl1gIGluIHRoZSBzYW5kYm94IGlzIG5ldmVyIGNvbnN1bHRlZC5cbiAgICBNYXA6ICh2YWx1ZSkgPT5cbiAgICAgIHR5cGVzLmlzTWFwKHZhbHVlKSAmJiBtYXBUb0VudHJpZXModmFsdWUgYXMgTWFwPHVua25vd24sIHVua25vd24+KSxcbiAgICBSZWdFeHA6ICh2YWx1ZSkgPT5cbiAgICAgIHR5cGVzLmlzUmVnRXhwKHZhbHVlKSAmJiB7XG4gICAgICAgIHNvdXJjZTogcmVnRXhwU291cmNlKHZhbHVlKSxcbiAgICAgICAgZmxhZ3M6IHJlZ0V4cEZsYWdzKHZhbHVlKSxcbiAgICAgIH0sXG4gICAgLy8gUmVxdWVzdCBhbmQgUmVzcG9uc2UgYXJlIGludGVudGlvbmFsbHkgTk9UIGluIGNvbW1vbiByZWR1Y2Vycy5cbiAgICAvLyBUaGV5IHJlcXVpcmUgbW9kZS1zcGVjaWZpYyByZXZpdmVycyAoc3RyZWFtIGhhbmRsaW5nLCBldGMuKSBhbmRcbiAgICAvLyBpbmNsdWRpbmcgdGhlbSBoZXJlIHdpdGhvdXQgbWF0Y2hpbmcgcmV2aXZlcnMgd291bGQgY2F1c2UgdGhlbVxuICAgIC8vIHRvIGRlc2VyaWFsaXplIGFzIHBsYWluIG9iamVjdHMuXG4gICAgU2V0OiAodmFsdWUpID0+IHR5cGVzLmlzU2V0KHZhbHVlKSAmJiBzZXRUb1ZhbHVlcyh2YWx1ZSBhcyBTZXQ8dW5rbm93bj4pLFxuICAgIFVSTDogKHZhbHVlKSA9PlxuICAgICAgaXNJbnN0YW5jZU9mUHJvdG90eXBlKHZhbHVlLCBVUkwucHJvdG90eXBlKSAmJiB1cmxIcmVmKHZhbHVlIGFzIFVSTCksXG4gICAgV29ya2Zsb3dGdW5jdGlvbjogKHZhbHVlKSA9PiB7XG4gICAgICAvLyBPbmx5IG1hdGNoIGZ1bmN0aW9uIHJlZmVyZW5jZXMgd2l0aCBhIHdvcmtmbG93SWQgcHJvcGVydHkgKHNldCBieVxuICAgICAgLy8gdGhlIFNXQyBjb21waWxlciBvbiB3b3JrZmxvdyBmdW5jdGlvbnMpLiBQbGFpbiB7IHdvcmtmbG93SWQgfSBvYmplY3RzXG4gICAgICAvLyBhcmUgTk9UIG1hdGNoZWQ7IHRoaXMgcHJldmVudHMgaW5maW5pdGUgcmVjdXJzaW9uIHNpbmNlIHRoZSByZWR1Y2VkXG4gICAgICAvLyBmb3JtIHsgd29ya2Zsb3dJZCB9IGlzIGEgcGxhaW4gb2JqZWN0LCBub3QgYSBmdW5jdGlvbi5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHJldHVybiBmYWxzZTtcbiAgICAgIGNvbnN0IHdvcmtmbG93SWQgPSByZWFkUHJvcGVydHkodmFsdWUsICd3b3JrZmxvd0lkJyk7XG4gICAgICBpZiAodHlwZW9mIHdvcmtmbG93SWQgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4geyB3b3JrZmxvd0lkIH07XG4gICAgfSxcbiAgICBVUkxTZWFyY2hQYXJhbXM6ICh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKCFpc0luc3RhbmNlT2ZQcm90b3R5cGUodmFsdWUsIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRleHQgPSB1cmxTZWFyY2hQYXJhbXNUb1N0cmluZyh2YWx1ZSBhcyBVUkxTZWFyY2hQYXJhbXMpO1xuICAgICAgcmV0dXJuIHRleHQgPT09ICcnID8gJy4nIDogdGV4dDtcbiAgICB9LFxuICAgIFVpbnQ4QXJyYXk6ICh2YWx1ZSkgPT4gdHlwZXMuaXNVaW50OEFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIFVpbnQ4Q2xhbXBlZEFycmF5OiAodmFsdWUpID0+XG4gICAgICB0eXBlcy5pc1VpbnQ4Q2xhbXBlZEFycmF5KHZhbHVlKSAmJiB2aWV3VG9CYXNlNjQodmFsdWUpLFxuICAgIFVpbnQxNkFycmF5OiAodmFsdWUpID0+IHR5cGVzLmlzVWludDE2QXJyYXkodmFsdWUpICYmIHZpZXdUb0Jhc2U2NCh2YWx1ZSksXG4gICAgVWludDMyQXJyYXk6ICh2YWx1ZSkgPT4gdHlwZXMuaXNVaW50MzJBcnJheSh2YWx1ZSkgJiYgdmlld1RvQmFzZTY0KHZhbHVlKSxcbiAgfTtcbn1cblxuLy8gLS0tLSBSZXZpdmVycyAtLS0tXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb25SZXZpdmVycyhcbiAgZ2xvYmFsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gZ2xvYmFsVGhpc1xuKTogUGFydGlhbDxSZXZpdmVycz4ge1xuICByZXR1cm4ge1xuICAgIEFycmF5QnVmZmVyOiAodmFsdWU6IHN0cmluZykgPT4gcmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCksXG4gICAgQmlnSW50OiAodmFsdWU6IHN0cmluZykgPT4gZ2xvYmFsLkJpZ0ludCh2YWx1ZSksXG4gICAgQmlnSW50NjRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkJpZ0ludDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEJpZ1VpbnQ2NEFycmF5OiAodmFsdWU6IHN0cmluZykgPT5cbiAgICAgIG5ldyBnbG9iYWwuQmlnVWludDY0QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIERhdGU6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5EYXRlKHZhbHVlKSxcbiAgICBET01FeGNlcHRpb246ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZ2xvYmFsLkRPTUV4Y2VwdGlvbih2YWx1ZS5tZXNzYWdlLCB2YWx1ZS5uYW1lKTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgLy8gRE9NRXhjZXB0aW9uJ3MgY29uc3RydWN0b3IgZG9lc24ndCBhY2NlcHQgYSBjYXVzZSBvcHRpb24sIHNvXG4gICAgICAvLyB3ZSBzZXQgaXQgbWFudWFsbHkgd2hlbiBwcmVzZW50IGluIHRoZSBzZXJpYWxpemVkIGRhdGEuXG4gICAgICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkgZXJyb3IuY2F1c2UgPSB2YWx1ZS5jYXVzZTtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIC8vIEVycm9yIHN1YmNsYXNzIHJldml2ZXJzIHJlY29uc3RydWN0IHRoZSBjb3JyZWN0IGJ1aWx0LWluIEVycm9yIHR5cGUuXG4gICAgLy8gU2VlIGBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXJgIGZvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuICAgIEV2YWxFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ0V2YWxFcnJvcicpLFxuICAgIC8vIGBGYXRhbEVycm9yYCBhbmQgYFJldHJ5YWJsZUVycm9yYCBhcmUgbm90IGJ1aWx0LWlucywgc28gd2UgcmVzb2x2ZSB0aGVtXG4gICAgLy8gZnJvbSB0aGUgY29uc3VtZXIncyBgZ2xvYmFsVGhpc2AgdmlhIGEgYFN5bWJvbC5mb3IoLi4uKWAga2V5IHJlZ2lzdGVyZWRcbiAgICAvLyBieSBgQHdvcmtmbG93L2Vycm9yc2Agb24gbG9hZC4gVGhpcyBtYWtlcyBgaW5zdGFuY2VvZiBGYXRhbEVycm9yYCB3b3JrXG4gICAgLy8gaW4gdXNlciBjb2RlIHRoYXQgbGl2ZXMgaW4gYSBkaWZmZXJlbnQgcmVhbG0gdGhhbiB0aGlzIHJlZHVjZXIgbW9kdWxlXG4gICAgLy8gKGUuZy4gd2hlbiB0aGUgaG9zdCBoeWRyYXRlcyBhIHZhbHVlIGRlc3RpbmVkIGZvciBhIHdvcmtmbG93IFZNXG4gICAgLy8gY29udGV4dCkuIFNlZSB0aGUgcmVnaXN0cmF0aW9uIGJsb2NrIGF0IHRoZSBib3R0b20gb2ZcbiAgICAvLyBgcGFja2FnZXMvZXJyb3JzL3NyYy9pbmRleC50c2AgZm9yIGRldGFpbHMuIEZhbGxzIGJhY2sgdG8gdGhlIGltcG9ydGVkXG4gICAgLy8gY2xhc3MgZm9yIGVudmlyb25tZW50cyB3aGVyZSBubyBidW5kbGVkIGBAd29ya2Zsb3cvZXJyb3JzYCBoYXMgbG9hZGVkXG4gICAgLy8gaW4gdGhlIGNvbnN1bWVyIHJlYWxtLlxuICAgIEZhdGFsRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9GYXRhbEVycm9yJylcbiAgICAgICAgXSBhcyB0eXBlb2YgRmF0YWxFcnJvciB8IHVuZGVmaW5lZCkgPz8gRmF0YWxFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIGlmICgnY2F1c2UnIGluIHZhbHVlKSBlcnJvci5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgSG9va0NvbmZsaWN0RXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9Ib29rQ29uZmxpY3RFcnJvcicpXG4gICAgICAgIF0gYXMgdHlwZW9mIEhvb2tDb25mbGljdEVycm9yIHwgdW5kZWZpbmVkKSA/PyBIb29rQ29uZmxpY3RFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUudG9rZW4sIHZhbHVlLmNvbmZsaWN0aW5nUnVuSWQpO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICBpZiAoJ2NhdXNlJyBpbiB2YWx1ZSkge1xuICAgICAgICAoZXJyb3IgYXMgRXJyb3IgJiB7IGNhdXNlPzogdW5rbm93biB9KS5jYXVzZSA9IHZhbHVlLmNhdXNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGVycm9yO1xuICAgIH0sXG4gICAgUmFuZ2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1JhbmdlRXJyb3InKSxcbiAgICBSZWZlcmVuY2VFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1JlZmVyZW5jZUVycm9yJyksXG4gICAgUmV0cnlhYmxlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBjb250ZXh0J3MgYERhdGVgIGNvbnN0cnVjdG9yIChtYXRjaGluZyB0aGUgcmVzdCBvZiB0aGlzXG4gICAgICAvLyBtb2R1bGUpIHNvIHRoZSByZXN1bHRpbmcgYHJldHJ5QWZ0ZXJgIERhdGUgcGFzc2VzIGBpbnN0YW5jZW9mXG4gICAgICAvLyBnbG9iYWwuRGF0ZWAgY2hlY2tzIGluIHRoZSB0YXJnZXQgcmVhbG0uIFNlZSB0aGUgRmF0YWxFcnJvciByZXZpdmVyXG4gICAgICAvLyBhYm92ZSBmb3Igd2h5IHdlIHJlc29sdmUgYFJldHJ5YWJsZUVycm9yYCBmcm9tIHRoZSBjb25zdW1lcidzXG4gICAgICAvLyBnbG9iYWxUaGlzIGluc3RlYWQgb2YgdGhlIGltcG9ydGVkIGNsYXNzLlxuICAgICAgY29uc3QgQ3RvciA9XG4gICAgICAgICgoZ2xvYmFsIGFzIFJlY29yZDxzeW1ib2wsIHVua25vd24+KVtcbiAgICAgICAgICBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvZXJyb3JzLy9SZXRyeWFibGVFcnJvcicpXG4gICAgICAgIF0gYXMgdHlwZW9mIFJldHJ5YWJsZUVycm9yIHwgdW5kZWZpbmVkKSA/PyBSZXRyeWFibGVFcnJvcjtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IEN0b3IodmFsdWUubWVzc2FnZSwge1xuICAgICAgICByZXRyeUFmdGVyOiBuZXcgZ2xvYmFsLkRhdGUodmFsdWUucmV0cnlBZnRlciksXG4gICAgICB9KTtcbiAgICAgIGlmICh2YWx1ZS5zdGFjayAhPT0gdW5kZWZpbmVkKSBlcnJvci5zdGFjayA9IHZhbHVlLnN0YWNrO1xuICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIGVycm9yLmNhdXNlID0gdmFsdWUuY2F1c2U7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBSdW50aW1lRGVjcnlwdGlvbkVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIC8vIFJlc29sdmUgZnJvbSB0aGUgY29uc3VtZXIncyBnbG9iYWxUaGlzIChzZWUgdGhlIEZhdGFsRXJyb3IgcmV2aXZlclxuICAgICAgLy8gYWJvdmUpIHNvIGBpbnN0YW5jZW9mIFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3JgIGhvbGRzIGFjcm9zcyByZWFsbXMuXG4gICAgICBjb25zdCBDdG9yID1cbiAgICAgICAgKChnbG9iYWwgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj4pW1xuICAgICAgICAgIFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy9lcnJvcnMvL1J1bnRpbWVEZWNyeXB0aW9uRXJyb3InKVxuICAgICAgICBdIGFzIHR5cGVvZiBSdW50aW1lRGVjcnlwdGlvbkVycm9yIHwgdW5kZWZpbmVkKSA/P1xuICAgICAgICBSdW50aW1lRGVjcnlwdGlvbkVycm9yO1xuICAgICAgY29uc3Qgb3B0czogQ29uc3RydWN0b3JQYXJhbWV0ZXJzPHR5cGVvZiBSdW50aW1lRGVjcnlwdGlvbkVycm9yPlsxXSA9IHt9O1xuICAgICAgaWYgKCdjYXVzZScgaW4gdmFsdWUpIG9wdHMuY2F1c2UgPSB2YWx1ZS5jYXVzZTtcbiAgICAgIGlmICh2YWx1ZS5jb250ZXh0ICE9PSB1bmRlZmluZWQpIG9wdHMuY29udGV4dCA9IHZhbHVlLmNvbnRleHQ7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBDdG9yKHZhbHVlLm1lc3NhZ2UsIG9wdHMpO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBTdHJlYW1FcnJvcjogKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBDdG9yID1cbiAgICAgICAgKChnbG9iYWwgYXMgUmVjb3JkPHN5bWJvbCwgdW5rbm93bj4pW1xuICAgICAgICAgIFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy9lcnJvcnMvL1N0cmVhbUVycm9yJylcbiAgICAgICAgXSBhcyB0eXBlb2YgU3RyZWFtRXJyb3IgfCB1bmRlZmluZWQpID8/IFN0cmVhbUVycm9yO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgQ3Rvcih2YWx1ZS5tZXNzYWdlLCB7XG4gICAgICAgIC4uLignY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHt9KSxcbiAgICAgICAgc3RhdHVzOiB2YWx1ZS5zdGF0dXMsXG4gICAgICAgIHVybDogdmFsdWUudXJsLFxuICAgICAgfSk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIFN5bnRheEVycm9yOiBtYWtlRXJyb3JTdWJjbGFzc1Jldml2ZXIoZ2xvYmFsLCAnU3ludGF4RXJyb3InKSxcbiAgICBUeXBlRXJyb3I6IG1ha2VFcnJvclN1YmNsYXNzUmV2aXZlcihnbG9iYWwsICdUeXBlRXJyb3InKSxcbiAgICBVUklFcnJvcjogbWFrZUVycm9yU3ViY2xhc3NSZXZpdmVyKGdsb2JhbCwgJ1VSSUVycm9yJyksXG4gICAgQWdncmVnYXRlRXJyb3I6ICh2YWx1ZSkgPT4ge1xuICAgICAgY29uc3Qgb3B0cyA9ICdjYXVzZScgaW4gdmFsdWUgPyB7IGNhdXNlOiB2YWx1ZS5jYXVzZSB9IDogdW5kZWZpbmVkO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgZ2xvYmFsLkFnZ3JlZ2F0ZUVycm9yKFxuICAgICAgICB2YWx1ZS5lcnJvcnMsXG4gICAgICAgIHZhbHVlLm1lc3NhZ2UsXG4gICAgICAgIG9wdHNcbiAgICAgICk7XG4gICAgICBpZiAodmFsdWUuc3RhY2sgIT09IHVuZGVmaW5lZCkgZXJyb3Iuc3RhY2sgPSB2YWx1ZS5zdGFjaztcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxuICAgIC8vIEJhc2UgRXJyb3IgcmV2aXZlcjogdXNlZCBmb3IgcGxhaW4gRXJyb3IgaW5zdGFuY2VzIGFuZCB1bnJlY29nbml6ZWRcbiAgICAvLyBFcnJvciBzdWJjbGFzc2VzLiBQcmVzZXJ2ZXMgYG5hbWVgIHNvIHRoZSBlcnJvcidzIGlkZW50aXR5IGlzIHJldGFpbmVkLlxuICAgIEVycm9yOiAodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSAnY2F1c2UnIGluIHZhbHVlID8geyBjYXVzZTogdmFsdWUuY2F1c2UgfSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGVycm9yID0gbmV3IGdsb2JhbC5FcnJvcih2YWx1ZS5tZXNzYWdlLCBvcHRzKTtcbiAgICAgIGVycm9yLm5hbWUgPSB2YWx1ZS5uYW1lO1xuICAgICAgaWYgKHZhbHVlLnN0YWNrICE9PSB1bmRlZmluZWQpIGVycm9yLnN0YWNrID0gdmFsdWUuc3RhY2s7XG4gICAgICByZXR1cm4gZXJyb3I7XG4gICAgfSxcbiAgICBGbG9hdDMyQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5GbG9hdDMyQXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEZsb2F0NjRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkZsb2F0NjRBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgSGVhZGVyczogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLkhlYWRlcnModmFsdWUpLFxuICAgIEludDhBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkludDhBcnJheShyZXZpdmVBcnJheUJ1ZmZlcih2YWx1ZSwgZ2xvYmFsKSksXG4gICAgSW50MTZBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLkludDE2QXJyYXkocmV2aXZlQXJyYXlCdWZmZXIodmFsdWUsIGdsb2JhbCkpLFxuICAgIEludDMyQXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5JbnQzMkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBNYXA6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5NYXAodmFsdWUpLFxuICAgIFJlZ0V4cDogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLlJlZ0V4cCh2YWx1ZS5zb3VyY2UsIHZhbHVlLmZsYWdzKSxcbiAgICBTZXQ6ICh2YWx1ZSkgPT4gbmV3IGdsb2JhbC5TZXQodmFsdWUpLFxuICAgIFVSTDogKHZhbHVlKSA9PiBuZXcgZ2xvYmFsLlVSTCh2YWx1ZSksXG4gICAgV29ya2Zsb3dGdW5jdGlvbjogKHZhbHVlKSA9PlxuICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICdXb3JrZmxvdyBmdW5jdGlvbnMgY2Fubm90IGJlIGNhbGxlZCBkaXJlY3RseS4gVXNlIHN0YXJ0KCkgdG8gaW52b2tlIHRoZW0uJ1xuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgd29ya2Zsb3dJZDogdmFsdWUud29ya2Zsb3dJZCB9XG4gICAgICApLFxuICAgIFVSTFNlYXJjaFBhcmFtczogKHZhbHVlKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VUkxTZWFyY2hQYXJhbXModmFsdWUgPT09ICcuJyA/ICcnIDogdmFsdWUpLFxuICAgIFVpbnQ4QXJyYXk6ICh2YWx1ZTogc3RyaW5nKSA9PlxuICAgICAgbmV3IGdsb2JhbC5VaW50OEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBVaW50OENsYW1wZWRBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLlVpbnQ4Q2xhbXBlZEFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBVaW50MTZBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLlVpbnQxNkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgICBVaW50MzJBcnJheTogKHZhbHVlOiBzdHJpbmcpID0+XG4gICAgICBuZXcgZ2xvYmFsLlVpbnQzMkFycmF5KHJldml2ZUFycmF5QnVmZmVyKHZhbHVlLCBnbG9iYWwpKSxcbiAgfTtcbn1cblxuLy8gUmUtZXhwb3J0IGZvciB1c2UgaW4gbGVnYWN5IGNvbXBhdFxuZXhwb3J0IHsgcmV2aXZlIH07XG4iXX0=
@@ -147,6 +147,13 @@ export interface SerializableSpecial {
147
147
  cause?: unknown;
148
148
  context?: RuntimeDecryptionErrorContext;
149
149
  };
150
+ StreamError: {
151
+ message: string;
152
+ stack?: string;
153
+ cause?: unknown;
154
+ status?: number;
155
+ url?: string;
156
+ };
150
157
  Request: {
151
158
  method: string;
152
159
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/serialization/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/serialization/types.ts"],"names":[],"mappings":"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"}
@@ -32,4 +32,4 @@ export const SerializationFormat = {
32
32
  /** Zstandard-compressed payload (inner payload has its own format prefix) */
33
33
  ZSTD: 'zstd',
34
34
  };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQWVIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsTUFBc0I7SUFDbEMsa0VBQWtFO0lBQ2xFLFNBQVMsRUFBRSxNQUFzQjtJQUNqQzs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sRUFBRSxNQUFzQjtJQUM5Qix3RUFBd0U7SUFDeEUsSUFBSSxFQUFFLE1BQXNCO0lBQzVCLDZFQUE2RTtJQUM3RSxJQUFJLEVBQUUsTUFBc0I7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIHR5cGVzIGZvciB0aGUgc2VyaWFsaXphdGlvbiBzeXN0ZW0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdW50aW1lRGVjcnlwdGlvbkVycm9yQ29udGV4dCB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuXG4vLyAtLS0tIEZvcm1hdCBQcmVmaXggLS0tLVxuXG4vKipcbiAqIEEgZm9ybWF0IHByZWZpeCBpcyBleGFjdGx5IDQgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIFthLXowLTldLlxuICpcbiAqIFRoaXMgaXMgYSBicmFuZGVkIHN0cmluZyB0eXBlOiB1c2UgYGlzRm9ybWF0UHJlZml4KClgIHRvIHZhbGlkYXRlXG4gKiBhdCBydW50aW1lLiBUaGUgYFNlcmlhbGl6YXRpb25Gb3JtYXRgIG9iamVjdCBwcm92aWRlcyB3ZWxsLWtub3duXG4gKiBjb25zdGFudHMsIGJ1dCBjb2RlY3MgbWF5IGRlZmluZSBhZGRpdGlvbmFsIHByZWZpeGVzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtYXRQcmVmaXggPSBzdHJpbmcgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6ICdGb3JtYXRQcmVmaXgnIH07XG5cbi8qKlxuICogUnVudGltZSB0eXBlIGd1YXJkIGZvciBmb3JtYXQgcHJlZml4IHN0cmluZ3MuXG4gKlxuICogVmFsaWRhdGVzIHRoYXQgYSBzdHJpbmcgaXMgZXhhY3RseSA0IGNoYXJhY3RlcnMgb2YgW2EtejAtOV0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1hdFByZWZpeCh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRm9ybWF0UHJlZml4IHtcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gNCAmJiAvXlthLXowLTldezR9JC8udGVzdCh2YWx1ZSk7XG59XG5cbi8qKlxuICogV2VsbC1rbm93biBmb3JtYXQgcHJlZml4IGNvbnN0YW50cy4gQ29kZWNzIG1heSBkZWZpbmUgYWRkaXRpb25hbCBvbmVzLlxuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkZvcm1hdCA9IHtcbiAgLyoqIGRldmFsdWUgc3RyaW5naWZ5L3BhcnNlIHdpdGggVGV4dEVuY29kZXIvVGV4dERlY29kZXIgKi9cbiAgREVWQUxVRV9WMTogJ2RldmwnIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqIEVuY3J5cHRlZCBwYXlsb2FkIChpbm5lciBwYXlsb2FkIGhhcyBpdHMgb3duIGZvcm1hdCBwcmVmaXgpICovXG4gIEVOQ1JZUFRFRDogJ2VuY3InIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqXG4gICAqIFNlYWxlZCBwYXlsb2FkOiBhc3ltbWV0cmljYWxseSBlbmNyeXB0ZWQgdG8gYSBydW4ncyBYMjU1MTkgcHVibGljIGtleVxuICAgKiAoaW5uZXIgcGF5bG9hZCBoYXMgaXRzIG93biBmb3JtYXQgcHJlZml4KS5cbiAgICpcbiAgICogVXNlZCBmb3IgKmNyb3NzLXJ1biogd3JpdGVzIChob29rIHBheWxvYWRzLCBmb3J3YXJkZWQgc3RyZWFtIGZyYW1lcyksXG4gICAqIHdoZXJlIHRoZSB3cml0ZXIgaG9sZHMgb25seSB0aGUgcmVjaXBpZW50IHJ1bidzIHB1YmxpYyBrZXkgYW5kIHRoZXJlZm9yZVxuICAgKiBjYW5ub3QgZGVjcnlwdC4gQSBydW4ncyBvd24gcGF5bG9hZHMgY29udGludWUgdG8gdXNlIHtAbGluayBFTkNSWVBURUR9LlxuICAgKiBTZWUgYHNlYWxlZC1ib3gudHNgIGZvciB0aGUgY29uc3RydWN0aW9uLlxuICAgKi9cbiAgU0VBTEVEOiAnZW5jcCcgYXMgRm9ybWF0UHJlZml4LFxuICAvKiogR3ppcC1jb21wcmVzc2VkIHBheWxvYWQgKGlubmVyIHBheWxvYWQgaGFzIGl0cyBvd24gZm9ybWF0IHByZWZpeCkgKi9cbiAgR1pJUDogJ2d6aXAnIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqIFpzdGFuZGFyZC1jb21wcmVzc2VkIHBheWxvYWQgKGlubmVyIHBheWxvYWQgaGFzIGl0cyBvd24gZm9ybWF0IHByZWZpeCkgKi9cbiAgWlNURDogJ3pzdGQnIGFzIEZvcm1hdFByZWZpeCxcbn0gYXMgY29uc3Q7XG5cbi8vIC0tLS0gU2VyaWFsaXphYmxlIFR5cGVzIC0tLS1cblxuLyoqXG4gKiBXaXJlLWZyYW1pbmcgZm9ybWF0IGlkZW50aWZpZXIgY2FycmllZCBpbiB0aGUgc2VyaWFsaXplZFxuICogYFJlYWRhYmxlU3RyZWFtYCByZWYncyBgZnJhbWluZ2AgZmllbGQuXG4gKlxuICogLSBhYnNlbnQgLyBgJ3JhdydgOiBjaHVua3MgYXJlIHdyaXR0ZW4gdG8gdGhlIHRyYW5zcG9ydCB2ZXJiYXRpbVxuICogICAobGVnYWN5IGZvcm1hdCwgbm8gYXV0by1yZWNvbm5lY3Qgc3VwcG9ydCkuXG4gKiAtIGAnZnJhbWVkLXYxJ2A6IGVhY2ggY2h1bmsgaXMgd3JhcHBlZCBpbiBhIDQtYnl0ZSBiaWctZW5kaWFuIGxlbmd0aFxuICogICBwcmVmaXgsIGFsbG93aW5nIHRoZSByZWFkZXIgdG8gaWRlbnRpZnkgY2h1bmsgYm91bmRhcmllcyBhbmRcbiAqICAgdHJhbnNwYXJlbnRseSByZWNvbm5lY3Qgb24gdHJhbnNpZW50IHN0cmVhbSBlcnJvcnMuXG4gKi9cbmV4cG9ydCB0eXBlIEJ5dGVTdHJlYW1GcmFtaW5nID0gJ3JhdycgfCAnZnJhbWVkLXYxJztcblxuLyoqXG4gKiBUeXBlcyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFuZGxpbmcgd2hlbiBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZC5cbiAqIElmIGEgdHlwZSBpcyBhZGRlZCBoZXJlLCBpdCBNVVNUIGFsc28gYmUgYWRkZWQgdG8gdGhlIGBTZXJpYWxpemFibGVgXG4gKiB0eXBlIGluIGBzY2hlbWFzLnRzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemFibGVTcGVjaWFsIHtcbiAgQXJyYXlCdWZmZXI6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBCaWdJbnQ6IHN0cmluZzsgLy8gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGJpZ2ludFxuICBCaWdJbnQ2NEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQmlnVWludDY0QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBEYXRlOiBzdHJpbmc7IC8vIElTTyBzdHJpbmdcbiAgRE9NRXhjZXB0aW9uOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gIH07XG4gIEZhdGFsRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEZsb2F0MzJBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEZsb2F0NjRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEVycm9yOiB7IG5hbWU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEV2YWxFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgSGVhZGVyczogW3N0cmluZywgc3RyaW5nXVtdO1xuICBIb29rQ29uZmxpY3RFcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgdG9rZW46IHN0cmluZztcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgcmVxdWlyZWQgd2hlbiBIb29rQ29uZmxpY3RFcnJvci5jb25mbGljdGluZ1J1bklkIGlzIHJlcXVpcmVkLlxuICAgIGNvbmZsaWN0aW5nUnVuSWQ/OiBzdHJpbmc7XG4gIH07XG4gIEludDhBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEludDE2QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBJbnQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgTWFwOiBbYW55LCBhbnldW107XG4gIFJhbmdlRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFJlYWRhYmxlU3RyZWFtOlxuICAgIHwge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIHR5cGU/OiAnYnl0ZXMnO1xuICAgICAgICBzdGFydEluZGV4PzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2lyZS1mcmFtaW5nIGZvcm1hdCBmb3IgYnl0ZSBzdHJlYW1zLiBTZWUge0BsaW5rIEJ5dGVTdHJlYW1GcmFtaW5nfVxuICAgICAgICAgKiBhbmQgYGdldEJ5dGVGcmFtaW5nU3RyZWFtYCAvIGBnZXRCeXRlVW5mcmFtaW5nU3RyZWFtYC5cbiAgICAgICAgICpcbiAgICAgICAgICogT25seSBtZWFuaW5nZnVsIHdoZW4gYHR5cGUgPT09ICdieXRlcydgLiBBYnNlbnQgb24gb2JqZWN0IHN0cmVhbXNcbiAgICAgICAgICogKHdoaWNoIGFsd2F5cyB1c2UgbGVuZ3RoLXByZWZpeGVkIGRldmFsdWUgZnJhbWluZykgYW5kIG9uIGxlZ2FjeVxuICAgICAgICAgKiBieXRlIHN0cmVhbXMgd3JpdHRlbiBieSBTREtzIHRoYXQgcHJlZGF0ZSBmcmFtaW5nIHN1cHBvcnQ7IHRob3NlXG4gICAgICAgICAqIGFyZSBpbnRlcnByZXRlZCBhcyBgJ3JhdydgIGJ5IHRoZSBjb25zdW1lci5cbiAgICAgICAgICovXG4gICAgICAgIGZyYW1pbmc/OiBCeXRlU3RyZWFtRnJhbWluZztcbiAgICAgIH1cbiAgICB8IHsgYm9keUluaXQ6IGFueSB9O1xuICBSZWZlcmVuY2VFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgUmVnRXhwOiB7IHNvdXJjZTogc3RyaW5nOyBmbGFnczogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBgcmV0cnlBZnRlcmAgaXMgc2VyaWFsaXplZCBhcyBhIG51bWVyaWMgZXBvY2ggdGltZXN0YW1wIHJhdGhlciB0aGFuIGFcbiAgICogYERhdGVgIHRvIGJlIHJlYWxtLXNhZmUuIFRoZSBEYXRlIHJlZHVjZXIgdXNlcyBgaW5zdGFuY2VvZiBnbG9iYWwuRGF0ZWAsXG4gICAqIHdoaWNoIGZhaWxzIGZvciBEYXRlcyBmcm9tIGEgZGlmZmVyZW50IFZNIHJlYWxtLlxuICAgKi9cbiAgUmV0cnlhYmxlRXJyb3I6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgY2F1c2U/OiB1bmtub3duO1xuICAgIHJldHJ5QWZ0ZXI6IG51bWJlcjtcbiAgfTtcbiAgUnVudGltZURlY3J5cHRpb25FcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgY29udGV4dD86IFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3JDb250ZXh0O1xuICB9O1xuICBSZXF1ZXN0OiB7XG4gICAgbWV0aG9kOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgaGVhZGVyczogSGVhZGVycztcbiAgICBib2R5OiBSZXF1ZXN0Wydib2R5J107XG4gICAgZHVwbGV4OiBSZXF1ZXN0WydkdXBsZXgnXTtcbiAgICByZXNwb25zZVdyaXRhYmxlPzogV3JpdGFibGVTdHJlYW08UmVzcG9uc2U+O1xuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICB9O1xuICBSZXNwb25zZToge1xuICAgIHR5cGU6IFJlc3BvbnNlWyd0eXBlJ107XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBudW1iZXI7XG4gICAgc3RhdHVzVGV4dDogc3RyaW5nO1xuICAgIGhlYWRlcnM6IEhlYWRlcnM7XG4gICAgYm9keTogUmVzcG9uc2VbJ2JvZHknXTtcbiAgICByZWRpcmVjdGVkOiBib29sZWFuO1xuICB9O1xuICBDbGFzczoge1xuICAgIGNsYXNzSWQ6IHN0cmluZztcbiAgfTtcbiAgSW5zdGFuY2U6IHtcbiAgICBjbGFzc0lkOiBzdHJpbmc7XG4gICAgZGF0YTogdW5rbm93bjtcbiAgfTtcbiAgU2V0OiBhbnlbXTtcbiAgU3ludGF4RXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFN0ZXBGdW5jdGlvbjoge1xuICAgIHN0ZXBJZDogc3RyaW5nO1xuICAgIGNsb3N1cmVWYXJzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAvKipcbiAgICAgKiBDYXB0dXJlZCBsZXhpY2FsIGB0aGlzYCBmb3Igc3RlcCBwcm94aWVzIHRoYXQgd2VyZSBjcmVhdGVkIHZpYVxuICAgICAqIGB1c2VTdGVwKC4uLikuYmluZCh0aGlzQXJnKWAgKHRoZSBTV0MgcGx1Z2luIGVtaXRzIHRoaXMgZm9yIG5lc3RlZFxuICAgICAqIGFycm93IHN0ZXBzIHRoYXQgY2xvc2Ugb3ZlciB0aGVpciBlbmNsb3NpbmcgZnVuY3Rpb24ncyBgdGhpc2ApLlxuICAgICAqIFRoZSByZXZpdmVyIHJlLWJpbmRzIHRoZSBmcmVzaGx5LWNyZWF0ZWQgcHJveHkgdG8gdGhpcyB2YWx1ZSBzbyB0aGVcbiAgICAgKiBiaW5kaW5nIHN1cnZpdmVzIHNlcmlhbGl6YXRpb24gcm91bmQtdHJpcHMuXG4gICAgICovXG4gICAgYm91bmRUaGlzPzogdW5rbm93bjtcbiAgICAvKipcbiAgICAgKiBQcmVmaWxsZWQgYXJndW1lbnRzIGNhcHR1cmVkIHdoZW4gdGhlIHVzZXIgKHJhdGhlciB0aGFuIHRoZSBTV0NcbiAgICAgKiBwbHVnaW4pIGNhbGxlZCBgdXNlU3RlcCguLi4pLmJpbmQodGhpc0FyZywgeCwgeSlgLiBUaGUgcmV2aXZlclxuICAgICAqIHJlLWFwcGxpZXMgdGhlc2UgYWxvbmdzaWRlIGBib3VuZFRoaXNgIHNvIHBhcnRpYWwgYXBwbGljYXRpb25cbiAgICAgKiBzdXJ2aXZlcyBzZXJpYWxpemF0aW9uLiBUaGUgU1dDIHBsdWdpbiBvbmx5IGV2ZXIgZW1pdHNcbiAgICAgKiBgLmJpbmQodGhpcylgIHdpdGggbm8gZXh0cmEgYXJncyB0b2RheTsgdGhpcyBzbG90IGV4aXN0cyBzbyBhXG4gICAgICogaGFuZC13cml0dGVuIGAuYmluZCh0aGlzQXJnLCB4KWAgZG9lc24ndCBzaWxlbnRseSBsb3NlIGB4YCBhZnRlclxuICAgICAqIHJvdW5kLXRyaXBwaW5nIHRocm91Z2ggdGhlIHJlZHVjZXIvcmV2aXZlci5cbiAgICAgKi9cbiAgICBib3VuZEFyZ3M/OiB1bmtub3duW107XG4gIH07XG4gIFR5cGVFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgVVJJRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFVSTDogc3RyaW5nO1xuICBXb3JrZmxvd0Z1bmN0aW9uOiB7XG4gICAgd29ya2Zsb3dJZDogc3RyaW5nO1xuICB9O1xuICBVUkxTZWFyY2hQYXJhbXM6IHN0cmluZztcbiAgVWludDhBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIFVpbnQ4Q2xhbXBlZEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgVWludDE2QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBVaW50MzJBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEFnZ3JlZ2F0ZUVycm9yOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHN0YWNrPzogc3RyaW5nO1xuICAgIGNhdXNlPzogdW5rbm93bjtcbiAgICBlcnJvcnM6IHVua25vd25bXTtcbiAgfTtcbiAgV3JpdGFibGVTdHJlYW06IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIHJ1bklkIG9mIHRoZSB3b3JrZmxvdyBydW4gdGhhdCBvd25zIHRoZSB1bmRlcmx5aW5nIHNlcnZlclxuICAgICAqIHN0cmVhbS4gUHJlc2VudCBvbmx5IHdoZW4gdGhlIHdyaXRhYmxlIHdhcyBmb3J3YXJkZWQgYWNyb3NzIGFcbiAgICAgKiBgc3RhcnQoKWAgYm91bmRhcnkgKHBhcmVudCDihpIgY2hpbGQpLiBXaGVuIG9taXR0ZWQsIHRoZSB3cml0YWJsZVxuICAgICAqIGJlbG9uZ3MgdG8gdGhlIHJlY2VpdmluZyBydW4gKHRoZSBub3JtYWwgaW4tcnVuIGNhc2UpLlxuICAgICAqL1xuICAgIHJ1bklkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBkZXBsb3ltZW50IHRoYXQgb3ducyB0aGUgc2VydmVyIHN0cmVhbS4gQ2FycmllZCB3aXRoIGBydW5JZGBcbiAgICAgKiBzbyBhIGNoaWxkIHJ1bm5pbmcgb24gYSBuZXdlciBkZXBsb3ltZW50IGNhbiBlbmNyeXB0IGNodW5rcyB3aXRoXG4gICAgICogdGhlIHBhcmVudCdzIGtleSB3aXRob3V0IGZldGNoaW5nIHRoZSBwYXJlbnQgcnVuIGZpcnN0LlxuICAgICAqL1xuICAgIGRlcGxveW1lbnRJZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgb3duaW5nIHJ1bidzIFgyNTUxOSBwdWJsaWMga2V5IChiYXNlNjQpLCB3aGVuIGl0IGhhcyBvbmUuXG4gICAgICpcbiAgICAgKiBMZXRzIHRoZSByZWNlaXZpbmcgcnVuIHNlYWwgZnJhbWVzIHRvIHRoZSBzdHJlYW0ncyBvd25lciB3aXRoIG5vXG4gICAgICogbG9va3VwIGF0IGFsbDogbmVpdGhlciBhIHJ1biBmZXRjaCBub3IgYSBrZXktQVBJIHJvdW5kIHRyaXAuIFRoZVxuICAgICAqIG93bmVyIGRlcml2ZXMgdGhpcyBsb2NhbGx5IHdoZW4gaXQgY3JlYXRlcyB0aGUgc3RyZWFtLCBzbyBpbmNsdWRpbmdcbiAgICAgKiBpdCBoZXJlIGlzIGZyZWUuIEFic2VudCBmb3IgcnVucyBjcmVhdGVkIGJ5IG9sZGVyIFNES3MsIGluIHdoaWNoXG4gICAgICogY2FzZSB0aGUgcmVjZWl2ZXIgZmFsbHMgYmFjayB0byByZXNvbHZpbmcgdGhlIG93bmVyJ3Mgc3ltbWV0cmljIGtleS5cbiAgICAgKi9cbiAgICBlbmNyeXB0aW9uUHVibGljS2V5Pzogc3RyaW5nO1xuICB9O1xuICBBYm9ydENvbnRyb2xsZXI6IHtcbiAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgaG9va1Rva2VuOiBzdHJpbmc7XG4gICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiB1bmtub3duO1xuICB9O1xuICBBYm9ydFNpZ25hbDoge1xuICAgIHN0cmVhbU5hbWU6IHN0cmluZztcbiAgICBob29rVG9rZW46IHN0cmluZztcbiAgICBhYm9ydGVkOiBib29sZWFuO1xuICAgIHJlYXNvbj86IHVua25vd247XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlZHVjZXJzID0ge1xuICBbSyBpbiBrZXlvZiBTZXJpYWxpemFibGVTcGVjaWFsXTogKFxuICAgIHZhbHVlOiBhbnlcbiAgKSA9PiBTZXJpYWxpemFibGVTcGVjaWFsW0tdIHwgZmFsc2U7XG59O1xuXG5leHBvcnQgdHlwZSBSZXZpdmVycyA9IHtcbiAgW0sgaW4ga2V5b2YgU2VyaWFsaXphYmxlU3BlY2lhbF06ICh2YWx1ZTogU2VyaWFsaXphYmxlU3BlY2lhbFtLXSkgPT4gYW55O1xufTtcbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXphdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQWVIOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHO0lBQ2pDLDJEQUEyRDtJQUMzRCxVQUFVLEVBQUUsTUFBc0I7SUFDbEMsa0VBQWtFO0lBQ2xFLFNBQVMsRUFBRSxNQUFzQjtJQUNqQzs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sRUFBRSxNQUFzQjtJQUM5Qix3RUFBd0U7SUFDeEUsSUFBSSxFQUFFLE1BQXNCO0lBQzVCLDZFQUE2RTtJQUM3RSxJQUFJLEVBQUUsTUFBc0I7Q0FDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIHR5cGVzIGZvciB0aGUgc2VyaWFsaXphdGlvbiBzeXN0ZW0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSdW50aW1lRGVjcnlwdGlvbkVycm9yQ29udGV4dCB9IGZyb20gJ0B3b3JrZmxvdy9lcnJvcnMnO1xuXG4vLyAtLS0tIEZvcm1hdCBQcmVmaXggLS0tLVxuXG4vKipcbiAqIEEgZm9ybWF0IHByZWZpeCBpcyBleGFjdGx5IDQgbG93ZXJjYXNlIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIFthLXowLTldLlxuICpcbiAqIFRoaXMgaXMgYSBicmFuZGVkIHN0cmluZyB0eXBlOiB1c2UgYGlzRm9ybWF0UHJlZml4KClgIHRvIHZhbGlkYXRlXG4gKiBhdCBydW50aW1lLiBUaGUgYFNlcmlhbGl6YXRpb25Gb3JtYXRgIG9iamVjdCBwcm92aWRlcyB3ZWxsLWtub3duXG4gKiBjb25zdGFudHMsIGJ1dCBjb2RlY3MgbWF5IGRlZmluZSBhZGRpdGlvbmFsIHByZWZpeGVzLlxuICovXG5leHBvcnQgdHlwZSBGb3JtYXRQcmVmaXggPSBzdHJpbmcgJiB7IHJlYWRvbmx5IF9fYnJhbmQ6ICdGb3JtYXRQcmVmaXgnIH07XG5cbi8qKlxuICogUnVudGltZSB0eXBlIGd1YXJkIGZvciBmb3JtYXQgcHJlZml4IHN0cmluZ3MuXG4gKlxuICogVmFsaWRhdGVzIHRoYXQgYSBzdHJpbmcgaXMgZXhhY3RseSA0IGNoYXJhY3RlcnMgb2YgW2EtejAtOV0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1hdFByZWZpeCh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgRm9ybWF0UHJlZml4IHtcbiAgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gNCAmJiAvXlthLXowLTldezR9JC8udGVzdCh2YWx1ZSk7XG59XG5cbi8qKlxuICogV2VsbC1rbm93biBmb3JtYXQgcHJlZml4IGNvbnN0YW50cy4gQ29kZWNzIG1heSBkZWZpbmUgYWRkaXRpb25hbCBvbmVzLlxuICovXG5leHBvcnQgY29uc3QgU2VyaWFsaXphdGlvbkZvcm1hdCA9IHtcbiAgLyoqIGRldmFsdWUgc3RyaW5naWZ5L3BhcnNlIHdpdGggVGV4dEVuY29kZXIvVGV4dERlY29kZXIgKi9cbiAgREVWQUxVRV9WMTogJ2RldmwnIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqIEVuY3J5cHRlZCBwYXlsb2FkIChpbm5lciBwYXlsb2FkIGhhcyBpdHMgb3duIGZvcm1hdCBwcmVmaXgpICovXG4gIEVOQ1JZUFRFRDogJ2VuY3InIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqXG4gICAqIFNlYWxlZCBwYXlsb2FkOiBhc3ltbWV0cmljYWxseSBlbmNyeXB0ZWQgdG8gYSBydW4ncyBYMjU1MTkgcHVibGljIGtleVxuICAgKiAoaW5uZXIgcGF5bG9hZCBoYXMgaXRzIG93biBmb3JtYXQgcHJlZml4KS5cbiAgICpcbiAgICogVXNlZCBmb3IgKmNyb3NzLXJ1biogd3JpdGVzIChob29rIHBheWxvYWRzLCBmb3J3YXJkZWQgc3RyZWFtIGZyYW1lcyksXG4gICAqIHdoZXJlIHRoZSB3cml0ZXIgaG9sZHMgb25seSB0aGUgcmVjaXBpZW50IHJ1bidzIHB1YmxpYyBrZXkgYW5kIHRoZXJlZm9yZVxuICAgKiBjYW5ub3QgZGVjcnlwdC4gQSBydW4ncyBvd24gcGF5bG9hZHMgY29udGludWUgdG8gdXNlIHtAbGluayBFTkNSWVBURUR9LlxuICAgKiBTZWUgYHNlYWxlZC1ib3gudHNgIGZvciB0aGUgY29uc3RydWN0aW9uLlxuICAgKi9cbiAgU0VBTEVEOiAnZW5jcCcgYXMgRm9ybWF0UHJlZml4LFxuICAvKiogR3ppcC1jb21wcmVzc2VkIHBheWxvYWQgKGlubmVyIHBheWxvYWQgaGFzIGl0cyBvd24gZm9ybWF0IHByZWZpeCkgKi9cbiAgR1pJUDogJ2d6aXAnIGFzIEZvcm1hdFByZWZpeCxcbiAgLyoqIFpzdGFuZGFyZC1jb21wcmVzc2VkIHBheWxvYWQgKGlubmVyIHBheWxvYWQgaGFzIGl0cyBvd24gZm9ybWF0IHByZWZpeCkgKi9cbiAgWlNURDogJ3pzdGQnIGFzIEZvcm1hdFByZWZpeCxcbn0gYXMgY29uc3Q7XG5cbi8vIC0tLS0gU2VyaWFsaXphYmxlIFR5cGVzIC0tLS1cblxuLyoqXG4gKiBXaXJlLWZyYW1pbmcgZm9ybWF0IGlkZW50aWZpZXIgY2FycmllZCBpbiB0aGUgc2VyaWFsaXplZFxuICogYFJlYWRhYmxlU3RyZWFtYCByZWYncyBgZnJhbWluZ2AgZmllbGQuXG4gKlxuICogLSBhYnNlbnQgLyBgJ3JhdydgOiBjaHVua3MgYXJlIHdyaXR0ZW4gdG8gdGhlIHRyYW5zcG9ydCB2ZXJiYXRpbVxuICogICAobGVnYWN5IGZvcm1hdCwgbm8gYXV0by1yZWNvbm5lY3Qgc3VwcG9ydCkuXG4gKiAtIGAnZnJhbWVkLXYxJ2A6IGVhY2ggY2h1bmsgaXMgd3JhcHBlZCBpbiBhIDQtYnl0ZSBiaWctZW5kaWFuIGxlbmd0aFxuICogICBwcmVmaXgsIGFsbG93aW5nIHRoZSByZWFkZXIgdG8gaWRlbnRpZnkgY2h1bmsgYm91bmRhcmllcyBhbmRcbiAqICAgdHJhbnNwYXJlbnRseSByZWNvbm5lY3Qgb24gdHJhbnNpZW50IHN0cmVhbSBlcnJvcnMuXG4gKi9cbmV4cG9ydCB0eXBlIEJ5dGVTdHJlYW1GcmFtaW5nID0gJ3JhdycgfCAnZnJhbWVkLXYxJztcblxuLyoqXG4gKiBUeXBlcyB0aGF0IG5lZWQgc3BlY2lhbGl6ZWQgaGFuZGxpbmcgd2hlbiBzZXJpYWxpemVkL2Rlc2VyaWFsaXplZC5cbiAqIElmIGEgdHlwZSBpcyBhZGRlZCBoZXJlLCBpdCBNVVNUIGFsc28gYmUgYWRkZWQgdG8gdGhlIGBTZXJpYWxpemFibGVgXG4gKiB0eXBlIGluIGBzY2hlbWFzLnRzYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemFibGVTcGVjaWFsIHtcbiAgQXJyYXlCdWZmZXI6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBCaWdJbnQ6IHN0cmluZzsgLy8gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGJpZ2ludFxuICBCaWdJbnQ2NEFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgQmlnVWludDY0QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBEYXRlOiBzdHJpbmc7IC8vIElTTyBzdHJpbmdcbiAgRE9NRXhjZXB0aW9uOiB7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gIH07XG4gIEZhdGFsRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEZsb2F0MzJBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEZsb2F0NjRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEVycm9yOiB7IG5hbWU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIEV2YWxFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgSGVhZGVyczogW3N0cmluZywgc3RyaW5nXVtdO1xuICBIb29rQ29uZmxpY3RFcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgdG9rZW46IHN0cmluZztcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgcmVxdWlyZWQgd2hlbiBIb29rQ29uZmxpY3RFcnJvci5jb25mbGljdGluZ1J1bklkIGlzIHJlcXVpcmVkLlxuICAgIGNvbmZsaWN0aW5nUnVuSWQ/OiBzdHJpbmc7XG4gIH07XG4gIEludDhBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIEludDE2QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBJbnQzMkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgTWFwOiBbYW55LCBhbnldW107XG4gIFJhbmdlRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFJlYWRhYmxlU3RyZWFtOlxuICAgIHwge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIHR5cGU/OiAnYnl0ZXMnO1xuICAgICAgICBzdGFydEluZGV4PzogbnVtYmVyO1xuICAgICAgICAvKipcbiAgICAgICAgICogV2lyZS1mcmFtaW5nIGZvcm1hdCBmb3IgYnl0ZSBzdHJlYW1zLiBTZWUge0BsaW5rIEJ5dGVTdHJlYW1GcmFtaW5nfVxuICAgICAgICAgKiBhbmQgYGdldEJ5dGVGcmFtaW5nU3RyZWFtYCAvIGBnZXRCeXRlVW5mcmFtaW5nU3RyZWFtYC5cbiAgICAgICAgICpcbiAgICAgICAgICogT25seSBtZWFuaW5nZnVsIHdoZW4gYHR5cGUgPT09ICdieXRlcydgLiBBYnNlbnQgb24gb2JqZWN0IHN0cmVhbXNcbiAgICAgICAgICogKHdoaWNoIGFsd2F5cyB1c2UgbGVuZ3RoLXByZWZpeGVkIGRldmFsdWUgZnJhbWluZykgYW5kIG9uIGxlZ2FjeVxuICAgICAgICAgKiBieXRlIHN0cmVhbXMgd3JpdHRlbiBieSBTREtzIHRoYXQgcHJlZGF0ZSBmcmFtaW5nIHN1cHBvcnQ7IHRob3NlXG4gICAgICAgICAqIGFyZSBpbnRlcnByZXRlZCBhcyBgJ3JhdydgIGJ5IHRoZSBjb25zdW1lci5cbiAgICAgICAgICovXG4gICAgICAgIGZyYW1pbmc/OiBCeXRlU3RyZWFtRnJhbWluZztcbiAgICAgIH1cbiAgICB8IHsgYm9keUluaXQ6IGFueSB9O1xuICBSZWZlcmVuY2VFcnJvcjogeyBtZXNzYWdlOiBzdHJpbmc7IHN0YWNrPzogc3RyaW5nOyBjYXVzZT86IHVua25vd24gfTtcbiAgUmVnRXhwOiB7IHNvdXJjZTogc3RyaW5nOyBmbGFnczogc3RyaW5nIH07XG4gIC8qKlxuICAgKiBgcmV0cnlBZnRlcmAgaXMgc2VyaWFsaXplZCBhcyBhIG51bWVyaWMgZXBvY2ggdGltZXN0YW1wIHJhdGhlciB0aGFuIGFcbiAgICogYERhdGVgIHRvIGJlIHJlYWxtLXNhZmUuIFRoZSBEYXRlIHJlZHVjZXIgdXNlcyBgaW5zdGFuY2VvZiBnbG9iYWwuRGF0ZWAsXG4gICAqIHdoaWNoIGZhaWxzIGZvciBEYXRlcyBmcm9tIGEgZGlmZmVyZW50IFZNIHJlYWxtLlxuICAgKi9cbiAgUmV0cnlhYmxlRXJyb3I6IHtcbiAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgc3RhY2s/OiBzdHJpbmc7XG4gICAgY2F1c2U/OiB1bmtub3duO1xuICAgIHJldHJ5QWZ0ZXI6IG51bWJlcjtcbiAgfTtcbiAgUnVudGltZURlY3J5cHRpb25FcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgY29udGV4dD86IFJ1bnRpbWVEZWNyeXB0aW9uRXJyb3JDb250ZXh0O1xuICB9O1xuICBTdHJlYW1FcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgc3RhdHVzPzogbnVtYmVyO1xuICAgIHVybD86IHN0cmluZztcbiAgfTtcbiAgUmVxdWVzdDoge1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICAgIGhlYWRlcnM6IEhlYWRlcnM7XG4gICAgYm9keTogUmVxdWVzdFsnYm9keSddO1xuICAgIGR1cGxleDogUmVxdWVzdFsnZHVwbGV4J107XG4gICAgcmVzcG9uc2VXcml0YWJsZT86IFdyaXRhYmxlU3RyZWFtPFJlc3BvbnNlPjtcbiAgICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgfTtcbiAgUmVzcG9uc2U6IHtcbiAgICB0eXBlOiBSZXNwb25zZVsndHlwZSddO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHN0YXR1czogbnVtYmVyO1xuICAgIHN0YXR1c1RleHQ6IHN0cmluZztcbiAgICBoZWFkZXJzOiBIZWFkZXJzO1xuICAgIGJvZHk6IFJlc3BvbnNlWydib2R5J107XG4gICAgcmVkaXJlY3RlZDogYm9vbGVhbjtcbiAgfTtcbiAgQ2xhc3M6IHtcbiAgICBjbGFzc0lkOiBzdHJpbmc7XG4gIH07XG4gIEluc3RhbmNlOiB7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICAgIGRhdGE6IHVua25vd247XG4gIH07XG4gIFNldDogYW55W107XG4gIFN5bnRheEVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBTdGVwRnVuY3Rpb246IHtcbiAgICBzdGVwSWQ6IHN0cmluZztcbiAgICBjbG9zdXJlVmFycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgLyoqXG4gICAgICogQ2FwdHVyZWQgbGV4aWNhbCBgdGhpc2AgZm9yIHN0ZXAgcHJveGllcyB0aGF0IHdlcmUgY3JlYXRlZCB2aWFcbiAgICAgKiBgdXNlU3RlcCguLi4pLmJpbmQodGhpc0FyZylgICh0aGUgU1dDIHBsdWdpbiBlbWl0cyB0aGlzIGZvciBuZXN0ZWRcbiAgICAgKiBhcnJvdyBzdGVwcyB0aGF0IGNsb3NlIG92ZXIgdGhlaXIgZW5jbG9zaW5nIGZ1bmN0aW9uJ3MgYHRoaXNgKS5cbiAgICAgKiBUaGUgcmV2aXZlciByZS1iaW5kcyB0aGUgZnJlc2hseS1jcmVhdGVkIHByb3h5IHRvIHRoaXMgdmFsdWUgc28gdGhlXG4gICAgICogYmluZGluZyBzdXJ2aXZlcyBzZXJpYWxpemF0aW9uIHJvdW5kLXRyaXBzLlxuICAgICAqL1xuICAgIGJvdW5kVGhpcz86IHVua25vd247XG4gICAgLyoqXG4gICAgICogUHJlZmlsbGVkIGFyZ3VtZW50cyBjYXB0dXJlZCB3aGVuIHRoZSB1c2VyIChyYXRoZXIgdGhhbiB0aGUgU1dDXG4gICAgICogcGx1Z2luKSBjYWxsZWQgYHVzZVN0ZXAoLi4uKS5iaW5kKHRoaXNBcmcsIHgsIHkpYC4gVGhlIHJldml2ZXJcbiAgICAgKiByZS1hcHBsaWVzIHRoZXNlIGFsb25nc2lkZSBgYm91bmRUaGlzYCBzbyBwYXJ0aWFsIGFwcGxpY2F0aW9uXG4gICAgICogc3Vydml2ZXMgc2VyaWFsaXphdGlvbi4gVGhlIFNXQyBwbHVnaW4gb25seSBldmVyIGVtaXRzXG4gICAgICogYC5iaW5kKHRoaXMpYCB3aXRoIG5vIGV4dHJhIGFyZ3MgdG9kYXk7IHRoaXMgc2xvdCBleGlzdHMgc28gYVxuICAgICAqIGhhbmQtd3JpdHRlbiBgLmJpbmQodGhpc0FyZywgeClgIGRvZXNuJ3Qgc2lsZW50bHkgbG9zZSBgeGAgYWZ0ZXJcbiAgICAgKiByb3VuZC10cmlwcGluZyB0aHJvdWdoIHRoZSByZWR1Y2VyL3Jldml2ZXIuXG4gICAgICovXG4gICAgYm91bmRBcmdzPzogdW5rbm93bltdO1xuICB9O1xuICBUeXBlRXJyb3I6IHsgbWVzc2FnZTogc3RyaW5nOyBzdGFjaz86IHN0cmluZzsgY2F1c2U/OiB1bmtub3duIH07XG4gIFVSSUVycm9yOiB7IG1lc3NhZ2U6IHN0cmluZzsgc3RhY2s/OiBzdHJpbmc7IGNhdXNlPzogdW5rbm93biB9O1xuICBVUkw6IHN0cmluZztcbiAgV29ya2Zsb3dGdW5jdGlvbjoge1xuICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgfTtcbiAgVVJMU2VhcmNoUGFyYW1zOiBzdHJpbmc7XG4gIFVpbnQ4QXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBVaW50OENsYW1wZWRBcnJheTogc3RyaW5nOyAvLyBiYXNlNjQgc3RyaW5nXG4gIFVpbnQxNkFycmF5OiBzdHJpbmc7IC8vIGJhc2U2NCBzdHJpbmdcbiAgVWludDMyQXJyYXk6IHN0cmluZzsgLy8gYmFzZTY0IHN0cmluZ1xuICBBZ2dyZWdhdGVFcnJvcjoge1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBzdGFjaz86IHN0cmluZztcbiAgICBjYXVzZT86IHVua25vd247XG4gICAgZXJyb3JzOiB1bmtub3duW107XG4gIH07XG4gIFdyaXRhYmxlU3RyZWFtOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRoZSBydW5JZCBvZiB0aGUgd29ya2Zsb3cgcnVuIHRoYXQgb3ducyB0aGUgdW5kZXJseWluZyBzZXJ2ZXJcbiAgICAgKiBzdHJlYW0uIFByZXNlbnQgb25seSB3aGVuIHRoZSB3cml0YWJsZSB3YXMgZm9yd2FyZGVkIGFjcm9zcyBhXG4gICAgICogYHN0YXJ0KClgIGJvdW5kYXJ5IChwYXJlbnQg4oaSIGNoaWxkKS4gV2hlbiBvbWl0dGVkLCB0aGUgd3JpdGFibGVcbiAgICAgKiBiZWxvbmdzIHRvIHRoZSByZWNlaXZpbmcgcnVuICh0aGUgbm9ybWFsIGluLXJ1biBjYXNlKS5cbiAgICAgKi9cbiAgICBydW5JZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgZGVwbG95bWVudCB0aGF0IG93bnMgdGhlIHNlcnZlciBzdHJlYW0uIENhcnJpZWQgd2l0aCBgcnVuSWRgXG4gICAgICogc28gYSBjaGlsZCBydW5uaW5nIG9uIGEgbmV3ZXIgZGVwbG95bWVudCBjYW4gZW5jcnlwdCBjaHVua3Mgd2l0aFxuICAgICAqIHRoZSBwYXJlbnQncyBrZXkgd2l0aG91dCBmZXRjaGluZyB0aGUgcGFyZW50IHJ1biBmaXJzdC5cbiAgICAgKi9cbiAgICBkZXBsb3ltZW50SWQ/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIG93bmluZyBydW4ncyBYMjU1MTkgcHVibGljIGtleSAoYmFzZTY0KSwgd2hlbiBpdCBoYXMgb25lLlxuICAgICAqXG4gICAgICogTGV0cyB0aGUgcmVjZWl2aW5nIHJ1biBzZWFsIGZyYW1lcyB0byB0aGUgc3RyZWFtJ3Mgb3duZXIgd2l0aCBub1xuICAgICAqIGxvb2t1cCBhdCBhbGw6IG5laXRoZXIgYSBydW4gZmV0Y2ggbm9yIGEga2V5LUFQSSByb3VuZCB0cmlwLiBUaGVcbiAgICAgKiBvd25lciBkZXJpdmVzIHRoaXMgbG9jYWxseSB3aGVuIGl0IGNyZWF0ZXMgdGhlIHN0cmVhbSwgc28gaW5jbHVkaW5nXG4gICAgICogaXQgaGVyZSBpcyBmcmVlLiBBYnNlbnQgZm9yIHJ1bnMgY3JlYXRlZCBieSBvbGRlciBTREtzLCBpbiB3aGljaFxuICAgICAqIGNhc2UgdGhlIHJlY2VpdmVyIGZhbGxzIGJhY2sgdG8gcmVzb2x2aW5nIHRoZSBvd25lcidzIHN5bW1ldHJpYyBrZXkuXG4gICAgICovXG4gICAgZW5jcnlwdGlvblB1YmxpY0tleT86IHN0cmluZztcbiAgfTtcbiAgQWJvcnRDb250cm9sbGVyOiB7XG4gICAgc3RyZWFtTmFtZTogc3RyaW5nO1xuICAgIGhvb2tUb2tlbjogc3RyaW5nO1xuICAgIGFib3J0ZWQ6IGJvb2xlYW47XG4gICAgcmVhc29uPzogdW5rbm93bjtcbiAgfTtcbiAgQWJvcnRTaWduYWw6IHtcbiAgICBzdHJlYW1OYW1lOiBzdHJpbmc7XG4gICAgaG9va1Rva2VuOiBzdHJpbmc7XG4gICAgYWJvcnRlZDogYm9vbGVhbjtcbiAgICByZWFzb24/OiB1bmtub3duO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZWR1Y2VycyA9IHtcbiAgW0sgaW4ga2V5b2YgU2VyaWFsaXphYmxlU3BlY2lhbF06IChcbiAgICB2YWx1ZTogYW55XG4gICkgPT4gU2VyaWFsaXphYmxlU3BlY2lhbFtLXSB8IGZhbHNlO1xufTtcblxuZXhwb3J0IHR5cGUgUmV2aXZlcnMgPSB7XG4gIFtLIGluIGtleW9mIFNlcmlhbGl6YWJsZVNwZWNpYWxdOiAodmFsdWU6IFNlcmlhbGl6YWJsZVNwZWNpYWxbS10pID0+IGFueTtcbn07XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { createFlushableState } from './flushable-stream.js';
1
2
  import { compress, decompress } from './serialization/compression.js';
2
3
  import { aesKeyOf, decrypt, deriveRunPayloadKeys, type EncryptionKeyParam, encrypt, isRunPayloadKeys, isSealTarget, type PayloadKey, type RunPayloadKeys, runPayloadKeys, type SealTarget, sealTo } from './serialization/encryption.js';
3
4
  import { decodeFormatPrefix, encodeWithFormatPrefix, isEncrypted, peekFormatPrefix } from './serialization/format.js';
@@ -99,7 +100,7 @@ export declare const FRAMED_STREAM_MAX_TOTAL_RECONNECTS = 1000;
99
100
  * machinery because we cannot compute an absolute resume position without
100
101
  * a tail-index lookup; the returned stream behaves as a single-shot read.
101
102
  */
102
- export declare function createReconnectingFramedStream(runId: string, name: string, startIndex?: number): ReadableStream<Uint8Array>;
103
+ export declare function createReconnectingFramedStream(runId: string, name: string, startIndex?: number, prefetchEncryptionKey?: () => Promise<PayloadKey | undefined>): ReadableStream<Uint8Array>;
103
104
  export declare class WorkflowServerWritableStream extends WritableStream<Uint8Array> {
104
105
  /**
105
106
  * @param runReadyBarrier Turbo mode only: a promise that resolves once the
@@ -220,6 +221,13 @@ export declare function getCommonRevivers(global?: Record<string, any>): {
220
221
  cause?: unknown;
221
222
  context?: import("@workflow/errors").RuntimeDecryptionErrorContext;
222
223
  }) => any) | undefined;
224
+ StreamError?: ((value: {
225
+ message: string;
226
+ stack?: string;
227
+ cause?: unknown;
228
+ status?: number;
229
+ url?: string;
230
+ }) => any) | undefined;
223
231
  Request?: ((value: {
224
232
  method: string;
225
233
  url: string;
@@ -301,6 +309,42 @@ export declare function getCommonRevivers(global?: Record<string, any>): {
301
309
  reason?: unknown;
302
310
  }) => any) | undefined;
303
311
  };
312
+ /**
313
+ * Resolves the owner's encryption key, preferring its public key, then its
314
+ * deployment, and finally its run record.
315
+ * @internal
316
+ */
317
+ export declare function getForwardedWritableEncryptionKey(runId: string, deploymentId: string | undefined, encryptionPublicKey: string | undefined): Promise<PayloadKey | undefined>;
318
+ /** Tags a forwarded writable with its owner's metadata. @internal */
319
+ export declare function tagForwardedWritableTarget(writable: WritableStream, { deploymentId, encryptionPublicKey, }: {
320
+ deploymentId?: string;
321
+ encryptionPublicKey?: string;
322
+ }): void;
323
+ /** Creates and tags a forwarded writable targeting the owner run. @internal */
324
+ export declare function createForwardedWritable<W = any>({ global, ops, runId, name, key, deploymentId, encryptionPublicKey, runReadyBarrier, }: {
325
+ global: Record<string, any>;
326
+ ops: Promise<any>[];
327
+ runId: string;
328
+ name: string;
329
+ key: EncryptionKeyParam;
330
+ deploymentId?: string;
331
+ encryptionPublicKey?: string;
332
+ runReadyBarrier?: Promise<unknown>;
333
+ }): WritableStream<W>;
334
+ /**
335
+ * Create a run's object readable without dispatching its stream GET or
336
+ * encryption-key lookup until the caller reads it. The external reviver starts
337
+ * its background pipe immediately, so this boundary belongs here—next to the
338
+ * source/transform assembly—rather than in `Run`.
339
+ *
340
+ * @internal
341
+ */
342
+ export declare function getRunReadableStream<T>(global: Record<string, any>, ops: Promise<void>[], runId: string, name: string, startIndex: number | undefined, cryptoKey: EncryptionKeyParam): ReadableStream<T>;
343
+ /** Options for externally revived object streams. @internal */
344
+ type ExternalReviverOptions = {
345
+ /** Receives completion state when a wrapper owns the public readable. */
346
+ onReadableState?: (state: ReturnType<typeof createFlushableState>) => void;
347
+ };
304
348
  /**
305
349
  * Revivers for deserialization boundary from the client side,
306
350
  * receiving the return value from the workflow handler.
@@ -309,7 +353,7 @@ export declare function getCommonRevivers(global?: Record<string, any>): {
309
353
  * @param ops
310
354
  * @param runId
311
355
  */
312
- export declare function getExternalRevivers(global: Record<string, any> | undefined, ops: Promise<void>[], runId: string, cryptoKey: EncryptionKeyParam): Partial<Revivers>;
356
+ export declare function getExternalRevivers(global: Record<string, any> | undefined, ops: Promise<void>[], runId: string, cryptoKey: EncryptionKeyParam, options?: ExternalReviverOptions): Partial<Revivers>;
313
357
  /**
314
358
  * Revivers for deserialization boundary from within the workflow execution
315
359
  * environment, receiving arguments from the client side, and return values
@@ -1 +1 @@
1
- {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../src/serialization.ts"],"names":[],"mappings":"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"}