sonamu 0.7.39 → 0.7.41

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 (27) hide show
  1. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  2. package/dist/tasks/workflow-manager.js +9 -1
  3. package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
  4. package/dist/template/implementations/generated_http.template.js +3 -2
  5. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  6. package/dist/template/implementations/queries.template.js +10 -2
  7. package/dist/template/implementations/sd.template.d.ts.map +1 -1
  8. package/dist/template/implementations/sd.template.js +34 -21
  9. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  10. package/dist/template/implementations/view_form.template.js +4 -2
  11. package/dist/template/implementations/view_id_async_select.template.js +2 -2
  12. package/dist/template/zod-converter.js +4 -2
  13. package/dist/testing/fixture-manager.d.ts +18 -6
  14. package/dist/testing/fixture-manager.d.ts.map +1 -1
  15. package/dist/testing/fixture-manager.js +124 -46
  16. package/dist/ui-web/assets/{index-Bfv7V57v.css → index-CWExqVO5.css} +1 -1
  17. package/dist/ui-web/assets/{index-DCf469Xl.js → index-DoZuAOiq.js} +69 -67
  18. package/dist/ui-web/index.html +2 -2
  19. package/package.json +3 -3
  20. package/src/tasks/workflow-manager.ts +10 -0
  21. package/src/template/implementations/generated_http.template.ts +2 -1
  22. package/src/template/implementations/queries.template.ts +23 -12
  23. package/src/template/implementations/sd.template.ts +33 -20
  24. package/src/template/implementations/view_form.template.ts +3 -1
  25. package/src/template/implementations/view_id_async_select.template.ts +1 -1
  26. package/src/template/zod-converter.ts +3 -1
  27. package/src/testing/fixture-manager.ts +167 -59
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-manager.d.ts","sourceRoot":"","sources":["../../src/tasks/workflow-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-manager.d.ts","sourceRoot":"","sources":["../../src/tasks/workflow-manager.ts"],"names":[],"mappings":"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"}
@@ -94,6 +94,10 @@ export class WorkflowManager {
94
94
  }
95
95
  // cron task를 등록
96
96
  async scheduleTask(workflow, schedule) {
97
+ // Worker가 활성화된 노드에서만 처리
98
+ if (!this.#worker) {
99
+ return;
100
+ }
97
101
  const task = cronSchedule(schedule.expression, (async ({ name, version }, { input })=>{
98
102
  const inputData = await (typeof input === "function" ? Promise.resolve(input()) : Promise.resolve(input));
99
103
  return this.run({
@@ -114,6 +118,10 @@ export class WorkflowManager {
114
118
  }
115
119
  // cron task를 중지
116
120
  async unscheduleTask(name) {
121
+ // Worker가 활성화된 노드에서만 처리
122
+ if (!this.#worker) {
123
+ return;
124
+ }
117
125
  const taskItem = this.#scheduledTasks.get(name);
118
126
  if (!taskItem) {
119
127
  console.error("scheduled task not found", name);
@@ -194,4 +202,4 @@ export class WorkflowManager {
194
202
  }
195
203
  }
196
204
 
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy93b3JrZmxvdy1tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciwgdHlwZSBMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgQmFja2VuZFBvc3RncmVzLCBPcGVuV29ya2Zsb3csIHR5cGUgV29ya2VyIH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFJ1bm5hYmxlV29ya2Zsb3csXG4gIFNjaGVtYUlucHV0LFxuICBTY2hlbWFPdXRwdXQsXG4gIFN0YW5kYXJkU2NoZW1hVjEsXG4gIFN0ZXBBcGksXG4gIFdvcmtmbG93UnVuSGFuZGxlLFxuICBXb3JrZmxvd1NwZWMsXG59IGZyb20gXCJAc29uYW11LWtpdC90YXNrcy9pbnRlcm5hbFwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgdHlwZSB7IEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgc2NoZWR1bGUgYXMgY3JvblNjaGVkdWxlLCB0eXBlIFNjaGVkdWxlZFRhc2sgfSBmcm9tIFwibm9kZS1jcm9uXCI7XG5pbXBvcnQgdHlwZSB7IFpvZE9iamVjdCB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tTU0VGYWN0b3J5IH0gZnJvbSBcIi4uL3N0cmVhbS9zc2VcIjtcbmltcG9ydCB0eXBlIHsgRXhlY3V0YWJsZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4vZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBTdGVwV3JhcHBlciB9IGZyb20gXCIuL3N0ZXAtd3JhcHBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIC8vIHdvcmtlcuyXkOyEnCDrj5nsi5wg7Iuk7ZaJ7ZWgIO2DnOyKpO2BrCDsiJgsIOq4sOuzuOydgCBDUFUg7L2U7Ja0IOyImCAtIDHqsJxcbiAgY29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLy8gd29ya2Vy7JeQ7IScIOyCrOyaqe2VoCBwdWIvc3ViIOyXrOu2gCwg6riw67O47J2AIHRydWVcbiAgdXNlUHViU3ViPzogYm9vbGVhbjtcblxuICAvLyBwdWIvc3Vi7Jy866GcIO2DnOyKpO2BrOulvCDsiJjsi6DtlojsnYQg65WMIOybjO2BrO2UjOuhnOyasCDsi6TtlonquYzsp4Ag7KeA7JewIOyLnOqwhCwg6riw67O47J2AIDUwMG1zXG4gIGxpc3RlbkRlbGF5PzogbnVtYmVyO1xufVxuXG4vLyBXb3JrZmxvdyDtlajsiJjsnZgg7YOA7J6FLCBAc29uYW11LWtpdC90YXNrc+yZgCDri6Trpbgg7KCQ7J2AIHN0ZXDsnYQg7ZWc67KIIOqwkOyLvCDtmJXtg5wuXG5leHBvcnQgdHlwZSBXb3JrZmxvd0Z1bmN0aW9uPElucHV0LCBPdXRwdXQ+ID0gKFxuICBwYXJhbXM6IFJlYWRvbmx5PHtcbiAgICBsb2dnZXI6IExvZ2dlcjtcbiAgICBpbnB1dDogSW5wdXQ7XG4gICAgc3RlcDogU3RlcFdyYXBwZXI7XG4gICAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgfT4sXG4pID0+IFByb21pc2U8T3V0cHV0PiB8IE91dHB1dDtcblxuLy8gV29ya2Zsb3frpbwg65Ox66Gd7ZWgIOuVjOulvCDsnITtlZwg7YOA7J6FXG5leHBvcnQgdHlwZSBXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8XG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPiA9IE9taXQ8XG4gIFdvcmtmbG93U3BlYzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4sXG4gIFwidmVyc2lvblwiXG4+ICYge1xuICBpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbjogV29ya2Zsb3dGdW5jdGlvbjxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQ+O1xufTtcblxuZXhwb3J0IGNsYXNzIFdvcmtmbG93TWFuYWdlciB7XG4gIC8vIGJhY2tlbmQg7J247Iqk7YS07IqkXG4gIHJlYWRvbmx5ICNiYWNrZW5kOiBCYWNrZW5kUG9zdGdyZXM7XG5cbiAgLy8gT3BlbldvcmtmbG93IOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjb3c6IE9wZW5Xb3JrZmxvdztcblxuICAvLyBXb3JrZXIg7J247Iqk7YS07IqkICjsl4bsnYQg7IiYIOyeiOycvOupsCwg7J20IOuVjOuKlCDrtoTsgrDrkJwg7ISc67KEIO2ZmOqyveyXkOyEnCBEQuyXkCBwdWJsaXNo66eMIO2VnOuLpOqzoCDqsIDsoJXtlagpXG4gICN3b3JrZXI6IFdvcmtlciB8IG51bGw7XG5cbiAgLy8g7YyM7J28IOqyveuhnCAtPiDtjIzsnbzsl5Ag7KCV7J2Y65CcIOybjO2BrO2UjOuhnOyasCDrqZTtg4DrjbDsnbTthLAg66qp66GdXG4gICN3b3JrZmxvd3NNYXA6IE1hcDxzdHJpbmcsIFdvcmtmbG93TWV0YWRhdGFbXT47XG5cbiAgLy8gVGFzayDsnbTrpoQgLT4gVGFzayDsoJXrs7Qg67CPIElucHV0IOqwkiwgV29ya2Zsb3cgSURcbiAgI3NjaGVkdWxlZFRhc2tzOiBNYXA8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIHRhc2s6IFNjaGVkdWxlZFRhc2s7XG4gICAgICBpbnB1dEZuOiBFeGVjdXRhYmxlPFNjaGVtYUlucHV0PHVua25vd24sIHVua25vd24+PjtcbiAgICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgICB9XG4gID47XG5cbiAgLy8gQmFja2VuZFBvc3RncmVz7JeQ7IScIOyymOumrO2VmOuKlCDqsoPrk6TsnbQg7J6I7Ja07IScIEtuZXgg7Luk64Sl7IWY7J20IOyVhOuLiOudvCDshKTsoJXqsJLsnYQg64Sj7Ja07KSY7JW87ZWoLlxuICBjb25zdHJ1Y3RvcihkYkNvbmY6IEtuZXguQ29uZmlnLCBydW5NaWdyYXRpb25zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGJhY2tlbmQgPSBuZXcgQmFja2VuZFBvc3RncmVzKGRiQ29uZiwgeyBydW5NaWdyYXRpb25zIH0pO1xuXG4gICAgdGhpcy4jYmFja2VuZCA9IGJhY2tlbmQ7XG4gICAgdGhpcy4jb3cgPSBuZXcgT3BlbldvcmtmbG93KHsgYmFja2VuZCB9KTtcbiAgICB0aGlzLiN3b3JrZXIgPSBudWxsO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg67CPIOybjO2BrO2UjOuhnOyasOyXkCDrjIDtlZwgc2NoZWR1bGVkIHRhc2tz66W8IOuPmeq4sO2ZlO2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIHN5bmNocm9uaXplKHdvcmtmbG93TWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+KSB7XG4gICAgLy8gMS4g7IKt7KCc65CcIO2MjOydvOydgCDsnbzqtIQg7IKt7KCcXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiN3b3JrZmxvd3NNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXdvcmtmbG93TWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgICAgICAgICAuLi53b3JrZmxvdy5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgIHRoaXMudW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93KSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICAvLyAyLiDsg4jroZwg7LaU6rCA65CcIO2MjOydvOydgCDsnbzqtIQg65Ox66GdXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh3b3JrZmxvd01hcC5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgIGlkOiB3b3JrZmxvdy5pZCxcbiAgICAgICAgICAgICAgbmFtZTogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICBzY2hlbWE6IHdvcmtmbG93LnNjaGVtYSxcbiAgICAgICAgICAgICAgZnVuY3Rpb246IHdvcmtmbG93LmZuLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgICAgICAgIG5ld0l0ZW0uc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMuc2NoZWR1bGVUYXNrKG5ld0l0ZW0sIHNjaGVkdWxlKSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IHdvcmtmbG93TWFwO1xuICB9XG5cbiAgLy8g7JuM7YGs7ZSM66Gc7Jqw66W8IOyLpO2WiVxuICBydW48SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IE9taXQ8V29ya2Zsb3dDcmVhdGVPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LCBcImZ1bmN0aW9uXCIgfCBcInNjaGVtYVwiIHwgXCJpZFwiPixcbiAgICBpbnB1dDogU2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+LFxuICApOiBQcm9taXNlPFdvcmtmbG93UnVuSGFuZGxlPE91dHB1dD4+IHtcbiAgICByZXR1cm4gdGhpcy4jb3cucnVuV29ya2Zsb3coXG4gICAgICB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBpbnB1dCxcbiAgICApO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr66W8IOuTseuhnVxuICBhc3luYyBzY2hlZHVsZVRhc2soXG4gICAgd29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJpZFwiIHwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgc2NoZWR1bGU6IFdvcmtmbG93TWV0YWRhdGFbXCJzY2hlZHVsZXNcIl1bbnVtYmVyXSxcbiAgKSB7XG4gICAgY29uc3QgdGFzayA9IGNyb25TY2hlZHVsZShcbiAgICAgIHNjaGVkdWxlLmV4cHJlc3Npb24sXG4gICAgICAoYXN5bmMgKFxuICAgICAgICB7IG5hbWUsIHZlcnNpb24gfTogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICAgICAgeyBpbnB1dCB9OiBXb3JrZmxvd01ldGFkYXRhW1wic2NoZWR1bGVzXCJdW251bWJlcl0sXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXREYXRhID0gYXdhaXQgKHR5cGVvZiBpbnB1dCA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoaW5wdXQoKSlcbiAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZShpbnB1dCkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJ1bih7IG5hbWUsIHZlcnNpb246IHZlcnNpb24gPz8gbnVsbCB9LCBpbnB1dERhdGEpO1xuICAgICAgfSkuYmluZCh0aGlzLCB3b3JrZmxvdywgc2NoZWR1bGUpLFxuICAgICAge1xuICAgICAgICBuYW1lOiBzY2hlZHVsZS5uYW1lLFxuICAgICAgICB0aW1lem9uZTogU29uYW11LmNvbmZpZy5hcGkudGltZXpvbmUsXG4gICAgICAgIG5vT3ZlcmxhcDogZmFsc2UsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5zZXQoc2NoZWR1bGUubmFtZSwge1xuICAgICAgdGFzayxcbiAgICAgIGlucHV0Rm46IHNjaGVkdWxlLmlucHV0LFxuICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cuaWQsXG4gICAgfSk7XG4gICAgYXdhaXQgdGFzay5zdGFydCgpO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr66W8IOykkeyngFxuICBhc3luYyB1bnNjaGVkdWxlVGFzayhuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YXNrSXRlbSA9IHRoaXMuI3NjaGVkdWxlZFRhc2tzLmdldChuYW1lKTtcbiAgICBpZiAoIXRhc2tJdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwic2NoZWR1bGVkIHRhc2sgbm90IGZvdW5kXCIsIG5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmRlbGV0ZShuYW1lKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLnN0b3AoKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0sIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIOuTseuhne2VtOyVvCDtlaguXG4gIHJlZ2lzdGVyV29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPixcbiAgKTogUnVubmFibGVXb3JrZmxvdzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4ge1xuICAgIGNvbnN0IGZuID0gYXN5bmMgKFxuICAgICAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgICAgIGlucHV0OiBTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+O1xuICAgICAgICBzdGVwOiBTdGVwQXBpO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfT4sXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29udGV4dCA9IHtcbiAgICAgICAgcmVxdWVzdDogbnVsbCxcbiAgICAgICAgcmVwbHk6IG51bGwsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBjcmVhdGVTU0U6IChzY2hlbWE6IFpvZE9iamVjdCkgPT4gY3JlYXRlTW9ja1NTRUZhY3Rvcnkoc2NoZW1hKSxcbiAgICAgICAgbmFpdGVTdG9yZTogTmFpdGUuY3JlYXRlU3RvcmUoKSxcbiAgICAgICAgdXNlcjogbnVsbCxcbiAgICAgICAgcGFzc3BvcnQ6IHtcbiAgICAgICAgICBsb2dpbjogYXN5bmMgKCkgPT4ge30sXG4gICAgICAgICAgbG9nb3V0OiAoKSA9PiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBDb250ZXh0O1xuXG4gICAgICBjb25zdCBjb250ZXh0UHJvdmlkZXIgPSBTb25hbXUuY29uZmlnLnRhc2tzPy5jb250ZXh0UHJvdmlkZXI7XG4gICAgICBjb25zdCBjb250ZXh0OiBDb250ZXh0ID0gY29udGV4dFByb3ZpZGVyXG4gICAgICAgID8gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGNvbnRleHRQcm92aWRlcihiYXNlQ29udGV4dCkpXG4gICAgICAgIDogYmFzZUNvbnRleHQ7XG5cbiAgICAgIGNvbnN0IHN0ZXAgPSBuZXcgU3RlcFdyYXBwZXIocGFyYW1zLnN0ZXApO1xuICAgICAgcmV0dXJuIFNvbmFtdS5hc3luY0xvY2FsU3RvcmFnZS5ydW4oeyBjb250ZXh0IH0sICgpID0+XG4gICAgICAgIG9wdGlvbnMuZnVuY3Rpb24oe1xuICAgICAgICAgIGlucHV0OiBwYXJhbXMuaW5wdXQsXG4gICAgICAgICAgc3RlcCxcbiAgICAgICAgICB2ZXJzaW9uOiBwYXJhbXMudmVyc2lvbixcbiAgICAgICAgICBsb2dnZXI6IGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeShvcHRpb25zLm5hbWUsIFwid29ya2Zsb3dcIikpLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGNvbnN0IHdvcmtmbG93ID0gdGhpcy4jb3cuZGVmaW5lV29ya2Zsb3coXG4gICAgICB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IHVuZGVmaW5lZCxcbiAgICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcbiAgICAgIH0sXG4gICAgICBmbixcbiAgICApO1xuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0g7ZW07KCcLCDqtIDroKjrkJwg7Iqk7LyA7KSE7J2AIOuzhOuPhOuhnCDtlbTsoJztlbTslbwg7ZWoLlxuICBhc3luYyB1bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIiB8IFwiaWRcIj4pIHtcbiAgICB0aGlzLiNvdy51bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3cubmFtZSwgd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDshKTsoJUg7ZuEIOyLnOyekVxuICBzZXR1cFdvcmtlcihvcHRpb25zOiBXb3JrZmxvd09wdGlvbnMpIHtcbiAgICB0aGlzLiN3b3JrZXIgPSB0aGlzLiNvdy5uZXdXb3JrZXIob3B0aW9ucyk7XG4gIH1cblxuICAvLyBXb3JrZXLqsIAg7J6I7Jy866m0IFdvcmtlcuq5jOyngCDstIjquLDtmZQsIOyVhOuLiOuptCDrsLHsl5Trk5zrp4wg7LSI6riw7ZmUXG4gIGFzeW5jIHN0YXJ0V29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuaW5pdGlhbGl6ZSgpO1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RhcnQoKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDspJHsp4BcbiAgYXN5bmMgc3RvcFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0b3AoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KSR7KeAXG4gIGFzeW5jIHN0b3BTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suc3RvcCgpKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KCV66asXG4gIGFzeW5jIGRlc3Ryb3lTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suZGVzdHJveSgpKSksXG4gICAgKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5jbGVhcigpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0b3BXb3JrZXIoKTtcbiAgICBhd2FpdCB0aGlzLmRlc3Ryb3lTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLnN0b3AoKTtcbiAgfVxuXG4gIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJnZXRMb2dnZXIiLCJCYWNrZW5kUG9zdGdyZXMiLCJPcGVuV29ya2Zsb3ciLCJhc3NlcnQiLCJzY2hlZHVsZSIsImNyb25TY2hlZHVsZSIsIlNvbmFtdSIsImNvbnZlcnREb21haW5Ub0NhdGVnb3J5IiwiTmFpdGUiLCJjcmVhdGVNb2NrU1NFRmFjdG9yeSIsIlN0ZXBXcmFwcGVyIiwiV29ya2Zsb3dNYW5hZ2VyIiwiZGJDb25mIiwicnVuTWlncmF0aW9ucyIsImJhY2tlbmQiLCJNYXAiLCJzeW5jaHJvbml6ZSIsIndvcmtmbG93TWFwIiwiUHJvbWlzZSIsImFsbFNldHRsZWQiLCJBcnJheSIsImZyb20iLCJlbnRyaWVzIiwiZmlsdGVyIiwia2V5IiwiaGFzIiwiZmxhdE1hcCIsIl8iLCJ3b3JrZmxvd3MiLCJtYXAiLCJ3b3JrZmxvdyIsInNjaGVkdWxlcyIsInVuc2NoZWR1bGVUYXNrIiwibmFtZSIsInVucmVnaXN0ZXJXb3JrZmxvdyIsInJlZ2lzdGVyV29ya2Zsb3ciLCJpZCIsInZlcnNpb24iLCJzY2hlbWEiLCJmdW5jdGlvbiIsImZuIiwic2NoZWR1bGVUYXNrIiwibmV3V29ya2Zsb3dzIiwicHJldmlvdXNXb3JrZmxvd3MiLCJnZXQiLCJwcmV2SXRlbSIsInNvbWUiLCJuZXdJdGVtIiwicnVuIiwib3B0aW9ucyIsImlucHV0IiwicnVuV29ya2Zsb3ciLCJ1bmRlZmluZWQiLCJ0YXNrIiwiZXhwcmVzc2lvbiIsImlucHV0RGF0YSIsInJlc29sdmUiLCJiaW5kIiwidGltZXpvbmUiLCJjb25maWciLCJhcGkiLCJub092ZXJsYXAiLCJzZXQiLCJpbnB1dEZuIiwid29ya2Zsb3dJZCIsInN0YXJ0IiwidGFza0l0ZW0iLCJjb25zb2xlIiwiZXJyb3IiLCJkZWxldGUiLCJzdG9wIiwiZGVzdHJveSIsInBhcmFtcyIsImJhc2VDb250ZXh0IiwicmVxdWVzdCIsInJlcGx5IiwiaGVhZGVycyIsImNyZWF0ZVNTRSIsIm5haXRlU3RvcmUiLCJjcmVhdGVTdG9yZSIsInVzZXIiLCJwYXNzcG9ydCIsImxvZ2luIiwibG9nb3V0IiwiY29udGV4dFByb3ZpZGVyIiwidGFza3MiLCJjb250ZXh0Iiwic3RlcCIsImFzeW5jTG9jYWxTdG9yYWdlIiwibG9nZ2VyIiwiZGVmaW5lV29ya2Zsb3ciLCJzZXR1cFdvcmtlciIsIm5ld1dvcmtlciIsInN0YXJ0V29ya2VyIiwiaW5pdGlhbGl6ZSIsInN0b3BXb3JrZXIiLCJzdG9wU2NoZWR1bGVzIiwidmFsdWVzIiwiZGVzdHJveVNjaGVkdWxlcyIsImNsZWFyIiwiU3ltYm9sIiwiYXN5bmNEaXNwb3NlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxTQUFTLFFBQXFCLG1CQUFtQjtBQUMxRCxTQUFTQyxlQUFlLEVBQUVDLFlBQVksUUFBcUIsb0JBQW9CO0FBVS9FLE9BQU9DLFlBQVksU0FBUztBQUU1QixTQUFTQyxZQUFZQyxZQUFZLFFBQTRCLFlBQVk7QUFHekUsU0FBU0MsTUFBTSxRQUFRLG1CQUFnQjtBQUN2QyxTQUFTQyx1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
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy93b3JrZmxvdy1tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciwgdHlwZSBMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgQmFja2VuZFBvc3RncmVzLCBPcGVuV29ya2Zsb3csIHR5cGUgV29ya2VyIH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIFJ1bm5hYmxlV29ya2Zsb3csXG4gIFNjaGVtYUlucHV0LFxuICBTY2hlbWFPdXRwdXQsXG4gIFN0YW5kYXJkU2NoZW1hVjEsXG4gIFN0ZXBBcGksXG4gIFdvcmtmbG93UnVuSGFuZGxlLFxuICBXb3JrZmxvd1NwZWMsXG59IGZyb20gXCJAc29uYW11LWtpdC90YXNrcy9pbnRlcm5hbFwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5pbXBvcnQgdHlwZSB7IEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgc2NoZWR1bGUgYXMgY3JvblNjaGVkdWxlLCB0eXBlIFNjaGVkdWxlZFRhc2sgfSBmcm9tIFwibm9kZS1jcm9uXCI7XG5pbXBvcnQgdHlwZSB7IFpvZE9iamVjdCB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tTU0VGYWN0b3J5IH0gZnJvbSBcIi4uL3N0cmVhbS9zc2VcIjtcbmltcG9ydCB0eXBlIHsgRXhlY3V0YWJsZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4vZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBTdGVwV3JhcHBlciB9IGZyb20gXCIuL3N0ZXAtd3JhcHBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIC8vIHdvcmtlcuyXkOyEnCDrj5nsi5wg7Iuk7ZaJ7ZWgIO2DnOyKpO2BrCDsiJgsIOq4sOuzuOydgCBDUFUg7L2U7Ja0IOyImCAtIDHqsJxcbiAgY29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLy8gd29ya2Vy7JeQ7IScIOyCrOyaqe2VoCBwdWIvc3ViIOyXrOu2gCwg6riw67O47J2AIHRydWVcbiAgdXNlUHViU3ViPzogYm9vbGVhbjtcblxuICAvLyBwdWIvc3Vi7Jy866GcIO2DnOyKpO2BrOulvCDsiJjsi6DtlojsnYQg65WMIOybjO2BrO2UjOuhnOyasCDsi6TtlonquYzsp4Ag7KeA7JewIOyLnOqwhCwg6riw67O47J2AIDUwMG1zXG4gIGxpc3RlbkRlbGF5PzogbnVtYmVyO1xufVxuXG4vLyBXb3JrZmxvdyDtlajsiJjsnZgg7YOA7J6FLCBAc29uYW11LWtpdC90YXNrc+yZgCDri6Trpbgg7KCQ7J2AIHN0ZXDsnYQg7ZWc67KIIOqwkOyLvCDtmJXtg5wuXG5leHBvcnQgdHlwZSBXb3JrZmxvd0Z1bmN0aW9uPElucHV0LCBPdXRwdXQ+ID0gKFxuICBwYXJhbXM6IFJlYWRvbmx5PHtcbiAgICBsb2dnZXI6IExvZ2dlcjtcbiAgICBpbnB1dDogSW5wdXQ7XG4gICAgc3RlcDogU3RlcFdyYXBwZXI7XG4gICAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgfT4sXG4pID0+IFByb21pc2U8T3V0cHV0PiB8IE91dHB1dDtcblxuLy8gV29ya2Zsb3frpbwg65Ox66Gd7ZWgIOuVjOulvCDsnITtlZwg7YOA7J6FXG5leHBvcnQgdHlwZSBXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8XG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPiA9IE9taXQ8XG4gIFdvcmtmbG93U3BlYzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4sXG4gIFwidmVyc2lvblwiXG4+ICYge1xuICBpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbjogV29ya2Zsb3dGdW5jdGlvbjxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQ+O1xufTtcblxuZXhwb3J0IGNsYXNzIFdvcmtmbG93TWFuYWdlciB7XG4gIC8vIGJhY2tlbmQg7J247Iqk7YS07IqkXG4gIHJlYWRvbmx5ICNiYWNrZW5kOiBCYWNrZW5kUG9zdGdyZXM7XG5cbiAgLy8gT3BlbldvcmtmbG93IOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjb3c6IE9wZW5Xb3JrZmxvdztcblxuICAvLyBXb3JrZXIg7J247Iqk7YS07IqkICjsl4bsnYQg7IiYIOyeiOycvOupsCwg7J20IOuVjOuKlCDrtoTsgrDrkJwg7ISc67KEIO2ZmOqyveyXkOyEnCBEQuyXkCBwdWJsaXNo66eMIO2VnOuLpOqzoCDqsIDsoJXtlagpXG4gICN3b3JrZXI6IFdvcmtlciB8IG51bGw7XG5cbiAgLy8g7YyM7J28IOqyveuhnCAtPiDtjIzsnbzsl5Ag7KCV7J2Y65CcIOybjO2BrO2UjOuhnOyasCDrqZTtg4DrjbDsnbTthLAg66qp66GdXG4gICN3b3JrZmxvd3NNYXA6IE1hcDxzdHJpbmcsIFdvcmtmbG93TWV0YWRhdGFbXT47XG5cbiAgLy8gVGFzayDsnbTrpoQgLT4gVGFzayDsoJXrs7Qg67CPIElucHV0IOqwkiwgV29ya2Zsb3cgSURcbiAgI3NjaGVkdWxlZFRhc2tzOiBNYXA8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIHRhc2s6IFNjaGVkdWxlZFRhc2s7XG4gICAgICBpbnB1dEZuOiBFeGVjdXRhYmxlPFNjaGVtYUlucHV0PHVua25vd24sIHVua25vd24+PjtcbiAgICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgICB9XG4gID47XG5cbiAgLy8gQmFja2VuZFBvc3RncmVz7JeQ7IScIOyymOumrO2VmOuKlCDqsoPrk6TsnbQg7J6I7Ja07IScIEtuZXgg7Luk64Sl7IWY7J20IOyVhOuLiOudvCDshKTsoJXqsJLsnYQg64Sj7Ja07KSY7JW87ZWoLlxuICBjb25zdHJ1Y3RvcihkYkNvbmY6IEtuZXguQ29uZmlnLCBydW5NaWdyYXRpb25zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGJhY2tlbmQgPSBuZXcgQmFja2VuZFBvc3RncmVzKGRiQ29uZiwgeyBydW5NaWdyYXRpb25zIH0pO1xuXG4gICAgdGhpcy4jYmFja2VuZCA9IGJhY2tlbmQ7XG4gICAgdGhpcy4jb3cgPSBuZXcgT3BlbldvcmtmbG93KHsgYmFja2VuZCB9KTtcbiAgICB0aGlzLiN3b3JrZXIgPSBudWxsO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg67CPIOybjO2BrO2UjOuhnOyasOyXkCDrjIDtlZwgc2NoZWR1bGVkIHRhc2tz66W8IOuPmeq4sO2ZlO2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIHN5bmNocm9uaXplKHdvcmtmbG93TWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+KSB7XG4gICAgLy8gMS4g7IKt7KCc65CcIO2MjOydvOydgCDsnbzqtIQg7IKt7KCcXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiN3b3JrZmxvd3NNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXdvcmtmbG93TWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgICAgICAgICAuLi53b3JrZmxvdy5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgIHRoaXMudW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93KSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICAvLyAyLiDsg4jroZwg7LaU6rCA65CcIO2MjOydvOydgCDsnbzqtIQg65Ox66GdXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh3b3JrZmxvd01hcC5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgIGlkOiB3b3JrZmxvdy5pZCxcbiAgICAgICAgICAgICAgbmFtZTogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICBzY2hlbWE6IHdvcmtmbG93LnNjaGVtYSxcbiAgICAgICAgICAgICAgZnVuY3Rpb246IHdvcmtmbG93LmZuLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgICAgICAgIG5ld0l0ZW0uc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMuc2NoZWR1bGVUYXNrKG5ld0l0ZW0sIHNjaGVkdWxlKSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgKTtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IHdvcmtmbG93TWFwO1xuICB9XG5cbiAgLy8g7JuM7YGs7ZSM66Gc7Jqw66W8IOyLpO2WiVxuICBydW48SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IE9taXQ8V29ya2Zsb3dDcmVhdGVPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LCBcImZ1bmN0aW9uXCIgfCBcInNjaGVtYVwiIHwgXCJpZFwiPixcbiAgICBpbnB1dDogU2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+LFxuICApOiBQcm9taXNlPFdvcmtmbG93UnVuSGFuZGxlPE91dHB1dD4+IHtcbiAgICByZXR1cm4gdGhpcy4jb3cucnVuV29ya2Zsb3coXG4gICAgICB7XG4gICAgICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uID8/IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBpbnB1dCxcbiAgICApO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr66W8IOuTseuhnVxuICBhc3luYyBzY2hlZHVsZVRhc2soXG4gICAgd29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJpZFwiIHwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgc2NoZWR1bGU6IFdvcmtmbG93TWV0YWRhdGFbXCJzY2hlZHVsZXNcIl1bbnVtYmVyXSxcbiAgKSB7XG4gICAgLy8gV29ya2Vy6rCAIO2ZnOyEse2ZlOuQnCDrhbjrk5zsl5DshJzrp4wg7LKY66asXG4gICAgaWYgKCF0aGlzLiN3b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrID0gY3JvblNjaGVkdWxlKFxuICAgICAgc2NoZWR1bGUuZXhwcmVzc2lvbixcbiAgICAgIChhc3luYyAoXG4gICAgICAgIHsgbmFtZSwgdmVyc2lvbiB9OiBQaWNrPFdvcmtmbG93TWV0YWRhdGEsIFwibmFtZVwiIHwgXCJ2ZXJzaW9uXCI+LFxuICAgICAgICB7IGlucHV0IH06IFdvcmtmbG93TWV0YWRhdGFbXCJzY2hlZHVsZXNcIl1bbnVtYmVyXSxcbiAgICAgICkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dERhdGEgPSBhd2FpdCAodHlwZW9mIGlucHV0ID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICA/IFByb21pc2UucmVzb2x2ZShpbnB1dCgpKVxuICAgICAgICAgIDogUHJvbWlzZS5yZXNvbHZlKGlucHV0KSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucnVuKHsgbmFtZSwgdmVyc2lvbjogdmVyc2lvbiA/PyBudWxsIH0sIGlucHV0RGF0YSk7XG4gICAgICB9KS5iaW5kKHRoaXMsIHdvcmtmbG93LCBzY2hlZHVsZSksXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHNjaGVkdWxlLm5hbWUsXG4gICAgICAgIHRpbWV6b25lOiBTb25hbXUuY29uZmlnLmFwaS50aW1lem9uZSxcbiAgICAgICAgbm9PdmVybGFwOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLnNldChzY2hlZHVsZS5uYW1lLCB7XG4gICAgICB0YXNrLFxuICAgICAgaW5wdXRGbjogc2NoZWR1bGUuaW5wdXQsXG4gICAgICB3b3JrZmxvd0lkOiB3b3JrZmxvdy5pZCxcbiAgICB9KTtcbiAgICBhd2FpdCB0YXNrLnN0YXJ0KCk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrpbwg7KSR7KeAXG4gIGFzeW5jIHVuc2NoZWR1bGVUYXNrKG5hbWU6IHN0cmluZykge1xuICAgIC8vIFdvcmtlcuqwgCDtmZzshLHtmZTrkJwg64W465Oc7JeQ7ISc66eMIOyymOumrFxuICAgIGlmICghdGhpcy4jd29ya2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFza0l0ZW0gPSB0aGlzLiNzY2hlZHVsZWRUYXNrcy5nZXQobmFtZSk7XG4gICAgaWYgKCF0YXNrSXRlbSkge1xuICAgICAgY29uc29sZS5lcnJvcihcInNjaGVkdWxlZCB0YXNrIG5vdCBmb3VuZFwiLCBuYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5kZWxldGUobmFtZSk7XG4gICAgYXdhaXQgdGFza0l0ZW0udGFzay5zdG9wKCk7XG4gICAgYXdhaXQgdGFza0l0ZW0udGFzay5kZXN0cm95KCk7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg65Ox66GdLCDqtIDroKjrkJwg7Iqk7LyA7KSE7J2AIOuzhOuPhOuhnCDrk7HroZ3tlbTslbwg7ZWoLlxuICByZWdpc3RlcldvcmtmbG93PElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgICBvcHRpb25zOiBXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sXG4gICk6IFJ1bm5hYmxlV29ya2Zsb3c8U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0LCBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4+IHtcbiAgICBjb25zdCBmbiA9IGFzeW5jIChcbiAgICAgIHBhcmFtczogUmVhZG9ubHk8e1xuICAgICAgICBpbnB1dDogU2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PjtcbiAgICAgICAgc3RlcDogU3RlcEFwaTtcbiAgICAgICAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgICAgIH0+LFxuICAgICkgPT4ge1xuICAgICAgY29uc3QgYmFzZUNvbnRleHQgPSB7XG4gICAgICAgIHJlcXVlc3Q6IG51bGwsXG4gICAgICAgIHJlcGx5OiBudWxsLFxuICAgICAgICBoZWFkZXJzOiB7fSxcbiAgICAgICAgY3JlYXRlU1NFOiAoc2NoZW1hOiBab2RPYmplY3QpID0+IGNyZWF0ZU1vY2tTU0VGYWN0b3J5KHNjaGVtYSksXG4gICAgICAgIG5haXRlU3RvcmU6IE5haXRlLmNyZWF0ZVN0b3JlKCksXG4gICAgICAgIHVzZXI6IG51bGwsXG4gICAgICAgIHBhc3Nwb3J0OiB7XG4gICAgICAgICAgbG9naW46IGFzeW5jICgpID0+IHt9LFxuICAgICAgICAgIGxvZ291dDogKCkgPT4ge30sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgQ29udGV4dDtcblxuICAgICAgY29uc3QgY29udGV4dFByb3ZpZGVyID0gU29uYW11LmNvbmZpZy50YXNrcz8uY29udGV4dFByb3ZpZGVyO1xuICAgICAgY29uc3QgY29udGV4dDogQ29udGV4dCA9IGNvbnRleHRQcm92aWRlclxuICAgICAgICA/IGF3YWl0IFByb21pc2UucmVzb2x2ZShjb250ZXh0UHJvdmlkZXIoYmFzZUNvbnRleHQpKVxuICAgICAgICA6IGJhc2VDb250ZXh0O1xuXG4gICAgICBjb25zdCBzdGVwID0gbmV3IFN0ZXBXcmFwcGVyKHBhcmFtcy5zdGVwKTtcbiAgICAgIHJldHVybiBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVuKHsgY29udGV4dCB9LCAoKSA9PlxuICAgICAgICBvcHRpb25zLmZ1bmN0aW9uKHtcbiAgICAgICAgICBpbnB1dDogcGFyYW1zLmlucHV0LFxuICAgICAgICAgIHN0ZXAsXG4gICAgICAgICAgdmVyc2lvbjogcGFyYW1zLnZlcnNpb24sXG4gICAgICAgICAgbG9nZ2VyOiBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkob3B0aW9ucy5uYW1lLCBcIndvcmtmbG93XCIpKSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuI293LmRlZmluZVdvcmtmbG93KFxuICAgICAge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogb3B0aW9ucy5zY2hlbWEsXG4gICAgICB9LFxuICAgICAgZm4sXG4gICAgKTtcbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg65Ox66GdIO2VtOygnCwg6rSA66Co65CcIOyKpOy8gOykhOydgCDrs4Trj4TroZwg7ZW07KCc7ZW07JW8IO2VqC5cbiAgYXN5bmMgdW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93OiBQaWNrPFdvcmtmbG93TWV0YWRhdGEsIFwibmFtZVwiIHwgXCJ2ZXJzaW9uXCIgfCBcImlkXCI+KSB7XG4gICAgdGhpcy4jb3cudW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93Lm5hbWUsIHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCk7XG4gIH1cblxuICAvLyBXb3JrZXLrpbwg7ISk7KCVIO2bhCDsi5zsnpFcbiAgc2V0dXBXb3JrZXIob3B0aW9uczogV29ya2Zsb3dPcHRpb25zKSB7XG4gICAgdGhpcy4jd29ya2VyID0gdGhpcy4jb3cubmV3V29ya2VyKG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gV29ya2Vy6rCAIOyeiOycvOuptCBXb3JrZXLquYzsp4Ag7LSI6riw7ZmULCDslYTri4jrqbQg67Cx7JeU65Oc66eMIOy0iOq4sO2ZlFxuICBhc3luYyBzdGFydFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLmluaXRpYWxpemUoKTtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0YXJ0KCk7XG4gIH1cblxuICAvLyBXb3JrZXLrpbwg7KSR7KeAXG4gIGFzeW5jIHN0b3BXb3JrZXIoKSB7XG4gICAgYXdhaXQgdGhpcy4jd29ya2VyPy5zdG9wKCk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrk6TsnYQg66qo65GQIOykkeyngFxuICBhc3luYyBzdG9wU2NoZWR1bGVzKCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jc2NoZWR1bGVkVGFza3MudmFsdWVzKCkpLm1hcCgoeyB0YXNrIH0pID0+IFByb21pc2UucmVzb2x2ZSh0YXNrLnN0b3AoKSkpLFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrk6TsnYQg66qo65GQIOygleumrFxuICBhc3luYyBkZXN0cm95U2NoZWR1bGVzKCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jc2NoZWR1bGVkVGFza3MudmFsdWVzKCkpLm1hcCgoeyB0YXNrIH0pID0+IFByb21pc2UucmVzb2x2ZSh0YXNrLmRlc3Ryb3koKSkpLFxuICAgICk7XG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3MuY2xlYXIoKTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKSB7XG4gICAgYXdhaXQgdGhpcy5zdG9wU2NoZWR1bGVzKCk7XG4gICAgYXdhaXQgdGhpcy5zdG9wV29ya2VyKCk7XG4gICAgYXdhaXQgdGhpcy5kZXN0cm95U2NoZWR1bGVzKCk7XG4gICAgYXdhaXQgdGhpcy4jYmFja2VuZC5zdG9wKCk7XG4gIH1cblxuICBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVzdHJveSgpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0TG9nZ2VyIiwiQmFja2VuZFBvc3RncmVzIiwiT3BlbldvcmtmbG93IiwiYXNzZXJ0Iiwic2NoZWR1bGUiLCJjcm9uU2NoZWR1bGUiLCJTb25hbXUiLCJjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSIsIk5haXRlIiwiY3JlYXRlTW9ja1NTRUZhY3RvcnkiLCJTdGVwV3JhcHBlciIsIldvcmtmbG93TWFuYWdlciIsImRiQ29uZiIsInJ1bk1pZ3JhdGlvbnMiLCJiYWNrZW5kIiwiTWFwIiwic3luY2hyb25pemUiLCJ3b3JrZmxvd01hcCIsIlByb21pc2UiLCJhbGxTZXR0bGVkIiwiQXJyYXkiLCJmcm9tIiwiZW50cmllcyIsImZpbHRlciIsImtleSIsImhhcyIsImZsYXRNYXAiLCJfIiwid29ya2Zsb3dzIiwibWFwIiwid29ya2Zsb3ciLCJzY2hlZHVsZXMiLCJ1bnNjaGVkdWxlVGFzayIsIm5hbWUiLCJ1bnJlZ2lzdGVyV29ya2Zsb3ciLCJyZWdpc3RlcldvcmtmbG93IiwiaWQiLCJ2ZXJzaW9uIiwic2NoZW1hIiwiZnVuY3Rpb24iLCJmbiIsInNjaGVkdWxlVGFzayIsIm5ld1dvcmtmbG93cyIsInByZXZpb3VzV29ya2Zsb3dzIiwiZ2V0IiwicHJldkl0ZW0iLCJzb21lIiwibmV3SXRlbSIsInJ1biIsIm9wdGlvbnMiLCJpbnB1dCIsInJ1bldvcmtmbG93IiwidW5kZWZpbmVkIiwidGFzayIsImV4cHJlc3Npb24iLCJpbnB1dERhdGEiLCJyZXNvbHZlIiwiYmluZCIsInRpbWV6b25lIiwiY29uZmlnIiwiYXBpIiwibm9PdmVybGFwIiwic2V0IiwiaW5wdXRGbiIsIndvcmtmbG93SWQiLCJzdGFydCIsInRhc2tJdGVtIiwiY29uc29sZSIsImVycm9yIiwiZGVsZXRlIiwic3RvcCIsImRlc3Ryb3kiLCJwYXJhbXMiLCJiYXNlQ29udGV4dCIsInJlcXVlc3QiLCJyZXBseSIsImhlYWRlcnMiLCJjcmVhdGVTU0UiLCJuYWl0ZVN0b3JlIiwiY3JlYXRlU3RvcmUiLCJ1c2VyIiwicGFzc3BvcnQiLCJsb2dpbiIsImxvZ291dCIsImNvbnRleHRQcm92aWRlciIsInRhc2tzIiwiY29udGV4dCIsInN0ZXAiLCJhc3luY0xvY2FsU3RvcmFnZSIsImxvZ2dlciIsImRlZmluZVdvcmtmbG93Iiwic2V0dXBXb3JrZXIiLCJuZXdXb3JrZXIiLCJzdGFydFdvcmtlciIsImluaXRpYWxpemUiLCJzdG9wV29ya2VyIiwic3RvcFNjaGVkdWxlcyIsInZhbHVlcyIsImRlc3Ryb3lTY2hlZHVsZXMiLCJjbGVh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
@@ -1 +1 @@
1
- {"version":3,"file":"generated_http.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_http.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,QAAQ;;IAKpD,gBAAgB;;;;IASV,MAAM;;;;;;IA8CZ,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAgEvE,gBAAgB,CACd,GAAG,EAAE,WAAW,EAEhB,UAAU,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;KAAE,GACnD;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;CAY9B"}
1
+ {"version":3,"file":"generated_http.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_http.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,QAAQ;;IAKpD,gBAAgB;;;;IASV,MAAM;;;;;;IA8CZ,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAiEvE,gBAAgB,CACd,GAAG,EAAE,WAAW,EAEhB,UAAU,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;KAAE,GACnD;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE;CAY9B"}
@@ -63,7 +63,8 @@ export class Template__generated_http extends Template {
63
63
  return [
64
64
  this.zodTypeToReqDefault(zodType.element, name)
65
65
  ];
66
- } else if (zodType instanceof z.ZodString) {
66
+ } else if (zodType instanceof z.core.$ZodString) {
67
+ // NOTE: z.ZodString으로 비교하면 z.url(), z.email() 등의 타입에서 문제가 생기므로 z.core.$ZodString으로 비교함
67
68
  if (name.endsWith("_at") || name.endsWith("_date") || name === "range") {
68
69
  return "2000-01-01";
69
70
  } else {
@@ -128,4 +129,4 @@ export class Template__generated_http extends Template {
128
129
  }
129
130
  }
130
131
 
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHFzIGZyb20gXCJxc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdldFpvZE9iamVjdEZyb21BcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkX2h0dHBcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLmh0dHBgLFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc3luY2VyOiB7IHR5cGVzLCBhcGlzIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXBpOiB7XG4gICAgICAgICAgcm91dGU6IHsgcHJlZml4IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gPSBTb25hbXU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBpcy5tYXAoYXN5bmMgKGFwaSkgPT4ge1xuICAgICAgICBjb25zdCByZXFPYmplY3QgPSB0aGlzLnJlc29sdmVBcGlQYXJhbXMoYXBpLCB0eXBlcyk7XG5cbiAgICAgICAgY29uc3QgZGF0YUxpbmVzID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIikgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiBbcXMuc3RyaW5naWZ5KHJlcU9iamVjdCwgeyBlbmNvZGU6IGZhbHNlIH0pLnNwbGl0KFwiJlwiKS5qb2luKFwiXFxuXFx0JlwiKV0sXG4gICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcXVlcnlzdHJpbmc6IFtdLFxuICAgICAgICAgICAgICBib2R5OiBbXCJcIiwgSlNPTi5zdHJpbmdpZnkocmVxT2JqZWN0LCBudWxsLCAyKV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGAke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIn0ge3tiYXNlVXJsfX0ke3ByZWZpeH0ke2FwaS5wYXRofWAsXG4gICAgICAgICAgICAuLi5kYXRhTGluZXMucXVlcnlzdHJpbmcsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXFx0P1wiKSxcbiAgICAgICAgICBgQ29udGVudC1UeXBlOiAke2FwaS5vcHRpb25zLmNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWAsXG4gICAgICAgICAgLi4uZGF0YUxpbmVzLmJvZHksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIHpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZTogei5ab2RUeXBlPHVua25vd24+LCBuYW1lOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kT2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3Qua2V5cyh6b2RUeXBlLnNoYXBlKS5tYXAoKGtleSkgPT4gW1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZS5zaGFwZVtrZXldLCBrZXkpLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkge1xuICAgICAgcmV0dXJuIFt0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RBcnJheTx6LlpvZFR5cGU+KS5lbGVtZW50LCBuYW1lKV07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RTdHJpbmcpIHtcbiAgICAgIGlmIChuYW1lLmVuZHNXaXRoKFwiX2F0XCIpIHx8IG5hbWUuZW5kc1dpdGgoXCJfZGF0ZVwiKSB8fCBuYW1lID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bWJlcikge1xuICAgICAgaWYgKG5hbWUgPT09IFwibnVtXCIpIHtcbiAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW5WYWx1ZSA9IHpvZFR5cGUubWluVmFsdWUgPz8gMDtcbiAgICAgIHJldHVybiBtaW5WYWx1ZSA+IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSID8gbWluVmFsdWUgOiAwO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQm9vbGVhbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUub3B0aW9uc1swXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kT3B0aW9uYWw8ei5ab2RUeXBlPikuZGVmLmlubmVyVHlwZSwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdWxsYWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RVbmlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCgoem9kVHlwZSBhcyB6LlpvZFVuaW9uPHouWm9kVHlwZVtdPikuZGVmLm9wdGlvbnNbMF0sIG5hbWUpO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVW5rbm93bikge1xuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVHVwbGUpIHtcbiAgICAgIC8qKiBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFpvZFR1cGxlIO2DgOyehSDsgqzsmqkgKi9cbiAgICAgIHJldHVybiB6b2RUeXBlLmRlZi5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGl0ZW0sIG5hbWUpKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZERhdGUpIHtcbiAgICAgIHJldHVybiBcIjIwMDAtMDEtMDFcIjtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZExpdGVyYWwpIHtcbiAgICAgIHJldHVybiB6b2RUeXBlLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kUmVjb3JkIHx8IHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE1hcCkge1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBab2RSZWNvcmQg7YOA7J6FIOyCrOyaqVxuICAgICAgY29uc3Qga3ZEZWYgPSAoem9kVHlwZSBhcyB6LlpvZFJlY29yZDxhbnksIHouWm9kVHlwZT4gfCB6LlpvZE1hcDx6LlpvZFR5cGUsIHouWm9kVHlwZT4pLmRlZjtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogWm9kSW50ZXJzZWN0aW9uIO2DgOyehSDsgqzsmqlcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChrdkRlZi5rZXlUeXBlLCBuYW1lKSBhcyBhbnk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChrdkRlZi52YWx1ZVR5cGUsIG5hbWUpO1xuICAgICAgcmV0dXJuIHsgW2tleV06IHZhbHVlIH07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RTZXQpIHtcbiAgICAgIHJldHVybiBbdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kU2V0PHouWm9kVHlwZT4pLmRlZi52YWx1ZVR5cGUsIG5hbWUpXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEludGVyc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChcbiAgICAgICAgKHpvZFR5cGUgYXMgei5ab2RJbnRlcnNlY3Rpb248ei5ab2RUeXBlLCB6LlpvZFR5cGU+KS5kZWYucmlnaHQsXG4gICAgICAgIG5hbWUsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGVmYXVsdCkge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdCgoem9kVHlwZSBhcyB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPikuZGVmLmlubmVyVHlwZSwgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHpvZFR5cGUpO1xuICAgICAgcmV0dXJuIGB1bmtub3duLSR7em9kVHlwZS50eXBlfWA7XG4gICAgfVxuICB9XG5cbiAgcmVzb2x2ZUFwaVBhcmFtcyhcbiAgICBhcGk6IEV4dGVuZGVkQXBpLFxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogWm9kT2JqZWN0IO2DgOyehSDsgqzsmqlcbiAgICByZWZlcmVuY2VzOiB7IFt0eXBlTmFtZTogc3RyaW5nXTogei5ab2RPYmplY3Q8YW55PiB9LFxuICApOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB7XG4gICAgY29uc3QgcmVxVHlwZSA9IGdldFpvZE9iamVjdEZyb21BcGkoYXBpLCByZWZlcmVuY2VzKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVmID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KHJlcVR5cGUsIFwidW5rbm93bk5hbWVcIikgYXMge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBkZWY7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHpvZCB0eXBlIGRldGVjdGVkIG9uICR7YXBpLm1vZGVsTmFtZX06JHthcGkubWV0aG9kTmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJxcyIsInoiLCJnZXRab2RPYmplY3RGcm9tQXBpIiwiU29uYW11IiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAiLCJnZXRUYXJnZXRBbmRQYXRoIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsInJlbmRlciIsInN5bmNlciIsInR5cGVzIiwiYXBpcyIsInJvdXRlIiwicHJlZml4IiwibGluZXMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwicmVxT2JqZWN0IiwicmVzb2x2ZUFwaVBhcmFtcyIsImRhdGFMaW5lcyIsIm9wdGlvbnMiLCJodHRwTWV0aG9kIiwicXVlcnlzdHJpbmciLCJzdHJpbmdpZnkiLCJlbmNvZGUiLCJzcGxpdCIsImpvaW4iLCJib2R5IiwiSlNPTiIsImNvbnRlbnRUeXBlIiwiaW1wb3J0S2V5cyIsInpvZFR5cGVUb1JlcURlZmF1bHQiLCJ6b2RUeXBlIiwibmFtZSIsIlpvZE9iamVjdCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwia2V5cyIsInNoYXBlIiwia2V5IiwiWm9kQXJyYXkiLCJlbGVtZW50IiwiWm9kU3RyaW5nIiwiZW5kc1dpdGgiLCJ0b1VwcGVyQ2FzZSIsIlpvZE51bWJlciIsIm1pblZhbHVlIiwiTnVtYmVyIiwiTUlOX1NBRkVfSU5URUdFUiIsIlpvZEJvb2xlYW4iLCJab2RFbnVtIiwiWm9kT3B0aW9uYWwiLCJkZWYiLCJpbm5lclR5cGUiLCJab2ROdWxsYWJsZSIsIlpvZFVuaW9uIiwiWm9kVW5rbm93biIsIlpvZFR1cGxlIiwiaXRlbXMiLCJpdGVtIiwiWm9kRGF0ZSIsIlpvZExpdGVyYWwiLCJ2YWx1ZSIsIlpvZFJlY29yZCIsIlpvZE1hcCIsImt2RGVmIiwia2V5VHlwZSIsInZhbHVlVHlwZSIsIlpvZFNldCIsIlpvZEludGVyc2VjdGlvbiIsInJpZ2h0IiwiWm9kRGVmYXVsdCIsInR5cGUiLCJyZWZlcmVuY2VzIiwicmVxVHlwZSIsImVycm9yIiwiY29uc29sZSIsIkVycm9yIiwibW9kZWxOYW1lIiwibWV0aG9kTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsUUFBUSxLQUFLO0FBQ3BCLFNBQVNDLENBQUMsUUFBUSxNQUFNO0FBQ3hCLFNBQVNDLG1CQUFtQixRQUFRLCtCQUE0QjtBQUVoRSxTQUFTQyxNQUFNLFFBQVEsc0JBQW1CO0FBQzFDLFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUV2QyxPQUFPLE1BQU1DLGlDQUFpQ0Q7SUFDNUMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFFLG1CQUFtQjtRQUNqQixNQUFNLEVBQUVDLEdBQUcsRUFBRSxHQUFHSixPQUFPSyxNQUFNLENBQUNDLEdBQUc7UUFFakMsT0FBTztZQUNMQyxRQUFRLEdBQUdILElBQUksZ0JBQWdCLENBQUM7WUFDaENJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMvQjtJQUNGO0lBRUEsTUFBTUMsU0FBUztRQUNiLE1BQU0sRUFDSkMsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxFQUN2QlAsUUFBUSxFQUNOQyxLQUFLLEVBQ0hPLE9BQU8sRUFBRUMsTUFBTSxFQUFFLEVBQ2xCLEVBQ0YsRUFDRixHQUFHZDtRQUVKLE1BQU1lLFFBQVEsTUFBTUMsUUFBUUMsR0FBRyxDQUM3QkwsS0FBS00sR0FBRyxDQUFDLE9BQU9aO1lBQ2QsTUFBTWEsWUFBWSxJQUFJLENBQUNDLGdCQUFnQixDQUFDZCxLQUFLSztZQUU3QyxNQUFNVSxZQUFZLE1BQU0sQUFBQyxDQUFBO2dCQUN2QixJQUFJLEFBQUNmLENBQUFBLElBQUlnQixPQUFPLENBQUNDLFVBQVUsSUFBSSxLQUFJLE1BQU8sT0FBTztvQkFDL0MsT0FBTzt3QkFDTEMsYUFBYTs0QkFBQzNCLEdBQUc0QixTQUFTLENBQUNOLFdBQVc7Z0NBQUVPLFFBQVE7NEJBQU0sR0FBR0MsS0FBSyxDQUFDLEtBQUtDLElB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
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHFzIGZyb20gXCJxc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IGdldFpvZE9iamVjdEZyb21BcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkX2h0dHBcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLmh0dHBgLFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgc3luY2VyOiB7IHR5cGVzLCBhcGlzIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXBpOiB7XG4gICAgICAgICAgcm91dGU6IHsgcHJlZml4IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gPSBTb25hbXU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBpcy5tYXAoYXN5bmMgKGFwaSkgPT4ge1xuICAgICAgICBjb25zdCByZXFPYmplY3QgPSB0aGlzLnJlc29sdmVBcGlQYXJhbXMoYXBpLCB0eXBlcyk7XG5cbiAgICAgICAgY29uc3QgZGF0YUxpbmVzID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIikgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiBbcXMuc3RyaW5naWZ5KHJlcU9iamVjdCwgeyBlbmNvZGU6IGZhbHNlIH0pLnNwbGl0KFwiJlwiKS5qb2luKFwiXFxuXFx0JlwiKV0sXG4gICAgICAgICAgICAgIGJvZHk6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgcXVlcnlzdHJpbmc6IFtdLFxuICAgICAgICAgICAgICBib2R5OiBbXCJcIiwgSlNPTi5zdHJpbmdpZnkocmVxT2JqZWN0LCBudWxsLCAyKV0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSkoKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIFtcbiAgICAgICAgICAgIGAke2FwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIn0ge3tiYXNlVXJsfX0ke3ByZWZpeH0ke2FwaS5wYXRofWAsXG4gICAgICAgICAgICAuLi5kYXRhTGluZXMucXVlcnlzdHJpbmcsXG4gICAgICAgICAgXS5qb2luKFwiXFxuXFx0P1wiKSxcbiAgICAgICAgICBgQ29udGVudC1UeXBlOiAke2FwaS5vcHRpb25zLmNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwifWAsXG4gICAgICAgICAgLi4uZGF0YUxpbmVzLmJvZHksXG4gICAgICAgIF0uam9pbihcIlxcblwiKTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIHpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZTogei5ab2RUeXBlPHVua25vd24+LCBuYW1lOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kT2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3Qua2V5cyh6b2RUeXBlLnNoYXBlKS5tYXAoKGtleSkgPT4gW1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZS5zaGFwZVtrZXldLCBrZXkpLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RBcnJheSkge1xuICAgICAgcmV0dXJuIFt0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RBcnJheTx6LlpvZFR5cGU+KS5lbGVtZW50LCBuYW1lKV07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5jb3JlLiRab2RTdHJpbmcpIHtcbiAgICAgIC8vIE5PVEU6IHouWm9kU3RyaW5n7Jy866GcIOu5hOq1kO2VmOuptCB6LnVybCgpLCB6LmVtYWlsKCkg65Ox7J2YIO2DgOyeheyXkOyEnCDrrLjsoJzqsIAg7IOd6riw66+A66GcIHouY29yZS4kWm9kU3RyaW5n7Jy866GcIOu5hOq1kO2VqFxuICAgICAgaWYgKG5hbWUuZW5kc1dpdGgoXCJfYXRcIikgfHwgbmFtZS5lbmRzV2l0aChcIl9kYXRlXCIpIHx8IG5hbWUgPT09IFwicmFuZ2VcIikge1xuICAgICAgICByZXR1cm4gXCIyMDAwLTAxLTAxXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTnVtYmVyKSB7XG4gICAgICBpZiAobmFtZSA9PT0gXCJudW1cIikge1xuICAgICAgICByZXR1cm4gMjQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pblZhbHVlID0gem9kVHlwZS5taW5WYWx1ZSA/PyAwO1xuICAgICAgcmV0dXJuIG1pblZhbHVlID4gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIgPyBtaW5WYWx1ZSA6IDA7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RCb29sZWFuKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RFbnVtKSB7XG4gICAgICByZXR1cm4gem9kVHlwZS5vcHRpb25zWzBdO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kT3B0aW9uYWwpIHtcbiAgICAgIHJldHVybiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RPcHRpb25hbDx6LlpvZFR5cGU+KS5kZWYuaW5uZXJUeXBlLCBuYW1lKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bGxhYmxlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFVuaW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kVW5pb248ei5ab2RUeXBlW10+KS5kZWYub3B0aW9uc1swXSwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RVbmtub3duKSB7XG4gICAgICByZXR1cm4gXCJ1bmtub3duXCI7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RUdXBsZSkge1xuICAgICAgLyoqIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogWm9kVHVwbGUg7YOA7J6FIOyCrOyaqSAqL1xuICAgICAgcmV0dXJuIHpvZFR5cGUuZGVmLml0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoaXRlbSwgbmFtZSkpO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSkge1xuICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTGl0ZXJhbCkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUudmFsdWU7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RSZWNvcmQgfHwgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTWFwKSB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFpvZFJlY29yZCDtg4DsnoUg7IKs7JqpXG4gICAgICBjb25zdCBrdkRlZiA9ICh6b2RUeXBlIGFzIHouWm9kUmVjb3JkPGFueSwgei5ab2RUeXBlPiB8IHouWm9kTWFwPHouWm9kVHlwZSwgei5ab2RUeXBlPikuZGVmO1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBab2RJbnRlcnNlY3Rpb24g7YOA7J6FIOyCrOyaqVxuICAgICAgY29uc3Qga2V5ID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGt2RGVmLmtleVR5cGUsIG5hbWUpIGFzIGFueTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGt2RGVmLnZhbHVlVHlwZSwgbmFtZSk7XG4gICAgICByZXR1cm4geyBba2V5XTogdmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFNldCkge1xuICAgICAgcmV0dXJuIFt0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoKHpvZFR5cGUgYXMgei5ab2RTZXQ8ei5ab2RUeXBlPikuZGVmLnZhbHVlVHlwZSwgbmFtZSldO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kSW50ZXJzZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAoem9kVHlwZSBhcyB6LlpvZEludGVyc2VjdGlvbjx6LlpvZFR5cGUsIHouWm9kVHlwZT4pLmRlZi5yaWdodCxcbiAgICAgICAgbmFtZSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KCh6b2RUeXBlIGFzIHouWm9kRGVmYXVsdDx6LlpvZFR5cGU+KS5kZWYuaW5uZXJUeXBlLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coem9kVHlwZSk7XG4gICAgICByZXR1cm4gYHVua25vd24tJHt6b2RUeXBlLnR5cGV9YDtcbiAgICB9XG4gIH1cblxuICByZXNvbHZlQXBpUGFyYW1zKFxuICAgIGFwaTogRXh0ZW5kZWRBcGksXG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBab2RPYmplY3Qg7YOA7J6FIOyCrOyaqVxuICAgIHJlZmVyZW5jZXM6IHsgW3R5cGVOYW1lOiBzdHJpbmddOiB6LlpvZE9iamVjdDxhbnk+IH0sXG4gICk6IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9IHtcbiAgICBjb25zdCByZXFUeXBlID0gZ2V0Wm9kT2JqZWN0RnJvbUFwaShhcGksIHJlZmVyZW5jZXMpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWYgPSB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQocmVxVHlwZSwgXCJ1bmtub3duTmFtZVwiKSBhcyB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICB9O1xuICAgICAgcmV0dXJuIGRlZjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgem9kIHR5cGUgZGV0ZWN0ZWQgb24gJHthcGkubW9kZWxOYW1lfToke2FwaS5tZXRob2ROYW1lfWApO1xuICAgIH1cbiAgfVxufVxuIl0sIm5hbWVzIjpbInFzIiwieiIsImdldFpvZE9iamVjdEZyb21BcGkiLCJTb25hbXUiLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX19nZW5lcmF0ZWRfaHR0cCIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwic3luY2VyIiwidHlwZXMiLCJhcGlzIiwicm91dGUiLCJwcmVmaXgiLCJsaW5lcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJyZXFPYmplY3QiLCJyZXNvbHZlQXBpUGFyYW1zIiwiZGF0YUxpbmVzIiwib3B0aW9ucyIsImh0dHBNZXRob2QiLCJxdWVyeXN0cmluZyIsInN0cmluZ2lmeSIsImVuY29kZSIsInNwbGl0Iiwiam9pbiIsImJvZHkiLCJKU09OIiwiY29udGVudFR5cGUiLCJpbXBvcnRLZXlzIiwiem9kVHlwZVRvUmVxRGVmYXVsdCIsInpvZFR5cGUiLCJuYW1lIiwiWm9kT2JqZWN0IiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJrZXlzIiwic2hhcGUiLCJrZXkiLCJab2RBcnJheSIsImVsZW1lbnQiLCJjb3JlIiwiJFpvZFN0cmluZyIsImVuZHNXaXRoIiwidG9VcHBlckNhc2UiLCJab2ROdW1iZXIiLCJtaW5WYWx1ZSIsIk51bWJlciIsIk1JTl9TQUZFX0lOVEVHRVIiLCJab2RCb29sZWFuIiwiWm9kRW51bSIsIlpvZE9wdGlvbmFsIiwiZGVmIiwiaW5uZXJUeXBlIiwiWm9kTnVsbGFibGUiLCJab2RVbmlvbiIsIlpvZFVua25vd24iLCJab2RUdXBsZSIsIml0ZW1zIiwiaXRlbSIsIlpvZERhdGUiLCJab2RMaXRlcmFsIiwidmFsdWUiLCJab2RSZWNvcmQiLCJab2RNYXAiLCJrdkRlZiIsImtleVR5cGUiLCJ2YWx1ZVR5cGUiLCJab2RTZXQiLCJab2RJbnRlcnNlY3Rpb24iLCJyaWdodCIsIlpvZERlZmF1bHQiLCJ0eXBlIiwicmVmZXJlbmNlcyIsInJlcVR5cGUiLCJlcnJvciIsImNvbnNvbGUiLCJFcnJvciIsIm1vZGVsTmFtZSIsIm1ldGhvZE5hbWUiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFFBQVEsS0FBSztBQUNwQixTQUFTQyxDQUFDLFFBQVEsTUFBTTtBQUN4QixTQUFTQyxtQkFBbUIsUUFBUSwrQkFBNEI7QUFFaEUsU0FBU0MsTUFBTSxRQUFRLHNCQUFtQjtBQUMxQyxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFFdkMsT0FBTyxNQUFNQyxpQ0FBaUNEO0lBQzVDLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxtQkFBbUI7UUFDakIsTUFBTSxFQUFFQyxHQUFHLEVBQUUsR0FBR0osT0FBT0ssTUFBTSxDQUFDQyxHQUFHO1FBRWpDLE9BQU87WUFDTEMsUUFBUSxHQUFHSCxJQUFJLGdCQUFnQixDQUFDO1lBQ2hDSSxNQUFNLENBQUMscUJBQXFCLENBQUM7UUFDL0I7SUFDRjtJQUVBLE1BQU1DLFNBQVM7UUFDYixNQUFNLEVBQ0pDLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUUsRUFDdkJQLFFBQVEsRUFDTkMsS0FBSyxFQUNITyxPQUFPLEVBQUVDLE1BQU0sRUFBRSxFQUNsQixFQUNGLEVBQ0YsR0FBR2Q7UUFFSixNQUFNZSxRQUFRLE1BQU1DLFFBQVFDLEdBQUcsQ0FDN0JMLEtBQUtNLEdBQUcsQ0FBQyxPQUFPWjtZQUNkLE1BQU1hLFlBQVksSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQ2QsS0FBS0s7WUFFN0MsTUFBTVUsWUFBWSxNQUFNLEFBQUMsQ0FBQTtnQkFDdkIs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
@@ -1 +1 @@
1
- {"version":3,"file":"queries.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/queries.template.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB;;;;IAQhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC;;;;;;;CAwFtC"}
1
+ {"version":3,"file":"queries.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/queries.template.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB;;;;IAQhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC;;;;;;;CAmGtC"}
@@ -60,11 +60,15 @@ ${functions.join("\n\n")}
60
60
  }
61
61
  `.trim());
62
62
  }
63
+ // tanstack-query API가 없으면 헬퍼 함수와 import를 포함하지 않습니다.
64
+ // 새 프로젝트에서 첫 빌드 시 sync가 아직 안 되어 namespace가 비어있을 수 있고,
65
+ // 이때 createSSRQuery가 unused로 빌드 에러가 발생하는 것을 방지합니다.
66
+ const hasQueries = namespaces.length > 0;
63
67
  return {
64
68
  ...this.getTargetAndPath(),
65
69
  body: namespaces.join("\n\n"),
66
70
  importKeys: diff(unique(importKeys), typeParamNames),
67
- customHeaders: [
71
+ customHeaders: hasQueries ? [
68
72
  "/** biome-ignore-all lint: generated는 무시 */",
69
73
  "/** biome-ignore-all assist: generated는 무시 */",
70
74
  "",
@@ -75,9 +79,13 @@ ${functions.join("\n\n")}
75
79
  ` return { modelName, methodName, params, serviceKey, __brand: 'SSRQuery' } as SSRQuery;`,
76
80
  `}`,
77
81
  ""
82
+ ] : [
83
+ "/** biome-ignore-all lint: generated는 무시 */",
84
+ "/** biome-ignore-all assist: generated는 무시 */",
85
+ ""
78
86
  ]
79
87
  };
80
88
  }
81
89
  }
82
90
 
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvcXVlcmllcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgZGlmZiwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IGFwaVBhcmFtVG9Uc0NvZGUsIGFwaVBhcmFtVHlwZVRvVHNUeXBlIH0gZnJvbSBcIi4uLy4uL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3F1ZXJpZXMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwicXVlcmllc1wiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgoKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBxdWVyaWVzLmdlbmVyYXRlZC50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7fTogVGVtcGxhdGVPcHRpb25zW1wicXVlcmllc1wiXSkge1xuICAgIGNvbnN0IHsgYXBpcyB9ID0gU29uYW11LnN5bmNlcjtcblxuICAgIC8vIHRhbnN0YWNrLXF1ZXJ566W8IO2PrO2VqO2VnCBBUEnrp4wg7ZWE7YSw66eBXG4gICAgY29uc3QgcXVlcnlBcGlzID0gYXBpcy5maWx0ZXIoKGFwaSkgPT4gYXBpLm9wdGlvbnMuY2xpZW50cz8uaW5jbHVkZXMoXCJ0YW5zdGFjay1xdWVyeVwiKSk7XG5cbiAgICAvLyDrqqjrjbjrs4TroZwg6re466O57ZmUXG4gICAgY29uc3QgYXBpc0J5TW9kZWwgPSBuZXcgTWFwPHN0cmluZywgRXh0ZW5kZWRBcGlbXT4oKTtcbiAgICBmb3IgKGNvbnN0IGFwaSBvZiBxdWVyeUFwaXMpIHtcbiAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IGFwaS5tb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIik7XG4gICAgICBpZiAoIWFwaXNCeU1vZGVsLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgIGFwaXNCeU1vZGVsLnNldChtb2RlbE5hbWUsIFtdKTtcbiAgICAgIH1cbiAgICAgIGFwaXNCeU1vZGVsLmdldChtb2RlbE5hbWUpPy5wdXNoKGFwaSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZXNwYWNlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCB0eXBlUGFyYW1OYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW21vZGVsTmFtZSwgbW9kZWxBcGlzXSBvZiBhcGlzQnlNb2RlbCkge1xuICAgICAgY29uc3QgZnVuY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFwaSBvZiBtb2RlbEFwaXMpIHtcbiAgICAgICAgLy8gQ29udGV4dCDsoJzsmbjtlZwg7YyM652866+47YSwXG4gICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICFBcGlQYXJhbVR5cGUuaXNDb250ZXh0KHBhcmFtLnR5cGUpICYmXG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDtg4DsnoUg7YyM652866+47YSwIOydtOumhCDsiJjsp5FcbiAgICAgICAgdHlwZVBhcmFtTmFtZXMgPSB0eXBlUGFyYW1OYW1lcy5jb25jYXQoYXBpLnR5cGVQYXJhbWV0ZXJzLm1hcCgodHApID0+IHRwLmlkKSk7XG5cbiAgICAgICAgLy8g7YOA7J6FIO2MjOudvOuvuO2EsCDsoJXsnZhcbiAgICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA9IGFwaS50eXBlUGFyYW1ldGVyc1xuICAgICAgICAgIC5tYXAoKHR5cGVQYXJhbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaVBhcmFtVHlwZVRvVHNUeXBlKHR5cGVQYXJhbSwgaW1wb3J0S2V5cyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpO1xuICAgICAgICBjb25zdCB0eXBlUGFyYW1zRGVmID0gdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA/IGA8JHt0eXBlUGFyYW1ldGVyc0FzVHNUeXBlfT5gIDogXCJcIjtcblxuICAgICAgICAvLyDtjIzrnbzrr7jthLAg7KCV7J2YXG4gICAgICAgIGNvbnN0IHBhcmFtc0RlZiA9IGFwaVBhcmFtVG9Uc0NvZGUocGFyYW1zV2l0aG91dENvbnRleHQsIGltcG9ydEtleXMpO1xuICAgICAgICBjb25zdCBwYXJhbU5hbWVzID0gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICAgICAgICAvLyBzZXJ2aWNlTWV0aG9kTmFtZSDqs4TsgrAgKHNlcnZpY2VzLnRlbXBsYXRlLnRz7JmAIOuPmeydvO2VnCDroZzsp4EpXG4gICAgICAgIGNvbnN0IHNlcnZpY2VNZXRob2ROYW1lID0gYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lXG4gICAgICAgICAgPyBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgICAgIDogYXBpLm1ldGhvZE5hbWU7XG5cbiAgICAgICAgLy8gU1NSUXVlcnkg7ZWo7IiYIOyDneyEsSAo7ZWo7IiY66qF64+EIHNlcnZpY2VNZXRob2ROYW1lIOyCrOyaqSlcbiAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgYFxuICBleHBvcnQgY29uc3QgJHtzZXJ2aWNlTWV0aG9kTmFtZX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoJyR7YXBpLm1vZGVsTmFtZX0nLCAnJHthcGkubWV0aG9kTmFtZX0nLCBbJHtwYXJhbU5hbWVzfV0sIFsnJHttb2RlbE5hbWV9JywgJyR7c2VydmljZU1ldGhvZE5hbWV9J10pO1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBuYW1lc3BhY2VzLnB1c2goXG4gICAgICAgIGBcbmV4cG9ydCBuYW1lc3BhY2UgJHttb2RlbE5hbWV9U2VydmljZSB7XG4ke2Z1bmN0aW9ucy5qb2luKFwiXFxuXFxuXCIpfVxufVxuICAgICAgYC50cmltKCksXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHk6IG5hbWVzcGFjZXMuam9pbihcIlxcblxcblwiKSxcbiAgICAgIGltcG9ydEtleXM6IGRpZmYodW5pcXVlKGltcG9ydEtleXMpLCB0eXBlUGFyYW1OYW1lcyksXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXG4gICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludDogZ2VuZXJhdGVk64qUIOustOyLnCAqL1wiLFxuICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGFzc2lzdDogZ2VuZXJhdGVk64qUIOustOyLnCAqL1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBgaW1wb3J0IHR5cGUgeyBTU1JRdWVyeSB9IGZyb20gJ3NvbmFtdS9zc3InO2AsXG4gICAgICAgIFwiXCIsXG4gICAgICAgIGAvLyBTU1JRdWVyeSDtl6ztjbwg7ZWo7IiYYCxcbiAgICAgICAgYGZ1bmN0aW9uIGNyZWF0ZVNTUlF1ZXJ5KG1vZGVsTmFtZTogc3RyaW5nLCBtZXRob2ROYW1lOiBzdHJpbmcsIHBhcmFtczogYW55W10sIHNlcnZpY2VLZXk6IFtzdHJpbmcsIHN0cmluZ10pOiBTU1JRdWVyeSB7YCxcbiAgICAgICAgYCAgcmV0dXJuIHsgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBwYXJhbXMsIHNlcnZpY2VLZXksIF9fYnJhbmQ6ICdTU1JRdWVyeScgfSBhcyBTU1JRdWVyeTtgLFxuICAgICAgICBgfWAsXG4gICAgICAgIFwiXCIsXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwiZGlmZiIsInVuaXF1ZSIsImFwaVBhcmFtVG9Uc0NvZGUiLCJhcGlQYXJhbVR5cGVUb1RzVHlwZSIsIlNvbmFtdSIsIkFwaVBhcmFtVHlwZSIsIlRlbXBsYXRlIiwiVGVtcGxhdGVfX3F1ZXJpZXMiLCJnZXRUYXJnZXRBbmRQYXRoIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsInJlbmRlciIsImFwaXMiLCJzeW5jZXIiLCJxdWVyeUFwaXMiLCJmaWx0ZXIiLCJvcHRpb25zIiwiY2xpZW50cyIsImluY2x1ZGVzIiwiYXBpc0J5TW9kZWwiLCJNYXAiLCJtb2RlbE5hbWUiLCJyZXBsYWNlIiwiaGFzIiwic2V0IiwiZ2V0IiwicHVzaCIsIm5hbWVzcGFjZXMiLCJpbXBvcnRLZXlzIiwidHlwZVBhcmFtTmFtZXMiLCJtb2RlbEFwaXMiLCJmdW5jdGlvbnMiLCJwYXJhbXNXaXRob3V0Q29udGV4dCIsInBhcmFtZXRlcnMiLCJwYXJhbSIsImlzQ29udGV4dCIsInR5cGUiLCJpc1JlZktuZXgiLCJvcHRpb25hbCIsIm5hbWUiLCJzdGFydHNXaXRoIiwiY29uY2F0IiwidHlwZVBhcmFtZXRlcnMiLCJtYXAiLCJ0cCIsImlkIiwidHlwZVBhcmFtZXRlcnNBc1RzVHlwZSIsInR5cGVQYXJhbSIsImpvaW4iLCJ0eXBlUGFyYW1zRGVmIiwicGFyYW1zRGVmIiwicGFyYW1OYW1lcyIsInAiLCJzZXJ2aWNlTWV0aG9kTmFtZSIsInJlc291cmNlTmFtZSIsImNhbWVsaXplIiwibWV0aG9kTmFtZSIsInRyaW0iLCJib2R5IiwiY3VzdG9tSGVhZGVycyJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZ0JBQWdCLGFBQWE7QUFDcEMsU0FBU0MsSUFBSSxFQUFFQyxNQUFNLFFBQVEsVUFBVTtBQUN2QyxTQUFTQyxnQkFBZ0IsRUFBRUMsb0JBQW9CLFFBQVEsK0JBQTRCO0FBRW5GLFNBQVNDLE1BQU0sUUFBUSxzQkFBbUI7QUFFMUMsU0FBU0MsWUFBWSxRQUFRLHVCQUFvQjtBQUNqRCxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFFdkMsT0FBTyxNQUFNQywwQkFBMEJEO0lBQ3JDLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBRSxtQkFBbUI7UUFDakIsTUFBTSxFQUFFQyxHQUFHLEVBQUUsR0FBR0wsT0FBT00sTUFBTSxDQUFDQyxHQUFHO1FBQ2pDLE9BQU87WUFDTEMsUUFBUSxHQUFHSCxJQUFJLGdCQUFnQixDQUFDO1lBQ2hDSSxNQUFNLENBQUMsb0JBQW9CLENBQUM7UUFDOUI7SUFDRjtJQUVBQyxPQUFPLEVBQThCLEVBQUU7UUFDckMsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR1gsT0FBT1ksTUFBTTtRQUU5QiwrQkFBK0I7UUFDL0IsTUFBTUMsWUFBWUYsS0FBS0csTUFBTSxDQUFDLENBQUNQLE1BQVFBLElBQUlRLE9BQU8sQ0FBQ0MsT0FBTyxFQUFF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
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvcXVlcmllcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgZGlmZiwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IGFwaVBhcmFtVG9Uc0NvZGUsIGFwaVBhcmFtVHlwZVRvVHNUeXBlIH0gZnJvbSBcIi4uLy4uL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3F1ZXJpZXMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwicXVlcmllc1wiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgoKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBxdWVyaWVzLmdlbmVyYXRlZC50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7fTogVGVtcGxhdGVPcHRpb25zW1wicXVlcmllc1wiXSkge1xuICAgIGNvbnN0IHsgYXBpcyB9ID0gU29uYW11LnN5bmNlcjtcblxuICAgIC8vIHRhbnN0YWNrLXF1ZXJ566W8IO2PrO2VqO2VnCBBUEnrp4wg7ZWE7YSw66eBXG4gICAgY29uc3QgcXVlcnlBcGlzID0gYXBpcy5maWx0ZXIoKGFwaSkgPT4gYXBpLm9wdGlvbnMuY2xpZW50cz8uaW5jbHVkZXMoXCJ0YW5zdGFjay1xdWVyeVwiKSk7XG5cbiAgICAvLyDrqqjrjbjrs4TroZwg6re466O57ZmUXG4gICAgY29uc3QgYXBpc0J5TW9kZWwgPSBuZXcgTWFwPHN0cmluZywgRXh0ZW5kZWRBcGlbXT4oKTtcbiAgICBmb3IgKGNvbnN0IGFwaSBvZiBxdWVyeUFwaXMpIHtcbiAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IGFwaS5tb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIik7XG4gICAgICBpZiAoIWFwaXNCeU1vZGVsLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgIGFwaXNCeU1vZGVsLnNldChtb2RlbE5hbWUsIFtdKTtcbiAgICAgIH1cbiAgICAgIGFwaXNCeU1vZGVsLmdldChtb2RlbE5hbWUpPy5wdXNoKGFwaSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZXNwYWNlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCB0eXBlUGFyYW1OYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW21vZGVsTmFtZSwgbW9kZWxBcGlzXSBvZiBhcGlzQnlNb2RlbCkge1xuICAgICAgY29uc3QgZnVuY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFwaSBvZiBtb2RlbEFwaXMpIHtcbiAgICAgICAgLy8gQ29udGV4dCDsoJzsmbjtlZwg7YyM652866+47YSwXG4gICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICFBcGlQYXJhbVR5cGUuaXNDb250ZXh0KHBhcmFtLnR5cGUpICYmXG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDtg4DsnoUg7YyM652866+47YSwIOydtOumhCDsiJjsp5FcbiAgICAgICAgdHlwZVBhcmFtTmFtZXMgPSB0eXBlUGFyYW1OYW1lcy5jb25jYXQoYXBpLnR5cGVQYXJhbWV0ZXJzLm1hcCgodHApID0+IHRwLmlkKSk7XG5cbiAgICAgICAgLy8g7YOA7J6FIO2MjOudvOuvuO2EsCDsoJXsnZhcbiAgICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA9IGFwaS50eXBlUGFyYW1ldGVyc1xuICAgICAgICAgIC5tYXAoKHR5cGVQYXJhbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaVBhcmFtVHlwZVRvVHNUeXBlKHR5cGVQYXJhbSwgaW1wb3J0S2V5cyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpO1xuICAgICAgICBjb25zdCB0eXBlUGFyYW1zRGVmID0gdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA/IGA8JHt0eXBlUGFyYW1ldGVyc0FzVHNUeXBlfT5gIDogXCJcIjtcblxuICAgICAgICAvLyDtjIzrnbzrr7jthLAg7KCV7J2YXG4gICAgICAgIGNvbnN0IHBhcmFtc0RlZiA9IGFwaVBhcmFtVG9Uc0NvZGUocGFyYW1zV2l0aG91dENvbnRleHQsIGltcG9ydEtleXMpO1xuICAgICAgICBjb25zdCBwYXJhbU5hbWVzID0gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICAgICAgICAvLyBzZXJ2aWNlTWV0aG9kTmFtZSDqs4TsgrAgKHNlcnZpY2VzLnRlbXBsYXRlLnRz7JmAIOuPmeydvO2VnCDroZzsp4EpXG4gICAgICAgIGNvbnN0IHNlcnZpY2VNZXRob2ROYW1lID0gYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lXG4gICAgICAgICAgPyBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgICAgIDogYXBpLm1ldGhvZE5hbWU7XG5cbiAgICAgICAgLy8gU1NSUXVlcnkg7ZWo7IiYIOyDneyEsSAo7ZWo7IiY66qF64+EIHNlcnZpY2VNZXRob2ROYW1lIOyCrOyaqSlcbiAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgYFxuICBleHBvcnQgY29uc3QgJHtzZXJ2aWNlTWV0aG9kTmFtZX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoJyR7YXBpLm1vZGVsTmFtZX0nLCAnJHthcGkubWV0aG9kTmFtZX0nLCBbJHtwYXJhbU5hbWVzfV0sIFsnJHttb2RlbE5hbWV9JywgJyR7c2VydmljZU1ldGhvZE5hbWV9J10pO1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBuYW1lc3BhY2VzLnB1c2goXG4gICAgICAgIGBcbmV4cG9ydCBuYW1lc3BhY2UgJHttb2RlbE5hbWV9U2VydmljZSB7XG4ke2Z1bmN0aW9ucy5qb2luKFwiXFxuXFxuXCIpfVxufVxuICAgICAgYC50cmltKCksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHRhbnN0YWNrLXF1ZXJ5IEFQSeqwgCDsl4bsnLzrqbQg7Zes7Y28IO2VqOyImOyZgCBpbXBvcnTrpbwg7Y+s7ZWo7ZWY7KeAIOyViuyKteuLiOuLpC5cbiAgICAvLyDsg4gg7ZSE66Gc7KCd7Yq47JeQ7IScIOyyqyDruYzrk5wg7IucIHN5bmPqsIAg7JWE7KeBIOyViCDrkJjslrQgbmFtZXNwYWNl6rCAIOu5hOyWtOyeiOydhCDsiJgg7J6I6rOgLFxuICAgIC8vIOydtOuVjCBjcmVhdGVTU1JRdWVyeeqwgCB1bnVzZWTroZwg67mM65OcIOyXkOufrOqwgCDrsJzsg53tlZjripQg6rKD7J2EIOuwqeyngO2VqeuLiOuLpC5cbiAgICBjb25zdCBoYXNRdWVyaWVzID0gbmFtZXNwYWNlcy5sZW5ndGggPiAwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCgpLFxuICAgICAgYm9keTogbmFtZXNwYWNlcy5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogZGlmZih1bmlxdWUoaW1wb3J0S2V5cyksIHR5cGVQYXJhbU5hbWVzKSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IGhhc1F1ZXJpZXNcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZOuKlCDrrLTsi5wgKi9cIixcbiAgICAgICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgYXNzaXN0OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgYGltcG9ydCB0eXBlIHsgU1NSUXVlcnkgfSBmcm9tICdzb25hbXUvc3NyJztgLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIGAvLyBTU1JRdWVyeSDtl6ztjbwg7ZWo7IiYYCxcbiAgICAgICAgICAgIGBmdW5jdGlvbiBjcmVhdGVTU1JRdWVyeShtb2RlbE5hbWU6IHN0cmluZywgbWV0aG9kTmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueVtdLCBzZXJ2aWNlS2V5OiBbc3RyaW5nLCBzdHJpbmddKTogU1NSUXVlcnkge2AsXG4gICAgICAgICAgICBgICByZXR1cm4geyBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIHBhcmFtcywgc2VydmljZUtleSwgX19icmFuZDogJ1NTUlF1ZXJ5JyB9IGFzIFNTUlF1ZXJ5O2AsXG4gICAgICAgICAgICBgfWAsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXG4gICAgICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZOuKlCDrrLTsi5wgKi9cIixcbiAgICAgICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgYXNzaXN0OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImluZmxlY3Rpb24iLCJkaWZmIiwidW5pcXVlIiwiYXBpUGFyYW1Ub1RzQ29kZSIsImFwaVBhcmFtVHlwZVRvVHNUeXBlIiwiU29uYW11IiwiQXBpUGFyYW1UeXBlIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fcXVlcmllcyIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiYXBpcyIsInN5bmNlciIsInF1ZXJ5QXBpcyIsImZpbHRlciIsIm9wdGlvbnMiLCJjbGllbnRzIiwiaW5jbHVkZXMiLCJhcGlzQnlNb2RlbCIsIk1hcCIsIm1vZGVsTmFtZSIsInJlcGxhY2UiLCJoYXMiLCJzZXQiLCJnZXQiLCJwdXNoIiwibmFtZXNwYWNlcyIsImltcG9ydEtleXMiLCJ0eXBlUGFyYW1OYW1lcyIsIm1vZGVsQXBpcyIsImZ1bmN0aW9ucyIsInBhcmFtc1dpdGhvdXRDb250ZXh0IiwicGFyYW1ldGVycyIsInBhcmFtIiwiaXNDb250ZXh0IiwidHlwZSIsImlzUmVmS25leCIsIm9wdGlvbmFsIiwibmFtZSIsInN0YXJ0c1dpdGgiLCJjb25jYXQiLCJ0eXBlUGFyYW1ldGVycyIsIm1hcCIsInRwIiwiaWQiLCJ0eXBlUGFyYW1ldGVyc0FzVHNUeXBlIiwidHlwZVBhcmFtIiwiam9pbiIsInR5cGVQYXJhbXNEZWYiLCJwYXJhbXNEZWYiLCJwYXJhbU5hbWVzIiwicCIsInNlcnZpY2VNZXRob2ROYW1lIiwicmVzb3VyY2VOYW1lIiwiY2FtZWxpemUiLCJtZXRob2RO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
@@ -1 +1 @@
1
- {"version":3,"file":"sd.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/sd.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;;IAKxC,gBAAgB,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK;;;;IAW7E,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC;;;;;;;IA2KrC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"sd.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/sd.template.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;;IAKxC,gBAAgB,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK;;;;IAW7E,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC;;;;;;;IAwLrC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,YAAY;CAGrB"}
@@ -27,26 +27,26 @@ import { Template } from "../template.js";
27
27
  const localeManagementCode = target === "api" ? `
28
28
  import { Sonamu } from "sonamu";
29
29
 
30
- const DEFAULT_LOCALE = "${defaultLocale}";
31
- const SUPPORTED_LOCALES = ${JSON.stringify(supportedLocales)};
32
- function getCurrentLocale(): string {
30
+ const DEFAULT_LOCALE = "${defaultLocale}" as const;
31
+ const SUPPORTED_LOCALES = ${JSON.stringify(supportedLocales)} as const;
32
+ function getCurrentLocale(): (typeof SUPPORTED_LOCALES)[number] {
33
33
  try {
34
34
  const ctx = Sonamu.getContext();
35
- return ctx.locale ?? DEFAULT_LOCALE;
35
+ return ctx.locale as (typeof SUPPORTED_LOCALES)[number] ?? DEFAULT_LOCALE;
36
36
  } catch (_) {
37
37
  return DEFAULT_LOCALE;
38
38
  }
39
39
  }
40
40
  `.trim() : `
41
- const DEFAULT_LOCALE = "${defaultLocale}";
42
- const SUPPORTED_LOCALES = ${JSON.stringify(supportedLocales)};
43
- let _currentLocale = DEFAULT_LOCALE;
41
+ const DEFAULT_LOCALE = "${defaultLocale}" as const;
42
+ const SUPPORTED_LOCALES = ${JSON.stringify(supportedLocales)} as const;
43
+ let _currentLocale: (typeof SUPPORTED_LOCALES)[number] = DEFAULT_LOCALE;
44
44
 
45
- export function setLocale(locale: string) {
45
+ export function setLocale(locale: (typeof SUPPORTED_LOCALES)[number]) {
46
46
  _currentLocale = locale;
47
47
  }
48
48
 
49
- export function getCurrentLocale(): string {
49
+ export function getCurrentLocale(): (typeof SUPPORTED_LOCALES)[number] {
50
50
  return _currentLocale;
51
51
  }
52
52
  `.trim();
@@ -116,33 +116,46 @@ export function SD<K extends DictKey>(key: K): SDReturnType<K> {
116
116
  * const EN = SD.locale("en");
117
117
  * EN("common.save") // → "Save"
118
118
  */
119
- SD.locale = (locale: string) => <K extends DictKey>(key: K): SDReturnType<K> => {
119
+ SD.locale = (locale: (typeof SUPPORTED_LOCALES)[number]) => <K extends DictKey>(key: K): SDReturnType<K> => {
120
120
  return getDictValue(key, locale);
121
121
  };
122
122
 
123
+ // Localized 가능한 Column 타입 계산
124
+ type LocalizedBaseColumn<T> = {
125
+ [K in keyof T & string]: K extends \`\${infer Base}_\${(typeof SUPPORTED_LOCALES)[number]}\` ? Base : K;
126
+ }[keyof T & string];
127
+
123
128
  /**
124
129
  * locale에 따라 적절한 컬럼 값을 반환합니다.
125
130
  * DB에 name, name_ko, name_en처럼 localized column이 있을 때 사용합니다.
126
- *
127
- * 우선순위 (ko locale): column_ko → column → column_en
128
- * 우선순위 (en locale): column_en → column → column_ko
131
+ *
132
+ * 우선순위 (지원 로케일은 ko/jp/en이고, 서비스의 기본 로케일은 ko, 사용자의 로케일은 jp일 때): column_jp → column → column_ko → column_en
133
+ * 우선순위 (지원 로케일은 ko/jp/en이고, 서비스의 기본 로케일은 en, 사용자의 로케일은 ko일 때): column_ko → column → column_en → column_jp
129
134
  *
130
135
  * @example
131
136
  * localizedColumn(tag, "name")
132
137
  */
133
- export function localizedColumn<T extends Record<string, unknown>, K extends keyof T & string>(
138
+ export function localizedColumn<T extends Record<string, unknown>, K extends LocalizedBaseColumn<T>>(
134
139
  row: T,
135
140
  column: K,
136
141
  ): string | undefined {
137
142
  const locale = getCurrentLocale();
138
- const otherLocales = SUPPORTED_LOCALES.filter((l: string) => l !== locale);
139
- const localizedKey = (column: K, locale: string) => \`\${String(column)}_\${locale}\`;
140
- const keys = [localizedKey(column, locale), column, ...otherLocales.map((l) => localizedKey(column, l))];
143
+ const otherLocales = SUPPORTED_LOCALES.filter((l: string) => l !== locale && l !== DEFAULT_LOCALE);
144
+ const localizedKey = (column: K, locale: (typeof SUPPORTED_LOCALES)[number]) => \`\${column}_\${locale}\`;
145
+ const keys = [
146
+ localizedKey(column, locale),
147
+ column,
148
+ localizedKey(column, DEFAULT_LOCALE),
149
+ ...otherLocales.map((l) => localizedKey(column, l)),
150
+ ];
141
151
 
142
152
  for (const key of keys) {
143
- const value = row[key];
144
- if (value != null && value !== "") {
145
- return String(value);
153
+ if (!(key in row)) {
154
+ continue;
155
+ }
156
+
157
+ if (row[key] !== null && row[key] !== undefined && row[key] !== "") {
158
+ return String(row[key]);
146
159
  }
147
160
  }
148
161
 
@@ -228,4 +241,4 @@ ${entries.join("\n")}
228
241
  }
229
242
  }
230
243
 
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIsIHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeSAoU0QpIO2FnO2UjOumv1xuICogaTE4buydhCDsnITtlZwgc2QuZ2VuZXJhdGVkLnRzIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2QgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwic2RcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKF9uYW1lcz86IEVudGl0eU5hbWVzUmVjb3JkLCBzZFRhcmdldD86IFwiYXBpXCIgfCBcIndlYlwiIHwgXCJhcHBcIikge1xuICAgIGNvbnN0IHRhcmdldCA9IHNkVGFyZ2V0ID8/IFwiYXBpXCI7XG4gICAgLy8gYXBpLmRpcuydgCDsg4HrjIAg6rK966GcKFwiYXBpXCIp7J2066+A66GcLCB3ZWIvYXBw64+EIOyDgeuMgCDqsr3roZzroZwg66ee7LakXG4gICAgY29uc3QgZGlyID0gdGFyZ2V0ID09PSBcImFwaVwiID8gU29uYW11LmNvbmZpZy5hcGkuZGlyIDogdGFyZ2V0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvaTE4bmAsXG4gICAgICBwYXRoOiBcInNkLmdlbmVyYXRlZC50c1wiLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIob3B0aW9uczogVGVtcGxhdGVPcHRpb25zW1wic2RcIl0pIHtcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBpMThuQ29uZmlnID0gU29uYW11LmNvbmZpZy5pMThuO1xuXG4gICAgY29uc3QgeyBkZWZhdWx0TG9jYWxlLCBzdXBwb3J0ZWRMb2NhbGVzIH0gPSBpMThuQ29uZmlnO1xuXG4gICAgLy8gZW50aXR5Lmpzb27sl5DshJwgZW50aXR5IGxhYmVscyDstpTstpxcbiAgICBjb25zdCBlbnRpdHlMYWJlbHMgPSB0aGlzLmV4dHJhY3RFbnRpdHlMYWJlbHMoKTtcblxuICAgIC8vIO2UjOueq+2PvOuzhCBsb2NhbGUg6rSA66asIOy9lOuTnFxuICAgIGNvbnN0IGxvY2FsZU1hbmFnZW1lbnRDb2RlID1cbiAgICAgIHRhcmdldCA9PT0gXCJhcGlcIlxuICAgICAgICA/IGBcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcIiR7ZGVmYXVsdExvY2FsZX1cIjtcbmNvbnN0IFNVUFBPUlRFRF9MT0NBTEVTID0gJHtKU09OLnN0cmluZ2lmeShzdXBwb3J0ZWRMb2NhbGVzKX07XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgY3R4ID0gU29uYW11LmdldENvbnRleHQoKTtcbiAgICByZXR1cm4gY3R4LmxvY2FsZSA/PyBERUZBVUxUX0xPQ0FMRTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBERUZBVUxUX0xPQ0FMRTtcbiAgfVxufVxuYC50cmltKClcbiAgICAgICAgOiBgXG5jb25zdCBERUZBVUxUX0xPQ0FMRSA9IFwiJHtkZWZhdWx0TG9jYWxlfVwiO1xuY29uc3QgU1VQUE9SVEVEX0xPQ0FMRVMgPSAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZExvY2FsZXMpfTtcbmxldCBfY3VycmVudExvY2FsZSA9IERFRkFVTFRfTE9DQUxFO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKSB7XG4gIF9jdXJyZW50TG9jYWxlID0gbG9jYWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudExvY2FsZSgpOiBzdHJpbmcge1xuICByZXR1cm4gX2N1cnJlbnRMb2NhbGU7XG59XG5gLnRyaW0oKTtcblxuICAgIC8vIGxvY2FsZSBpbXBvcnRcbiAgICBjb25zdCBsb2NhbGVJbXBvcnRzID0gc3VwcG9ydGVkTG9jYWxlc1xuICAgICAgLm1hcCgobG9jYWxlKSA9PiBgaW1wb3J0ICR7bG9jYWxlfSBmcm9tIFwiLi8ke2xvY2FsZX1cIjtgKVxuICAgICAgLmpvaW4oXCJcXG5cIik7XG5cbiAgICAvLyBlbnRpdHlMYWJlbHPrpbwg7L2U65Oc66GcIOuzgO2ZmFxuICAgIGNvbnN0IGVudGl0eUxhYmVsc0NvZGUgPSB0aGlzLmdlbmVyYXRlRW50aXR5TGFiZWxzQ29kZShlbnRpdHlMYWJlbHMpO1xuXG4gICAgY29uc3QgYm9keSA9IGBcbiR7bG9jYWxlTWFuYWdlbWVudENvZGV9XG5cbiR7bG9jYWxlSW1wb3J0c31cblxuLy8gZW50aXR5Lmpzb27sl5DshJwg7LaU7Lac7ZWcIGVudGl0eSBsYWJlbHMgKGRlZmF1bHRMb2NhbGUg7KCE7JqpKVxuJHtlbnRpdHlMYWJlbHNDb2RlfVxuXG4vLyBkZWZhdWx0TG9jYWxl7J2YIGRpY3Rpb25hcnnrpbwg6riw7KSA7Jy866GcIO2CpCDstpTstpxcbnR5cGUgUHJvamVjdERpY3Rpb25hcnkgPSB0eXBlb2YgJHtkZWZhdWx0TG9jYWxlfTtcbnR5cGUgRW50aXR5TGFiZWxzID0gdHlwZW9mIGVudGl0eUxhYmVscztcbnR5cGUgUmF3TWVyZ2VkRGljdGlvbmFyeSA9IE9taXQ8RW50aXR5TGFiZWxzLCBrZXlvZiBQcm9qZWN0RGljdGlvbmFyeT4gJiBQcm9qZWN0RGljdGlvbmFyeTtcblxuLy8g7YKk64qUIOycoOyngO2VmOuQmCwg6rCSIO2DgOyeheydgCBzdHJpbmcg65iQ64qUIO2VqOyImOuhnCDsnbzrsJjtmZQgKOuLpOuluCBsb2NhbGXsnZgg66as7YSw65+0IO2DgOyehSDstqnrj4wg67Cp7KeAKVxuZXhwb3J0IHR5cGUgTWVyZ2VkRGljdGlvbmFyeSA9IHtcbiAgW0sgaW4ga2V5b2YgUmF3TWVyZ2VkRGljdGlvbmFyeV06IFJhd01lcmdlZERpY3Rpb25hcnlbS10gZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgUCkgPT4gc3RyaW5nXG4gICAgPyAoLi4uYXJnczogUCkgPT4gc3RyaW5nXG4gICAgOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRGljdEtleSA9IGtleW9mIE1lcmdlZERpY3Rpb25hcnk7XG5leHBvcnQgdHlwZSBMb2NhbGl6ZWRTdHJpbmcgPSBzdHJpbmcgJiB7IF9fYnJhbmQ6IFwiTG9jYWxpemVkU3RyaW5nXCIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUxvY2FsZShkaWN0OiBQYXJ0aWFsPE1lcmdlZERpY3Rpb25hcnk+KSB7XG4gIHJldHVybiBkaWN0O1xufVxuXG4vLyDqsIEgbG9jYWxl67OE66GcIGVudGl0eSBsYWJlbHMgKyDtlITroZzsoJ3tirggZGljdCDtlansuahcbmNvbnN0IGRpY3Rpb25hcmllczogUmVjb3JkPHN0cmluZywgUGFydGlhbDxNZXJnZWREaWN0aW9uYXJ5Pj4gPSB7XG4gICR7ZGVmYXVsdExvY2FsZX06IHsgLi4uZW50aXR5TGFiZWxzLCAuLi4ke2RlZmF1bHRMb2NhbGV9IH0sXG4gICR7c3VwcG9ydGVkTG9jYWxlc1xuICAgIC5maWx0ZXIoKGxvY2FsZSkgPT4gbG9jYWxlICE9PSBkZWZhdWx0TG9jYWxlKVxuICAgIC5tYXAoKGxvY2FsZSkgPT4gYCAgJHtsb2NhbGV9OiB7IC4uLiR7bG9jYWxlfSB9LGApXG4gICAgLmpvaW4oXCJcXG5cIil9XG59O1xuXG50eXBlIFNEUmV0dXJuVHlwZTxLIGV4dGVuZHMgRGljdEtleT4gPSBNZXJnZWREaWN0aW9uYXJ5W0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIFApID0+IHN0cmluZ1xuICA/ICguLi5hcmdzOiBQKSA9PiBMb2NhbGl6ZWRTdHJpbmdcbiAgOiBMb2NhbGl6ZWRTdHJpbmc7XG5cbmZ1bmN0aW9uIGdldERpY3RWYWx1ZTxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLLCBsb2NhbGU6IHN0cmluZyk6IFNEUmV0dXJuVHlwZTxLPiB7XG4gIGNvbnN0IGRpY3QgPSBkaWN0aW9uYXJpZXNbbG9jYWxlXTtcbiAgY29uc3QgdmFsdWUgPSBkaWN0Py5ba2V5XSA/PyBkaWN0aW9uYXJpZXNbREVGQVVMVF9MT0NBTEVdPy5ba2V5XSA/PyBrZXk7XG4gIHJldHVybiB2YWx1ZSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbn1cblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeSDtlajsiJhcbiAqIGxvY2FsZeyXkCDrp57ripQg67KI7JetIO2FjeyKpO2KuOulvCDrsJjtmZjtlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIFNEKFwiY29tbW9uLnNhdmVcIikgIC8vIOKGkiBcIuyggOyepVwiIChMb2NhbGl6ZWRTdHJpbmcpXG4gKiBTRChcInVzZXIubm90Rm91bmRcIikoMSkgIC8vIOKGkiBcIuyhtOyerO2VmOyngCDslYrripQgVXNlciBJRCAxXCIgKExvY2FsaXplZFN0cmluZylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFNEPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEspOiBTRFJldHVyblR5cGU8Sz4ge1xuICBjb25zdCBsb2NhbGUgPSBnZXRDdXJyZW50TG9jYWxlKCk7XG4gIHJldHVybiBnZXREaWN0VmFsdWUoa2V5LCBsb2NhbGUpO1xufVxuXG4vKipcbiAqIO2KueyglSBsb2NhbGXsnZgg67KI7JetIO2FjeyKpO2KuOulvCDrsJjtmZjtlZjripQg7ZWo7IiY66W8IOyDneyEse2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgRU4gPSBTRC5sb2NhbGUoXCJlblwiKTtcbiAqIEVOKFwiY29tbW9uLnNhdmVcIikgIC8vIOKGkiBcIlNhdmVcIlxuICovXG5TRC5sb2NhbGUgPSAobG9jYWxlOiBzdHJpbmcpID0+IDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+ID0+IHtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59O1xuXG4vKipcbiAqIGxvY2FsZeyXkCDrlLDrnbwg7KCB7KCI7ZWcIOy7rOufvCDqsJLsnYQg67CY7ZmY7ZWp64uI64ukLlxuICogRELsl5AgbmFtZSwgbmFtZV9rbywgbmFtZV9lbuyymOufvCBsb2NhbGl6ZWQgY29sdW1u7J20IOyeiOydhCDrlYwg7IKs7Jqp7ZWp64uI64ukLlxuICpcbiAqIOyasOyEoOyInOychCAoa28gbG9jYWxlKTogY29sdW1uX2tvIOKGkiBjb2x1bW4g4oaSIGNvbHVtbl9lblxuICog7Jqw7ISg7Iic7JyEIChlbiBsb2NhbGUpOiBjb2x1bW5fZW4g4oaSIGNvbHVtbiDihpIgY29sdW1uX2tvXG4gKlxuICogQGV4YW1wbGVcbiAqIGxvY2FsaXplZENvbHVtbih0YWcsIFwibmFtZVwiKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9jYWxpemVkQ29sdW1uPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgSyBleHRlbmRzIGtleW9mIFQgJiBzdHJpbmc+KFxuICByb3c6IFQsXG4gIGNvbHVtbjogSyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGxvY2FsZSA9IGdldEN1cnJlbnRMb2NhbGUoKTtcbiAgY29uc3Qgb3RoZXJMb2NhbGVzID0gU1VQUE9SVEVEX0xPQ0FMRVMuZmlsdGVyKChsOiBzdHJpbmcpID0+IGwgIT09IGxvY2FsZSk7XG4gIGNvbnN0IGxvY2FsaXplZEtleSA9IChjb2x1bW46IEssIGxvY2FsZTogc3RyaW5nKSA9PiBcXGBcXCR7U3RyaW5nKGNvbHVtbil9X1xcJHtsb2NhbGV9XFxgO1xuICBjb25zdCBrZXlzID0gW2xvY2FsaXplZEtleShjb2x1bW4sIGxvY2FsZSksIGNvbHVtbiwgLi4ub3RoZXJMb2NhbGVzLm1hcCgobCkgPT4gbG9jYWxpemVkS2V5KGNvbHVtbiwgbCkpXTtcblxuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3QgdmFsdWUgPSByb3dba2V5XTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPT0gXCJcIikge1xuICAgICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFbnVt7J2YIGxvY2FsaXplZCBsYWJlbHPrpbwgUHJveHnroZwg67CY7ZmY7ZWp64uI64ukLlxuICogU2VsZWN0IOy7tO2PrOuEjO2KuCDrk7Hsl5DshJwgRW51bUxhYmVsW2tleV0g64yA7IugIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QuZW51bUxhYmVscyhcIlRhZ09yZGVyQnlcIilba2V5XSAgLy8g4oaSIO2YhOyerCBsb2NhbGXsnZgg652867KoXG4gKi9cblNELmVudW1MYWJlbHMgPSAoZW51bU5hbWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4gPT4ge1xuICByZXR1cm4gbmV3IFByb3h5KHt9IGFzIFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4sIHtcbiAgICBnZXQoXywga2V5OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGRpY3RLZXkgPSBcXGBlbnVtLlxcJHtlbnVtTmFtZX0uXFwke2tleX1cXGAgYXMgRGljdEtleTtcbiAgICAgIHJldHVybiBnZXREaWN0VmFsdWUoZGljdEtleSwgZ2V0Q3VycmVudExvY2FsZSgpKTtcbiAgICB9XG4gIH0pO1xufTtcbmAudHJpbSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCh1bmRlZmluZWQsIHRhcmdldCksXG4gICAgICBib2R5LFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOuqqOuToCBlbnRpdHkuanNvbuyXkOyEnCBlbnRpdHkgbGFiZWxzIOy2lOy2nFxuICAgKiBlbnRpdHkuanNvbuyXkOyEnCDsp4HsoJEg6rSA66as65CY64qUIOqwkuunjCDtj6ztlaggKOyekOuPmSDsg53shLEg6rCSIOygnOyZuClcbiAgICogLSBlbnRpdHkue2VudGl0eUlkfTogZW50aXR5IHRpdGxlXG4gICAqIC0gZW50aXR5LntlbnRpdHlJZH0ue3Byb3BOYW1lfTogcHJvcCBkZXNjXG4gICAqIC0gZW51bS57RW51bUlkfS57dmFsdWV9OiBlbnVtIGxhYmVsXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RFbnRpdHlMYWJlbHMoKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10ge1xuICAgIGNvbnN0IGxhYmVsczogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPSBbXTtcblxuICAgIGlmICghRW50aXR5TWFuYWdlci5pc0F1dG9sb2FkZWQpIHtcbiAgICAgIHJldHVybiBsYWJlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZW50aXR5SWRzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcblxuICAgIGZvciAoY29uc3QgZW50aXR5SWQgb2YgZW50aXR5SWRzKSB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgIC8vIGVudGl0eSB0aXRsZSAoZW50aXR5Lmpzb27sl5DshJwg6rSA66asKVxuICAgICAgbGFiZWxzLnB1c2goeyBrZXk6IGBlbnRpdHkuJHtlbnRpdHlJZH1gLCB2YWx1ZTogZW50aXR5LnRpdGxlIH0pO1xuXG4gICAgICAvLyBwcm9wIGxhYmVscyAoZW50aXR5Lmpzb27sl5DshJwg6rSA66asKVxuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGVudGl0eS5wcm9wcykge1xuICAgICAgICBpZiAocHJvcC5kZXNjKSB7XG4gICAgICAgICAgbGFiZWxzLnB1c2goeyBrZXk6IGBlbnRpdHkuJHtlbnRpdHlJZH0uJHtwcm9wLm5hbWV9YCwgdmFsdWU6IHByb3AuZGVzYyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBlbnVtIGxhYmVscyAoZW50aXR5Lmpzb27sl5DshJwg6rSA66asKVxuICAgICAgZm9yIChjb25zdCBbZW51bUlkLCBlbnVtTGFiZWxzTWFwXSBvZiBPYmplY3QuZW50cmllcyhlbnRpdHkuZW51bUxhYmVscykpIHtcbiAgICAgICAgZm9yIChjb25zdCBbdmFsdWUsIGxhYmVsXSBvZiBPYmplY3QuZW50cmllcyhlbnVtTGFiZWxzTWFwKSkge1xuICAgICAgICAgIGxhYmVscy5wdXNoKHsga2V5OiBgZW51bS4ke2VudW1JZH0uJHt2YWx1ZX1gLCB2YWx1ZTogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIGVudGl0eUxhYmVsc+ulvCBUeXBlU2NyaXB0IOy9lOuTnOuhnCDrs4DtmZhcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVFbnRpdHlMYWJlbHNDb2RlKGxhYmVsczogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10pOiBzdHJpbmcge1xuICAgIGlmIChsYWJlbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gXCJjb25zdCBlbnRpdHlMYWJlbHMgPSB7fSBhcyBjb25zdDtcIjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gbGFiZWxzLm1hcCgoeyBrZXksIHZhbHVlIH0pID0+IGAgIFwiJHtrZXl9XCI6IFwiJHt0aGlzLmVzY2FwZVN0cmluZyh2YWx1ZSl9XCIsYCk7XG5cbiAgICByZXR1cm4gYGNvbnN0IGVudGl0eUxhYmVscyA9IHtcbiR7ZW50cmllcy5qb2luKFwiXFxuXCIpfVxufSBhcyBjb25zdDtgO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKS5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX19zZCIsImdldFRhcmdldEFuZFBhdGgiLCJfbmFtZXMiLCJzZFRhcmdldCIsInRhcmdldCIsImRpciIsImNvbmZpZyIsImFwaSIsInBhdGgiLCJyZW5kZXIiLCJvcHRpb25zIiwiaTE4bkNvbmZpZyIsImkxOG4iLCJkZWZhdWx0TG9jYWxlIiwic3VwcG9ydGVkTG9jYWxlcyIsImVudGl0eUxhYmVscyIsImV4dHJhY3RFbnRpdHlMYWJlbHMiLCJsb2NhbGVNYW5hZ2VtZW50Q29kZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0cmltIiwibG9jYWxlSW1wb3J0cyIsIm1hcCIsImxvY2FsZSIsImpvaW4iLCJlbnRpdHlMYWJlbHNDb2RlIiwiZ2VuZXJhdGVFbnRpdHlMYWJlbHNDb2RlIiwiYm9keSIsImZpbHRlciIsInVuZGVmaW5lZCIsImltcG9ydEtleXMiLCJjdXN0b21IZWFkZXJzIiwibGFiZWxzIiwiaXNBdXRvbG9hZGVkIiwiZW50aXR5SWRzIiwiZ2V0QWxsSWRzIiwiZW50aXR5SWQiLCJlbnRpdHkiLCJnZXQiLCJwdXNoIiwia2V5IiwidmFsdWUiLCJ0aXRsZSIsInByb3AiLCJwcm9wcyIsImRlc2MiLCJuYW1lIiwiZW51bUlkIiwiZW51bUxhYmVsc01hcCIsIk9iamVjdCIsImVudHJpZXMiLCJlbnVtTGFiZWxzIiwibGFiZWwiLCJsZW5ndGgiLCJlc2NhcGVTdHJpbmciLCJzdHIiLCJyZXBsYWNlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEsc0JBQW1CO0FBQzFDLFNBQVNDLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNB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
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIsIHR5cGUgRW50aXR5TmFtZXNSZWNvcmQgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeSAoU0QpIO2FnO2UjOumv1xuICogaTE4buydhCDsnITtlZwgc2QuZ2VuZXJhdGVkLnRzIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2QgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwic2RcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKF9uYW1lcz86IEVudGl0eU5hbWVzUmVjb3JkLCBzZFRhcmdldD86IFwiYXBpXCIgfCBcIndlYlwiIHwgXCJhcHBcIikge1xuICAgIGNvbnN0IHRhcmdldCA9IHNkVGFyZ2V0ID8/IFwiYXBpXCI7XG4gICAgLy8gYXBpLmRpcuydgCDsg4HrjIAg6rK966GcKFwiYXBpXCIp7J2066+A66GcLCB3ZWIvYXBw64+EIOyDgeuMgCDqsr3roZzroZwg66ee7LakXG4gICAgY29uc3QgZGlyID0gdGFyZ2V0ID09PSBcImFwaVwiID8gU29uYW11LmNvbmZpZy5hcGkuZGlyIDogdGFyZ2V0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvaTE4bmAsXG4gICAgICBwYXRoOiBcInNkLmdlbmVyYXRlZC50c1wiLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIob3B0aW9uczogVGVtcGxhdGVPcHRpb25zW1wic2RcIl0pIHtcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBpMThuQ29uZmlnID0gU29uYW11LmNvbmZpZy5pMThuO1xuXG4gICAgY29uc3QgeyBkZWZhdWx0TG9jYWxlLCBzdXBwb3J0ZWRMb2NhbGVzIH0gPSBpMThuQ29uZmlnO1xuXG4gICAgLy8gZW50aXR5Lmpzb27sl5DshJwgZW50aXR5IGxhYmVscyDstpTstpxcbiAgICBjb25zdCBlbnRpdHlMYWJlbHMgPSB0aGlzLmV4dHJhY3RFbnRpdHlMYWJlbHMoKTtcblxuICAgIC8vIO2UjOueq+2PvOuzhCBsb2NhbGUg6rSA66asIOy9lOuTnFxuICAgIGNvbnN0IGxvY2FsZU1hbmFnZW1lbnRDb2RlID1cbiAgICAgIHRhcmdldCA9PT0gXCJhcGlcIlxuICAgICAgICA/IGBcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCJzb25hbXVcIjtcblxuY29uc3QgREVGQVVMVF9MT0NBTEUgPSBcIiR7ZGVmYXVsdExvY2FsZX1cIiBhcyBjb25zdDtcbmNvbnN0IFNVUFBPUlRFRF9MT0NBTEVTID0gJHtKU09OLnN0cmluZ2lmeShzdXBwb3J0ZWRMb2NhbGVzKX0gYXMgY29uc3Q7XG5mdW5jdGlvbiBnZXRDdXJyZW50TG9jYWxlKCk6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0ge1xuICB0cnkge1xuICAgIGNvbnN0IGN0eCA9IFNvbmFtdS5nZXRDb250ZXh0KCk7XG4gICAgcmV0dXJuIGN0eC5sb2NhbGUgYXMgKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSA/PyBERUZBVUxUX0xPQ0FMRTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBERUZBVUxUX0xPQ0FMRTtcbiAgfVxufVxuYC50cmltKClcbiAgICAgICAgOiBgXG5jb25zdCBERUZBVUxUX0xPQ0FMRSA9IFwiJHtkZWZhdWx0TG9jYWxlfVwiIGFzIGNvbnN0O1xuY29uc3QgU1VQUE9SVEVEX0xPQ0FMRVMgPSAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZExvY2FsZXMpfSBhcyBjb25zdDtcbmxldCBfY3VycmVudExvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSA9IERFRkFVTFRfTE9DQUxFO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9jYWxlKGxvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSkge1xuICBfY3VycmVudExvY2FsZSA9IGxvY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhbGUoKTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSB7XG4gIHJldHVybiBfY3VycmVudExvY2FsZTtcbn1cbmAudHJpbSgpO1xuXG4gICAgLy8gbG9jYWxlIGltcG9ydFxuICAgIGNvbnN0IGxvY2FsZUltcG9ydHMgPSBzdXBwb3J0ZWRMb2NhbGVzXG4gICAgICAubWFwKChsb2NhbGUpID0+IGBpbXBvcnQgJHtsb2NhbGV9IGZyb20gXCIuLyR7bG9jYWxlfVwiO2ApXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIC8vIGVudGl0eUxhYmVsc+ulvCDsvZTrk5zroZwg67OA7ZmYXG4gICAgY29uc3QgZW50aXR5TGFiZWxzQ29kZSA9IHRoaXMuZ2VuZXJhdGVFbnRpdHlMYWJlbHNDb2RlKGVudGl0eUxhYmVscyk7XG5cbiAgICBjb25zdCBib2R5ID0gYFxuJHtsb2NhbGVNYW5hZ2VtZW50Q29kZX1cblxuJHtsb2NhbGVJbXBvcnRzfVxuXG4vLyBlbnRpdHkuanNvbuyXkOyEnCDstpTstpztlZwgZW50aXR5IGxhYmVscyAoZGVmYXVsdExvY2FsZSDsoITsmqkpXG4ke2VudGl0eUxhYmVsc0NvZGV9XG5cbi8vIGRlZmF1bHRMb2NhbGXsnZggZGljdGlvbmFyeeulvCDquLDspIDsnLzroZwg7YKkIOy2lOy2nFxudHlwZSBQcm9qZWN0RGljdGlvbmFyeSA9IHR5cGVvZiAke2RlZmF1bHRMb2NhbGV9O1xudHlwZSBFbnRpdHlMYWJlbHMgPSB0eXBlb2YgZW50aXR5TGFiZWxzO1xudHlwZSBSYXdNZXJnZWREaWN0aW9uYXJ5ID0gT21pdDxFbnRpdHlMYWJlbHMsIGtleW9mIFByb2plY3REaWN0aW9uYXJ5PiAmIFByb2plY3REaWN0aW9uYXJ5O1xuXG4vLyDtgqTripQg7Jyg7KeA7ZWY65CYLCDqsJIg7YOA7J6F7J2AIHN0cmluZyDrmJDripQg7ZWo7IiY66GcIOydvOuwmO2ZlCAo64uk66W4IGxvY2FsZeydmCDrpqzthLDrn7Qg7YOA7J6FIOy2qeuPjCDrsKnsp4ApXG5leHBvcnQgdHlwZSBNZXJnZWREaWN0aW9uYXJ5ID0ge1xuICBbSyBpbiBrZXlvZiBSYXdNZXJnZWREaWN0aW9uYXJ5XTogUmF3TWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgICA/ICguLi5hcmdzOiBQKSA9PiBzdHJpbmdcbiAgICA6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBEaWN0S2V5ID0ga2V5b2YgTWVyZ2VkRGljdGlvbmFyeTtcbmV4cG9ydCB0eXBlIExvY2FsaXplZFN0cmluZyA9IHN0cmluZyAmIHsgX19icmFuZDogXCJMb2NhbGl6ZWRTdHJpbmdcIiB9O1xuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lTG9jYWxlKGRpY3Q6IFBhcnRpYWw8TWVyZ2VkRGljdGlvbmFyeT4pIHtcbiAgcmV0dXJuIGRpY3Q7XG59XG5cbi8vIOqwgSBsb2NhbGXrs4TroZwgZW50aXR5IGxhYmVscyArIO2UhOuhnOygne2KuCBkaWN0IO2Vqey5qFxuY29uc3QgZGljdGlvbmFyaWVzOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPE1lcmdlZERpY3Rpb25hcnk+PiA9IHtcbiAgJHtkZWZhdWx0TG9jYWxlfTogeyAuLi5lbnRpdHlMYWJlbHMsIC4uLiR7ZGVmYXVsdExvY2FsZX0gfSxcbiAgJHtzdXBwb3J0ZWRMb2NhbGVzXG4gICAgLmZpbHRlcigobG9jYWxlKSA9PiBsb2NhbGUgIT09IGRlZmF1bHRMb2NhbGUpXG4gICAgLm1hcCgobG9jYWxlKSA9PiBgICAke2xvY2FsZX06IHsgLi4uJHtsb2NhbGV9IH0sYClcbiAgICAuam9pbihcIlxcblwiKX1cbn07XG5cbnR5cGUgU0RSZXR1cm5UeXBlPEsgZXh0ZW5kcyBEaWN0S2V5PiA9IE1lcmdlZERpY3Rpb25hcnlbS10gZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgUCkgPT4gc3RyaW5nXG4gID8gKC4uLmFyZ3M6IFApID0+IExvY2FsaXplZFN0cmluZ1xuICA6IExvY2FsaXplZFN0cmluZztcblxuZnVuY3Rpb24gZ2V0RGljdFZhbHVlPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEssIGxvY2FsZTogc3RyaW5nKTogU0RSZXR1cm5UeXBlPEs+IHtcbiAgY29uc3QgZGljdCA9IGRpY3Rpb25hcmllc1tsb2NhbGVdO1xuICBjb25zdCB2YWx1ZSA9IGRpY3Q/LltrZXldID8/IGRpY3Rpb25hcmllc1tERUZBVUxUX0xPQ0FMRV0/LltrZXldID8/IGtleTtcbiAgcmV0dXJuIHZhbHVlIGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xufVxuXG4vKipcbiAqIFNvbmFtdSBEaWN0aW9uYXJ5IO2VqOyImFxuICogbG9jYWxl7JeQIOunnuuKlCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QoXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwi7KCA7J6lXCIgKExvY2FsaXplZFN0cmluZylcbiAqIFNEKFwidXNlci5ub3RGb3VuZFwiKSgxKSAgLy8g4oaSIFwi7KG07J6s7ZWY7KeAIOyViuuKlCBVc2VyIElEIDFcIiAoTG9jYWxpemVkU3RyaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gU0Q8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSyk6IFNEUmV0dXJuVHlwZTxLPiB7XG4gIGNvbnN0IGxvY2FsZSA9IGdldEN1cnJlbnRMb2NhbGUoKTtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59XG5cbi8qKlxuICog7Yq57KCVIGxvY2FsZeydmCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VmOuKlCDtlajsiJjrpbwg7IOd7ISx7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBFTiA9IFNELmxvY2FsZShcImVuXCIpO1xuICogRU4oXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwiU2F2ZVwiXG4gKi9cblNELmxvY2FsZSA9IChsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+IDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+ID0+IHtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59O1xuXG4vLyBMb2NhbGl6ZWQg6rCA64ql7ZWcIENvbHVtbiDtg4DsnoUg6rOE7IKwIFxudHlwZSBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUICYgc3RyaW5nXTogSyBleHRlbmRzIFxcYFxcJHtpbmZlciBCYXNlfV9cXCR7KHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXX1cXGAgPyBCYXNlIDogSztcbn1ba2V5b2YgVCAmIHN0cmluZ107XG5cbi8qKlxuICogbG9jYWxl7JeQIOuUsOudvCDsoIHsoIjtlZwg7Lus65+8IOqwkuydhCDrsJjtmZjtlanri4jri6QuXG4gKiBEQuyXkCBuYW1lLCBuYW1lX2tvLCBuYW1lX2Vu7LKY65+8IGxvY2FsaXplZCBjb2x1bW7snbQg7J6I7J2EIOuVjCDsgqzsmqntlanri4jri6QuXG4gKiBcbiAqIOyasOyEoOyInOychCAo7KeA7JuQIOuhnOy8gOydvOydgCBrby9qcC9lbuydtOqzoCwg7ISc67mE7Iqk7J2YIOq4sOuzuCDroZzsvIDsnbzsnYAga28sIOyCrOyaqeyekOydmCDroZzsvIDsnbzsnYAganDsnbwg65WMKTogY29sdW1uX2pwIOKGkiBjb2x1bW4g4oaSIGNvbHVtbl9rbyDihpIgY29sdW1uX2VuXG4gKiDsmrDshKDsiJzsnIQgKOyngOybkCDroZzsvIDsnbzsnYAga28vanAvZW7snbTqs6AsIOyEnOu5hOyKpOydmCDquLDrs7gg66Gc7LyA7J287J2AIGVuLCDsgqzsmqnsnpDsnZgg66Gc7LyA7J287J2AIGtv7J28IOuVjCk6IGNvbHVtbl9rbyDihpIgY29sdW1uIOKGkiBjb2x1bW5fZW4g4oaSIGNvbHVtbl9qcFxuICpcbiAqIEBleGFtcGxlXG4gKiBsb2NhbGl6ZWRDb2x1bW4odGFnLCBcIm5hbWVcIilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsaXplZENvbHVtbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIEsgZXh0ZW5kcyBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+PihcbiAgcm93OiBULFxuICBjb2x1bW46IEssXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBsb2NhbGUgPSBnZXRDdXJyZW50TG9jYWxlKCk7XG4gIGNvbnN0IG90aGVyTG9jYWxlcyA9IFNVUFBPUlRFRF9MT0NBTEVTLmZpbHRlcigobDogc3RyaW5nKSA9PiBsICE9PSBsb2NhbGUgJiYgbCAhPT0gREVGQVVMVF9MT0NBTEUpO1xuICBjb25zdCBsb2NhbGl6ZWRLZXkgPSAoY29sdW1uOiBLLCBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+IFxcYFxcJHtjb2x1bW59X1xcJHtsb2NhbGV9XFxgO1xuICBjb25zdCBrZXlzID0gW1xuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIGxvY2FsZSksXG4gICAgY29sdW1uLFxuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIERFRkFVTFRfTE9DQUxFKSxcbiAgICAuLi5vdGhlckxvY2FsZXMubWFwKChsKSA9PiBsb2NhbGl6ZWRLZXkoY29sdW1uLCBsKSksXG4gIF07XG5cbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGlmICghKGtleSBpbiByb3cpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocm93W2tleV0gIT09IG51bGwgJiYgcm93W2tleV0gIT09IHVuZGVmaW5lZCAmJiByb3dba2V5XSAhPT0gXCJcIikge1xuICAgICAgcmV0dXJuIFN0cmluZyhyb3dba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFbnVt7J2YIGxvY2FsaXplZCBsYWJlbHPrpbwgUHJveHnroZwg67CY7ZmY7ZWp64uI64ukLlxuICogU2VsZWN0IOy7tO2PrOuEjO2KuCDrk7Hsl5DshJwgRW51bUxhYmVsW2tleV0g64yA7IugIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QuZW51bUxhYmVscyhcIlRhZ09yZGVyQnlcIilba2V5XSAgLy8g4oaSIO2YhOyerCBsb2NhbGXsnZgg652867KoXG4gKi9cblNELmVudW1MYWJlbHMgPSAoZW51bU5hbWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4gPT4ge1xuICByZXR1cm4gbmV3IFByb3h5KHt9IGFzIFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4sIHtcbiAgICBnZXQoXywga2V5OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGRpY3RLZXkgPSBcXGBlbnVtLlxcJHtlbnVtTmFtZX0uXFwke2tleX1cXGAgYXMgRGljdEtleTtcbiAgICAgIHJldHVybiBnZXREaWN0VmFsdWUoZGljdEtleSwgZ2V0Q3VycmVudExvY2FsZSgpKTtcbiAgICB9XG4gIH0pO1xufTtcbmAudHJpbSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCh1bmRlZmluZWQsIHRhcmdldCksXG4gICAgICBib2R5LFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIOuqqOuToCBlbnRpdHkuanNvbuyXkOyEnCBlbnRpdHkgbGFiZWxzIOy2lOy2nFxuICAgKiBlbnRpdHkuanNvbuyXkOyEnCDsp4HsoJEg6rSA66as65CY64qUIOqwkuunjCDtj6ztlaggKOyekOuPmSDsg53shLEg6rCSIOygnOyZuClcbiAgICogLSBlbnRpdHkue2VudGl0eUlkfTogZW50aXR5IHRpdGxlXG4gICAqIC0gZW50aXR5LntlbnRpdHlJZH0ue3Byb3BOYW1lfTogcHJvcCBkZXNjXG4gICAqIC0gZW51bS57RW51bUlkfS57dmFsdWV9OiBlbnVtIGxhYmVsXG4gICAqL1xuICBwcml2YXRlIGV4dHJhY3RFbnRpdHlMYWJlbHMoKTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10ge1xuICAgIGNvbnN0IGxhYmVsczogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPSBbXTtcblxuICAgIGlmICghRW50aXR5TWFuYWdlci5pc0F1dG9sb2FkZWQpIHtcbiAgICAgIHJldHVybiBsYWJlbHM7XG4gICAgfVxuXG4gICAgY29uc3QgZW50aXR5SWRzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcblxuICAgIGZvciAoY29uc3QgZW50aXR5SWQgb2YgZW50aXR5SWRzKSB7XG4gICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG5cbiAgICAgIC8vIGVudGl0eSB0aXRsZSAoZW50aXR5Lmpzb27sl5DshJwg6rSA66asKVxuICAgICAgbGFiZWxzLnB1c2goeyBrZXk6IGBlbnRpdHkuJHtlbnRpdHlJZH1gLCB2YWx1ZTogZW50aXR5LnRpdGxlIH0pO1xuXG4gICAgICAvLyBwcm9wIGxhYmVscyAoZW50aXR5Lmpzb27sl5DshJwg6rSA66asKVxuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGVudGl0eS5wcm9wcykge1xuICAgICAgICBpZiAocHJvcC5kZXNjKSB7XG4gICAgICAgICAgbGFiZWxzLnB1c2goeyBrZXk6IGBlbnRpdHkuJHtlbnRpdHlJZH0uJHtwcm9wLm5hbWV9YCwgdmFsdWU6IHByb3AuZGVzYyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBlbnVtIGxhYmVscyAoZW50aXR5Lmpzb27sl5DshJwg6rSA66asKVxuICAgICAgZm9yIChjb25zdCBbZW51bUlkLCBlbnVtTGFiZWxzTWFwXSBvZiBPYmplY3QuZW50cmllcyhlbnRpdHkuZW51bUxhYmVscykpIHtcbiAgICAgICAgZm9yIChjb25zdCBbdmFsdWUsIGxhYmVsXSBvZiBPYmplY3QuZW50cmllcyhlbnVtTGFiZWxzTWFwKSkge1xuICAgICAgICAgIGxhYmVscy5wdXNoKHsga2V5OiBgZW51bS4ke2VudW1JZH0uJHt2YWx1ZX1gLCB2YWx1ZTogbGFiZWwgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIGVudGl0eUxhYmVsc+ulvCBUeXBlU2NyaXB0IOy9lOuTnOuhnCDrs4DtmZhcbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVFbnRpdHlMYWJlbHNDb2RlKGxhYmVsczogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10pOiBzdHJpbmcge1xuICAgIGlmIChsYWJlbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gXCJjb25zdCBlbnRpdHlMYWJlbHMgPSB7fSBhcyBjb25zdDtcIjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gbGFiZWxzLm1hcCgoeyBrZXksIHZhbHVlIH0pID0+IGAgIFwiJHtrZXl9XCI6IFwiJHt0aGlzLmVzY2FwZVN0cmluZyh2YWx1ZSl9XCIsYCk7XG5cbiAgICByZXR1cm4gYGNvbnN0IGVudGl0eUxhYmVscyA9IHtcbiR7ZW50cmllcy5qb2luKFwiXFxuXCIpfVxufSBhcyBjb25zdDtgO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVTdHJpbmcoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKS5yZXBsYWNlKC9cXG4vZywgXCJcXFxcblwiKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX19zZCIsImdldFRhcmdldEFuZFBhdGgiLCJfbmFtZXMiLCJzZFRhcmdldCIsInRhcmdldCIsImRpciIsImNvbmZpZyIsImFwaSIsInBhdGgiLCJyZW5kZXIiLCJvcHRpb25zIiwiaTE4bkNvbmZpZyIsImkxOG4iLCJkZWZhdWx0TG9jYWxlIiwic3VwcG9ydGVkTG9jYWxlcyIsImVudGl0eUxhYmVscyIsImV4dHJhY3RFbnRpdHlMYWJlbHMiLCJsb2NhbGVNYW5hZ2VtZW50Q29kZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0cmltIiwibG9jYWxlSW1wb3J0cyIsIm1hcCIsImxvY2FsZSIsImpvaW4iLCJlbnRpdHlMYWJlbHNDb2RlIiwiZ2VuZXJhdGVFbnRpdHlMYWJlbHNDb2RlIiwiYm9keSIsImZpbHRlciIsInVuZGVmaW5lZCIsImltcG9ydEtleXMiLCJjdXN0b21IZWFkZXJzIiwibGFiZWxzIiwiaXNBdXRvbG9hZGVkIiwiZW50aXR5SWRzIiwiZ2V0QWxsSWRzIiwiZW50aXR5SWQiLCJlbnRpdHkiLCJnZXQiLCJwdXNoIiwia2V5IiwidmFsdWUiLCJ0aXRsZSIsInByb3AiLCJwcm9wcyIsImRlc2MiLCJuYW1lIiwiZW51bUlkIiwiZW51bUxhYmVsc01hcCIsIk9iamVjdCIsImVudHJpZXMiLCJlbnVtTGFiZWxzIiwibGFiZWwiLCJsZW5ndGgiLCJlc2NhcGVTdHJpbmciLCJzdHIiLCJyZXBsYWNlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEsc0JBQW1CO0FBQzFDLFNBQVNDLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUV2Qzs7O0NBR0MsR0FDRCxPQUFPLE1BQU1DLHFCQUFxQkQ7SUFDaEMs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
@@ -1 +1 @@
1
- {"version":3,"file":"view_form.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_form.template.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,mBAAoB,SAAQ,QAAQ;;IAK/C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOhC,mBAAmB,IAAI,MAAM,EAAE,GAAG,IAAI;IAI/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAO5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAI5C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa;IAmBvD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAqEpF,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM;IAmC/C,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC;;;;;;;;;;CAoWxD"}
1
+ {"version":3,"file":"view_form.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_form.template.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,mBAAoB,SAAQ,QAAQ;;IAK/C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOhC,mBAAmB,IAAI,MAAM,EAAE,GAAG,IAAI;IAI/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAO5C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAI5C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa;IAmBvD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAqEpF,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM;IAqC/C,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC;;;;;;;;;;CAoWxD"}