@pipeline-builder/pipeline-data 4.3.5 → 4.3.7

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 (70) hide show
  1. package/lib/api/access-control-builder.js +1 -1
  2. package/lib/api/alert-destinations.js +1 -1
  3. package/lib/api/crud-service.js +1 -1
  4. package/lib/api/ecosystem-privacy.js +1 -1
  5. package/lib/api/keyset-cursor.js +1 -1
  6. package/lib/api/pipeline-step-resolution.js +1 -1
  7. package/lib/api/plugin-advisories.js +1 -1
  8. package/lib/api/plugin-consumption-policy.js +1 -1
  9. package/lib/api/plugin-resolution.js +6 -1
  10. package/lib/api/public-directory.d.ts +71 -3
  11. package/lib/api/public-directory.js +68 -22
  12. package/lib/api/query-builders.js +47 -2
  13. package/lib/api/reporting/analytics-queries.js +1 -1
  14. package/lib/api/reporting/caches.js +1 -1
  15. package/lib/api/reporting/daily-rollup.js +1 -1
  16. package/lib/api/reporting/deploy-rollup.js +1 -1
  17. package/lib/api/reporting/dora-scoring.js +1 -1
  18. package/lib/api/reporting/dora.js +1 -1
  19. package/lib/api/reporting/failure-classifier.js +1 -1
  20. package/lib/api/reporting/ingest.js +1 -1
  21. package/lib/api/reporting/last-deploy.js +1 -1
  22. package/lib/api/reporting/needs-attention.js +1 -1
  23. package/lib/api/reporting/plugin-exposure.js +1 -1
  24. package/lib/api/reporting/plugin-runtime.js +1 -1
  25. package/lib/api/reporting/query-scope.js +1 -1
  26. package/lib/api/reporting/retention-sweep.js +1 -1
  27. package/lib/api/reporting/retention.js +1 -1
  28. package/lib/api/reporting/sql-helpers.js +1 -1
  29. package/lib/api/reporting/stakeholder/compose.js +1 -1
  30. package/lib/api/reporting/stakeholder/index.js +1 -1
  31. package/lib/api/reporting/stakeholder/period.js +1 -1
  32. package/lib/api/reporting/stakeholder/report-html.js +1 -1
  33. package/lib/api/reporting/stakeholder/sections.js +1 -1
  34. package/lib/api/reporting/stakeholder/store.js +1 -1
  35. package/lib/api/reporting/stakeholder/templates.js +1 -1
  36. package/lib/api/reporting/types.js +1 -1
  37. package/lib/api/reporting-service.js +1 -1
  38. package/lib/api/semver-range.js +1 -1
  39. package/lib/api/soft-delete-sweep.js +1 -1
  40. package/lib/api/support-cases.js +1 -1
  41. package/lib/api/version-references.js +1 -1
  42. package/lib/api/viewer-context.js +1 -1
  43. package/lib/core/query-filters.d.ts +25 -0
  44. package/lib/core/query-filters.js +1 -1
  45. package/lib/database/drizzle-schema.d.ts +19 -0
  46. package/lib/database/drizzle-schema.js +1 -1
  47. package/lib/database/index.js +1 -1
  48. package/lib/database/pg-result.js +1 -1
  49. package/lib/database/postgres-connection.js +1 -1
  50. package/lib/database/public-reader.js +1 -1
  51. package/lib/database/read-connection.js +1 -1
  52. package/lib/database/read-lag.js +1 -1
  53. package/lib/database/retry-strategy.js +1 -1
  54. package/lib/database/schema/alert.js +1 -1
  55. package/lib/database/schema/compliance.js +1 -1
  56. package/lib/database/schema/dashboard.js +1 -1
  57. package/lib/database/schema/ecosystem.d.ts +17 -0
  58. package/lib/database/schema/ecosystem.js +3 -1
  59. package/lib/database/schema/message-attachment.js +1 -1
  60. package/lib/database/schema/message.d.ts +19 -0
  61. package/lib/database/schema/message.js +18 -1
  62. package/lib/database/schema/pipeline-template.js +1 -1
  63. package/lib/database/schema/pipeline.js +1 -1
  64. package/lib/database/schema/plugin.js +1 -1
  65. package/lib/database/schema/reporting-analytics.js +1 -1
  66. package/lib/database/schema/reporting-stakeholder.js +1 -1
  67. package/lib/database/schema/support.js +1 -1
  68. package/lib/database/tenancy.js +1 -1
  69. package/lib/index.js +1 -1
  70. package/package.json +8 -8
@@ -320,4 +320,4 @@ export const supportCaseNote = pgTable('support_case_notes', {
320
320
  }, (table) => ({
321
321
  caseIdx: index('support_case_note_case_idx').on(table.caseId, table.isActive),
322
322
  }));
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYXRhYmFzZS9zY2hlbWEvc3VwcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBIOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsZUFBZSxFQUFFO0lBQ2xELHdEQUF3RDtJQUN4RCxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLGFBQWEsRUFBRTtJQUUzQzs7Ozs7OztPQU9HO0lBQ0gsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFckMsNEVBQTRFO0lBQzVFLHFFQUFxRTtJQUNyRSxLQUFLLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUVuRDs7Ozs7Ozs7O09BU0c7SUFDSCxhQUFhLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFO0lBRWxELGtFQUFrRTtJQUNsRSxNQUFNLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFbkUsK0VBQStFO0lBQy9FLDhFQUE4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UUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ25ELE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3ZDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxFQUFFO0lBQ2pGLFFBQVEsRUFBRSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUN0RCxTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztDQUM5QixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUM7Q0FDOUUsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgU1lTVEVNX09SR19JRCB9IGZyb20gJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJztcbmltcG9ydCB7IHNxbCB9IGZyb20gJ2RyaXp6bGUtb3JtJztcbmltcG9ydCB7IGJvb2xlYW4sIGludGVnZXIsIHZhcmNoYXIsIHBnVGFibGUsIHRleHQsIHRpbWVzdGFtcCwgdXVpZCwgaW5kZXgsIHVuaXF1ZUluZGV4IH0gZnJvbSAnZHJpenpsZS1vcm0vcGctY29yZSc7XG5cbi8qKlxuICogVGhlIFdPUktGTE9XIGF4aXMgb2YgYSBzdXBwb3J0IGNhc2UuXG4gKlxuICogYG1lc3NhZ2VzYCBhbHJlYWR5IGNhcnJpZXMgdGhlIGNvbnZlcnNhdGlvbiDigJQgaWRlbnRpdHksIHRocmVhZGluZywgcHJpb3JpdHksXG4gKiBwZXItcGFydGljaXBhbnQgcmVhZCBzdGF0ZSwgYXR0YWNobWVudHMgYW5kIHNvZnQtZGVsZXRlLiBXaGF0IGl0IGhhcyBubyBjb2x1bW5cbiAqIGZvciBpcyB3b3JrZmxvdzogc3RhdHVzLCBvd25lcnNoaXAsIHJlc29sdXRpb24gYW5kIHRoZSByZXNwb25zZSBjbG9jay4gVGhhdCBpc1xuICogdGhpcyB0YWJsZSwgb25lIHJvdyBwZXIgY2FzZSwgam9pbmVkIHRvIHRoZSBjb252ZXJzYXRpb24gYnkgYHRocmVhZElkYC5cbiAqXG4gKiBLZWVwaW5nIHRoZW0gYXBhcnQgcmF0aGVyIHRoYW4gd2lkZW5pbmcgYG1lc3NhZ2VzYCBpcyBkZWxpYmVyYXRlOiBgbWVzc2FnZXNgXG4gKiBhbHNvIGNhcnJpZXMgYW5ub3VuY2VtZW50cyBhbmQgb3JkaW5hcnkgY29udmVyc2F0aW9ucywgd2hpY2ggaGF2ZSBubyBzdGF0dXMsXG4gKiBubyBhc3NpZ25lZSBhbmQgbm8gcmVzcG9uc2UgdGFyZ2V0LiBTaXggbnVsbGFibGUgY29sdW1ucyBvbiBldmVyeSBhbm5vdW5jZW1lbnRcbiAqIHJvdyB0byBkZXNjcmliZSBhIHN0YXRlIGFubm91bmNlbWVudHMgY2Fubm90IGJlIGluIGlzIGhvdyBhIHRhYmxlIHN0b3BzXG4gKiBtZWFuaW5nIG9uZSB0aGluZy5cbiAqXG4gKiBAdGFibGUgc3VwcG9ydF9jYXNlc1xuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydENhc2UgPSBwZ1RhYmxlKCdzdXBwb3J0X2Nhc2VzJywge1xuICAvLyBJbnRlcm5hbCBrZXkuIE5PVCB0aGUgY2FzZSBpZGVudGl0eSDigJQgc2VlIGB0aHJlYWRJZGAuXG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG5cbiAgLyoqXG4gICAqIFRoZSByb290IGBtZXNzYWdlcy5pZGAgb2YgdGhlIHRocmVhZCwgYW5kIHRoZSBDQU5PTklDQUwgY2FzZSBpZGVudGl0eS5cbiAgICpcbiAgICogVGhlIGNvbnZlbnRpb24gYWxyZWFkeSBleGlzdHM6IHJlYWRlcnMgd2FsayBgdGhyZWFkSWQgPT09IHJvb3QuaWRgIGFuZFxuICAgKiBgdXBkYXRlLW1lc3NhZ2UudHNgIHVzZXMgYHVwZGF0ZWQudGhyZWFkSWQgPz8gdXBkYXRlZC5pZGAgZm9yIGV4YWN0bHkgdGhpc1xuICAgKiBcInRoZSByb290IGlzIHRoZSBpZGVudGl0eVwiIGlkZWEuIFNvIGNhc2UgaWRlbnRpdHkgZmFsbHMgb3V0IG9mIHRocmVhZGluZyB0aGVcbiAgICogc3VwcG9ydCBwYXRoIHJhdGhlciB0aGFuIGJlaW5nIGEgbmV3IGNvbmNlcHQuXG4gICAqL1xuICB0aHJlYWRJZDogdXVpZCgndGhyZWFkX2lkJykubm90TnVsbCgpLFxuXG4gIC8vIFRoZSBURU5BTlQgb3JnLiBOZXZlciB0aGUgc3lzdGVtIG9yZyDigJQgYSBjYXNlIGlzIGFsd2F5cyBhYm91dCBvbmUgdGVuYW50LFxuICAvLyBldmVuIHRob3VnaCB0aGUgc3lzdGVtIG9yZyBpcyB0aGUgb3RoZXIgcGFydGljaXBhbnQgaW4gdGhlIHRocmVhZC5cbiAgb3JnSWQ6IHZhcmNoYXIoJ29yZ19pZCcsIHsgbGVuZ3RoOiAyNTUgfSkubm90TnVsbCgpLFxuXG4gIC8qKlxuICAgKiBQZXItb3JnLCBjdXN0b21lci1xdW90YWJsZSBjYXNlIG51bWJlciAocmVuZGVyZWQgYEFDTUUtMTA0MmApLlxuICAgKlxuICAgKiBBIGJhcmUgVVVJRCBpcyBub3Qgc29tZXRoaW5nIGFueW9uZSByZWFkcyBvdXQgb24gYSBjYWxsIG9yIHB1dHMgaW4gYW4gZW1haWxcbiAgICogc3ViamVjdCwgYW5kIGEgR0xPQkFMIHNlcXVlbmNlIHdvdWxkIGRpc2Nsb3NlIHRvdGFsIGNhc2Ugdm9sdW1lIHRvIGV2ZXJ5XG4gICAqIGN1c3RvbWVyLiBBbGxvY2F0ZWQgZnJvbSBgc3VwcG9ydF9jYXNlX2NvdW50ZXJzYCBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbiBhc1xuICAgKiB0aGUgaW5zZXJ0OyBgc3VwcG9ydF9jYXNlX29yZ19udW1iZXJfdXFgIGlzIHRoZSBiYWNrc3RvcCB0aGF0IHR1cm5zIGFcbiAgICogYnlwYXNzZWQgY291bnRlciBpbnRvIGEgZmFpbGVkIGluc2VydCByYXRoZXIgdGhhbiB0d28gY2FzZXMgc2hhcmluZyB0aGUgb25lXG4gICAqIGlkZW50aWZpZXIgY3VzdG9tZXJzIHF1b3RlIGJhY2suXG4gICAqL1xuICBkaXNwbGF5TnVtYmVyOiBpbnRlZ2VyKCdkaXNwbGF5X251bWJlcicpLm5vdE51bGwoKSxcblxuICAvLyBvcGVuIHwgYXdhaXRpbmdfc3VwcG9ydCB8IGF3YWl0aW5nX2N1c3RvbWVyIHwgcmVzb2x2ZWQgfCBjbG9zZWRcbiAgc3RhdHVzOiB2YXJjaGFyKCdzdGF0dXMnLCB7IGxlbmd0aDogMzIgfSkuZGVmYXVsdCgnb3BlbicpLm5vdE51bGwoKSxcblxuICAvLyBTZXQgYnkgdGhlIG9wZW5lcjsgcmUtcmFua2FibGUgYnkgc3RhZmYuIFNlbGYtc2VsZWN0ZWQgc2V2ZXJpdHkgaXMgd2h5IHN0YWZmXG4gIC8vIHJlLXJhbmtpbmcgaXMgaW4gdjE6IG90aGVyd2lzZSB0aGUgdGVuYW50IGNob29zZXMgdGhlIHRhcmdldCB0aGV5IGFyZSBvd2VkLlxuICBzZXZlcml0eTogdmFyY2hhcignc2V2ZXJpdHknLCB7IGxlbmd0aDogMTYgfSkuZGVmYXVsdCgnbm9ybWFsJykubm90TnVsbCgpLFxuXG4gIC8qKlxuICAgKiBUaGUgc3VwcG9ydCBsZXZlbCBoZWxkIHdoZW4gdGhlIGNhc2Ugd2FzIE9QRU5FRCwgZnJvemVuIG9udG8gdGhlIGNhc2UuXG4gICAqXG4gICAqIEZyb3plbiBkZWxpYmVyYXRlbHk6IGEgY3VzdG9tZXIgd2hvIGRvd25ncmFkZXMgbWlkLWNhc2Ugc2hvdWxkIHN0aWxsIGdldCB0aGVcbiAgICogcmVzcG9uc2UgdGhleSBib3VnaHQgd2hlbiB0aGV5IG9wZW5lZCBpdC4gUmVzb2x2aW5nIGVudGl0bGVtZW50IGxpdmUgd291bGRcbiAgICogY2hhbmdlIGFuIG9wZW4gY2FzZSdzIHByb21pc2UgdW5kZXJuZWF0aCB0aGUgcGVyc29uIHdhaXRpbmcgb24gaXQuXG4gICAqL1xuICBsZXZlbDogdmFyY2hhcignbGV2ZWwnLCB7IGxlbmd0aDogMzIgfSkubm90TnVsbCgpLFxuXG4gIC8qKiBUcnVlIHdoZW4gdGhlIGNhc2Ugd2FzIG9wZW5lZCBieSBzcGVuZGluZyBhIG9uZS10aW1lIGluY2lkZW50IHJhdGhlciB0aGFuXG4gICAqICBhZ2FpbnN0IGEgY29udGFjdCBzZWF0LiBSZWNvcmRlZCBzbyBcImhvdyBtYW55IGluY2lkZW50cyB3ZXJlIGFjdHVhbGx5XG4gICAqICB1c2VkXCIgaXMgYW5zd2VyYWJsZSBmcm9tIHRoZSBjYXNlcywgbm90IG9ubHkgZnJvbSBhIGJhbGFuY2UgZGVsdGEuICovXG4gIG9wZW5lZFdpdGhJbmNpZGVudDogYm9vbGVhbignb3BlbmVkX3dpdGhfaW5jaWRlbnQnKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG5cbiAgLy8gLS0tIHRoZSB0d28gb3duZXJzLCB3aGljaCBtb3ZlIGluZGVwZW5kZW50bHkuIE5FSVRIRVIgaXMgYGNyZWF0ZWRCeWAuXG4gIC8qKiBTVEFGRiBvd25lciDigJQgYSBzeXN0ZW0tb3JnIGFjdG9yLiBgbnVsbGAgaXMgbGVnaXRpbWF0ZTogaXQgaXMgdGhlIHVub3duZWRcbiAgICogIHBvb2wsIGFuZCBob3cgXCJJIGNhbm5vdCB0YWtlIHRoaXNcIiBpcyBzYWlkIHdpdGhvdXQgYSBwc2V1ZG8tYXNzaWduZWUuICovXG4gIGFzc2lnbmVkVG86IHRleHQoJ2Fzc2lnbmVkX3RvJyksXG4gIC8qKiBURU5BTlQgb3duZXIg4oCUIHRoZSBkZXNpZ25hdGVkIGNvbnRhY3QgY3VycmVudGx5IHJlc3BvbnNpYmxlLiBEaXN0aW5jdCBmcm9tXG4gICAqICBgY3JlYXRlZEJ5YCwgd2hpY2ggaXMgdGhlIGltbXV0YWJsZSBhdWRpdCBmYWN0IG9mIHdobyByYWlzZWQgdGhlIGNhc2U6XG4gICAqICBtdXRhdGluZyB0aGF0IHRvIGV4cHJlc3MgXCJzb21lb25lIGVsc2Ugb3ducyB0aGlzIG5vd1wiIHdvdWxkIGRlc3Ryb3kgdGhlXG4gICAqICBvbmx5IHJlY29yZCBvZiB3aG8gYWN0dWFsbHkgb3BlbmVkIGl0LiAqL1xuICB0ZW5hbnRDb250YWN0OiB0ZXh0KCd0ZW5hbnRfY29udGFjdCcpLFxuXG4gIC8vIC0tLSB0aGUgcmVzcG9uc2UgY2xvY2tcbiAgLyoqXG4gICAqIFdoZW4gdGhlIGZpcnN0IHJlc3BvbnNlIGlzIERVRSwgY29tcHV0ZWQgb25jZSBhdCBvcGVuIGFuZCBuZXZlciByZWNvbXB1dGVkLlxuICAgKlxuICAgKiBGcm96ZW4gZm9yIHRoZSBzYW1lIHJlYXNvbiBgbGV2ZWxgIGlzOiBhIGNoYW5nZSB0byB0aGUgd29ya2luZyB3ZWVrIG9yIHRoZVxuICAgKiBob2xpZGF5IGxpc3QgbXVzdCBub3QgbW92ZSBhIHByb21pc2UgYWxyZWFkeSBtYWRlIHRvIGEgY3VzdG9tZXIuIFRocmVlXG4gICAqIHRoaW5ncyBmb2xsb3cgZnJvbSBzdG9yaW5nIGl0IHJhdGhlciB0aGFuIGRlcml2aW5nIGl0IHBlciByZWFkOlxuICAgKiAgIC0gdGhlIHN0YWZmIHF1ZXVlIG9yZGVycyBieSBhIHJlYWwgZGVhZGxpbmUgd2l0aCBubyBjYWxlbmRhciBhcml0aG1ldGljXG4gICAqICAgICBwZXIgcm93O1xuICAgKiAgIC0gdGhlIHN0YW5kYXJkL3ByaW9yaXR5IGJyZWFjaCBjaGVjayBiZWNvbWVzIENPTlRSQUNUVUFMLCB3aGVyZSBhXG4gICAqICAgICB3YWxsLWNsb2NrIHF1YW50aWxlIGNhbm5vdCBleHByZXNzIGEgYnVzaW5lc3MtZGF5IHRhcmdldCBhdCBhbGwgKGFcbiAgICogICAgIHByaW9yaXR5IGNhc2UgcmFpc2VkIGF0IDE3OjAxIG9uIGEgRnJpZGF5IGlzIG5vdCBsYXRlIHVudGlsIE1vbmRheVxuICAgKiAgICAgZXZlbmluZywgfjc5IHdhbGwtY2xvY2sgaG91cnMgbGF0ZXIpO1xuICAgKiAgIC0gYSBsZXZlbCB3aXRoIG5vIHB1Ymxpc2hlZCB0YXJnZXQsIGFuZCBhIGNhc2Ugb3BlbmVkIHdoaWxlIHRoZSBjYWxlbmRhclxuICAgKiAgICAgd2FzIG1pc2NvbmZpZ3VyZWQsIGFyZSBib3RoIHNpbXBseSBOVUxMIOKAlCBubyBkZWFkbGluZSByYXRoZXIgdGhhbiBhXG4gICAqICAgICB3cm9uZyBvbmUuXG4gICAqL1xuICByZXNwb25zZUR1ZUF0OiB0aW1lc3RhbXAoJ3Jlc3BvbnNlX2R1ZV9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvKiogRmlyc3Qgc3RhZmYgcmVwbHkuIFRIRSBtZWFzdXJlZCBudW1iZXIg4oCUIHRoZSByZXNwb25zZSB0YXJnZXQgaXMgc29sZCBvbiBpdC4gKi9cbiAgZmlyc3RSZXNwb25zZUF0OiB0aW1lc3RhbXAoJ2ZpcnN0X3Jlc3BvbnNlX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKlxuICAgKiBDU0FULCAx4oCTNSwgc2V0IGJ5IHRoZSBURU5BTlQgb25jZSB0aGUgY2FzZSBpcyBjbG9zZWQuIE51bGwgPSBub3QgcmF0ZWQsXG4gICAqIHdoaWNoIGlzIHRoZSB1c3VhbCBzdGF0ZSBhbmQgbXVzdCBzdGF5IGRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgYmFkIHJhdGluZy5cbiAgICpcbiAgICogTGl2ZXMgaGVyZSByYXRoZXIgdGhhbiBpbiBpdHMgb3duIHRhYmxlIGJlY2F1c2UgYSBjYXNlIGhhcyBleGFjdGx5IG9uZVxuICAgKiByYXRpbmcg4oCUIGEgdGFibGUgd291bGQgYnV5IGEgam9pbiBhbmQgYSB1bmlxdWVuZXNzIGNvbnN0cmFpbnQgdG8gZW5mb3JjZVxuICAgKiB3aGF0IGEgY29sdW1uIGdldHMgZm9yIGZyZWUuIEZpcnN0LXJlc3BvbnNlIGxhdGVuY3kgc2F5cyB3aGV0aGVyIHdlXG4gICAqIGFuc3dlcmVkIGZhc3Q7IHRoaXMgaXMgdGhlIG9ubHkgdGhpbmcgdGhhdCBzYXlzIHdoZXRoZXIgdGhlIGFuc3dlciBoZWxwZWQsXG4gICAqIGFuZCBhIGRlc2sgY2FuIGhpdCBldmVyeSB0YXJnZXQgd2hpbGUgYmVpbmcgYmFkIGF0IHN1cHBvcnQuXG4gICAqL1xuICBzYXRpc2ZhY3Rpb246IGludGVnZXIoJ3NhdGlzZmFjdGlvbicpLFxuICAvKiogT3B0aW9uYWwgZnJlZSB0ZXh0IHdpdGggdGhlIHJhdGluZy4gQ2FwcGVkIGF0IHRoZSByb3V0ZS4gKi9cbiAgc2F0aXNmYWN0aW9uQ29tbWVudDogdGV4dCgnc2F0aXNmYWN0aW9uX2NvbW1lbnQnKSxcbiAgc2F0aXNmYWN0aW9uQXQ6IHRpbWVzdGFtcCgnc2F0aXNmYWN0aW9uX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKiBTZXQgd2hlbiBzdGF0dXMg4oaSIGBhd2FpdGluZ19jdXN0b21lcmA7IHRoZSBwYXVzZSBhbmNob3IuICovXG4gIGF3YWl0aW5nU2luY2U6IHRpbWVzdGFtcCgnYXdhaXRpbmdfc2luY2UnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqXG4gICAqIEFjY3VtdWxhdGVkIHNlY29uZHMgc3BlbnQgd2FpdGluZyBvbiB0aGUgY3VzdG9tZXIuXG4gICAqXG4gICAqIEFnZWluZyBzdWJ0cmFjdHMgdGhpcy4gV2l0aG91dCBpdCBhIGNhc2Ugd2UgYW5zd2VyZWQgaW4gYW4gaG91ciwgd2hlcmUgdGhlXG4gICAqIHRlbmFudCByZXBsaWVkIGZvdXIgZGF5cyBsYXRlciwgcmVhZHMgYXMgYSBmb3VyLWRheSBjYXNlIOKAlCBhbmQgdGhlIG1ldHJpY1xuICAgKiBQaGFzZSAyYiBleGlzdHMgdG8gcHJvZHVjZSByZXBvcnRzIGEgbnVtYmVyIG5vIGN1c3RvbWVyIHdpbGwgYWNjZXB0LiBBblxuICAgKiBhY2N1bXVsYXRvciBwbHVzIHRoZSBjdXJyZW50IGFuY2hvciBzdXJ2aXZlcyBhIGNhc2UgYm91bmNpbmcgYmV0d2VlbiBzdGF0ZXNcbiAgICogcmVwZWF0ZWRseSwgd2hpY2ggcmVwbGF5aW5nIHN0YXR1cyBoaXN0b3J5IHdvdWxkIG5vdC5cbiAgICovXG4gIGF3YWl0aW5nVG90YWxTZWNvbmRzOiBpbnRlZ2VyKCdhd2FpdGluZ190b3RhbF9zZWNvbmRzJykuZGVmYXVsdCgwKS5ub3ROdWxsKCksXG5cbiAgY2xvc2VkQXQ6IHRpbWVzdGFtcCgnY2xvc2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGNsb3NlZEJ5OiB0ZXh0KCdjbG9zZWRfYnknKSxcblxuICAvLyBBdWRpdCArIHNvZnQtZGVsZXRlLCBzYW1lIHNoYXBlIGFzIGBtZXNzYWdlc2AuXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLmRlZmF1bHQoU1lTVEVNX09SR19JRCkubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLmRlZmF1bHQoU1lTVEVNX09SR19JRCkubm90TnVsbCgpLFxuICB1cGRhdGVkQXQ6IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG4gIHB1cmdlQWZ0ZXI6IHRpbWVzdGFtcCgncHVyZ2VfYWZ0ZXInLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbn0sICh0YWJsZSkgPT4gKHtcbiAgLyoqXG4gICAqIFRIRSBxdWV1ZSBxdWVyeTogZXZlcnkgb3BlbiBjYXNlIGFjcm9zcyBBTEwgdGVuYW50cywgb2xkZXN0IGZpcnN0LlxuICAgKlxuICAgKiBUaGUgb25lIHF1ZXJ5IHNoYXBlIHdpdGggbm8gb3JnIHByZWRpY2F0ZSB0byBuYXJyb3cgaXQsIHNvIGl0IGlzIGFsc28gdGhlXG4gICAqIG9ubHkgb25lIHRoYXQgc2NhbnMuIFBhcnRpYWwgYmVjYXVzZSB0aGUgcXVldWUgbmV2ZXIgYXNrcyBhYm91dCBjbG9zZWRcbiAgICogY2FzZXMg4oCUIHdoaWNoIGFyZSBtb3N0IG9mIHRoZSB0YWJsZSB3aXRoaW4gYSBtb250aC4gTWlycm9yc1xuICAgKiBgbWVzc2FnZV9wdXJnZV9pZHhgLCB3aGljaCBpcyBwYXJ0aWFsIGZvciB0aGUgc2FtZSByZWFzb24uXG4gICAqL1xuICBxdWV1ZUlkeDogaW5kZXgoJ3N1cHBvcnRfY2FzZV9xdWV1ZV9pZHgnKVxuICAgIC5vbih0YWJsZS5jcmVhdGVkQXQpXG4gICAgLndoZXJlKHNxbGBzdGF0dXMgSU4gKCdvcGVuJywgJ2F3YWl0aW5nX3N1cHBvcnQnKSBBTkQgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG5cbiAgLyoqXG4gICAqIFRoZSBvbi1jYWxsIHN3ZWVwJ3Mgb25seSBxdWVyeTogcHJlbWl1bSBjYXNlcyB3aG9zZSBmaXJzdC1yZXNwb25zZSB0YXJnZXQgaXNcbiAgICogYXBwcm9hY2hpbmcgd2l0aCBub3RoaW5nIHN0YW1wZWQgeWV0LlxuICAgKlxuICAgKiBQQVJUSUFMIGJlY2F1c2UgdGhlIHRpY2sgcnVucyBldmVyeSBmaXZlIG1pbnV0ZXMgZm9yZXZlciBhbmQgdGhlIHJvd3MgaXRcbiAgICogd2FudHMgYXJlIGEgdGlueSwgc2hyaW5raW5nIGZyYWN0aW9uIG9mIHRoZSB0YWJsZSDigJQgdW5hbnN3ZXJlZCBwcmVtaXVtXG4gICAqIGNhc2VzLiBXaXRob3V0IGl0IGV2ZXJ5IHRpY2sgaXMgYSBzY2FuLCBhbmQgaXQgaXMgdGhlIG9uZSBxdWVyeSB3aXRoIG5vIG9yZ1xuICAgKiBwcmVkaWNhdGUgdG8gbmFycm93IGl0LlxuICAgKlxuICAgKiBgbGV2ZWxgIGFuZCBOT1QgYGlzX3ByZW1pdW1gOiB0aGF0IGNvbHVtbiBsaXZlcyBvbiBzdXBwb3J0X0NPTlRBQ1RTIGFuZFxuICAgKiBtYXJrcyBhbiB1cGdyYWRlZCBjb250YWN0LCB3aGlsZSBhIGNhc2UgZnJlZXplcyB0aGUgb3BlbmluZyBjb250YWN0J3NcbiAgICogZWZmZWN0aXZlIGxldmVsIGF0IG9wZW4uIFRoZSBjYXNlJ3Mgb3duIHByb21pc2UgaXMgaXRzIGBsZXZlbGAsIHNvXG4gICAqIHVwZ3JhZGluZyBhIGNvbnRhY3QgbGF0ZXIgbXVzdCBub3QgbW92ZSBhIGRlYWRsaW5lIGFscmVhZHkgcHVibGlzaGVkIHRvIGFcbiAgICogY3VzdG9tZXIuXG4gICAqL1xuICByZXNwb25zZUR1ZUlkeDogaW5kZXgoJ3N1cHBvcnRfY2FzZV9yZXNwb25zZV9kdWVfaWR4JylcbiAgICAub24odGFibGUucmVzcG9uc2VEdWVBdClcbiAgICAud2hlcmUoc3FsYGxldmVsID0gJ3N1cHBvcnRfcHJlbWl1bScgQU5EIGZpcnN0X3Jlc3BvbnNlX2F0IElTIE5VTEwgQU5EIGRlbGV0ZWRfYXQgSVMgTlVMTGApLFxuXG4gIC8vIEEgdGVuYW50IGxpc3RpbmcgaXRzIG93biBjYXNlcy5cbiAgb3JnU3RhdHVzSWR4OiBpbmRleCgnc3VwcG9ydF9jYXNlX29yZ19zdGF0dXNfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLnN0YXR1cyksXG4gIC8vIFRoZSByb2xsaW5nLXdpbmRvdyBjYXNlIGNvdW50IGJlaGluZCB0aGUgRkFJUi1VU0UgYWxsb3dhbmNlOiBob3cgbWFueSBjYXNlc1xuICAvLyB0aGlzIGFjY291bnQgcmFpc2VkIGluIHRoZSBsYXN0IE4gZGF5cy4gTGVhZGluZyBgb3JnX2lkYCBiZWNhdXNlIHRoZSBjb3VudFxuICAvLyBpcyBhbHdheXMgc2NvcGVkIHRvIGFuIGFjY291bnQgc3VidHJlZSwgdGhlbiBgY3JlYXRlZF9hdGAgc28gdGhlIHdpbmRvdyBpcyBhXG4gIC8vIHJhbmdlIHNjYW4gcmF0aGVyIHRoYW4gYSBmaWx0ZXIgb3ZlciBldmVyeSBjYXNlIHRoZSBvcmcgZXZlciByYWlzZWQuXG4gIG9yZ0NyZWF0ZWRJZHg6IGluZGV4KCdzdXBwb3J0X2Nhc2Vfb3JnX2NyZWF0ZWRfaWR4Jykub24odGFibGUub3JnSWQsIHRhYmxlLmNyZWF0ZWRBdCksXG5cbiAgLy8gXCJXaGF0IGFtIEkgb24gdGhlIGhvb2sgZm9yXCIsIG9uZSBlbmdpbmVlci5cbiAgYXNzaWduZWVJZHg6IGluZGV4KCdzdXBwb3J0X2Nhc2VfYXNzaWduZWRfaWR4JylcbiAgICAub24odGFibGUuYXNzaWduZWRUbywgdGFibGUuc3RhdHVzKVxuICAgIC53aGVyZShzcWxgYXNzaWduZWRfdG8gSVMgTk9UIE5VTExgKSxcblxuICAvLyBcIk15IGNhc2VzXCIgZm9yIGEgY29udGFjdCwgQU5EIHRoZSBsb29rdXAgdGhhdCBmaW5kcyBhIGRlcGFydGluZyBjb250YWN0J3NcbiAgLy8gb3BlbiBjYXNlcyBzbyB0aGV5IGNhbiBiZSByZWFzc2lnbmVkIGluc3RlYWQgb2Ygb3JwaGFuZWQuXG4gIHRlbmFudENvbnRhY3RJZHg6IGluZGV4KCdzdXBwb3J0X2Nhc2VfdGVuYW50X2NvbnRhY3RfaWR4JylcbiAgICAub24odGFibGUudGVuYW50Q29udGFjdCwgdGFibGUuc3RhdHVzKVxuICAgIC53aGVyZShzcWxgdGVuYW50X2NvbnRhY3QgSVMgTk9UIE5VTExgKSxcblxuICAvLyBDYXNlIGlkZW50aXR5LCByZWFjaGVkIGZyb20gYW55IG1lc3NhZ2UgaW4gdGhlIHRocmVhZC5cbiAgdGhyZWFkVXE6IHVuaXF1ZUluZGV4KCdzdXBwb3J0X2Nhc2VfdGhyZWFkX3VxJykub24odGFibGUudGhyZWFkSWQpLFxuXG4gIC8vIFRoZSBjdXN0b21lci1xdW90YWJsZSBudW1iZXIgaXMgdW5pcXVlIHBlciBvcmcsIGVuZm9yY2VkIG5vdCBhc3N1bWVkLlxuICBkaXNwbGF5VXE6IHVuaXF1ZUluZGV4KCdzdXBwb3J0X2Nhc2Vfb3JnX251bWJlcl91cScpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5kaXNwbGF5TnVtYmVyKVxuICAgIC53aGVyZShzcWxgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG59KSk7XG5cbi8qKlxuICogUGVyLW9yZyBhbGxvY2F0b3IgZm9yIGBzdXBwb3J0X2Nhc2VzLmRpc3BsYXlfbnVtYmVyYC5cbiAqXG4gKiBQb3N0Z3JlcyBzZXF1ZW5jZXMgYXJlIGdsb2JhbCBhbmQgY2Fubm90IGJlIHBlci1vcmcgd2l0aG91dCBvbmUgc2VxdWVuY2UgcGVyXG4gKiB0ZW5hbnQsIHNvIHRoZSBjb3VudGVyIGlzIGEgcm93OiBgVVBEQVRFIOKApiBTRVQgbmV4dF9udW1iZXIgPSBuZXh0X251bWJlciArIDFcbiAqIFJFVFVSTklORyBuZXh0X251bWJlcmAgaW5zaWRlIHRoZSBjYXNlLWluc2VydCB0cmFuc2FjdGlvbiwgd2hlcmUgdGhlIHJvdyBsb2NrXG4gKiBzZXJpYWxpc2VzIGNvbmN1cnJlbnQgb3BlbnMgd2l0aGluIG9uZSBvcmcuXG4gKlxuICogQHRhYmxlIHN1cHBvcnRfY2FzZV9jb3VudGVyc1xuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydENhc2VDb3VudGVyID0gcGdUYWJsZSgnc3VwcG9ydF9jYXNlX2NvdW50ZXJzJywge1xuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5wcmltYXJ5S2V5KCksXG4gIG5leHROdW1iZXI6IGludGVnZXIoJ25leHRfbnVtYmVyJykuZGVmYXVsdCgxKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbn0pO1xuXG4vKipcbiAqIFRoZSBtZW1iZXJzIGF1dGhvcmlzZWQgdG8gb3BlbiBzdXBwb3J0IGNhc2VzIOKAlCB3aGF0IHRoZSBwZXItY29udGFjdCBwcmljZVxuICogYmlsbHMgZm9yLlxuICpcbiAqIFRoZSBDT1VOVCBpcyBjYXBwZWQgYWdhaW5zdCBlZmZlY3RpdmUgYHN1cHBvcnRDb250YWN0c2AgYXQgZGVzaWduYXRpb24gdGltZSxcbiAqIGluIHRoZSBzYW1lIHNoYXBlIHNlYXRzIGFyZSBjYXBwZWQgYXQgaW52aXRlIHRpbWUuIGBzdXBwb3J0Q29udGFjdHNgIGhhcyBhXG4gKiB0aWVyIGJhc2Ugb2YgMCBldmVyeXdoZXJlLCBzbyBhbiBvcmcgd2l0aCBubyBzdXBwb3J0IGFkZC1vbiBoYXMgbm8gY29udGFjdHNcbiAqIGFuZCBjYW5ub3Qgb3BlbiBhIGNhc2U6IHRoZSBwYXl3YWxsIGlzIGEgcXVvdGEgY2hlY2ssIG5vdCBhIGZlYXR1cmUgZmxhZy5cbiAqXG4gKiBAdGFibGUgc3VwcG9ydF9jb250YWN0c1xuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydENvbnRhY3QgPSBwZ1RhYmxlKCdzdXBwb3J0X2NvbnRhY3RzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIHVzZXJJZDogdGV4dCgndXNlcl9pZCcpLm5vdE51bGwoKSxcbiAgLy8gV2hvIG5vbWluYXRlZCB0aGVtLiBBdWRpdC13b3J0aHk6IGEgY29udGFjdCBpcyBhIHBhaWQsIHByaXZpbGVnZWQgc2xvdC5cbiAgZGVzaWduYXRlZEJ5OiB0ZXh0KCdkZXNpZ25hdGVkX2J5Jykubm90TnVsbCgpLFxuICBkZXNpZ25hdGVkQXQ6IHRpbWVzdGFtcCgnZGVzaWduYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgY29udGFjdCBpcyBVUEdSQURFRCB0byBwcmVtaXVtIOKAlCAyNMOXNyBjb3ZlcmFnZSwgdGhlIDgtaG91clxuICAgKiBhbnktZGF5IHRhcmdldCwgYW5kIHRoZSBvbmx5IGNvbnRhY3RzIHdobyBtYXkgZGVjbGFyZSBgdXJnZW50YCBzZXZlcml0eS5cbiAgICpcbiAgICogQSBjb2x1bW4gb24gdGhlIGNvbnRhY3QgcmF0aGVyIHRoYW4gYSBsZXZlbCBvbiB0aGUgb3JnLCBiZWNhdXNlIHRoYXQgaXMgd2hhdFxuICAgKiB0aGUgdXBncmFkZSBtb2RlbCBtZWFuczogYW4gYWNjb3VudCBob2xkcyBvbmUgQkFTRUxJTkUgbGV2ZWwgY292ZXJpbmcgZXZlcnlcbiAgICogY29udGFjdCBhbmQgdXBncmFkZXMgYSBzdWJzZXQuIFdpdGhvdXQgdGhpcyB0aGUgYHN1cHBvcnRQcmVtaXVtQ29udGFjdHNgIGNhcFxuICAgKiB3b3VsZCBncmFudCBhIHF1b3RhIG92ZXIgbm90aGluZyDigJQgdGhlcmUgd291bGQgYmUgbm8gd2F5IGZvciBhbnkgY29udGFjdCB0b1xuICAgKiBhY3R1YWxseSBiZSBwcmVtaXVtLCBhbmQgdGhlIGNhc2Utb3BlbiBwYXRoIHdvdWxkIGhhdmUgbm90aGluZyB0byByZWFkLlxuICAgKlxuICAgKiBUaGUgY2FzZSBmcmVlemVzIHRoZSBPUEVOSU5HIENPTlRBQ1QncyBlZmZlY3RpdmUgbGV2ZWwgYXQgb3BlblxuICAgKiAoYHN1cHBvcnRfY2FzZS5sZXZlbGApLCBzbyBmbGlwcGluZyB0aGlzIGxhdGVyIG5ldmVyIGNoYW5nZXMgdGhlIHByb21pc2Ugb25cbiAgICogYSBjYXNlIGFscmVhZHkgcmFpc2VkLlxuICAgKi9cbiAgaXNQcmVtaXVtOiBib29sZWFuKCdpc19wcmVtaXVtJykuZGVmYXVsdChmYWxzZSkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIHJldm9rZWRBdDogdGltZXN0YW1wKCdyZXZva2VkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIHJldm9rZWRCeTogdGV4dCgncmV2b2tlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBPbmUgbGl2ZSBkZXNpZ25hdGlvbiBwZXIgKG9yZywgdXNlcikuIFBhcnRpYWwgc28gYSByZXZva2VkIHJvdyBkb2VzIG5vdFxuICAvLyBibG9jayByZS1kZXNpZ25hdGluZyB0aGUgc2FtZSBwZXJzb24gbGF0ZXIuXG4gIG9yZ1VzZXJVcTogdW5pcXVlSW5kZXgoJ3N1cHBvcnRfY29udGFjdF9vcmdfdXNlcl91cScpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS51c2VySWQpXG4gICAgLndoZXJlKHNxbGBpc19hY3RpdmUgPSB0cnVlYCksXG4gIC8vIENvdW50aW5nIGFuIG9yZydzIGxpdmUgY29udGFjdHMgYWdhaW5zdCBpdHMgY2FwLCBhbmQgbGlzdGluZyB0aGVtIGZvciB0aGVcbiAgLy8gdGVuYW50LXNpZGUgb3duZXIgcGlja2VyLlxuICBvcmdBY3RpdmVJZHg6IGluZGV4KCdzdXBwb3J0X2NvbnRhY3Rfb3JnX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuaXNBY3RpdmUpLFxuICAvLyBUaGUgcHJlbWl1bSBTVUJTRVQsIGNvdW50ZWQgYWdhaW5zdCBgc3VwcG9ydFByZW1pdW1Db250YWN0c2Agb24gZXZlcnlcbiAgLy8gdXBncmFkZS4gUGFydGlhbCBvbiBib3RoIGZsYWdzIGJlY2F1c2UgdGhhdCBpcyB0aGUgb25seSBxdWVzdGlvbiBhc2tlZCBvZlxuICAvLyBpdDogaG93IG1hbnkgbGl2ZSBjb250YWN0cyBpbiB0aGlzIHNjb3BlIGFyZSB1cGdyYWRlZC5cbiAgb3JnUHJlbWl1bUlkeDogaW5kZXgoJ3N1cHBvcnRfY29udGFjdF9vcmdfcHJlbWl1bV9pZHgnKVxuICAgIC5vbih0YWJsZS5vcmdJZCwgdGFibGUudXNlcklkKVxuICAgIC53aGVyZShzcWxgaXNfYWN0aXZlID0gdHJ1ZSBBTkQgaXNfcHJlbWl1bSA9IHRydWVgKSxcbn0pKTtcblxuLyoqXG4gKiBDYW5uZWQgc3RhZmYgcmVwbGllcyDigJQgYSBzaGFyZWQgbGlicmFyeSBvZiBhbnN3ZXJzIHRoZSBkZXNrIHJldXNlcy5cbiAqXG4gKiBTWVNURU0tV0lERSwgbm90IHBlci10ZW5hbnQsIGFuZCBkZWxpYmVyYXRlbHkgc286IHRoZXNlIGFyZSB0aGUgdmVuZG9yJ3Mgb3duXG4gKiB3b3JkaW5nIGZvciByZWN1cnJpbmcgcXVlc3Rpb25zLCBhdXRob3JlZCBvbmNlIGFuZCB1c2VkIGFjcm9zcyBldmVyeVxuICogY3VzdG9tZXIuIFRoZXJlIGlzIG5vIGBvcmdfaWRgIGJlY2F1c2Ugc2NvcGluZyB0aGVtIHBlciB0ZW5hbnQgd291bGQgYmUgdGhlXG4gKiBvcHBvc2l0ZSBvZiB0aGUgcG9pbnQg4oCUIHRoZSB2YWx1ZSBpcyB0aGF0IHRoZSBhbnN3ZXIgdG8gXCJob3cgZG8gSSByb3RhdGUgYVxuICogc2VydmljZSBrZXlcIiBpcyB3cml0dGVuIHdlbGwgb25jZSByYXRoZXIgdGhhbiByZXR5cGVkIGJhZGx5IGZpZnR5IHRpbWVzLlxuICpcbiAqIFRoYXQgYWxzbyBtZWFucyBSTFMgZG9lcyBub3QgYXBwbHk6IGV2ZXJ5IHJvdyBpcyB2aXNpYmxlIHRvIHRoZSBzdGFmZiB3aG8gY2FuXG4gKiByZWFjaCB0aGUgcXVldWUsIGFuZCB0byBub2JvZHkgZWxzZS4gVGhlIHJvdXRlcyBhcmUgc3lzdGVtLWFkbWluIGdhdGVkIG9uXG4gKiBib3RoIHJlYWQgYW5kIHdyaXRlIGZvciBleGFjdGx5IHRoYXQgcmVhc29uLlxuICpcbiAqIFNvZnQtZGVsZXRlZCByYXRoZXIgdGhhbiByZW1vdmVkLCBiZWNhdXNlIGEgcmV0aXJlZCB0ZW1wbGF0ZSBpcyBzdGlsbCB0aGVcbiAqIGV4cGxhbmF0aW9uIG9mIHdoYXQgYSBwYXN0IHJlcGx5IHNhaWQuXG4gKlxuICogQHRhYmxlIHN1cHBvcnRfY2FubmVkX3Jlc3BvbnNlc1xuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydENhbm5lZFJlc3BvbnNlID0gcGdUYWJsZSgnc3VwcG9ydF9jYW5uZWRfcmVzcG9uc2VzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICAvKiogU2hvcnQgbGFiZWwgdGhlIHBpY2tlciBsaXN0cy4gKi9cbiAgdGl0bGU6IHZhcmNoYXIoJ3RpdGxlJywgeyBsZW5ndGg6IDIwMCB9KS5ub3ROdWxsKCksXG4gIGJvZHk6IHRleHQoJ2JvZHknKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICB1cGRhdGVkQnk6IHRleHQoJ3VwZGF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvLyBUaGUgcGlja2VyJ3Mgb25seSBxdWVyeTogbGl2ZSB0ZW1wbGF0ZXMsIGFscGhhYmV0aWNhbC5cbiAgYWN0aXZlVGl0bGVJZHg6IGluZGV4KCdzdXBwb3J0X2Nhbm5lZF9hY3RpdmVfaWR4Jykub24odGFibGUuaXNBY3RpdmUsIHRhYmxlLnRpdGxlKSxcbn0pKTtcblxuLyoqXG4gKiBDU0FUOiB0aGUgY3VzdG9tZXIncyB2ZXJkaWN0IG9uIGEgY2xvc2VkIGNhc2UuXG4gKlxuICogQSBDT0xVTU4gU0VUIG9uIHRoZSBjYXNlIHJhdGhlciB0aGFuIGl0cyBvd24gdGFibGUsIHVubGlrZSBub3Rlcy4gVGhlIHJlYXNvblxuICogaXMgY2FyZGluYWxpdHksIG5vdCBjb252ZW5pZW5jZTogYSBjYXNlIGhhcyBtYW55IG5vdGVzIGFuZCBleGFjdGx5IG9uZVxuICogc2F0aXNmYWN0aW9uIHJhdGluZywgc28gYSB0YWJsZSB3b3VsZCBidXkgYW4gZXh0cmEgam9pbiBhbmQgYSB1bmlxdWVuZXNzXG4gKiBjb25zdHJhaW50IHRvIGVuZm9yY2Ugd2hhdCBhIGNvbHVtbiBnZXRzIGZvciBmcmVlLlxuICpcbiAqIFdoeSBpdCBtYXR0ZXJzIG1vcmUgaGVyZSB0aGFuIGluIG1vc3QgcHJvZHVjdHM6IHRoZSB0aGluZyBiZWluZyBTT0xEIGlzIGFcbiAqIHJlc3BvbnNlIHRpbWUsIGFuZCBmaXJzdC1yZXNwb25zZSBsYXRlbmN5IG9ubHkgbWVhc3VyZXMgd2hldGhlciB3ZSBhbnN3ZXJlZFxuICogZmFzdCDigJQgbm90IHdoZXRoZXIgdGhlIGFuc3dlciB3YXMgYW55IGdvb2QuIEEgZGVzayBjYW4gaGl0IGV2ZXJ5IHRhcmdldCBhbmRcbiAqIHN0aWxsIGJlIGJhZCBhdCBzdXBwb3J0LCBhbmQgd2l0aG91dCB0aGlzIG5vdGhpbmcgaW4gdGhlIHN5c3RlbSB3b3VsZCBub3RpY2UuXG4gKlxuICogQHRhYmxlIHN1cHBvcnRfY2FzZXMgKGNvbHVtbnMpXG4gKi9cblxuLyoqXG4gKiBTdGFmZi1vbmx5IG5vdGVzIG9uIGEgY2FzZS5cbiAqXG4gKiBBIFNFUEFSQVRFIFRBQkxFIHJhdGhlciB0aGFuIGEgZmxhZyBvbiBgbWVzc2FnZXNgLCBhbmQgdGhlIHJlYXNvbiBpcyB0aGVcbiAqIGZhaWx1cmUgbW9kZTogYG1lc3NhZ2VzYCBpcyByZWFkIHRocm91Z2ggb25lIHNoYXJlZCB2aXNpYmlsaXR5IHByZWRpY2F0ZVxuICogKGBidWlsZE1lc3NhZ2VDb25kaXRpb25zYCksIHNvIGEgZmxhZyBtZWFucyBldmVyeSByZWFkIHBhdGggdGhhdCBmb3JnZXRzIHRoZVxuICogZXh0cmEgY29uZGl0aW9uIGxlYWtzIGFuIGludGVybmFsIG5vdGUgdG8gdGhlIHRlbmFudC4gQSBzZXBhcmF0ZSB0YWJsZSBjYW5ub3RcbiAqIGxlYWsgYnkgb21pc3Npb24g4oCUIGl0IGhhcyB0byBiZSBqb2luZWQgZGVsaWJlcmF0ZWx5LlxuICpcbiAqIEB0YWJsZSBzdXBwb3J0X2Nhc2Vfbm90ZXNcbiAqL1xuZXhwb3J0IGNvbnN0IHN1cHBvcnRDYXNlTm90ZSA9IHBnVGFibGUoJ3N1cHBvcnRfY2FzZV9ub3RlcycsIHtcbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcbiAgY2FzZUlkOiB1dWlkKCdjYXNlX2lkJykubm90TnVsbCgpLFxuICAvLyBEZW5vcm1hbGlzZWQgc28gYSBub3RlIGNhbiBuZXZlciBiZSBzZXJ2ZWQgd2l0aG91dCBpdHMgdGVuYW50IHNjb3BlLlxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG4gIGNvbnRlbnQ6IHRleHQoJ2NvbnRlbnQnKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRCeTogdGV4dCgnY3JlYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEF0OiB0aW1lc3RhbXAoJ2NyZWF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG4gIGRlbGV0ZWRBdDogdGltZXN0YW1wKCdkZWxldGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIGRlbGV0ZWRCeTogdGV4dCgnZGVsZXRlZF9ieScpLFxufSwgKHRhYmxlKSA9PiAoe1xuICBjYXNlSWR4OiBpbmRleCgnc3VwcG9ydF9jYXNlX25vdGVfY2FzZV9pZHgnKS5vbih0YWJsZS5jYXNlSWQsIHRhYmxlLmlzQWN0aXZlKSxcbn0pKTtcblxuLyoqIFR5cGVTY3JpcHQgdHlwZXMgcmVwcmVzZW50aW5nIGRhdGFiYXNlIHJvd3MgKi9cbmV4cG9ydCB0eXBlIFN1cHBvcnRDYXNlID0gdHlwZW9mIHN1cHBvcnRDYXNlLiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFN1cHBvcnRDYXNlSW5zZXJ0ID0gdHlwZW9mIHN1cHBvcnRDYXNlLiRpbmZlckluc2VydDtcbmV4cG9ydCB0eXBlIFN1cHBvcnRDYXNlVXBkYXRlID0gUGFydGlhbDxPbWl0PFN1cHBvcnRDYXNlSW5zZXJ0LCAnaWQnIHwgJ2NyZWF0ZWRBdCcgfCAnY3JlYXRlZEJ5JyB8ICdvcmdJZCcgfCAndGhyZWFkSWQnIHwgJ2Rpc3BsYXlOdW1iZXInPj47XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRDYXNlQ291bnRlciA9IHR5cGVvZiBzdXBwb3J0Q2FzZUNvdW50ZXIuJGluZmVyU2VsZWN0O1xuXG5leHBvcnQgdHlwZSBTdXBwb3J0Q29udGFjdCA9IHR5cGVvZiBzdXBwb3J0Q29udGFjdC4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBTdXBwb3J0Q29udGFjdEluc2VydCA9IHR5cGVvZiBzdXBwb3J0Q29udGFjdC4kaW5mZXJJbnNlcnQ7XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRDYXNlTm90ZSA9IHR5cGVvZiBzdXBwb3J0Q2FzZU5vdGUuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgU3VwcG9ydENhc2VOb3RlSW5zZXJ0ID0gdHlwZW9mIHN1cHBvcnRDYXNlTm90ZS4kaW5mZXJJbnNlcnQ7XG4iXX0=
323
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3NjaGVtYS9zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFcEg7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUU7SUFDbEQsd0RBQXdEO0lBQ3hELEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsYUFBYSxFQUFFO0lBRTNDOzs7Ozs7O09BT0c7SUFDSCxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUVyQyw0RUFBNEU7SUFDNUUscUVBQXFFO0lBQ3JFLEtBQUssRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBRW5EOzs7Ozs7Ozs7T0FTRztJQUNILGFBQWEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFFbEQsa0VBQWtFO0lBQ2xFLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRTtJQUVuRSwrRUFBK0U7SUFDL0UsOEVBQThFO0lBQzlFLFFBQVEsRUFB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QUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbkQsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDbEMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUU7SUFDdkMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLEVBQUU7SUFDakYsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO0lBQ3RELFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzFELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO0NBQzlCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQztDQUM5RSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBTWVNURU1fT1JHX0lEIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgYm9vbGVhbiwgaW50ZWdlciwgdmFyY2hhciwgcGdUYWJsZSwgdGV4dCwgdGltZXN0YW1wLCB1dWlkLCBpbmRleCwgdW5pcXVlSW5kZXggfSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJztcblxuLyoqXG4gKiBUaGUgV09SS0ZMT1cgYXhpcyBvZiBhIHN1cHBvcnQgY2FzZS5cbiAqXG4gKiBgbWVzc2FnZXNgIGFscmVhZHkgY2FycmllcyB0aGUgY29udmVyc2F0aW9uIOKAlCBpZGVudGl0eSwgdGhyZWFkaW5nLCBwcmlvcml0eSxcbiAqIHBlci1wYXJ0aWNpcGFudCByZWFkIHN0YXRlLCBhdHRhY2htZW50cyBhbmQgc29mdC1kZWxldGUuIFdoYXQgaXQgaGFzIG5vIGNvbHVtblxuICogZm9yIGlzIHdvcmtmbG93OiBzdGF0dXMsIG93bmVyc2hpcCwgcmVzb2x1dGlvbiBhbmQgdGhlIHJlc3BvbnNlIGNsb2NrLiBUaGF0IGlzXG4gKiB0aGlzIHRhYmxlLCBvbmUgcm93IHBlciBjYXNlLCBqb2luZWQgdG8gdGhlIGNvbnZlcnNhdGlvbiBieSBgdGhyZWFkSWRgLlxuICpcbiAqIEtlZXBpbmcgdGhlbSBhcGFydCByYXRoZXIgdGhhbiB3aWRlbmluZyBgbWVzc2FnZXNgIGlzIGRlbGliZXJhdGU6IGBtZXNzYWdlc2BcbiAqIGFsc28gY2FycmllcyBhbm5vdW5jZW1lbnRzIGFuZCBvcmRpbmFyeSBjb252ZXJzYXRpb25zLCB3aGljaCBoYXZlIG5vIHN0YXR1cyxcbiAqIG5vIGFzc2lnbmVlIGFuZCBubyByZXNwb25zZSB0YXJnZXQuIFNpeCBudWxsYWJsZSBjb2x1bW5zIG9uIGV2ZXJ5IGFubm91bmNlbWVudFxuICogcm93IHRvIGRlc2NyaWJlIGEgc3RhdGUgYW5ub3VuY2VtZW50cyBjYW5ub3QgYmUgaW4gaXMgaG93IGEgdGFibGUgc3RvcHNcbiAqIG1lYW5pbmcgb25lIHRoaW5nLlxuICpcbiAqIEB0YWJsZSBzdXBwb3J0X2Nhc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBzdXBwb3J0Q2FzZSA9IHBnVGFibGUoJ3N1cHBvcnRfY2FzZXMnLCB7XG4gIC8vIEludGVybmFsIGtleS4gTk9UIHRoZSBjYXNlIGlkZW50aXR5IOKAlCBzZWUgYHRocmVhZElkYC5cbiAgaWQ6IHV1aWQoJ2lkJykucHJpbWFyeUtleSgpLmRlZmF1bHRSYW5kb20oKSxcblxuICAvKipcbiAgICogVGhlIHJvb3QgYG1lc3NhZ2VzLmlkYCBvZiB0aGUgdGhyZWFkLCBhbmQgdGhlIENBTk9OSUNBTCBjYXNlIGlkZW50aXR5LlxuICAgKlxuICAgKiBUaGUgY29udmVudGlvbiBhbHJlYWR5IGV4aXN0czogcmVhZGVycyB3YWxrIGB0aHJlYWRJZCA9PT0gcm9vdC5pZGAgYW5kXG4gICAqIGB1cGRhdGUtbWVzc2FnZS50c2AgdXNlcyBgdXBkYXRlZC50aHJlYWRJZCA/PyB1cGRhdGVkLmlkYCBmb3IgZXhhY3RseSB0aGlzXG4gICAqIFwidGhlIHJvb3QgaXMgdGhlIGlkZW50aXR5XCIgaWRlYS4gU28gY2FzZSBpZGVudGl0eSBmYWxscyBvdXQgb2YgdGhyZWFkaW5nIHRoZVxuICAgKiBzdXBwb3J0IHBhdGggcmF0aGVyIHRoYW4gYmVpbmcgYSBuZXcgY29uY2VwdC5cbiAgICovXG4gIHRocmVhZElkOiB1dWlkKCd0aHJlYWRfaWQnKS5ub3ROdWxsKCksXG5cbiAgLy8gVGhlIFRFTkFOVCBvcmcuIE5ldmVyIHRoZSBzeXN0ZW0gb3JnIOKAlCBhIGNhc2UgaXMgYWx3YXlzIGFib3V0IG9uZSB0ZW5hbnQsXG4gIC8vIGV2ZW4gdGhvdWdoIHRoZSBzeXN0ZW0gb3JnIGlzIHRoZSBvdGhlciBwYXJ0aWNpcGFudCBpbiB0aGUgdGhyZWFkLlxuICBvcmdJZDogdmFyY2hhcignb3JnX2lkJywgeyBsZW5ndGg6IDI1NSB9KS5ub3ROdWxsKCksXG5cbiAgLyoqXG4gICAqIFBlci1vcmcsIGN1c3RvbWVyLXF1b3RhYmxlIGNhc2UgbnVtYmVyIChyZW5kZXJlZCBgQUNNRS0xMDQyYCkuXG4gICAqXG4gICAqIEEgYmFyZSBVVUlEIGlzIG5vdCBzb21ldGhpbmcgYW55b25lIHJlYWRzIG91dCBvbiBhIGNhbGwgb3IgcHV0cyBpbiBhbiBlbWFpbFxuICAgKiBzdWJqZWN0LCBhbmQgYSBHTE9CQUwgc2VxdWVuY2Ugd291bGQgZGlzY2xvc2UgdG90YWwgY2FzZSB2b2x1bWUgdG8gZXZlcnlcbiAgICogY3VzdG9tZXIuIEFsbG9jYXRlZCBmcm9tIGBzdXBwb3J0X2Nhc2VfY291bnRlcnNgIGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uIGFzXG4gICAqIHRoZSBpbnNlcnQ7IGBzdXBwb3J0X2Nhc2Vfb3JnX251bWJlcl91cWAgaXMgdGhlIGJhY2tzdG9wIHRoYXQgdHVybnMgYVxuICAgKiBieXBhc3NlZCBjb3VudGVyIGludG8gYSBmYWlsZWQgaW5zZXJ0IHJhdGhlciB0aGFuIHR3byBjYXNlcyBzaGFyaW5nIHRoZSBvbmVcbiAgICogaWRlbnRpZmllciBjdXN0b21lcnMgcXVvdGUgYmFjay5cbiAgICovXG4gIGRpc3BsYXlOdW1iZXI6IGludGVnZXIoJ2Rpc3BsYXlfbnVtYmVyJykubm90TnVsbCgpLFxuXG4gIC8vIG9wZW4gfCBhd2FpdGluZ19zdXBwb3J0IHwgYXdhaXRpbmdfY3VzdG9tZXIgfCByZXNvbHZlZCB8IGNsb3NlZFxuICBzdGF0dXM6IHZhcmNoYXIoJ3N0YXR1cycsIHsgbGVuZ3RoOiAzMiB9KS5kZWZhdWx0KCdvcGVuJykubm90TnVsbCgpLFxuXG4gIC8vIFNldCBieSB0aGUgb3BlbmVyOyByZS1yYW5rYWJsZSBieSBzdGFmZi4gU2VsZi1zZWxlY3RlZCBzZXZlcml0eSBpcyB3aHkgc3RhZmZcbiAgLy8gcmUtcmFua2luZyBpcyBpbiB2MTogb3RoZXJ3aXNlIHRoZSB0ZW5hbnQgY2hvb3NlcyB0aGUgdGFyZ2V0IHRoZXkgYXJlIG93ZWQuXG4gIHNldmVyaXR5OiB2YXJjaGFyKCdzZXZlcml0eScsIHsgbGVuZ3RoOiAxNiB9KS5kZWZhdWx0KCdub3JtYWwnKS5ub3ROdWxsKCksXG5cbiAgLyoqXG4gICAqIFRoZSBzdXBwb3J0IGxldmVsIGhlbGQgd2hlbiB0aGUgY2FzZSB3YXMgT1BFTkVELCBmcm96ZW4gb250byB0aGUgY2FzZS5cbiAgICpcbiAgICogRnJvemVuIGRlbGliZXJhdGVseTogYSBjdXN0b21lciB3aG8gZG93bmdyYWRlcyBtaWQtY2FzZSBzaG91bGQgc3RpbGwgZ2V0IHRoZVxuICAgKiByZXNwb25zZSB0aGV5IGJvdWdodCB3aGVuIHRoZXkgb3BlbmVkIGl0LiBSZXNvbHZpbmcgZW50aXRsZW1lbnQgbGl2ZSB3b3VsZFxuICAgKiBjaGFuZ2UgYW4gb3BlbiBjYXNlJ3MgcHJvbWlzZSB1bmRlcm5lYXRoIHRoZSBwZXJzb24gd2FpdGluZyBvbiBpdC5cbiAgICovXG4gIGxldmVsOiB2YXJjaGFyKCdsZXZlbCcsIHsgbGVuZ3RoOiAzMiB9KS5ub3ROdWxsKCksXG5cbiAgLyoqIFRydWUgd2hlbiB0aGUgY2FzZSB3YXMgb3BlbmVkIGJ5IHNwZW5kaW5nIGEgb25lLXRpbWUgaW5jaWRlbnQgcmF0aGVyIHRoYW5cbiAgICogIGFnYWluc3QgYSBjb250YWN0IHNlYXQuIFJlY29yZGVkIHNvIFwiaG93IG1hbnkgaW5jaWRlbnRzIHdlcmUgYWN0dWFsbHlcbiAgICogIHVzZWRcIiBpcyBhbnN3ZXJhYmxlIGZyb20gdGhlIGNhc2VzLCBub3Qgb25seSBmcm9tIGEgYmFsYW5jZSBkZWx0YS4gKi9cbiAgb3BlbmVkV2l0aEluY2lkZW50OiBib29sZWFuKCdvcGVuZWRfd2l0aF9pbmNpZGVudCcpLmRlZmF1bHQoZmFsc2UpLm5vdE51bGwoKSxcblxuICAvLyAtLS0gdGhlIHR3byBvd25lcnMsIHdoaWNoIG1vdmUgaW5kZXBlbmRlbnRseS4gTkVJVEhFUiBpcyBgY3JlYXRlZEJ5YC5cbiAgLyoqIFNUQUZGIG93bmVyIOKAlCBhIHN5c3RlbS1vcmcgYWN0b3IuIGBudWxsYCBpcyBsZWdpdGltYXRlOiBpdCBpcyB0aGUgdW5vd25lZFxuICAgKiAgcG9vbCwgYW5kIGhvdyBcIkkgY2Fubm90IHRha2UgdGhpc1wiIGlzIHNhaWQgd2l0aG91dCBhIHBzZXVkby1hc3NpZ25lZS4gKi9cbiAgYXNzaWduZWRUbzogdGV4dCgnYXNzaWduZWRfdG8nKSxcbiAgLyoqIFRFTkFOVCBvd25lciDigJQgdGhlIGRlc2lnbmF0ZWQgY29udGFjdCBjdXJyZW50bHkgcmVzcG9uc2libGUuIERpc3RpbmN0IGZyb21cbiAgICogIGBjcmVhdGVkQnlgLCB3aGljaCBpcyB0aGUgaW1tdXRhYmxlIGF1ZGl0IGZhY3Qgb2Ygd2hvIHJhaXNlZCB0aGUgY2FzZTpcbiAgICogIG11dGF0aW5nIHRoYXQgdG8gZXhwcmVzcyBcInNvbWVvbmUgZWxzZSBvd25zIHRoaXMgbm93XCIgd291bGQgZGVzdHJveSB0aGVcbiAgICogIG9ubHkgcmVjb3JkIG9mIHdobyBhY3R1YWxseSBvcGVuZWQgaXQuICovXG4gIHRlbmFudENvbnRhY3Q6IHRleHQoJ3RlbmFudF9jb250YWN0JyksXG5cbiAgLy8gLS0tIHRoZSByZXNwb25zZSBjbG9ja1xuICAvKipcbiAgICogV2hlbiB0aGUgZmlyc3QgcmVzcG9uc2UgaXMgRFVFLCBjb21wdXRlZCBvbmNlIGF0IG9wZW4gYW5kIG5ldmVyIHJlY29tcHV0ZWQuXG4gICAqXG4gICAqIEZyb3plbiBmb3IgdGhlIHNhbWUgcmVhc29uIGBsZXZlbGAgaXM6IGEgY2hhbmdlIHRvIHRoZSB3b3JraW5nIHdlZWsgb3IgdGhlXG4gICAqIGhvbGlkYXkgbGlzdCBtdXN0IG5vdCBtb3ZlIGEgcHJvbWlzZSBhbHJlYWR5IG1hZGUgdG8gYSBjdXN0b21lci4gVGhyZWVcbiAgICogdGhpbmdzIGZvbGxvdyBmcm9tIHN0b3JpbmcgaXQgcmF0aGVyIHRoYW4gZGVyaXZpbmcgaXQgcGVyIHJlYWQ6XG4gICAqICAgLSB0aGUgc3RhZmYgcXVldWUgb3JkZXJzIGJ5IGEgcmVhbCBkZWFkbGluZSB3aXRoIG5vIGNhbGVuZGFyIGFyaXRobWV0aWNcbiAgICogICAgIHBlciByb3c7XG4gICAqICAgLSB0aGUgc3RhbmRhcmQvcHJpb3JpdHkgYnJlYWNoIGNoZWNrIGJlY29tZXMgQ09OVFJBQ1RVQUwsIHdoZXJlIGFcbiAgICogICAgIHdhbGwtY2xvY2sgcXVhbnRpbGUgY2Fubm90IGV4cHJlc3MgYSBidXNpbmVzcy1kYXkgdGFyZ2V0IGF0IGFsbCAoYVxuICAgKiAgICAgcHJpb3JpdHkgY2FzZSByYWlzZWQgYXQgMTc6MDEgb24gYSBGcmlkYXkgaXMgbm90IGxhdGUgdW50aWwgTW9uZGF5XG4gICAqICAgICBldmVuaW5nLCB+Nzkgd2FsbC1jbG9jayBob3VycyBsYXRlcik7XG4gICAqICAgLSBhIGxldmVsIHdpdGggbm8gcHVibGlzaGVkIHRhcmdldCwgYW5kIGEgY2FzZSBvcGVuZWQgd2hpbGUgdGhlIGNhbGVuZGFyXG4gICAqICAgICB3YXMgbWlzY29uZmlndXJlZCwgYXJlIGJvdGggc2ltcGx5IE5VTEwg4oCUIG5vIGRlYWRsaW5lIHJhdGhlciB0aGFuIGFcbiAgICogICAgIHdyb25nIG9uZS5cbiAgICovXG4gIHJlc3BvbnNlRHVlQXQ6IHRpbWVzdGFtcCgncmVzcG9uc2VfZHVlX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSksXG4gIC8qKiBGaXJzdCBzdGFmZiByZXBseS4gVEhFIG1lYXN1cmVkIG51bWJlciDigJQgdGhlIHJlc3BvbnNlIHRhcmdldCBpcyBzb2xkIG9uIGl0LiAqL1xuICBmaXJzdFJlc3BvbnNlQXQ6IHRpbWVzdGFtcCgnZmlyc3RfcmVzcG9uc2VfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqXG4gICAqIENTQVQsIDHigJM1LCBzZXQgYnkgdGhlIFRFTkFOVCBvbmNlIHRoZSBjYXNlIGlzIGNsb3NlZC4gTnVsbCA9IG5vdCByYXRlZCxcbiAgICogd2hpY2ggaXMgdGhlIHVzdWFsIHN0YXRlIGFuZCBtdXN0IHN0YXkgZGlzdGluZ3Vpc2hhYmxlIGZyb20gYSBiYWQgcmF0aW5nLlxuICAgKlxuICAgKiBMaXZlcyBoZXJlIHJhdGhlciB0aGFuIGluIGl0cyBvd24gdGFibGUgYmVjYXVzZSBhIGNhc2UgaGFzIGV4YWN0bHkgb25lXG4gICAqIHJhdGluZyDigJQgYSB0YWJsZSB3b3VsZCBidXkgYSBqb2luIGFuZCBhIHVuaXF1ZW5lc3MgY29uc3RyYWludCB0byBlbmZvcmNlXG4gICAqIHdoYXQgYSBjb2x1bW4gZ2V0cyBmb3IgZnJlZS4gRmlyc3QtcmVzcG9uc2UgbGF0ZW5jeSBzYXlzIHdoZXRoZXIgd2VcbiAgICogYW5zd2VyZWQgZmFzdDsgdGhpcyBpcyB0aGUgb25seSB0aGluZyB0aGF0IHNheXMgd2hldGhlciB0aGUgYW5zd2VyIGhlbHBlZCxcbiAgICogYW5kIGEgZGVzayBjYW4gaGl0IGV2ZXJ5IHRhcmdldCB3aGlsZSBiZWluZyBiYWQgYXQgc3VwcG9ydC5cbiAgICovXG4gIHNhdGlzZmFjdGlvbjogaW50ZWdlcignc2F0aXNmYWN0aW9uJyksXG4gIC8qKiBPcHRpb25hbCBmcmVlIHRleHQgd2l0aCB0aGUgcmF0aW5nLiBDYXBwZWQgYXQgdGhlIHJvdXRlLiAqL1xuICBzYXRpc2ZhY3Rpb25Db21tZW50OiB0ZXh0KCdzYXRpc2ZhY3Rpb25fY29tbWVudCcpLFxuICBzYXRpc2ZhY3Rpb25BdDogdGltZXN0YW1wKCdzYXRpc2ZhY3Rpb25fYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgLyoqIFNldCB3aGVuIHN0YXR1cyDihpIgYGF3YWl0aW5nX2N1c3RvbWVyYDsgdGhlIHBhdXNlIGFuY2hvci4gKi9cbiAgYXdhaXRpbmdTaW5jZTogdGltZXN0YW1wKCdhd2FpdGluZ19zaW5jZScsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICAvKipcbiAgICogQWNjdW11bGF0ZWQgc2Vjb25kcyBzcGVudCB3YWl0aW5nIG9uIHRoZSBjdXN0b21lci5cbiAgICpcbiAgICogQWdlaW5nIHN1YnRyYWN0cyB0aGlzLiBXaXRob3V0IGl0IGEgY2FzZSB3ZSBhbnN3ZXJlZCBpbiBhbiBob3VyLCB3aGVyZSB0aGVcbiAgICogdGVuYW50IHJlcGxpZWQgZm91ciBkYXlzIGxhdGVyLCByZWFkcyBhcyBhIGZvdXItZGF5IGNhc2Ug4oCUIGFuZCB0aGUgbWV0cmljXG4gICAqIFBoYXNlIDJiIGV4aXN0cyB0byBwcm9kdWNlIHJlcG9ydHMgYSBudW1iZXIgbm8gY3VzdG9tZXIgd2lsbCBhY2NlcHQuIEFuXG4gICAqIGFjY3VtdWxhdG9yIHBsdXMgdGhlIGN1cnJlbnQgYW5jaG9yIHN1cnZpdmVzIGEgY2FzZSBib3VuY2luZyBiZXR3ZWVuIHN0YXRlc1xuICAgKiByZXBlYXRlZGx5LCB3aGljaCByZXBsYXlpbmcgc3RhdHVzIGhpc3Rvcnkgd291bGQgbm90LlxuICAgKi9cbiAgYXdhaXRpbmdUb3RhbFNlY29uZHM6IGludGVnZXIoJ2F3YWl0aW5nX3RvdGFsX3NlY29uZHMnKS5kZWZhdWx0KDApLm5vdE51bGwoKSxcblxuICBjbG9zZWRBdDogdGltZXN0YW1wKCdjbG9zZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgY2xvc2VkQnk6IHRleHQoJ2Nsb3NlZF9ieScpLFxuXG4gIC8vIEF1ZGl0ICsgc29mdC1kZWxldGUsIHNhbWUgc2hhcGUgYXMgYG1lc3NhZ2VzYC5cbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5JykuZGVmYXVsdChTWVNURU1fT1JHX0lEKS5ub3ROdWxsKCksXG4gIGNyZWF0ZWRBdDogdGltZXN0YW1wKCdjcmVhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEJ5OiB0ZXh0KCd1cGRhdGVkX2J5JykuZGVmYXVsdChTWVNURU1fT1JHX0lEKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRBdDogdGltZXN0YW1wKCd1cGRhdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgaXNBY3RpdmU6IGJvb2xlYW4oJ2lzX2FjdGl2ZScpLmRlZmF1bHQodHJ1ZSkubm90TnVsbCgpLFxuICBkZWxldGVkQXQ6IHRpbWVzdGFtcCgnZGVsZXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxuICBkZWxldGVkQnk6IHRleHQoJ2RlbGV0ZWRfYnknKSxcbiAgcHVyZ2VBZnRlcjogdGltZXN0YW1wKCdwdXJnZV9hZnRlcicsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLFxufSwgKHRhYmxlKSA9PiAoe1xuICAvKipcbiAgICogVEhFIHF1ZXVlIHF1ZXJ5OiBldmVyeSBvcGVuIGNhc2UgYWNyb3NzIEFMTCB0ZW5hbnRzLCBvbGRlc3QgZmlyc3QuXG4gICAqXG4gICAqIFRoZSBvbmUgcXVlcnkgc2hhcGUgd2l0aCBubyBvcmcgcHJlZGljYXRlIHRvIG5hcnJvdyBpdCwgc28gaXQgaXMgYWxzbyB0aGVcbiAgICogb25seSBvbmUgdGhhdCBzY2Fucy4gUGFydGlhbCBiZWNhdXNlIHRoZSBxdWV1ZSBuZXZlciBhc2tzIGFib3V0IGNsb3NlZFxuICAgKiBjYXNlcyDigJQgd2hpY2ggYXJlIG1vc3Qgb2YgdGhlIHRhYmxlIHdpdGhpbiBhIG1vbnRoLiBNaXJyb3JzXG4gICAqIGBtZXNzYWdlX3B1cmdlX2lkeGAsIHdoaWNoIGlzIHBhcnRpYWwgZm9yIHRoZSBzYW1lIHJlYXNvbi5cbiAgICovXG4gIHF1ZXVlSWR4OiBpbmRleCgnc3VwcG9ydF9jYXNlX3F1ZXVlX2lkeCcpXG4gICAgLm9uKHRhYmxlLmNyZWF0ZWRBdClcbiAgICAud2hlcmUoc3FsYHN0YXR1cyBJTiAoJ29wZW4nLCAnYXdhaXRpbmdfc3VwcG9ydCcpIEFORCBkZWxldGVkX2F0IElTIE5VTExgKSxcblxuICAvKipcbiAgICogVGhlIG9uLWNhbGwgc3dlZXAncyBvbmx5IHF1ZXJ5OiBwcmVtaXVtIGNhc2VzIHdob3NlIGZpcnN0LXJlc3BvbnNlIHRhcmdldCBpc1xuICAgKiBhcHByb2FjaGluZyB3aXRoIG5vdGhpbmcgc3RhbXBlZCB5ZXQuXG4gICAqXG4gICAqIFBBUlRJQUwgYmVjYXVzZSB0aGUgdGljayBydW5zIGV2ZXJ5IGZpdmUgbWludXRlcyBmb3JldmVyIGFuZCB0aGUgcm93cyBpdFxuICAgKiB3YW50cyBhcmUgYSB0aW55LCBzaHJpbmtpbmcgZnJhY3Rpb24gb2YgdGhlIHRhYmxlIOKAlCB1bmFuc3dlcmVkIHByZW1pdW1cbiAgICogY2FzZXMuIFdpdGhvdXQgaXQgZXZlcnkgdGljayBpcyBhIHNjYW4sIGFuZCBpdCBpcyB0aGUgb25lIHF1ZXJ5IHdpdGggbm8gb3JnXG4gICAqIHByZWRpY2F0ZSB0byBuYXJyb3cgaXQuXG4gICAqXG4gICAqIGBsZXZlbGAgYW5kIE5PVCBgaXNfcHJlbWl1bWA6IHRoYXQgY29sdW1uIGxpdmVzIG9uIHN1cHBvcnRfQ09OVEFDVFMgYW5kXG4gICAqIG1hcmtzIGFuIHVwZ3JhZGVkIGNvbnRhY3QsIHdoaWxlIGEgY2FzZSBmcmVlemVzIHRoZSBvcGVuaW5nIGNvbnRhY3Qnc1xuICAgKiBlZmZlY3RpdmUgbGV2ZWwgYXQgb3Blbi4gVGhlIGNhc2UncyBvd24gcHJvbWlzZSBpcyBpdHMgYGxldmVsYCwgc29cbiAgICogdXBncmFkaW5nIGEgY29udGFjdCBsYXRlciBtdXN0IG5vdCBtb3ZlIGEgZGVhZGxpbmUgYWxyZWFkeSBwdWJsaXNoZWQgdG8gYVxuICAgKiBjdXN0b21lci5cbiAgICovXG4gIHJlc3BvbnNlRHVlSWR4OiBpbmRleCgnc3VwcG9ydF9jYXNlX3Jlc3BvbnNlX2R1ZV9pZHgnKVxuICAgIC5vbih0YWJsZS5yZXNwb25zZUR1ZUF0KVxuICAgIC53aGVyZShzcWxgbGV2ZWwgPSAnc3VwcG9ydF9wcmVtaXVtJyBBTkQgZmlyc3RfcmVzcG9uc2VfYXQgSVMgTlVMTCBBTkQgZGVsZXRlZF9hdCBJUyBOVUxMYCksXG5cbiAgLy8gQSB0ZW5hbnQgbGlzdGluZyBpdHMgb3duIGNhc2VzLlxuICBvcmdTdGF0dXNJZHg6IGluZGV4KCdzdXBwb3J0X2Nhc2Vfb3JnX3N0YXR1c19pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuc3RhdHVzKSxcbiAgLy8gVGhlIHJvbGxpbmctd2luZG93IGNhc2UgY291bnQgYmVoaW5kIHRoZSBGQUlSLVVTRSBhbGxvd2FuY2U6IGhvdyBtYW55IGNhc2VzXG4gIC8vIHRoaXMgYWNjb3VudCByYWlzZWQgaW4gdGhlIGxhc3QgTiBkYXlzLiBMZWFkaW5nIGBvcmdfaWRgIGJlY2F1c2UgdGhlIGNvdW50XG4gIC8vIGlzIGFsd2F5cyBzY29wZWQgdG8gYW4gYWNjb3VudCBzdWJ0cmVlLCB0aGVuIGBjcmVhdGVkX2F0YCBzbyB0aGUgd2luZG93IGlzIGFcbiAgLy8gcmFuZ2Ugc2NhbiByYXRoZXIgdGhhbiBhIGZpbHRlciBvdmVyIGV2ZXJ5IGNhc2UgdGhlIG9yZyBldmVyIHJhaXNlZC5cbiAgb3JnQ3JlYXRlZElkeDogaW5kZXgoJ3N1cHBvcnRfY2FzZV9vcmdfY3JlYXRlZF9pZHgnKS5vbih0YWJsZS5vcmdJZCwgdGFibGUuY3JlYXRlZEF0KSxcblxuICAvLyBcIldoYXQgYW0gSSBvbiB0aGUgaG9vayBmb3JcIiwgb25lIGVuZ2luZWVyLlxuICBhc3NpZ25lZUlkeDogaW5kZXgoJ3N1cHBvcnRfY2FzZV9hc3NpZ25lZF9pZHgnKVxuICAgIC5vbih0YWJsZS5hc3NpZ25lZFRvLCB0YWJsZS5zdGF0dXMpXG4gICAgLndoZXJlKHNxbGBhc3NpZ25lZF90byBJUyBOT1QgTlVMTGApLFxuXG4gIC8vIFwiTXkgY2FzZXNcIiBmb3IgYSBjb250YWN0LCBBTkQgdGhlIGxvb2t1cCB0aGF0IGZpbmRzIGEgZGVwYXJ0aW5nIGNvbnRhY3Qnc1xuICAvLyBvcGVuIGNhc2VzIHNvIHRoZXkgY2FuIGJlIHJlYXNzaWduZWQgaW5zdGVhZCBvZiBvcnBoYW5lZC5cbiAgdGVuYW50Q29udGFjdElkeDogaW5kZXgoJ3N1cHBvcnRfY2FzZV90ZW5hbnRfY29udGFjdF9pZHgnKVxuICAgIC5vbih0YWJsZS50ZW5hbnRDb250YWN0LCB0YWJsZS5zdGF0dXMpXG4gICAgLndoZXJlKHNxbGB0ZW5hbnRfY29udGFjdCBJUyBOT1QgTlVMTGApLFxuXG4gIC8vIENhc2UgaWRlbnRpdHksIHJlYWNoZWQgZnJvbSBhbnkgbWVzc2FnZSBpbiB0aGUgdGhyZWFkLlxuICB0aHJlYWRVcTogdW5pcXVlSW5kZXgoJ3N1cHBvcnRfY2FzZV90aHJlYWRfdXEnKS5vbih0YWJsZS50aHJlYWRJZCksXG5cbiAgLy8gVGhlIGN1c3RvbWVyLXF1b3RhYmxlIG51bWJlciBpcyB1bmlxdWUgcGVyIG9yZywgZW5mb3JjZWQgbm90IGFzc3VtZWQuXG4gIGRpc3BsYXlVcTogdW5pcXVlSW5kZXgoJ3N1cHBvcnRfY2FzZV9vcmdfbnVtYmVyX3VxJylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLmRpc3BsYXlOdW1iZXIpXG4gICAgLndoZXJlKHNxbGBkZWxldGVkX2F0IElTIE5VTExgKSxcbn0pKTtcblxuLyoqXG4gKiBQZXItb3JnIGFsbG9jYXRvciBmb3IgYHN1cHBvcnRfY2FzZXMuZGlzcGxheV9udW1iZXJgLlxuICpcbiAqIFBvc3RncmVzIHNlcXVlbmNlcyBhcmUgZ2xvYmFsIGFuZCBjYW5ub3QgYmUgcGVyLW9yZyB3aXRob3V0IG9uZSBzZXF1ZW5jZSBwZXJcbiAqIHRlbmFudCwgc28gdGhlIGNvdW50ZXIgaXMgYSByb3c6IGBVUERBVEUg4oCmIFNFVCBuZXh0X251bWJlciA9IG5leHRfbnVtYmVyICsgMVxuICogUkVUVVJOSU5HIG5leHRfbnVtYmVyYCBpbnNpZGUgdGhlIGNhc2UtaW5zZXJ0IHRyYW5zYWN0aW9uLCB3aGVyZSB0aGUgcm93IGxvY2tcbiAqIHNlcmlhbGlzZXMgY29uY3VycmVudCBvcGVucyB3aXRoaW4gb25lIG9yZy5cbiAqXG4gKiBAdGFibGUgc3VwcG9ydF9jYXNlX2NvdW50ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBzdXBwb3J0Q2FzZUNvdW50ZXIgPSBwZ1RhYmxlKCdzdXBwb3J0X2Nhc2VfY291bnRlcnMnLCB7XG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLnByaW1hcnlLZXkoKSxcbiAgbmV4dE51bWJlcjogaW50ZWdlcignbmV4dF9udW1iZXInKS5kZWZhdWx0KDEpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxufSk7XG5cbi8qKlxuICogVGhlIG1lbWJlcnMgYXV0aG9yaXNlZCB0byBvcGVuIHN1cHBvcnQgY2FzZXMg4oCUIHdoYXQgdGhlIHBlci1jb250YWN0IHByaWNlXG4gKiBiaWxscyBmb3IuXG4gKlxuICogVGhlIENPVU5UIGlzIGNhcHBlZCBhZ2FpbnN0IGVmZmVjdGl2ZSBgc3VwcG9ydENvbnRhY3RzYCBhdCBkZXNpZ25hdGlvbiB0aW1lLFxuICogaW4gdGhlIHNhbWUgc2hhcGUgc2VhdHMgYXJlIGNhcHBlZCBhdCBpbnZpdGUgdGltZS4gYHN1cHBvcnRDb250YWN0c2AgaGFzIGFcbiAqIHRpZXIgYmFzZSBvZiAwIGV2ZXJ5d2hlcmUsIHNvIGFuIG9yZyB3aXRoIG5vIHN1cHBvcnQgYWRkLW9uIGhhcyBubyBjb250YWN0c1xuICogYW5kIGNhbm5vdCBvcGVuIGEgY2FzZTogdGhlIHBheXdhbGwgaXMgYSBxdW90YSBjaGVjaywgbm90IGEgZmVhdHVyZSBmbGFnLlxuICpcbiAqIEB0YWJsZSBzdXBwb3J0X2NvbnRhY3RzXG4gKi9cbmV4cG9ydCBjb25zdCBzdXBwb3J0Q29udGFjdCA9IHBnVGFibGUoJ3N1cHBvcnRfY29udGFjdHMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgdXNlcklkOiB0ZXh0KCd1c2VyX2lkJykubm90TnVsbCgpLFxuICAvLyBXaG8gbm9taW5hdGVkIHRoZW0uIEF1ZGl0LXdvcnRoeTogYSBjb250YWN0IGlzIGEgcGFpZCwgcHJpdmlsZWdlZCBzbG90LlxuICBkZXNpZ25hdGVkQnk6IHRleHQoJ2Rlc2lnbmF0ZWRfYnknKS5ub3ROdWxsKCksXG4gIGRlc2lnbmF0ZWRBdDogdGltZXN0YW1wKCdkZXNpZ25hdGVkX2F0JywgeyB3aXRoVGltZXpvbmU6IHRydWUgfSkuZGVmYXVsdE5vdygpLm5vdE51bGwoKSxcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBjb250YWN0IGlzIFVQR1JBREVEIHRvIHByZW1pdW0g4oCUIDI0w5c3IGNvdmVyYWdlLCB0aGUgOC1ob3VyXG4gICAqIGFueS1kYXkgdGFyZ2V0LCBhbmQgdGhlIG9ubHkgY29udGFjdHMgd2hvIG1heSBkZWNsYXJlIGB1cmdlbnRgIHNldmVyaXR5LlxuICAgKlxuICAgKiBBIGNvbHVtbiBvbiB0aGUgY29udGFjdCByYXRoZXIgdGhhbiBhIGxldmVsIG9uIHRoZSBvcmcsIGJlY2F1c2UgdGhhdCBpcyB3aGF0XG4gICAqIHRoZSB1cGdyYWRlIG1vZGVsIG1lYW5zOiBhbiBhY2NvdW50IGhvbGRzIG9uZSBCQVNFTElORSBsZXZlbCBjb3ZlcmluZyBldmVyeVxuICAgKiBjb250YWN0IGFuZCB1cGdyYWRlcyBhIHN1YnNldC4gV2l0aG91dCB0aGlzIHRoZSBgc3VwcG9ydFByZW1pdW1Db250YWN0c2AgY2FwXG4gICAqIHdvdWxkIGdyYW50IGEgcXVvdGEgb3ZlciBub3RoaW5nIOKAlCB0aGVyZSB3b3VsZCBiZSBubyB3YXkgZm9yIGFueSBjb250YWN0IHRvXG4gICAqIGFjdHVhbGx5IGJlIHByZW1pdW0sIGFuZCB0aGUgY2FzZS1vcGVuIHBhdGggd291bGQgaGF2ZSBub3RoaW5nIHRvIHJlYWQuXG4gICAqXG4gICAqIFRoZSBjYXNlIGZyZWV6ZXMgdGhlIE9QRU5JTkcgQ09OVEFDVCdzIGVmZmVjdGl2ZSBsZXZlbCBhdCBvcGVuXG4gICAqIChgc3VwcG9ydF9jYXNlLmxldmVsYCksIHNvIGZsaXBwaW5nIHRoaXMgbGF0ZXIgbmV2ZXIgY2hhbmdlcyB0aGUgcHJvbWlzZSBvblxuICAgKiBhIGNhc2UgYWxyZWFkeSByYWlzZWQuXG4gICAqL1xuICBpc1ByZW1pdW06IGJvb2xlYW4oJ2lzX3ByZW1pdW0nKS5kZWZhdWx0KGZhbHNlKS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgcmV2b2tlZEF0OiB0aW1lc3RhbXAoJ3Jldm9rZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgcmV2b2tlZEJ5OiB0ZXh0KCdyZXZva2VkX2J5JyksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIE9uZSBsaXZlIGRlc2lnbmF0aW9uIHBlciAob3JnLCB1c2VyKS4gUGFydGlhbCBzbyBhIHJldm9rZWQgcm93IGRvZXMgbm90XG4gIC8vIGJsb2NrIHJlLWRlc2lnbmF0aW5nIHRoZSBzYW1lIHBlcnNvbiBsYXRlci5cbiAgb3JnVXNlclVxOiB1bmlxdWVJbmRleCgnc3VwcG9ydF9jb250YWN0X29yZ191c2VyX3VxJylcbiAgICAub24odGFibGUub3JnSWQsIHRhYmxlLnVzZXJJZClcbiAgICAud2hlcmUoc3FsYGlzX2FjdGl2ZSA9IHRydWVgKSxcbiAgLy8gQ291bnRpbmcgYW4gb3JnJ3MgbGl2ZSBjb250YWN0cyBhZ2FpbnN0IGl0cyBjYXAsIGFuZCBsaXN0aW5nIHRoZW0gZm9yIHRoZVxuICAvLyB0ZW5hbnQtc2lkZSBvd25lciBwaWNrZXIuXG4gIG9yZ0FjdGl2ZUlkeDogaW5kZXgoJ3N1cHBvcnRfY29udGFjdF9vcmdfYWN0aXZlX2lkeCcpLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS5pc0FjdGl2ZSksXG4gIC8vIFRoZSBwcmVtaXVtIFNVQlNFVCwgY291bnRlZCBhZ2FpbnN0IGBzdXBwb3J0UHJlbWl1bUNvbnRhY3RzYCBvbiBldmVyeVxuICAvLyB1cGdyYWRlLiBQYXJ0aWFsIG9uIGJvdGggZmxhZ3MgYmVjYXVzZSB0aGF0IGlzIHRoZSBvbmx5IHF1ZXN0aW9uIGFza2VkIG9mXG4gIC8vIGl0OiBob3cgbWFueSBsaXZlIGNvbnRhY3RzIGluIHRoaXMgc2NvcGUgYXJlIHVwZ3JhZGVkLlxuICBvcmdQcmVtaXVtSWR4OiBpbmRleCgnc3VwcG9ydF9jb250YWN0X29yZ19wcmVtaXVtX2lkeCcpXG4gICAgLm9uKHRhYmxlLm9yZ0lkLCB0YWJsZS51c2VySWQpXG4gICAgLndoZXJlKHNxbGBpc19hY3RpdmUgPSB0cnVlIEFORCBpc19wcmVtaXVtID0gdHJ1ZWApLFxufSkpO1xuXG4vKipcbiAqIENhbm5lZCBzdGFmZiByZXBsaWVzIOKAlCBhIHNoYXJlZCBsaWJyYXJ5IG9mIGFuc3dlcnMgdGhlIGRlc2sgcmV1c2VzLlxuICpcbiAqIFNZU1RFTS1XSURFLCBub3QgcGVyLXRlbmFudCwgYW5kIGRlbGliZXJhdGVseSBzbzogdGhlc2UgYXJlIHRoZSB2ZW5kb3IncyBvd25cbiAqIHdvcmRpbmcgZm9yIHJlY3VycmluZyBxdWVzdGlvbnMsIGF1dGhvcmVkIG9uY2UgYW5kIHVzZWQgYWNyb3NzIGV2ZXJ5XG4gKiBjdXN0b21lci4gVGhlcmUgaXMgbm8gYG9yZ19pZGAgYmVjYXVzZSBzY29waW5nIHRoZW0gcGVyIHRlbmFudCB3b3VsZCBiZSB0aGVcbiAqIG9wcG9zaXRlIG9mIHRoZSBwb2ludCDigJQgdGhlIHZhbHVlIGlzIHRoYXQgdGhlIGFuc3dlciB0byBcImhvdyBkbyBJIHJvdGF0ZSBhXG4gKiBzZXJ2aWNlIGtleVwiIGlzIHdyaXR0ZW4gd2VsbCBvbmNlIHJhdGhlciB0aGFuIHJldHlwZWQgYmFkbHkgZmlmdHkgdGltZXMuXG4gKlxuICogVGhhdCBhbHNvIG1lYW5zIFJMUyBkb2VzIG5vdCBhcHBseTogZXZlcnkgcm93IGlzIHZpc2libGUgdG8gdGhlIHN0YWZmIHdobyBjYW5cbiAqIHJlYWNoIHRoZSBxdWV1ZSwgYW5kIHRvIG5vYm9keSBlbHNlLiBUaGUgcm91dGVzIGFyZSBzeXN0ZW0tYWRtaW4gZ2F0ZWQgb25cbiAqIGJvdGggcmVhZCBhbmQgd3JpdGUgZm9yIGV4YWN0bHkgdGhhdCByZWFzb24uXG4gKlxuICogU29mdC1kZWxldGVkIHJhdGhlciB0aGFuIHJlbW92ZWQsIGJlY2F1c2UgYSByZXRpcmVkIHRlbXBsYXRlIGlzIHN0aWxsIHRoZVxuICogZXhwbGFuYXRpb24gb2Ygd2hhdCBhIHBhc3QgcmVwbHkgc2FpZC5cbiAqXG4gKiBAdGFibGUgc3VwcG9ydF9jYW5uZWRfcmVzcG9uc2VzXG4gKi9cbmV4cG9ydCBjb25zdCBzdXBwb3J0Q2FubmVkUmVzcG9uc2UgPSBwZ1RhYmxlKCdzdXBwb3J0X2Nhbm5lZF9yZXNwb25zZXMnLCB7XG4gIGlkOiB1dWlkKCdpZCcpLnByaW1hcnlLZXkoKS5kZWZhdWx0UmFuZG9tKCksXG4gIC8qKiBTaG9ydCBsYWJlbCB0aGUgcGlja2VyIGxpc3RzLiAqL1xuICB0aXRsZTogdmFyY2hhcigndGl0bGUnLCB7IGxlbmd0aDogMjAwIH0pLm5vdE51bGwoKSxcbiAgYm9keTogdGV4dCgnYm9keScpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIHVwZGF0ZWRCeTogdGV4dCgndXBkYXRlZF9ieScpLm5vdE51bGwoKSxcbiAgdXBkYXRlZEF0OiB0aW1lc3RhbXAoJ3VwZGF0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KS5kZWZhdWx0Tm93KCkubm90TnVsbCgpLFxuICBpc0FjdGl2ZTogYm9vbGVhbignaXNfYWN0aXZlJykuZGVmYXVsdCh0cnVlKS5ub3ROdWxsKCksXG59LCAodGFibGUpID0+ICh7XG4gIC8vIFRoZSBwaWNrZXIncyBvbmx5IHF1ZXJ5OiBsaXZlIHRlbXBsYXRlcywgYWxwaGFiZXRpY2FsLlxuICBhY3RpdmVUaXRsZUlkeDogaW5kZXgoJ3N1cHBvcnRfY2FubmVkX2FjdGl2ZV9pZHgnKS5vbih0YWJsZS5pc0FjdGl2ZSwgdGFibGUudGl0bGUpLFxufSkpO1xuXG4vKipcbiAqIENTQVQ6IHRoZSBjdXN0b21lcidzIHZlcmRpY3Qgb24gYSBjbG9zZWQgY2FzZS5cbiAqXG4gKiBBIENPTFVNTiBTRVQgb24gdGhlIGNhc2UgcmF0aGVyIHRoYW4gaXRzIG93biB0YWJsZSwgdW5saWtlIG5vdGVzLiBUaGUgcmVhc29uXG4gKiBpcyBjYXJkaW5hbGl0eSwgbm90IGNvbnZlbmllbmNlOiBhIGNhc2UgaGFzIG1hbnkgbm90ZXMgYW5kIGV4YWN0bHkgb25lXG4gKiBzYXRpc2ZhY3Rpb24gcmF0aW5nLCBzbyBhIHRhYmxlIHdvdWxkIGJ1eSBhbiBleHRyYSBqb2luIGFuZCBhIHVuaXF1ZW5lc3NcbiAqIGNvbnN0cmFpbnQgdG8gZW5mb3JjZSB3aGF0IGEgY29sdW1uIGdldHMgZm9yIGZyZWUuXG4gKlxuICogV2h5IGl0IG1hdHRlcnMgbW9yZSBoZXJlIHRoYW4gaW4gbW9zdCBwcm9kdWN0czogdGhlIHRoaW5nIGJlaW5nIFNPTEQgaXMgYVxuICogcmVzcG9uc2UgdGltZSwgYW5kIGZpcnN0LXJlc3BvbnNlIGxhdGVuY3kgb25seSBtZWFzdXJlcyB3aGV0aGVyIHdlIGFuc3dlcmVkXG4gKiBmYXN0IOKAlCBub3Qgd2hldGhlciB0aGUgYW5zd2VyIHdhcyBhbnkgZ29vZC4gQSBkZXNrIGNhbiBoaXQgZXZlcnkgdGFyZ2V0IGFuZFxuICogc3RpbGwgYmUgYmFkIGF0IHN1cHBvcnQsIGFuZCB3aXRob3V0IHRoaXMgbm90aGluZyBpbiB0aGUgc3lzdGVtIHdvdWxkIG5vdGljZS5cbiAqXG4gKiBAdGFibGUgc3VwcG9ydF9jYXNlcyAoY29sdW1ucylcbiAqL1xuXG4vKipcbiAqIFN0YWZmLW9ubHkgbm90ZXMgb24gYSBjYXNlLlxuICpcbiAqIEEgU0VQQVJBVEUgVEFCTEUgcmF0aGVyIHRoYW4gYSBmbGFnIG9uIGBtZXNzYWdlc2AsIGFuZCB0aGUgcmVhc29uIGlzIHRoZVxuICogZmFpbHVyZSBtb2RlOiBgbWVzc2FnZXNgIGlzIHJlYWQgdGhyb3VnaCBvbmUgc2hhcmVkIHZpc2liaWxpdHkgcHJlZGljYXRlXG4gKiAoYGJ1aWxkTWVzc2FnZUNvbmRpdGlvbnNgKSwgc28gYSBmbGFnIG1lYW5zIGV2ZXJ5IHJlYWQgcGF0aCB0aGF0IGZvcmdldHMgdGhlXG4gKiBleHRyYSBjb25kaXRpb24gbGVha3MgYW4gaW50ZXJuYWwgbm90ZSB0byB0aGUgdGVuYW50LiBBIHNlcGFyYXRlIHRhYmxlIGNhbm5vdFxuICogbGVhayBieSBvbWlzc2lvbiDigJQgaXQgaGFzIHRvIGJlIGpvaW5lZCBkZWxpYmVyYXRlbHkuXG4gKlxuICogQHRhYmxlIHN1cHBvcnRfY2FzZV9ub3Rlc1xuICovXG5leHBvcnQgY29uc3Qgc3VwcG9ydENhc2VOb3RlID0gcGdUYWJsZSgnc3VwcG9ydF9jYXNlX25vdGVzJywge1xuICBpZDogdXVpZCgnaWQnKS5wcmltYXJ5S2V5KCkuZGVmYXVsdFJhbmRvbSgpLFxuICBjYXNlSWQ6IHV1aWQoJ2Nhc2VfaWQnKS5ub3ROdWxsKCksXG4gIC8vIERlbm9ybWFsaXNlZCBzbyBhIG5vdGUgY2FuIG5ldmVyIGJlIHNlcnZlZCB3aXRob3V0IGl0cyB0ZW5hbnQgc2NvcGUuXG4gIG9yZ0lkOiB2YXJjaGFyKCdvcmdfaWQnLCB7IGxlbmd0aDogMjU1IH0pLm5vdE51bGwoKSxcbiAgY29udGVudDogdGV4dCgnY29udGVudCcpLm5vdE51bGwoKSxcbiAgY3JlYXRlZEJ5OiB0ZXh0KCdjcmVhdGVkX2J5Jykubm90TnVsbCgpLFxuICBjcmVhdGVkQXQ6IHRpbWVzdGFtcCgnY3JlYXRlZF9hdCcsIHsgd2l0aFRpbWV6b25lOiB0cnVlIH0pLmRlZmF1bHROb3coKS5ub3ROdWxsKCksXG4gIGlzQWN0aXZlOiBib29sZWFuKCdpc19hY3RpdmUnKS5kZWZhdWx0KHRydWUpLm5vdE51bGwoKSxcbiAgZGVsZXRlZEF0OiB0aW1lc3RhbXAoJ2RlbGV0ZWRfYXQnLCB7IHdpdGhUaW1lem9uZTogdHJ1ZSB9KSxcbiAgZGVsZXRlZEJ5OiB0ZXh0KCdkZWxldGVkX2J5JyksXG59LCAodGFibGUpID0+ICh7XG4gIGNhc2VJZHg6IGluZGV4KCdzdXBwb3J0X2Nhc2Vfbm90ZV9jYXNlX2lkeCcpLm9uKHRhYmxlLmNhc2VJZCwgdGFibGUuaXNBY3RpdmUpLFxufSkpO1xuXG4vKiogVHlwZVNjcmlwdCB0eXBlcyByZXByZXNlbnRpbmcgZGF0YWJhc2Ugcm93cyAqL1xuZXhwb3J0IHR5cGUgU3VwcG9ydENhc2UgPSB0eXBlb2Ygc3VwcG9ydENhc2UuJGluZmVyU2VsZWN0O1xuZXhwb3J0IHR5cGUgU3VwcG9ydENhc2VJbnNlcnQgPSB0eXBlb2Ygc3VwcG9ydENhc2UuJGluZmVySW5zZXJ0O1xuZXhwb3J0IHR5cGUgU3VwcG9ydENhc2VVcGRhdGUgPSBQYXJ0aWFsPE9taXQ8U3VwcG9ydENhc2VJbnNlcnQsICdpZCcgfCAnY3JlYXRlZEF0JyB8ICdjcmVhdGVkQnknIHwgJ29yZ0lkJyB8ICd0aHJlYWRJZCcgfCAnZGlzcGxheU51bWJlcic+PjtcblxuZXhwb3J0IHR5cGUgU3VwcG9ydENhc2VDb3VudGVyID0gdHlwZW9mIHN1cHBvcnRDYXNlQ291bnRlci4kaW5mZXJTZWxlY3Q7XG5cbmV4cG9ydCB0eXBlIFN1cHBvcnRDb250YWN0ID0gdHlwZW9mIHN1cHBvcnRDb250YWN0LiRpbmZlclNlbGVjdDtcbmV4cG9ydCB0eXBlIFN1cHBvcnRDb250YWN0SW5zZXJ0ID0gdHlwZW9mIHN1cHBvcnRDb250YWN0LiRpbmZlckluc2VydDtcblxuZXhwb3J0IHR5cGUgU3VwcG9ydENhc2VOb3RlID0gdHlwZW9mIHN1cHBvcnRDYXNlTm90ZS4kaW5mZXJTZWxlY3Q7XG5leHBvcnQgdHlwZSBTdXBwb3J0Q2FzZU5vdGVJbnNlcnQgPSB0eXBlb2Ygc3VwcG9ydENhc2VOb3RlLiRpbmZlckluc2VydDtcbiJdfQ==
@@ -247,4 +247,4 @@ export async function withTenantTxRead(fn) {
247
247
  return fn(tx);
248
248
  });
249
249
  }
250
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS90ZW5hbmN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNsQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBbUIsTUFBTSxlQUFlLENBQUM7QUFFNUUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFlOUMsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDeEQsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxNQUFNLElBQUksR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUN2RSx1RUFBdUU7SUFDdkUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ25FLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMscUJBQXFCO0lBQzVCLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMs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QUNkLEdBQUcsQ0FBQSxtQ0FBbUMsS0FBSywwQ0FBMEMsWUFBWSw0Q0FBNEMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FDakwsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxFQUFFLENBQUMsT0FBTyxDQUNkLEdBQUcsQ0FBQSxtQ0FBbUMsS0FBSywwQ0FBMEMsWUFBWSxTQUFTLENBQzNHLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGVuYW50LWNvbnRleHQgcGx1bWJpbmcgZm9yIFBvc3RncmVzIHJvdy1sZXZlbCBzZWN1cml0eS5cbiAqXG4gKiBCYWNrZ3JvdW5kOiBwb3N0Z3Jlcy1pbml0LnNxbCBpbnN0YWxscyBSTFMgcG9saWNpZXMgb24gZXZlcnkgdXNlci1kYXRhXG4gKiB0YWJsZSB0aGF0IGNvbnN1bHQgdHdvIHNlc3Npb24gR1VDcyDigJQgYGFwcC5vcmdfaWRgIGFuZCBgYXBwLmlzX3N5c2FkbWluYC5cbiAqIEV2ZXJ5IHRlbmFudCB0YWJsZSBpcyBgRk9SQ0UgUk9XIExFVkVMIFNFQ1VSSVRZYCwgc28gdGhlIHBvbGljaWVzIGVuZm9yY2VcbiAqIGV2ZW4gZm9yIHRoZSAob3duaW5nKSBjb25uZWN0aW9uIHVzZXIg4oCUIGEgcXVlcnkgYWdhaW5zdCBvbmUgbXVzdCBydW4gaW5zaWRlIGFcbiAqIHRyYW5zYWN0aW9uIHRoYXQgaGFzIFNFVCBMT0NBTCdkIGJvdGggR1VDcyBvciBpdCByZXR1cm5zIHplcm8gcm93cyBmb3JcbiAqIG5vbi1zeXNhZG1pbnMgKGFuZCBtYXkgZmFpbCB0byB3cml0ZSBmb3IgYW55IGNhbGxlcikuIFRoZSBjcm9zcy1vcmcgcGx1Z2luXG4gKiBlY29zeXN0ZW0gY2F0YWxvZyB0YWJsZXMgY2FycnkgYSBwZXJtaXNzaXZlIGFwcC1yb2xlIHBvbGljeSBpbnN0ZWFkLlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIHRoZSBzZWFtLlxuICpcbiAqICAgMS4gYHRlbmFudENvbnRleHRgIChBc3luY0xvY2FsU3RvcmFnZSkgY2FycmllcyBge29yZ0lkLCBpc1N1cGVyQWRtaW59YFxuICogICAgICBkb3duIHRoZSBjYWxsIGNoYWluIHdpdGhvdXQgcHJvcC1kcmlsbGluZy4gU2V0IG9uY2UgYXQgdGhlIHJlcXVlc3RcbiAqICAgICAgYm91bmRhcnk7IHJlYWRhYmxlIGZyb20gYW55d2hlcmUuXG4gKlxuICogICAyLiBgd2l0aFRlbmFudFR4KGZuKWAgb3BlbnMgYSB0cmFuc2FjdGlvbiwgU0VUIExPQ0FMJ3MgYm90aCBHVUNzIGZyb21cbiAqICAgICAgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQsIHRoZW4gaW52b2tlcyBgZm4odHgpYC4gU2VydmljZXMgbWlncmF0ZSBvbmVcbiAqICAgICAgYXQgYSB0aW1lIGJ5IHdyYXBwaW5nIHRoZWlyIGV4aXN0aW5nIGRyaXp6bGUgY2FsbHMgaW4gdGhpcyBoZWxwZXIg4oCUXG4gKiAgICAgIGBkYi5zZWxlY3QoKS5mcm9tKC4uLilgIGJlY29tZXMgYHdpdGhUZW5hbnRUeCh0eCA9PiB0eC5zZWxlY3QoKS5mcm9tKC4uLikpYC5cbiAqXG4gKiAgIDMuIGBydW5XaXRoVGVuYW50Q29udGV4dChjdHgsIGZuKWAgaXMgdGhlIEV4cHJlc3MtbWlkZGxld2FyZS1zaWRlXG4gKiAgICAgIGJvb2tlbmQgdGhhdCBlc3RhYmxpc2hlcyB0aGUgQXN5bmNMb2NhbFN0b3JhZ2Ugc2NvcGUgZm9yIHRoZSByZXF1ZXN0LlxuICpcbiAqIE1pZ3JhdGlvbiBvcmRlcjpcbiAqICAgLSBGaXJzdCBhZG9wdGVyczogbmV3bHktd3JpdHRlbiBzZXJ2aWNlcyAoZGFzaGJvYXJkLCBhbGVydC1kZXN0aW5hdGlvbilcbiAqICAgICB3aGVyZSB0aGUgY2hhbmdlIGlzIG1lY2hhbmljYWwuXG4gKiAgIC0gVGhlbiBoaWdoLXdyaXRlIHNlcnZpY2VzIChwbHVnaW4sIHBpcGVsaW5lKS4gU29hayBlYWNoIG9uZSBiZWZvcmVcbiAqICAgICBmbGlwcGluZyB0aGUgdW5kZXJseWluZyB0YWJsZSB0byBGT1JDRS5cbiAqICAgLSBhZG1pbl9hdWRpdF9sb2cgdXNlcyBhIHN5c2FkbWluLW9ubHkgcG9saWN5IOKAlCBzeXNhZG1pbiBwYXRocyBtdXN0XG4gKiAgICAgYWxzbyBzZXQgYGFwcC5pc19zeXNhZG1pbiA9ICd0cnVlJ2Agb3IgdGhleSdsbCBsb3NlIGFjY2VzcyB0byBpdC5cbiAqL1xuXG5pbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gJ25vZGU6YXN5bmNfaG9va3MnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBlbWl0Q291bnRlciwgZW52SW50IH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgc3FsIH0gZnJvbSAnZHJpenpsZS1vcm0nO1xuaW1wb3J0IHsgZGIgfSBmcm9tICcuL3Bvc3RncmVzLWNvbm5lY3Rpb24uanMnO1xuaW1wb3J0IHsgZ2V0UmVhZERiLCBnZXRSZWFkUG9vbCB9IGZyb20gJy4vcmVhZC1jb25uZWN0aW9uLmpzJztcbmltcG9ydCB7IGxhZ1ZlcmRpY3QsIG1heWJlU2FtcGxlTGFnLCB0eXBlIExhZ1ZlcmRpY3QgfSBmcm9tICcuL3JlYWQtbGFnLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCd0ZW5hbnQtY29udGV4dCcpO1xuXG4vKipcbiAqIEJlaGF2aW9yIHdoZW4gYHdpdGhUZW5hbnRUeGAgaXMgaW52b2tlZCBvdXRzaWRlIGFueSBgcnVuV2l0aFRlbmFudENvbnRleHRgXG4gKiBzY29wZS4gVGhlIGVmZmVjdGl2ZSBkZWZhdWx0IGlzIGZhaWwtZmFzdCAoJ3N0cmljdCcpIGluIHByb2R1Y3Rpb24gc28gYVxuICogbWlzc2luZyB0ZW5hbnQgc2NvcGUgc3VyZmFjZXMgYXQgdGhlIGJhZCBjYWxsIHNpdGUgaW5zdGVhZCBvZiBzaWxlbnRseVxuICogcnVubmluZyB3aXRoIGVtcHR5IFJMUyBHVUNzOyBvdXRzaWRlIHByb2R1Y3Rpb24gaXQgZGVmYXVsdHMgdG8gJ3dhcm4nIHNvXG4gKiB1bi1hdWRpdGVkIGRldi90ZXN0IHBhdGhzIGtlZXAgd29ya2luZyBidXQgbG9nIGFuIGFjdGlvbmFibGUgdHJhY2UuIEFuXG4gKiBleHBsaWNpdCBSTFNfQ09OVEVYVF9NT0RFIGVudiBvdmVycmlkZSBhbHdheXMgd2lucy5cbiAqXG4gKiAnc2lsZW50JyBpcyBrZXB0IGZvciB0ZXN0cyBhbmQgc2NyaXB0cyB0aGF0IGludGVudGlvbmFsbHkgZW50ZXIgdGhlIERCXG4gKiB3aXRob3V0IGNvbnRleHQgKGUuZy4gaW50ZWdyYXRpb24gdGVzdCBzZXR1cCB0aGF0IHJ1bnMgYXMgdGhlIGNvbm5lY3Rpb25cbiAqIG93bmVyIGJlZm9yZSBhbnkgdGVuYW50IGlzIHByb3Zpc2lvbmVkKS5cbiAqL1xudHlwZSBDb250ZXh0TW9kZSA9ICdzaWxlbnQnIHwgJ3dhcm4nIHwgJ3N0cmljdCc7XG5mdW5jdGlvbiBnZXRDb250ZXh0TW9kZSgpOiBDb250ZXh0TW9kZSB7XG4gIGNvbnN0IHJhdyA9IHByb2Nlc3MuZW52LlJMU19DT05URVhUX01PREU/LnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYXcgPT09ICdzaWxlbnQnIHx8IHJhdyA9PT0gJ3dhcm4nIHx8IHJhdyA9PT0gJ3N0cmljdCcpIHJldHVybiByYXc7XG4gIC8vIE5vIGV4cGxpY2l0IG92ZXJyaWRlOiBmYWlsLWZhc3QgaW4gcHJvZHVjdGlvbiwgd2FybiBldmVyeXdoZXJlIGVsc2UuXG4gIHJldHVybiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nID8gJ3N0cmljdCcgOiAnd2Fybic7XG59XG5cbi8qKlxuICogUGVyLXN0YXRlbWVudCBzZXJ2ZXItc2lkZSB0aW1lb3V0IChtcykgYXBwbGllZCBJTlNJREUgZXZlcnkgYHdpdGhUZW5hbnRUeGBcbiAqIHRyYW5zYWN0aW9uLCBuZXh0IHRvIHRoZSBSTFMgR1VDcy4gYHdpdGhUZW5hbnRUeGAgaXMgdGhlIHJlYWwgcXVlcnkgcGF0aCBmb3JcbiAqIGFsbCBSTFMvQ1JVRCByZWFkcyBhbmQgd3JpdGVzLCBzbyB0aGlzIGlzIHdoZXJlIHRoZSBEQi1zaWRlIGd1YXJkIGJlbG9uZ3MgKHRoZVxuICogb2xkIGBDb25uZWN0aW9uLnRyYW5zYWN0aW9uYCB3cmFwcGVyIHRoYXQgc2V0IGl0IGlzIGRlYWQg4oCUIHNlZVxuICogcG9zdGdyZXMtY29ubmVjdGlvbi50cykuIEJvdW5kcyBhIHJ1bmF3YXkgcXVlcnkgc28gaXQgY2FuJ3QgaG9sZCBhIHBvb2xlZFxuICogY29ubmVjdGlvbiBvcGVuIGluZGVmaW5pdGVseS4gRW52LWNvbmZpZ3VyYWJsZSB2aWEgYERCX1NUQVRFTUVOVF9USU1FT1VUX01TYFxuICogKGRlZmF1bHQgMzBzKTsgc2V0IHRvIGAwYCB0byBkaXNhYmxlIHRoZSB0aW1lb3V0LlxuICovXG5mdW5jdGlvbiBnZXRTdGF0ZW1lbnRUaW1lb3V0TXMoKTogbnVtYmVyIHtcbiAgY29uc3QgbXMgPSBlbnZJbnQoJ0RCX1NUQVRFTUVOVF9USU1FT1VUX01TJywgMzBfMDAwKTtcbiAgcmV0dXJuIG1zID49IDAgPyBtcyA6IDMwXzAwMDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW5hbnRDb250ZXh0IHtcbiAgLyoqIENhbGxlcidzIG9yZy4gVW5kZWZpbmVkIGZvciB1bi1hdXRoZW50aWNhdGVkIC8gc3lzdGVtIGpvYnMuICovXG4gIG9yZ0lkPzogc3RyaW5nO1xuICAvKiogQ2FsbGVyJ3MgdXNlciBpZC4gTm90IHVzZWQgZm9yIFJMUyDigJQgUG9zdGdyZXMgcG9saWNpZXMgYXJlIG9yZy1ncmFpbmVkLFxuICAgKiAgd2l0aCBubyBwZXItdXNlciBzZXNzaW9uIEdVQyDigJQgYnV0IGNhcnJpZWQgc28gYXBwLWxheWVyIHByZWRpY2F0ZXMgd2l0aCBhXG4gICAqICBQRVItVVNFUiBydW5nIChwaXBlbGluZSB0ZW1wbGF0ZXMnIGBwcml2YXRlYCB2aXNpYmlsaXR5KSBjYW4gcmVzb2x2ZSBcIndob1xuICAgKiAgaXMgYXNraW5nXCIgb24gcGF0aHMgdGhhdCBoYXZlIG5vd2hlcmUgdG8gcGFzcyBpdCwgbm90YWJseSBDcnVkU2VydmljZSdzXG4gICAqICBgd3JpdGVDb25kaXRpb25zYC4gQWJzZW50IGZvciBzeXN0ZW0gam9icywgd2hpY2ggaXMgdGhlIGZhaWwtY2xvc2VkIGNhc2U6XG4gICAqICBubyB2aWV3ZXIg4oeSIG5vIHByaXZhdGUgcm93cy4gKi9cbiAgdXNlcklkPzogc3RyaW5nO1xuICAvKiogVHJ1ZSB3aGVuIHRoZSBjYWxsZXIgaXMgYSBzeXNhZG1pbiAoc3lzdGVtLW9yZyBhZG1pbikuIEJ5cGFzc2VzIFJMU1xuICAgKiAgcG9saWNpZXMgdmlhIHRoZSBzeXNhZG1pbi1ieXBhc3MgYnJhbmNoIGluIGBjdXJyZW50X2lzX3N5c2FkbWluKClgLiAqL1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG4gIC8qKiBPcmcg4oaSIHRlYW0gaGllcmFyY2h5OiB0aGUgY2FsbGVyJ3MgYWN0aXZlLW9yZyBwYXJlbnQgKHByZXNlbnQgb25seSB3aGVuIHRoZVxuICAgKiAgYWN0aXZlIG9yZyBpcyBhIHRlYW0pLiBOb3QgdXNlZCBmb3IgUkxTOyBjYXJyaWVkIHNvIGRvd25zdHJlYW0gc2lkZS1lZmZlY3RzXG4gICAqICAoZS5nLiBlbnRpdHktZXZlbnQgY29tcGxpYW5jZSBldmFsKSBjYW4gaG9ub3IgcGFyZW50IGBwcm9wYWdhdGVUb0NoaWxkcmVuYFxuICAgKiAgcnVsZXMgd2l0aG91dCBhIHJlcXVlc3QgaW4gc2NvcGUuICovXG4gIHBhcmVudE9yZ0lkPzogc3RyaW5nO1xuICAvKipcbiAgICogU2V0IG9uY2UgdGhpcyByZXF1ZXN0IGhhcyBvcGVuZWQgYSBQUklNQVJZIHRyYW5zYWN0aW9uLCBpLmUuIG1heSBoYXZlXG4gICAqIHdyaXR0ZW4uIFN1YnNlcXVlbnQgYHdpdGhUZW5hbnRUeFJlYWRgIGNhbGxzIGluIHRoZSBzYW1lIHJlcXVlc3QgdGhlbiBnbyB0b1xuICAgKiB0aGUgcHJpbWFyeSB0b28sIHNvIGEgaGFuZGxlciBjYW5ub3QgcmVhZCBpdHMgb3duIHdyaXRlIG9mZiBhIHJlcGxpY2EgdGhhdFxuICAgKiBoYXMgbm90IHJlcGxheWVkIGl0IHlldC5cbiAgICpcbiAgICogRGVsaWJlcmF0ZWx5IHNldCBieSBgd2l0aFRlbmFudFR4YCByYXRoZXIgdGhhbiBieSB3cml0ZSBjYWxsIHNpdGVzOiB0aGF0XG4gICAqIHBhdGggaXMgdGhlIG9uZSB0aGF0IGNhbiB3cml0ZSwgaXQgbmVlZHMgbm8gcGVyLWNhbGwtc2l0ZSBkaXNjaXBsaW5lLCBhbmRcbiAgICogYmVpbmcgd3JvbmcgaW4gdGhpcyBkaXJlY3Rpb24gb25seSBjb3N0cyBhIHJlcGxpY2EgaGl0LiBNdXRhdGVkIGluIHBsYWNlIG9uXG4gICAqIHRoZSBBc3luY0xvY2FsU3RvcmFnZSBzdG9yZSDigJQgdGhlIHN0b3JlIGlzIHBlci1yZXF1ZXN0LCBzbyB0aGlzIGNhbm5vdCBsZWFrXG4gICAqIGJldHdlZW4gcmVxdWVzdHMuXG4gICAqXG4gICAqIFNDT1BFOiB0aGlzIGZsYWcgY292ZXJzIHJlYWRzIEFGVEVSIGEgd3JpdGUgSU4gVEhFIFNBTUUgUkVRVUVTVC4gVGhlXG4gICAqIG5leHQtcmVxdWVzdCBjYXNlIChQT1NULCB0aGVuIGEgcGFnZSByZWxvYWQgaXNzdWluZyBHRVQpIG5lZWRzIHNoYXJlZCBzdGF0ZVxuICAgKiBhbmQgaXMgaGFuZGxlZCBieSBhcGktc2VydmVyJ3MgYHdyaXRlLXBpbi50c2AsIHdoaWNoIHJlbWVtYmVycyBpbiBSZWRpc1xuICAgKiB0aGF0IGFuIG9yZyB3cm90ZSByZWNlbnRseSBhbmQgUFJFLVNFVFMgdGhpcyBzYW1lIGZsYWcgb24gdGhlIG5leHRcbiAgICogcmVxdWVzdCdzIGNvbnRleHQg4oCUIG9uZSBtZWNoYW5pc20gYW5kIG9uZSBjb2RlIHBhdGggcmF0aGVyIHRoYW4gdHdvLiBJdFxuICAgKiBmYWlscyBjbG9zZWQgKG5vIFJlZGlzLCBvciBhbiB1bnJlYWNoYWJsZSBvbmUsIHJvdXRlcyByZWFkcyB0byB0aGUgcHJpbWFyeSlcbiAgICogYW5kIHNob3J0LWNpcmN1aXRzIGVudGlyZWx5IHdoZW4gbm8gcmVhZCByZXBsaWNhIGlzIGNvbmZpZ3VyZWQuXG4gICAqL1xuICBtYXlIYXZlV3JpdHRlbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGVyLXJlcXVlc3QgdGVuYW50IGNvbnRleHQuIFBvcHVsYXRlZCBieSBFeHByZXNzIG1pZGRsZXdhcmUgb25jZSB0aGUgSldUXG4gKiBpcyB2YWxpZGF0ZWQ7IGNvbnN1bWVkIGJ5IGB3aXRoVGVuYW50VHhgIGFuZCBhbnkgaGVscGVyIHRoYXQgbmVlZHMgdG9cbiAqIGtub3cgXCJ3aG8gaXMgdGhlIGNhbGxlclwiIHdpdGhvdXQgcmUtZGVyaXZpbmcgZnJvbSB0aGUgcmVxdWVzdCBvYmplY3QuXG4gKi9cbmV4cG9ydCBjb25zdCB0ZW5hbnRDb250ZXh0ID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlPFRlbmFudENvbnRleHQ+KCk7XG5cbi8qKlxuICogUnVuIGBmbmAgaW5zaWRlIHRoZSBnaXZlbiB0ZW5hbnQgc2NvcGUuIFRoZSBBc3luY0xvY2FsU3RvcmFnZSBzY29wZVxuICogc3Vydml2ZXMgYWNyb3NzIGFzeW5jIGJvdW5kYXJpZXMgKFByb21pc2VzLCBzZXRUaW1lb3V0LCBldGMuKSwgc28gYW55XG4gKiBgd2l0aFRlbmFudFR4YCBjYWxsIGluc2lkZSBgZm5gIOKAlCBkaXJlY3RseSBvciB0aHJvdWdoIGFueSBkZXB0aCBvZlxuICogYXN5bmMgaGVscGVycyDigJQgcGlja3MgdXAgYGN0eGAuXG4gKlxuICogV3JhcCBgbmV4dCgpYCBmcm9tIGFuIEV4cHJlc3MgbWlkZGxld2FyZSB0byBlc3RhYmxpc2ggcGVyLXJlcXVlc3Qgc2NvcGU6XG4gKlxuICogICAgIGFwcC51c2UoKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gKiAgICAgICBydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgKCkgPT4gbmV4dCgpKTtcbiAqICAgICB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bldpdGhUZW5hbnRDb250ZXh0PFQ+KGN0eDogVGVuYW50Q29udGV4dCwgZm46ICgpID0+IFQpOiBUIHtcbiAgcmV0dXJuIHRlbmFudENvbnRleHQucnVuKGN0eCwgZm4pO1xufVxuXG4vKiogUmVhZCB0aGUgY3VycmVudCB0ZW5hbnQgY29udGV4dC4gUmV0dXJucyB1bmRlZmluZWQgb3V0c2lkZSBhblxuICogIGBydW5XaXRoVGVuYW50Q29udGV4dGAgc2NvcGUgKGUuZy4gYmFja2dyb3VuZCB3b3JrZXJzLCBtaWdyYXRpb25zKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW5hbnRDb250ZXh0KCk6IFRlbmFudENvbnRleHQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdGVuYW50Q29udGV4dC5nZXRTdG9yZSgpO1xufVxuXG4vKipcbiAqIE9wZW4gYSB0cmFuc2FjdGlvbiB3aXRoIFJMUyBHVUNzIFNFVCBMT0NBTCBmcm9tIHRoZSBjdXJyZW50XG4gKiBBc3luY0xvY2FsU3RvcmFnZSB0ZW5hbnQgY29udGV4dCwgdGhlbiBpbnZva2UgYGZuKHR4KWAuXG4gKlxuICogLSBXaGVuIGNhbGxlZCBvdXRzaWRlIGEgdGVuYW50IHNjb3BlIChlLmcuIGZyb20gYSBiYWNrZ3JvdW5kIGpvYiB0aGF0XG4gKiAgIGRvZXNuJ3QgaGF2ZSBhIGNhbGxlciBpZGVudGl0eSksIHRoZSB0cmFuc2FjdGlvbiBpcyBvcGVuZWQgd2l0aCBib3RoXG4gKiAgIEdVQ3MgY2xlYXJlZCDigJQgUkxTIHBvbGljaWVzIHdpbGwgcmV0dXJuIHplcm8gcm93cyBvbiBGT1JDRSdkIHRhYmxlcy5cbiAqICAgQ2FsbGVycyB0aGF0IG5lZWQgYSBzeXNhZG1pbi1lcXVpdmFsZW50IHNjb3BlIHNob3VsZCB3cmFwIHRoZW1zZWx2ZXMgaW5cbiAqICAgYHJ1bldpdGhUZW5hbnRDb250ZXh0KHsgaXNTdXBlckFkbWluOiB0cnVlIH0sIOKApilgIGV4cGxpY2l0bHkuXG4gKlxuICogLSBVc2VzIGBzZXRfY29uZmlnKGtleSwgdmFsdWUsIHRydWUpYCAodGhlIGJvb2xlYW4gPSBgaXNfbG9jYWxgLCBpLmUuXG4gKiAgIHRyYW5zYWN0aW9uLXNjb3BlZCkuIEVxdWl2YWxlbnQgdG8gYFNFVCBMT0NBTGAgYnV0IHRha2VzIHRoZSB2YWx1ZSBhc1xuICogICBhIHBhcmFtZXRlciwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50IOKAlCBEcml6emxlJ3MgYHNxbGAgdGVtcGxhdGUgYmluZHMgdGhlXG4gKiAgIHZhbHVlIHNhZmVseSBzbyBhbiBhdHRhY2tlci1jb250cm9sbGVkIGBvcmdJZGAgY2FuJ3QgZXNjYXBlIHRoZSBxdW90aW5nLlxuICpcbiAqIC0gUmV0dXJucyB3aGF0ZXZlciBgZm5gIHJldHVybnM7IHRocm93cyB3aGF0ZXZlciBgZm5gIHRocm93cyAoRHJpenpsZVxuICogICBoYW5kbGVzIHRoZSBDT01NSVQvUk9MTEJBQ0sgZm9yIHVzKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhUZW5hbnRUeDxUPihcbiAgZm46ICh0eDogUGFyYW1ldGVyczxQYXJhbWV0ZXJzPHR5cGVvZiBkYi50cmFuc2FjdGlvbj5bMF0+WzBdKSA9PiBQcm9taXNlPFQ+LFxuICAvKipcbiAgICogSU5URVJOQUwuIFdoZXRoZXIgdGhpcyB0cmFuc2FjdGlvbiBzaG91bGQgbWFyayB0aGUgcmVxdWVzdCBhcyBwb3NzaWJseVxuICAgKiBoYXZpbmcgd3JpdHRlbi4gQWx3YXlzIHRydWUgZm9yIGEgcmVhbCBjYWxsZXI7IG9ubHkgd2l0aFRlbmFudFR4UmVhZCdzXG4gICAqIHByaW1hcnktZmFsbGJhY2sgcGF0aCBwYXNzZXMgZmFsc2UsIGJlY2F1c2UgYSByZWFkIHRoYXQgbGFuZHMgb24gdGhlXG4gICAqIHByaW1hcnkgaGFzIG5vdCB3cml0dGVuLiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIGFzc2lnbm1lbnQgYmVsb3cuXG4gICAqL1xuICBtYXJrV3JpdHRlbiA9IHRydWUsXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgY3R4ID0gdGVuYW50Q29udGV4dC5nZXRTdG9yZSgpO1xuXG4gIGlmICghY3R4KSB7XG4gICAgLy8gU3VyZmFjZSB0aGUgYnVnIGluc3RlYWQgb2Ygc2lsZW50bHkgU0VUJ2luZyBlbXB0eSBHVUNzLiBUaGUgZGVmYXVsdFxuICAgIC8vIG1vZGUgKCd3YXJuJykgbG9ncyBhbiBhY3Rpb25hYmxlIHRyYWNlIHNvIHRoZSBiYWQgY2FsbCBzaXRlIGlzIGVhc3lcbiAgICAvLyB0byBmaW5kOyBwcm9kdWN0aW9uIGRlcGxveW1lbnRzIHRoYXQgaGF2ZSBmaW5pc2hlZCB0aGUgYXVkaXQgY2FuIHNldFxuICAgIC8vIFJMU19DT05URVhUX01PREU9c3RyaWN0IHRvIGZhaWwtZmFzdCBhdCB0aGUgY2FsbCBzaXRlIChiZXR0ZXIgc3RhY2tcbiAgICAvLyB0cmFjZSB0aGFuIHRoZSBQb3N0Z3JlcyBcInBlcm1pc3Npb24gZGVuaWVkXCIgdGhhdCB3b3VsZCBvdGhlcndpc2VcbiAgICAvLyBzdXJmYWNlIGZyb20gRk9SQ0UnZCBSTFMpLlxuICAgIGNvbnN0IG1vZGUgPSBnZXRDb250ZXh0TW9kZSgpO1xuICAgIGlmIChtb2RlID09PSAnc3RyaWN0Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnd2l0aFRlbmFudFR4IGNhbGxlZCBvdXRzaWRlIGEgdGVuYW50IHNjb3BlLiBXcmFwIHlvdXIgaGFuZGxlci93b3JrZXIgJ1xuICAgICAgICArICdpbiBydW5XaXRoVGVuYW50Q29udGV4dCh7IG9yZ0lkLCBpc1N1cGVyQWRtaW4gfSwgLi4uKSBiZWZvcmUgaW52b2tpbmcgJ1xuICAgICAgICArICdhbnkgc2VydmljZSB0aGF0IHRvdWNoZXMgUkxTLWVuZm9yY2VkIHRhYmxlcy4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG1vZGUgPT09ICd3YXJuJykge1xuICAgICAgLy8gSW5jbHVkZSBhIHN5bnRoZXRpYyBzdGFjayBzbyB0aGUgb2ZmZW5kaW5nIGNhbGwgc2l0ZSBpcyBpbiB0aGUgbG9nLlxuICAgICAgbG9nZ2VyLndhcm4oJ3dpdGhUZW5hbnRUeCBjYWxsZWQgb3V0c2lkZSBhIHRlbmFudCBzY29wZTsgUkxTIEdVQ3Mgd2lsbCBiZSBlbXB0eScsIHtcbiAgICAgICAgc3RhY2s6IG5ldyBFcnJvcigndGVuYW50LWNvbnRleHQgbWlzc2luZycpLnN0YWNrLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JnSWQgPSBjdHg/Lm9yZ0lkID8/ICcnO1xuICBjb25zdCBpc1N1cGVyQWRtaW4gPSBjdHg/LmlzU3VwZXJBZG1pbiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgY29uc3Qgc3RhdGVtZW50VGltZW91dE1zID0gZ2V0U3RhdGVtZW50VGltZW91dE1zKCk7XG5cbiAgLy8gVGhpcyB0cmFuc2FjdGlvbiBydW5zIG9uIHRoZSBQUklNQVJZIGFuZCBtYXkgd3JpdGUsIHNvIGFueSBsYXRlciByZWFkIGluXG4gIC8vIHRoaXMgcmVxdWVzdCBtdXN0IHN0YXkgb24gdGhlIHByaW1hcnkgdG9vLiBTZXQgYmVmb3JlIHRoZSB0cmFuc2FjdGlvbiBvcGVuc1xuICAvLyByYXRoZXIgdGhhbiBhZnRlciBpdCBjb21taXRzOiBhIHJlYWQgaXNzdWVkIGNvbmN1cnJlbnRseSBmcm9tIHRoZSBzYW1lXG4gIC8vIGhhbmRsZXIgd291bGQgb3RoZXJ3aXNlIHJhY2UgdGhlIGZsYWcuXG4gIC8vXG4gIC8vIGBtYXJrV3JpdHRlbjogZmFsc2VgIGlzIHBhc3NlZCBPTkxZIGJ5IHdpdGhUZW5hbnRUeFJlYWQncyBmYWxsYmFjayBwYXRoLFxuICAvLyBhbmQgaXQgaXMgbm90IGFuIG9wdGltaXNhdGlvbiDigJQgd2l0aG91dCBpdCB0aGUgZmVhdHVyZSBkZWZlYXRzIGl0c2VsZi4gVGhhdFxuICAvLyBwYXRoIHJ1bnMgb24gdGhlIHByaW1hcnksIHNvIGl0IHdvdWxkIHNldCB0aGlzIGZsYWcsIHdoaWNoIGFwaS1zZXJ2ZXInc1xuICAvLyBtaWRkbGV3YXJlIHJlYWRzIGFmdGVyIHRoZSByZXNwb25zZSB0byBzZXQgdGhlIFJlZGlzIHdyaXRlIHBpbi4gQSBwdXJlbHlcbiAgLy8gUkVBRC1PTkxZIHJlcXVlc3Qgd291bGQgdGhlcmVmb3JlIHBpbiBpdHMgd2hvbGUgb3JnIHRvIHRoZSBwcmltYXJ5IGZvciB0aGVcbiAgLy8gcGluIFRUTCwgZXZlcnkgdGltZSwgYW5kIHNpbmNlIHJlYWRzIGZhbGwgYmFjayB3aGVuZXZlciBubyByZXBsaWNhIGlzXG4gIC8vIGNvbmZpZ3VyZWQgKHRoZSBzaGlwcGluZyBkZWZhdWx0KSBldmVyeSBvcmcgd291bGQgYmUgcGVybWFuZW50bHkgcGlubmVkLlxuICAvLyBUaGUgZmxhZyBtZWFucyBcInRoaXMgcmVxdWVzdCBtYXkgaGF2ZSBXUklUVEVOXCIsIG5vdCBcInRoaXMgcmVxdWVzdCB0b3VjaGVkXG4gIC8vIHRoZSBwcmltYXJ5XCIsIGFuZCB0aGUgZGlmZmVyZW5jZSBpcyB0aGUgd2hvbGUgcmVhZC1vZmZsb2FkIGJlbmVmaXQuXG4gIGlmIChjdHggJiYgbWFya1dyaXR0ZW4pIGN0eC5tYXlIYXZlV3JpdHRlbiA9IHRydWU7XG5cbiAgcmV0dXJuIGRiLnRyYW5zYWN0aW9uKGFzeW5jICh0eCkgPT4ge1xuICAgIC8vIFNldCBldmVyeSB0cmFuc2FjdGlvbi1zY29wZWQgR1VDIGluIGEgU0lOR0xFIHJvdW5kLXRyaXAuIGBzZXRfY29uZmlnKClgXG4gICAgLy8gcmV0dXJucyBpdHMgdmFsdWUsIHNvIG11bHRpcGxlIGNhbGxzIGNvbXBvc2UgaW4gb25lIFNFTEVDVCByYXRoZXIgdGhhbiBhXG4gICAgLy8gcm91bmQtdHJpcCBwZXIgR1VDIOKAlCBlYWNoIGEgbmV0d29yayBob3AgdGhhdCB0YXhlcyB0aGUgc2hhcmVkIFBnQm91bmNlclxuICAgIC8vIHBvb2wgb24gdGhlIGhvdCBwYXRoLiBgdHJ1ZWBcbiAgICAvLyA9IGlzX2xvY2FsIChTRVQgTE9DQUwgc2VtYW50aWNzOiBhdXRvLXJlbGVhc2VkIG9uIENPTU1JVC9ST0xMQkFDSykuIFRoZVxuICAgIC8vIGRyaXZlciBiaW5kcyB0aGUgdmFsdWVzIGFzIHBhcmFtZXRlcnMsIHNvIGEgaG9zdGlsZSBvcmdfaWQgY2FuJ3QgYnJlYWsgb3V0XG4gICAgLy8gb2YgdGhlIEdVQyBzeW50YXguXG4gICAgLy9cbiAgICAvLyBUaGUgc3RhdGVtZW50X3RpbWVvdXQgR1VDIGJvdW5kcyBhIHJ1bmF3YXkgcXVlcnkgc28gaXQgY2FuJ3QgaG9sZCBhIHBvb2xlZFxuICAgIC8vIGNvbm5lY3Rpb24gb3BlbiBpbmRlZmluaXRlbHkgKGBTRVQgTE9DQUwgc3RhdGVtZW50X3RpbWVvdXQgPSAkMWAgaXMgcmVqZWN0ZWRcbiAgICAvLyBieSBQb3N0Z3JlcywgaGVuY2Ugc2V0X2NvbmZpZyB3aXRoIGEgYm91bmQgbXMgdmFsdWUpLiBJbmNsdWRlZCBpbiB0aGUgc2FtZVxuICAgIC8vIHN0YXRlbWVudCB3aGVuIGVuYWJsZWQgKD4wKSwgZHJvcHBlZCBlbnRpcmVseSB3aGVuIGRpc2FibGVkICgwKS5cbiAgICBpZiAoc3RhdGVtZW50VGltZW91dE1zID4gMCkge1xuICAgICAgYXdhaXQgdHguZXhlY3V0ZShcbiAgICAgICAgc3FsYFNFTEVDVCBzZXRfY29uZmlnKCdhcHAub3JnX2lkJywgJHtvcmdJZH0sIHRydWUpLCBzZXRfY29uZmlnKCdhcHAuaXNfc3lzYWRtaW4nLCAke2lzU3VwZXJBZG1pbn0sIHRydWUpLCBzZXRfY29uZmlnKCdzdGF0ZW1lbnRfdGltZW91dCcsICR7U3RyaW5nKHN0YXRlbWVudFRpbWVvdXRNcyl9LCB0cnVlKWAsXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0eC5leGVjdXRlKFxuICAgICAgICBzcWxgU0VMRUNUIHNldF9jb25maWcoJ2FwcC5vcmdfaWQnLCAke29yZ0lkfSwgdHJ1ZSksIHNldF9jb25maWcoJ2FwcC5pc19zeXNhZG1pbicsICR7aXNTdXBlckFkbWlufSwgdHJ1ZSlgLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZuKHR4KTtcbiAgfSk7XG59XG5cbi8qKlxuICogV2h5IGEgcmVhZCB3YXMgb3Igd2FzIG5vdCBzZW50IHRvIHRoZSByZXBsaWNhLiBSZXR1cm5lZCBieVxuICoge0BsaW5rIGNob29zZVJlYWRUYXJnZXR9IHNvIHRoZSBkZWNpc2lvbiBpcyBpbnNwZWN0YWJsZSDigJQgYW5kIHRlc3RhYmxlXG4gKiB3aXRob3V0IGEgcmVwbGljYSwgd2hpY2ggbWF0dGVycyBiZWNhdXNlIHRoZSB0ZXN0IHN1YnN0cmF0ZSAoUEdsaXRlKSBoYXMgbm9cbiAqIHJlcGxpY2F0aW9uIGF0IGFsbC5cbiAqL1xuZXhwb3J0IHR5cGUgUmVhZFRhcmdldFJlYXNvbiA9XG4gIC8qKiBObyByZXBsaWNhIGNvbmZpZ3VyZWQsIG9yIERCX1JFQURfRU5BQkxFRD1mYWxzZS4gKi9cbiAgfCAnbm8tcmVwbGljYSdcbiAgLyoqIFRoaXMgcmVxdWVzdCBhbHJlYWR5IG9wZW5lZCBhIHByaW1hcnkgdHJhbnNhY3Rpb24gYW5kIG1heSBoYXZlIHdyaXR0ZW4uICovXG4gIHwgJ21heS1oYXZlLXdyaXR0ZW4nXG4gIC8qKlxuICAgKiBObyB0ZW5hbnQgY29udGV4dC4gQSBjYWxsZXIgb3V0c2lkZSBgcnVuV2l0aFRlbmFudENvbnRleHRgIGhhcyBubyBvcmcgdG9cbiAgICogc2NvcGUgUkxTIGJ5IGFuZCBubyB3YXRlcm1hcmsgdG8gY29tcGFyZSwgc28gaXQgZ29lcyB0byB0aGUgcHJpbWFyeSDigJQgd2hlcmVcbiAgICogYHdpdGhUZW5hbnRUeGAncyBSTFNfQ09OVEVYVF9NT0RFIGd1YXJkIGxvZ3Mgb3IgdGhyb3dzLiBSb3V0ZWQgdG8gYSByZXBsaWNhXG4gICAqIGluc3RlYWQsIHRoZSBzYW1lIGNhbGwgd291bGQgc2V0IGBhcHAub3JnX2lkID0gJydgIHdpdGggbm8gZGlhZ25vc3RpYyBhdCBhbGwuXG4gICAqL1xuICB8ICduby1jb250ZXh0J1xuICAvKipcbiAgICogQSByZXBsaWNhIGV4aXN0cyBidXQgaXRzIHJlcGxheSBsYWcgaXMgYmV5b25kIGBEQl9SRUFEX01BWF9MQUdfU0VDT05EU2AsXG4gICAqIG9yIGlzIFVOS05PV04gKG5vIHNhbXBsZSB5ZXQsIHRoZSBzYW1wbGUgZmFpbGVkLCBvciB0aGUgY2FjaGVkIHNhbXBsZSBoYXNcbiAgICogZ29uZSBzdGFsZSkuIFVua25vd24gYW5kIGxhZ2dpbmcgYXJlIHRoZSBzYW1lIGRlY2lzaW9uIG9uIHB1cnBvc2U6IHRoZVxuICAgKiBjaXJjdWl0IGZhaWxzIGNsb3NlZC5cbiAgICovXG4gIHwgJ3JlcGxpY2EtbGFnZ2luZydcbiAgLyoqIFJvdXRlZCB0byB0aGUgcmVwbGljYS4gKi9cbiAgfCAncmVwbGljYSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZFRhcmdldCB7XG4gIHVzZVJlcGxpY2E6IGJvb2xlYW47XG4gIHJlYXNvbjogUmVhZFRhcmdldFJlYXNvbjtcbn1cblxuLyoqXG4gKiBEZWNpZGUgd2hlcmUgYSByZWFkLW9ubHkgdHJhbnNhY3Rpb24gc2hvdWxkIHJ1bi5cbiAqXG4gKiBQdXJlIGFuZCBzaWRlLWVmZmVjdCBmcmVlIG9uIHB1cnBvc2U6IHRoaXMgaXMgdGhlIHdob2xlIG9mIHRoZSByb3V0aW5nXG4gKiBwb2xpY3ksIGFuZCBpdCBpcyB0aGUgcGFydCB3b3J0aCB0ZXN0aW5nLiBSZXBsaWNhdGlvbiBpdHNlbGYgY2Fubm90IGJlXG4gKiByZXByb2R1Y2VkIGxvY2FsbHksIHNvIHRoZSB0ZXN0YWJsZSB1bml0IGlzIHRoZSBERUNJU0lPTiwgbm90IHRoZSBsYWcuXG4gKlxuICogVGhlIGJpYXMgaXMgZGVsaWJlcmF0ZTogYW55dGhpbmcgdW5jZXJ0YWluIHJlc29sdmVzIHRvIHRoZSBwcmltYXJ5LiBBIHJlYWRcbiAqIHNlcnZlZCBieSB0aGUgcHJpbWFyeSBpcyBtZXJlbHkgbGVzcyBlZmZpY2llbnQ7IGEgcmVhZCBzZXJ2ZWQgYnkgYSBzdGFsZVxuICogcmVwbGljYSBpcyBhIHVzZXItdmlzaWJsZSBidWcgbm9ib2R5IGNhbiByZXByb2R1Y2UuXG4gKi9cbi8qKiBFdmVyeXRoaW5nIGFib3V0IHRoZSByZXBsaWNhIHRoYXQgaXMgbm90IHJlcXVlc3Qtc3BlY2lmaWMuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlYWRSZXBsaWNhSGVhbHRoIHtcbiAgLyoqIEEgcmVwbGljYSBwb29sIGV4aXN0cyBBTkQgYERCX1JFQURfRU5BQkxFRGAgaXMgbm90IGZhbHNlLiAqL1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIC8qKiBUaGUgbGFnIGNpcmN1aXQncyB2ZXJkaWN0LiBgdW5rbm93bmAgaXMgdHJlYXRlZCBleGFjdGx5IGxpa2UgYGxhZ2dpbmdgLiAqL1xuICBsYWc6IExhZ1ZlcmRpY3Q7XG59XG5cbi8qKlxuICogV2hlcmUgYSByZWFkIGdvZXMsIGFuZCB3aHkuXG4gKlxuICogU1lTVEVNIGdhdGVzIGFyZSBjaGVja2VkIGJlZm9yZSBSRVFVRVNUIGdhdGVzLCB3aGljaCBtYXR0ZXJzIG9ubHkgZm9yIHRoZVxuICogZXhwbGFuYXRpb24g4oCUIGJ1dCB0aGUgZXhwbGFuYXRpb24gaXMgd2hhdCBhbiBvcGVyYXRvciByZWFkcyB3aGVuIGFza2luZyB3aHlcbiAqIHRoZSByZXBsaWNhIGlzIGlkbGUsIGFuZCBcIm15IHJlcXVlc3Qgd3JvdGVcIiBpcyBhIGZhciBsZXNzIHVzZWZ1bCBhbnN3ZXIgdGhhblxuICogXCJ0aGUgc3RhbmRieSBpcyA0MCBzZWNvbmRzIGJlaGluZFwiLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlUmVhZFRhcmdldChjdHg6IFRlbmFudENvbnRleHQgfCB1bmRlZmluZWQsIGhlYWx0aDogUmVhZFJlcGxpY2FIZWFsdGgpOiBSZWFkVGFyZ2V0IHtcbiAgaWYgKCFoZWFsdGguYXZhaWxhYmxlKSByZXR1cm4geyB1c2VSZXBsaWNhOiBmYWxzZSwgcmVhc29uOiAnbm8tcmVwbGljYScgfTtcbiAgaWYgKGhlYWx0aC5sYWcgIT09ICdvaycpIHJldHVybiB7IHVzZVJlcGxpY2E6IGZhbHNlLCByZWFzb246ICdyZXBsaWNhLWxhZ2dpbmcnIH07XG4gIGlmICghY3R4KSByZXR1cm4geyB1c2VSZXBsaWNhOiBmYWxzZSwgcmVhc29uOiAnbm8tY29udGV4dCcgfTtcbiAgaWYgKGN0eC5tYXlIYXZlV3JpdHRlbikgcmV0dXJuIHsgdXNlUmVwbGljYTogZmFsc2UsIHJlYXNvbjogJ21heS1oYXZlLXdyaXR0ZW4nIH07XG4gIHJldHVybiB7IHVzZVJlcGxpY2E6IHRydWUsIHJlYXNvbjogJ3JlcGxpY2EnIH07XG59XG5cbi8qKlxuICogT3BlbiBhIFJFQUQtT05MWSB0cmFuc2FjdGlvbiB3aXRoIHRoZSBzYW1lIFJMUyBHVUNzIGB3aXRoVGVuYW50VHhgIHNldHMsXG4gKiByb3V0ZWQgdG8gdGhlIHJlcGxpY2Egd2hlbiB7QGxpbmsgY2hvb3NlUmVhZFRhcmdldH0gYWxsb3dzIGl0LlxuICpcbiAqIGBTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZYCBpcyB0aGUgZ3VhcmRyYWlsLCBub3QgZGVjb3JhdGlvbi4gU2V2ZXJhbCBxdWVyaWVzXG4gKiBpbiB0aGlzIGNvZGViYXNlIGxvb2sgbGlrZSByZWFkcyBhdCB0aGUgY2FsbCBzaXRlIGFuZCBhcmUgbm90IOKAlFxuICogYFNFTEVDVCDigKYgRk9SIFVQREFURWAgaW4gY3J1ZC1zZXJ2aWNlJ3Mgc2V0RGVmYXVsdCwgYHBnX2Fkdmlzb3J5X3hhY3RfbG9ja2BcbiAqIGluIHBpcGVsaW5lLXNlcnZpY2UgYW5kIGNvbXBsaWFuY2UncyBzdWJzY3JpcHRpb24tc2VydmljZS4gUm91dGVkIHRvIGFcbiAqIHN0YW5kYnkgdGhvc2UgZmFpbCBhbnl3YXk7IGRlY2xhcmluZyB0aGUgdHJhbnNhY3Rpb24gcmVhZC1vbmx5IG1ha2VzIHRoZW1cbiAqIGZhaWwgSEVSRSwgd2l0aCBhIGNsZWFyIG1lc3NhZ2UsIGluY2x1ZGluZyBvbiB0aGUgcHJpbWFyeSB3aGVyZSB0aGV5IHdvdWxkXG4gKiBvdGhlcndpc2Ugc3VjY2VlZCBhbmQgcXVpZXRseSBhY3F1aXJlIGEgbG9jayB0aGUgY2FsbGVyIGRpZCBub3QgaW50ZW5kLlxuICpcbiAqIEZhbGxzIGJhY2sgdG8gdGhlIHByaW1hcnkgdHJhbnNwYXJlbnRseSwgc28gYSBjYWxsZXIgbmV2ZXIgaGFzIHRvIGFza1xuICogd2hldGhlciBhIHJlcGxpY2EgZXhpc3RzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFRlbmFudFR4UmVhZDxUPihcbiAgZm46ICh0eDogUGFyYW1ldGVyczxQYXJhbWV0ZXJzPHR5cGVvZiBkYi50cmFuc2FjdGlvbj5bMF0+WzBdKSA9PiBQcm9taXNlPFQ+LFxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IGN0eCA9IHRlbmFudENvbnRleHQuZ2V0U3RvcmUoKTtcbiAgY29uc3QgcmVhZERiID0gZ2V0UmVhZERiKCk7XG4gIGNvbnN0IHJlYWRQb29sID0gZ2V0UmVhZFBvb2woKTtcblxuICAvLyBLZWVwIHRoZSBsYWcgc2FtcGxlIHdhcm0uIEZpcmUtYW5kLWZvcmdldCBieSBkZXNpZ246IGl0IGlzIGRlYm91bmNlZCB0b1xuICAvLyBEQl9SRUFEX0xBR19TQU1QTEVfTVMsIG5ldmVyIHRocm93cywgYW5kIG11c3Qgbm90IGFkZCBhIHJvdW5kLXRyaXAgdG8gdGhpc1xuICAvLyByZWFkLiBUaGUgZmlyc3QgcmVhZCBvZiBhIHByb2Nlc3MgdGhlcmVmb3JlIHJvdXRlcyB0byB0aGUgcHJpbWFyeSAobm9cbiAgLy8gc2FtcGxlIHlldCkgYW5kIHdhcm1zIHRoZSBjaXJjdWl0IGZvciB0aGUgb25lcyBhZnRlciBpdC5cbiAgaWYgKHJlYWRQb29sKSB2b2lkIG1heWJlU2FtcGxlTGFnKHJlYWRQb29sKTtcblxuICBjb25zdCB0YXJnZXQgPSBjaG9vc2VSZWFkVGFyZ2V0KGN0eCwgeyBhdmFpbGFibGU6IHJlYWREYiAhPT0gbnVsbCwgbGFnOiBsYWdWZXJkaWN0KCkgfSk7XG4gIGVtaXRDb3VudGVyKCdwb3N0Z3Jlc19yZWFkX3JvdXRlZF90b3RhbCcsIHsgdGFyZ2V0OiB0YXJnZXQudXNlUmVwbGljYSA/ICdyZXBsaWNhJyA6ICdwcmltYXJ5JywgcmVhc29uOiB0YXJnZXQucmVhc29uIH0pO1xuXG4gIGlmICghdGFyZ2V0LnVzZVJlcGxpY2EpIHtcbiAgICAvLyBQcmltYXJ5IHBhdGg6IGlkZW50aWNhbCBzZW1hbnRpY3MgdG8gd2l0aFRlbmFudFR4LCBwbHVzIHRoZSByZWFkLW9ubHlcbiAgICAvLyBkZWNsYXJhdGlvbiBzbyBhbiBhY2NpZGVudGFsIHdyaXRlIGlzIGNhdWdodCBvbiBldmVyeSB0YXJnZXQg4oCUIGluY2x1ZGluZ1xuICAgIC8vIHRoZSBvbmVzIHRoYXQgd2lsbCBuZXZlciBoYXZlIGEgcmVwbGljYS5cbiAgICByZXR1cm4gd2l0aFRlbmFudFR4KGFzeW5jICh0eCkgPT4ge1xuICAgICAgYXdhaXQgdHguZXhlY3V0ZShzcWxgU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWWApO1xuICAgICAgcmV0dXJuIGZuKHR4KTtcbiAgICB9LCAvKiBtYXJrV3JpdHRlbiAqLyBmYWxzZSk7XG4gIH1cblxuICAvLyBOb24tbnVsbCBieSBjb25zdHJ1Y3Rpb246IGNob29zZVJlYWRUYXJnZXQgb25seSByZXR1cm5zIHVzZVJlcGxpY2EgZm9yIGFcbiAgLy8gY3R4IHRoYXQgZXhpc3RzLiBSZWFkIHRoZSBHVUNzIG9mZiBpdCBkaXJlY3RseSByYXRoZXIgdGhhbiBkZWZhdWx0aW5nIHRvXG4gIC8vICcnIOKAlCBhIGRlZmF1bHQgaGVyZSB3b3VsZCBzaWxlbnRseSByZS1vcGVuIHRoZSBob2xlIHRoYXQgJ25vLWNvbnRleHQnXG4gIC8vIGNsb3NlcywgYmVjYXVzZSBhbiBlbXB0eSBhcHAub3JnX2lkIGlzIGEgVkFMSUQtbG9va2luZyBSTFMgc2NvcGUuXG4gIGNvbnN0IHsgb3JnSWQgfSA9IGN0eCE7XG4gIGNvbnN0IGlzU3VwZXJBZG1pbiA9IGN0eCEuaXNTdXBlckFkbWluID8gJ3RydWUnIDogJ2ZhbHNlJztcbiAgY29uc3Qgc3RhdGVtZW50VGltZW91dE1zID0gZ2V0U3RhdGVtZW50VGltZW91dE1zKCk7XG5cbiAgcmV0dXJuIHJlYWREYiEudHJhbnNhY3Rpb24oYXN5bmMgKHR4KSA9PiB7XG4gICAgYXdhaXQgdHguZXhlY3V0ZShzcWxgU0VUIFRSQU5TQUNUSU9OIFJFQUQgT05MWWApO1xuICAgIGlmIChzdGF0ZW1lbnRUaW1lb3V0TXMgPiAwKSB7XG4gICAgICBhd2FpdCB0eC5leGVjdXRlKFxuICAgICAgICBzcWxgU0VMRUNUIHNldF9jb25maWcoJ2FwcC5vcmdfaWQnLCAke29yZ0lkfSwgdHJ1ZSksIHNldF9jb25maWcoJ2FwcC5pc19zeXNhZG1pbicsICR7aXNTdXBlckFkbWlufSwgdHJ1ZSksIHNldF9jb25maWcoJ3N0YXRlbWVudF90aW1lb3V0JywgJHtTdHJpbmcoc3RhdGVtZW50VGltZW91dE1zKX0sIHRydWUpYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHR4LmV4ZWN1dGUoXG4gICAgICAgIHNxbGBTRUxFQ1Qgc2V0X2NvbmZpZygnYXBwLm9yZ19pZCcsICR7b3JnSWR9LCB0cnVlKSwgc2V0X2NvbmZpZygnYXBwLmlzX3N5c2FkbWluJywgJHtpc1N1cGVyQWRtaW59LCB0cnVlKWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZm4odHgpO1xuICB9KTtcbn1cbiJdfQ==
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW5jeS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFiYXNlL3RlbmFuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUU1RSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQWU5QyxTQUFTLGNBQWM7SUFDckIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN4RCxJQUFJLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLE1BQU0sSUFBSSxHQUFHLEtBQUssUUFBUTtRQUFFLE9BQU8sR0FBRyxDQUFDO0lBQ3ZFLHVFQUF1RTtJQUN2RSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDbkUsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxxQkFBcUI7SUFDNUIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELE9BQU8s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QUFtQyxLQUFLLDBDQUEwQyxZQUFZLDRDQUE0QyxNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUNqTCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQ2QsR0FBRyxDQUFBLG1DQUFtQyxLQUFLLDBDQUEwQyxZQUFZLFNBQVMsQ0FDM0csQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUZW5hbnQtY29udGV4dCBwbHVtYmluZyBmb3IgUG9zdGdyZXMgcm93LWxldmVsIHNlY3VyaXR5LlxuICpcbiAqIEJhY2tncm91bmQ6IHBvc3RncmVzLWluaXQuc3FsIGluc3RhbGxzIFJMUyBwb2xpY2llcyBvbiBldmVyeSB1c2VyLWRhdGFcbiAqIHRhYmxlIHRoYXQgY29uc3VsdCB0d28gc2Vzc2lvbiBHVUNzIOKAlCBgYXBwLm9yZ19pZGAgYW5kIGBhcHAuaXNfc3lzYWRtaW5gLlxuICogRXZlcnkgdGVuYW50IHRhYmxlIGlzIGBGT1JDRSBST1cgTEVWRUwgU0VDVVJJVFlgLCBzbyB0aGUgcG9saWNpZXMgZW5mb3JjZVxuICogZXZlbiBmb3IgdGhlIChvd25pbmcpIGNvbm5lY3Rpb24gdXNlciDigJQgYSBxdWVyeSBhZ2FpbnN0IG9uZSBtdXN0IHJ1biBpbnNpZGUgYVxuICogdHJhbnNhY3Rpb24gdGhhdCBoYXMgU0VUIExPQ0FMJ2QgYm90aCBHVUNzIG9yIGl0IHJldHVybnMgemVybyByb3dzIGZvclxuICogbm9uLXN5c2FkbWlucyAoYW5kIG1heSBmYWlsIHRvIHdyaXRlIGZvciBhbnkgY2FsbGVyKS4gVGhlIGNyb3NzLW9yZyBwbHVnaW5cbiAqIGVjb3N5c3RlbSBjYXRhbG9nIHRhYmxlcyBjYXJyeSBhIHBlcm1pc3NpdmUgYXBwLXJvbGUgcG9saWN5IGluc3RlYWQuXG4gKlxuICogVGhpcyBtb2R1bGUgaXMgdGhlIHNlYW0uXG4gKlxuICogICAxLiBgdGVuYW50Q29udGV4dGAgKEFzeW5jTG9jYWxTdG9yYWdlKSBjYXJyaWVzIGB7b3JnSWQsIGlzU3VwZXJBZG1pbn1gXG4gKiAgICAgIGRvd24gdGhlIGNhbGwgY2hhaW4gd2l0aG91dCBwcm9wLWRyaWxsaW5nLiBTZXQgb25jZSBhdCB0aGUgcmVxdWVzdFxuICogICAgICBib3VuZGFyeTsgcmVhZGFibGUgZnJvbSBhbnl3aGVyZS5cbiAqXG4gKiAgIDIuIGB3aXRoVGVuYW50VHgoZm4pYCBvcGVucyBhIHRyYW5zYWN0aW9uLCBTRVQgTE9DQUwncyBib3RoIEdVQ3MgZnJvbVxuICogICAgICB0aGUgc3Vycm91bmRpbmcgY29udGV4dCwgdGhlbiBpbnZva2VzIGBmbih0eClgLiBTZXJ2aWNlcyBtaWdyYXRlIG9uZVxuICogICAgICBhdCBhIHRpbWUgYnkgd3JhcHBpbmcgdGhlaXIgZXhpc3RpbmcgZHJpenpsZSBjYWxscyBpbiB0aGlzIGhlbHBlciDigJRcbiAqICAgICAgYGRiLnNlbGVjdCgpLmZyb20oLi4uKWAgYmVjb21lcyBgd2l0aFRlbmFudFR4KHR4ID0+IHR4LnNlbGVjdCgpLmZyb20oLi4uKSlgLlxuICpcbiAqICAgMy4gYHJ1bldpdGhUZW5hbnRDb250ZXh0KGN0eCwgZm4pYCBpcyB0aGUgRXhwcmVzcy1taWRkbGV3YXJlLXNpZGVcbiAqICAgICAgYm9va2VuZCB0aGF0IGVzdGFibGlzaGVzIHRoZSBBc3luY0xvY2FsU3RvcmFnZSBzY29wZSBmb3IgdGhlIHJlcXVlc3QuXG4gKlxuICogTWlncmF0aW9uIG9yZGVyOlxuICogICAtIEZpcnN0IGFkb3B0ZXJzOiBuZXdseS13cml0dGVuIHNlcnZpY2VzIChkYXNoYm9hcmQsIGFsZXJ0LWRlc3RpbmF0aW9uKVxuICogICAgIHdoZXJlIHRoZSBjaGFuZ2UgaXMgbWVjaGFuaWNhbC5cbiAqICAgLSBUaGVuIGhpZ2gtd3JpdGUgc2VydmljZXMgKHBsdWdpbiwgcGlwZWxpbmUpLiBTb2FrIGVhY2ggb25lIGJlZm9yZVxuICogICAgIGZsaXBwaW5nIHRoZSB1bmRlcmx5aW5nIHRhYmxlIHRvIEZPUkNFLlxuICogICAtIGFkbWluX2F1ZGl0X2xvZyB1c2VzIGEgc3lzYWRtaW4tb25seSBwb2xpY3kg4oCUIHN5c2FkbWluIHBhdGhzIG11c3RcbiAqICAgICBhbHNvIHNldCBgYXBwLmlzX3N5c2FkbWluID0gJ3RydWUnYCBvciB0aGV5J2xsIGxvc2UgYWNjZXNzIHRvIGl0LlxuICovXG5cbmltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSAnbm9kZTphc3luY19ob29rcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGVtaXRDb3VudGVyLCBlbnZJbnQgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBzcWwgfSBmcm9tICdkcml6emxlLW9ybSc7XG5pbXBvcnQgeyBkYiB9IGZyb20gJy4vcG9zdGdyZXMtY29ubmVjdGlvbi5qcyc7XG5pbXBvcnQgeyBnZXRSZWFkRGIsIGdldFJlYWRQb29sIH0gZnJvbSAnLi9yZWFkLWNvbm5lY3Rpb24uanMnO1xuaW1wb3J0IHsgbGFnVmVyZGljdCwgbWF5YmVTYW1wbGVMYWcsIHR5cGUgTGFnVmVyZGljdCB9IGZyb20gJy4vcmVhZC1sYWcuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3RlbmFudC1jb250ZXh0Jyk7XG5cbi8qKlxuICogQmVoYXZpb3Igd2hlbiBgd2l0aFRlbmFudFR4YCBpcyBpbnZva2VkIG91dHNpZGUgYW55IGBydW5XaXRoVGVuYW50Q29udGV4dGBcbiAqIHNjb3BlLiBUaGUgZWZmZWN0aXZlIGRlZmF1bHQgaXMgZmFpbC1mYXN0ICgnc3RyaWN0JykgaW4gcHJvZHVjdGlvbiBzbyBhXG4gKiBtaXNzaW5nIHRlbmFudCBzY29wZSBzdXJmYWNlcyBhdCB0aGUgYmFkIGNhbGwgc2l0ZSBpbnN0ZWFkIG9mIHNpbGVudGx5XG4gKiBydW5uaW5nIHdpdGggZW1wdHkgUkxTIEdVQ3M7IG91dHNpZGUgcHJvZHVjdGlvbiBpdCBkZWZhdWx0cyB0byAnd2Fybicgc29cbiAqIHVuLWF1ZGl0ZWQgZGV2L3Rlc3QgcGF0aHMga2VlcCB3b3JraW5nIGJ1dCBsb2cgYW4gYWN0aW9uYWJsZSB0cmFjZS4gQW5cbiAqIGV4cGxpY2l0IFJMU19DT05URVhUX01PREUgZW52IG92ZXJyaWRlIGFsd2F5cyB3aW5zLlxuICpcbiAqICdzaWxlbnQnIGlzIGtlcHQgZm9yIHRlc3RzIGFuZCBzY3JpcHRzIHRoYXQgaW50ZW50aW9uYWxseSBlbnRlciB0aGUgREJcbiAqIHdpdGhvdXQgY29udGV4dCAoZS5nLiBpbnRlZ3JhdGlvbiB0ZXN0IHNldHVwIHRoYXQgcnVucyBhcyB0aGUgY29ubmVjdGlvblxuICogb3duZXIgYmVmb3JlIGFueSB0ZW5hbnQgaXMgcHJvdmlzaW9uZWQpLlxuICovXG50eXBlIENvbnRleHRNb2RlID0gJ3NpbGVudCcgfCAnd2FybicgfCAnc3RyaWN0JztcbmZ1bmN0aW9uIGdldENvbnRleHRNb2RlKCk6IENvbnRleHRNb2RlIHtcbiAgY29uc3QgcmF3ID0gcHJvY2Vzcy5lbnYuUkxTX0NPTlRFWFRfTU9ERT8udG9Mb3dlckNhc2UoKTtcbiAgaWYgKHJhdyA9PT0gJ3NpbGVudCcgfHwgcmF3ID09PSAnd2FybicgfHwgcmF3ID09PSAnc3RyaWN0JykgcmV0dXJuIHJhdztcbiAgLy8gTm8gZXhwbGljaXQgb3ZlcnJpZGU6IGZhaWwtZmFzdCBpbiBwcm9kdWN0aW9uLCB3YXJuIGV2ZXJ5d2hlcmUgZWxzZS5cbiAgcmV0dXJuIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgPyAnc3RyaWN0JyA6ICd3YXJuJztcbn1cblxuLyoqXG4gKiBQZXItc3RhdGVtZW50IHNlcnZlci1zaWRlIHRpbWVvdXQgKG1zKSBhcHBsaWVkIElOU0lERSBldmVyeSBgd2l0aFRlbmFudFR4YFxuICogdHJhbnNhY3Rpb24sIG5leHQgdG8gdGhlIFJMUyBHVUNzLiBgd2l0aFRlbmFudFR4YCBpcyB0aGUgcmVhbCBxdWVyeSBwYXRoIGZvclxuICogYWxsIFJMUy9DUlVEIHJlYWRzIGFuZCB3cml0ZXMsIHNvIHRoaXMgaXMgd2hlcmUgdGhlIERCLXNpZGUgZ3VhcmQgYmVsb25ncyAodGhlXG4gKiBvbGQgYENvbm5lY3Rpb24udHJhbnNhY3Rpb25gIHdyYXBwZXIgdGhhdCBzZXQgaXQgaXMgZGVhZCDigJQgc2VlXG4gKiBwb3N0Z3Jlcy1jb25uZWN0aW9uLnRzKS4gQm91bmRzIGEgcnVuYXdheSBxdWVyeSBzbyBpdCBjYW4ndCBob2xkIGEgcG9vbGVkXG4gKiBjb25uZWN0aW9uIG9wZW4gaW5kZWZpbml0ZWx5LiBFbnYtY29uZmlndXJhYmxlIHZpYSBgREJfU1RBVEVNRU5UX1RJTUVPVVRfTVNgXG4gKiAoZGVmYXVsdCAzMHMpOyBzZXQgdG8gYDBgIHRvIGRpc2FibGUgdGhlIHRpbWVvdXQuXG4gKi9cbmZ1bmN0aW9uIGdldFN0YXRlbWVudFRpbWVvdXRNcygpOiBudW1iZXIge1xuICBjb25zdCBtcyA9IGVudkludCgnREJfU1RBVEVNRU5UX1RJTUVPVVRfTVMnLCAzMF8wMDApO1xuICByZXR1cm4gbXMgPj0gMCA/IG1zIDogMzBfMDAwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudENvbnRleHQge1xuICAvKiogQ2FsbGVyJ3Mgb3JnLiBVbmRlZmluZWQgZm9yIHVuLWF1dGhlbnRpY2F0ZWQgLyBzeXN0ZW0gam9icy4gKi9cbiAgb3JnSWQ/OiBzdHJpbmc7XG4gIC8qKiBDYWxsZXIncyB1c2VyIGlkLiBOb3QgdXNlZCBmb3IgUkxTIOKAlCBQb3N0Z3JlcyBwb2xpY2llcyBhcmUgb3JnLWdyYWluZWQsXG4gICAqICB3aXRoIG5vIHBlci11c2VyIHNlc3Npb24gR1VDIOKAlCBidXQgY2FycmllZCBzbyBhcHAtbGF5ZXIgcHJlZGljYXRlcyB3aXRoIGFcbiAgICogIFBFUi1VU0VSIHJ1bmcgKHBpcGVsaW5lIHRlbXBsYXRlcycgYHByaXZhdGVgIHZpc2liaWxpdHkpIGNhbiByZXNvbHZlIFwid2hvXG4gICAqICBpcyBhc2tpbmdcIiBvbiBwYXRocyB0aGF0IGhhdmUgbm93aGVyZSB0byBwYXNzIGl0LCBub3RhYmx5IENydWRTZXJ2aWNlJ3NcbiAgICogIGB3cml0ZUNvbmRpdGlvbnNgLiBBYnNlbnQgZm9yIHN5c3RlbSBqb2JzLCB3aGljaCBpcyB0aGUgZmFpbC1jbG9zZWQgY2FzZTpcbiAgICogIG5vIHZpZXdlciDih5Igbm8gcHJpdmF0ZSByb3dzLiAqL1xuICB1c2VySWQ/OiBzdHJpbmc7XG4gIC8qKiBUcnVlIHdoZW4gdGhlIGNhbGxlciBpcyBhIHN5c2FkbWluIChzeXN0ZW0tb3JnIGFkbWluKS4gQnlwYXNzZXMgUkxTXG4gICAqICBwb2xpY2llcyB2aWEgdGhlIHN5c2FkbWluLWJ5cGFzcyBicmFuY2ggaW4gYGN1cnJlbnRfaXNfc3lzYWRtaW4oKWAuICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIE9yZyDihpIgdGVhbSBoaWVyYXJjaHk6IHRoZSBjYWxsZXIncyBhY3RpdmUtb3JnIHBhcmVudCAocHJlc2VudCBvbmx5IHdoZW4gdGhlXG4gICAqICBhY3RpdmUgb3JnIGlzIGEgdGVhbSkuIE5vdCB1c2VkIGZvciBSTFM7IGNhcnJpZWQgc28gZG93bnN0cmVhbSBzaWRlLWVmZmVjdHNcbiAgICogIChlLmcuIGVudGl0eS1ldmVudCBjb21wbGlhbmNlIGV2YWwpIGNhbiBob25vciBwYXJlbnQgYHByb3BhZ2F0ZVRvQ2hpbGRyZW5gXG4gICAqICBydWxlcyB3aXRob3V0IGEgcmVxdWVzdCBpbiBzY29wZS4gKi9cbiAgcGFyZW50T3JnSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZXQgb25jZSB0aGlzIHJlcXVlc3QgaGFzIG9wZW5lZCBhIFBSSU1BUlkgdHJhbnNhY3Rpb24sIGkuZS4gbWF5IGhhdmVcbiAgICogd3JpdHRlbi4gU3Vic2VxdWVudCBgd2l0aFRlbmFudFR4UmVhZGAgY2FsbHMgaW4gdGhlIHNhbWUgcmVxdWVzdCB0aGVuIGdvIHRvXG4gICAqIHRoZSBwcmltYXJ5IHRvbywgc28gYSBoYW5kbGVyIGNhbm5vdCByZWFkIGl0cyBvd24gd3JpdGUgb2ZmIGEgcmVwbGljYSB0aGF0XG4gICAqIGhhcyBub3QgcmVwbGF5ZWQgaXQgeWV0LlxuICAgKlxuICAgKiBEZWxpYmVyYXRlbHkgc2V0IGJ5IGB3aXRoVGVuYW50VHhgIHJhdGhlciB0aGFuIGJ5IHdyaXRlIGNhbGwgc2l0ZXM6IHRoYXRcbiAgICogcGF0aCBpcyB0aGUgb25lIHRoYXQgY2FuIHdyaXRlLCBpdCBuZWVkcyBubyBwZXItY2FsbC1zaXRlIGRpc2NpcGxpbmUsIGFuZFxuICAgKiBiZWluZyB3cm9uZyBpbiB0aGlzIGRpcmVjdGlvbiBvbmx5IGNvc3RzIGEgcmVwbGljYSBoaXQuIE11dGF0ZWQgaW4gcGxhY2Ugb25cbiAgICogdGhlIEFzeW5jTG9jYWxTdG9yYWdlIHN0b3JlIOKAlCB0aGUgc3RvcmUgaXMgcGVyLXJlcXVlc3QsIHNvIHRoaXMgY2Fubm90IGxlYWtcbiAgICogYmV0d2VlbiByZXF1ZXN0cy5cbiAgICpcbiAgICogU0NPUEU6IHRoaXMgZmxhZyBjb3ZlcnMgcmVhZHMgQUZURVIgYSB3cml0ZSBJTiBUSEUgU0FNRSBSRVFVRVNULiBUaGVcbiAgICogbmV4dC1yZXF1ZXN0IGNhc2UgKFBPU1QsIHRoZW4gYSBwYWdlIHJlbG9hZCBpc3N1aW5nIEdFVCkgbmVlZHMgc2hhcmVkIHN0YXRlXG4gICAqIGFuZCBpcyBoYW5kbGVkIGJ5IGFwaS1zZXJ2ZXIncyBgd3JpdGUtcGluLnRzYCwgd2hpY2ggcmVtZW1iZXJzIGluIFJlZGlzXG4gICAqIHRoYXQgYW4gb3JnIHdyb3RlIHJlY2VudGx5IGFuZCBQUkUtU0VUUyB0aGlzIHNhbWUgZmxhZyBvbiB0aGUgbmV4dFxuICAgKiByZXF1ZXN0J3MgY29udGV4dCDigJQgb25lIG1lY2hhbmlzbSBhbmQgb25lIGNvZGUgcGF0aCByYXRoZXIgdGhhbiB0d28uIEl0XG4gICAqIGZhaWxzIGNsb3NlZCAobm8gUmVkaXMsIG9yIGFuIHVucmVhY2hhYmxlIG9uZSwgcm91dGVzIHJlYWRzIHRvIHRoZSBwcmltYXJ5KVxuICAgKiBhbmQgc2hvcnQtY2lyY3VpdHMgZW50aXJlbHkgd2hlbiBubyByZWFkIHJlcGxpY2EgaXMgY29uZmlndXJlZC5cbiAgICovXG4gIG1heUhhdmVXcml0dGVuPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQZXItcmVxdWVzdCB0ZW5hbnQgY29udGV4dC4gUG9wdWxhdGVkIGJ5IEV4cHJlc3MgbWlkZGxld2FyZSBvbmNlIHRoZSBKV1RcbiAqIGlzIHZhbGlkYXRlZDsgY29uc3VtZWQgYnkgYHdpdGhUZW5hbnRUeGAgYW5kIGFueSBoZWxwZXIgdGhhdCBuZWVkcyB0b1xuICoga25vdyBcIndobyBpcyB0aGUgY2FsbGVyXCIgd2l0aG91dCByZS1kZXJpdmluZyBmcm9tIHRoZSByZXF1ZXN0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlbmFudENvbnRleHQgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8VGVuYW50Q29udGV4dD4oKTtcblxuLyoqXG4gKiBSdW4gYGZuYCBpbnNpZGUgdGhlIGdpdmVuIHRlbmFudCBzY29wZS4gVGhlIEFzeW5jTG9jYWxTdG9yYWdlIHNjb3BlXG4gKiBzdXJ2aXZlcyBhY3Jvc3MgYXN5bmMgYm91bmRhcmllcyAoUHJvbWlzZXMsIHNldFRpbWVvdXQsIGV0Yy4pLCBzbyBhbnlcbiAqIGB3aXRoVGVuYW50VHhgIGNhbGwgaW5zaWRlIGBmbmAg4oCUIGRpcmVjdGx5IG9yIHRocm91Z2ggYW55IGRlcHRoIG9mXG4gKiBhc3luYyBoZWxwZXJzIOKAlCBwaWNrcyB1cCBgY3R4YC5cbiAqXG4gKiBXcmFwIGBuZXh0KClgIGZyb20gYW4gRXhwcmVzcyBtaWRkbGV3YXJlIHRvIGVzdGFibGlzaCBwZXItcmVxdWVzdCBzY29wZTpcbiAqXG4gKiAgICAgYXBwLnVzZSgocmVxLCByZXMsIG5leHQpID0+IHtcbiAqICAgICAgIHJ1bldpdGhUZW5hbnRDb250ZXh0KHsgb3JnSWQsIGlzU3VwZXJBZG1pbiB9LCAoKSA9PiBuZXh0KCkpO1xuICogICAgIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuV2l0aFRlbmFudENvbnRleHQ8VD4oY3R4OiBUZW5hbnRDb250ZXh0LCBmbjogKCkgPT4gVCk6IFQge1xuICByZXR1cm4gdGVuYW50Q29udGV4dC5ydW4oY3R4LCBmbik7XG59XG5cbi8qKiBSZWFkIHRoZSBjdXJyZW50IHRlbmFudCBjb250ZXh0LiBSZXR1cm5zIHVuZGVmaW5lZCBvdXRzaWRlIGFuXG4gKiAgYHJ1bldpdGhUZW5hbnRDb250ZXh0YCBzY29wZSAoZS5nLiBiYWNrZ3JvdW5kIHdvcmtlcnMsIG1pZ3JhdGlvbnMpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbmFudENvbnRleHQoKTogVGVuYW50Q29udGV4dCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0ZW5hbnRDb250ZXh0LmdldFN0b3JlKCk7XG59XG5cbi8qKlxuICogT3BlbiBhIHRyYW5zYWN0aW9uIHdpdGggUkxTIEdVQ3MgU0VUIExPQ0FMIGZyb20gdGhlIGN1cnJlbnRcbiAqIEFzeW5jTG9jYWxTdG9yYWdlIHRlbmFudCBjb250ZXh0LCB0aGVuIGludm9rZSBgZm4odHgpYC5cbiAqXG4gKiAtIFdoZW4gY2FsbGVkIG91dHNpZGUgYSB0ZW5hbnQgc2NvcGUgKGUuZy4gZnJvbSBhIGJhY2tncm91bmQgam9iIHRoYXRcbiAqICAgZG9lc24ndCBoYXZlIGEgY2FsbGVyIGlkZW50aXR5KSwgdGhlIHRyYW5zYWN0aW9uIGlzIG9wZW5lZCB3aXRoIGJvdGhcbiAqICAgR1VDcyBjbGVhcmVkIOKAlCBSTFMgcG9saWNpZXMgd2lsbCByZXR1cm4gemVybyByb3dzIG9uIEZPUkNFJ2QgdGFibGVzLlxuICogICBDYWxsZXJzIHRoYXQgbmVlZCBhIHN5c2FkbWluLWVxdWl2YWxlbnQgc2NvcGUgc2hvdWxkIHdyYXAgdGhlbXNlbHZlcyBpblxuICogICBgcnVuV2l0aFRlbmFudENvbnRleHQoeyBpc1N1cGVyQWRtaW46IHRydWUgfSwg4oCmKWAgZXhwbGljaXRseS5cbiAqXG4gKiAtIFVzZXMgYHNldF9jb25maWcoa2V5LCB2YWx1ZSwgdHJ1ZSlgICh0aGUgYm9vbGVhbiA9IGBpc19sb2NhbGAsIGkuZS5cbiAqICAgdHJhbnNhY3Rpb24tc2NvcGVkKS4gRXF1aXZhbGVudCB0byBgU0VUIExPQ0FMYCBidXQgdGFrZXMgdGhlIHZhbHVlIGFzXG4gKiAgIGEgcGFyYW1ldGVyLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQg4oCUIERyaXp6bGUncyBgc3FsYCB0ZW1wbGF0ZSBiaW5kcyB0aGVcbiAqICAgdmFsdWUgc2FmZWx5IHNvIGFuIGF0dGFja2VyLWNvbnRyb2xsZWQgYG9yZ0lkYCBjYW4ndCBlc2NhcGUgdGhlIHF1b3RpbmcuXG4gKlxuICogLSBSZXR1cm5zIHdoYXRldmVyIGBmbmAgcmV0dXJuczsgdGhyb3dzIHdoYXRldmVyIGBmbmAgdGhyb3dzIChEcml6emxlXG4gKiAgIGhhbmRsZXMgdGhlIENPTU1JVC9ST0xMQkFDSyBmb3IgdXMpLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2l0aFRlbmFudFR4PFQ+KFxuICBmbjogKHR4OiBQYXJhbWV0ZXJzPFBhcmFtZXRlcnM8dHlwZW9mIGRiLnRyYW5zYWN0aW9uPlswXT5bMF0pID0+IFByb21pc2U8VD4sXG4gIC8qKlxuICAgKiBJTlRFUk5BTC4gV2hldGhlciB0aGlzIHRyYW5zYWN0aW9uIHNob3VsZCBtYXJrIHRoZSByZXF1ZXN0IGFzIHBvc3NpYmx5XG4gICAqIGhhdmluZyB3cml0dGVuLiBBbHdheXMgdHJ1ZSBmb3IgYSByZWFsIGNhbGxlcjsgb25seSB3aXRoVGVuYW50VHhSZWFkJ3NcbiAgICogcHJpbWFyeS1mYWxsYmFjayBwYXRoIHBhc3NlcyBmYWxzZSwgYmVjYXVzZSBhIHJlYWQgdGhhdCBsYW5kcyBvbiB0aGVcbiAgICogcHJpbWFyeSBoYXMgbm90IHdyaXR0ZW4uIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgYXNzaWdubWVudCBiZWxvdy5cbiAgICovXG4gIG1hcmtXcml0dGVuID0gdHJ1ZSxcbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBjdHggPSB0ZW5hbnRDb250ZXh0LmdldFN0b3JlKCk7XG5cbiAgaWYgKCFjdHgpIHtcbiAgICAvLyBTdXJmYWNlIHRoZSBidWcgaW5zdGVhZCBvZiBzaWxlbnRseSBTRVQnaW5nIGVtcHR5IEdVQ3MuIFRoZSBkZWZhdWx0XG4gICAgLy8gbW9kZSAoJ3dhcm4nKSBsb2dzIGFuIGFjdGlvbmFibGUgdHJhY2Ugc28gdGhlIGJhZCBjYWxsIHNpdGUgaXMgZWFzeVxuICAgIC8vIHRvIGZpbmQ7IHByb2R1Y3Rpb24gZGVwbG95bWVudHMgdGhhdCBoYXZlIGZpbmlzaGVkIHRoZSBhdWRpdCBjYW4gc2V0XG4gICAgLy8gUkxTX0NPTlRFWFRfTU9ERT1zdHJpY3QgdG8gZmFpbC1mYXN0IGF0IHRoZSBjYWxsIHNpdGUgKGJldHRlciBzdGFja1xuICAgIC8vIHRyYWNlIHRoYW4gdGhlIFBvc3RncmVzIFwicGVybWlzc2lvbiBkZW5pZWRcIiB0aGF0IHdvdWxkIG90aGVyd2lzZVxuICAgIC8vIHN1cmZhY2UgZnJvbSBGT1JDRSdkIFJMUykuXG4gICAgY29uc3QgbW9kZSA9IGdldENvbnRleHRNb2RlKCk7XG4gICAgaWYgKG1vZGUgPT09ICdzdHJpY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICd3aXRoVGVuYW50VHggY2FsbGVkIG91dHNpZGUgYSB0ZW5hbnQgc2NvcGUuIFdyYXAgeW91ciBoYW5kbGVyL3dvcmtlciAnXG4gICAgICAgICsgJ2luIHJ1bldpdGhUZW5hbnRDb250ZXh0KHsgb3JnSWQsIGlzU3VwZXJBZG1pbiB9LCAuLi4pIGJlZm9yZSBpbnZva2luZyAnXG4gICAgICAgICsgJ2FueSBzZXJ2aWNlIHRoYXQgdG91Y2hlcyBSTFMtZW5mb3JjZWQgdGFibGVzLicsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAobW9kZSA9PT0gJ3dhcm4nKSB7XG4gICAgICAvLyBJbmNsdWRlIGEgc3ludGhldGljIHN0YWNrIHNvIHRoZSBvZmZlbmRpbmcgY2FsbCBzaXRlIGlzIGluIHRoZSBsb2cuXG4gICAgICBsb2dnZXIud2Fybignd2l0aFRlbmFudFR4IGNhbGxlZCBvdXRzaWRlIGEgdGVuYW50IHNjb3BlOyBSTFMgR1VDcyB3aWxsIGJlIGVtcHR5Jywge1xuICAgICAgICBzdGFjazogbmV3IEVycm9yKCd0ZW5hbnQtY29udGV4dCBtaXNzaW5nJykuc3RhY2ssXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmdJZCA9IGN0eD8ub3JnSWQgPz8gJyc7XG4gIGNvbnN0IGlzU3VwZXJBZG1pbiA9IGN0eD8uaXNTdXBlckFkbWluID8gJ3RydWUnIDogJ2ZhbHNlJztcblxuICBjb25zdCBzdGF0ZW1lbnRUaW1lb3V0TXMgPSBnZXRTdGF0ZW1lbnRUaW1lb3V0TXMoKTtcblxuICAvLyBUaGlzIHRyYW5zYWN0aW9uIHJ1bnMgb24gdGhlIFBSSU1BUlkgYW5kIG1heSB3cml0ZSwgc28gYW55IGxhdGVyIHJlYWQgaW5cbiAgLy8gdGhpcyByZXF1ZXN0IG11c3Qgc3RheSBvbiB0aGUgcHJpbWFyeSB0b28uIFNldCBiZWZvcmUgdGhlIHRyYW5zYWN0aW9uIG9wZW5zXG4gIC8vIHJhdGhlciB0aGFuIGFmdGVyIGl0IGNvbW1pdHM6IGEgcmVhZCBpc3N1ZWQgY29uY3VycmVudGx5IGZyb20gdGhlIHNhbWVcbiAgLy8gaGFuZGxlciB3b3VsZCBvdGhlcndpc2UgcmFjZSB0aGUgZmxhZy5cbiAgLy9cbiAgLy8gYG1hcmtXcml0dGVuOiBmYWxzZWAgaXMgcGFzc2VkIE9OTFkgYnkgd2l0aFRlbmFudFR4UmVhZCdzIGZhbGxiYWNrIHBhdGgsXG4gIC8vIGFuZCBpdCBpcyBub3QgYW4gb3B0aW1pc2F0aW9uIOKAlCB3aXRob3V0IGl0IHRoZSBmZWF0dXJlIGRlZmVhdHMgaXRzZWxmLiBUaGF0XG4gIC8vIHBhdGggcnVucyBvbiB0aGUgcHJpbWFyeSwgc28gaXQgd291bGQgc2V0IHRoaXMgZmxhZywgd2hpY2ggYXBpLXNlcnZlcidzXG4gIC8vIG1pZGRsZXdhcmUgcmVhZHMgYWZ0ZXIgdGhlIHJlc3BvbnNlIHRvIHNldCB0aGUgUmVkaXMgd3JpdGUgcGluLiBBIHB1cmVseVxuICAvLyBSRUFELU9OTFkgcmVxdWVzdCB3b3VsZCB0aGVyZWZvcmUgcGluIGl0cyB3aG9sZSBvcmcgdG8gdGhlIHByaW1hcnkgZm9yIHRoZVxuICAvLyBwaW4gVFRMLCBldmVyeSB0aW1lLCBhbmQgc2luY2UgcmVhZHMgZmFsbCBiYWNrIHdoZW5ldmVyIG5vIHJlcGxpY2EgaXNcbiAgLy8gY29uZmlndXJlZCAodGhlIHNoaXBwaW5nIGRlZmF1bHQpIGV2ZXJ5IG9yZyB3b3VsZCBiZSBwZXJtYW5lbnRseSBwaW5uZWQuXG4gIC8vIFRoZSBmbGFnIG1lYW5zIFwidGhpcyByZXF1ZXN0IG1heSBoYXZlIFdSSVRURU5cIiwgbm90IFwidGhpcyByZXF1ZXN0IHRvdWNoZWRcbiAgLy8gdGhlIHByaW1hcnlcIiwgYW5kIHRoZSBkaWZmZXJlbmNlIGlzIHRoZSB3aG9sZSByZWFkLW9mZmxvYWQgYmVuZWZpdC5cbiAgaWYgKGN0eCAmJiBtYXJrV3JpdHRlbikgY3R4Lm1heUhhdmVXcml0dGVuID0gdHJ1ZTtcblxuICByZXR1cm4gZGIudHJhbnNhY3Rpb24oYXN5bmMgKHR4KSA9PiB7XG4gICAgLy8gU2V0IGV2ZXJ5IHRyYW5zYWN0aW9uLXNjb3BlZCBHVUMgaW4gYSBTSU5HTEUgcm91bmQtdHJpcC4gYHNldF9jb25maWcoKWBcbiAgICAvLyByZXR1cm5zIGl0cyB2YWx1ZSwgc28gbXVsdGlwbGUgY2FsbHMgY29tcG9zZSBpbiBvbmUgU0VMRUNUIHJhdGhlciB0aGFuIGFcbiAgICAvLyByb3VuZC10cmlwIHBlciBHVUMg4oCUIGVhY2ggYSBuZXR3b3JrIGhvcCB0aGF0IHRheGVzIHRoZSBzaGFyZWQgUGdCb3VuY2VyXG4gICAgLy8gcG9vbCBvbiB0aGUgaG90IHBhdGguIGB0cnVlYFxuICAgIC8vID0gaXNfbG9jYWwgKFNFVCBMT0NBTCBzZW1hbnRpY3M6IGF1dG8tcmVsZWFzZWQgb24gQ09NTUlUL1JPTExCQUNLKS4gVGhlXG4gICAgLy8gZHJpdmVyIGJpbmRzIHRoZSB2YWx1ZXMgYXMgcGFyYW1ldGVycywgc28gYSBob3N0aWxlIG9yZ19pZCBjYW4ndCBicmVhayBvdXRcbiAgICAvLyBvZiB0aGUgR1VDIHN5bnRheC5cbiAgICAvL1xuICAgIC8vIFRoZSBzdGF0ZW1lbnRfdGltZW91dCBHVUMgYm91bmRzIGEgcnVuYXdheSBxdWVyeSBzbyBpdCBjYW4ndCBob2xkIGEgcG9vbGVkXG4gICAgLy8gY29ubmVjdGlvbiBvcGVuIGluZGVmaW5pdGVseSAoYFNFVCBMT0NBTCBzdGF0ZW1lbnRfdGltZW91dCA9ICQxYCBpcyByZWplY3RlZFxuICAgIC8vIGJ5IFBvc3RncmVzLCBoZW5jZSBzZXRfY29uZmlnIHdpdGggYSBib3VuZCBtcyB2YWx1ZSkuIEluY2x1ZGVkIGluIHRoZSBzYW1lXG4gICAgLy8gc3RhdGVtZW50IHdoZW4gZW5hYmxlZCAoPjApLCBkcm9wcGVkIGVudGlyZWx5IHdoZW4gZGlzYWJsZWQgKDApLlxuICAgIGlmIChzdGF0ZW1lbnRUaW1lb3V0TXMgPiAwKSB7XG4gICAgICBhd2FpdCB0eC5leGVjdXRlKFxuICAgICAgICBzcWxgU0VMRUNUIHNldF9jb25maWcoJ2FwcC5vcmdfaWQnLCAke29yZ0lkfSwgdHJ1ZSksIHNldF9jb25maWcoJ2FwcC5pc19zeXNhZG1pbicsICR7aXNTdXBlckFkbWlufSwgdHJ1ZSksIHNldF9jb25maWcoJ3N0YXRlbWVudF90aW1lb3V0JywgJHtTdHJpbmcoc3RhdGVtZW50VGltZW91dE1zKX0sIHRydWUpYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHR4LmV4ZWN1dGUoXG4gICAgICAgIHNxbGBTRUxFQ1Qgc2V0X2NvbmZpZygnYXBwLm9yZ19pZCcsICR7b3JnSWR9LCB0cnVlKSwgc2V0X2NvbmZpZygnYXBwLmlzX3N5c2FkbWluJywgJHtpc1N1cGVyQWRtaW59LCB0cnVlKWAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZm4odHgpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBXaHkgYSByZWFkIHdhcyBvciB3YXMgbm90IHNlbnQgdG8gdGhlIHJlcGxpY2EuIFJldHVybmVkIGJ5XG4gKiB7QGxpbmsgY2hvb3NlUmVhZFRhcmdldH0gc28gdGhlIGRlY2lzaW9uIGlzIGluc3BlY3RhYmxlIOKAlCBhbmQgdGVzdGFibGVcbiAqIHdpdGhvdXQgYSByZXBsaWNhLCB3aGljaCBtYXR0ZXJzIGJlY2F1c2UgdGhlIHRlc3Qgc3Vic3RyYXRlIChQR2xpdGUpIGhhcyBub1xuICogcmVwbGljYXRpb24gYXQgYWxsLlxuICovXG5leHBvcnQgdHlwZSBSZWFkVGFyZ2V0UmVhc29uID1cbiAgLyoqIE5vIHJlcGxpY2EgY29uZmlndXJlZCwgb3IgREJfUkVBRF9FTkFCTEVEPWZhbHNlLiAqL1xuICB8ICduby1yZXBsaWNhJ1xuICAvKiogVGhpcyByZXF1ZXN0IGFscmVhZHkgb3BlbmVkIGEgcHJpbWFyeSB0cmFuc2FjdGlvbiBhbmQgbWF5IGhhdmUgd3JpdHRlbi4gKi9cbiAgfCAnbWF5LWhhdmUtd3JpdHRlbidcbiAgLyoqXG4gICAqIE5vIHRlbmFudCBjb250ZXh0LiBBIGNhbGxlciBvdXRzaWRlIGBydW5XaXRoVGVuYW50Q29udGV4dGAgaGFzIG5vIG9yZyB0b1xuICAgKiBzY29wZSBSTFMgYnkgYW5kIG5vIHdhdGVybWFyayB0byBjb21wYXJlLCBzbyBpdCBnb2VzIHRvIHRoZSBwcmltYXJ5IOKAlCB3aGVyZVxuICAgKiBgd2l0aFRlbmFudFR4YCdzIFJMU19DT05URVhUX01PREUgZ3VhcmQgbG9ncyBvciB0aHJvd3MuIFJvdXRlZCB0byBhIHJlcGxpY2FcbiAgICogaW5zdGVhZCwgdGhlIHNhbWUgY2FsbCB3b3VsZCBzZXQgYGFwcC5vcmdfaWQgPSAnJ2Agd2l0aCBubyBkaWFnbm9zdGljIGF0IGFsbC5cbiAgICovXG4gIHwgJ25vLWNvbnRleHQnXG4gIC8qKlxuICAgKiBBIHJlcGxpY2EgZXhpc3RzIGJ1dCBpdHMgcmVwbGF5IGxhZyBpcyBiZXlvbmQgYERCX1JFQURfTUFYX0xBR19TRUNPTkRTYCxcbiAgICogb3IgaXMgVU5LTk9XTiAobm8gc2FtcGxlIHlldCwgdGhlIHNhbXBsZSBmYWlsZWQsIG9yIHRoZSBjYWNoZWQgc2FtcGxlIGhhc1xuICAgKiBnb25lIHN0YWxlKS4gVW5rbm93biBhbmQgbGFnZ2luZyBhcmUgdGhlIHNhbWUgZGVjaXNpb24gb24gcHVycG9zZTogdGhlXG4gICAqIGNpcmN1aXQgZmFpbHMgY2xvc2VkLlxuICAgKi9cbiAgfCAncmVwbGljYS1sYWdnaW5nJ1xuICAvKiogUm91dGVkIHRvIHRoZSByZXBsaWNhLiAqL1xuICB8ICdyZXBsaWNhJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWFkVGFyZ2V0IHtcbiAgdXNlUmVwbGljYTogYm9vbGVhbjtcbiAgcmVhc29uOiBSZWFkVGFyZ2V0UmVhc29uO1xufVxuXG4vKipcbiAqIERlY2lkZSB3aGVyZSBhIHJlYWQtb25seSB0cmFuc2FjdGlvbiBzaG91bGQgcnVuLlxuICpcbiAqIFB1cmUgYW5kIHNpZGUtZWZmZWN0IGZyZWUgb24gcHVycG9zZTogdGhpcyBpcyB0aGUgd2hvbGUgb2YgdGhlIHJvdXRpbmdcbiAqIHBvbGljeSwgYW5kIGl0IGlzIHRoZSBwYXJ0IHdvcnRoIHRlc3RpbmcuIFJlcGxpY2F0aW9uIGl0c2VsZiBjYW5ub3QgYmVcbiAqIHJlcHJvZHVjZWQgbG9jYWxseSwgc28gdGhlIHRlc3RhYmxlIHVuaXQgaXMgdGhlIERFQ0lTSU9OLCBub3QgdGhlIGxhZy5cbiAqXG4gKiBUaGUgYmlhcyBpcyBkZWxpYmVyYXRlOiBhbnl0aGluZyB1bmNlcnRhaW4gcmVzb2x2ZXMgdG8gdGhlIHByaW1hcnkuIEEgcmVhZFxuICogc2VydmVkIGJ5IHRoZSBwcmltYXJ5IGlzIG1lcmVseSBsZXNzIGVmZmljaWVudDsgYSByZWFkIHNlcnZlZCBieSBhIHN0YWxlXG4gKiByZXBsaWNhIGlzIGEgdXNlci12aXNpYmxlIGJ1ZyBub2JvZHkgY2FuIHJlcHJvZHVjZS5cbiAqL1xuLyoqIEV2ZXJ5dGhpbmcgYWJvdXQgdGhlIHJlcGxpY2EgdGhhdCBpcyBub3QgcmVxdWVzdC1zcGVjaWZpYy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZFJlcGxpY2FIZWFsdGgge1xuICAvKiogQSByZXBsaWNhIHBvb2wgZXhpc3RzIEFORCBgREJfUkVBRF9FTkFCTEVEYCBpcyBub3QgZmFsc2UuICovXG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgLyoqIFRoZSBsYWcgY2lyY3VpdCdzIHZlcmRpY3QuIGB1bmtub3duYCBpcyB0cmVhdGVkIGV4YWN0bHkgbGlrZSBgbGFnZ2luZ2AuICovXG4gIGxhZzogTGFnVmVyZGljdDtcbn1cblxuLyoqXG4gKiBXaGVyZSBhIHJlYWQgZ29lcywgYW5kIHdoeS5cbiAqXG4gKiBTWVNURU0gZ2F0ZXMgYXJlIGNoZWNrZWQgYmVmb3JlIFJFUVVFU1QgZ2F0ZXMsIHdoaWNoIG1hdHRlcnMgb25seSBmb3IgdGhlXG4gKiBleHBsYW5hdGlvbiDigJQgYnV0IHRoZSBleHBsYW5hdGlvbiBpcyB3aGF0IGFuIG9wZXJhdG9yIHJlYWRzIHdoZW4gYXNraW5nIHdoeVxuICogdGhlIHJlcGxpY2EgaXMgaWRsZSwgYW5kIFwibXkgcmVxdWVzdCB3cm90ZVwiIGlzIGEgZmFyIGxlc3MgdXNlZnVsIGFuc3dlciB0aGFuXG4gKiBcInRoZSBzdGFuZGJ5IGlzIDQwIHNlY29uZHMgYmVoaW5kXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaG9vc2VSZWFkVGFyZ2V0KGN0eDogVGVuYW50Q29udGV4dCB8IHVuZGVmaW5lZCwgaGVhbHRoOiBSZWFkUmVwbGljYUhlYWx0aCk6IFJlYWRUYXJnZXQge1xuICBpZiAoIWhlYWx0aC5hdmFpbGFibGUpIHJldHVybiB7IHVzZVJlcGxpY2E6IGZhbHNlLCByZWFzb246ICduby1yZXBsaWNhJyB9O1xuICBpZiAoaGVhbHRoLmxhZyAhPT0gJ29rJykgcmV0dXJuIHsgdXNlUmVwbGljYTogZmFsc2UsIHJlYXNvbjogJ3JlcGxpY2EtbGFnZ2luZycgfTtcbiAgaWYgKCFjdHgpIHJldHVybiB7IHVzZVJlcGxpY2E6IGZhbHNlLCByZWFzb246ICduby1jb250ZXh0JyB9O1xuICBpZiAoY3R4Lm1heUhhdmVXcml0dGVuKSByZXR1cm4geyB1c2VSZXBsaWNhOiBmYWxzZSwgcmVhc29uOiAnbWF5LWhhdmUtd3JpdHRlbicgfTtcbiAgcmV0dXJuIHsgdXNlUmVwbGljYTogdHJ1ZSwgcmVhc29uOiAncmVwbGljYScgfTtcbn1cblxuLyoqXG4gKiBPcGVuIGEgUkVBRC1PTkxZIHRyYW5zYWN0aW9uIHdpdGggdGhlIHNhbWUgUkxTIEdVQ3MgYHdpdGhUZW5hbnRUeGAgc2V0cyxcbiAqIHJvdXRlZCB0byB0aGUgcmVwbGljYSB3aGVuIHtAbGluayBjaG9vc2VSZWFkVGFyZ2V0fSBhbGxvd3MgaXQuXG4gKlxuICogYFNFVCBUUkFOU0FDVElPTiBSRUFEIE9OTFlgIGlzIHRoZSBndWFyZHJhaWwsIG5vdCBkZWNvcmF0aW9uLiBTZXZlcmFsIHF1ZXJpZXNcbiAqIGluIHRoaXMgY29kZWJhc2UgbG9vayBsaWtlIHJlYWRzIGF0IHRoZSBjYWxsIHNpdGUgYW5kIGFyZSBub3Qg4oCUXG4gKiBgU0VMRUNUIOKApiBGT1IgVVBEQVRFYCBpbiBjcnVkLXNlcnZpY2UncyBzZXREZWZhdWx0LCBgcGdfYWR2aXNvcnlfeGFjdF9sb2NrYFxuICogaW4gcGlwZWxpbmUtc2VydmljZSBhbmQgY29tcGxpYW5jZSdzIHN1YnNjcmlwdGlvbi1zZXJ2aWNlLiBSb3V0ZWQgdG8gYVxuICogc3RhbmRieSB0aG9zZSBmYWlsIGFueXdheTsgZGVjbGFyaW5nIHRoZSB0cmFuc2FjdGlvbiByZWFkLW9ubHkgbWFrZXMgdGhlbVxuICogZmFpbCBIRVJFLCB3aXRoIGEgY2xlYXIgbWVzc2FnZSwgaW5jbHVkaW5nIG9uIHRoZSBwcmltYXJ5IHdoZXJlIHRoZXkgd291bGRcbiAqIG90aGVyd2lzZSBzdWNjZWVkIGFuZCBxdWlldGx5IGFjcXVpcmUgYSBsb2NrIHRoZSBjYWxsZXIgZGlkIG5vdCBpbnRlbmQuXG4gKlxuICogRmFsbHMgYmFjayB0byB0aGUgcHJpbWFyeSB0cmFuc3BhcmVudGx5LCBzbyBhIGNhbGxlciBuZXZlciBoYXMgdG8gYXNrXG4gKiB3aGV0aGVyIGEgcmVwbGljYSBleGlzdHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3aXRoVGVuYW50VHhSZWFkPFQ+KFxuICBmbjogKHR4OiBQYXJhbWV0ZXJzPFBhcmFtZXRlcnM8dHlwZW9mIGRiLnRyYW5zYWN0aW9uPlswXT5bMF0pID0+IFByb21pc2U8VD4sXG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgY3R4ID0gdGVuYW50Q29udGV4dC5nZXRTdG9yZSgpO1xuICBjb25zdCByZWFkRGIgPSBnZXRSZWFkRGIoKTtcbiAgY29uc3QgcmVhZFBvb2wgPSBnZXRSZWFkUG9vbCgpO1xuXG4gIC8vIEtlZXAgdGhlIGxhZyBzYW1wbGUgd2FybS4gRmlyZS1hbmQtZm9yZ2V0IGJ5IGRlc2lnbjogaXQgaXMgZGVib3VuY2VkIHRvXG4gIC8vIERCX1JFQURfTEFHX1NBTVBMRV9NUywgbmV2ZXIgdGhyb3dzLCBhbmQgbXVzdCBub3QgYWRkIGEgcm91bmQtdHJpcCB0byB0aGlzXG4gIC8vIHJlYWQuIFRoZSBmaXJzdCByZWFkIG9mIGEgcHJvY2VzcyB0aGVyZWZvcmUgcm91dGVzIHRvIHRoZSBwcmltYXJ5IChub1xuICAvLyBzYW1wbGUgeWV0KSBhbmQgd2FybXMgdGhlIGNpcmN1aXQgZm9yIHRoZSBvbmVzIGFmdGVyIGl0LlxuICBpZiAocmVhZFBvb2wpIHZvaWQgbWF5YmVTYW1wbGVMYWcocmVhZFBvb2wpO1xuXG4gIGNvbnN0IHRhcmdldCA9IGNob29zZVJlYWRUYXJnZXQoY3R4LCB7IGF2YWlsYWJsZTogcmVhZERiICE9PSBudWxsLCBsYWc6IGxhZ1ZlcmRpY3QoKSB9KTtcbiAgZW1pdENvdW50ZXIoJ3Bvc3RncmVzX3JlYWRfcm91dGVkX3RvdGFsJywgeyB0YXJnZXQ6IHRhcmdldC51c2VSZXBsaWNhID8gJ3JlcGxpY2EnIDogJ3ByaW1hcnknLCByZWFzb246IHRhcmdldC5yZWFzb24gfSk7XG5cbiAgaWYgKCF0YXJnZXQudXNlUmVwbGljYSkge1xuICAgIC8vIFByaW1hcnkgcGF0aDogaWRlbnRpY2FsIHNlbWFudGljcyB0byB3aXRoVGVuYW50VHgsIHBsdXMgdGhlIHJlYWQtb25seVxuICAgIC8vIGRlY2xhcmF0aW9uIHNvIGFuIGFjY2lkZW50YWwgd3JpdGUgaXMgY2F1Z2h0IG9uIGV2ZXJ5IHRhcmdldCDigJQgaW5jbHVkaW5nXG4gICAgLy8gdGhlIG9uZXMgdGhhdCB3aWxsIG5ldmVyIGhhdmUgYSByZXBsaWNhLlxuICAgIHJldHVybiB3aXRoVGVuYW50VHgoYXN5bmMgKHR4KSA9PiB7XG4gICAgICBhd2FpdCB0eC5leGVjdXRlKHNxbGBTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZYCk7XG4gICAgICByZXR1cm4gZm4odHgpO1xuICAgIH0sIC8qIG1hcmtXcml0dGVuICovIGZhbHNlKTtcbiAgfVxuXG4gIC8vIE5vbi1udWxsIGJ5IGNvbnN0cnVjdGlvbjogY2hvb3NlUmVhZFRhcmdldCBvbmx5IHJldHVybnMgdXNlUmVwbGljYSBmb3IgYVxuICAvLyBjdHggdGhhdCBleGlzdHMuIFJlYWQgdGhlIEdVQ3Mgb2ZmIGl0IGRpcmVjdGx5IHJhdGhlciB0aGFuIGRlZmF1bHRpbmcgdG9cbiAgLy8gJycg4oCUIGEgZGVmYXVsdCBoZXJlIHdvdWxkIHNpbGVudGx5IHJlLW9wZW4gdGhlIGhvbGUgdGhhdCAnbm8tY29udGV4dCdcbiAgLy8gY2xvc2VzLCBiZWNhdXNlIGFuIGVtcHR5IGFwcC5vcmdfaWQgaXMgYSBWQUxJRC1sb29raW5nIFJMUyBzY29wZS5cbiAgY29uc3QgeyBvcmdJZCB9ID0gY3R4ITtcbiAgY29uc3QgaXNTdXBlckFkbWluID0gY3R4IS5pc1N1cGVyQWRtaW4gPyAndHJ1ZScgOiAnZmFsc2UnO1xuICBjb25zdCBzdGF0ZW1lbnRUaW1lb3V0TXMgPSBnZXRTdGF0ZW1lbnRUaW1lb3V0TXMoKTtcblxuICByZXR1cm4gcmVhZERiIS50cmFuc2FjdGlvbihhc3luYyAodHgpID0+IHtcbiAgICBhd2FpdCB0eC5leGVjdXRlKHNxbGBTRVQgVFJBTlNBQ1RJT04gUkVBRCBPTkxZYCk7XG4gICAgaWYgKHN0YXRlbWVudFRpbWVvdXRNcyA+IDApIHtcbiAgICAgIGF3YWl0IHR4LmV4ZWN1dGUoXG4gICAgICAgIHNxbGBTRUxFQ1Qgc2V0X2NvbmZpZygnYXBwLm9yZ19pZCcsICR7b3JnSWR9LCB0cnVlKSwgc2V0X2NvbmZpZygnYXBwLmlzX3N5c2FkbWluJywgJHtpc1N1cGVyQWRtaW59LCB0cnVlKSwgc2V0X2NvbmZpZygnc3RhdGVtZW50X3RpbWVvdXQnLCAke1N0cmluZyhzdGF0ZW1lbnRUaW1lb3V0TXMpfSwgdHJ1ZSlgLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgdHguZXhlY3V0ZShcbiAgICAgICAgc3FsYFNFTEVDVCBzZXRfY29uZmlnKCdhcHAub3JnX2lkJywgJHtvcmdJZH0sIHRydWUpLCBzZXRfY29uZmlnKCdhcHAuaXNfc3lzYWRtaW4nLCAke2lzU3VwZXJBZG1pbn0sIHRydWUpYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmbih0eCk7XG4gIH0pO1xufVxuIl19
package/lib/index.js CHANGED
@@ -64,4 +64,4 @@ export { resolvePeriod, resolvePeriodByLabel, rejectUnreportablePeriod, nextPeri
64
64
  export { ReportingService, reportingService, } from './api/reporting-service.js';
65
65
  // Filters
66
66
  export {} from './core/query-filters.js';
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFFSCxXQUFXO0FBQ1gsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyw4QkFBOEI7QUFDOUIsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGFBQWEsR0FDZCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFDTCxjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFHNUIsZUFBZSxFQUNmLGVBQWUsRUFHZixZQUFZLEdBRWIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsNEJBQTRCLEdBRTdCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixjQUFjLEVBR2QsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQjtBQUNwQiwyRUFB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RUFDWCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUMxQixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGFBQWEsRUFhYixzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixXQUFXLEVBQ1gsbUJBQW1CLEdBS3BCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxVQUFVO0FBQ1YsT0FBTyxFQVVOLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBAbW9kdWxlIEBwaXBlbGluZS1idWlsZGVyL3BpcGVsaW5lLWRhdGFcbiAqXG4gKiBEYXRhYmFzZSBsYXllcjogRHJpenpsZSBPUk0gc2NoZW1hcywgY29ubmVjdGlvbiBtYW5hZ2VtZW50LCBhbmQgcXVlcnkgaW5mcmFzdHJ1Y3R1cmUuXG4gKlxuICogKipEYXRhYmFzZSoqXG4gKiAtIGRiIOKAlCBzaGFyZWQgRHJpenpsZSBkYXRhYmFzZSBpbnN0YW5jZVxuICogLSBnZXRDb25uZWN0aW9uLCBjbG9zZUNvbm5lY3Rpb24g4oCUIFBvc3RncmVTUUwgY29ubmVjdGlvbiBsaWZlY3ljbGUgd2l0aCByZXRyeSBsb2dpY1xuICogLSBzY2hlbWEg4oCUIERyaXp6bGUgdGFibGUgZGVmaW5pdGlvbnMgKHBsdWdpbnMsIHBpcGVsaW5lcywgbWVzc2FnZXMsIGNvbXBsaWFuY2UsIGV0Yy4pXG4gKlxuICogKipTZXJ2aWNlcyoqXG4gKiAtIENydWRTZXJ2aWNlIOKAlCBnZW5lcmljIGJhc2UgY2xhc3MgZm9yIG11bHRpLXRlbmFudCBDUlVEIHdpdGggYWNjZXNzIGNvbnRyb2wgYW5kIHBhZ2luYXRpb25cbiAqIC0gUmVwb3J0aW5nU2VydmljZSDigJQgYWdncmVnYXRlIHF1ZXJ5IGFuZCByZXBvcnRpbmcgYmFzZSBjbGFzc1xuICpcbiAqICoqUXVlcnkgQnVpbGRlcnMqKlxuICogLSBidWlsZFBsdWdpbkNvbmRpdGlvbnMsIGJ1aWxkUGlwZWxpbmVDb25kaXRpb25zLCBidWlsZE1lc3NhZ2VDb25kaXRpb25zIOKAlCBmaWx0ZXItdG8tU1FMIGNvbmRpdGlvbiBidWlsZGVyc1xuICogLSBidWlsZENvbXBsaWFuY2VQb2xpY3lDb25kaXRpb25zLCBidWlsZENvbXBsaWFuY2VSdWxlQ29uZGl0aW9ucywgZXRjLiDigJQgY29tcGxpYW5jZSBxdWVyeSBidWlsZGVyc1xuICogLSBBY2Nlc3NDb250cm9sQnVpbGRlciDigJQgcm93LWxldmVsIGFjY2VzcyBjb250cm9sIGNvbmRpdGlvbiBidWlsZGVyXG4gKlxuICogKipGaWx0ZXJzKipcbiAqIC0gUGx1Z2luRmlsdGVyLCBQaXBlbGluZUZpbHRlciwgTWVzc2FnZUZpbHRlciDigJQgdHlwZWQgZmlsdGVyIGludGVyZmFjZXNcbiAqIC0gQ29tcGxpYW5jZVBvbGljeUZpbHRlciwgQ29tcGxpYW5jZVJ1bGVGaWx0ZXIsIGV0Yy4g4oCUIGNvbXBsaWFuY2UgZmlsdGVyIGludGVyZmFjZXNcbiAqIC0gZHJpenpsZVJvd3MsIGRyaXp6bGVDb3VudCDigJQgRHJpenpsZSByZXN1bHQgdHlwZSBoZWxwZXJzXG4gKi9cblxuLy8gRGF0YWJhc2VcbmV4cG9ydCAqIGZyb20gJy4vZGF0YWJhc2UvaW5kZXguanMnO1xuXG4vLyBRdWVyeSBidWlsZGVycyBhbmQgc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vYXBpL3F1ZXJ5LWJ1aWxkZXJzLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgQmFzZUFjY2Vzc0ZpbHRlcixcbiAgQWNjZXNzQ29udHJvbFF1ZXJ5QnVpbGRlcixcbn0gZnJvbSAnLi9hcGkvYWNjZXNzLWNvbnRyb2wtYnVpbGRlci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS92aWV3ZXItY29udGV4dC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS9jcnVkLXNlcnZpY2UuanMnO1xuZXhwb3J0IHtcbiAgcGFyc2VTZW12ZXIsXG4gIGNvbXBhcmVTZW12ZXJQYXJ0cyxcbiAgY29tcGFyZVNlbXZlcixcbiAgaXNWZXJzaW9uUmFuZ2UsXG4gIHNhdGlzZmllc1ZlcnNpb25TcGVjLFxuICBzZW12ZXJPcmRlckJ5LFxufSBmcm9tICcuL2FwaS9zZW12ZXItcmFuZ2UuanMnO1xuZXhwb3J0IHtcbiAgbm9ybWFsaXplUXVlcnksXG4gIHNlYXJjaFB1YmxpY0xpc3RpbmdzLFxuICBsaXN0UHVibGljQ2F0ZWdvcmllcyxcbiAgZ2V0UHVibGljTGlzdGluZyxcbiAgZ2V0UHVibGljTGlzdGVkVmVyc2lvbixcbiAgbGlzdFB1YmxpY1Jldmlld3MsXG4gIGxpc3RQdWJsaWNMaXN0aW5nc0ZvclNpdGVtYXAsXG4gIHR5cGUgRGlyZWN0b3J5VHJ1c3RUaWVyLFxuICB0eXBlIERpcmVjdG9yeVNvcnQsXG4gIERJUkVDVE9SWV9TT1JUUyxcbiAgRElSRUNUT1JZX1RJRVJTLFxuICB0eXBlIERpcmVjdG9yeVNlYXJjaFBhcmFtcyxcbiAgdHlwZSBSZXZpZXdTb3J0LFxuICBSRVZJRVdfU09SVFMsXG4gIHR5cGUgUHVibGljTGlzdGluZ1Jvdyxcbn0gZnJvbSAnLi9hcGkvcHVibGljLWRpcmVjdG9yeS5qcyc7XG5leHBvcnQge1xuICBsaXN0RW5hYmxlZEFsZXJ0RGVzdGluYXRpb25zLFxuICB0eXBlIE5vdGlmaWNhdGlvbkRlc3RpbmF0aW9uLFxufSBmcm9tICcuL2FwaS9hbGVydC1kZXN0aW5hdGlvbnMuanMnO1xuZXhwb3J0IHsgYW5vbnltaXplUmV2aWV3c0J5QXV0aG9yIH0gZnJvbSAnLi9hcGkvZWNvc3lzdGVtLXByaXZhY3kuanMnO1xuZXhwb3J0IHtcbiAgb3BlblN1cHBvcnRDYXNlLFxuICBmaW5kQ2FzZUJ5VGhyZWFkLFxuICBsaXN0UXVldWUsXG4gIGxpc3RPcmdDYXNlcyxcbiAgc3RhbXBGaXJzdFJlc3BvbnNlLFxuICBzZXRDYXNlU3RhdHVzLFxuICBzZXRDYXNlU2V2ZXJpdHksXG4gIGFzc2lnbkNhc2UsXG4gIGFzc2lnbkNhc2VzLFxuICBjbG9zZUNhc2VzLFxuICB0cmFuc2ZlckNhc2VUb0NvbnRhY3QsXG4gIG9wZW5DYXNlc0ZvckNvbnRhY3QsXG4gIFNVUFBPUlRfQ0FTRV9TVEFUVVNFUyxcbiAgUVVFVUVfU1RBVFVTRVMsXG4gIHR5cGUgU3VwcG9ydENhc2VTdGF0dXMsXG4gIHR5cGUgT3BlbkNhc2VJbnB1dCxcbiAgY291bnRBY3RpdmVTdXBwb3J0Q29udGFjdHMsXG4gIGxpc3RBY3RpdmVTdXBwb3J0Q29udGFjdHMsXG4gIGlzU3VwcG9ydENvbnRhY3QsXG4gIGRlc2lnbmF0ZVN1cHBvcnRDb250YWN0LFxuICByZXZva2VTdXBwb3J0Q29udGFjdCxcbiAgLy8gVGhlIHByZW1pdW0gVVBHUkFERSBzdWJzZXQuIFNlcGFyYXRlIGZyb20gdGhlIGJhc2VsaW5lIGNvbnRhY3QgZnVuY3Rpb25zXG4gIC8vIGJlY2F1c2UgdGhlIHR3byBhbnN3ZXIgdG8gc2VwYXJhdGUgY2FwczogYW4gYWNjb3VudCBob2xkcyBOIGNvbnRhY3RzIGFuZFxuICAvLyB1cGdyYWRlcyBNIG9mIHRoZW0uXG4gIGNvdW50UHJlbWl1bVN1cHBvcnRDb250YWN0cyxcbiAgaXNQcmVtaXVtU3VwcG9ydENvbnRhY3QsXG4gIHNldFN1cHBvcnRDb250YWN0UHJlbWl1bSxcbiAgY291bnRDYXNlc0luV2luZG93LFxuICByYXRlQ2FzZSxcbiAgYWRkQ2FzZU5vdGUsXG4gIGxpc3RDYXNlTm90ZXMsXG4gIGRlbGV0ZUNhc2VOb3RlLFxuICB0eXBlIFN1cHBvcnRDYXNlTm90ZSxcbiAgbGlzdENhbm5lZFJlc3BvbnNlcyxcbiAgY3JlYXRlQ2FubmVkUmVzcG9uc2UsXG4gIHVwZGF0ZUNhbm5lZFJlc3BvbnNlLFxuICBkZWxldGVDYW5uZWRSZXNwb25zZSxcbiAgdHlwZSBDYW5uZWRSZXNwb25zZSxcbiAgbGlzdENhc2VzRHVlRm9yUGFnZSxcbn0gZnJvbSAnLi9hcGkvc3VwcG9ydC1jYXNlcy5qcyc7XG5leHBvcnQge1xuICBwb2xpY3lPZixcbiAgZWZmZWN0aXZlQ29uc3VtcHRpb25Qb2xpY3ksXG4gIGFwcGx5UG9saWN5VXBkYXRlLFxuICB0eXBlIENvbnN1bXB0aW9uUG9saWN5LFxuICBERUZBVUxUX0NPTlNVTVBUSU9OX1BPTElDWSxcbn0gZnJvbSAnLi9hcGkvcGx1Z2luLWNvbnN1bXB0aW9uLXBvbGljeS5qcyc7XG5leHBvcnQge1xuICBhZHZpc29yeVJhbmdlQ292ZXJzLFxuICBhZHZpc29yeVJhbmdlUHJvYmxlbSxcbiAgYWR2aXNvcmllc0NvdmVyaW5nLFxuICBibG9ja2luZ0Fkdmlzb3JpZXMsXG59IGZyb20gJy4vYXBpL3BsdWdpbi1hZHZpc29yaWVzLmpzJztcbmV4cG9ydCB7XG4gIGxpc3RpbmdCbG9jayxcbiAgaW1wbGljaXRJbnN0YWxsUmFuZ2UsXG4gIGluc3RhbGxBZG1pdHMsXG4gIHNjb3BlT3JnSWRzLFxuICBpbnN0YWxsTW9kZUZvcixcbiAgZHJpenpsZUxpc3RpbmdTb3VyY2UsXG4gIHJlc29sdmVMaXN0aW5nUmVmZXJlbmNlLFxuICBsaXN0ZWRWZXJzaW9uV2FybmluZ3MsXG4gIGxpc3RlZFBsdWdpblJlY29yZCxcbiAgbG9hZE9yZ0luc3RhbGxDb250ZXh0LFxuICBvcmdMaXN0aW5nU3RhdGVzLFxuICByZXNvbHZhYmxlTGlzdGluZ3MsXG4gIHR5cGUgUmVzb2x1dGlvblJlZnVzYWwsXG4gIHR5cGUgUmVzb2x1dGlvblNjb3BlLFxuICB0eXBlIExpc3RpbmdEYXRhU291cmNlLFxuICB0eXBlIExpc3RpbmdSZXNvbHZlZCxcbiAgdHlwZSBPcmdMaXN0aW5nU3RhdGUsXG4gIHZ1bG5VcGdyYWRlQXZhaWxhYmxlV2FybmluZyxcbiAgdHlwZSBWdWxuVXBncmFkZUF2YWlsYWJsZVdhcm5pbmcsXG59IGZyb20gJy4vYXBpL3BsdWdpbi1yZXNvbHV0aW9uLmpzJztcbmV4cG9ydCB7XG4gIGZpbmRWZXJzaW9uUmVmZXJlbmNlcyxcbiAgZGlzdGluY3RQaXBlbGluZXMsXG4gIHZlcnNpb25SZWZlcmVuY2VkUHJlZGljYXRlLFxuICBvcmdJbWFnZURpZ2VzdHNJblVzZSxcbiAgdHlwZSBWZXJzaW9uUmVmZXJlbmNlVGFyZ2V0LFxuICB0eXBlIFZlcnNpb25SZWZlcmVuY2UsXG59IGZyb20gJy4vYXBpL3ZlcnNpb24tcmVmZXJlbmNlcy5qcyc7XG5leHBvcnQge1xuICBkZWNsYXJlZFJlc29sdXRpb24sXG4gIHJlY29yZFN0ZXBMb29rdXAsXG4gIHBpcGVsaW5lU3RlcExvb2t1cHMsXG4gIGRlY2xhcmVkUGlwZWxpbmVzRm9yUGx1Z2luLFxuICBzdGFnZUFuZFN0ZXAsXG4gIHN0ZXBMYWJlbE9mLFxuICB0eXBlIERlY2xhcmVkU3RlcElucHV0LFxuICB0eXBlIERlY2xhcmVkU3RlcFBsdWdpbixcbiAgdHlwZSBEZWNsYXJlZFN0ZXBSZXNvbHV0aW9uLFxuICB0eXBlIFN0ZXBMb29rdXBSZWNvcmQsXG4gIHR5cGUgRGVjbGFyZWRQaXBlbGluZVJlZixcbn0gZnJvbSAnLi9hcGkvcGlwZWxpbmUtc3RlcC1yZXNvbHV0aW9uLmpzJztcbi8vIGBpc1NvZnREZWxldGVQdXJnZUVuYWJsZWRgIGlzIHRoZSBtb2R1bGUncyBvd24gZW52IGdhdGUg4oCUIGBydW5Tb2Z0RGVsZXRlUHVyZ2VgXG4vLyBhbmQgdGhlIHNjaGVkdWxlciBhbHJlYWR5IGFwcGx5IGl0LCBzbyBjYWxsZXJzIG5ldmVyIGFzayBzZXBhcmF0ZWx5LlxuZXhwb3J0IHtcbiAgcnVuU29mdERlbGV0ZVB1cmdlLFxuICBjcmVhdGVTb2Z0RGVsZXRlUHVyZ2VTY2hlZHVsZXIsXG4gIHR5cGUgUHVyZ2VhYmxlRW50aXR5LFxufSBmcm9tICcuL2FwaS9zb2Z0LWRlbGV0ZS1zd2VlcC5qcyc7XG5leHBvcnQge1xuICB0eXBlIEJ1aWxkSGVhbHRoLFxuICB0eXBlIERvcmFMZXZlbCxcbiAgdHlwZSBEb3JhTWV0cmljcyxcbiAgdHlwZSBEb3JhT3B0aW9ucyxcbiAgdHlwZSBEb3JhVHJlbmRQb2ludCxcbiAgdHlwZSBEZXBsb3ltZW50T3V0Y29tZVdyaXRlLFxuICB0eXBlIEluY2lkZW50TGlzdEl0ZW0sXG4gIHR5cGUgSW5jaWRlbnRTdGF0ZSxcbiAgdHlwZSBJbmNpZGVudFdyaXRlLFxuICB0eXBlIFJlcG9ydGluZ1NldHRpbmdzLFxuICB0eXBlIEluY2lkZW50VGVzdFJlc3VsdCxcbiAgdHlwZSBJbmdlc3RDYWxsZXIsXG4gIHR5cGUgSW5nZXN0TWV0cmljLFxuICB0eXBlIExhc3REZXBsb3llZENvbW1pdCxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nLXNlcnZpY2UuanMnO1xuXG4vLyBUaGUgcmVwb3J0aW5nIEFOQUxZVElDUyBsYXllcjogdGhlIHBlci1kZXBsb3kgcm9sbHVwIHdyaXR0ZW4gYXQgaW5nZXN0LCB0aGVcbi8vIGRhaWx5IHJvbGx1cCBldmVyeSBzZWN0aW9uIHJlYWRzLCBhbmQgdGhlIGZhaWx1cmUgY2xhc3NpZmllciB0aGF0IGxhYmVscyB3aGF0XG4vLyBicm9rZSAoc2VlIHRoZSBtb2R1bGVzJyBvd24gaGVhZGVycyBmb3Igd2h5IGVhY2ggaXMgd3JpdHRlbiByYXRoZXIgdGhhbiBkZXJpdmVkKS5cbmV4cG9ydCB7XG4gIHVwc2VydERlcGxveW1lbnRzLFxuICBhcHBseURlcGxveU91dGNvbWUsXG4gIGNvcnJlbGF0ZUluY2lkZW50LFxuICBpc0RlcGxveUV2ZW50LFxuICBsZWFkVGltZUdhcE9mLFxuICB0eXBlIERlcGxveUNhbmRpZGF0ZSxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL2RlcGxveS1yb2xsdXAuanMnO1xuZXhwb3J0IHtcbiAgcmVidWlsZERheSxcbiAgcnVuUm9sbHVwUGFzcyxcbiAgcm9sbHVwU2V0dGxlSG91cnMsXG4gIHJvbGx1cEJhdGNoRGF5cyxcbiAgdXRjRGF5U3RhcnQsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9kYWlseS1yb2xsdXAuanMnO1xuZXhwb3J0IHtcbiAgY2xhc3NpZnlGYWlsdXJlLFxuICBpc1RlYW1BY3Rpb25hYmxlLFxuICBGQUlMVVJFX0NBVEVHT1JZX0xBQkVMUyxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL2ZhaWx1cmUtY2xhc3NpZmllci5qcyc7XG5leHBvcnQge1xuICBnZXRQaXBlbGluZUJyZWFrZG93bixcbiAgZ2V0RmFpbHVyZUFuYWx5c2lzLFxuICBnZXRTdGFnZVBlcmZvcm1hbmNlLFxuICBnZXRSZXNvdXJjZUNvbnN1bXB0aW9uLFxuICBnZXRQcm9tb3Rpb25WaWV3LFxuICBnZXRPdXRkYXRlZFBsdWdpbnMsXG4gIGdldFBsdWdpblZ1bG5lcmFiaWxpdGllcyxcbiAgZ2V0QWRvcHRpb24sXG4gIHR5cGUgQW5hbHl0aWNzU2NvcGUsXG4gIHR5cGUgUGlwZWxpbmVCcmVha2Rvd25Sb3csXG4gIHR5cGUgRmFpbHVyZUNhdGVnb3J5Um93LFxuICB0eXBlIFN0YWdlUGVyZm9ybWFuY2VSb3csXG4gIHR5cGUgUmVzb3VyY2VSb3csXG4gIHR5cGUgUHJvbW90aW9uUm93LFxuICB0eXBlIE91dGRhdGVkUGx1Z2luUm93LFxuICB0eXBlIFZ1bG5lcmFiaWxpdHlSb3csXG4gIHR5cGUgQWRvcHRpb25TdW1tYXJ5LFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvYW5hbHl0aWNzLXF1ZXJpZXMuanMnO1xuZXhwb3J0IHtcbiAgZXZhbHVhdGVOZWVkc0F0dGVudGlvbixcbiAgdGhyZXNob2xkc0Zyb20sXG4gIERFRkFVTFRfVEhSRVNIT0xEUyxcbiAgdHlwZSBOZWVkc0F0dGVudGlvblRocmVzaG9sZHMsXG4gIHR5cGUgQXR0ZW50aW9uRmluZGluZyxcbiAgdHlwZSBBdHRlbnRpb25JdGVtLFxuICB0eXBlIEF0dGVudGlvbklucHV0LFxuICB0eXBlIEF0dGVudGlvblJ1bGVJZCxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL25lZWRzLWF0dGVudGlvbi5qcyc7XG5leHBvcnQge1xuICByZXBsYWNlUGlwZWxpbmVSZXNvbHV0aW9uLFxuICByZWZyZXNoTGF0ZXN0Rm9yUGx1Z2luLFxuICB1cHNlcnRFeHBvc3VyZXMsXG4gIGNsb3NlRml4ZWRFeHBvc3VyZXMsXG4gIGNsb3NlUGlwZWxpbmVFeHBvc3VyZXMsXG4gIGNsb3NlVmVyc2lvbkV4cG9zdXJlcyxcbiAgcmVjb25jaWxlUGlwZWxpbmVFeHBvc3VyZXMsXG4gIHN5bmNWZXJzaW9uRXhwb3N1cmVzLFxuICBwaXBlbGluZXNPblZlcnNpb24sXG4gIGV4cG9zdXJlRnJvbVNjYW4sXG4gIGxpdmVFeHBvc3VyZVByZWRpY2F0ZSxcbiAgb3BlbkV4cG9zdXJlcyxcbiAgdHJpYWdlRXhwb3N1cmUsXG4gIGxhcHNlZEFjY2VwdGFuY2VzLFxuICBwaXBlbGluZUV4cG9zdXJlcyxcbiAgZXhwb3N1cmVCeUlkLFxuICBhY3RpdmVBY2NlcHRhbmNlcyxcbiAgYWNjZXB0YW5jZUtleSxcbiAgcmVvcGVuTGFwc2VkQWNjZXB0YW5jZXMsXG4gIHZlcnNpb25HYXAsXG4gIHR5cGUgUGlwZWxpbmVFeHBvc3VyZSxcbiAgdHlwZSBUcmlhZ2VEZWNpc2lvbixcbiAgdHlwZSBQaXBlbGluZUFjY2VwdGFuY2VzLFxuICB0eXBlIExhcHNlZEFjY2VwdGFuY2UsXG4gIHR5cGUgUmVzb2x2ZWRTdGVwLFxuICB0eXBlIEV4cG9zdXJlSW5wdXQsXG4gIHR5cGUgRXhwb3N1cmVTdGVwLFxuICB0eXBlIEV4cG9zdXJlQ291bnRzLFxuICB0eXBlIExpdmVWZXJzaW9uLFxuICB0eXBlIFBpcGVsaW5lT25WZXJzaW9uLFxuICB0eXBlIFBsdWdpblZlcnNpb25SZWYsXG4gIHR5cGUgU2NhblN0YXRlLFxuICB0eXBlIFZlcnNpb25HYXAsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9wbHVnaW4tZXhwb3N1cmUuanMnO1xuXG4vLyBUaGUgc3Rha2Vob2xkZXItcmVwb3J0IGVuZ2luZTogcGVyaW9kIHJlc29sdXRpb24sIHNlY3Rpb24gcmVnaXN0cnksIHRlbXBsYXRlc1xuLy8gYW5kIHRoZSBjb21wb3NlciB0aGF0IGZyZWV6ZXMgYSBwZXJpb2QgaW50byBhIHNuYXBzaG90LlxuZXhwb3J0IHtcbiAgcmVzb2x2ZVBlcmlvZCxcbiAgcmVzb2x2ZVBlcmlvZEJ5TGFiZWwsXG4gIHJlamVjdFVucmVwb3J0YWJsZVBlcmlvZCxcbiAgbmV4dFBlcmlvZEJvdW5kYXJ5LFxuICBjb21wbGV0ZVBlcmlvZHNTaW5jZSxcbiAgcmVnaXN0ZXJTZWN0aW9uLFxuICBnZXRTZWN0aW9uLFxuICBhbGxTZWN0aW9ucyxcbiAgc2VjdGlvbklkcyxcbiAgUkVQT1JUX1RFTVBMQVRFX1NQRUNTLFxuICBnZXRUZW1wbGF0ZSxcbiAgY29tcG9zZVNuYXBzaG90LFxuICBMT1dfU0FNUExFX1RIUkVTSE9MRCxcbiAgUkVQT1JUX0ZFQVRVUkVfU1VCU1RJVFVURVMsXG4gIHJlbmRlclJlcG9ydEh0bWwsXG4gIHJlcG9ydEZpbGVOYW1lLFxuICB0cmVuZFNlbnRlbmNlLFxuICB0eXBlIFJlcG9ydEh0bWxJbnB1dCxcbiAgdHlwZSBSZXNvbHZlZFBlcmlvZCxcbiAgdHlwZSBQZXJpb2RSZWplY3Rpb24sXG4gIHR5cGUgU2VjdGlvblNwZWMsXG4gIHR5cGUgU2VjdGlvbkNvbnRleHQsXG4gIHR5cGUgU2VjdGlvbkRhdGFTb3VyY2UsXG4gIHR5cGUgVGVtcGxhdGVTcGVjLFxuICB0eXBlIFJlcG9ydFNuYXBzaG90LFxuICB0eXBlIENvbXBvc2VkU2VjdGlvbixcbiAgdHlwZSBEYXRhUXVhbGl0eU5vdGUsXG4gIHR5cGUgQ29tcG9zZU9wdGlvbnMsXG4gIHR5cGUgVHJlbmREaXJlY3Rpb24sXG4gIFN0YWtlaG9sZGVyUmVwb3J0U3RvcmUsXG4gIHN0YWtlaG9sZGVyUmVwb3J0U3RvcmUsXG4gIGhhc2hUb2tlbixcbiAgbWludFRva2VuLFxuICBERUZBVUxUX1NIQVJFX0xJTktfVFRMX0RBWVMsXG4gIE1BWF9TSEFSRV9MSU5LX1RUTF9EQVlTLFxuICBNQVhfQk9VTkNFUyxcbiAgVkVSSUZJQ0FUSU9OX1RUTF9NUyxcbiAgdHlwZSBDcmVhdGVEZWZpbml0aW9uSW5wdXQsXG4gIHR5cGUgVXBkYXRlRGVmaW5pdGlvbklucHV0LFxuICB0eXBlIE1pbnRlZFNoYXJlTGluayxcbiAgdHlwZSBSZXNvbHZlZFNoYXJlTGluayxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL3N0YWtlaG9sZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgUGx1Z2luUnVudGltZUZpbHRlcixcbiAgdHlwZSBQbHVnaW5SdW50aW1lU3RhdHMsXG4gIFJlcG9ydGluZ1NlcnZpY2UsXG4gIHJlcG9ydGluZ1NlcnZpY2UsXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy1zZXJ2aWNlLmpzJztcblxuLy8gRmlsdGVyc1xuZXhwb3J0IHtcbiAgdHlwZSBQbHVnaW5GaWx0ZXIsXG4gIHR5cGUgUGlwZWxpbmVGaWx0ZXIsXG4gIHR5cGUgUGlwZWxpbmVUZW1wbGF0ZUZpbHRlcixcbiAgdHlwZSBNZXNzYWdlRmlsdGVyLFxuICB0eXBlIENvbXBsaWFuY2VQb2xpY3lGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVJ1bGVGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZUV4ZW1wdGlvbkZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlQXVkaXRGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVNjYW5GaWx0ZXIsXG59IGZyb20gJy4vY29yZS9xdWVyeS1maWx0ZXJzLmpzJztcbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUVILFdBQVc7QUFDWCxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLDhCQUE4QjtBQUM5QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLE9BQU8sRUFFTCx5QkFBeUIsR0FDMUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsT0FBTyxFQUNMLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxHQUNkLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLDRCQUE0QixFQUc1QixlQUFlLEVBQ2YsZUFBZSxFQUdmLFlBQVksR0FFYixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCw0QkFBNEIsR0FFN0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsZUFBZSxFQUNmLFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGNBQWMsRUFHZCwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsb0JBQW9CO0FBQ3BCLDJFQUEyRTtBQUMzRSwyRUFBMkU7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QkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsYUFBYSxFQWFiLHNCQUFzQixFQUN0QixzQkFBc0IsRUFDdEIsU0FBUyxFQUNULFNBQVMsRUFDVCwyQkFBMkIsRUFDM0IsdUJBQXVCLEVBQ3ZCLFdBQVcsRUFDWCxtQkFBbUIsR0FLcEIsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5QyxPQUFPLEVBR0wsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFVBQVU7QUFDVixPQUFPLEVBVU4sTUFBTSx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEBtb2R1bGUgQHBpcGVsaW5lLWJ1aWxkZXIvcGlwZWxpbmUtZGF0YVxuICpcbiAqIERhdGFiYXNlIGxheWVyOiBEcml6emxlIE9STSBzY2hlbWFzLCBjb25uZWN0aW9uIG1hbmFnZW1lbnQsIGFuZCBxdWVyeSBpbmZyYXN0cnVjdHVyZS5cbiAqXG4gKiAqKkRhdGFiYXNlKipcbiAqIC0gZGIg4oCUIHNoYXJlZCBEcml6emxlIGRhdGFiYXNlIGluc3RhbmNlXG4gKiAtIGdldENvbm5lY3Rpb24sIGNsb3NlQ29ubmVjdGlvbiDigJQgUG9zdGdyZVNRTCBjb25uZWN0aW9uIGxpZmVjeWNsZSB3aXRoIHJldHJ5IGxvZ2ljXG4gKiAtIHNjaGVtYSDigJQgRHJpenpsZSB0YWJsZSBkZWZpbml0aW9ucyAocGx1Z2lucywgcGlwZWxpbmVzLCBtZXNzYWdlcywgY29tcGxpYW5jZSwgZXRjLilcbiAqXG4gKiAqKlNlcnZpY2VzKipcbiAqIC0gQ3J1ZFNlcnZpY2Ug4oCUIGdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgbXVsdGktdGVuYW50IENSVUQgd2l0aCBhY2Nlc3MgY29udHJvbCBhbmQgcGFnaW5hdGlvblxuICogLSBSZXBvcnRpbmdTZXJ2aWNlIOKAlCBhZ2dyZWdhdGUgcXVlcnkgYW5kIHJlcG9ydGluZyBiYXNlIGNsYXNzXG4gKlxuICogKipRdWVyeSBCdWlsZGVycyoqXG4gKiAtIGJ1aWxkUGx1Z2luQ29uZGl0aW9ucywgYnVpbGRQaXBlbGluZUNvbmRpdGlvbnMsIGJ1aWxkTWVzc2FnZUNvbmRpdGlvbnMg4oCUIGZpbHRlci10by1TUUwgY29uZGl0aW9uIGJ1aWxkZXJzXG4gKiAtIGJ1aWxkQ29tcGxpYW5jZVBvbGljeUNvbmRpdGlvbnMsIGJ1aWxkQ29tcGxpYW5jZVJ1bGVDb25kaXRpb25zLCBldGMuIOKAlCBjb21wbGlhbmNlIHF1ZXJ5IGJ1aWxkZXJzXG4gKiAtIEFjY2Vzc0NvbnRyb2xCdWlsZGVyIOKAlCByb3ctbGV2ZWwgYWNjZXNzIGNvbnRyb2wgY29uZGl0aW9uIGJ1aWxkZXJcbiAqXG4gKiAqKkZpbHRlcnMqKlxuICogLSBQbHVnaW5GaWx0ZXIsIFBpcGVsaW5lRmlsdGVyLCBNZXNzYWdlRmlsdGVyIOKAlCB0eXBlZCBmaWx0ZXIgaW50ZXJmYWNlc1xuICogLSBDb21wbGlhbmNlUG9saWN5RmlsdGVyLCBDb21wbGlhbmNlUnVsZUZpbHRlciwgZXRjLiDigJQgY29tcGxpYW5jZSBmaWx0ZXIgaW50ZXJmYWNlc1xuICogLSBkcml6emxlUm93cywgZHJpenpsZUNvdW50IOKAlCBEcml6emxlIHJlc3VsdCB0eXBlIGhlbHBlcnNcbiAqL1xuXG4vLyBEYXRhYmFzZVxuZXhwb3J0ICogZnJvbSAnLi9kYXRhYmFzZS9pbmRleC5qcyc7XG5cbi8vIFF1ZXJ5IGJ1aWxkZXJzIGFuZCBzZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9hcGkvcXVlcnktYnVpbGRlcnMuanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBCYXNlQWNjZXNzRmlsdGVyLFxuICBBY2Nlc3NDb250cm9sUXVlcnlCdWlsZGVyLFxufSBmcm9tICcuL2FwaS9hY2Nlc3MtY29udHJvbC1idWlsZGVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpL3ZpZXdlci1jb250ZXh0LmpzJztcbmV4cG9ydCAqIGZyb20gJy4vYXBpL2NydWQtc2VydmljZS5qcyc7XG5leHBvcnQge1xuICBwYXJzZVNlbXZlcixcbiAgY29tcGFyZVNlbXZlclBhcnRzLFxuICBjb21wYXJlU2VtdmVyLFxuICBpc1ZlcnNpb25SYW5nZSxcbiAgc2F0aXNmaWVzVmVyc2lvblNwZWMsXG4gIHNlbXZlck9yZGVyQnksXG59IGZyb20gJy4vYXBpL3NlbXZlci1yYW5nZS5qcyc7XG5leHBvcnQge1xuICBub3JtYWxpemVRdWVyeSxcbiAgc2VhcmNoUHVibGljTGlzdGluZ3MsXG4gIGxpc3RQdWJsaWNDYXRlZ29yaWVzLFxuICBnZXRQdWJsaWNMaXN0aW5nLFxuICBnZXRQdWJsaWNMaXN0ZWRWZXJzaW9uLFxuICBsaXN0UHVibGljUmV2aWV3cyxcbiAgbGlzdFB1YmxpY0xpc3RpbmdzRm9yU2l0ZW1hcCxcbiAgdHlwZSBEaXJlY3RvcnlUcnVzdFRpZXIsXG4gIHR5cGUgRGlyZWN0b3J5U29ydCxcbiAgRElSRUNUT1JZX1NPUlRTLFxuICBESVJFQ1RPUllfVElFUlMsXG4gIHR5cGUgRGlyZWN0b3J5U2VhcmNoUGFyYW1zLFxuICB0eXBlIFJldmlld1NvcnQsXG4gIFJFVklFV19TT1JUUyxcbiAgdHlwZSBQdWJsaWNMaXN0aW5nUm93LFxufSBmcm9tICcuL2FwaS9wdWJsaWMtZGlyZWN0b3J5LmpzJztcbmV4cG9ydCB7XG4gIGxpc3RFbmFibGVkQWxlcnREZXN0aW5hdGlvbnMsXG4gIHR5cGUgTm90aWZpY2F0aW9uRGVzdGluYXRpb24sXG59IGZyb20gJy4vYXBpL2FsZXJ0LWRlc3RpbmF0aW9ucy5qcyc7XG5leHBvcnQgeyBhbm9ueW1pemVSZXZpZXdzQnlBdXRob3IgfSBmcm9tICcuL2FwaS9lY29zeXN0ZW0tcHJpdmFjeS5qcyc7XG5leHBvcnQge1xuICBvcGVuU3VwcG9ydENhc2UsXG4gIGZpbmRDYXNlQnlUaHJlYWQsXG4gIGxpc3RRdWV1ZSxcbiAgbGlzdE9yZ0Nhc2VzLFxuICBzdGFtcEZpcnN0UmVzcG9uc2UsXG4gIHNldENhc2VTdGF0dXMsXG4gIHNldENhc2VTZXZlcml0eSxcbiAgYXNzaWduQ2FzZSxcbiAgYXNzaWduQ2FzZXMsXG4gIGNsb3NlQ2FzZXMsXG4gIHRyYW5zZmVyQ2FzZVRvQ29udGFjdCxcbiAgb3BlbkNhc2VzRm9yQ29udGFjdCxcbiAgU1VQUE9SVF9DQVNFX1NUQVRVU0VTLFxuICBRVUVVRV9TVEFUVVNFUyxcbiAgdHlwZSBTdXBwb3J0Q2FzZVN0YXR1cyxcbiAgdHlwZSBPcGVuQ2FzZUlucHV0LFxuICBjb3VudEFjdGl2ZVN1cHBvcnRDb250YWN0cyxcbiAgbGlzdEFjdGl2ZVN1cHBvcnRDb250YWN0cyxcbiAgaXNTdXBwb3J0Q29udGFjdCxcbiAgZGVzaWduYXRlU3VwcG9ydENvbnRhY3QsXG4gIHJldm9rZVN1cHBvcnRDb250YWN0LFxuICAvLyBUaGUgcHJlbWl1bSBVUEdSQURFIHN1YnNldC4gU2VwYXJhdGUgZnJvbSB0aGUgYmFzZWxpbmUgY29udGFjdCBmdW5jdGlvbnNcbiAgLy8gYmVjYXVzZSB0aGUgdHdvIGFuc3dlciB0byBzZXBhcmF0ZSBjYXBzOiBhbiBhY2NvdW50IGhvbGRzIE4gY29udGFjdHMgYW5kXG4gIC8vIHVwZ3JhZGVzIE0gb2YgdGhlbS5cbiAgY291bnRQcmVtaXVtU3VwcG9ydENvbnRhY3RzLFxuICBpc1ByZW1pdW1TdXBwb3J0Q29udGFjdCxcbiAgc2V0U3VwcG9ydENvbnRhY3RQcmVtaXVtLFxuICBjb3VudENhc2VzSW5XaW5kb3csXG4gIHJhdGVDYXNlLFxuICBhZGRDYXNlTm90ZSxcbiAgbGlzdENhc2VOb3RlcyxcbiAgZGVsZXRlQ2FzZU5vdGUsXG4gIHR5cGUgU3VwcG9ydENhc2VOb3RlLFxuICBsaXN0Q2FubmVkUmVzcG9uc2VzLFxuICBjcmVhdGVDYW5uZWRSZXNwb25zZSxcbiAgdXBkYXRlQ2FubmVkUmVzcG9uc2UsXG4gIGRlbGV0ZUNhbm5lZFJlc3BvbnNlLFxuICB0eXBlIENhbm5lZFJlc3BvbnNlLFxuICBsaXN0Q2FzZXNEdWVGb3JQYWdlLFxufSBmcm9tICcuL2FwaS9zdXBwb3J0LWNhc2VzLmpzJztcbmV4cG9ydCB7XG4gIHBvbGljeU9mLFxuICBlZmZlY3RpdmVDb25zdW1wdGlvblBvbGljeSxcbiAgYXBwbHlQb2xpY3lVcGRhdGUsXG4gIHR5cGUgQ29uc3VtcHRpb25Qb2xpY3ksXG4gIERFRkFVTFRfQ09OU1VNUFRJT05fUE9MSUNZLFxufSBmcm9tICcuL2FwaS9wbHVnaW4tY29uc3VtcHRpb24tcG9saWN5LmpzJztcbmV4cG9ydCB7XG4gIGFkdmlzb3J5UmFuZ2VDb3ZlcnMsXG4gIGFkdmlzb3J5UmFuZ2VQcm9ibGVtLFxuICBhZHZpc29yaWVzQ292ZXJpbmcsXG4gIGJsb2NraW5nQWR2aXNvcmllcyxcbn0gZnJvbSAnLi9hcGkvcGx1Z2luLWFkdmlzb3JpZXMuanMnO1xuZXhwb3J0IHtcbiAgbGlzdGluZ0Jsb2NrLFxuICBpbXBsaWNpdEluc3RhbGxSYW5nZSxcbiAgaW5zdGFsbEFkbWl0cyxcbiAgc2NvcGVPcmdJZHMsXG4gIGluc3RhbGxNb2RlRm9yLFxuICBkcml6emxlTGlzdGluZ1NvdXJjZSxcbiAgcmVzb2x2ZUxpc3RpbmdSZWZlcmVuY2UsXG4gIGxpc3RlZFZlcnNpb25XYXJuaW5ncyxcbiAgbGlzdGVkUGx1Z2luUmVjb3JkLFxuICBsb2FkT3JnSW5zdGFsbENvbnRleHQsXG4gIG9yZ0xpc3RpbmdTdGF0ZXMsXG4gIHJlc29sdmFibGVMaXN0aW5ncyxcbiAgdHlwZSBSZXNvbHV0aW9uUmVmdXNhbCxcbiAgdHlwZSBSZXNvbHV0aW9uU2NvcGUsXG4gIHR5cGUgTGlzdGluZ0RhdGFTb3VyY2UsXG4gIHR5cGUgTGlzdGluZ1Jlc29sdmVkLFxuICB0eXBlIE9yZ0xpc3RpbmdTdGF0ZSxcbiAgdnVsblVwZ3JhZGVBdmFpbGFibGVXYXJuaW5nLFxuICB0eXBlIFZ1bG5VcGdyYWRlQXZhaWxhYmxlV2FybmluZyxcbn0gZnJvbSAnLi9hcGkvcGx1Z2luLXJlc29sdXRpb24uanMnO1xuZXhwb3J0IHtcbiAgZmluZFZlcnNpb25SZWZlcmVuY2VzLFxuICBkaXN0aW5jdFBpcGVsaW5lcyxcbiAgdmVyc2lvblJlZmVyZW5jZWRQcmVkaWNhdGUsXG4gIG9yZ0ltYWdlRGlnZXN0c0luVXNlLFxuICB0eXBlIFZlcnNpb25SZWZlcmVuY2VUYXJnZXQsXG4gIHR5cGUgVmVyc2lvblJlZmVyZW5jZSxcbn0gZnJvbSAnLi9hcGkvdmVyc2lvbi1yZWZlcmVuY2VzLmpzJztcbmV4cG9ydCB7XG4gIGRlY2xhcmVkUmVzb2x1dGlvbixcbiAgcmVjb3JkU3RlcExvb2t1cCxcbiAgcGlwZWxpbmVTdGVwTG9va3VwcyxcbiAgZGVjbGFyZWRQaXBlbGluZXNGb3JQbHVnaW4sXG4gIHN0YWdlQW5kU3RlcCxcbiAgc3RlcExhYmVsT2YsXG4gIHR5cGUgRGVjbGFyZWRTdGVwSW5wdXQsXG4gIHR5cGUgRGVjbGFyZWRTdGVwUGx1Z2luLFxuICB0eXBlIERlY2xhcmVkU3RlcFJlc29sdXRpb24sXG4gIHR5cGUgU3RlcExvb2t1cFJlY29yZCxcbiAgdHlwZSBEZWNsYXJlZFBpcGVsaW5lUmVmLFxufSBmcm9tICcuL2FwaS9waXBlbGluZS1zdGVwLXJlc29sdXRpb24uanMnO1xuLy8gYGlzU29mdERlbGV0ZVB1cmdlRW5hYmxlZGAgaXMgdGhlIG1vZHVsZSdzIG93biBlbnYgZ2F0ZSDigJQgYHJ1blNvZnREZWxldGVQdXJnZWBcbi8vIGFuZCB0aGUgc2NoZWR1bGVyIGFscmVhZHkgYXBwbHkgaXQsIHNvIGNhbGxlcnMgbmV2ZXIgYXNrIHNlcGFyYXRlbHkuXG5leHBvcnQge1xuICBydW5Tb2Z0RGVsZXRlUHVyZ2UsXG4gIGNyZWF0ZVNvZnREZWxldGVQdXJnZVNjaGVkdWxlcixcbiAgdHlwZSBQdXJnZWFibGVFbnRpdHksXG59IGZyb20gJy4vYXBpL3NvZnQtZGVsZXRlLXN3ZWVwLmpzJztcbmV4cG9ydCB7XG4gIHR5cGUgQnVpbGRIZWFsdGgsXG4gIHR5cGUgRG9yYUxldmVsLFxuICB0eXBlIERvcmFNZXRyaWNzLFxuICB0eXBlIERvcmFPcHRpb25zLFxuICB0eXBlIERvcmFUcmVuZFBvaW50LFxuICB0eXBlIERlcGxveW1lbnRPdXRjb21lV3JpdGUsXG4gIHR5cGUgSW5jaWRlbnRMaXN0SXRlbSxcbiAgdHlwZSBJbmNpZGVudFN0YXRlLFxuICB0eXBlIEluY2lkZW50V3JpdGUsXG4gIHR5cGUgUmVwb3J0aW5nU2V0dGluZ3MsXG4gIHR5cGUgSW5jaWRlbnRUZXN0UmVzdWx0LFxuICB0eXBlIEluZ2VzdENhbGxlcixcbiAgdHlwZSBJbmdlc3RNZXRyaWMsXG4gIHR5cGUgTGFzdERlcGxveWVkQ29tbWl0LFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmctc2VydmljZS5qcyc7XG5cbi8vIFRoZSByZXBvcnRpbmcgQU5BTFlUSUNTIGxheWVyOiB0aGUgcGVyLWRlcGxveSByb2xsdXAgd3JpdHRlbiBhdCBpbmdlc3QsIHRoZVxuLy8gZGFpbHkgcm9sbHVwIGV2ZXJ5IHNlY3Rpb24gcmVhZHMsIGFuZCB0aGUgZmFpbHVyZSBjbGFzc2lmaWVyIHRoYXQgbGFiZWxzIHdoYXRcbi8vIGJyb2tlIChzZWUgdGhlIG1vZHVsZXMnIG93biBoZWFkZXJzIGZvciB3aHkgZWFjaCBpcyB3cml0dGVuIHJhdGhlciB0aGFuIGRlcml2ZWQpLlxuZXhwb3J0IHtcbiAgdXBzZXJ0RGVwbG95bWVudHMsXG4gIGFwcGx5RGVwbG95T3V0Y29tZSxcbiAgY29ycmVsYXRlSW5jaWRlbnQsXG4gIGlzRGVwbG95RXZlbnQsXG4gIGxlYWRUaW1lR2FwT2YsXG4gIHR5cGUgRGVwbG95Q2FuZGlkYXRlLFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvZGVwbG95LXJvbGx1cC5qcyc7XG5leHBvcnQge1xuICByZWJ1aWxkRGF5LFxuICBydW5Sb2xsdXBQYXNzLFxuICByb2xsdXBTZXR0bGVIb3VycyxcbiAgcm9sbHVwQmF0Y2hEYXlzLFxuICB1dGNEYXlTdGFydCxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL2RhaWx5LXJvbGx1cC5qcyc7XG5leHBvcnQge1xuICBjbGFzc2lmeUZhaWx1cmUsXG4gIGlzVGVhbUFjdGlvbmFibGUsXG4gIEZBSUxVUkVfQ0FURUdPUllfTEFCRUxTLFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvZmFpbHVyZS1jbGFzc2lmaWVyLmpzJztcbmV4cG9ydCB7XG4gIGdldFBpcGVsaW5lQnJlYWtkb3duLFxuICBnZXRGYWlsdXJlQW5hbHlzaXMsXG4gIGdldFN0YWdlUGVyZm9ybWFuY2UsXG4gIGdldFJlc291cmNlQ29uc3VtcHRpb24sXG4gIGdldFByb21vdGlvblZpZXcsXG4gIGdldE91dGRhdGVkUGx1Z2lucyxcbiAgZ2V0UGx1Z2luVnVsbmVyYWJpbGl0aWVzLFxuICBnZXRBZG9wdGlvbixcbiAgdHlwZSBBbmFseXRpY3NTY29wZSxcbiAgdHlwZSBQaXBlbGluZUJyZWFrZG93blJvdyxcbiAgdHlwZSBGYWlsdXJlQ2F0ZWdvcnlSb3csXG4gIHR5cGUgU3RhZ2VQZXJmb3JtYW5jZVJvdyxcbiAgdHlwZSBSZXNvdXJjZVJvdyxcbiAgdHlwZSBQcm9tb3Rpb25Sb3csXG4gIHR5cGUgT3V0ZGF0ZWRQbHVnaW5Sb3csXG4gIHR5cGUgVnVsbmVyYWJpbGl0eVJvdyxcbiAgdHlwZSBBZG9wdGlvblN1bW1hcnksXG59IGZyb20gJy4vYXBpL3JlcG9ydGluZy9hbmFseXRpY3MtcXVlcmllcy5qcyc7XG5leHBvcnQge1xuICBldmFsdWF0ZU5lZWRzQXR0ZW50aW9uLFxuICB0aHJlc2hvbGRzRnJvbSxcbiAgREVGQVVMVF9USFJFU0hPTERTLFxuICB0eXBlIE5lZWRzQXR0ZW50aW9uVGhyZXNob2xkcyxcbiAgdHlwZSBBdHRlbnRpb25GaW5kaW5nLFxuICB0eXBlIEF0dGVudGlvbkl0ZW0sXG4gIHR5cGUgQXR0ZW50aW9uSW5wdXQsXG4gIHR5cGUgQXR0ZW50aW9uUnVsZUlkLFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvbmVlZHMtYXR0ZW50aW9uLmpzJztcbmV4cG9ydCB7XG4gIHJlcGxhY2VQaXBlbGluZVJlc29sdXRpb24sXG4gIHJlZnJlc2hMYXRlc3RGb3JQbHVnaW4sXG4gIHVwc2VydEV4cG9zdXJlcyxcbiAgY2xvc2VGaXhlZEV4cG9zdXJlcyxcbiAgY2xvc2VQaXBlbGluZUV4cG9zdXJlcyxcbiAgY2xvc2VWZXJzaW9uRXhwb3N1cmVzLFxuICByZWNvbmNpbGVQaXBlbGluZUV4cG9zdXJlcyxcbiAgc3luY1ZlcnNpb25FeHBvc3VyZXMsXG4gIHBpcGVsaW5lc09uVmVyc2lvbixcbiAgZXhwb3N1cmVGcm9tU2NhbixcbiAgbGl2ZUV4cG9zdXJlUHJlZGljYXRlLFxuICBvcGVuRXhwb3N1cmVzLFxuICB0cmlhZ2VFeHBvc3VyZSxcbiAgbGFwc2VkQWNjZXB0YW5jZXMsXG4gIHBpcGVsaW5lRXhwb3N1cmVzLFxuICBleHBvc3VyZUJ5SWQsXG4gIGFjdGl2ZUFjY2VwdGFuY2VzLFxuICBhY2NlcHRhbmNlS2V5LFxuICByZW9wZW5MYXBzZWRBY2NlcHRhbmNlcyxcbiAgdmVyc2lvbkdhcCxcbiAgdHlwZSBQaXBlbGluZUV4cG9zdXJlLFxuICB0eXBlIFRyaWFnZURlY2lzaW9uLFxuICB0eXBlIFBpcGVsaW5lQWNjZXB0YW5jZXMsXG4gIHR5cGUgTGFwc2VkQWNjZXB0YW5jZSxcbiAgdHlwZSBSZXNvbHZlZFN0ZXAsXG4gIHR5cGUgRXhwb3N1cmVJbnB1dCxcbiAgdHlwZSBFeHBvc3VyZVN0ZXAsXG4gIHR5cGUgRXhwb3N1cmVDb3VudHMsXG4gIHR5cGUgTGl2ZVZlcnNpb24sXG4gIHR5cGUgUGlwZWxpbmVPblZlcnNpb24sXG4gIHR5cGUgUGx1Z2luVmVyc2lvblJlZixcbiAgdHlwZSBTY2FuU3RhdGUsXG4gIHR5cGUgVmVyc2lvbkdhcCxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nL3BsdWdpbi1leHBvc3VyZS5qcyc7XG5cbi8vIFRoZSBzdGFrZWhvbGRlci1yZXBvcnQgZW5naW5lOiBwZXJpb2QgcmVzb2x1dGlvbiwgc2VjdGlvbiByZWdpc3RyeSwgdGVtcGxhdGVzXG4vLyBhbmQgdGhlIGNvbXBvc2VyIHRoYXQgZnJlZXplcyBhIHBlcmlvZCBpbnRvIGEgc25hcHNob3QuXG5leHBvcnQge1xuICByZXNvbHZlUGVyaW9kLFxuICByZXNvbHZlUGVyaW9kQnlMYWJlbCxcbiAgcmVqZWN0VW5yZXBvcnRhYmxlUGVyaW9kLFxuICBuZXh0UGVyaW9kQm91bmRhcnksXG4gIGNvbXBsZXRlUGVyaW9kc1NpbmNlLFxuICByZWdpc3RlclNlY3Rpb24sXG4gIGdldFNlY3Rpb24sXG4gIGFsbFNlY3Rpb25zLFxuICBzZWN0aW9uSWRzLFxuICBSRVBPUlRfVEVNUExBVEVfU1BFQ1MsXG4gIGdldFRlbXBsYXRlLFxuICBjb21wb3NlU25hcHNob3QsXG4gIExPV19TQU1QTEVfVEhSRVNIT0xELFxuICBSRVBPUlRfRkVBVFVSRV9TVUJTVElUVVRFUyxcbiAgcmVuZGVyUmVwb3J0SHRtbCxcbiAgcmVwb3J0RmlsZU5hbWUsXG4gIHRyZW5kU2VudGVuY2UsXG4gIHR5cGUgUmVwb3J0SHRtbElucHV0LFxuICB0eXBlIFJlc29sdmVkUGVyaW9kLFxuICB0eXBlIFBlcmlvZFJlamVjdGlvbixcbiAgdHlwZSBTZWN0aW9uU3BlYyxcbiAgdHlwZSBTZWN0aW9uQ29udGV4dCxcbiAgdHlwZSBTZWN0aW9uRGF0YVNvdXJjZSxcbiAgdHlwZSBUZW1wbGF0ZVNwZWMsXG4gIHR5cGUgUmVwb3J0U25hcHNob3QsXG4gIHR5cGUgQ29tcG9zZWRTZWN0aW9uLFxuICB0eXBlIERhdGFRdWFsaXR5Tm90ZSxcbiAgdHlwZSBDb21wb3NlT3B0aW9ucyxcbiAgdHlwZSBUcmVuZERpcmVjdGlvbixcbiAgU3Rha2Vob2xkZXJSZXBvcnRTdG9yZSxcbiAgc3Rha2Vob2xkZXJSZXBvcnRTdG9yZSxcbiAgaGFzaFRva2VuLFxuICBtaW50VG9rZW4sXG4gIERFRkFVTFRfU0hBUkVfTElOS19UVExfREFZUyxcbiAgTUFYX1NIQVJFX0xJTktfVFRMX0RBWVMsXG4gIE1BWF9CT1VOQ0VTLFxuICBWRVJJRklDQVRJT05fVFRMX01TLFxuICB0eXBlIENyZWF0ZURlZmluaXRpb25JbnB1dCxcbiAgdHlwZSBVcGRhdGVEZWZpbml0aW9uSW5wdXQsXG4gIHR5cGUgTWludGVkU2hhcmVMaW5rLFxuICB0eXBlIFJlc29sdmVkU2hhcmVMaW5rLFxufSBmcm9tICcuL2FwaS9yZXBvcnRpbmcvc3Rha2Vob2xkZXIvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgdHlwZSBQbHVnaW5SdW50aW1lRmlsdGVyLFxuICB0eXBlIFBsdWdpblJ1bnRpbWVTdGF0cyxcbiAgUmVwb3J0aW5nU2VydmljZSxcbiAgcmVwb3J0aW5nU2VydmljZSxcbn0gZnJvbSAnLi9hcGkvcmVwb3J0aW5nLXNlcnZpY2UuanMnO1xuXG4vLyBGaWx0ZXJzXG5leHBvcnQge1xuICB0eXBlIFBsdWdpbkZpbHRlcixcbiAgdHlwZSBQaXBlbGluZUZpbHRlcixcbiAgdHlwZSBQaXBlbGluZVRlbXBsYXRlRmlsdGVyLFxuICB0eXBlIE1lc3NhZ2VGaWx0ZXIsXG4gIHR5cGUgQ29tcGxpYW5jZVBvbGljeUZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlUnVsZUZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlRXhlbXB0aW9uRmlsdGVyLFxuICB0eXBlIENvbXBsaWFuY2VBdWRpdEZpbHRlcixcbiAgdHlwZSBDb21wbGlhbmNlU2NhbkZpbHRlcixcbn0gZnJvbSAnLi9jb3JlL3F1ZXJ5LWZpbHRlcnMuanMnO1xuIl19
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@pipeline-builder/pipeline-data",
3
- "description": "Database layer for Pipeline Builder: Drizzle ORM schemas, connection management, query builders, and the generic CrudService base class with per-organization (and team) access control.",
3
+ "description": "Drizzle ORM schemas and organization-scoped data access for Pipeline Builder.",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/mwashburn160/pipeline-builder.git"
7
7
  },
8
8
  "devDependencies": {
9
- "@electric-sql/pglite": "0.5.13",
9
+ "@electric-sql/pglite": "0.5.16",
10
10
  "@jest/globals": "30.5.2",
11
11
  "@stylistic/eslint-plugin": "^2",
12
12
  "@types/node": "^26",
13
13
  "@types/pg": "8.23.1",
14
14
  "@typescript-eslint/eslint-plugin": "^8",
15
15
  "@typescript-eslint/parser": "^8",
16
- "@typescript/native": "npm:typescript@^7.0.2",
16
+ "@typescript/native": "npm:typescript@7.1.0-beta",
17
17
  "drizzle-kit": "0.31.11",
18
18
  "eslint": "^9",
19
19
  "eslint-import-resolver-typescript": "^4.4.5",
@@ -24,7 +24,7 @@
24
24
  "typescript": "npm:@typescript/typescript6@^6.0.2"
25
25
  },
26
26
  "dependencies": {
27
- "@pipeline-builder/api-core": "5.2.5",
27
+ "@pipeline-builder/api-core": "5.2.7",
28
28
  "drizzle-orm": "0.45.4",
29
29
  "pg": "8.23.1"
30
30
  },
@@ -86,7 +86,7 @@
86
86
  "registry": "https://registry.npmjs.org/",
87
87
  "provenance": true
88
88
  },
89
- "version": "4.3.5",
89
+ "version": "4.3.7",
90
90
  "bugs": {
91
91
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
92
92
  },
@@ -162,10 +162,10 @@
162
162
  ],
163
163
  "coverageThreshold": {
164
164
  "global": {
165
- "statements": 94,
165
+ "statements": 95,
166
166
  "branches": 93,
167
- "functions": 87,
168
- "lines": 94
167
+ "functions": 89,
168
+ "lines": 95
169
169
  }
170
170
  }
171
171
  },