@dollhousemcp/mcp-server 2.0.17 → 2.0.18

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 (51) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/elements/BaseElement.d.ts +1 -0
  3. package/dist/elements/BaseElement.d.ts.map +1 -1
  4. package/dist/elements/BaseElement.js +7 -1
  5. package/dist/elements/agents/AgentManager.js +2 -2
  6. package/dist/elements/base/ElementFileOperations.js +2 -2
  7. package/dist/elements/ensembles/EnsembleManager.js +3 -3
  8. package/dist/elements/memories/MemoryManager.js +2 -2
  9. package/dist/elements/skills/SkillManager.js +2 -2
  10. package/dist/elements/templates/TemplateManager.js +2 -2
  11. package/dist/generated/version.d.ts +2 -2
  12. package/dist/generated/version.js +3 -3
  13. package/dist/handlers/ElementCRUDHandler.d.ts.map +1 -1
  14. package/dist/handlers/ElementCRUDHandler.js +3 -2
  15. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts +1 -0
  16. package/dist/handlers/mcp-aql/MCPAQLHandler.d.ts.map +1 -1
  17. package/dist/handlers/mcp-aql/MCPAQLHandler.js +35 -14
  18. package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts +9 -1
  19. package/dist/handlers/mcp-aql/policies/ElementPolicies.d.ts.map +1 -1
  20. package/dist/handlers/mcp-aql/policies/ElementPolicies.js +63 -4
  21. package/dist/handlers/strategies/AgentActivationStrategy.d.ts.map +1 -1
  22. package/dist/handlers/strategies/AgentActivationStrategy.js +5 -1
  23. package/dist/handlers/strategies/BaseActivationStrategy.d.ts +1 -0
  24. package/dist/handlers/strategies/BaseActivationStrategy.d.ts.map +1 -1
  25. package/dist/handlers/strategies/BaseActivationStrategy.js +15 -1
  26. package/dist/handlers/strategies/EnsembleActivationStrategy.d.ts.map +1 -1
  27. package/dist/handlers/strategies/EnsembleActivationStrategy.js +5 -1
  28. package/dist/handlers/strategies/MemoryActivationStrategy.d.ts.map +1 -1
  29. package/dist/handlers/strategies/MemoryActivationStrategy.js +5 -1
  30. package/dist/handlers/strategies/PersonaActivationStrategy.d.ts.map +1 -1
  31. package/dist/handlers/strategies/PersonaActivationStrategy.js +5 -1
  32. package/dist/handlers/strategies/SkillActivationStrategy.d.ts.map +1 -1
  33. package/dist/handlers/strategies/SkillActivationStrategy.js +5 -1
  34. package/dist/handlers/strategies/TemplateActivationStrategy.d.ts.map +1 -1
  35. package/dist/handlers/strategies/TemplateActivationStrategy.js +7 -2
  36. package/dist/persona/PersonaElement.js +2 -2
  37. package/dist/services/SerializationService.d.ts.map +1 -1
  38. package/dist/services/SerializationService.js +7 -1
  39. package/dist/types/elements/IElement.d.ts +9 -0
  40. package/dist/types/elements/IElement.d.ts.map +1 -1
  41. package/dist/types/elements/IElement.js +1 -1
  42. package/dist/web/public/permissions.css +190 -2
  43. package/dist/web/public/permissions.js +171 -30
  44. package/dist/web/public/setup.js +131 -60
  45. package/dist/web/routes/permissionRoutes.d.ts.map +1 -1
  46. package/dist/web/routes/permissionRoutes.js +77 -5
  47. package/dist/web/routes/setupRoutes.d.ts.map +1 -1
  48. package/dist/web/routes/setupRoutes.js +16 -2
  49. package/package.json +1 -1
  50. package/scripts/pretooluse-dollhouse.sh +39 -1
  51. package/server.json +2 -2
@@ -172,6 +172,10 @@ export class AgentActivationStrategy extends BaseActivationStrategy {
172
172
  if (restrictionWarning) {
173
173
  parts.push(restrictionWarning);
174
174
  }
175
+ const gatekeeperWarning = this.formatGatekeeperValidityWarning(agent.metadata);
176
+ if (gatekeeperWarning) {
177
+ parts.push(gatekeeperWarning);
178
+ }
175
179
  return {
176
180
  content: [{
177
181
  type: "text",
@@ -386,4 +390,4 @@ export class AgentActivationStrategy extends BaseActivationStrategy {
386
390
  };
387
391
  }
388
392
  }
389
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9BZ2VudEFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBQ3BDO0lBQTdCLFlBQTZCLFlBQTBCO1FBQ3JELEtBQUssRUFBRSxDQUFDO1FBRG1CLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRXZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBWSxFQUFFLE9BQTZCO1FBQ3hELGlFQUFpRTtRQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUUzQixxQ0FBcUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEQsd0NBQXdDO1FBQ3hDLCtEQUErRDtRQUMvRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxF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QUUsQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFFLEtBQWEsQ0FBQyxZQUFZLElBQUssS0FBYSxDQUFDLFVBQVUsRUFBRSxZQUFZLElBQUksMkJBQTJCLENBQUMsQ0FBQztRQUVwSCxJQUFLLEtBQWEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFFLEtBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUksS0FBYSxDQUFDLEtBQUssQ0FBQztRQUN4QyxJQUFJLFVBQVUsRUFBRSxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLENBQUM7b0JBQ1IsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUN6QixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kgLSBTdHJhdGVneSBmb3IgYWdlbnQgZWxlbWVudCBhY3RpdmF0aW9uXG4gKlxuICogSGFuZGxlcyBhY3RpdmF0aW9uLCBkZWFjdGl2YXRpb24sIGFuZCBzdGF0dXMgdHJhY2tpbmcgZm9yIGFnZW50IGVsZW1lbnRzLlxuICogVXNlcyBcImV4ZWN1dGlvblwiIHN0cmF0ZWd5IHdpdGggc3RhdGUgZmlsZSBtYW5hZ2VtZW50LlxuICpcbiAqIFNFQ1VSSVRZICYgQ09OU0lTVEVOQ1kgSU1QUk9WRU1FTlRTOlxuICogLSBTZWN1cml0eSBsb2dnaW5nIGZvciBhY3RpdmF0aW9uIGVycm9ycyAoSXNzdWUgIzI0IC0gTWVkaXVtIFByaW9yaXR5KVxuICogLSBBY3RpdmF0aW9uIHJvbGxiYWNrIG9uIGNyaXRpY2FsIGZhaWx1cmVzIChJc3N1ZSAjMjQgLSBNZWRpdW0gUHJpb3JpdHkpXG4gKiAtIE9wdGltaXN0aWMgbG9ja2luZyBmb3Igc3RhdGUgdXBkYXRlcyAoSXNzdWUgIzI0IC0gTWVkaXVtIFByaW9yaXR5KVxuICovXG5cbmltcG9ydCB7IEFnZW50TWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2FnZW50cy9BZ2VudE1hbmFnZXIuanMnO1xuaW1wb3J0IHsgQmFzZUFjdGl2YXRpb25TdHJhdGVneSB9IGZyb20gJy4vQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LCBNQ1BSZXNwb25zZSB9IGZyb20gJy4vRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBTZWN1cml0eU1vbml0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9zZWN1cml0eU1vbml0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcblxuZXhwb3J0IGNsYXNzIEFnZW50QWN0aXZhdGlvblN0cmF0ZWd5IGV4dGVuZHMgQmFzZUFjdGl2YXRpb25TdHJhdGVneSBpbXBsZW1lbnRzIEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFnZW50TWFuYWdlcjogQWdlbnRNYW5hZ2VyKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhbiBhZ2VudCB3aXRoIGV4ZWN1dGlvbiBzdHJhdGVneVxuICAgKiBFeGVjdXRlcyBhZ2VudCBsb2dpYywgdXBkYXRlcyBzdGF0ZSBmaWxlLCBhbmQgdHJhY2tzIGFjdGl2YXRpb25cbiAgICpcbiAgICogSU1QUk9WRU1FTlQ6IEVuaGFuY2VkIGVycm9yIGhhbmRsaW5nIHdpdGggc2VjdXJpdHkgbG9nZ2luZyBhbmQgcm9sbGJhY2sgKElzc3VlICMyNClcbiAgICovXG4gIGFzeW5jIGFjdGl2YXRlKG5hbWU6IHN0cmluZywgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIHRoZSBtYW5hZ2VyJ3MgYWN0aXZhdGlvbiBtZXRob2Qgd2hpY2ggdHJhY2tzIGFjdGl2ZSBhZ2VudHNcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFnZW50TWFuYWdlci5hY3RpdmF0ZUFnZW50KG5hbWUpO1xuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2VzcyB8fCAhcmVzdWx0LmFnZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWUsICdBZ2VudCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGFnZW50ID0gcmVzdWx0LmFnZW50O1xuXG4gICAgLy8gRXh0cmFjdCBvcHRpb25hbCBnb2FsIGZyb20gY29udGV4dFxuICAgIGNvbnN0IGdvYWwgPSBjb250ZXh0Py5nb2FsIHx8IGNvbnRleHQ/LmdvYWxzPy5bMF07XG5cbiAgICAvLyBFeGVjdXRlIGFnZW50IGxvZ2ljIChnb2Fscy9kZWNpc2lvbnMpXG4gICAgLy8gRm9yIG5vdywgdGhpcyBpcyBhIHNpZGUtZWZmZWN0IGFjdGl2YXRpb24gdGhhdCB1cGRhdGVzIHN0YXRlXG4gICAgY29uc3Qgc3RhdGUgPSBhZ2VudC5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IGV4ZWN1dGlvblN1bW1hcnk6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBUcmFjayBpZiB3ZSBuZWVkIHRvIHJvbGxiYWNrIGFjdGl2YXRpb24gb24gY3JpdGljYWwgZmFpbHVyZVxuICAgIGxldCBjcml0aWNhbEZhaWx1cmUgPSBmYWxzZTtcblxuICAgIGlmIChnb2FsKSB7XG4gICAgICAvLyBJZiBnb2FsIHByb3ZpZGVkLCBhZGQgaXQgdG8gdGhlIGFnZW50J3MgZ29hbHNcbiAgICAgIHRyeSB7XG4gICAgICAgIGFnZW50LmFkZEdvYWwoe1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBnb2FsLmRlc2NyaXB0aW9uIHx8IGdvYWwsXG4gICAgICAgICAgcHJpb3JpdHk6IGdvYWwucHJpb3JpdHkgfHwgJ21lZGl1bScsXG4gICAgICAgICAgaW1wb3J0YW5jZTogZ29hbC5pbXBvcnRhbmNlIHx8IDUsXG4gICAgICAgICAgdXJnZW5jeTogZ29hbC51cmdlbmN5IHx8IDVcbiAgICAgICAgfSk7XG4gICAgICAgIGV4ZWN1dGlvblN1bW1hcnkucHVzaChgR29hbCBhZGRlZDogJHtnb2FsLmRlc2NyaXB0aW9uIHx8IGdvYWx9YCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBGSVg6IEVuaGFuY2VkIGVycm9yIGxvZ2dpbmcgd2l0aCBzZWN1cml0eSBtb25pdG9yaW5nIChJc3N1ZSAjMjQpXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ0NvdWxkIG5vdCBhZGQgZ29hbCc7XG5cbiAgICAgICAgLy8gTG9nIHRvIHNlY3VyaXR5IG1vbml0b3IgZm9yIGF1ZGl0IHRyYWlsXG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnQUdFTlRfQUNUSVZBVElPTl9GQUlMRUQnLFxuICAgICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgICBzb3VyY2U6ICdBZ2VudEFjdGl2YXRpb25TdHJhdGVneS5hY3RpdmF0ZScsXG4gICAgICAgICAgZGV0YWlsczogYEZhaWxlZCB0byBhZGQgZ29hbCBkdXJpbmcgYWdlbnQgYWN0aXZhdGlvbjogJHtlcnJvck1lc3NhZ2V9YCxcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICAgICAgZ29hbERlc2NyaXB0aW9uOiBnb2FsLmRlc2NyaXB0aW9uIHx8IGdvYWwsXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2cgdG8gc3RhbmRhcmQgbG9nZ2VyIGZvciBkZWJ1Z2dpbmdcbiAgICAgICAgbG9nZ2VyLndhcm4oYEdvYWwgYWRkaXRpb24gZmFpbGVkIGR1cmluZyBhZ2VudCBhY3RpdmF0aW9uYCwge1xuICAgICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgICBlcnJvcjogZXJyb3JNZXNzYWdlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGV4ZWN1dGlvblN1bW1hcnkucHVzaChgTm90ZTogJHtlcnJvck1lc3NhZ2V9YCk7XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBmYWlsdXJlIHJlcXVpcmluZyByb2xsYmFja1xuICAgICAgICAvLyBDcml0aWNhbCBmYWlsdXJlczogdmFsaWRhdGlvbiBlcnJvcnMgdGhhdCBpbmRpY2F0ZSBiYWQgaW5wdXQgb3Igc2VjdXJpdHkgaXNzdWVzXG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIChcbiAgICAgICAgICBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ2hhcm1mdWwgY29udGVudCcpIHx8XG4gICAgICAgICAgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdzZWN1cml0eScpIHx8XG4gICAgICAgICAgZXJyb3JNZXNzYWdlLmluY2x1ZGVzKCdNYXhpbXVtIG51bWJlciBvZiBnb2FscycpXG4gICAgICAgICkpIHtcbiAgICAgICAgICBjcml0aWNhbEZhaWx1cmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRklYOiBSb2xsYmFjayBhY3RpdmF0aW9uIG9uIGNyaXRpY2FsIGZhaWx1cmVzIChJc3N1ZSAjMjQpXG4gICAgaWYgKGNyaXRpY2FsRmFpbHVyZSkge1xuICAgICAgbG9nZ2VyLmVycm9yKGBDcml0aWNhbCBmYWlsdXJlIGR1cmluZyBhZ2VudCBhY3RpdmF0aW9uLCByb2xsaW5nIGJhY2tgLCB7XG4gICAgICAgIGFnZW50TmFtZTogbmFtZVxuICAgICAgfSk7XG5cbiAgICAgIC8vIERlYWN0aXZhdGUgdGhlIGFnZW50IHRvIHJvbGxiYWNrXG4gICAgICBhd2FpdCB0aGlzLmFnZW50TWFuYWdlci5kZWFjdGl2YXRlQWdlbnQobmFtZSk7XG5cbiAgICAgIC8vIExvZyBzZWN1cml0eSBldmVudCBmb3Igcm9sbGJhY2tcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ0FHRU5UX0FDVElWQVRJT05fUk9MTEJBQ0snLFxuICAgICAgICBzZXZlcml0eTogJ0hJR0gnLFxuICAgICAgICBzb3VyY2U6ICdBZ2VudEFjdGl2YXRpb25TdHJhdGVneS5hY3RpdmF0ZScsXG4gICAgICAgIGRldGFpbHM6IGBBZ2VudCBhY3RpdmF0aW9uIHJvbGxlZCBiYWNrIGR1ZSB0byBjcml0aWNhbCBmYWlsdXJlYCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHtcbiAgICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgICAgcmVhc29uOiAnQ3JpdGljYWwgZ29hbCBhZGRpdGlvbiBmYWlsdXJlJ1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gUmV0dXJuIGVycm9yIHJlc3BvbnNlXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGDinYwgQWdlbnQgYWN0aXZhdGlvbiBmYWlsZWQgYW5kIHdhcyByb2xsZWQgYmFja1xcblxcbkNyaXRpY2FsIGVycm9yIG9jY3VycmVkIGR1cmluZyBnb2FsIGFkZGl0aW9uLiBQbGVhc2UgcmV2aWV3IHRoZSBnb2FsIHBhcmFtZXRlcnMgYW5kIHRyeSBhZ2Fpbi5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEZJWDogT3B0aW1pc3RpYyBsb2NraW5nIGZvciBzdGF0ZSB1cGRhdGVzIChJc3N1ZSAjMjQpXG4gICAgLy8gVXNlIHB1YmxpYyBwZXJzaXN0U3RhdGUgQVBJIHdoaWNoIGltcGxlbWVudHMgT3B0aW9uIEMgcGF0dGVybiAoSXNzdWUgIzEyMylcbiAgICBjb25zdCBmaWxlbmFtZSA9IGFnZW50Lm1ldGFkYXRhLm5hbWU7XG5cbiAgICB0cnkge1xuICAgICAgLy8gU2F2ZSBzdGF0ZSB3aXRoIGF0b21pYyB3cml0ZSBhbmQgcHJvcGVyIHZlcnNpb24gaGFuZGxpbmdcbiAgICAgIGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLnBlcnNpc3RTdGF0ZShmaWxlbmFtZSk7XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IGFnZW50LmdldFN0YXRlKCk7XG4gICAgICBsb2dnZXIuZGVidWcoYEFnZW50IHN0YXRlIHBlcnNpc3RlZCBzdWNjZXNzZnVsbHlgLCB7XG4gICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgc2Vzc2lvbkNvdW50OiBjdXJyZW50U3RhdGUuc2Vzc2lvbkNvdW50LFxuICAgICAgICBnb2FsQ291bnQ6IGN1cnJlbnRTdGF0ZS5nb2Fscy5sZW5ndGhcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBTdGF0ZSBzYXZlIGZhaWx1cmUgLSBsb2cgYW5kIGNvbnRpbnVlIChhZ2VudCBpcyBzdGlsbCBhY3RpdmF0ZWQpXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJztcblxuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnTUVNT1JZX1NBVkVfRkFJTEVEJywgLy8gVXNpbmcgZXhpc3RpbmcgZXZlbnQgdHlwZSBmb3Igc3RhdGUgc2F2ZSBmYWlsdXJlc1xuICAgICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICAgIHNvdXJjZTogJ0FnZW50QWN0aXZhdGlvblN0cmF0ZWd5LmFjdGl2YXRlJyxcbiAgICAgICAgZGV0YWlsczogYEZhaWxlZCB0byBzYXZlIGFnZW50IHN0YXRlIGFmdGVyIGFjdGl2YXRpb246ICR7ZXJyb3JNZXNzYWdlfWAsXG4gICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7XG4gICAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGxvZ2dlci53YXJuKGBBZ2VudCBzdGF0ZSBzYXZlIGZhaWxlZCwgYnV0IGFnZW50IHJlbWFpbnMgYWN0aXZhdGVkYCwge1xuICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgIH0pO1xuXG4gICAgICBleGVjdXRpb25TdW1tYXJ5LnB1c2goYFdhcm5pbmc6IFN0YXRlIHBlcnNpc3RlbmNlIGZhaWxlZCAtICR7ZXJyb3JNZXNzYWdlfWApO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIGV4ZWN1dGlvbiByZXNwb25zZVxuICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgZ29hbFxuICAgICAgICA/IGDinIUgQWdlbnQgYWN0aXZhdGVkIGFuZCBleGVjdXRlZCBnb2FsOiAke2dvYWwuZGVzY3JpcHRpb24gfHwgZ29hbH1gXG4gICAgICAgIDogYOKchSBBZ2VudCBhY3RpdmF0ZWQgc3VjY2Vzc2Z1bGx5YCxcbiAgICAgICcnXG4gICAgXTtcblxuICAgIC8vIEFkZCBvdXRjb21lIGRlc2NyaXB0aW9uIGZvciB0ZXN0IGV4cGVjdGF0aW9uc1xuICAgIGlmIChnb2FsKSB7XG4gICAgICBwYXJ0cy5wdXNoKCdBZ2VudCBhY3RpdmF0ZXMgd2l0aCBpbml0aWFsIGdvYWxzIGxvYWRlZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKCdBZ2VudCBiZWNvbWVzIGFjdGl2ZSwgaW5jcmVtZW50cyBzZXNzaW9uIGNvdW50Jyk7XG4gICAgfVxuICAgIHBhcnRzLnB1c2goJycpO1xuXG4gICAgcGFydHMucHVzaChgKipTZXNzaW9uKio6ICMke3N0YXRlLnNlc3Npb25Db3VudCArIDF9YCk7XG4gICAgcGFydHMucHVzaCguLi50aGlzLmZvcm1hdFYxRmllbGRzKGFnZW50Lm1ldGFkYXRhIGFzIGFueSwgYWdlbnQuZXh0ZW5zaW9ucyBhcyBhbnkpKTtcblxuICAgIGlmIChleGVjdXRpb25TdW1tYXJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcnRzLnB1c2goJycpO1xuICAgICAgcGFydHMucHVzaCgnKipFeGVjdXRpb24gU3VtbWFyeSoqOicpO1xuICAgICAgZXhlY3V0aW9uU3VtbWFyeS5mb3JFYWNoKGxpbmUgPT4gcGFydHMucHVzaChgLSAke2xpbmV9YCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUdvYWxzID0gYWdlbnQuZ2V0U3RhdGUoKS5nb2Fscy5maWx0ZXIoKGc6IHsgc3RhdHVzOiBzdHJpbmcgfSkgPT4gZy5zdGF0dXMgPT09ICdpbl9wcm9ncmVzcycpO1xuICAgIGlmIChhY3RpdmVHb2Fscy5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJ0cy5wdXNoKCcnKTtcbiAgICAgIHBhcnRzLnB1c2goYCoqQWN0aXZlIEdvYWxzKio6ICR7YWN0aXZlR29hbHMubGVuZ3RofWApO1xuICAgIH1cblxuICAgIHBhcnRzLnB1c2goJycpO1xuICAgIHBhcnRzLnB1c2goJ0FnZW50IGV4ZWN1dGlvbiBjb21wbGV0ZWQnKTtcblxuICAgIC8vIElzc3VlICM2NDI6IEZhaWwtc2FmZSB3YXJuaW5nIGZvciBDTEkgcmVzdHJpY3Rpb25zXG4gICAgY29uc3QgcmVzdHJpY3Rpb25XYXJuaW5nID0gdGhpcy5mb3JtYXRSZXN0cmljdGlvbldhcm5pbmcoYWdlbnQubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgaWYgKHJlc3RyaWN0aW9uV2FybmluZykge1xuICAgICAgcGFydHMucHVzaChyZXN0cmljdGlvbldhcm5pbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogcGFydHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIGFuIGFnZW50XG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIGFnZW50IGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmRlYWN0aXZhdGVBZ2VudChuYW1lKTtcblxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMudGhyb3dOb3RGb3VuZEVycm9yKG5hbWUsICdBZ2VudCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVN1Y2Nlc3NSZXNwb25zZShyZXN1bHQubWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBhY3RpdmUgYWdlbnRzXG4gICAqL1xuICBhc3luYyBnZXRBY3RpdmVFbGVtZW50cygpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIHRoZSBtYW5hZ2VyJ3MgbWV0aG9kIHRvIGdldCBhY3RpdmUgYWdlbnRzIGRpcmVjdGx5XG4gICAgY29uc3QgYWN0aXZlQWdlbnRzID0gYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIuZ2V0QWN0aXZlQWdlbnRzKCk7XG5cbiAgICBpZiAoYWN0aXZlQWdlbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBcIvCfpJYgTm8gYWN0aXZlIGFnZW50c1wiXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGFnZW50TGlzdCA9IGFjdGl2ZUFnZW50cy5tYXAoYSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGEuZ2V0U3RhdGUoKTtcbiAgICAgIGNvbnN0IGdvYWxzID0gc3RhdGUuZ29hbHM/Lmxlbmd0aCB8fCAwO1xuICAgICAgcmV0dXJuIGDwn6SWICR7YS5tZXRhZGF0YS5uYW1lfSAoJHtnb2Fsc30gYWN0aXZlIGdvYWxzKWA7XG4gICAgfSkuam9pbignXFxuJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBBY3RpdmUgYWdlbnRzOlxcbiR7YWdlbnRMaXN0fWBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXQgdjEgYWdlbnQgZmllbGRzIChzcGVjaWFsaXphdGlvbnMsIGRlY2lzaW9uRnJhbWV3b3JrLCByaXNrVG9sZXJhbmNlKVxuICAgKiBmb3IgZGlzcGxheS4gT25seSBpbmNsdWRlcyBmaWVsZHMgdGhhdCBhcmUgZXhwbGljaXRseSBzZXQg4oCUIGF2b2lkcyBzaG93aW5nXG4gICAqIHBoYW50b20gZGVmYXVsdHMgb24gdjIgYWdlbnRzLiAoSXNzdWUgIzc0OSlcbiAgICovXG4gIHByaXZhdGUgZm9ybWF0VjFGaWVsZHMoXG4gICAgbWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgZXh0ZW5zaW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKTogc3RyaW5nW10ge1xuICAgIC8vIElzc3VlICM3NDk6IFYyIGFnZW50cyBzaG91bGQgbm90IHNob3cgVjEgZGVmYXVsdHMuXG4gICAgLy8gYGdvYWxgIChzaW5ndWxhciwgQWdlbnRHb2FsQ29uZmlnKSBpcyB0aGUgZGVmaW5pdGl2ZSBWMiBtYXJrZXIg4oCUIGl0J3NcbiAgICAvLyByZXF1aXJlZCBvbiBBZ2VudE1ldGFkYXRhVjIgYW5kIG5ldmVyIHByZXNlbnQgb24gVjEgYWdlbnRzICh3aGljaCB1c2VcbiAgICAvLyBgZ29hbHNgIHBsdXJhbCkuIFRoZSBBZ2VudCBjb25zdHJ1Y3RvciBhbHdheXMgZGVmYXVsdHMgZGVjaXNpb25GcmFtZXdvcmtcbiAgICAvLyBhbmQgcmlza1RvbGVyYW5jZSwgc28gY2hlY2tpbmcgdHJ1dGhpbmVzcyBhbG9uZSBzaG93cyBwaGFudG9tIHZhbHVlcy5cbiAgICBpZiAobWV0YWRhdGEuZ29hbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHNwZWNzID0gbWV0YWRhdGEuc3BlY2lhbGl6YXRpb25zO1xuICAgIGNvbnN0IGZyYW1ld29yayA9IGV4dGVuc2lvbnM/LmRlY2lzaW9uRnJhbWV3b3JrID8/IG1ldGFkYXRhLmRlY2lzaW9uRnJhbWV3b3JrO1xuICAgIGNvbnN0IHJpc2sgPSBleHRlbnNpb25zPy5yaXNrVG9sZXJhbmNlID8/IG1ldGFkYXRhLnJpc2tUb2xlcmFuY2U7XG5cbiAgICBpZiAoc3BlY3M/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxpbmVzLnB1c2goYCoqU3BlY2lhbGl6YXRpb25zKio6ICR7c3BlY3Muam9pbignLCAnKX1gKTtcbiAgICB9XG4gICAgaWYgKGZyYW1ld29yaykge1xuICAgICAgbGluZXMucHVzaChgKipEZWNpc2lvbiBGcmFtZXdvcmsqKjogJHtmcmFtZXdvcmt9YCk7XG4gICAgfVxuICAgIGlmIChyaXNrKSB7XG4gICAgICBsaW5lcy5wdXNoKGAqKlJpc2sgVG9sZXJhbmNlKio6ICR7cmlza31gKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBhZ2VudFxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgNzMwLTc3MFxuICAgKi9cbiAgYXN5bmMgZ2V0RWxlbWVudERldGFpbHMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSBmbGV4aWJsZSBmaW5kaW5nIHRvIHN1cHBvcnQgYm90aCBkaXNwbGF5IG5hbWUgYW5kIGZpbGVuYW1lXG4gICAgY29uc3QgYWxsQWdlbnRzID0gYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIubGlzdCgpO1xuICAgIGNvbnN0IGFnZW50ID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEZsZXhpYmx5KG5hbWUsIGFsbEFnZW50cyk7XG4gICAgaWYgKCFhZ2VudCkge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ0FnZW50Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0YWRhdGEgPSBhZ2VudC5tZXRhZGF0YSBhcyBhbnk7XG5cbiAgICBjb25zdCBkZXRhaWxzID0gW1xuICAgICAgYPCfpJYgKioke2FnZW50Lm1ldGFkYXRhLm5hbWV9KipgLFxuICAgICAgYCR7YWdlbnQubWV0YWRhdGEuZGVzY3JpcHRpb259YCxcbiAgICAgIGBgLFxuICAgICAgYCoqU3RhdHVzKio6ICR7YWdlbnQuZ2V0U3RhdHVzKCl9YFxuICAgIF07XG5cbiAgICBkZXRhaWxzLnB1c2goLi4udGhpcy5mb3JtYXRWMUZpZWxkcyhtZXRhZGF0YSkpO1xuXG4gICAgLy8gVjIgZmllbGRzXG4gICAgaWYgKG1ldGFkYXRhLmdvYWwpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqR29hbCBDb25maWd1cmF0aW9uKio6Jyk7XG4gICAgICBkZXRhaWxzLnB1c2goYC0gVGVtcGxhdGU6ICR7bWV0YWRhdGEuZ29hbC50ZW1wbGF0ZX1gKTtcbiAgICAgIGlmIChtZXRhZGF0YS5nb2FsLnBhcmFtZXRlcnMgJiYgbWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFBhcmFtZXRlcnM6ICR7bWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzLmxlbmd0aH0gZGVmaW5lZGApO1xuICAgICAgICBtZXRhZGF0YS5nb2FsLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW06IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcXVpcmVkID0gcGFyYW0ucmVxdWlyZWQgPyAncmVxdWlyZWQnIDogJ29wdGlvbmFsJztcbiAgICAgICAgICBkZXRhaWxzLnB1c2goYCAgLSAke3BhcmFtLm5hbWV9ICgke3BhcmFtLnR5cGV9LCAke3JlcXVpcmVkfSlgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXRhaWxzLnB1c2goJy0gUGFyYW1ldGVyczogbm9uZScpO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLmdvYWwuc3VjY2Vzc0NyaXRlcmlhICYmIG1ldGFkYXRhLmdvYWwuc3VjY2Vzc0NyaXRlcmlhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFN1Y2Nlc3MgQ3JpdGVyaWE6ICR7bWV0YWRhdGEuZ29hbC5zdWNjZXNzQ3JpdGVyaWEubGVuZ3RofSBkZWZpbmVkYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmFjdGl2YXRlcykge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipBY3RpdmF0ZXMqKjonKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRUeXBlcyA9IE9iamVjdC5rZXlzKG1ldGFkYXRhLmFjdGl2YXRlcyk7XG4gICAgICBlbGVtZW50VHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBtZXRhZGF0YS5hY3RpdmF0ZXNbdHlwZV07XG4gICAgICAgIGlmIChlbGVtZW50cyAmJiBlbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKGAtICR7dHlwZX06ICR7ZWxlbWVudHMuam9pbignLCAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLnRvb2xzKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKlRvb2xzKio6Jyk7XG4gICAgICBpZiAobWV0YWRhdGEudG9vbHMuYWxsb3dlZCAmJiBtZXRhZGF0YS50b29scy5hbGxvd2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIEFsbG93ZWQ6ICR7bWV0YWRhdGEudG9vbHMuYWxsb3dlZC5sZW5ndGh9IHRvb2xzYCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEudG9vbHMuZGVuaWVkICYmIG1ldGFkYXRhLnRvb2xzLmRlbmllZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBEZW5pZWQ6ICR7bWV0YWRhdGEudG9vbHMuZGVuaWVkLmxlbmd0aH0gdG9vbHNgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuc3lzdGVtUHJvbXB0KSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKlN5c3RlbSBQcm9tcHQqKjonKTtcbiAgICAgIGNvbnN0IHRydW5jYXRlZCA9IG1ldGFkYXRhLnN5c3RlbVByb21wdC5sZW5ndGggPiAxMDBcbiAgICAgICAgPyBgJHttZXRhZGF0YS5zeXN0ZW1Qcm9tcHQuc3Vic3RyaW5nKDAsIDEwMCl9Li4uYFxuICAgICAgICA6IG1ldGFkYXRhLnN5c3RlbVByb21wdDtcbiAgICAgIGRldGFpbHMucHVzaCh0cnVuY2F0ZWQpO1xuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teSkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipBdXRvbm9teSBDb25maWd1cmF0aW9uKio6Jyk7XG4gICAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkucmlza1RvbGVyYW5jZSkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gUmlzayBUb2xlcmFuY2U6ICR7bWV0YWRhdGEuYXV0b25vbXkucmlza1RvbGVyYW5jZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teS5tYXhBdXRvbm9tb3VzU3RlcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBzdGVwc0xhYmVsID0gbWV0YWRhdGEuYXV0b25vbXkubWF4QXV0b25vbW91c1N0ZXBzID09PSAwID8gJ3VubGltaXRlZCcgOiBtZXRhZGF0YS5hdXRvbm9teS5tYXhBdXRvbm9tb3VzU3RlcHM7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBNYXggQXV0b25vbW91cyBTdGVwczogJHtzdGVwc0xhYmVsfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLmF1dG9ub215LnJlcXVpcmVzQXBwcm92YWwgJiYgbWV0YWRhdGEuYXV0b25vbXkucmVxdWlyZXNBcHByb3ZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBSZXF1aXJlcyBBcHByb3ZhbDogJHttZXRhZGF0YS5hdXRvbm9teS5yZXF1aXJlc0FwcHJvdmFsLmxlbmd0aH0gcGF0dGVybnNgKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teS5hdXRvQXBwcm92ZSAmJiBtZXRhZGF0YS5hdXRvbm9teS5hdXRvQXBwcm92ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBBdXRvIEFwcHJvdmU6ICR7bWV0YWRhdGEuYXV0b25vbXkuYXV0b0FwcHJvdmUubGVuZ3RofSBwYXR0ZXJuc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElzc3VlICM3MjI6IERpc3BsYXkgcmVzaWxpZW5jZSBwb2xpY3lcbiAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZSkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipSZXNpbGllbmNlIFBvbGljeSoqOicpO1xuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2Uub25TdGVwTGltaXRSZWFjaGVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBPbiBTdGVwIExpbWl0IFJlYWNoZWQ6ICR7bWV0YWRhdGEucmVzaWxpZW5jZS5vblN0ZXBMaW1pdFJlYWNoZWR9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5vbkV4ZWN1dGlvbkZhaWx1cmUpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIE9uIEV4ZWN1dGlvbiBGYWlsdXJlOiAke21ldGFkYXRhLnJlc2lsaWVuY2Uub25FeGVjdXRpb25GYWlsdXJlfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UubWF4UmV0cmllcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBNYXggUmV0cmllczogJHttZXRhZGF0YS5yZXNpbGllbmNlLm1heFJldHJpZXN9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5tYXhDb250aW51YXRpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIE1heCBDb250aW51YXRpb25zOiAke21ldGFkYXRhLnJlc2lsaWVuY2UubWF4Q29udGludWF0aW9uc31gKTtcbiAgICAgIH1cbiAgICAgIC8vIElzc3VlICM3NDk6IERpc3BsYXkgcmV0cnlCYWNrb2ZmIGFuZCBwcmVzZXJ2ZVN0YXRlICh3ZXJlIG1pc3NpbmcpXG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5yZXRyeUJhY2tvZmYpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFJldHJ5IEJhY2tvZmY6ICR7bWV0YWRhdGEucmVzaWxpZW5jZS5yZXRyeUJhY2tvZmZ9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEucmVzaWxpZW5jZS5wcmVzZXJ2ZVN0YXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFByZXNlcnZlIFN0YXRlOiAke21ldGFkYXRhLnJlc2lsaWVuY2UucHJlc2VydmVTdGF0ZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjNzIyOiBEaXNwbGF5IHRhZ3MgYW5kIHRyaWdnZXJzXG4gICAgaWYgKG1ldGFkYXRhLnRhZ3MgJiYgbWV0YWRhdGEudGFncy5sZW5ndGggPiAwKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKGAqKlRhZ3MqKjogJHttZXRhZGF0YS50YWdzLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIGlmIChtZXRhZGF0YS50cmlnZ2VycyAmJiBtZXRhZGF0YS50cmlnZ2Vycy5sZW5ndGggPiAwKSB7XG4gICAgICBkZXRhaWxzLnB1c2goYCoqVHJpZ2dlcnMqKjogJHttZXRhZGF0YS50cmlnZ2Vycy5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgZGV0YWlscy5wdXNoKCcqKkluc3RydWN0aW9ucyoqOicpO1xuICAgIGRldGFpbHMucHVzaCgoYWdlbnQgYXMgYW55KS5pbnN0cnVjdGlvbnMgfHwgKGFnZW50IGFzIGFueSkuZXh0ZW5zaW9ucz8uaW5zdHJ1Y3Rpb25zIHx8ICdObyBpbnN0cnVjdGlvbnMgYXZhaWxhYmxlJyk7XG5cbiAgICBpZiAoKGFnZW50IGFzIGFueSkuY29udGVudD8udHJpbSgpKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKlJlZmVyZW5jZToqKicpO1xuICAgICAgZGV0YWlscy5wdXNoKChhZ2VudCBhcyBhbnkpLmNvbnRlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IGFnZW50U3RhdGUgPSAoYWdlbnQgYXMgYW55KS5zdGF0ZTtcbiAgICBpZiAoYWdlbnRTdGF0ZT8uZ29hbHMgJiYgYWdlbnRTdGF0ZS5nb2Fscy5sZW5ndGggPiAwKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycsICcqKkN1cnJlbnQgR29hbHMqKjonKTtcbiAgICAgIGFnZW50U3RhdGUuZ29hbHMuZm9yRWFjaCgoZzogYW55KSA9PiB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSAke2cuZGVzY3JpcHRpb259ICgke2cuc3RhdHVzfSlgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogZGV0YWlscy5qb2luKCdcXG4nKVxuICAgICAgfV1cbiAgICB9O1xuICB9XG59XG4iXX0=
393
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9BZ2VudEFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsc0JBQXNCO0lBQ3BDO0lBQTdCLFlBQTZCLFlBQTBCO1FBQ3JELEtBQUssRUFBRSxDQUFDO1FBRG1CLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBRXZELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBWSxFQUFFLE9BQTZCO1FBQ3hELGlFQUFpRTtRQUNqRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUUzQixxQ0FBcUM7UUFDckMsTUFBTSxJQUFJLEdBQUcsT0FBTyxFQUFFLElBQUksSUFBSSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEQsd0NBQXdDO1FBQ3hDLCtEQUErRDtRQUMvRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxF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QUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3pCLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBZ2VudEFjdGl2YXRpb25TdHJhdGVneSAtIFN0cmF0ZWd5IGZvciBhZ2VudCBlbGVtZW50IGFjdGl2YXRpb25cbiAqXG4gKiBIYW5kbGVzIGFjdGl2YXRpb24sIGRlYWN0aXZhdGlvbiwgYW5kIHN0YXR1cyB0cmFja2luZyBmb3IgYWdlbnQgZWxlbWVudHMuXG4gKiBVc2VzIFwiZXhlY3V0aW9uXCIgc3RyYXRlZ3kgd2l0aCBzdGF0ZSBmaWxlIG1hbmFnZW1lbnQuXG4gKlxuICogU0VDVVJJVFkgJiBDT05TSVNURU5DWSBJTVBST1ZFTUVOVFM6XG4gKiAtIFNlY3VyaXR5IGxvZ2dpbmcgZm9yIGFjdGl2YXRpb24gZXJyb3JzIChJc3N1ZSAjMjQgLSBNZWRpdW0gUHJpb3JpdHkpXG4gKiAtIEFjdGl2YXRpb24gcm9sbGJhY2sgb24gY3JpdGljYWwgZmFpbHVyZXMgKElzc3VlICMyNCAtIE1lZGl1bSBQcmlvcml0eSlcbiAqIC0gT3B0aW1pc3RpYyBsb2NraW5nIGZvciBzdGF0ZSB1cGRhdGVzIChJc3N1ZSAjMjQgLSBNZWRpdW0gUHJpb3JpdHkpXG4gKi9cblxuaW1wb3J0IHsgQWdlbnRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvYWdlbnRzL0FnZW50TWFuYWdlci5qcyc7XG5pbXBvcnQgeyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9CYXNlQWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3ksIE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IGltcGxlbWVudHMgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYWdlbnRNYW5hZ2VyOiBBZ2VudE1hbmFnZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGFuIGFnZW50IHdpdGggZXhlY3V0aW9uIHN0cmF0ZWd5XG4gICAqIEV4ZWN1dGVzIGFnZW50IGxvZ2ljLCB1cGRhdGVzIHN0YXRlIGZpbGUsIGFuZCB0cmFja3MgYWN0aXZhdGlvblxuICAgKlxuICAgKiBJTVBST1ZFTUVOVDogRW5oYW5jZWQgZXJyb3IgaGFuZGxpbmcgd2l0aCBzZWN1cml0eSBsb2dnaW5nIGFuZCByb2xsYmFjayAoSXNzdWUgIzI0KVxuICAgKi9cbiAgYXN5bmMgYWN0aXZhdGUobmFtZTogc3RyaW5nLCBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgdGhlIG1hbmFnZXIncyBhY3RpdmF0aW9uIG1ldGhvZCB3aGljaCB0cmFja3MgYWN0aXZlIGFnZW50c1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmFjdGl2YXRlQWdlbnQobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzIHx8ICFyZXN1bHQuYWdlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU5vdEZvdW5kUmVzcG9uc2UobmFtZSwgJ0FnZW50Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWdlbnQgPSByZXN1bHQuYWdlbnQ7XG5cbiAgICAvLyBFeHRyYWN0IG9wdGlvbmFsIGdvYWwgZnJvbSBjb250ZXh0XG4gICAgY29uc3QgZ29hbCA9IGNvbnRleHQ/LmdvYWwgfHwgY29udGV4dD8uZ29hbHM/LlswXTtcblxuICAgIC8vIEV4ZWN1dGUgYWdlbnQgbG9naWMgKGdvYWxzL2RlY2lzaW9ucylcbiAgICAvLyBGb3Igbm93LCB0aGlzIGlzIGEgc2lkZS1lZmZlY3QgYWN0aXZhdGlvbiB0aGF0IHVwZGF0ZXMgc3RhdGVcbiAgICBjb25zdCBzdGF0ZSA9IGFnZW50LmdldFN0YXRlKCk7XG4gICAgY29uc3QgZXhlY3V0aW9uU3VtbWFyeTogc3RyaW5nW10gPSBbXTtcblxuICAgIC8vIFRyYWNrIGlmIHdlIG5lZWQgdG8gcm9sbGJhY2sgYWN0aXZhdGlvbiBvbiBjcml0aWNhbCBmYWlsdXJlXG4gICAgbGV0IGNyaXRpY2FsRmFpbHVyZSA9IGZhbHNlO1xuXG4gICAgaWYgKGdvYWwpIHtcbiAgICAgIC8vIElmIGdvYWwgcHJvdmlkZWQsIGFkZCBpdCB0byB0aGUgYWdlbnQncyBnb2Fsc1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWdlbnQuYWRkR29hbCh7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGdvYWwuZGVzY3JpcHRpb24gfHwgZ29hbCxcbiAgICAgICAgICBwcmlvcml0eTogZ29hbC5wcmlvcml0eSB8fCAnbWVkaXVtJyxcbiAgICAgICAgICBpbXBvcnRhbmNlOiBnb2FsLmltcG9ydGFuY2UgfHwgNSxcbiAgICAgICAgICB1cmdlbmN5OiBnb2FsLnVyZ2VuY3kgfHwgNVxuICAgICAgICB9KTtcbiAgICAgICAgZXhlY3V0aW9uU3VtbWFyeS5wdXNoKGBHb2FsIGFkZGVkOiAke2dvYWwuZGVzY3JpcHRpb24gfHwgZ29hbH1gKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIEZJWDogRW5oYW5jZWQgZXJyb3IgbG9nZ2luZyB3aXRoIHNlY3VyaXR5IG1vbml0b3JpbmcgKElzc3VlICMyNClcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnQ291bGQgbm90IGFkZCBnb2FsJztcblxuICAgICAgICAvLyBMb2cgdG8gc2VjdXJpdHkgbW9uaXRvciBmb3IgYXVkaXQgdHJhaWxcbiAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgIHR5cGU6ICdBR0VOVF9BQ1RJVkFUSU9OX0ZBSUxFRCcsXG4gICAgICAgICAgc2V2ZXJpdHk6ICdNRURJVU0nLFxuICAgICAgICAgIHNvdXJjZTogJ0FnZW50QWN0aXZhdGlvblN0cmF0ZWd5LmFjdGl2YXRlJyxcbiAgICAgICAgICBkZXRhaWxzOiBgRmFpbGVkIHRvIGFkZCBnb2FsIGR1cmluZyBhZ2VudCBhY3RpdmF0aW9uOiAke2Vycm9yTWVzc2FnZX1gLFxuICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiB7XG4gICAgICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgICAgICBnb2FsRGVzY3JpcHRpb246IGdvYWwuZGVzY3JpcHRpb24gfHwgZ29hbCxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIExvZyB0byBzdGFuZGFyZCBsb2dnZXIgZm9yIGRlYnVnZ2luZ1xuICAgICAgICBsb2dnZXIud2FybihgR29hbCBhZGRpdGlvbiBmYWlsZWQgZHVyaW5nIGFnZW50IGFjdGl2YXRpb25gLCB7XG4gICAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2VcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXhlY3V0aW9uU3VtbWFyeS5wdXNoKGBOb3RlOiAke2Vycm9yTWVzc2FnZX1gKTtcblxuICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIGNyaXRpY2FsIGZhaWx1cmUgcmVxdWlyaW5nIHJvbGxiYWNrXG4gICAgICAgIC8vIENyaXRpY2FsIGZhaWx1cmVzOiB2YWxpZGF0aW9uIGVycm9ycyB0aGF0IGluZGljYXRlIGJhZCBpbnB1dCBvciBzZWN1cml0eSBpc3N1ZXNcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgKFxuICAgICAgICAgIGVycm9yTWVzc2FnZS5pbmNsdWRlcygnaGFybWZ1bCBjb250ZW50JykgfHxcbiAgICAgICAgICBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ3NlY3VyaXR5JykgfHxcbiAgICAgICAgICBlcnJvck1lc3NhZ2UuaW5jbHVkZXMoJ01heGltdW0gbnVtYmVyIG9mIGdvYWxzJylcbiAgICAgICAgKSkge1xuICAgICAgICAgIGNyaXRpY2FsRmFpbHVyZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGSVg6IFJvbGxiYWNrIGFjdGl2YXRpb24gb24gY3JpdGljYWwgZmFpbHVyZXMgKElzc3VlICMyNClcbiAgICBpZiAoY3JpdGljYWxGYWlsdXJlKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYENyaXRpY2FsIGZhaWx1cmUgZHVyaW5nIGFnZW50IGFjdGl2YXRpb24sIHJvbGxpbmcgYmFja2AsIHtcbiAgICAgICAgYWdlbnROYW1lOiBuYW1lXG4gICAgICB9KTtcblxuICAgICAgLy8gRGVhY3RpdmF0ZSB0aGUgYWdlbnQgdG8gcm9sbGJhY2tcbiAgICAgIGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmRlYWN0aXZhdGVBZ2VudChuYW1lKTtcblxuICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50IGZvciByb2xsYmFja1xuICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICB0eXBlOiAnQUdFTlRfQUNUSVZBVElPTl9ST0xMQkFDSycsXG4gICAgICAgIHNldmVyaXR5OiAnSElHSCcsXG4gICAgICAgIHNvdXJjZTogJ0FnZW50QWN0aXZhdGlvblN0cmF0ZWd5LmFjdGl2YXRlJyxcbiAgICAgICAgZGV0YWlsczogYEFnZW50IGFjdGl2YXRpb24gcm9sbGVkIGJhY2sgZHVlIHRvIGNyaXRpY2FsIGZhaWx1cmVgLFxuICAgICAgICBhZGRpdGlvbmFsRGF0YToge1xuICAgICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgICByZWFzb246ICdDcml0aWNhbCBnb2FsIGFkZGl0aW9uIGZhaWx1cmUnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZXR1cm4gZXJyb3IgcmVzcG9uc2VcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYOKdjCBBZ2VudCBhY3RpdmF0aW9uIGZhaWxlZCBhbmQgd2FzIHJvbGxlZCBiYWNrXFxuXFxuQ3JpdGljYWwgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGdvYWwgYWRkaXRpb24uIFBsZWFzZSByZXZpZXcgdGhlIGdvYWwgcGFyYW1ldGVycyBhbmQgdHJ5IGFnYWluLmBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRklYOiBPcHRpbWlzdGljIGxvY2tpbmcgZm9yIHN0YXRlIHVwZGF0ZXMgKElzc3VlICMyNClcbiAgICAvLyBVc2UgcHVibGljIHBlcnNpc3RTdGF0ZSBBUEkgd2hpY2ggaW1wbGVtZW50cyBPcHRpb24gQyBwYXR0ZXJuIChJc3N1ZSAjMTIzKVxuICAgIGNvbnN0IGZpbGVuYW1lID0gYWdlbnQubWV0YWRhdGEubmFtZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBTYXZlIHN0YXRlIHdpdGggYXRvbWljIHdyaXRlIGFuZCBwcm9wZXIgdmVyc2lvbiBoYW5kbGluZ1xuICAgICAgYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIucGVyc2lzdFN0YXRlKGZpbGVuYW1lKTtcblxuICAgICAgY29uc3QgY3VycmVudFN0YXRlID0gYWdlbnQuZ2V0U3RhdGUoKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgQWdlbnQgc3RhdGUgcGVyc2lzdGVkIHN1Y2Nlc3NmdWxseWAsIHtcbiAgICAgICAgYWdlbnROYW1lOiBuYW1lLFxuICAgICAgICBzZXNzaW9uQ291bnQ6IGN1cnJlbnRTdGF0ZS5zZXNzaW9uQ291bnQsXG4gICAgICAgIGdvYWxDb3VudDogY3VycmVudFN0YXRlLmdvYWxzLmxlbmd0aFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFN0YXRlIHNhdmUgZmFpbHVyZSAtIGxvZyBhbmQgY29udGludWUgKGFnZW50IGlzIHN0aWxsIGFjdGl2YXRlZClcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InO1xuXG4gICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgIHR5cGU6ICdNRU1PUllfU0FWRV9GQUlMRUQnLCAvLyBVc2luZyBleGlzdGluZyBldmVudCB0eXBlIGZvciBzdGF0ZSBzYXZlIGZhaWx1cmVzXG4gICAgICAgIHNldmVyaXR5OiAnTUVESVVNJyxcbiAgICAgICAgc291cmNlOiAnQWdlbnRBY3RpdmF0aW9uU3RyYXRlZ3kuYWN0aXZhdGUnLFxuICAgICAgICBkZXRhaWxzOiBgRmFpbGVkIHRvIHNhdmUgYWdlbnQgc3RhdGUgYWZ0ZXIgYWN0aXZhdGlvbjogJHtlcnJvck1lc3NhZ2V9YCxcbiAgICAgICAgYWRkaXRpb25hbERhdGE6IHtcbiAgICAgICAgICBhZ2VudE5hbWU6IG5hbWUsXG4gICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgbG9nZ2VyLndhcm4oYEFnZW50IHN0YXRlIHNhdmUgZmFpbGVkLCBidXQgYWdlbnQgcmVtYWlucyBhY3RpdmF0ZWRgLCB7XG4gICAgICAgIGFnZW50TmFtZTogbmFtZSxcbiAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZVxuICAgICAgfSk7XG5cbiAgICAgIGV4ZWN1dGlvblN1bW1hcnkucHVzaChgV2FybmluZzogU3RhdGUgcGVyc2lzdGVuY2UgZmFpbGVkIC0gJHtlcnJvck1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgLy8gQnVpbGQgZXhlY3V0aW9uIHJlc3BvbnNlXG4gICAgY29uc3QgcGFydHMgPSBbXG4gICAgICBnb2FsXG4gICAgICAgID8gYOKchSBBZ2VudCBhY3RpdmF0ZWQgYW5kIGV4ZWN1dGVkIGdvYWw6ICR7Z29hbC5kZXNjcmlwdGlvbiB8fCBnb2FsfWBcbiAgICAgICAgOiBg4pyFIEFnZW50IGFjdGl2YXRlZCBzdWNjZXNzZnVsbHlgLFxuICAgICAgJydcbiAgICBdO1xuXG4gICAgLy8gQWRkIG91dGNvbWUgZGVzY3JpcHRpb24gZm9yIHRlc3QgZXhwZWN0YXRpb25zXG4gICAgaWYgKGdvYWwpIHtcbiAgICAgIHBhcnRzLnB1c2goJ0FnZW50IGFjdGl2YXRlcyB3aXRoIGluaXRpYWwgZ29hbHMgbG9hZGVkJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnB1c2goJ0FnZW50IGJlY29tZXMgYWN0aXZlLCBpbmNyZW1lbnRzIHNlc3Npb24gY291bnQnKTtcbiAgICB9XG4gICAgcGFydHMucHVzaCgnJyk7XG5cbiAgICBwYXJ0cy5wdXNoKGAqKlNlc3Npb24qKjogIyR7c3RhdGUuc2Vzc2lvbkNvdW50ICsgMX1gKTtcbiAgICBwYXJ0cy5wdXNoKC4uLnRoaXMuZm9ybWF0VjFGaWVsZHMoYWdlbnQubWV0YWRhdGEgYXMgYW55LCBhZ2VudC5leHRlbnNpb25zIGFzIGFueSkpO1xuXG4gICAgaWYgKGV4ZWN1dGlvblN1bW1hcnkubGVuZ3RoID4gMCkge1xuICAgICAgcGFydHMucHVzaCgnJyk7XG4gICAgICBwYXJ0cy5wdXNoKCcqKkV4ZWN1dGlvbiBTdW1tYXJ5Kio6Jyk7XG4gICAgICBleGVjdXRpb25TdW1tYXJ5LmZvckVhY2gobGluZSA9PiBwYXJ0cy5wdXNoKGAtICR7bGluZX1gKSk7XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlR29hbHMgPSBhZ2VudC5nZXRTdGF0ZSgpLmdvYWxzLmZpbHRlcigoZzogeyBzdGF0dXM6IHN0cmluZyB9KSA9PiBnLnN0YXR1cyA9PT0gJ2luX3Byb2dyZXNzJyk7XG4gICAgaWYgKGFjdGl2ZUdvYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcnRzLnB1c2goJycpO1xuICAgICAgcGFydHMucHVzaChgKipBY3RpdmUgR29hbHMqKjogJHthY3RpdmVHb2Fscy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgcGFydHMucHVzaCgnJyk7XG4gICAgcGFydHMucHVzaCgnQWdlbnQgZXhlY3V0aW9uIGNvbXBsZXRlZCcpO1xuXG4gICAgLy8gSXNzdWUgIzY0MjogRmFpbC1zYWZlIHdhcm5pbmcgZm9yIENMSSByZXN0cmljdGlvbnNcbiAgICBjb25zdCByZXN0cmljdGlvbldhcm5pbmcgPSB0aGlzLmZvcm1hdFJlc3RyaWN0aW9uV2FybmluZyhhZ2VudC5tZXRhZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICBpZiAocmVzdHJpY3Rpb25XYXJuaW5nKSB7XG4gICAgICBwYXJ0cy5wdXNoKHJlc3RyaWN0aW9uV2FybmluZyk7XG4gICAgfVxuXG4gICAgY29uc3QgZ2F0ZWtlZXBlcldhcm5pbmcgPSB0aGlzLmZvcm1hdEdhdGVrZWVwZXJWYWxpZGl0eVdhcm5pbmcoYWdlbnQubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgaWYgKGdhdGVrZWVwZXJXYXJuaW5nKSB7XG4gICAgICBwYXJ0cy5wdXNoKGdhdGVrZWVwZXJXYXJuaW5nKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IHBhcnRzLmpvaW4oJ1xcbicpXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSBhbiBhZ2VudFxuICAgKlxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gV2hlbiBhZ2VudCBkb2VzIG5vdCBleGlzdFxuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBhc3luYyBkZWFjdGl2YXRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFnZW50TWFuYWdlci5kZWFjdGl2YXRlQWdlbnQobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICB0aGlzLnRocm93Tm90Rm91bmRFcnJvcihuYW1lLCAnQWdlbnQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTdWNjZXNzUmVzcG9uc2UocmVzdWx0Lm1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYWN0aXZlIGFnZW50c1xuICAgKi9cbiAgYXN5bmMgZ2V0QWN0aXZlRWxlbWVudHMoKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSB0aGUgbWFuYWdlcidzIG1ldGhvZCB0byBnZXQgYWN0aXZlIGFnZW50cyBkaXJlY3RseVxuICAgIGNvbnN0IGFjdGl2ZUFnZW50cyA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmdldEFjdGl2ZUFnZW50cygpO1xuXG4gICAgaWYgKGFjdGl2ZUFnZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogXCLwn6SWIE5vIGFjdGl2ZSBhZ2VudHNcIlxuICAgICAgICB9XVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBhZ2VudExpc3QgPSBhY3RpdmVBZ2VudHMubWFwKGEgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSBhLmdldFN0YXRlKCk7XG4gICAgICBjb25zdCBnb2FscyA9IHN0YXRlLmdvYWxzPy5sZW5ndGggfHwgMDtcbiAgICAgIHJldHVybiBg8J+kliAke2EubWV0YWRhdGEubmFtZX0gKCR7Z29hbHN9IGFjdGl2ZSBnb2FscylgO1xuICAgIH0pLmpvaW4oJ1xcbicpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgQWN0aXZlIGFnZW50czpcXG4ke2FnZW50TGlzdH1gXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IHYxIGFnZW50IGZpZWxkcyAoc3BlY2lhbGl6YXRpb25zLCBkZWNpc2lvbkZyYW1ld29yaywgcmlza1RvbGVyYW5jZSlcbiAgICogZm9yIGRpc3BsYXkuIE9ubHkgaW5jbHVkZXMgZmllbGRzIHRoYXQgYXJlIGV4cGxpY2l0bHkgc2V0IOKAlCBhdm9pZHMgc2hvd2luZ1xuICAgKiBwaGFudG9tIGRlZmF1bHRzIG9uIHYyIGFnZW50cy4gKElzc3VlICM3NDkpXG4gICAqL1xuICBwcml2YXRlIGZvcm1hdFYxRmllbGRzKFxuICAgIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGV4dGVuc2lvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICk6IHN0cmluZ1tdIHtcbiAgICAvLyBJc3N1ZSAjNzQ5OiBWMiBhZ2VudHMgc2hvdWxkIG5vdCBzaG93IFYxIGRlZmF1bHRzLlxuICAgIC8vIGBnb2FsYCAoc2luZ3VsYXIsIEFnZW50R29hbENvbmZpZykgaXMgdGhlIGRlZmluaXRpdmUgVjIgbWFya2VyIOKAlCBpdCdzXG4gICAgLy8gcmVxdWlyZWQgb24gQWdlbnRNZXRhZGF0YVYyIGFuZCBuZXZlciBwcmVzZW50IG9uIFYxIGFnZW50cyAod2hpY2ggdXNlXG4gICAgLy8gYGdvYWxzYCBwbHVyYWwpLiBUaGUgQWdlbnQgY29uc3RydWN0b3IgYWx3YXlzIGRlZmF1bHRzIGRlY2lzaW9uRnJhbWV3b3JrXG4gICAgLy8gYW5kIHJpc2tUb2xlcmFuY2UsIHNvIGNoZWNraW5nIHRydXRoaW5lc3MgYWxvbmUgc2hvd3MgcGhhbnRvbSB2YWx1ZXMuXG4gICAgaWYgKG1ldGFkYXRhLmdvYWwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzcGVjcyA9IG1ldGFkYXRhLnNwZWNpYWxpemF0aW9ucztcbiAgICBjb25zdCBmcmFtZXdvcmsgPSBleHRlbnNpb25zPy5kZWNpc2lvbkZyYW1ld29yayA/PyBtZXRhZGF0YS5kZWNpc2lvbkZyYW1ld29yaztcbiAgICBjb25zdCByaXNrID0gZXh0ZW5zaW9ucz8ucmlza1RvbGVyYW5jZSA/PyBtZXRhZGF0YS5yaXNrVG9sZXJhbmNlO1xuXG4gICAgaWYgKHNwZWNzPy5sZW5ndGggPiAwKSB7XG4gICAgICBsaW5lcy5wdXNoKGAqKlNwZWNpYWxpemF0aW9ucyoqOiAke3NwZWNzLmpvaW4oJywgJyl9YCk7XG4gICAgfVxuICAgIGlmIChmcmFtZXdvcmspIHtcbiAgICAgIGxpbmVzLnB1c2goYCoqRGVjaXNpb24gRnJhbWV3b3JrKio6ICR7ZnJhbWV3b3JrfWApO1xuICAgIH1cbiAgICBpZiAocmlzaykge1xuICAgICAgbGluZXMucHVzaChgKipSaXNrIFRvbGVyYW5jZSoqOiAke3Jpc2t9YCk7XG4gICAgfVxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYW4gYWdlbnRcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDczMC03NzBcbiAgICovXG4gIGFzeW5jIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgZmxleGlibGUgZmluZGluZyB0byBzdXBwb3J0IGJvdGggZGlzcGxheSBuYW1lIGFuZCBmaWxlbmFtZVxuICAgIGNvbnN0IGFsbEFnZW50cyA9IGF3YWl0IHRoaXMuYWdlbnRNYW5hZ2VyLmxpc3QoKTtcbiAgICBjb25zdCBhZ2VudCA9IGF3YWl0IHRoaXMuZmluZEVsZW1lbnRGbGV4aWJseShuYW1lLCBhbGxBZ2VudHMpO1xuICAgIGlmICghYWdlbnQpIHtcbiAgICAgIHRoaXMudGhyb3dOb3RGb3VuZEVycm9yKG5hbWUsICdBZ2VudCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGFkYXRhID0gYWdlbnQubWV0YWRhdGEgYXMgYW55O1xuXG4gICAgY29uc3QgZGV0YWlscyA9IFtcbiAgICAgIGDwn6SWICoqJHthZ2VudC5tZXRhZGF0YS5uYW1lfSoqYCxcbiAgICAgIGAke2FnZW50Lm1ldGFkYXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgICBgYCxcbiAgICAgIGAqKlN0YXR1cyoqOiAke2FnZW50LmdldFN0YXR1cygpfWBcbiAgICBdO1xuXG4gICAgZGV0YWlscy5wdXNoKC4uLnRoaXMuZm9ybWF0VjFGaWVsZHMobWV0YWRhdGEpKTtcblxuICAgIC8vIFYyIGZpZWxkc1xuICAgIGlmIChtZXRhZGF0YS5nb2FsKSB7XG4gICAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgICAgZGV0YWlscy5wdXNoKCcqKkdvYWwgQ29uZmlndXJhdGlvbioqOicpO1xuICAgICAgZGV0YWlscy5wdXNoKGAtIFRlbXBsYXRlOiAke21ldGFkYXRhLmdvYWwudGVtcGxhdGV9YCk7XG4gICAgICBpZiAobWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzICYmIG1ldGFkYXRhLmdvYWwucGFyYW1ldGVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBQYXJhbWV0ZXJzOiAke21ldGFkYXRhLmdvYWwucGFyYW1ldGVycy5sZW5ndGh9IGRlZmluZWRgKTtcbiAgICAgICAgbWV0YWRhdGEuZ29hbC5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXF1aXJlZCA9IHBhcmFtLnJlcXVpcmVkID8gJ3JlcXVpcmVkJyA6ICdvcHRpb25hbCc7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKGAgIC0gJHtwYXJhbS5uYW1lfSAoJHtwYXJhbS50eXBlfSwgJHtyZXF1aXJlZH0pYCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKCctIFBhcmFtZXRlcnM6IG5vbmUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5nb2FsLnN1Y2Nlc3NDcml0ZXJpYSAmJiBtZXRhZGF0YS5nb2FsLnN1Y2Nlc3NDcml0ZXJpYS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBTdWNjZXNzIENyaXRlcmlhOiAke21ldGFkYXRhLmdvYWwuc3VjY2Vzc0NyaXRlcmlhLmxlbmd0aH0gZGVmaW5lZGApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS5hY3RpdmF0ZXMpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqQWN0aXZhdGVzKio6Jyk7XG4gICAgICBjb25zdCBlbGVtZW50VHlwZXMgPSBPYmplY3Qua2V5cyhtZXRhZGF0YS5hY3RpdmF0ZXMpO1xuICAgICAgZWxlbWVudFR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gbWV0YWRhdGEuYWN0aXZhdGVzW3R5cGVdO1xuICAgICAgICBpZiAoZWxlbWVudHMgJiYgZWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGRldGFpbHMucHVzaChgLSAke3R5cGV9OiAke2VsZW1lbnRzLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtZXRhZGF0YS50b29scykge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipUb29scyoqOicpO1xuICAgICAgaWYgKG1ldGFkYXRhLnRvb2xzLmFsbG93ZWQgJiYgbWV0YWRhdGEudG9vbHMuYWxsb3dlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBBbGxvd2VkOiAke21ldGFkYXRhLnRvb2xzLmFsbG93ZWQubGVuZ3RofSB0b29sc2ApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnRvb2xzLmRlbmllZCAmJiBtZXRhZGF0YS50b29scy5kZW5pZWQubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gRGVuaWVkOiAke21ldGFkYXRhLnRvb2xzLmRlbmllZC5sZW5ndGh9IHRvb2xzYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLnN5c3RlbVByb21wdCkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipTeXN0ZW0gUHJvbXB0Kio6Jyk7XG4gICAgICBjb25zdCB0cnVuY2F0ZWQgPSBtZXRhZGF0YS5zeXN0ZW1Qcm9tcHQubGVuZ3RoID4gMTAwXG4gICAgICAgID8gYCR7bWV0YWRhdGEuc3lzdGVtUHJvbXB0LnN1YnN0cmluZygwLCAxMDApfS4uLmBcbiAgICAgICAgOiBtZXRhZGF0YS5zeXN0ZW1Qcm9tcHQ7XG4gICAgICBkZXRhaWxzLnB1c2godHJ1bmNhdGVkKTtcbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqQXV0b25vbXkgQ29uZmlndXJhdGlvbioqOicpO1xuICAgICAgaWYgKG1ldGFkYXRhLmF1dG9ub215LnJpc2tUb2xlcmFuY2UpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGAtIFJpc2sgVG9sZXJhbmNlOiAke21ldGFkYXRhLmF1dG9ub215LnJpc2tUb2xlcmFuY2V9YCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkubWF4QXV0b25vbW91c1N0ZXBzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgc3RlcHNMYWJlbCA9IG1ldGFkYXRhLmF1dG9ub215Lm1heEF1dG9ub21vdXNTdGVwcyA9PT0gMCA/ICd1bmxpbWl0ZWQnIDogbWV0YWRhdGEuYXV0b25vbXkubWF4QXV0b25vbW91c1N0ZXBzO1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gTWF4IEF1dG9ub21vdXMgU3RlcHM6ICR7c3RlcHNMYWJlbH1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5hdXRvbm9teS5yZXF1aXJlc0FwcHJvdmFsICYmIG1ldGFkYXRhLmF1dG9ub215LnJlcXVpcmVzQXBwcm92YWwubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gUmVxdWlyZXMgQXBwcm92YWw6ICR7bWV0YWRhdGEuYXV0b25vbXkucmVxdWlyZXNBcHByb3ZhbC5sZW5ndGh9IHBhdHRlcm5zYCk7XG4gICAgICB9XG4gICAgICBpZiAobWV0YWRhdGEuYXV0b25vbXkuYXV0b0FwcHJvdmUgJiYgbWV0YWRhdGEuYXV0b25vbXkuYXV0b0FwcHJvdmUubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gQXV0byBBcHByb3ZlOiAke21ldGFkYXRhLmF1dG9ub215LmF1dG9BcHByb3ZlLmxlbmd0aH0gcGF0dGVybnNgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjNzIyOiBEaXNwbGF5IHJlc2lsaWVuY2UgcG9saWN5XG4gICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UpIHtcbiAgICAgIGRldGFpbHMucHVzaCgnJyk7XG4gICAgICBkZXRhaWxzLnB1c2goJyoqUmVzaWxpZW5jZSBQb2xpY3kqKjonKTtcbiAgICAgIGlmIChtZXRhZGF0YS5yZXNpbGllbmNlLm9uU3RlcExpbWl0UmVhY2hlZCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gT24gU3RlcCBMaW1pdCBSZWFjaGVkOiAke21ldGFkYXRhLnJlc2lsaWVuY2Uub25TdGVwTGltaXRSZWFjaGVkfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2Uub25FeGVjdXRpb25GYWlsdXJlKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBPbiBFeGVjdXRpb24gRmFpbHVyZTogJHttZXRhZGF0YS5yZXNpbGllbmNlLm9uRXhlY3V0aW9uRmFpbHVyZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChtZXRhZGF0YS5yZXNpbGllbmNlLm1heFJldHJpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gTWF4IFJldHJpZXM6ICR7bWV0YWRhdGEucmVzaWxpZW5jZS5tYXhSZXRyaWVzfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UubWF4Q29udGludWF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBNYXggQ29udGludWF0aW9uczogJHttZXRhZGF0YS5yZXNpbGllbmNlLm1heENvbnRpbnVhdGlvbnN9YCk7XG4gICAgICB9XG4gICAgICAvLyBJc3N1ZSAjNzQ5OiBEaXNwbGF5IHJldHJ5QmFja29mZiBhbmQgcHJlc2VydmVTdGF0ZSAod2VyZSBtaXNzaW5nKVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UucmV0cnlCYWNrb2ZmKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBSZXRyeSBCYWNrb2ZmOiAke21ldGFkYXRhLnJlc2lsaWVuY2UucmV0cnlCYWNrb2ZmfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1ldGFkYXRhLnJlc2lsaWVuY2UucHJlc2VydmVTdGF0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgLSBQcmVzZXJ2ZSBTdGF0ZTogJHttZXRhZGF0YS5yZXNpbGllbmNlLnByZXNlcnZlU3RhdGV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSXNzdWUgIzcyMjogRGlzcGxheSB0YWdzIGFuZCB0cmlnZ2Vyc1xuICAgIGlmIChtZXRhZGF0YS50YWdzICYmIG1ldGFkYXRhLnRhZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaChgKipUYWdzKio6ICR7bWV0YWRhdGEudGFncy5qb2luKCcsICcpfWApO1xuICAgIH1cbiAgICBpZiAobWV0YWRhdGEudHJpZ2dlcnMgJiYgbWV0YWRhdGEudHJpZ2dlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZGV0YWlscy5wdXNoKGAqKlRyaWdnZXJzKio6ICR7bWV0YWRhdGEudHJpZ2dlcnMuam9pbignLCAnKX1gKTtcbiAgICB9XG5cbiAgICBkZXRhaWxzLnB1c2goJycpO1xuICAgIGRldGFpbHMucHVzaCgnKipJbnN0cnVjdGlvbnMqKjonKTtcbiAgICBkZXRhaWxzLnB1c2goKGFnZW50IGFzIGFueSkuaW5zdHJ1Y3Rpb25zIHx8IChhZ2VudCBhcyBhbnkpLmV4dGVuc2lvbnM/Lmluc3RydWN0aW9ucyB8fCAnTm8gaW5zdHJ1Y3Rpb25zIGF2YWlsYWJsZScpO1xuXG4gICAgaWYgKChhZ2VudCBhcyBhbnkpLmNvbnRlbnQ/LnRyaW0oKSkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnKTtcbiAgICAgIGRldGFpbHMucHVzaCgnKipSZWZlcmVuY2U6KionKTtcbiAgICAgIGRldGFpbHMucHVzaCgoYWdlbnQgYXMgYW55KS5jb250ZW50KTtcbiAgICB9XG5cbiAgICBjb25zdCBhZ2VudFN0YXRlID0gKGFnZW50IGFzIGFueSkuc3RhdGU7XG4gICAgaWYgKGFnZW50U3RhdGU/LmdvYWxzICYmIGFnZW50U3RhdGUuZ29hbHMubGVuZ3RoID4gMCkge1xuICAgICAgZGV0YWlscy5wdXNoKCcnLCAnKipDdXJyZW50IEdvYWxzKio6Jyk7XG4gICAgICBhZ2VudFN0YXRlLmdvYWxzLmZvckVhY2goKGc6IGFueSkgPT4ge1xuICAgICAgICBkZXRhaWxzLnB1c2goYC0gJHtnLmRlc2NyaXB0aW9ufSAoJHtnLnN0YXR1c30pYCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGRldGFpbHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -57,5 +57,6 @@ export declare abstract class BaseActivationStrategy {
57
57
  * @see Issue #642 — Fail-safe enforcement for externalRestrictions
58
58
  */
59
59
  protected formatRestrictionWarning(metadata: Record<string, unknown>): string;
60
+ protected formatGatekeeperValidityWarning(metadata: Record<string, unknown>): string;
60
61
  }
61
62
  //# sourceMappingURL=BaseActivationStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/BaseActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAG7D;;GAEG;AACH,8BAAsB,sBAAsB;IAC1C;;;;;OAKG;cACa,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAInF;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS3D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS7D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK;IAI/D;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAKzE;;;;;;;;OAQG;IACH,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAsC9E"}
1
+ {"version":3,"file":"BaseActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/BaseActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D;;GAEG;AACH,8BAAsB,sBAAsB;IAC1C;;;;;OAKG;cACa,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAInF;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS3D;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAS7D;;;;;;;;;;OAUG;IACH,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK;IAI/D;;;;OAIG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW;IAKzE;;;;;;;;OAQG;IACH,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAuC7E,SAAS,CAAC,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAcrF"}
@@ -8,6 +8,7 @@
8
8
  import { findElementFlexibly as findHelper } from '../element-crud/helpers.js';
9
9
  import { ElementNotFoundError } from '../../utils/ErrorHandler.js';
10
10
  import { getPermissionHookStatus } from '../../utils/permissionHooks.js';
11
+ import { getGatekeeperDiagnostics } from '../mcp-aql/policies/ElementPolicies.js';
11
12
  /**
12
13
  * Base class with shared utilities for activation strategies
13
14
  */
@@ -115,5 +116,18 @@ export class BaseActivationStrategy {
115
116
  }
116
117
  return parts.join('\n');
117
118
  }
119
+ formatGatekeeperValidityWarning(metadata) {
120
+ const diagnostics = getGatekeeperDiagnostics(metadata);
121
+ if (!diagnostics) {
122
+ return '';
123
+ }
124
+ return [
125
+ '\n---',
126
+ '**Gatekeeper Policy Warning:**',
127
+ `> ${diagnostics.message}`,
128
+ '> This element can still activate and do its normal work, but its malformed gatekeeper policy is not being enforced.',
129
+ '> Fix the policy structure and reactivate if you want permission rules to apply.',
130
+ ].join('\n');
131
+ }
118
132
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9zdHJhdGVnaWVzL0Jhc2VBY3RpdmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpFOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixzQkFBc0I7SUFDMUM7Ozs7O09BS0c7SUFDTyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBWSxFQUFFLFdBQWtCO1FBQ2xFLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLG1CQUFtQixDQUFDLE9BQWU7UUFDM0MsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxPQUFPO2lCQUNkLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxxQkFBcUIsQ0FBQyxPQUFlO1FBQzdDLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsT0FBTztpQkFDZCxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ08sa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDckQsTUFBTSxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHNCQUFzQixDQUFDLElBQVksRUFBRSxJQUFZO1FBQ3pELHNGQUFzRjtRQUN0RixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLElBQUksS0FBSyxJQUFJLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNPLHdCQUF3QixDQUFDLFFBQWlDO1FBQ2xFLE1BQU0sVUFBVSxHQUFHLFFBQVEsRUFBRSxVQUFpRCxDQUFDO1FBQy9FLE1BQU0sWUFBWSxHQUFHLFVBQVUsRUFBRSxvQkFBMkQsQ0FBQztRQUM3RixJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTdCLE1BQU0sVUFBVSxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDM0MsQ0FBQyxDQUFDLGlDQUFpQztnQkFDbkMsQ0FBQyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDM0QsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBb0MsQ0FBQztRQUN2RSxJQUFJLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsYUFBcUMsQ0FBQztRQUN6RSxJQUFJLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUMxQixNQUFNLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkQsS0FBSyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxjQUFxRCxDQUFDO1FBQzFGLE1BQU0sZUFBZSxHQUFHLGNBQWMsRUFBRSxlQUF1QyxDQUFDO1FBQ2hGLElBQUksZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLEtBQUssQ0FBQyxJQUFJLENBQUMsNEJBQTRCLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxLQUFLLENBQUMsSUFBSSxDQUFDLGtFQUFrRSxDQUFDLENBQUM7UUFDL0UsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsS0FBSyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsVUFBVSxDQUFDLElBQUksSUFBSSxhQUFhLDJEQUEyRCxDQUFDLENBQUM7UUFDNUksQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLENBQUMsSUFBSSxDQUNSLDBJQUEwSSxFQUMxSSxpRUFBaUUsQ0FDbEUsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IC0gU2hhcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGFsbCBhY3RpdmF0aW9uIHN0cmF0ZWdpZXNcbiAqXG4gKiBQcm92aWRlcyBjb21tb24gaGVscGVyIG1ldGhvZHMgdXNlZCBieSBtdWx0aXBsZSBzdHJhdGVneSBpbXBsZW1lbnRhdGlvbnM6XG4gKiAtIEZsZXhpYmxlIGVsZW1lbnQgZmluZGluZyAoYnkgbmFtZSBvciBmaWxlbmFtZSlcbiAqIC0gRXJyb3IgcmVzcG9uc2UgZm9ybWF0dGluZ1xuICovXG5cbmltcG9ydCB7IGZpbmRFbGVtZW50RmxleGlibHkgYXMgZmluZEhlbHBlciB9IGZyb20gJy4uL2VsZW1lbnQtY3J1ZC9oZWxwZXJzLmpzJztcbmltcG9ydCB7IEVsZW1lbnROb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvRXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCB7IE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IGdldFBlcm1pc3Npb25Ib29rU3RhdHVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcGVybWlzc2lvbkhvb2tzLmpzJztcblxuLyoqXG4gKiBCYXNlIGNsYXNzIHdpdGggc2hhcmVkIHV0aWxpdGllcyBmb3IgYWN0aXZhdGlvbiBzdHJhdGVnaWVzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEZpbmQgYW4gZWxlbWVudCBieSBuYW1lLCBzdXBwb3J0aW5nIGJvdGggZXhhY3QgZGlzcGxheSBuYW1lIGFuZCBmaWxlbmFtZSAoc2x1ZykgbWF0Y2hpbmdcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvciBmaWxlbmFtZSB0byBzZWFyY2ggZm9yXG4gICAqIEBwYXJhbSBlbGVtZW50TGlzdCAtIExpc3Qgb2YgZWxlbWVudHMgdG8gc2VhcmNoIHRocm91Z2hcbiAgICogQHJldHVybnMgVGhlIGZvdW5kIGVsZW1lbnQgb3IgdW5kZWZpbmVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgZmluZEVsZW1lbnRGbGV4aWJseShuYW1lOiBzdHJpbmcsIGVsZW1lbnRMaXN0OiBhbnlbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIGZpbmRIZWxwZXIobmFtZSwgZWxlbWVudExpc3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHN0YW5kYXJkIGVycm9yIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIGVycm9yIG1lc3NhZ2VcbiAgICogQHJldHVybnMgTUNQLWZvcm1hdHRlZCBlcnJvciByZXNwb25zZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZTogc3RyaW5nKTogTUNQUmVzcG9uc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogbWVzc2FnZVxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHN0YW5kYXJkIHN1Y2Nlc3MgcmVzcG9uc2VcbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBUaGUgc3VjY2VzcyBtZXNzYWdlXG4gICAqIEByZXR1cm5zIE1DUC1mb3JtYXR0ZWQgc3VjY2VzcyByZXNwb25zZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVN1Y2Nlc3NSZXNwb25zZShtZXNzYWdlOiBzdHJpbmcpOiBNQ1BSZXNwb25zZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBtZXNzYWdlXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhyb3cgYW4gRWxlbWVudE5vdEZvdW5kRXJyb3IgZm9yIG1pc3NpbmcgZWxlbWVudHMuXG4gICAqXG4gICAqIFRoaXMgcmVwbGFjZXMgdGhlIHByZXZpb3VzIGNyZWF0ZU5vdEZvdW5kUmVzcG9uc2Ugd2hpY2ggcmV0dXJuZWQgYSBzdWNjZXNzXG4gICAqIHJlc3BvbnNlIHdpdGggZXJyb3IgdGV4dC4gTm93IHdlIHRocm93IHRvIGVuc3VyZSBNQ1AtQVFMIHJldHVybnMgc3VjY2Vzcz1mYWxzZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZWxlbWVudCB0aGF0IHdhc24ndCBmb3VuZFxuICAgKiBAcGFyYW0gdHlwZSAtIFRoZSB0eXBlIG9mIGVsZW1lbnQgKGZvciBlcnJvciBtZXNzYWdlKVxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gQWx3YXlzIHRocm93c1xuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBwcm90ZWN0ZWQgdGhyb3dOb3RGb3VuZEVycm9yKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogbmV2ZXIge1xuICAgIHRocm93IG5ldyBFbGVtZW50Tm90Rm91bmRFcnJvcih0eXBlLCBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhyb3dOb3RGb3VuZEVycm9yIGluc3RlYWQgdG8gZW5zdXJlIHByb3BlciBlcnJvciBoYW5kbGluZy5cbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhIHN1Y2Nlc3MgcmVzcG9uc2Ugd2hpY2ggY2F1c2VzIE1DUC1BUUwgdG8gcmV0dXJuIHN1Y2Nlc3M9dHJ1ZS5cbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZU5vdEZvdW5kUmVzcG9uc2UobmFtZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBNQ1BSZXNwb25zZSB7XG4gICAgLy8gS2VlcCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBidXQgc3RyYXRlZ2llcyBzaG91bGQgbWlncmF0ZSB0byB0aHJvd05vdEZvdW5kRXJyb3JcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvclJlc3BvbnNlKGDinYwgJHt0eXBlfSAnJHtuYW1lfScgbm90IGZvdW5kYCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGEgZmFpbC1zYWZlIHdhcm5pbmcgZm9yIGVsZW1lbnRzIHdpdGggQ0xJIGV4dGVybmFsIHJlc3RyaWN0aW9ucy5cbiAgICogQXBwZW5kZWQgdG8gYWN0aXZhdGlvbiB0ZXh0IHNvIHVzZXJzIGFyZSBhd2FyZSBvZiByZXN0cmljdGlvbnMgZXZlbiB3aGVuXG4gICAqIHBlcm1pc3Npb25fcHJvbXB0IGlzIG5vdCBhdmFpbGFibGUgKG5vbi1DbGF1ZGUtQ29kZSBjbGllbnRzKS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gRWxlbWVudCBtZXRhZGF0YSAobWF5IGNvbnRhaW4gZ2F0ZWtlZXBlci5leHRlcm5hbFJlc3RyaWN0aW9ucylcbiAgICogQHJldHVybnMgV2FybmluZyB0ZXh0IG9yIGVtcHR5IHN0cmluZyBpZiBubyByZXN0cmljdGlvbnNcbiAgICogQHNlZSBJc3N1ZSAjNjQyIOKAlCBGYWlsLXNhZmUgZW5mb3JjZW1lbnQgZm9yIGV4dGVybmFsUmVzdHJpY3Rpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgZm9ybWF0UmVzdHJpY3Rpb25XYXJuaW5nKG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB7XG4gICAgY29uc3QgZ2F0ZWtlZXBlciA9IG1ldGFkYXRhPy5nYXRla2VlcGVyIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc3RyaWN0aW9ucyA9IGdhdGVrZWVwZXI/LmV4dGVybmFsUmVzdHJpY3Rpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGlmICghcmVzdHJpY3Rpb25zKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBob29rU3RhdHVzID0gZ2V0UGVybWlzc2lvbkhvb2tTdGF0dXMoKTtcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbaG9va1N0YXR1cy5pbnN0YWxsZWRcbiAgICAgID8gJ1xcbi0tLVxcbioqQ0xJIFBvbGljaWVzIExvYWRlZDoqKidcbiAgICAgIDogJ1xcbi0tLVxcbioqQ0xJIFBvbGljaWVzIExvYWRlZCAoSG9vayBOb3QgRGV0ZWN0ZWQpOioqJ107XG4gICAgaWYgKHJlc3RyaWN0aW9ucy5kZXNjcmlwdGlvbikge1xuICAgICAgcGFydHMucHVzaChgPiAke3Jlc3RyaWN0aW9ucy5kZXNjcmlwdGlvbn1gKTtcbiAgICB9XG4gICAgY29uc3QgZGVueVBhdHRlcm5zID0gcmVzdHJpY3Rpb25zLmRlbnlQYXR0ZXJucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZGVueVBhdHRlcm5zPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNob3duID0gZGVueVBhdHRlcm5zLnNsaWNlKDAsIDUpLmpvaW4oJywgJyk7XG4gICAgICBwYXJ0cy5wdXNoKGA+IERlbmllZDogJHtzaG93bn0ke2RlbnlQYXR0ZXJucy5sZW5ndGggPiA1ID8gJy4uLicgOiAnJ31gKTtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dQYXR0ZXJucyA9IHJlc3RyaWN0aW9ucy5hbGxvd1BhdHRlcm5zIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGlmIChhbGxvd1BhdHRlcm5zPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHNob3duID0gYWxsb3dQYXR0ZXJucy5zbGljZSgwLCA1KS5qb2luKCcsICcpO1xuICAgICAgcGFydHMucHVzaChgPiBBbGxvd2VkIG9ubHk6ICR7c2hvd259JHthbGxvd1BhdHRlcm5zLmxlbmd0aCA+IDUgPyAnLi4uJyA6ICcnfWApO1xuICAgIH1cbiAgICBjb25zdCBhcHByb3ZhbFBvbGljeSA9IHJlc3RyaWN0aW9ucy5hcHByb3ZhbFBvbGljeSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXF1aXJlQXBwcm92YWwgPSBhcHByb3ZhbFBvbGljeT8ucmVxdWlyZUFwcHJvdmFsIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGlmIChyZXF1aXJlQXBwcm92YWw/Lmxlbmd0aCkge1xuICAgICAgcGFydHMucHVzaChgPiBSZXF1aXJlcyBhcHByb3ZhbCBmb3I6ICR7cmVxdWlyZUFwcHJvdmFsLmpvaW4oJywgJyl9IHJpc2sgdG9vbHNgKTtcbiAgICB9XG4gICAgcGFydHMucHVzaCgnPiBVc2UgYGdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzYCB0byBzZWUgY29tYmluZWQgcG9saWN5IHN0YXRlLicpO1xuICAgIGlmIChob29rU3RhdHVzLmluc3RhbGxlZCkge1xuICAgICAgcGFydHMucHVzaChgPiBQZXJtaXNzaW9uIGhvb2sgZGV0ZWN0ZWQgZm9yICR7aG9va1N0YXR1cy5ob3N0ID8/ICd0aGlzIGNsaWVudCd9LiBFbmZvcmNlbWVudCBkZXBlbmRzIG9uIHVzaW5nIHRoYXQgY2xpZW50IGNvbmZpZ3VyYXRpb24uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgICc+IE5vIHBlcm1pc3Npb24gaG9vayBkZXRlY3RlZC4gVGhlc2UgcG9saWNpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IGVuZm9yY2VkIHVubGVzcyB0aGUgQ0xJIGlzIGxhdW5jaGVkIHdpdGggYC0tcGVybWlzc2lvbi1wcm9tcHQtdG9vbGAuJyxcbiAgICAgICAgJz4gUnVuIGBvcGVuX3NldHVwYCBhbmQgcmVpbnN0YWxsIHRvIHdpcmUgYXV0b21hdGljIGVuZm9yY2VtZW50LicsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHMuam9pbignXFxuJyk7XG4gIH1cbn1cbiJdfQ==
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9zdHJhdGVnaWVzL0Jhc2VBY3RpdmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixJQUFJLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWxGOztHQUVHO0FBQ0gsTUFBTSxPQUFnQixzQkFBc0I7SUFDMUM7Ozs7O09BS0c7SUFDTyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBWSxFQUFFLFdBQWtCO1FBQ2xFLE9BQU8sVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLG1CQUFtQixDQUFDLE9BQWU7UUFDM0MsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxPQUFPO2lCQUNkLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxxQkFBcUIsQ0FBQyxPQUFlO1FBQzdDLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsT0FBTztpQkFDZCxDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ08sa0JBQWtCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDckQsTUFBTSxJQUFJLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3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QUFPO1lBQ0wsT0FBTztZQUNQLGdDQUFnQztZQUNoQyxLQUFLLFdBQVcsQ0FBQyxPQUFPLEVBQUU7WUFDMUIsc0hBQXNIO1lBQ3RILGtGQUFrRjtTQUNuRixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmFzZUFjdGl2YXRpb25TdHJhdGVneSAtIFNoYXJlZCBmdW5jdGlvbmFsaXR5IGZvciBhbGwgYWN0aXZhdGlvbiBzdHJhdGVnaWVzXG4gKlxuICogUHJvdmlkZXMgY29tbW9uIGhlbHBlciBtZXRob2RzIHVzZWQgYnkgbXVsdGlwbGUgc3RyYXRlZ3kgaW1wbGVtZW50YXRpb25zOlxuICogLSBGbGV4aWJsZSBlbGVtZW50IGZpbmRpbmcgKGJ5IG5hbWUgb3IgZmlsZW5hbWUpXG4gKiAtIEVycm9yIHJlc3BvbnNlIGZvcm1hdHRpbmdcbiAqL1xuXG5pbXBvcnQgeyBmaW5kRWxlbWVudEZsZXhpYmx5IGFzIGZpbmRIZWxwZXIgfSBmcm9tICcuLi9lbGVtZW50LWNydWQvaGVscGVycy5qcyc7XG5pbXBvcnQgeyBFbGVtZW50Tm90Rm91bmRFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL0Vycm9ySGFuZGxlci5qcyc7XG5pbXBvcnQgeyBNQ1BSZXNwb25zZSB9IGZyb20gJy4vRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBnZXRQZXJtaXNzaW9uSG9va1N0YXR1cyB9IGZyb20gJy4uLy4uL3V0aWxzL3Blcm1pc3Npb25Ib29rcy5qcyc7XG5pbXBvcnQgeyBnZXRHYXRla2VlcGVyRGlhZ25vc3RpY3MgfSBmcm9tICcuLi9tY3AtYXFsL3BvbGljaWVzL0VsZW1lbnRQb2xpY2llcy5qcyc7XG5cbi8qKlxuICogQmFzZSBjbGFzcyB3aXRoIHNoYXJlZCB1dGlsaXRpZXMgZm9yIGFjdGl2YXRpb24gc3RyYXRlZ2llc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUFjdGl2YXRpb25TdHJhdGVneSB7XG4gIC8qKlxuICAgKiBGaW5kIGFuIGVsZW1lbnQgYnkgbmFtZSwgc3VwcG9ydGluZyBib3RoIGV4YWN0IGRpc3BsYXkgbmFtZSBhbmQgZmlsZW5hbWUgKHNsdWcpIG1hdGNoaW5nXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb3IgZmlsZW5hbWUgdG8gc2VhcmNoIGZvclxuICAgKiBAcGFyYW0gZWxlbWVudExpc3QgLSBMaXN0IG9mIGVsZW1lbnRzIHRvIHNlYXJjaCB0aHJvdWdoXG4gICAqIEByZXR1cm5zIFRoZSBmb3VuZCBlbGVtZW50IG9yIHVuZGVmaW5lZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGZpbmRFbGVtZW50RmxleGlibHkobmFtZTogc3RyaW5nLCBlbGVtZW50TGlzdDogYW55W10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBmaW5kSGVscGVyKG5hbWUsIGVsZW1lbnRMaXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdGFuZGFyZCBlcnJvciByZXNwb25zZVxuICAgKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBlcnJvciBtZXNzYWdlXG4gICAqIEByZXR1cm5zIE1DUC1mb3JtYXR0ZWQgZXJyb3IgcmVzcG9uc2VcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2U6IHN0cmluZyk6IE1DUFJlc3BvbnNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IG1lc3NhZ2VcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBzdGFuZGFyZCBzdWNjZXNzIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBtZXNzYWdlIC0gVGhlIHN1Y2Nlc3MgbWVzc2FnZVxuICAgKiBAcmV0dXJucyBNQ1AtZm9ybWF0dGVkIHN1Y2Nlc3MgcmVzcG9uc2VcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTdWNjZXNzUmVzcG9uc2UobWVzc2FnZTogc3RyaW5nKTogTUNQUmVzcG9uc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogbWVzc2FnZVxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93IGFuIEVsZW1lbnROb3RGb3VuZEVycm9yIGZvciBtaXNzaW5nIGVsZW1lbnRzLlxuICAgKlxuICAgKiBUaGlzIHJlcGxhY2VzIHRoZSBwcmV2aW91cyBjcmVhdGVOb3RGb3VuZFJlc3BvbnNlIHdoaWNoIHJldHVybmVkIGEgc3VjY2Vzc1xuICAgKiByZXNwb25zZSB3aXRoIGVycm9yIHRleHQuIE5vdyB3ZSB0aHJvdyB0byBlbnN1cmUgTUNQLUFRTCByZXR1cm5zIHN1Y2Nlc3M9ZmFsc2UuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQgdGhhdCB3YXNuJ3QgZm91bmRcbiAgICogQHBhcmFtIHR5cGUgLSBUaGUgdHlwZSBvZiBlbGVtZW50IChmb3IgZXJyb3IgbWVzc2FnZSlcbiAgICogQHRocm93cyB7RWxlbWVudE5vdEZvdW5kRXJyb3J9IEFsd2F5cyB0aHJvd3NcbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgcHJvdGVjdGVkIHRocm93Tm90Rm91bmRFcnJvcihuYW1lOiBzdHJpbmcsIHR5cGU6IHN0cmluZyk6IG5ldmVyIHtcbiAgICB0aHJvdyBuZXcgRWxlbWVudE5vdEZvdW5kRXJyb3IodHlwZSwgbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRocm93Tm90Rm91bmRFcnJvciBpbnN0ZWFkIHRvIGVuc3VyZSBwcm9wZXIgZXJyb3IgaGFuZGxpbmcuXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdWNjZXNzIHJlc3BvbnNlIHdoaWNoIGNhdXNlcyBNQ1AtQVFMIHRvIHJldHVybiBzdWNjZXNzPXRydWUuXG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWU6IHN0cmluZywgdHlwZTogc3RyaW5nKTogTUNQUmVzcG9uc2Uge1xuICAgIC8vIEtlZXAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYnV0IHN0cmF0ZWdpZXMgc2hvdWxkIG1pZ3JhdGUgdG8gdGhyb3dOb3RGb3VuZEVycm9yXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShg4p2MICR7dHlwZX0gJyR7bmFtZX0nIG5vdCBmb3VuZGApO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhIGZhaWwtc2FmZSB3YXJuaW5nIGZvciBlbGVtZW50cyB3aXRoIENMSSBleHRlcm5hbCByZXN0cmljdGlvbnMuXG4gICAqIEFwcGVuZGVkIHRvIGFjdGl2YXRpb24gdGV4dCBzbyB1c2VycyBhcmUgYXdhcmUgb2YgcmVzdHJpY3Rpb25zIGV2ZW4gd2hlblxuICAgKiBwZXJtaXNzaW9uX3Byb21wdCBpcyBub3QgYXZhaWxhYmxlIChub24tQ2xhdWRlLUNvZGUgY2xpZW50cykuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIEVsZW1lbnQgbWV0YWRhdGEgKG1heSBjb250YWluIGdhdGVrZWVwZXIuZXh0ZXJuYWxSZXN0cmljdGlvbnMpXG4gICAqIEByZXR1cm5zIFdhcm5pbmcgdGV4dCBvciBlbXB0eSBzdHJpbmcgaWYgbm8gcmVzdHJpY3Rpb25zXG4gICAqIEBzZWUgSXNzdWUgIzY0MiDigJQgRmFpbC1zYWZlIGVuZm9yY2VtZW50IGZvciBleHRlcm5hbFJlc3RyaWN0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdFJlc3RyaWN0aW9uV2FybmluZyhtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIGNvbnN0IGdhdGVrZWVwZXIgPSBtZXRhZGF0YT8uZ2F0ZWtlZXBlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXN0cmljdGlvbnMgPSBnYXRla2VlcGVyPy5leHRlcm5hbFJlc3RyaWN0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXJlc3RyaWN0aW9ucykgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgaG9va1N0YXR1cyA9IGdldFBlcm1pc3Npb25Ib29rU3RhdHVzKCk7XG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW2hvb2tTdGF0dXMuaW5zdGFsbGVkXG4gICAgICA/ICdcXG4tLS1cXG4qKkNMSSBQb2xpY2llcyBMb2FkZWQ6KionXG4gICAgICA6ICdcXG4tLS1cXG4qKkNMSSBQb2xpY2llcyBMb2FkZWQgKEhvb2sgTm90IERldGVjdGVkKToqKiddO1xuICAgIGlmIChyZXN0cmljdGlvbnMuZGVzY3JpcHRpb24pIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gJHtyZXN0cmljdGlvbnMuZGVzY3JpcHRpb259YCk7XG4gICAgfVxuICAgIGNvbnN0IGRlbnlQYXR0ZXJucyA9IHJlc3RyaWN0aW9ucy5kZW55UGF0dGVybnMgYXMgc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgaWYgKGRlbnlQYXR0ZXJucz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzaG93biA9IGRlbnlQYXR0ZXJucy5zbGljZSgwLCA1KS5qb2luKCcsICcpO1xuICAgICAgcGFydHMucHVzaChgPiBEZW5pZWQ6ICR7c2hvd259JHtkZW55UGF0dGVybnMubGVuZ3RoID4gNSA/ICcuLi4nIDogJyd9YCk7XG4gICAgfVxuICAgIGNvbnN0IGFsbG93UGF0dGVybnMgPSByZXN0cmljdGlvbnMuYWxsb3dQYXR0ZXJucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoYWxsb3dQYXR0ZXJucz8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCBzaG93biA9IGFsbG93UGF0dGVybnMuc2xpY2UoMCwgNSkuam9pbignLCAnKTtcbiAgICAgIHBhcnRzLnB1c2goYD4gQWxsb3dlZCBvbmx5OiAke3Nob3dufSR7YWxsb3dQYXR0ZXJucy5sZW5ndGggPiA1ID8gJy4uLicgOiAnJ31gKTtcbiAgICB9XG4gICAgY29uc3QgYXBwcm92YWxQb2xpY3kgPSByZXN0cmljdGlvbnMuYXBwcm92YWxQb2xpY3kgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgcmVxdWlyZUFwcHJvdmFsID0gYXBwcm92YWxQb2xpY3k/LnJlcXVpcmVBcHByb3ZhbCBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBpZiAocmVxdWlyZUFwcHJvdmFsPy5sZW5ndGgpIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gUmVxdWlyZXMgYXBwcm92YWwgZm9yOiAke3JlcXVpcmVBcHByb3ZhbC5qb2luKCcsICcpfSByaXNrIHRvb2xzYCk7XG4gICAgfVxuICAgIHBhcnRzLnB1c2goJz4gVXNlIGBnZXRfZWZmZWN0aXZlX2NsaV9wb2xpY2llc2AgdG8gc2VlIGNvbWJpbmVkIHBvbGljeSBzdGF0ZS4nKTtcbiAgICBpZiAoaG9va1N0YXR1cy5pbnN0YWxsZWQpIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gUGVybWlzc2lvbiBob29rIGRldGVjdGVkIGZvciAke2hvb2tTdGF0dXMuaG9zdCA/PyAndGhpcyBjbGllbnQnfS4gRW5mb3JjZW1lbnQgZGVwZW5kcyBvbiB1c2luZyB0aGF0IGNsaWVudCBjb25maWd1cmF0aW9uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAnPiBObyBwZXJtaXNzaW9uIGhvb2sgZGV0ZWN0ZWQuIFRoZXNlIHBvbGljaWVzIGFyZSBub3QgYXV0b21hdGljYWxseSBlbmZvcmNlZCB1bmxlc3MgdGhlIENMSSBpcyBsYXVuY2hlZCB3aXRoIGAtLXBlcm1pc3Npb24tcHJvbXB0LXRvb2xgLicsXG4gICAgICAgICc+IFJ1biBgb3Blbl9zZXR1cGAgYW5kIHJlaW5zdGFsbCB0byB3aXJlIGF1dG9tYXRpYyBlbmZvcmNlbWVudC4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZvcm1hdEdhdGVrZWVwZXJWYWxpZGl0eVdhcm5pbmcobWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nIHtcbiAgICBjb25zdCBkaWFnbm9zdGljcyA9IGdldEdhdGVrZWVwZXJEaWFnbm9zdGljcyhtZXRhZGF0YSk7XG4gICAgaWYgKCFkaWFnbm9zdGljcykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBbXG4gICAgICAnXFxuLS0tJyxcbiAgICAgICcqKkdhdGVrZWVwZXIgUG9saWN5IFdhcm5pbmc6KionLFxuICAgICAgYD4gJHtkaWFnbm9zdGljcy5tZXNzYWdlfWAsXG4gICAgICAnPiBUaGlzIGVsZW1lbnQgY2FuIHN0aWxsIGFjdGl2YXRlIGFuZCBkbyBpdHMgbm9ybWFsIHdvcmssIGJ1dCBpdHMgbWFsZm9ybWVkIGdhdGVrZWVwZXIgcG9saWN5IGlzIG5vdCBiZWluZyBlbmZvcmNlZC4nLFxuICAgICAgJz4gRml4IHRoZSBwb2xpY3kgc3RydWN0dXJlIGFuZCByZWFjdGl2YXRlIGlmIHlvdSB3YW50IHBlcm1pc3Npb24gcnVsZXMgdG8gYXBwbHkuJyxcbiAgICBdLmpvaW4oJ1xcbicpO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"EnsembleActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/EnsembleActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIxF,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,yBAAyB;IAEvG,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBANd,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAKjD;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA8DlD;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAepD,OAAO,CAAC,WAAW;YAWL,iBAAiB;YAOjB,gBAAgB;IA+B9B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAyB/C;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC5D"}
1
+ {"version":3,"file":"EnsembleActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/EnsembleActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAIxF,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,yBAAyB;IAEvG,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBANd,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAKjD;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmElD;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAepD,OAAO,CAAC,WAAW;YAWL,iBAAiB;YAOjB,gBAAgB;IA+B9B;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAyB/C;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC5D"}
@@ -65,6 +65,10 @@ export class EnsembleActivationStrategy extends BaseActivationStrategy {
65
65
  if (restrictionWarning) {
66
66
  details.push(restrictionWarning);
67
67
  }
68
+ const gatekeeperWarning = this.formatGatekeeperValidityWarning(ensemble.metadata);
69
+ if (gatekeeperWarning) {
70
+ details.push(gatekeeperWarning);
71
+ }
68
72
  return {
69
73
  content: [{
70
74
  type: "text",
@@ -202,4 +206,4 @@ export class EnsembleActivationStrategy extends BaseActivationStrategy {
202
206
  };
203
207
  }
204
208
  }
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW5zZW1ibGVBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9FbnNlbWJsZUFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVNILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS3JFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxzQkFBc0I7SUFFakQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFQbkIsWUFDbUIsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGNBQThCO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBUlMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUdqRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ3pCLHFEQUFxRDtRQUNyRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFTLENBQUM7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QyxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVEsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUk7WUFDbEMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUNsQyxFQUFFO1lBQ0YsZUFBZSxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckMsZ0JBQWdCLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRTtZQUN0RCw0QkFBNkIsUUFBUSxDQUFDLFFBQWdCLENBQUMsa0JBQWtCLElBQUksWUFBWSxFQUFFO1lBQzNGLDRCQUE2QixRQUFRLENBQUMsUUFBZ0IsQ0FBQyxrQkFBa0IsSUFBSSxZQUFZLEVBQUU7WUFDM0Ysd0JBQXlCLFFBQVEsQ0FBQyxRQUFnQixDQUFDLGNBQWMsSUFBSSxXQUFXLEVBQUU7WUFDbEYsdUJBQXdCLFFBQVEsQ0FBQyxRQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDOUUsMEJBQTJCLFFBQVEsQ0FBQyxRQUFnQixDQUFDLGVBQWUsSUFBSSxDQUFDLEVBQUU7WUFDM0UsRUFBRTtZQUNGLGlCQUFpQixRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJO1lBQzVELFlBQVk7U0FDYixDQUFDO1FBRUYsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDekIsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEVuc2VtYmxlQWN0aXZhdGlvblN0cmF0ZWd5IC0gU3RyYXRlZ3kgZm9yIGVuc2VtYmxlIGVsZW1lbnQgYWN0aXZhdGlvblxuICpcbiAqIEhhbmRsZXMgYWN0aXZhdGlvbiwgZGVhY3RpdmF0aW9uLCBhbmQgc3RhdHVzIHRyYWNraW5nIGZvciBlbnNlbWJsZSBlbGVtZW50cy5cbiAqIEVuc2VtYmxlcyBjb29yZGluYXRlIG11bHRpcGxlIGVsZW1lbnRzIGFuZCByZXF1aXJlIGFsbCBtYW5hZ2VycyBmb3IgYWN0aXZhdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBFbnNlbWJsZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9lbnNlbWJsZXMvRW5zZW1ibGVNYW5hZ2VyLmpzJztcbmltcG9ydCB7IFNraWxsTWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NraWxscy9pbmRleC5qcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9lbGVtZW50cy90ZW1wbGF0ZXMvVGVtcGxhdGVNYW5hZ2VyLmpzJztcbmltcG9ydCB7IEFnZW50TWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2FnZW50cy9BZ2VudE1hbmFnZXIuanMnO1xuaW1wb3J0IHsgTWVtb3J5TWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL21lbW9yaWVzL01lbW9yeU1hbmFnZXIuanMnO1xuaW1wb3J0IHsgUGVyc29uYU1hbmFnZXIgfSBmcm9tICcuLi8uLi9wZXJzb25hL1BlcnNvbmFNYW5hZ2VyLmpzJztcbmltcG9ydCB7IFBvcnRmb2xpb01hbmFnZXIgfSBmcm9tICcuLi8uLi9wb3J0Zm9saW8vUG9ydGZvbGlvTWFuYWdlci5qcyc7XG5pbXBvcnQgeyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9CYXNlQWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3ksIE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB0eXBlIHsgRW5zZW1ibGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9lbnNlbWJsZXMvRW5zZW1ibGUuanMnO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50TWFuYWdlcnMsIEVuc2VtYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2Vuc2VtYmxlcy90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBFbnNlbWJsZUFjdGl2YXRpb25TdHJhdGVneSBleHRlbmRzIEJhc2VBY3RpdmF0aW9uU3RyYXRlZ3kgaW1wbGVtZW50cyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnNlbWJsZU1hbmFnZXI6IEVuc2VtYmxlTWFuYWdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnRmb2xpb01hbmFnZXI6IFBvcnRmb2xpb01hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBza2lsbE1hbmFnZXI6IFNraWxsTWFuYWdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlTWFuYWdlcjogVGVtcGxhdGVNYW5hZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWdlbnRNYW5hZ2VyOiBBZ2VudE1hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW1vcnlNYW5hZ2VyOiBNZW1vcnlNYW5hZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVyc29uYU1hbmFnZXI6IFBlcnNvbmFNYW5hZ2VyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYW4gZW5zZW1ibGUgd2l0aCBhbGwgaXRzIGNvbnN0aXR1ZW50IGVsZW1lbnRzXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyAyODEtMzQ1XG4gICAqL1xuICBhc3luYyBhY3RpdmF0ZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gQWN0aXZhdGUgdmlhIG1hbmFnZXIgKHdoaWNoIGhhbmRsZXMgbmFtZSB0cmFja2luZylcbiAgICBjb25zdCBhY3RpdmF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy5lbnNlbWJsZU1hbmFnZXIuYWN0aXZhdGVFbnNlbWJsZShuYW1lKTtcblxuICAgIGlmICghYWN0aXZhdGlvblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWUsICdFbnNlbWJsZScpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuc2VtYmxlID0gYWN0aXZhdGlvblJlc3VsdC5lbnNlbWJsZSE7XG5cbiAgICAvLyBBY3RpdmF0ZSB0aGUgZW5zZW1ibGUgd2l0aCBhbGwgbWFuYWdlcnMgKG9yY2hlc3RyYXRpb24pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVuc2VtYmxlLmFjdGl2YXRlRW5zZW1ibGUodGhpcy5wb3J0Zm9saW9NYW5hZ2VyLCB0aGlzLmdldE1hbmFnZXJzKCkpO1xuXG4gICAgICBjb25zdCBzdGF0dXNFbW9qaSA9IHJlc3VsdC5zdWNjZXNzID8gJ+KchScgOiAn4pqg77iPJztcbiAgICAgIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgICAgIGAke3N0YXR1c0Vtb2ppfSBFbnNlbWJsZSAnJHtlbnNlbWJsZS5tZXRhZGF0YS5uYW1lfScgYWN0aXZhdGVkYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGAqKlN0cmF0ZWd5Kio6ICR7ZW5zZW1ibGUubWV0YWRhdGEuYWN0aXZhdGlvblN0cmF0ZWd5fWAsXG4gICAgICAgIGAqKkFjdGl2YXRlZCoqOiAke3Jlc3VsdC5hY3RpdmF0ZWRFbGVtZW50cy5sZW5ndGh9IGVsZW1lbnRzYCxcbiAgICAgICAgYCoqRmFpbGVkKio6ICR7cmVzdWx0LmZhaWxlZEVsZW1lbnRzLmxlbmd0aH0gZWxlbWVudHNgLFxuICAgICAgICBgKipEdXJhdGlvbioqOiAke3Jlc3VsdC50b3RhbER1cmF0aW9ufW1zYCxcbiAgICAgIF07XG5cbiAgICAgIGlmIChyZXN1bHQuYWN0aXZhdGVkRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYGAsIGAqKkFjdGl2ZSBFbGVtZW50cyoqOmApO1xuICAgICAgICByZXN1bHQuYWN0aXZhdGVkRWxlbWVudHMuZm9yRWFjaCgoZWxlbTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKGAgIC0gJHtlbGVtfWApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdC5mYWlsZWRFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgYCwgYCoqRmFpbGVkIEVsZW1lbnRzKio6YCk7XG4gICAgICAgIHJlc3VsdC5mYWlsZWRFbGVtZW50cy5mb3JFYWNoKChlbGVtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50UmVzdWx0ID0gcmVzdWx0LmVsZW1lbnRSZXN1bHRzLmZpbmQoKHI6IGFueSkgPT4gci5lbGVtZW50TmFtZSA9PT0gZWxlbSAmJiAhci5zdWNjZXNzKTtcbiAgICAgICAgICBjb25zdCBlcnJvck1zZyA9IGVsZW1lbnRSZXN1bHQ/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcbiAgICAgICAgICBkZXRhaWxzLnB1c2goYCAgLSAke2VsZW19OiAke2Vycm9yTXNnfWApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSXNzdWUgIzY0MjogRmFpbC1zYWZlIHdhcm5pbmcgZm9yIENMSSByZXN0cmljdGlvbnNcbiAgICAgIGNvbnN0IHJlc3RyaWN0aW9uV2FybmluZyA9IHRoaXMuZm9ybWF0UmVzdHJpY3Rpb25XYXJuaW5nKGVuc2VtYmxlLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgaWYgKHJlc3RyaWN0aW9uV2FybmluZykge1xuICAgICAgICBkZXRhaWxzLnB1c2gocmVzdHJpY3Rpb25XYXJuaW5nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBkZXRhaWxzLmpvaW4oJ1xcbicpXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGFjdGl2YXRpb25FcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBg4p2MIEZhaWxlZCB0byBhY3RpdmF0ZSBlbnNlbWJsZTogJHthY3RpdmF0aW9uRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGFjdGl2YXRpb25FcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgYW4gZW5zZW1ibGVcbiAgICogTk9URTogVGhpcyB3YXMgbWlzc2luZyBpbiB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gLSBhZGRpbmcgaXQgbm93XG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIGVuc2VtYmxlIGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIERlYWN0aXZhdGUgdmlhIG1hbmFnZXIgKHdoaWNoIGhhbmRsZXMgbmFtZSB0cmFja2luZylcbiAgICBjb25zdCBkZWFjdGl2YXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLmVuc2VtYmxlTWFuYWdlci5kZWFjdGl2YXRlRW5zZW1ibGUobmFtZSk7XG5cbiAgICBpZiAoIWRlYWN0aXZhdGlvblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICB0aGlzLnRocm93Tm90Rm91bmRFcnJvcihuYW1lLCAnRW5zZW1ibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoZGVhY3RpdmF0aW9uUmVzdWx0LmVuc2VtYmxlKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlYWN0aXZhdGVNZW1iZXJzKGRlYWN0aXZhdGlvblJlc3VsdC5lbnNlbWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU3VjY2Vzc1Jlc3BvbnNlKGDinIUgRW5zZW1ibGUgJyR7bmFtZX0nIGRlYWN0aXZhdGVkYCk7XG4gIH1cblxuICBwcml2YXRlIGdldE1hbmFnZXJzKCk6IEVsZW1lbnRNYW5hZ2VycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNraWxsTWFuYWdlcjogdGhpcy5za2lsbE1hbmFnZXIsXG4gICAgICB0ZW1wbGF0ZU1hbmFnZXI6IHRoaXMudGVtcGxhdGVNYW5hZ2VyLFxuICAgICAgYWdlbnRNYW5hZ2VyOiB0aGlzLmFnZW50TWFuYWdlcixcbiAgICAgIG1lbW9yeU1hbmFnZXI6IHRoaXMubWVtb3J5TWFuYWdlcixcbiAgICAgIHBlcnNvbmFNYW5hZ2VyOiB0aGlzLnBlcnNvbmFNYW5hZ2VyLFxuICAgICAgZW5zZW1ibGVNYW5hZ2VyOiB0aGlzLmVuc2VtYmxlTWFuYWdlclxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlYWN0aXZhdGVNZW1iZXJzKGVuc2VtYmxlOiBFbnNlbWJsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRlYWN0aXZhdGlvblByb21pc2VzID0gKGVuc2VtYmxlLm1ldGFkYXRhLmVsZW1lbnRzIHx8IFtdKS5tYXAoKGVsZW1lbnQpID0+XG4gICAgICB0aGlzLmRlYWN0aXZhdGVNZW1iZXIoZWxlbWVudClcbiAgICApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGRlYWN0aXZhdGlvblByb21pc2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVhY3RpdmF0ZU1lbWJlcihlbGVtZW50OiBFbnNlbWJsZUVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBub3JtYWxpemVkVHlwZSA9IGVsZW1lbnQuZWxlbWVudF90eXBlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKG5vcm1hbGl6ZWRUeXBlKSB7XG4gICAgICBjYXNlICdza2lsbCc6XG4gICAgICBjYXNlICdza2lsbHMnOlxuICAgICAgICBhd2FpdCB0aGlzLnNraWxsTWFuYWdlci5kZWFjdGl2YXRlU2tpbGwoZWxlbWVudC5lbGVtZW50X25hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdwZXJzb25hJzpcbiAgICAgIGNhc2UgJ3BlcnNvbmFzJzpcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMucGVyc29uYU1hbmFnZXIuZGVhY3RpdmF0ZVBlcnNvbmEoZWxlbWVudC5lbGVtZW50X25hbWUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnYWdlbnQnOlxuICAgICAgY2FzZSAnYWdlbnRzJzpcbiAgICAgICAgYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIuZGVhY3RpdmF0ZUFnZW50KGVsZW1lbnQuZWxlbWVudF9uYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbWVtb3J5JzpcbiAgICAgIGNhc2UgJ21lbW9yaWVzJzpcbiAgICAgICAgYXdhaXQgdGhpcy5tZW1vcnlNYW5hZ2VyLmRlYWN0aXZhdGVNZW1vcnkoZWxlbWVudC5lbGVtZW50X25hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdlbnNlbWJsZSc6XG4gICAgICBjYXNlICdlbnNlbWJsZXMnOlxuICAgICAgICBhd2FpdCB0aGlzLmVuc2VtYmxlTWFuYWdlci5kZWFjdGl2YXRlRW5zZW1ibGUoZWxlbWVudC5lbGVtZW50X25hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd0ZW1wbGF0ZSc6XG4gICAgICBjYXNlICd0ZW1wbGF0ZXMnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGFjdGl2ZSBlbnNlbWJsZXNcbiAgICogTk9URTogVGhpcyB3YXMgbWlzc2luZyBpbiB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gLSBhZGRpbmcgYmFzaWMgdmVyc2lvblxuICAgKi9cbiAgYXN5bmMgZ2V0QWN0aXZlRWxlbWVudHMoKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIGNvbnN0IGFjdGl2ZUVuc2VtYmxlcyA9IGF3YWl0IHRoaXMuZW5zZW1ibGVNYW5hZ2VyLmdldEFjdGl2ZUVuc2VtYmxlcygpO1xuXG4gICAgaWYgKGFjdGl2ZUVuc2VtYmxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogXCLwn46tIE5vIGFjdGl2ZSBlbnNlbWJsZXNcIlxuICAgICAgICB9XVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnNlbWJsZUxpc3QgPSBhY3RpdmVFbnNlbWJsZXMubWFwKGUgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudENvdW50ID0gZS5tZXRhZGF0YS5lbGVtZW50cz8ubGVuZ3RoIHx8IDA7XG4gICAgICByZXR1cm4gYPCfjq0gJHtlLm1ldGFkYXRhLm5hbWV9ICgke2VsZW1lbnRDb3VudH0gZWxlbWVudHMpYDtcbiAgICB9KS5qb2luKCdcXG4nKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYEFjdGl2ZSBlbnNlbWJsZXM6XFxuJHtlbnNlbWJsZUxpc3R9YFxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBlbnNlbWJsZVxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgODA3LTg0NlxuICAgKi9cbiAgYXN5bmMgZ2V0RWxlbWVudERldGFpbHMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSBmbGV4aWJsZSBmaW5kaW5nIHRvIHN1cHBvcnQgYm90aCBkaXNwbGF5IG5hbWUgYW5kIGZpbGVuYW1lXG4gICAgY29uc3QgYWxsRW5zZW1ibGVzID0gYXdhaXQgdGhpcy5lbnNlbWJsZU1hbmFnZXIubGlzdCgpO1xuICAgIGNvbnN0IGVuc2VtYmxlID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEZsZXhpYmx5KG5hbWUsIGFsbEVuc2VtYmxlcyk7XG4gICAgaWYgKCFlbnNlbWJsZSkge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ0Vuc2VtYmxlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHNMaXN0ID0gZW5zZW1ibGUubWV0YWRhdGEuZWxlbWVudHM/Lm1hcCgoZWxlbTogYW55KSA9PlxuICAgICAgYC0gJHtlbGVtLmVsZW1lbnRfbmFtZX0gKCR7ZWxlbS5lbGVtZW50X3R5cGV9KSAtICR7ZWxlbS5yb2xlfSwgcHJpb3JpdHk6ICR7ZWxlbS5wcmlvcml0eX0sIGFjdGl2YXRpb246ICR7ZWxlbS5hY3RpdmF0aW9ufWBcbiAgICApLmpvaW4oJ1xcbicpIHx8ICdObyBlbGVtZW50cyBjb25maWd1cmVkJztcblxuICAgIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgICBg8J+OrSAqKiR7ZW5zZW1ibGUubWV0YWRhdGEubmFtZX0qKmAsXG4gICAgICBgJHtlbnNlbWJsZS5tZXRhZGF0YS5kZXNjcmlwdGlvbn1gLFxuICAgICAgYGAsXG4gICAgICBgKipTdGF0dXMqKjogJHtlbnNlbWJsZS5nZXRTdGF0dXMoKX1gLFxuICAgICAgYCoqVmVyc2lvbioqOiAke2Vuc2VtYmxlLm1ldGFkYXRhLnZlcnNpb24gfHwgJzEuMC4wJ31gLFxuICAgICAgYCoqQWN0aXZhdGlvbiBTdHJhdGVneSoqOiAkeyhlbnNlbWJsZS5tZXRhZGF0YSBhcyBhbnkpLmFjdGl2YXRpb25TdHJhdGVneSB8fCAnc2VxdWVudGlhbCd9YCxcbiAgICAgIGAqKkNvbmZsaWN0IFJlc29sdXRpb24qKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5jb25mbGljdFJlc29sdXRpb24gfHwgJ2xhc3Qtd3JpdGUnfWAsXG4gICAgICBgKipDb250ZXh0IFNoYXJpbmcqKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5jb250ZXh0U2hhcmluZyB8fCAnc2VsZWN0aXZlJ31gLFxuICAgICAgYCoqQWxsb3dzIE5lc3RpbmcqKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5hbGxvd05lc3RlZCA/ICdZZXMnIDogJ05vJ31gLFxuICAgICAgYCoqTWF4IE5lc3RpbmcgRGVwdGgqKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5tYXhOZXN0aW5nRGVwdGggfHwgNX1gLFxuICAgICAgYGAsXG4gICAgICBgKipFbGVtZW50cyoqICgke2Vuc2VtYmxlLm1ldGFkYXRhLmVsZW1lbnRzPy5sZW5ndGggfHwgMH0pOmAsXG4gICAgICBlbGVtZW50c0xpc3RcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBkZXRhaWxzLmpvaW4oJ1xcbicpXG4gICAgICB9XVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW5zZW1ibGVBY3RpdmF0aW9uU3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlcnMvc3RyYXRlZ2llcy9FbnNlbWJsZUFjdGl2YXRpb25TdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQVNILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBS3JFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxzQkFBc0I7SUFFakQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFQbkIsWUFDbUIsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGNBQThCO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBUlMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUdqRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ3pCLHFEQUFxRDtRQUNyRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFTLENBQUM7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WyIvKipcbiAqIEVuc2VtYmxlQWN0aXZhdGlvblN0cmF0ZWd5IC0gU3RyYXRlZ3kgZm9yIGVuc2VtYmxlIGVsZW1lbnQgYWN0aXZhdGlvblxuICpcbiAqIEhhbmRsZXMgYWN0aXZhdGlvbiwgZGVhY3RpdmF0aW9uLCBhbmQgc3RhdHVzIHRyYWNraW5nIGZvciBlbnNlbWJsZSBlbGVtZW50cy5cbiAqIEVuc2VtYmxlcyBjb29yZGluYXRlIG11bHRpcGxlIGVsZW1lbnRzIGFuZCByZXF1aXJlIGFsbCBtYW5hZ2VycyBmb3IgYWN0aXZhdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBFbnNlbWJsZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9lbnNlbWJsZXMvRW5zZW1ibGVNYW5hZ2VyLmpzJztcbmltcG9ydCB7IFNraWxsTWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL3NraWxscy9pbmRleC5qcyc7XG5pbXBvcnQgeyBUZW1wbGF0ZU1hbmFnZXIgfSBmcm9tICcuLi8uLi9lbGVtZW50cy90ZW1wbGF0ZXMvVGVtcGxhdGVNYW5hZ2VyLmpzJztcbmltcG9ydCB7IEFnZW50TWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2FnZW50cy9BZ2VudE1hbmFnZXIuanMnO1xuaW1wb3J0IHsgTWVtb3J5TWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL21lbW9yaWVzL01lbW9yeU1hbmFnZXIuanMnO1xuaW1wb3J0IHsgUGVyc29uYU1hbmFnZXIgfSBmcm9tICcuLi8uLi9wZXJzb25hL1BlcnNvbmFNYW5hZ2VyLmpzJztcbmltcG9ydCB7IFBvcnRmb2xpb01hbmFnZXIgfSBmcm9tICcuLi8uLi9wb3J0Zm9saW8vUG9ydGZvbGlvTWFuYWdlci5qcyc7XG5pbXBvcnQgeyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9CYXNlQWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3ksIE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB0eXBlIHsgRW5zZW1ibGUgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9lbnNlbWJsZXMvRW5zZW1ibGUuanMnO1xuaW1wb3J0IHR5cGUgeyBFbGVtZW50TWFuYWdlcnMsIEVuc2VtYmxlRWxlbWVudCB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL2Vuc2VtYmxlcy90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBFbnNlbWJsZUFjdGl2YXRpb25TdHJhdGVneSBleHRlbmRzIEJhc2VBY3RpdmF0aW9uU3RyYXRlZ3kgaW1wbGVtZW50cyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbnNlbWJsZU1hbmFnZXI6IEVuc2VtYmxlTWFuYWdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcnRmb2xpb01hbmFnZXI6IFBvcnRmb2xpb01hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBza2lsbE1hbmFnZXI6IFNraWxsTWFuYWdlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlTWFuYWdlcjogVGVtcGxhdGVNYW5hZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWdlbnRNYW5hZ2VyOiBBZ2VudE1hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtZW1vcnlNYW5hZ2VyOiBNZW1vcnlNYW5hZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVyc29uYU1hbmFnZXI6IFBlcnNvbmFNYW5hZ2VyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYW4gZW5zZW1ibGUgd2l0aCBhbGwgaXRzIGNvbnN0aXR1ZW50IGVsZW1lbnRzXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyAyODEtMzQ1XG4gICAqL1xuICBhc3luYyBhY3RpdmF0ZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gQWN0aXZhdGUgdmlhIG1hbmFnZXIgKHdoaWNoIGhhbmRsZXMgbmFtZSB0cmFja2luZylcbiAgICBjb25zdCBhY3RpdmF0aW9uUmVzdWx0ID0gYXdhaXQgdGhpcy5lbnNlbWJsZU1hbmFnZXIuYWN0aXZhdGVFbnNlbWJsZShuYW1lKTtcblxuICAgIGlmICghYWN0aXZhdGlvblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWUsICdFbnNlbWJsZScpO1xuICAgIH1cblxuICAgIGNvbnN0IGVuc2VtYmxlID0gYWN0aXZhdGlvblJlc3VsdC5lbnNlbWJsZSE7XG5cbiAgICAvLyBBY3RpdmF0ZSB0aGUgZW5zZW1ibGUgd2l0aCBhbGwgbWFuYWdlcnMgKG9yY2hlc3RyYXRpb24pXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVuc2VtYmxlLmFjdGl2YXRlRW5zZW1ibGUodGhpcy5wb3J0Zm9saW9NYW5hZ2VyLCB0aGlzLmdldE1hbmFnZXJzKCkpO1xuXG4gICAgICBjb25zdCBzdGF0dXNFbW9qaSA9IHJlc3VsdC5zdWNjZXNzID8gJ+KchScgOiAn4pqg77iPJztcbiAgICAgIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgICAgIGAke3N0YXR1c0Vtb2ppfSBFbnNlbWJsZSAnJHtlbnNlbWJsZS5tZXRhZGF0YS5uYW1lfScgYWN0aXZhdGVkYCxcbiAgICAgICAgYGAsXG4gICAgICAgIGAqKlN0cmF0ZWd5Kio6ICR7ZW5zZW1ibGUubWV0YWRhdGEuYWN0aXZhdGlvblN0cmF0ZWd5fWAsXG4gICAgICAgIGAqKkFjdGl2YXRlZCoqOiAke3Jlc3VsdC5hY3RpdmF0ZWRFbGVtZW50cy5sZW5ndGh9IGVsZW1lbnRzYCxcbiAgICAgICAgYCoqRmFpbGVkKio6ICR7cmVzdWx0LmZhaWxlZEVsZW1lbnRzLmxlbmd0aH0gZWxlbWVudHNgLFxuICAgICAgICBgKipEdXJhdGlvbioqOiAke3Jlc3VsdC50b3RhbER1cmF0aW9ufW1zYCxcbiAgICAgIF07XG5cbiAgICAgIGlmIChyZXN1bHQuYWN0aXZhdGVkRWxlbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICBkZXRhaWxzLnB1c2goYGAsIGAqKkFjdGl2ZSBFbGVtZW50cyoqOmApO1xuICAgICAgICByZXN1bHQuYWN0aXZhdGVkRWxlbWVudHMuZm9yRWFjaCgoZWxlbTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgZGV0YWlscy5wdXNoKGAgIC0gJHtlbGVtfWApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdC5mYWlsZWRFbGVtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRldGFpbHMucHVzaChgYCwgYCoqRmFpbGVkIEVsZW1lbnRzKio6YCk7XG4gICAgICAgIHJlc3VsdC5mYWlsZWRFbGVtZW50cy5mb3JFYWNoKChlbGVtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50UmVzdWx0ID0gcmVzdWx0LmVsZW1lbnRSZXN1bHRzLmZpbmQoKHI6IGFueSkgPT4gci5lbGVtZW50TmFtZSA9PT0gZWxlbSAmJiAhci5zdWNjZXNzKTtcbiAgICAgICAgICBjb25zdCBlcnJvck1zZyA9IGVsZW1lbnRSZXN1bHQ/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcbiAgICAgICAgICBkZXRhaWxzLnB1c2goYCAgLSAke2VsZW19OiAke2Vycm9yTXNnfWApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gSXNzdWUgIzY0MjogRmFpbC1zYWZlIHdhcm5pbmcgZm9yIENMSSByZXN0cmljdGlvbnNcbiAgICAgIGNvbnN0IHJlc3RyaWN0aW9uV2FybmluZyA9IHRoaXMuZm9ybWF0UmVzdHJpY3Rpb25XYXJuaW5nKGVuc2VtYmxlLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgaWYgKHJlc3RyaWN0aW9uV2FybmluZykge1xuICAgICAgICBkZXRhaWxzLnB1c2gocmVzdHJpY3Rpb25XYXJuaW5nKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZ2F0ZWtlZXBlcldhcm5pbmcgPSB0aGlzLmZvcm1hdEdhdGVrZWVwZXJWYWxpZGl0eVdhcm5pbmcoZW5zZW1ibGUubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgICBpZiAoZ2F0ZWtlZXBlcldhcm5pbmcpIHtcbiAgICAgICAgZGV0YWlscy5wdXNoKGdhdGVrZWVwZXJXYXJuaW5nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBkZXRhaWxzLmpvaW4oJ1xcbicpXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGFjdGl2YXRpb25FcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBg4p2MIEZhaWxlZCB0byBhY3RpdmF0ZSBlbnNlbWJsZTogJHthY3RpdmF0aW9uRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGFjdGl2YXRpb25FcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlYWN0aXZhdGUgYW4gZW5zZW1ibGVcbiAgICogTk9URTogVGhpcyB3YXMgbWlzc2luZyBpbiB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gLSBhZGRpbmcgaXQgbm93XG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIGVuc2VtYmxlIGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIERlYWN0aXZhdGUgdmlhIG1hbmFnZXIgKHdoaWNoIGhhbmRsZXMgbmFtZSB0cmFja2luZylcbiAgICBjb25zdCBkZWFjdGl2YXRpb25SZXN1bHQgPSBhd2FpdCB0aGlzLmVuc2VtYmxlTWFuYWdlci5kZWFjdGl2YXRlRW5zZW1ibGUobmFtZSk7XG5cbiAgICBpZiAoIWRlYWN0aXZhdGlvblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICB0aGlzLnRocm93Tm90Rm91bmRFcnJvcihuYW1lLCAnRW5zZW1ibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoZGVhY3RpdmF0aW9uUmVzdWx0LmVuc2VtYmxlKSB7XG4gICAgICBhd2FpdCB0aGlzLmRlYWN0aXZhdGVNZW1iZXJzKGRlYWN0aXZhdGlvblJlc3VsdC5lbnNlbWJsZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU3VjY2Vzc1Jlc3BvbnNlKGDinIUgRW5zZW1ibGUgJyR7bmFtZX0nIGRlYWN0aXZhdGVkYCk7XG4gIH1cblxuICBwcml2YXRlIGdldE1hbmFnZXJzKCk6IEVsZW1lbnRNYW5hZ2VycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNraWxsTWFuYWdlcjogdGhpcy5za2lsbE1hbmFnZXIsXG4gICAgICB0ZW1wbGF0ZU1hbmFnZXI6IHRoaXMudGVtcGxhdGVNYW5hZ2VyLFxuICAgICAgYWdlbnRNYW5hZ2VyOiB0aGlzLmFnZW50TWFuYWdlcixcbiAgICAgIG1lbW9yeU1hbmFnZXI6IHRoaXMubWVtb3J5TWFuYWdlcixcbiAgICAgIHBlcnNvbmFNYW5hZ2VyOiB0aGlzLnBlcnNvbmFNYW5hZ2VyLFxuICAgICAgZW5zZW1ibGVNYW5hZ2VyOiB0aGlzLmVuc2VtYmxlTWFuYWdlclxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGRlYWN0aXZhdGVNZW1iZXJzKGVuc2VtYmxlOiBFbnNlbWJsZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRlYWN0aXZhdGlvblByb21pc2VzID0gKGVuc2VtYmxlLm1ldGFkYXRhLmVsZW1lbnRzIHx8IFtdKS5tYXAoKGVsZW1lbnQpID0+XG4gICAgICB0aGlzLmRlYWN0aXZhdGVNZW1iZXIoZWxlbWVudClcbiAgICApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGRlYWN0aXZhdGlvblByb21pc2VzKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGVhY3RpdmF0ZU1lbWJlcihlbGVtZW50OiBFbnNlbWJsZUVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBub3JtYWxpemVkVHlwZSA9IGVsZW1lbnQuZWxlbWVudF90eXBlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKG5vcm1hbGl6ZWRUeXBlKSB7XG4gICAgICBjYXNlICdza2lsbCc6XG4gICAgICBjYXNlICdza2lsbHMnOlxuICAgICAgICBhd2FpdCB0aGlzLnNraWxsTWFuYWdlci5kZWFjdGl2YXRlU2tpbGwoZWxlbWVudC5lbGVtZW50X25hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdwZXJzb25hJzpcbiAgICAgIGNhc2UgJ3BlcnNvbmFzJzpcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKHRoaXMucGVyc29uYU1hbmFnZXIuZGVhY3RpdmF0ZVBlcnNvbmEoZWxlbWVudC5lbGVtZW50X25hbWUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnYWdlbnQnOlxuICAgICAgY2FzZSAnYWdlbnRzJzpcbiAgICAgICAgYXdhaXQgdGhpcy5hZ2VudE1hbmFnZXIuZGVhY3RpdmF0ZUFnZW50KGVsZW1lbnQuZWxlbWVudF9uYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbWVtb3J5JzpcbiAgICAgIGNhc2UgJ21lbW9yaWVzJzpcbiAgICAgICAgYXdhaXQgdGhpcy5tZW1vcnlNYW5hZ2VyLmRlYWN0aXZhdGVNZW1vcnkoZWxlbWVudC5lbGVtZW50X25hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdlbnNlbWJsZSc6XG4gICAgICBjYXNlICdlbnNlbWJsZXMnOlxuICAgICAgICBhd2FpdCB0aGlzLmVuc2VtYmxlTWFuYWdlci5kZWFjdGl2YXRlRW5zZW1ibGUoZWxlbWVudC5lbGVtZW50X25hbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd0ZW1wbGF0ZSc6XG4gICAgICBjYXNlICd0ZW1wbGF0ZXMnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGFjdGl2ZSBlbnNlbWJsZXNcbiAgICogTk9URTogVGhpcyB3YXMgbWlzc2luZyBpbiB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gLSBhZGRpbmcgYmFzaWMgdmVyc2lvblxuICAgKi9cbiAgYXN5bmMgZ2V0QWN0aXZlRWxlbWVudHMoKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIGNvbnN0IGFjdGl2ZUVuc2VtYmxlcyA9IGF3YWl0IHRoaXMuZW5zZW1ibGVNYW5hZ2VyLmdldEFjdGl2ZUVuc2VtYmxlcygpO1xuXG4gICAgaWYgKGFjdGl2ZUVuc2VtYmxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogXCLwn46tIE5vIGFjdGl2ZSBlbnNlbWJsZXNcIlxuICAgICAgICB9XVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnNlbWJsZUxpc3QgPSBhY3RpdmVFbnNlbWJsZXMubWFwKGUgPT4ge1xuICAgICAgY29uc3QgZWxlbWVudENvdW50ID0gZS5tZXRhZGF0YS5lbGVtZW50cz8ubGVuZ3RoIHx8IDA7XG4gICAgICByZXR1cm4gYPCfjq0gJHtlLm1ldGFkYXRhLm5hbWV9ICgke2VsZW1lbnRDb3VudH0gZWxlbWVudHMpYDtcbiAgICB9KS5qb2luKCdcXG4nKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYEFjdGl2ZSBlbnNlbWJsZXM6XFxuJHtlbnNlbWJsZUxpc3R9YFxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBlbnNlbWJsZVxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgODA3LTg0NlxuICAgKi9cbiAgYXN5bmMgZ2V0RWxlbWVudERldGFpbHMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSBmbGV4aWJsZSBmaW5kaW5nIHRvIHN1cHBvcnQgYm90aCBkaXNwbGF5IG5hbWUgYW5kIGZpbGVuYW1lXG4gICAgY29uc3QgYWxsRW5zZW1ibGVzID0gYXdhaXQgdGhpcy5lbnNlbWJsZU1hbmFnZXIubGlzdCgpO1xuICAgIGNvbnN0IGVuc2VtYmxlID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEZsZXhpYmx5KG5hbWUsIGFsbEVuc2VtYmxlcyk7XG4gICAgaWYgKCFlbnNlbWJsZSkge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ0Vuc2VtYmxlJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHNMaXN0ID0gZW5zZW1ibGUubWV0YWRhdGEuZWxlbWVudHM/Lm1hcCgoZWxlbTogYW55KSA9PlxuICAgICAgYC0gJHtlbGVtLmVsZW1lbnRfbmFtZX0gKCR7ZWxlbS5lbGVtZW50X3R5cGV9KSAtICR7ZWxlbS5yb2xlfSwgcHJpb3JpdHk6ICR7ZWxlbS5wcmlvcml0eX0sIGFjdGl2YXRpb246ICR7ZWxlbS5hY3RpdmF0aW9ufWBcbiAgICApLmpvaW4oJ1xcbicpIHx8ICdObyBlbGVtZW50cyBjb25maWd1cmVkJztcblxuICAgIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgICBg8J+OrSAqKiR7ZW5zZW1ibGUubWV0YWRhdGEubmFtZX0qKmAsXG4gICAgICBgJHtlbnNlbWJsZS5tZXRhZGF0YS5kZXNjcmlwdGlvbn1gLFxuICAgICAgYGAsXG4gICAgICBgKipTdGF0dXMqKjogJHtlbnNlbWJsZS5nZXRTdGF0dXMoKX1gLFxuICAgICAgYCoqVmVyc2lvbioqOiAke2Vuc2VtYmxlLm1ldGFkYXRhLnZlcnNpb24gfHwgJzEuMC4wJ31gLFxuICAgICAgYCoqQWN0aXZhdGlvbiBTdHJhdGVneSoqOiAkeyhlbnNlbWJsZS5tZXRhZGF0YSBhcyBhbnkpLmFjdGl2YXRpb25TdHJhdGVneSB8fCAnc2VxdWVudGlhbCd9YCxcbiAgICAgIGAqKkNvbmZsaWN0IFJlc29sdXRpb24qKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5jb25mbGljdFJlc29sdXRpb24gfHwgJ2xhc3Qtd3JpdGUnfWAsXG4gICAgICBgKipDb250ZXh0IFNoYXJpbmcqKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5jb250ZXh0U2hhcmluZyB8fCAnc2VsZWN0aXZlJ31gLFxuICAgICAgYCoqQWxsb3dzIE5lc3RpbmcqKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5hbGxvd05lc3RlZCA/ICdZZXMnIDogJ05vJ31gLFxuICAgICAgYCoqTWF4IE5lc3RpbmcgRGVwdGgqKjogJHsoZW5zZW1ibGUubWV0YWRhdGEgYXMgYW55KS5tYXhOZXN0aW5nRGVwdGggfHwgNX1gLFxuICAgICAgYGAsXG4gICAgICBgKipFbGVtZW50cyoqICgke2Vuc2VtYmxlLm1ldGFkYXRhLmVsZW1lbnRzPy5sZW5ndGggfHwgMH0pOmAsXG4gICAgICBlbGVtZW50c0xpc3RcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBkZXRhaWxzLmpvaW4oJ1xcbicpXG4gICAgICB9XVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/MemoryActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,wBAAyB,SAAQ,sBAAuB,YAAW,yBAAyB;IAC3F,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAIzD;;;;;;OAMG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAwDjF;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IA2B/C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CA6B5D"}
1
+ {"version":3,"file":"MemoryActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/MemoryActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,wBAAyB,SAAQ,sBAAuB,YAAW,yBAAyB;IAC3F,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAIzD;;;;;;OAMG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IA6DjF;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IA2B/C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CA6B5D"}
@@ -58,6 +58,10 @@ export class MemoryActivationStrategy extends BaseActivationStrategy {
58
58
  }
59
59
  parts.push('');
60
60
  parts.push('This memory is now available for context and will be used to enhance responses.');
61
+ const gatekeeperWarning = this.formatGatekeeperValidityWarning(memory.metadata);
62
+ if (gatekeeperWarning) {
63
+ parts.push(gatekeeperWarning);
64
+ }
61
65
  return {
62
66
  content: [{
63
67
  type: "text",
@@ -141,4 +145,4 @@ export class MemoryActivationStrategy extends BaseActivationStrategy {
141
145
  };
142
146
  }
143
147
  }
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5QWN0aXZhdGlvblN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL3N0cmF0ZWdpZXMvTWVtb3J5QWN0aXZhdGlvblN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHckUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHNCQUFzQjtJQUNyQztJQUE3QixZQUE2QixhQUE0QjtRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURtQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUV6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBNkI7UUFDeEQsbUVBQW1FO1FBQ25FLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTdCLHdEQUF3RDtRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsTUFBTSxhQUFhLEdBQUksTUFBTSxDQUFDLFFBQWdCLENBQUMsYUFBYSxJQUFJLFdBQVcsQ0FBQztRQUM1RSxNQUFNLElBQUksR0FBSSxNQUFNLENBQUMsUUFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUVqRSw2REFBNkQ7UUFDN0QsTUFBTSxLQUFLLEdBQUc7WUFD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QUFFO1lBQzFFLEVBQUU7WUFDRixjQUFjO1lBQ2QsTUFBTSxDQUFDLE9BQU8sSUFBSSxtQkFBbUI7U0FDdEMsQ0FBQztRQUVGLE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ3pCLENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZW1vcnlBY3RpdmF0aW9uU3RyYXRlZ3kgLSBTdHJhdGVneSBmb3IgbWVtb3J5IGVsZW1lbnQgYWN0aXZhdGlvblxuICpcbiAqIEhhbmRsZXMgYWN0aXZhdGlvbiwgZGVhY3RpdmF0aW9uLCBhbmQgc3RhdHVzIHRyYWNraW5nIGZvciBtZW1vcnkgZWxlbWVudHMuXG4gKiBJc3N1ZSAjMTggUGhhc2UgNDogQ29udGV4dC1sb2FkaW5nIHN0cmF0ZWd5IHdpdGggc3RhdGUgbWFuYWdlbWVudFxuICovXG5cbmltcG9ydCB7IE1lbW9yeU1hbmFnZXIgfSBmcm9tICcuLi8uLi9lbGVtZW50cy9tZW1vcmllcy9NZW1vcnlNYW5hZ2VyLmpzJztcbmltcG9ydCB7IEJhc2VBY3RpdmF0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL0Jhc2VBY3RpdmF0aW9uU3RyYXRlZ3kuanMnO1xuaW1wb3J0IHsgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSwgTUNQUmVzcG9uc2UgfSBmcm9tICcuL0VsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3kuanMnO1xuXG5leHBvcnQgY2xhc3MgTWVtb3J5QWN0aXZhdGlvblN0cmF0ZWd5IGV4dGVuZHMgQmFzZUFjdGl2YXRpb25TdHJhdGVneSBpbXBsZW1lbnRzIEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1lbW9yeU1hbmFnZXI6IE1lbW9yeU1hbmFnZXIpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGl2YXRlIGEgbWVtb3J5XG4gICAqIElzc3VlICMxOCBQaGFzZSA0OiBDb250ZXh0LWxvYWRpbmcgYWN0aXZhdGlvbiBzdHJhdGVneVxuICAgKiAtIExvYWQgbWVtb3J5IGVudHJpZXMgaW50byBhY3RpdmUgY29udGV4dFxuICAgKiAtIEFwcGx5IHJldGVudGlvbiBwb2xpY2llcyBpZiBjb25maWd1cmVkXG4gICAqIC0gVHJhY2sgYWN0aXZhdGlvbiBpbiBtYW5hZ2VyJ3MgYWN0aXZlIHNldFxuICAgKi9cbiAgYXN5bmMgYWN0aXZhdGUobmFtZTogc3RyaW5nLCBjb250ZXh0PzogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgdGhlIG1hbmFnZXIncyBhY3RpdmF0aW9uIG1ldGhvZCB3aGljaCB0cmFja3MgYWN0aXZlIG1lbW9yaWVzXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5tZW1vcnlNYW5hZ2VyLmFjdGl2YXRlTWVtb3J5KG5hbWUpO1xuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2VzcyB8fCAhcmVzdWx0Lm1lbW9yeSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTm90Rm91bmRSZXNwb25zZShuYW1lLCAnTWVtb3J5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVtb3J5ID0gcmVzdWx0Lm1lbW9yeTtcblxuICAgIC8vIEdldCBtZW1vcnkgc3RhdGlzdGljcyBmb3IgY29udGV4dCBsb2FkaW5nIGluZm9ybWF0aW9uXG4gICAgY29uc3Qgc3RhdHMgPSBtZW1vcnkuZ2V0U3RhdHMoKTtcbiAgICBjb25zdCByZXRlbnRpb25EYXlzID0gKG1lbW9yeS5tZXRhZGF0YSBhcyBhbnkpLnJldGVudGlvbkRheXMgfHwgJ3Blcm1hbmVudCc7XG4gICAgY29uc3QgdGFncyA9IChtZW1vcnkubWV0YWRhdGEgYXMgYW55KS50YWdzPy5qb2luKCcsICcpIHx8ICdub25lJztcblxuICAgIC8vIEJ1aWxkIGFjdGl2YXRpb24gcmVzcG9uc2Ugd2l0aCBjb250ZXh0LWxvYWRpbmcgaW5mb3JtYXRpb25cbiAgICBjb25zdCBwYXJ0cyA9IFtcbiAgICAgIGDinIUgTWVtb3J5ICcke21lbW9yeS5tZXRhZGF0YS5uYW1lfScgYWN0aXZhdGVkIC0gJHtzdGF0cy50b3RhbEVudHJpZXN9IGVudHJpZXMgbG9hZGVkIGludG8gY29udGV4dGAsXG4gICAgICAnJ1xuICAgIF07XG5cbiAgICAvLyBDaGVjayBpZiBjb250ZXh0IHdhcyBwcm92aWRlZCBmb3IgYWRkaXRpb25hbCBhY3RpdmF0aW9uIG9wdGlvbnNcbiAgICBjb25zdCBoYXNBY3RpdmF0aW9uQ29udGV4dCA9IGNvbnRleHQgJiYgT2JqZWN0LmtleXMoY29udGV4dCkubGVuZ3RoID4gMDtcbiAgICBjb25zdCBhdXRvTG9hZFJlcXVlc3RlZCA9IGNvbnRleHQ/LmF1dG9Mb2FkID09PSB0cnVlO1xuXG4gICAgaWYgKGF1dG9Mb2FkUmVxdWVzdGVkKSB7XG4gICAgICAvLyBBdXRvLWxvYWQgYWN0aXZhdGlvbiBjb250ZXh0XG4gICAgICBwYXJ0cy5wdXNoKCdNZW1vcnkgYWN0aXZhdGVzIGFuZCBhdXRvbWF0aWNhbGx5IGxvYWRzIGVudHJpZXMnKTtcbiAgICB9IGVsc2UgaWYgKGhhc0FjdGl2YXRpb25Db250ZXh0KSB7XG4gICAgICAvLyBPdGhlciBhY3RpdmF0aW9uIGNvbnRleHRzXG4gICAgICBwYXJ0cy5wdXNoKCdNZW1vcnkgY29udGV4dCBsb2FkZWQgYW5kIGFwcGxpZWQgd2l0aCBzcGVjaWZpZWQgb3B0aW9ucycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IGFjdGl2YXRpb25cbiAgICAgIHBhcnRzLnB1c2goJ01lbW9yeSBiZWNvbWVzIGFjdGl2ZSwgY29udGV4dCBsb2FkZWQgaW50byB3b3JraW5nIHNldCcpO1xuICAgIH1cblxuICAgIHBhcnRzLnB1c2goJycpO1xuICAgIHBhcnRzLnB1c2goYCoqUmV0ZW50aW9uKio6ICR7cmV0ZW50aW9uRGF5c30gZGF5c2ApO1xuICAgIHBhcnRzLnB1c2goYCoqVGFncyoqOiAke3RhZ3N9YCk7XG4gICAgcGFydHMucHVzaChgKipFbnRyaWVzKio6ICR7c3RhdHMudG90YWxFbnRyaWVzfWApO1xuXG4gICAgaWYgKHN0YXRzLnRvdGFsU2l6ZSA+IDApIHtcbiAgICAgIHBhcnRzLnB1c2goYCoqU2l6ZSoqOiAke3N0YXRzLnRvdGFsU2l6ZX0gYnl0ZXNgKTtcbiAgICB9XG5cbiAgICBwYXJ0cy5wdXNoKCcnKTtcbiAgICBwYXJ0cy5wdXNoKCdUaGlzIG1lbW9yeSBpcyBub3cgYXZhaWxhYmxlIGZvciBjb250ZXh0IGFuZCB3aWxsIGJlIHVzZWQgdG8gZW5oYW5jZSByZXNwb25zZXMuJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IHBhcnRzLmpvaW4oJ1xcbicpXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSBhIG1lbW9yeVxuICAgKiBJc3N1ZSAjMTggUGhhc2UgNDogVXNlIG1hbmFnZXIncyBkZWFjdGl2YXRpb24gbWV0aG9kXG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIG1lbW9yeSBkb2VzIG5vdCBleGlzdFxuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBhc3luYyBkZWFjdGl2YXRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1lbW9yeU1hbmFnZXIuZGVhY3RpdmF0ZU1lbW9yeShuYW1lKTtcblxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHRoaXMudGhyb3dOb3RGb3VuZEVycm9yKG5hbWUsICdNZW1vcnknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTdWNjZXNzUmVzcG9uc2UocmVzdWx0Lm1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYWN0aXZlIG1lbW9yaWVzXG4gICAqIElzc3VlICMxOCBQaGFzZSA0OiBVc2UgbWFuYWdlcidzIGdldEFjdGl2ZU1lbW9yaWVzIG1ldGhvZFxuICAgKi9cbiAgYXN5bmMgZ2V0QWN0aXZlRWxlbWVudHMoKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSB0aGUgbWFuYWdlcidzIG1ldGhvZCB0byBnZXQgYWN0aXZlIG1lbW9yaWVzIGRpcmVjdGx5XG4gICAgY29uc3QgYWN0aXZlTWVtb3JpZXMgPSBhd2FpdCB0aGlzLm1lbW9yeU1hbmFnZXIuZ2V0QWN0aXZlTWVtb3JpZXMoKTtcblxuICAgIGlmIChhY3RpdmVNZW1vcmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogXCLwn6egIE5vIGFjdGl2ZSBtZW1vcmllc1wiXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IG1lbW9yeUxpc3QgPSBhY3RpdmVNZW1vcmllcy5tYXAobSA9PiB7XG4gICAgICBjb25zdCB0YWdzID0gKG0ubWV0YWRhdGEgYXMgYW55KS50YWdzPy5qb2luKCcsICcpIHx8ICdub25lJztcbiAgICAgIGNvbnN0IHJldGVudGlvbkRheXMgPSAobS5tZXRhZGF0YSBhcyBhbnkpLnJldGVudGlvbkRheXMgfHwgJ3Blcm1hbmVudCc7XG4gICAgICByZXR1cm4gYPCfp6AgJHttLm1ldGFkYXRhLm5hbWV9IChUYWdzOiAke3RhZ3N9KSAtICR7cmV0ZW50aW9uRGF5c30gZGF5cyByZXRlbnRpb25gO1xuICAgIH0pLmpvaW4oJ1xcbicpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgQWN0aXZlIG1lbW9yaWVzOlxcbiR7bWVtb3J5TGlzdH1gXG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgbWVtb3J5XG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyA3NzItODA1XG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIG1lbW9yeSBkb2VzIG5vdCBleGlzdFxuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBhc3luYyBnZXRFbGVtZW50RGV0YWlscyhuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIGZsZXhpYmxlIGZpbmRpbmcgdG8gc3VwcG9ydCBib3RoIGRpc3BsYXkgbmFtZSBhbmQgZmlsZW5hbWVcbiAgICBjb25zdCBhbGxNZW1vcmllcyA9IGF3YWl0IHRoaXMubWVtb3J5TWFuYWdlci5saXN0KCk7XG4gICAgY29uc3QgbWVtb3J5ID0gYXdhaXQgdGhpcy5maW5kRWxlbWVudEZsZXhpYmx5KG5hbWUsIGFsbE1lbW9yaWVzKTtcbiAgICBpZiAoIW1lbW9yeSkge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ01lbW9yeScpO1xuICAgIH1cblxuICAgIGNvbnN0IGRldGFpbHMgPSBbXG4gICAgICBg8J+noCAqKiR7bWVtb3J5Lm1ldGFkYXRhLm5hbWV9KipgLFxuICAgICAgYCR7bWVtb3J5Lm1ldGFkYXRhLmRlc2NyaXB0aW9ufWAsXG4gICAgICBgYCxcbiAgICAgIGAqKlN0YXR1cyoqOiAke21lbW9yeS5nZXRTdGF0dXMoKX1gLFxuICAgICAgYCoqUmV0ZW50aW9uKio6ICR7KG1lbW9yeS5tZXRhZGF0YSBhcyBhbnkpLnJldGVudGlvbkRheXMgfHwgJ3Blcm1hbmVudCd9IGRheXNgLFxuICAgICAgYCoqVGFncyoqOiAkeyhtZW1vcnkubWV0YWRhdGEgYXMgYW55KS50YWdzPy5qb2luKCcsICcpIHx8ICdub25lJ31gLFxuICAgICAgYCoqU3RvcmFnZSBCYWNrZW5kKio6ICR7KG1lbW9yeS5tZXRhZGF0YSBhcyBhbnkpLnN0b3JhZ2VCYWNrZW5kIHx8ICdmaWxlJ31gLFxuICAgICAgYCoqUHJpdmFjeSBMZXZlbCoqOiAkeyhtZW1vcnkubWV0YWRhdGEgYXMgYW55KS5wcml2YWN5TGV2ZWwgfHwgJ3ByaXZhdGUnfWAsXG4gICAgICBgYCxcbiAgICAgIGAqKkNvbnRlbnQqKjpgLFxuICAgICAgbWVtb3J5LmNvbnRlbnQgfHwgJ05vIGNvbnRlbnQgc3RvcmVkJ1xuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGRldGFpbHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufVxuIl19
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVtb3J5QWN0aXZhdGlvblN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZXJzL3N0cmF0ZWdpZXMvTWVtb3J5QWN0aXZhdGlvblN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBR0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHckUsTUFBTSxPQUFPLHdCQUF5QixTQUFRLHNCQUFzQjtJQUNyQztJQUE3QixZQUE2QixhQUE0QjtRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURtQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUV6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBNkI7UUFDeEQsbUVBQW1FO1FBQ25FLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRTdCLHdEQUF3RDtRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsTUFBTSxhQUFhLEdBQUksTUFBTSxDQUFDLFFBQWdCLENBQUMsYUFBYSxJQUFJLFdBQVcsQ0FBQztRQUM1RSxNQUFNLElBQUksR0FBSSxNQUFNLENBQUMsUUFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUVqRSw2REFBNkQ7UUFDN0QsTUFBTSxLQUFLLEdBQUc7WUFD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QUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLEVBQUU7WUFDbEUsd0JBQXlCLE1BQU0sQ0FBQyxRQUFnQixDQUFDLGNBQWMsSUFBSSxNQUFNLEVBQUU7WUFDM0Usc0JBQXVCLE1BQU0sQ0FBQyxRQUFnQixDQUFDLFlBQVksSUFBSSxTQUFTLEVBQUU7WUFDMUUsRUFBRTtZQUNGLGNBQWM7WUFDZCxNQUFNLENBQUMsT0FBTyxJQUFJLG1CQUFtQjtTQUN0QyxDQUFDO1FBRUYsT0FBTztZQUNMLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztpQkFDekIsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1lbW9yeUFjdGl2YXRpb25TdHJhdGVneSAtIFN0cmF0ZWd5IGZvciBtZW1vcnkgZWxlbWVudCBhY3RpdmF0aW9uXG4gKlxuICogSGFuZGxlcyBhY3RpdmF0aW9uLCBkZWFjdGl2YXRpb24sIGFuZCBzdGF0dXMgdHJhY2tpbmcgZm9yIG1lbW9yeSBlbGVtZW50cy5cbiAqIElzc3VlICMxOCBQaGFzZSA0OiBDb250ZXh0LWxvYWRpbmcgc3RyYXRlZ3kgd2l0aCBzdGF0ZSBtYW5hZ2VtZW50XG4gKi9cblxuaW1wb3J0IHsgTWVtb3J5TWFuYWdlciB9IGZyb20gJy4uLy4uL2VsZW1lbnRzL21lbW9yaWVzL01lbW9yeU1hbmFnZXIuanMnO1xuaW1wb3J0IHsgQmFzZUFjdGl2YXRpb25TdHJhdGVneSB9IGZyb20gJy4vQmFzZUFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5pbXBvcnQgeyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LCBNQ1BSZXNwb25zZSB9IGZyb20gJy4vRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBNZW1vcnlBY3RpdmF0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IGltcGxlbWVudHMgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWVtb3J5TWFuYWdlcjogTWVtb3J5TWFuYWdlcikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYSBtZW1vcnlcbiAgICogSXNzdWUgIzE4IFBoYXNlIDQ6IENvbnRleHQtbG9hZGluZyBhY3RpdmF0aW9uIHN0cmF0ZWd5XG4gICAqIC0gTG9hZCBtZW1vcnkgZW50cmllcyBpbnRvIGFjdGl2ZSBjb250ZXh0XG4gICAqIC0gQXBwbHkgcmV0ZW50aW9uIHBvbGljaWVzIGlmIGNvbmZpZ3VyZWRcbiAgICogLSBUcmFjayBhY3RpdmF0aW9uIGluIG1hbmFnZXIncyBhY3RpdmUgc2V0XG4gICAqL1xuICBhc3luYyBhY3RpdmF0ZShuYW1lOiBzdHJpbmcsIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIC8vIFVzZSB0aGUgbWFuYWdlcidzIGFjdGl2YXRpb24gbWV0aG9kIHdoaWNoIHRyYWNrcyBhY3RpdmUgbWVtb3JpZXNcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLm1lbW9yeU1hbmFnZXIuYWN0aXZhdGVNZW1vcnkobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzIHx8ICFyZXN1bHQubWVtb3J5KSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVOb3RGb3VuZFJlc3BvbnNlKG5hbWUsICdNZW1vcnknKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZW1vcnkgPSByZXN1bHQubWVtb3J5O1xuXG4gICAgLy8gR2V0IG1lbW9yeSBzdGF0aXN0aWNzIGZvciBjb250ZXh0IGxvYWRpbmcgaW5mb3JtYXRpb25cbiAgICBjb25zdCBzdGF0cyA9IG1lbW9yeS5nZXRTdGF0cygpO1xuICAgIGNvbnN0IHJldGVudGlvbkRheXMgPSAobWVtb3J5Lm1ldGFkYXRhIGFzIGFueSkucmV0ZW50aW9uRGF5cyB8fCAncGVybWFuZW50JztcbiAgICBjb25zdCB0YWdzID0gKG1lbW9yeS5tZXRhZGF0YSBhcyBhbnkpLnRhZ3M/LmpvaW4oJywgJykgfHwgJ25vbmUnO1xuXG4gICAgLy8gQnVpbGQgYWN0aXZhdGlvbiByZXNwb25zZSB3aXRoIGNvbnRleHQtbG9hZGluZyBpbmZvcm1hdGlvblxuICAgIGNvbnN0IHBhcnRzID0gW1xuICAgICAgYOKchSBNZW1vcnkgJyR7bWVtb3J5Lm1ldGFkYXRhLm5hbWV9JyBhY3RpdmF0ZWQgLSAke3N0YXRzLnRvdGFsRW50cmllc30gZW50cmllcyBsb2FkZWQgaW50byBjb250ZXh0YCxcbiAgICAgICcnXG4gICAgXTtcblxuICAgIC8vIENoZWNrIGlmIGNvbnRleHQgd2FzIHByb3ZpZGVkIGZvciBhZGRpdGlvbmFsIGFjdGl2YXRpb24gb3B0aW9uc1xuICAgIGNvbnN0IGhhc0FjdGl2YXRpb25Db250ZXh0ID0gY29udGV4dCAmJiBPYmplY3Qua2V5cyhjb250ZXh0KS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGF1dG9Mb2FkUmVxdWVzdGVkID0gY29udGV4dD8uYXV0b0xvYWQgPT09IHRydWU7XG5cbiAgICBpZiAoYXV0b0xvYWRSZXF1ZXN0ZWQpIHtcbiAgICAgIC8vIEF1dG8tbG9hZCBhY3RpdmF0aW9uIGNvbnRleHRcbiAgICAgIHBhcnRzLnB1c2goJ01lbW9yeSBhY3RpdmF0ZXMgYW5kIGF1dG9tYXRpY2FsbHkgbG9hZHMgZW50cmllcycpO1xuICAgIH0gZWxzZSBpZiAoaGFzQWN0aXZhdGlvbkNvbnRleHQpIHtcbiAgICAgIC8vIE90aGVyIGFjdGl2YXRpb24gY29udGV4dHNcbiAgICAgIHBhcnRzLnB1c2goJ01lbW9yeSBjb250ZXh0IGxvYWRlZCBhbmQgYXBwbGllZCB3aXRoIHNwZWNpZmllZCBvcHRpb25zJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERlZmF1bHQgYWN0aXZhdGlvblxuICAgICAgcGFydHMucHVzaCgnTWVtb3J5IGJlY29tZXMgYWN0aXZlLCBjb250ZXh0IGxvYWRlZCBpbnRvIHdvcmtpbmcgc2V0Jyk7XG4gICAgfVxuXG4gICAgcGFydHMucHVzaCgnJyk7XG4gICAgcGFydHMucHVzaChgKipSZXRlbnRpb24qKjogJHtyZXRlbnRpb25EYXlzfSBkYXlzYCk7XG4gICAgcGFydHMucHVzaChgKipUYWdzKio6ICR7dGFnc31gKTtcbiAgICBwYXJ0cy5wdXNoKGAqKkVudHJpZXMqKjogJHtzdGF0cy50b3RhbEVudHJpZXN9YCk7XG5cbiAgICBpZiAoc3RhdHMudG90YWxTaXplID4gMCkge1xuICAgICAgcGFydHMucHVzaChgKipTaXplKio6ICR7c3RhdHMudG90YWxTaXplfSBieXRlc2ApO1xuICAgIH1cblxuICAgIHBhcnRzLnB1c2goJycpO1xuICAgIHBhcnRzLnB1c2goJ1RoaXMgbWVtb3J5IGlzIG5vdyBhdmFpbGFibGUgZm9yIGNvbnRleHQgYW5kIHdpbGwgYmUgdXNlZCB0byBlbmhhbmNlIHJlc3BvbnNlcy4nKTtcblxuICAgIGNvbnN0IGdhdGVrZWVwZXJXYXJuaW5nID0gdGhpcy5mb3JtYXRHYXRla2VlcGVyVmFsaWRpdHlXYXJuaW5nKG1lbW9yeS5tZXRhZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICBpZiAoZ2F0ZWtlZXBlcldhcm5pbmcpIHtcbiAgICAgIHBhcnRzLnB1c2goZ2F0ZWtlZXBlcldhcm5pbmcpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogcGFydHMuam9pbignXFxuJylcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIGEgbWVtb3J5XG4gICAqIElzc3VlICMxOCBQaGFzZSA0OiBVc2UgbWFuYWdlcidzIGRlYWN0aXZhdGlvbiBtZXRob2RcbiAgICpcbiAgICogQHRocm93cyB7RWxlbWVudE5vdEZvdW5kRXJyb3J9IFdoZW4gbWVtb3J5IGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGRlYWN0aXZhdGUobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMubWVtb3J5TWFuYWdlci5kZWFjdGl2YXRlTWVtb3J5KG5hbWUpO1xuXG4gICAgaWYgKCFyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgdGhpcy50aHJvd05vdEZvdW5kRXJyb3IobmFtZSwgJ01lbW9yeScpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNyZWF0ZVN1Y2Nlc3NSZXNwb25zZShyZXN1bHQubWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBhY3RpdmUgbWVtb3JpZXNcbiAgICogSXNzdWUgIzE4IFBoYXNlIDQ6IFVzZSBtYW5hZ2VyJ3MgZ2V0QWN0aXZlTWVtb3JpZXMgbWV0aG9kXG4gICAqL1xuICBhc3luYyBnZXRBY3RpdmVFbGVtZW50cygpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gVXNlIHRoZSBtYW5hZ2VyJ3MgbWV0aG9kIHRvIGdldCBhY3RpdmUgbWVtb3JpZXMgZGlyZWN0bHlcbiAgICBjb25zdCBhY3RpdmVNZW1vcmllcyA9IGF3YWl0IHRoaXMubWVtb3J5TWFuYWdlci5nZXRBY3RpdmVNZW1vcmllcygpO1xuXG4gICAgaWYgKGFjdGl2ZU1lbW9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBcIvCfp6AgTm8gYWN0aXZlIG1lbW9yaWVzXCJcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgbWVtb3J5TGlzdCA9IGFjdGl2ZU1lbW9yaWVzLm1hcChtID0+IHtcbiAgICAgIGNvbnN0IHRhZ3MgPSAobS5tZXRhZGF0YSBhcyBhbnkpLnRhZ3M/LmpvaW4oJywgJykgfHwgJ25vbmUnO1xuICAgICAgY29uc3QgcmV0ZW50aW9uRGF5cyA9IChtLm1ldGFkYXRhIGFzIGFueSkucmV0ZW50aW9uRGF5cyB8fCAncGVybWFuZW50JztcbiAgICAgIHJldHVybiBg8J+noCAke20ubWV0YWRhdGEubmFtZX0gKFRhZ3M6ICR7dGFnc30pIC0gJHtyZXRlbnRpb25EYXlzfSBkYXlzIHJldGVudGlvbmA7XG4gICAgfSkuam9pbignXFxuJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGBBY3RpdmUgbWVtb3JpZXM6XFxuJHttZW1vcnlMaXN0fWBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBtZW1vcnlcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDc3Mi04MDVcbiAgICpcbiAgICogQHRocm93cyB7RWxlbWVudE5vdEZvdW5kRXJyb3J9IFdoZW4gbWVtb3J5IGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBVc2UgZmxleGlibGUgZmluZGluZyB0byBzdXBwb3J0IGJvdGggZGlzcGxheSBuYW1lIGFuZCBmaWxlbmFtZVxuICAgIGNvbnN0IGFsbE1lbW9yaWVzID0gYXdhaXQgdGhpcy5tZW1vcnlNYW5hZ2VyLmxpc3QoKTtcbiAgICBjb25zdCBtZW1vcnkgPSBhd2FpdCB0aGlzLmZpbmRFbGVtZW50RmxleGlibHkobmFtZSwgYWxsTWVtb3JpZXMpO1xuICAgIGlmICghbWVtb3J5KSB7XG4gICAgICB0aGlzLnRocm93Tm90Rm91bmRFcnJvcihuYW1lLCAnTWVtb3J5Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGV0YWlscyA9IFtcbiAgICAgIGDwn6egICoqJHttZW1vcnkubWV0YWRhdGEubmFtZX0qKmAsXG4gICAgICBgJHttZW1vcnkubWV0YWRhdGEuZGVzY3JpcHRpb259YCxcbiAgICAgIGBgLFxuICAgICAgYCoqU3RhdHVzKio6ICR7bWVtb3J5LmdldFN0YXR1cygpfWAsXG4gICAgICBgKipSZXRlbnRpb24qKjogJHsobWVtb3J5Lm1ldGFkYXRhIGFzIGFueSkucmV0ZW50aW9uRGF5cyB8fCAncGVybWFuZW50J30gZGF5c2AsXG4gICAgICBgKipUYWdzKio6ICR7KG1lbW9yeS5tZXRhZGF0YSBhcyBhbnkpLnRhZ3M/LmpvaW4oJywgJykgfHwgJ25vbmUnfWAsXG4gICAgICBgKipTdG9yYWdlIEJhY2tlbmQqKjogJHsobWVtb3J5Lm1ldGFkYXRhIGFzIGFueSkuc3RvcmFnZUJhY2tlbmQgfHwgJ2ZpbGUnfWAsXG4gICAgICBgKipQcml2YWN5IExldmVsKio6ICR7KG1lbW9yeS5tZXRhZGF0YSBhcyBhbnkpLnByaXZhY3lMZXZlbCB8fCAncHJpdmF0ZSd9YCxcbiAgICAgIGBgLFxuICAgICAgYCoqQ29udGVudCoqOmAsXG4gICAgICBtZW1vcnkuY29udGVudCB8fCAnTm8gY29udGVudCBzdG9yZWQnXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogZGV0YWlscy5qb2luKCdcXG4nKVxuICAgICAgfV1cbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"PersonaActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/PersonaActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,yBAA0B,SAAQ,sBAAuB,YAAW,yBAAyB;IAEtG,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADhB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,uBAAuB;IAK5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmClD;;;;;;;OAOG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCpD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IA6C/C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAwB5D"}
1
+ {"version":3,"file":"PersonaActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/PersonaActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,yBAA0B,SAAQ,sBAAuB,YAAW,yBAAyB;IAEtG,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADhB,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,uBAAuB;IAK5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwClD;;;;;;;OAOG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCpD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IA6C/C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAwB5D"}
@@ -46,6 +46,10 @@ export class PersonaActivationStrategy extends BaseActivationStrategy {
46
46
  if (restrictionWarning) {
47
47
  text += restrictionWarning;
48
48
  }
49
+ const gatekeeperWarning = this.formatGatekeeperValidityWarning(persona.metadata);
50
+ if (gatekeeperWarning) {
51
+ text += gatekeeperWarning;
52
+ }
49
53
  return {
50
54
  content: [{
51
55
  type: "text",
@@ -156,4 +160,4 @@ export class PersonaActivationStrategy extends BaseActivationStrategy {
156
160
  };
157
161
  }
158
162
  }
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYUFjdGl2YXRpb25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9zdHJhdGVnaWVzL1BlcnNvbmFBY3RpdmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFJSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdyRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsc0JBQXNCO0lBRWhEO0lBQ0E7SUFGbkIsWUFDbUIsY0FBOEIsRUFDOUIsZ0JBQXlDO1FBRTFELEtBQUssRUFBRSxDQUFDO1FBSFMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7SUFHNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRTtxQkFDekQsQ0FBQzthQUNILENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUMvQixN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QUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGVyc29uYUFjdGl2YXRpb25TdHJhdGVneSAtIFN0cmF0ZWd5IGZvciBwZXJzb25hIGVsZW1lbnQgYWN0aXZhdGlvblxuICpcbiAqIEhhbmRsZXMgYWN0aXZhdGlvbiwgZGVhY3RpdmF0aW9uLCBhbmQgc3RhdHVzIHRyYWNraW5nIGZvciBwZXJzb25hIGVsZW1lbnRzLlxuICogVXNlcyB0aGUgUGVyc29uYU1hbmFnZXIncyB1bmlxdWUgQVBJIGFuZCBQZXJzb25hSW5kaWNhdG9yU2VydmljZSBmb3IgZm9ybWF0dGluZy5cbiAqL1xuXG5pbXBvcnQgeyBQZXJzb25hTWFuYWdlciB9IGZyb20gJy4uLy4uL3BlcnNvbmEvUGVyc29uYU1hbmFnZXIuanMnO1xuaW1wb3J0IHsgUGVyc29uYUluZGljYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9QZXJzb25hSW5kaWNhdG9yU2VydmljZS5qcyc7XG5pbXBvcnQgeyBFbGVtZW50Tm90Rm91bmRFcnJvciB9IGZyb20gJy4uLy4uL3V0aWxzL0Vycm9ySGFuZGxlci5qcyc7XG5pbXBvcnQgeyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9CYXNlQWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcbmltcG9ydCB7IEVsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3ksIE1DUFJlc3BvbnNlIH0gZnJvbSAnLi9FbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5LmpzJztcblxuZXhwb3J0IGNsYXNzIFBlcnNvbmFBY3RpdmF0aW9uU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlQWN0aXZhdGlvblN0cmF0ZWd5IGltcGxlbWVudHMgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVyc29uYU1hbmFnZXI6IFBlcnNvbmFNYW5hZ2VyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5kaWNhdG9yU2VydmljZTogUGVyc29uYUluZGljYXRvclNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBlcnNvbmEgaW5kaWNhdG9yIHByZWZpeFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRQZXJzb25hSW5kaWNhdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5kaWNhdG9yU2VydmljZS5nZXRQZXJzb25hSW5kaWNhdG9yKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGUgYSBwZXJzb25hXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyAxNjEtMTgyXG4gICAqL1xuICBhc3luYyBhY3RpdmF0ZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wZXJzb25hTWFuYWdlci5hY3RpdmF0ZVBlcnNvbmEobmFtZSk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzIHx8ICFyZXN1bHQucGVyc29uYSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3tcbiAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICB0ZXh0OiBgJHt0aGlzLmdldFBlcnNvbmFJbmRpY2F0b3IoKX3inYwgJHtyZXN1bHQubWVzc2FnZX1gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHBlcnNvbmEgPSByZXN1bHQucGVyc29uYTtcbiAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBwZXJzb25hLmluc3RydWN0aW9ucz8udHJpbSgpIHx8IHBlcnNvbmEuY29udGVudD8udHJpbSgpIHx8ICdObyBpbnN0cnVjdGlvbnMgcHJvdmlkZWQuJztcbiAgICBjb25zdCByZWZlcmVuY2VDb250ZW50ID0gcGVyc29uYS5pbnN0cnVjdGlvbnM/LnRyaW0oKSA/IHBlcnNvbmEuY29udGVudD8udHJpbSgpIDogJyc7XG5cbiAgICBsZXQgdGV4dCA9IGAke3RoaXMuZ2V0UGVyc29uYUluZGljYXRvcigpfVBlcnNvbmEgQWN0aXZhdGVkOiAqKiR7cGVyc29uYS5tZXRhZGF0YS5uYW1lfSoqXFxuXFxuJHtwZXJzb25hLm1ldGFkYXRhLmRlc2NyaXB0aW9ufVxcblxcbioqSW5zdHJ1Y3Rpb25zOioqXFxuJHtpbnN0cnVjdGlvbnN9YDtcbiAgICBpZiAocmVmZXJlbmNlQ29udGVudCkge1xuICAgICAgdGV4dCArPSBgXFxuXFxuKipSZWZlcmVuY2U6KipcXG4ke3JlZmVyZW5jZUNvbnRlbnR9YDtcbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjNjQyOiBGYWlsLXNhZmUgd2FybmluZyBmb3IgQ0xJIHJlc3RyaWN0aW9uc1xuICAgIGNvbnN0IHJlc3RyaWN0aW9uV2FybmluZyA9IHRoaXMuZm9ybWF0UmVzdHJpY3Rpb25XYXJuaW5nKHBlcnNvbmEubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgaWYgKHJlc3RyaWN0aW9uV2FybmluZykge1xuICAgICAgdGV4dCArPSByZXN0cmljdGlvbldhcm5pbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0XG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGVhY3RpdmF0ZSBhIHNwZWNpZmljIHBlcnNvbmFcbiAgICogSXNzdWUgIzI4MTogVXBkYXRlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjdGl2ZSBwZXJzb25hc1xuICAgKlxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gV2hlbiBuYW1lZCBwZXJzb25hIGRvZXMgbm90IGV4aXN0XG4gICAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIG5hbWUgcGFyYW1ldGVyIGlzIG1pc3NpbmdcbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgYXN5bmMgZGVhY3RpdmF0ZShuYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgLy8gSXNzdWUgIzI3NTogUmVxdWlyZSBuYW1lIHBhcmFtZXRlciBmb3IgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZ1xuICAgIGlmICghbmFtZSB8fCBuYW1lID09PSAnJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOYW1lIHBhcmFtZXRlciBpcyByZXF1aXJlZCBmb3IgZGVhY3RpdmF0ZSBvcGVyYXRpb24nKTtcbiAgICB9XG5cbiAgICAvLyBJc3N1ZSAjMjc1OiBWZXJpZnkgdGhlIG5hbWVkIHBlcnNvbmEgZXhpc3RzIGJlZm9yZSBkZWFjdGl2YXRpbmdcbiAgICBjb25zdCBwZXJzb25hID0gdGhpcy5wZXJzb25hTWFuYWdlci5maW5kUGVyc29uYShuYW1lKTtcbiAgICBpZiAoIXBlcnNvbmEpIHtcbiAgICAgIHRocm93IG5ldyBFbGVtZW50Tm90Rm91bmRFcnJvcignUGVyc29uYScsIG5hbWUpO1xuICAgIH1cblxuICAgIC8vIElzc3VlICMyODE6IFBhc3MgdGhlIG5hbWUgdG8gZGVhY3RpdmF0ZSB0aGUgc3BlY2lmaWMgcGVyc29uYVxuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucGVyc29uYU1hbmFnZXIuZGVhY3RpdmF0ZVBlcnNvbmEobmFtZSk7XG4gICAgY29uc3QgaW5kaWNhdG9yID0gdGhpcy5nZXRQZXJzb25hSW5kaWNhdG9yKCk7XG5cbiAgICBpZiAoIXJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3inYwgJHtyZXN1bHQubWVzc2FnZX1gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBbe1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKchSAke3Jlc3VsdC5tZXNzYWdlfWBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGFjdGl2ZSBwZXJzb25hc1xuICAgKiBJc3N1ZSAjMjgxOiBVcGRhdGVkIHRvIHNob3cgYWxsIGFjdGl2ZSBwZXJzb25hcyAoc3VwcG9ydHMgbXVsdGlwbGUpXG4gICAqL1xuICBhc3luYyBnZXRBY3RpdmVFbGVtZW50cygpOiBQcm9taXNlPE1DUFJlc3BvbnNlPiB7XG4gICAgY29uc3QgYWN0aXZlUGVyc29uYXMgPSB0aGlzLnBlcnNvbmFNYW5hZ2VyLmdldEFjdGl2ZVBlcnNvbmFzKCk7XG4gICAgY29uc3QgaW5kaWNhdG9yID0gdGhpcy5nZXRQZXJzb25hSW5kaWNhdG9yKCk7XG5cbiAgICBpZiAoYWN0aXZlUGVyc29uYXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke2luZGljYXRvcn1ObyBwZXJzb25hcyBhcmUgY3VycmVudGx5IGFjdGl2ZS5gXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHBlcnNvbmFMaXN0ID0gYWN0aXZlUGVyc29uYXMubWFwKHAgPT5cbiAgICAgIGDwn5S5ICoqJHtwLm1ldGFkYXRhLm5hbWV9KiogKCR7cC51bmlxdWVfaWR9KVxcbiAgICR7cC5tZXRhZGF0YS5kZXNjcmlwdGlvbn1cXG4gICDwn5OBICR7cC5tZXRhZGF0YS5jYXRlZ29yeSB8fCAnZ2VuZXJhbCd9IHwg8J+OrSAke3AubWV0YWRhdGEuYXV0aG9yIHx8ICdVbmtub3duJ31gXG4gICAgKS5qb2luKCdcXG5cXG4nKTtcblxuICAgIGNvbnN0IGhlYWRlciA9IGFjdGl2ZVBlcnNvbmFzLmxlbmd0aCA9PT0gMVxuICAgICAgPyBgJHtpbmRpY2F0b3J9QWN0aXZlIFBlcnNvbmE6YFxuICAgICAgOiBgJHtpbmRpY2F0b3J9QWN0aXZlIFBlcnNvbmFzICgke2FjdGl2ZVBlcnNvbmFzLmxlbmd0aH0pOmA7XG5cbiAgICBsZXQgdGV4dCA9IGAke2hlYWRlcn1cXG5cXG4ke3BlcnNvbmFMaXN0fWA7XG5cbiAgICAvLyBJc3N1ZSAjNjQyOiBSZXN0cmljdGlvbiBzdW1tYXJ5IGZvciBhY3RpdmUgcGVyc29uYXMgd2l0aCBleHRlcm5hbFJlc3RyaWN0aW9uc1xuICAgIGNvbnN0IHJlc3RyaWN0ZWRQZXJzb25hcyA9IGFjdGl2ZVBlcnNvbmFzLmZpbHRlcihcbiAgICAgIHAgPT4gKHAubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmdhdGVrZWVwZXIgJiZcbiAgICAgICAgKChwLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmdhdGVrZWVwZXIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5leHRlcm5hbFJlc3RyaWN0aW9uc1xuICAgICk7XG4gICAgaWYgKHJlc3RyaWN0ZWRQZXJzb25hcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzdW1tYXJ5ID0gcmVzdHJpY3RlZFBlcnNvbmFzLm1hcChwID0+IHtcbiAgICAgICAgY29uc3QgZ2sgPSAocC5tZXRhZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5nYXRla2VlcGVyIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICBjb25zdCByID0gZ2suZXh0ZXJuYWxSZXN0cmljdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIHJldHVybiBgICAqKiR7cC5tZXRhZGF0YS5uYW1lfSoqOiAke3IuZGVzY3JpcHRpb259YDtcbiAgICAgIH0pLmpvaW4oJ1xcbicpO1xuICAgICAgdGV4dCArPSBgXFxuXFxuKipMb2FkZWQgQ0xJIFJlc3RyaWN0aW9uczoqKlxcbiR7c3VtbWFyeX1cXG4+IFVzZSBcXGBnZXRfZWZmZWN0aXZlX2NsaV9wb2xpY2llc1xcYCBmb3IgZnVsbCBkZXRhaWxzLmA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0XG4gICAgICB9XVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IGEgcGVyc29uYVxuICAgKiBFeHRyYWN0ZWQgZnJvbSBFbGVtZW50Q1JVREhhbmRsZXIudHMgbGluZXMgNjIwLTY0OFxuICAgKlxuICAgKiBAdGhyb3dzIHtFbGVtZW50Tm90Rm91bmRFcnJvcn0gV2hlbiBwZXJzb25hIGRvZXMgbm90IGV4aXN0XG4gICAqIEBzZWUgSXNzdWUgIzI3NSAtIEhhbmRsZXJzIHJldHVybiBzdWNjZXNzPXRydWUgZm9yIG1pc3NpbmcgZWxlbWVudHNcbiAgICovXG4gIGFzeW5jIGdldEVsZW1lbnREZXRhaWxzKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICBjb25zdCBwZXJzb25hID0gdGhpcy5wZXJzb25hTWFuYWdlci5maW5kUGVyc29uYShuYW1lKTtcbiAgICBjb25zdCBpbmRpY2F0b3IgPSB0aGlzLmdldFBlcnNvbmFJbmRpY2F0b3IoKTtcblxuICAgIGlmICghcGVyc29uYSkge1xuICAgICAgdGhyb3cgbmV3IEVsZW1lbnROb3RGb3VuZEVycm9yKCdQZXJzb25hJywgbmFtZSk7XG4gICAgfVxuXG4gICAgY29uc3QgdHJpZ2dlcnMgPSBwZXJzb25hLm1ldGFkYXRhLnRyaWdnZXJzPy5qb2luKCcsICcpIHx8ICdOb25lJztcbiAgICBjb25zdCBjb250ZW50ID0gcGVyc29uYS5jb250ZW50Py50cmltKCkgfHwgJ05vIGluc3RydWN0aW9ucyBwcm92aWRlZC4nO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J98J+TiyAqKiR7cGVyc29uYS5tZXRhZGF0YS5uYW1lfSoqIERldGFpbHNcXG5cXG5gICtcbiAgICAgICAgICBgKipEZXNjcmlwdGlvbjoqKiAke3BlcnNvbmEubWV0YWRhdGEuZGVzY3JpcHRpb259XFxuYCArXG4gICAgICAgICAgYCoqRmlsZToqKiAke3BlcnNvbmEuZmlsZW5hbWV9XFxuYCArXG4gICAgICAgICAgYCoqVmVyc2lvbjoqKiAke3BlcnNvbmEubWV0YWRhdGEudmVyc2lvbiB8fCAnMS4wJ31cXG5gICtcbiAgICAgICAgICBgKipBdXRob3I6KiogJHtwZXJzb25hLm1ldGFkYXRhLmF1dGhvciB8fCAnVW5rbm93bid9XFxuYCArXG4gICAgICAgICAgYCoqVHJpZ2dlcnM6KiogJHt0cmlnZ2Vyc31cXG5cXG5gICtcbiAgICAgICAgICBgKipGdWxsIEluc3RydWN0aW9uczoqKlxcblxcYFxcYFxcYFxcbiR7Y29udGVudH1cXG5cXGBcXGBcXGBgXG4gICAgICB9XVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGVyc29uYUFjdGl2YXRpb25TdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9zdHJhdGVnaWVzL1BlcnNvbmFBY3RpdmF0aW9uU3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFJSCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdyRSxNQUFNLE9BQU8seUJBQTBCLFNBQVEsc0JBQXNCO0lBRWhEO0lBQ0E7SUFGbkIsWUFDbUIsY0FBOEIsRUFDOUIsZ0JBQXlDO1FBRTFELEtBQUssRUFBRSxDQUFDO1FBSFMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7SUFHNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssbUJBQW1CO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUN6QixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLENBQUM7d0JBQ1IsSUFBSSxFQUFFLE1BQU07d0JBQ1osSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRTtxQkFDekQsQ0FBQzthQUNILENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUMvQixN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QUFJLEtBQUssSUFBSTt3QkFDckQsZUFBZSxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUk7d0JBQ3ZELGlCQUFpQixRQUFRLE1BQU07d0JBQy9CLG1DQUFtQyxPQUFPLFVBQVU7aUJBQ3ZELENBQUM7U0FDSCxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQZXJzb25hQWN0aXZhdGlvblN0cmF0ZWd5IC0gU3RyYXRlZ3kgZm9yIHBlcnNvbmEgZWxlbWVudCBhY3RpdmF0aW9uXG4gKlxuICogSGFuZGxlcyBhY3RpdmF0aW9uLCBkZWFjdGl2YXRpb24sIGFuZCBzdGF0dXMgdHJhY2tpbmcgZm9yIHBlcnNvbmEgZWxlbWVudHMuXG4gKiBVc2VzIHRoZSBQZXJzb25hTWFuYWdlcidzIHVuaXF1ZSBBUEkgYW5kIFBlcnNvbmFJbmRpY2F0b3JTZXJ2aWNlIGZvciBmb3JtYXR0aW5nLlxuICovXG5cbmltcG9ydCB7IFBlcnNvbmFNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vcGVyc29uYS9QZXJzb25hTWFuYWdlci5qcyc7XG5pbXBvcnQgeyBQZXJzb25hSW5kaWNhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL1BlcnNvbmFJbmRpY2F0b3JTZXJ2aWNlLmpzJztcbmltcG9ydCB7IEVsZW1lbnROb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vLi4vdXRpbHMvRXJyb3JIYW5kbGVyLmpzJztcbmltcG9ydCB7IEJhc2VBY3RpdmF0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL0Jhc2VBY3RpdmF0aW9uU3RyYXRlZ3kuanMnO1xuaW1wb3J0IHsgRWxlbWVudEFjdGl2YXRpb25TdHJhdGVneSwgTUNQUmVzcG9uc2UgfSBmcm9tICcuL0VsZW1lbnRBY3RpdmF0aW9uU3RyYXRlZ3kuanMnO1xuXG5leHBvcnQgY2xhc3MgUGVyc29uYUFjdGl2YXRpb25TdHJhdGVneSBleHRlbmRzIEJhc2VBY3RpdmF0aW9uU3RyYXRlZ3kgaW1wbGVtZW50cyBFbGVtZW50QWN0aXZhdGlvblN0cmF0ZWd5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwZXJzb25hTWFuYWdlcjogUGVyc29uYU1hbmFnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmRpY2F0b3JTZXJ2aWNlOiBQZXJzb25hSW5kaWNhdG9yU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGVyc29uYSBpbmRpY2F0b3IgcHJlZml4XG4gICAqL1xuICBwcml2YXRlIGdldFBlcnNvbmFJbmRpY2F0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbmRpY2F0b3JTZXJ2aWNlLmdldFBlcnNvbmFJbmRpY2F0b3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZSBhIHBlcnNvbmFcbiAgICogRXh0cmFjdGVkIGZyb20gRWxlbWVudENSVURIYW5kbGVyLnRzIGxpbmVzIDE2MS0xODJcbiAgICovXG4gIGFzeW5jIGFjdGl2YXRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBlcnNvbmFNYW5hZ2VyLmFjdGl2YXRlUGVyc29uYShuYW1lKTtcblxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MgfHwgIXJlc3VsdC5wZXJzb25hKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbe1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IGAke3RoaXMuZ2V0UGVyc29uYUluZGljYXRvcigpfeKdjCAke3Jlc3VsdC5tZXNzYWdlfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcGVyc29uYSA9IHJlc3VsdC5wZXJzb25hO1xuICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IHBlcnNvbmEuaW5zdHJ1Y3Rpb25zPy50cmltKCkgfHwgcGVyc29uYS5jb250ZW50Py50cmltKCkgfHwgJ05vIGluc3RydWN0aW9ucyBwcm92aWRlZC4nO1xuICAgIGNvbnN0IHJlZmVyZW5jZUNvbnRlbnQgPSBwZXJzb25hLmluc3RydWN0aW9ucz8udHJpbSgpID8gcGVyc29uYS5jb250ZW50Py50cmltKCkgOiAnJztcblxuICAgIGxldCB0ZXh0ID0gYCR7dGhpcy5nZXRQZXJzb25hSW5kaWNhdG9yKCl9UGVyc29uYSBBY3RpdmF0ZWQ6ICoqJHtwZXJzb25hLm1ldGFkYXRhLm5hbWV9KipcXG5cXG4ke3BlcnNvbmEubWV0YWRhdGEuZGVzY3JpcHRpb259XFxuXFxuKipJbnN0cnVjdGlvbnM6KipcXG4ke2luc3RydWN0aW9uc31gO1xuICAgIGlmIChyZWZlcmVuY2VDb250ZW50KSB7XG4gICAgICB0ZXh0ICs9IGBcXG5cXG4qKlJlZmVyZW5jZToqKlxcbiR7cmVmZXJlbmNlQ29udGVudH1gO1xuICAgIH1cblxuICAgIC8vIElzc3VlICM2NDI6IEZhaWwtc2FmZSB3YXJuaW5nIGZvciBDTEkgcmVzdHJpY3Rpb25zXG4gICAgY29uc3QgcmVzdHJpY3Rpb25XYXJuaW5nID0gdGhpcy5mb3JtYXRSZXN0cmljdGlvbldhcm5pbmcocGVyc29uYS5tZXRhZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcbiAgICBpZiAocmVzdHJpY3Rpb25XYXJuaW5nKSB7XG4gICAgICB0ZXh0ICs9IHJlc3RyaWN0aW9uV2FybmluZztcbiAgICB9XG5cbiAgICBjb25zdCBnYXRla2VlcGVyV2FybmluZyA9IHRoaXMuZm9ybWF0R2F0ZWtlZXBlclZhbGlkaXR5V2FybmluZyhwZXJzb25hLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgIGlmIChnYXRla2VlcGVyV2FybmluZykge1xuICAgICAgdGV4dCArPSBnYXRla2VlcGVyV2FybmluZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHRcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWFjdGl2YXRlIGEgc3BlY2lmaWMgcGVyc29uYVxuICAgKiBJc3N1ZSAjMjgxOiBVcGRhdGVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgYWN0aXZlIHBlcnNvbmFzXG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIG5hbWVkIHBlcnNvbmEgZG9lcyBub3QgZXhpc3RcbiAgICogQHRocm93cyB7RXJyb3J9IFdoZW4gbmFtZSBwYXJhbWV0ZXIgaXMgbWlzc2luZ1xuICAgKiBAc2VlIElzc3VlICMyNzUgLSBIYW5kbGVycyByZXR1cm4gc3VjY2Vzcz10cnVlIGZvciBtaXNzaW5nIGVsZW1lbnRzXG4gICAqL1xuICBhc3luYyBkZWFjdGl2YXRlKG5hbWU6IHN0cmluZyk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICAvLyBJc3N1ZSAjMjc1OiBSZXF1aXJlIG5hbWUgcGFyYW1ldGVyIGZvciBjb25zaXN0ZW50IGVycm9yIGhhbmRsaW5nXG4gICAgaWYgKCFuYW1lIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05hbWUgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIGZvciBkZWFjdGl2YXRlIG9wZXJhdGlvbicpO1xuICAgIH1cblxuICAgIC8vIElzc3VlICMyNzU6IFZlcmlmeSB0aGUgbmFtZWQgcGVyc29uYSBleGlzdHMgYmVmb3JlIGRlYWN0aXZhdGluZ1xuICAgIGNvbnN0IHBlcnNvbmEgPSB0aGlzLnBlcnNvbmFNYW5hZ2VyLmZpbmRQZXJzb25hKG5hbWUpO1xuICAgIGlmICghcGVyc29uYSkge1xuICAgICAgdGhyb3cgbmV3IEVsZW1lbnROb3RGb3VuZEVycm9yKCdQZXJzb25hJywgbmFtZSk7XG4gICAgfVxuXG4gICAgLy8gSXNzdWUgIzI4MTogUGFzcyB0aGUgbmFtZSB0byBkZWFjdGl2YXRlIHRoZSBzcGVjaWZpYyBwZXJzb25hXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5wZXJzb25hTWFuYWdlci5kZWFjdGl2YXRlUGVyc29uYShuYW1lKTtcbiAgICBjb25zdCBpbmRpY2F0b3IgPSB0aGlzLmdldFBlcnNvbmFJbmRpY2F0b3IoKTtcblxuICAgIGlmICghcmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfeKdjCAke3Jlc3VsdC5tZXNzYWdlfWBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZXh0OiBgJHtpbmRpY2F0b3J94pyFICR7cmVzdWx0Lm1lc3NhZ2V9YFxuICAgICAgfV1cbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYWN0aXZlIHBlcnNvbmFzXG4gICAqIElzc3VlICMyODE6IFVwZGF0ZWQgdG8gc2hvdyBhbGwgYWN0aXZlIHBlcnNvbmFzIChzdXBwb3J0cyBtdWx0aXBsZSlcbiAgICovXG4gIGFzeW5jIGdldEFjdGl2ZUVsZW1lbnRzKCk6IFByb21pc2U8TUNQUmVzcG9uc2U+IHtcbiAgICBjb25zdCBhY3RpdmVQZXJzb25hcyA9IHRoaXMucGVyc29uYU1hbmFnZXIuZ2V0QWN0aXZlUGVyc29uYXMoKTtcbiAgICBjb25zdCBpbmRpY2F0b3IgPSB0aGlzLmdldFBlcnNvbmFJbmRpY2F0b3IoKTtcblxuICAgIGlmIChhY3RpdmVQZXJzb25hcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbnRlbnQ6IFt7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYCR7aW5kaWNhdG9yfU5vIHBlcnNvbmFzIGFyZSBjdXJyZW50bHkgYWN0aXZlLmBcbiAgICAgICAgfV1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcGVyc29uYUxpc3QgPSBhY3RpdmVQZXJzb25hcy5tYXAocCA9PlxuICAgICAgYPCflLkgKioke3AubWV0YWRhdGEubmFtZX0qKiAoJHtwLnVuaXF1ZV9pZH0pXFxuICAgJHtwLm1ldGFkYXRhLmRlc2NyaXB0aW9ufVxcbiAgIPCfk4EgJHtwLm1ldGFkYXRhLmNhdGVnb3J5IHx8ICdnZW5lcmFsJ30gfCDwn46tICR7cC5tZXRhZGF0YS5hdXRob3IgfHwgJ1Vua25vd24nfWBcbiAgICApLmpvaW4oJ1xcblxcbicpO1xuXG4gICAgY29uc3QgaGVhZGVyID0gYWN0aXZlUGVyc29uYXMubGVuZ3RoID09PSAxXG4gICAgICA/IGAke2luZGljYXRvcn1BY3RpdmUgUGVyc29uYTpgXG4gICAgICA6IGAke2luZGljYXRvcn1BY3RpdmUgUGVyc29uYXMgKCR7YWN0aXZlUGVyc29uYXMubGVuZ3RofSk6YDtcblxuICAgIGxldCB0ZXh0ID0gYCR7aGVhZGVyfVxcblxcbiR7cGVyc29uYUxpc3R9YDtcblxuICAgIC8vIElzc3VlICM2NDI6IFJlc3RyaWN0aW9uIHN1bW1hcnkgZm9yIGFjdGl2ZSBwZXJzb25hcyB3aXRoIGV4dGVybmFsUmVzdHJpY3Rpb25zXG4gICAgY29uc3QgcmVzdHJpY3RlZFBlcnNvbmFzID0gYWN0aXZlUGVyc29uYXMuZmlsdGVyKFxuICAgICAgcCA9PiAocC5tZXRhZGF0YSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8uZ2F0ZWtlZXBlciAmJlxuICAgICAgICAoKHAubWV0YWRhdGEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikuZ2F0ZWtlZXBlciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmV4dGVybmFsUmVzdHJpY3Rpb25zXG4gICAgKTtcbiAgICBpZiAocmVzdHJpY3RlZFBlcnNvbmFzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHN1bW1hcnkgPSByZXN0cmljdGVkUGVyc29uYXMubWFwKHAgPT4ge1xuICAgICAgICBjb25zdCBnayA9IChwLm1ldGFkYXRhIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLmdhdGVrZWVwZXIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIGNvbnN0IHIgPSBnay5leHRlcm5hbFJlc3RyaWN0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgcmV0dXJuIGAgICoqJHtwLm1ldGFkYXRhLm5hbWV9Kio6ICR7ci5kZXNjcmlwdGlvbn1gO1xuICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgICB0ZXh0ICs9IGBcXG5cXG4qKkxvYWRlZCBDTEkgUmVzdHJpY3Rpb25zOioqXFxuJHtzdW1tYXJ5fVxcbj4gVXNlIFxcYGdldF9lZmZlY3RpdmVfY2xpX3BvbGljaWVzXFxgIGZvciBmdWxsIGRldGFpbHMuYDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHRcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgYSBwZXJzb25hXG4gICAqIEV4dHJhY3RlZCBmcm9tIEVsZW1lbnRDUlVESGFuZGxlci50cyBsaW5lcyA2MjAtNjQ4XG4gICAqXG4gICAqIEB0aHJvd3Mge0VsZW1lbnROb3RGb3VuZEVycm9yfSBXaGVuIHBlcnNvbmEgZG9lcyBub3QgZXhpc3RcbiAgICogQHNlZSBJc3N1ZSAjMjc1IC0gSGFuZGxlcnMgcmV0dXJuIHN1Y2Nlc3M9dHJ1ZSBmb3IgbWlzc2luZyBlbGVtZW50c1xuICAgKi9cbiAgYXN5bmMgZ2V0RWxlbWVudERldGFpbHMobmFtZTogc3RyaW5nKTogUHJvbWlzZTxNQ1BSZXNwb25zZT4ge1xuICAgIGNvbnN0IHBlcnNvbmEgPSB0aGlzLnBlcnNvbmFNYW5hZ2VyLmZpbmRQZXJzb25hKG5hbWUpO1xuICAgIGNvbnN0IGluZGljYXRvciA9IHRoaXMuZ2V0UGVyc29uYUluZGljYXRvcigpO1xuXG4gICAgaWYgKCFwZXJzb25hKSB7XG4gICAgICB0aHJvdyBuZXcgRWxlbWVudE5vdEZvdW5kRXJyb3IoJ1BlcnNvbmEnLCBuYW1lKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlnZ2VycyA9IHBlcnNvbmEubWV0YWRhdGEudHJpZ2dlcnM/LmpvaW4oJywgJykgfHwgJ05vbmUnO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBwZXJzb25hLmNvbnRlbnQ/LnRyaW0oKSB8fCAnTm8gaW5zdHJ1Y3Rpb25zIHByb3ZpZGVkLic7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW3tcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRleHQ6IGAke2luZGljYXRvcn3wn5OLICoqJHtwZXJzb25hLm1ldGFkYXRhLm5hbWV9KiogRGV0YWlsc1xcblxcbmAgK1xuICAgICAgICAgIGAqKkRlc2NyaXB0aW9uOioqICR7cGVyc29uYS5tZXRhZGF0YS5kZXNjcmlwdGlvbn1cXG5gICtcbiAgICAgICAgICBgKipGaWxlOioqICR7cGVyc29uYS5maWxlbmFtZX1cXG5gICtcbiAgICAgICAgICBgKipWZXJzaW9uOioqICR7cGVyc29uYS5tZXRhZGF0YS52ZXJzaW9uIHx8ICcxLjAnfVxcbmAgK1xuICAgICAgICAgIGAqKkF1dGhvcjoqKiAke3BlcnNvbmEubWV0YWRhdGEuYXV0aG9yIHx8ICdVbmtub3duJ31cXG5gICtcbiAgICAgICAgICBgKipUcmlnZ2VyczoqKiAke3RyaWdnZXJzfVxcblxcbmAgK1xuICAgICAgICAgIGAqKkZ1bGwgSW5zdHJ1Y3Rpb25zOioqXFxuXFxgXFxgXFxgXFxuJHtjb250ZW50fVxcblxcYFxcYFxcYGBcbiAgICAgIH1dXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"SkillActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/SkillActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,uBAAwB,SAAQ,sBAAuB,YAAW,yBAAyB;IAC1F,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAIvD;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAiDjF;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAsB/C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC5D"}
1
+ {"version":3,"file":"SkillActivationStrategy.d.ts","sourceRoot":"","sources":["../../../src/handlers/strategies/SkillActivationStrategy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAExF,qBAAa,uBAAwB,SAAQ,sBAAuB,YAAW,yBAAyB;IAC1F,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAIvD;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAsDjF;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAUpD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAsB/C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAmC5D"}