sonamu 0.13.2 → 0.13.4

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 (46) hide show
  1. package/dist/api/decorators.d.ts +2 -3
  2. package/dist/api/decorators.d.ts.map +1 -1
  3. package/dist/api/decorators.js +1 -1
  4. package/dist/api/sonamu.d.ts.map +1 -1
  5. package/dist/api/sonamu.js +5 -5
  6. package/dist/database/base-model.d.ts.map +1 -1
  7. package/dist/database/base-model.js +8 -3
  8. package/dist/database/puri.d.ts +8 -3
  9. package/dist/database/puri.d.ts.map +1 -1
  10. package/dist/database/puri.js +120 -15
  11. package/dist/database/puri.types.d.ts +5 -2
  12. package/dist/database/puri.types.d.ts.map +1 -1
  13. package/dist/database/puri.types.js +1 -1
  14. package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
  15. package/dist/dict/sonamu-dictionary.js +24 -9
  16. package/dist/storage/buffered-file.d.ts +3 -3
  17. package/dist/storage/buffered-file.d.ts.map +1 -1
  18. package/dist/storage/buffered-file.js +2 -2
  19. package/dist/storage/index.d.ts +1 -1
  20. package/dist/storage/index.d.ts.map +1 -1
  21. package/dist/storage/index.js +1 -1
  22. package/dist/storage/storage-manager.d.ts +3 -4
  23. package/dist/storage/storage-manager.d.ts.map +1 -1
  24. package/dist/storage/storage-manager.js +2 -2
  25. package/dist/storage/types.d.ts +3 -2
  26. package/dist/storage/types.d.ts.map +1 -1
  27. package/dist/storage/uploaded-file.d.ts +3 -3
  28. package/dist/storage/uploaded-file.d.ts.map +1 -1
  29. package/dist/storage/uploaded-file.js +1 -1
  30. package/package.json +5 -2
  31. package/src/api/__tests__/sonamu.storage.test.ts +145 -0
  32. package/src/api/decorators.ts +2 -3
  33. package/src/api/sonamu.ts +6 -6
  34. package/src/database/__tests__/puri-hydration.test.ts +226 -0
  35. package/src/database/base-model.ts +7 -3
  36. package/src/database/puri.ts +204 -15
  37. package/src/database/puri.types.test-d.ts +29 -0
  38. package/src/database/puri.types.ts +10 -2
  39. package/src/dict/sonamu-dictionary.ts +28 -6
  40. package/src/storage/__tests__/storage-manager.test.ts +64 -0
  41. package/src/storage/buffered-file.ts +3 -3
  42. package/src/storage/index.ts +1 -1
  43. package/src/storage/storage-manager.ts +4 -5
  44. package/src/storage/storage.test-d.ts +47 -0
  45. package/src/storage/types.ts +3 -2
  46. package/src/storage/uploaded-file.ts +4 -4
@@ -4,8 +4,7 @@ import { type z } from "zod";
4
4
  import { type CacheControlConfig } from "../cache-control/types";
5
5
  import { type CompressConfig } from "../compress/types";
6
6
  import { type TransactionalOptions } from "../database/puri-wrapper";
7
- import { type DriverKey } from "../storage/drivers";
8
- import { type KeyGenerator } from "../storage/types";
7
+ import { type DiskName, type KeyGenerator } from "../storage/types";
9
8
  import { type ApiParam, type ApiParamType } from "../types/types";
10
9
  export interface GuardKeys {
11
10
  query: true;
@@ -55,7 +54,7 @@ type BufferUploadOptions = {
55
54
  };
56
55
  type StreamUploadOptions = {
57
56
  consume: "stream";
58
- destination: DriverKey;
57
+ destination: DiskName;
59
58
  keyGenerator?: KeyGenerator;
60
59
  };
61
60
  export type UploadDecoratorOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"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"}
@@ -273,4 +273,4 @@ var init_decorators = __esmMin((() => {
273
273
  init_decorators();
274
274
  export { api, init_decorators, registeredApis, stream, transactional, upload, websocket };
275
275
 
276
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2RlY29yYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5cbmltcG9ydCB7IHR5cGUgRmFzdGlmeU11bHRpcGFydEJhc2VPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L211bHRpcGFydFwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHR5cGUgSFRUUE1ldGhvZHMgfSBmcm9tIFwiZmFzdGlmeVwiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwicmFkYXNoaVwiO1xuaW1wb3J0IHsgdHlwZSB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyB0eXBlIENhY2hlQ29udHJvbENvbmZpZyB9IGZyb20gXCIuLi9jYWNoZS1jb250cm9sL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXByZXNzQ29uZmlnIH0gZnJvbSBcIi4uL2NvbXByZXNzL3R5cGVzXCI7XG5pbXBvcnQgeyBCYXNlTW9kZWxDbGFzcyB9IGZyb20gXCIuLi9kYXRhYmFzZS9iYXNlLW1vZGVsXCI7XG5pbXBvcnQgeyBEQiB9IGZyb20gXCIuLi9kYXRhYmFzZS9kYlwiO1xuaW1wb3J0IHsgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciB9IGZyb20gXCIuLi9kYXRhYmFzZS9wdXJpLXdyYXBwZXJcIjtcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb25hbE9wdGlvbnMgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyBVcHNlcnRCdWlsZGVyIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3Vwc2VydC1idWlsZGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4uL3N0b3JhZ2UvZHJpdmVyc1wiO1xuaW1wb3J0IHsgdHlwZSBLZXlHZW5lcmF0b3IgfSBmcm9tIFwiLi4vc3RvcmFnZS90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBBcGlQYXJhbSwgdHlwZSBBcGlQYXJhbVR5cGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUgfSBmcm9tIFwiLi4vdXRpbHMvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgQmFzZUZyYW1lQ2xhc3MgfSBmcm9tIFwiLi9iYXNlLWZyYW1lXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3VhcmRLZXlzIHtcbiAgcXVlcnk6IHRydWU7XG4gIGFkbWluOiB0cnVlO1xuICB1c2VyOiB0cnVlO1xufVxuZXhwb3J0IHR5cGUgR3VhcmRLZXkgPSBrZXlvZiBHdWFyZEtleXM7XG5leHBvcnQgdHlwZSBTZXJ2aWNlQ2xpZW50ID1cbiAgfCBcImF4aW9zXCJcbiAgfCBcImF4aW9zLW11bHRpcGFydFwiXG4gIHwgXCJ0YW5zdGFjay1xdWVyeVwiXG4gIHwgXCJ0YW5zdGFjay1tdXRhdGlvblwiXG4gIHwgXCJ0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnRcIlxuICB8IFwid2luZG93LWZldGNoXCI7XG5leHBvcnQgdHlwZSBBcGlEZWNvcmF0b3JPcHRpb25zID0ge1xuICBodHRwTWV0aG9kPzogSFRUUE1ldGhvZHM7XG4gIGNvbnRlbnRUeXBlPzpcbiAgICB8IFwidGV4dC9wbGFpblwiXG4gICAgfCBcInRleHQvaHRtbFwiXG4gICAgfCBcInRleHQveG1sXCJcbiAgICB8IFwiYXBwbGljYXRpb24vanNvblwiXG4gICAgfCBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiO1xuICBjbGllbnRzPzogU2VydmljZUNsaWVudFtdO1xuICBwYXRoPzogc3RyaW5nO1xuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICAvKiogQVBJIOydkeuLteydmCBDYWNoZS1Db250cm9sIO2XpOuNlCDshKTsoJUuIOyEpOygle2VmOyngCDslYrsnLzrqbQgY2FjaGVDb250cm9sSGFuZGxlciDrmJDripQg6riw67O46rCS7J20IOyggeyaqeuQqeuLiOuLpC4gKi9cbiAgY2FjaGVDb250cm9sPzogQ2FjaGVDb250cm9sQ29uZmlnO1xuICAvKiogQVBJIOydkeuLteydmCDslZXstpUg7ISk7KCVLiBmYWxzZeuhnCDshKTsoJXtlZjrqbQg7JWV7LaV7J2EIOu5hO2ZnOyEse2ZlO2VqeuLiOuLpC4gKi9cbiAgY29tcHJlc3M/OiBDb21wcmVzc0NvbmZpZztcbn07XG5leHBvcnQgdHlwZSBTdHJlYW1EZWNvcmF0b3JPcHRpb25zID0ge1xuICB0eXBlOiBcInNzZVwiO1xuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgZXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICBwYXRoPzogc3RyaW5nO1xuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgPSB7XG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIOydtOuypO2KuCDtgqTrs4TroZwg64SY6rKo7KO864qUIOqwkuydtOuvgOuhnCDslrTrlqQg7YOA7J6F7J2065OgIOyDgeq0gOyXhuydjFxuICBvdXRFdmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIOydtOuypO2KuCDtgqTrs4TroZwg64SY6rKo7KO864qUIOqwkuydtOuvgOuhnCDslrTrlqQg7YOA7J6F7J2065OgIOyDgeq0gOyXhuydjFxuICBpbkV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaGVhcnRiZWF0PzogbnVtYmVyO1xuICBuYW1lc3BhY2U/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zID0gV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyAmIHtcbiAgLy8gY29kZWdlbuydtCDtg4DsnoUg7J2066aE7J2EIOyerOyCrOyaqe2VoCDsiJgg7J6I64+E66GdIHN5bmNlcuqwgCBBU1Tsl5DshJwg67O06rCV7ZWY64qUIOuplO2DgOuNsOydtO2EsFxuICBvdXRFdmVudHNUeXBlUmVmPzogQXBpUGFyYW1UeXBlLlJlZjtcbiAgaW5FdmVudHNUeXBlUmVmPzogQXBpUGFyYW1UeXBlLlJlZjtcbn07XG5cbnR5cGUgQnVmZmVyVXBsb2FkT3B0aW9ucyA9IHtcbiAgY29uc3VtZT86IFwiYnVmZmVyXCI7XG59O1xudHlwZSBTdHJlYW1VcGxvYWRPcHRpb25zID0ge1xuICBjb25zdW1lOiBcInN0cmVhbVwiO1xuICBkZXN0aW5hdGlvbjogRHJpdmVyS2V5O1xuICBrZXlHZW5lcmF0b3I/OiBLZXlHZW5lcmF0b3I7XG59O1xuZXhwb3J0IHR5cGUgVXBsb2FkRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGxpbWl0cz86IEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9uc1tcImxpbWl0c1wiXTtcbn0gJiAoQnVmZmVyVXBsb2FkT3B0aW9ucyB8IFN0cmVhbVVwbG9hZE9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJlZEFwaXM6IHtcbiAgLyoqXG4gICAqIG1vZGVsTmFtZeydgCDrqqjrjbgg7YG0656Y7IqkIOydtOumhOyeheuLiOuLpC4gKGV4LiBcIlVzZXJNb2RlbFwiKVxuICAgKi9cbiAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zO1xuICBzdHJlYW1PcHRpb25zPzogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucztcbiAgd2Vic29ja2V0T3B0aW9ucz86IFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucztcbiAgdXBsb2FkT3B0aW9ucz86IFVwbG9hZERlY29yYXRvck9wdGlvbnM7XG59W10gPSBbXTtcbmV4cG9ydCB0eXBlIEV4dGVuZGVkQXBpID0ge1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnM7XG4gIHN0cmVhbU9wdGlvbnM/OiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zO1xuICB3ZWJzb2NrZXRPcHRpb25zPzogUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zO1xuICB1cGxvYWRPcHRpb25zPzogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucztcbiAgdHlwZVBhcmFtZXRlcnM6IEFwaVBhcmFtVHlwZS5UeXBlUGFyYW1bXTtcbiAgcGFyYW1ldGVyczogQXBpUGFyYW1bXTtcbiAgcmV0dXJuVHlwZTogQXBpUGFyYW1UeXBlO1xufTtcbnR5cGUgRGVjb3JhdG9yVGFyZ2V0ID0geyBjb25zdHJ1Y3RvcjogeyBuYW1lOiBzdHJpbmcgfSB9O1xuXG5jb25zdCBkZWNvcmF0b3JUeXBlc0J5VGFyZ2V0ID0gbmV3IFdlYWtNYXA8RGVjb3JhdG9yVGFyZ2V0LCBNYXA8c3RyaW5nLCBzeW1ib2w+PigpO1xuXG5jb25zdCBERUNPUkFUT1JfVFlQRVMgPSB7XG4gIEFQSTogU3ltYm9sKFwiYXBpXCIpLFxuICBTVFJFQU06IFN5bWJvbChcInN0cmVhbVwiKSxcbiAgV0VCU09DS0VUOiBTeW1ib2woXCJ3ZWJzb2NrZXRcIiksXG4gIFVQTE9BRDogU3ltYm9sKFwidXBsb2FkXCIpLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlY29yYXRvclR5cGU6IHN5bWJvbCkge1xuICBjb25zdCBkZWNvcmF0b3JUeXBlcyA9IGRlY29yYXRvclR5cGVzQnlUYXJnZXQuZ2V0KHRhcmdldCkgPz8gbmV3IE1hcDxzdHJpbmcsIHN5bWJvbD4oKTtcbiAgY29uc3QgZXhpc3RpbmdEZWNvcmF0b3JUeXBlID0gZGVjb3JhdG9yVHlwZXMuZ2V0KHByb3BlcnR5S2V5KTtcblxuICBpZiAoZXhpc3RpbmdEZWNvcmF0b3JUeXBlICYmIGV4aXN0aW5nRGVjb3JhdG9yVHlwZSAhPT0gZGVjb3JhdG9yVHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBAJHtkZWNvcmF0b3JUeXBlLmRlc2NyaXB0aW9uID8/IFN0cmluZyhkZWNvcmF0b3JUeXBlKX0gZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fS4gWW91IGNhbiB1c2Ugb25seSBvbmUgb2YgQGFwaSwgQHN0cmVhbSwgQHdlYnNvY2tldCwgb3IgQHVwbG9hZCBkZWNvcmF0b3Igb24gdGhlIHNhbWUgbWV0aG9kLmAsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBkZWNvcmF0b3JUeXBlcy5zZXQocHJvcGVydHlLZXksIGRlY29yYXRvclR5cGUpO1xuICAgIGRlY29yYXRvclR5cGVzQnlUYXJnZXQuc2V0KHRhcmdldCwgZGVjb3JhdG9yVHlwZXMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcGkob3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHt9KSB7XG4gIG9wdGlvbnMgPSB7XG4gICAgaHR0cE1ldGhvZDogXCJHRVRcIixcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgY2xpZW50czogW1wiYXhpb3NcIl0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcblxuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lKHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBhcGkgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuQVBJKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuXG4gICAgLy8g6riw7KG0IOuPmeydvO2VnCDrqZTshJzrk5zqsIAg7J6I64qU7KeAIO2ZleyduCDtm4Qg7J6I64qUIOqyveyasCBvdmVycmlkZVxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChyZWdpc3RlcmVkQXBpKSA9PlxuICAgICAgICByZWdpc3RlcmVkQXBpLm1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lICYmIHJlZ2lzdGVyZWRBcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcImFwaVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnMsIC8vIEBhcGkg642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbShvcHRpb25zOiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHN0cmVhbSBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgLy8g66mU7ISc65Oc7JeQIOqxuOumsCDrjbDsvZTroIjsnbTthLAg7KSR67O1IOyytO2BrFxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5TVFJFQU0pO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKHByb3BlcnR5S2V5LCB0cnVlKX1gO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zLnBhdGggPz8gZGVmYXVsdFBhdGg7XG4gICAgLy8gc3RyZWFtIOyghOyaqSDtlYTrk5woZXZlbnRzLCB0eXBlKeuKlCBBcGlEZWNvcmF0b3JPcHRpb25z7JeQIOyGje2VmOyngCDslYrsnLzrr4DroZwg7KCc7Jm4XG4gICAgY29uc3QgeyBldmVudHM6IF8sIHR5cGU6IF90eXBlLCAuLi5hcGlPcHRpb25zIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoRGVmYXVsdHMgPSB7XG4gICAgICAuLi5hcGlPcHRpb25zLFxuICAgICAgaHR0cE1ldGhvZDpcbiAgICAgICAgLyogU0FGRVRZOiBBUEkg642w7L2U66CI7J207YSw7JmAIFpvZCDqsoDspp3quLAg65Ox66GdIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChyZWdpc3RlcmVkQXBpKSA9PlxuICAgICAgICByZWdpc3RlcmVkQXBpLm1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lICYmIHJlZ2lzdGVyZWRBcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHdlYnNvY2tldCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLldFQlNPQ0tFVCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcbiAgICBjb25zdCB7IG91dEV2ZW50czogX291dEV2ZW50cywgaW5FdmVudHM6IF9pbkV2ZW50cywgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6XG4gICAgICAgIC8qIFNBRkVUWTogQVBJIOuNsOy9lOugiOydtO2EsOyZgCBab2Qg6rKA7Kad6riwIOuTseuhnSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBcIkdFVFwiIGFzIEhUVFBNZXRob2RzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAocmVnaXN0ZXJlZEFwaSkgPT5cbiAgICAgICAgcmVnaXN0ZXJlZEFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiByZWdpc3RlcmVkQXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFwid2Vic29ja2V0XCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkucGF0aCwgcGF0aCk7XG4gICAgICBleGlzdGluZ0FwaS5wYXRoID0gcGF0aDtcblxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwid2Vic29ja2V0XCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkud2Vic29ja2V0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHdlYnNvY2tldE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcIndlYnNvY2tldDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwob3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHRyYW5zYWN0aW9uYWwgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJ0cmFuc2FjdGlvbmFsOiB7bW9kZWx9LnttZXRob2R9XCIsIHtcbiAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4gg7Yq4656c7J6t7IWY6rO8IHNjb3Bl66W8IO2VqOq7mCDsi5zsnpHtlZzri6QuXG4gICAgICBjb25zdCBzdGFydFRyYW5zYWN0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBwdXJpID0gdGhpcy5nZXRQdXJpKGRiUHJlc2V0KTtcblxuICAgICAgICByZXR1cm4gcHVyaS5rbmV4LnRyYW5zYWN0aW9uKFxuICAgICAgICAgIGFzeW5jICh0cngpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwibmV3IHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRyeFdyYXBwZXIgPSBuZXcgUHVyaVRyYW5zYWN0aW9uV3JhcHBlcih0cngsIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uU2NvcGUoZGJQcmVzZXQsIHRyeFdyYXBwZXIsICgpID0+XG4gICAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgaXNvbGF0aW9uTGV2ZWw6IGlzb2xhdGlvbiwgcmVhZE9ubHkgfSxcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nVHJhbnNhY3Rpb24gPSBEQi50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKT8uZ2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQpO1xuICAgICAgaWYgKGV4aXN0aW5nVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXVzZSB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgIC8vIOuLpOuluCBwcmVzZXTsnbQg7JWI7Kq97JeQIOyeiOyWtOuPhCDsnbQg66mU7ISc65Oc6rCAIOyerOyCrOyaqe2VnCDtirjrnpzsnq3shZjsnYQg7ZiE7J6sIHNjb3Bl66GcIO2RnOyLnO2VnOuLpC5cbiAgICAgICAgcmV0dXJuIERCLnJ1bldpdGhUcmFuc2FjdGlvblNjb3BlKGRiUHJlc2V0LCBleGlzdGluZ1RyYW5zYWN0aW9uLCAoKSA9PlxuICAgICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDtjIzsnbwg7JeF66Gc65OcIEFQSeulvCDsg53shLHtlbTspI3ri4jri6QuIChAYXBpIOuNsOy9lOugiOydtO2EsCDsl4bsnbQg64+F66a97KCB7Jy866GcIOyCrOyaqSlcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkKG9wdGlvbnM6IFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7IGNvbnN1bWU6IFwiYnVmZmVyXCIgfSkge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSh0YXJnZXQuY29uc3RydWN0b3IubmFtZSk7XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAdXBsb2FkIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyDrqZTshJzrk5zsl5Ag6rG466awIOuNsOy9lOugiOydtO2EsCDspJHrs7Ug7LK07YGsXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLlVQTE9BRCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUobWV0aG9kTmFtZSwgdHJ1ZSl9YDtcblxuICAgIC8vIHJlZ2lzdGVyZWRBcGlz7JeQ7IScIO2VtOuLuSBBUEkg7LC+7JWE7IScIHVwbG9hZE9wdGlvbnMg7LaU6rCAXG4gICAgY29uc3QgZXhpc3RpbmdBcGkgPSByZWdpc3RlcmVkQXBpcy5maW5kKFxuICAgICAgKHJlZ2lzdGVyZWRBcGkpID0+XG4gICAgICAgIHJlZ2lzdGVyZWRBcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgcmVnaXN0ZXJlZEFwaS5tZXRob2ROYW1lID09PSBtZXRob2ROYW1lLFxuICAgICk7XG5cbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIC8vIOyerOuTseuhnSDsi5wg7JeF66Gc65OcIOyYteyFmOunjCDqsLHsi6BcbiAgICAgIGV4aXN0aW5nQXBpLnVwbG9hZE9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDsg4jroZwg65Ox66GdXG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoOiBkZWZhdWx0UGF0aCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGNsaWVudHM6IFtcImF4aW9zLW11bHRpcGFydFwiLCBcInRhbnN0YWNrLW11dGF0aW9uLW11bHRpcGFydFwiXSxcbiAgICAgICAgICBndWFyZHM6IG9wdGlvbnMuZ3VhcmRzLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICB9LFxuICAgICAgICB1cGxvYWRPcHRpb25zOiBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwidXBsb2FkOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIOq4sOyhtOydmCBwYXRo7JmAIOyDiOuhnOyatCBwYXRo6rCAIOuLpOultOuLpOuptCg96rCS7J20IOyeiOuNmCDsiqTtirjrp4HsnbQg64uk66W4IOqwkuydtCDsnojripQg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gKiBAcGFyYW0gZGVjb3JhdG9yTmFtZSDrjbDsvZTroIjsnbTthLAg7J2066aEXG4gKiBAcGFyYW0gbW9kZWxOYW1lIOuqqOuNuCDsnbTrpoRcbiAqIEBwYXJhbSBtZXRob2ROYW1lIOuplOyEnOuTnCDsnbTrpoRcbiAqIEBwYXJhbSBleGlzdGluZ1BhdGgg6riw7KG07J2YIHBhdGhcbiAqIEBwYXJhbSBuZXdQYXRoIOyDiOuhnOyatCBwYXRoXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIGV4aXN0aW5nUGF0aDogc3RyaW5nLFxuICBuZXdQYXRoOiBzdHJpbmcsXG4pIHtcbiAgaWYgKGV4aXN0aW5nUGF0aCAhPT0gXCJcIiAmJiBuZXdQYXRoICE9PSBcIlwiICYmIGV4aXN0aW5nUGF0aCAhPT0gbmV3UGF0aCkge1xuICAgIC8vIOydtOqyg+ydtCDrrLTsiqgg7IOB7Zmp7J2064OQ66m07JqULCBhcGkucGF0aOqwgCDrja7slrTslIzsm4zsp4DripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOqwgOuguSBAYXBpKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzXCIgfSkg642w7L2U66CI7J207YSw6rCAIOu2meyWtOyeiOuKlCDrqZTshJzrk5zsl5BcbiAgICAvLyBAc3RyZWFtKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzL3N0cmVhbVwiIH0pIOqwmeydgCDqsoPsnbQg67aZ7Ja0IOyeiOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgLy8g7J2066CH6rKMIOuQmOuptCDrkZAg642w7L2U66CI7J207YSw6rCAIOqwmeydgCBhcGnsnZggcGF0aCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yTmFtZX0gZGVjb3JhdG9yIG9uICR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9IGhhcyBjb25mbGljdGluZyBwYXRoOiAke25ld1BhdGh9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcGF0aCgke2V4aXN0aW5nUGF0aH0pIHdpdGggdGhlIG5ldyBwYXRoKCR7bmV3UGF0aH0pLmAsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdPcHRpb25zIOq4sOyhtOydmCDsmLXshZhcbiAqIEBwYXJhbSBuZXdPcHRpb25zIOyDiOuhnOyatCDsmLXshZhcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnM8RXhpc3RpbmdPcHRpb25zIGV4dGVuZHMgb2JqZWN0LCBOZXdPcHRpb25zIGV4dGVuZHMgb2JqZWN0PihcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ09wdGlvbnM6IEV4aXN0aW5nT3B0aW9ucyxcbiAgbmV3T3B0aW9uczogTmV3T3B0aW9ucyxcbikge1xuICBjb25zdCBleGlzdGluZ0VudHJpZXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGV4aXN0aW5nT3B0aW9ucykpO1xuICBPYmplY3QuZW50cmllcyhuZXdPcHRpb25zKS5mb3JFYWNoKChba2V5LCBuZXdWYWx1ZV0pID0+IHtcbiAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gZXhpc3RpbmdFbnRyaWVzLmdldChrZXkpO1xuICAgIGlmIChleGlzdGluZ1ZhbHVlICYmICFpc0VxdWFsKGV4aXN0aW5nVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdWYWx1ZSl9KSB3aXRoIHRoZSBuZXcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpfSkuYCxcbiAgICAgICk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQW1JQSxTQUFTLHFCQUFxQixRQUF5QixhQUFxQixlQUF1QjtDQUNqRyxNQUFNLGlCQUFpQix1QkFBdUIsSUFBSSxNQUFNLHFCQUFLLElBQUksSUFBb0I7Q0FDckYsTUFBTSx3QkFBd0IsZUFBZSxJQUFJLFdBQVc7Q0FFNUQsSUFBSSx5QkFBeUIsMEJBQTBCLGVBQ3JELE1BQU0sSUFBSSxNQUNSLElBQUksY0FBYyxlQUFlLE9BQU8sYUFBYSxFQUFFLHNDQUFzQyxPQUFPLFlBQVks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
276
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL2RlY29yYXRvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCI7XG5cbmltcG9ydCB7IHR5cGUgRmFzdGlmeU11bHRpcGFydEJhc2VPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L211bHRpcGFydFwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHR5cGUgSFRUUE1ldGhvZHMgfSBmcm9tIFwiZmFzdGlmeVwiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwicmFkYXNoaVwiO1xuaW1wb3J0IHsgdHlwZSB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyB0eXBlIENhY2hlQ29udHJvbENvbmZpZyB9IGZyb20gXCIuLi9jYWNoZS1jb250cm9sL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXByZXNzQ29uZmlnIH0gZnJvbSBcIi4uL2NvbXByZXNzL3R5cGVzXCI7XG5pbXBvcnQgeyBCYXNlTW9kZWxDbGFzcyB9IGZyb20gXCIuLi9kYXRhYmFzZS9iYXNlLW1vZGVsXCI7XG5pbXBvcnQgeyBEQiB9IGZyb20gXCIuLi9kYXRhYmFzZS9kYlwiO1xuaW1wb3J0IHsgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciB9IGZyb20gXCIuLi9kYXRhYmFzZS9wdXJpLXdyYXBwZXJcIjtcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb25hbE9wdGlvbnMgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyBVcHNlcnRCdWlsZGVyIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3Vwc2VydC1idWlsZGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB7IHR5cGUgRGlza05hbWUsIHR5cGUgS2V5R2VuZXJhdG9yIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lIH0gZnJvbSBcIi4uL3V0aWxzL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IEJhc2VGcmFtZUNsYXNzIH0gZnJvbSBcIi4vYmFzZS1mcmFtZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkS2V5cyB7XG4gIHF1ZXJ5OiB0cnVlO1xuICBhZG1pbjogdHJ1ZTtcbiAgdXNlcjogdHJ1ZTtcbn1cbmV4cG9ydCB0eXBlIEd1YXJkS2V5ID0ga2V5b2YgR3VhcmRLZXlzO1xuZXhwb3J0IHR5cGUgU2VydmljZUNsaWVudCA9XG4gIHwgXCJheGlvc1wiXG4gIHwgXCJheGlvcy1tdWx0aXBhcnRcIlxuICB8IFwidGFuc3RhY2stcXVlcnlcIlxuICB8IFwidGFuc3RhY2stbXV0YXRpb25cIlxuICB8IFwidGFuc3RhY2stbXV0YXRpb24tbXVsdGlwYXJ0XCJcbiAgfCBcIndpbmRvdy1mZXRjaFwiO1xuZXhwb3J0IHR5cGUgQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgaHR0cE1ldGhvZD86IEhUVFBNZXRob2RzO1xuICBjb250ZW50VHlwZT86XG4gICAgfCBcInRleHQvcGxhaW5cIlxuICAgIHwgXCJ0ZXh0L2h0bWxcIlxuICAgIHwgXCJ0ZXh0L3htbFwiXG4gICAgfCBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgY2xpZW50cz86IFNlcnZpY2VDbGllbnRbXTtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbiAgLyoqIEFQSSDsnZHri7XsnZggQ2FjaGUtQ29udHJvbCDtl6TrjZQg7ISk7KCVLiDshKTsoJXtlZjsp4Ag7JWK7Jy866m0IGNhY2hlQ29udHJvbEhhbmRsZXIg65iQ64qUIOq4sOuzuOqwkuydtCDsoIHsmqnrkKnri4jri6QuICovXG4gIGNhY2hlQ29udHJvbD86IENhY2hlQ29udHJvbENvbmZpZztcbiAgLyoqIEFQSSDsnZHri7XsnZgg7JWV7LaVIOyEpOyglS4gZmFsc2XroZwg7ISk7KCV7ZWY66m0IOyVley2leydhCDruYTtmZzshLHtmZTtlanri4jri6QuICovXG4gIGNvbXByZXNzPzogQ29tcHJlc3NDb25maWc7XG59O1xuZXhwb3J0IHR5cGUgU3RyZWFtRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJzc2VcIjtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIGV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zID0ge1xuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgb3V0RXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgaW5FdmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGhlYXJ0YmVhdD86IG51bWJlcjtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyA9IFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgJiB7XG4gIC8vIGNvZGVnZW7snbQg7YOA7J6FIOydtOumhOydhCDsnqzsgqzsmqntlaAg7IiYIOyeiOuPhOuhnSBzeW5jZXLqsIAgQVNU7JeQ7IScIOuztOqwle2VmOuKlCDrqZTtg4DrjbDsnbTthLBcbiAgb3V0RXZlbnRzVHlwZVJlZj86IEFwaVBhcmFtVHlwZS5SZWY7XG4gIGluRXZlbnRzVHlwZVJlZj86IEFwaVBhcmFtVHlwZS5SZWY7XG59O1xuXG50eXBlIEJ1ZmZlclVwbG9hZE9wdGlvbnMgPSB7XG4gIGNvbnN1bWU/OiBcImJ1ZmZlclwiO1xufTtcbnR5cGUgU3RyZWFtVXBsb2FkT3B0aW9ucyA9IHtcbiAgY29uc3VtZTogXCJzdHJlYW1cIjtcbiAgZGVzdGluYXRpb246IERpc2tOYW1lO1xuICBrZXlHZW5lcmF0b3I/OiBLZXlHZW5lcmF0b3I7XG59O1xuZXhwb3J0IHR5cGUgVXBsb2FkRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGxpbWl0cz86IEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9uc1tcImxpbWl0c1wiXTtcbn0gJiAoQnVmZmVyVXBsb2FkT3B0aW9ucyB8IFN0cmVhbVVwbG9hZE9wdGlvbnMpO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJlZEFwaXM6IHtcbiAgLyoqXG4gICAqIG1vZGVsTmFtZeydgCDrqqjrjbgg7YG0656Y7IqkIOydtOumhOyeheuLiOuLpC4gKGV4LiBcIlVzZXJNb2RlbFwiKVxuICAgKi9cbiAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zO1xuICBzdHJlYW1PcHRpb25zPzogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucztcbiAgd2Vic29ja2V0T3B0aW9ucz86IFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucztcbiAgdXBsb2FkT3B0aW9ucz86IFVwbG9hZERlY29yYXRvck9wdGlvbnM7XG59W10gPSBbXTtcbmV4cG9ydCB0eXBlIEV4dGVuZGVkQXBpID0ge1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnM7XG4gIHN0cmVhbU9wdGlvbnM/OiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zO1xuICB3ZWJzb2NrZXRPcHRpb25zPzogUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zO1xuICB1cGxvYWRPcHRpb25zPzogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucztcbiAgdHlwZVBhcmFtZXRlcnM6IEFwaVBhcmFtVHlwZS5UeXBlUGFyYW1bXTtcbiAgcGFyYW1ldGVyczogQXBpUGFyYW1bXTtcbiAgcmV0dXJuVHlwZTogQXBpUGFyYW1UeXBlO1xufTtcbnR5cGUgRGVjb3JhdG9yVGFyZ2V0ID0geyBjb25zdHJ1Y3RvcjogeyBuYW1lOiBzdHJpbmcgfSB9O1xuXG5jb25zdCBkZWNvcmF0b3JUeXBlc0J5VGFyZ2V0ID0gbmV3IFdlYWtNYXA8RGVjb3JhdG9yVGFyZ2V0LCBNYXA8c3RyaW5nLCBzeW1ib2w+PigpO1xuXG5jb25zdCBERUNPUkFUT1JfVFlQRVMgPSB7XG4gIEFQSTogU3ltYm9sKFwiYXBpXCIpLFxuICBTVFJFQU06IFN5bWJvbChcInN0cmVhbVwiKSxcbiAgV0VCU09DS0VUOiBTeW1ib2woXCJ3ZWJzb2NrZXRcIiksXG4gIFVQTE9BRDogU3ltYm9sKFwidXBsb2FkXCIpLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlY29yYXRvclR5cGU6IHN5bWJvbCkge1xuICBjb25zdCBkZWNvcmF0b3JUeXBlcyA9IGRlY29yYXRvclR5cGVzQnlUYXJnZXQuZ2V0KHRhcmdldCkgPz8gbmV3IE1hcDxzdHJpbmcsIHN5bWJvbD4oKTtcbiAgY29uc3QgZXhpc3RpbmdEZWNvcmF0b3JUeXBlID0gZGVjb3JhdG9yVHlwZXMuZ2V0KHByb3BlcnR5S2V5KTtcblxuICBpZiAoZXhpc3RpbmdEZWNvcmF0b3JUeXBlICYmIGV4aXN0aW5nRGVjb3JhdG9yVHlwZSAhPT0gZGVjb3JhdG9yVHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBAJHtkZWNvcmF0b3JUeXBlLmRlc2NyaXB0aW9uID8/IFN0cmluZyhkZWNvcmF0b3JUeXBlKX0gZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fS4gWW91IGNhbiB1c2Ugb25seSBvbmUgb2YgQGFwaSwgQHN0cmVhbSwgQHdlYnNvY2tldCwgb3IgQHVwbG9hZCBkZWNvcmF0b3Igb24gdGhlIHNhbWUgbWV0aG9kLmAsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBkZWNvcmF0b3JUeXBlcy5zZXQocHJvcGVydHlLZXksIGRlY29yYXRvclR5cGUpO1xuICAgIGRlY29yYXRvclR5cGVzQnlUYXJnZXQuc2V0KHRhcmdldCwgZGVjb3JhdG9yVHlwZXMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcGkob3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHt9KSB7XG4gIG9wdGlvbnMgPSB7XG4gICAgaHR0cE1ldGhvZDogXCJHRVRcIixcbiAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgY2xpZW50czogW1wiYXhpb3NcIl0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcblxuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lKHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBhcGkgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuQVBJKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuXG4gICAgLy8g6riw7KG0IOuPmeydvO2VnCDrqZTshJzrk5zqsIAg7J6I64qU7KeAIO2ZleyduCDtm4Qg7J6I64qUIOqyveyasCBvdmVycmlkZVxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChyZWdpc3RlcmVkQXBpKSA9PlxuICAgICAgICByZWdpc3RlcmVkQXBpLm1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lICYmIHJlZ2lzdGVyZWRBcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcImFwaVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnMsIC8vIEBhcGkg642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbShvcHRpb25zOiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHN0cmVhbSBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgLy8g66mU7ISc65Oc7JeQIOqxuOumsCDrjbDsvZTroIjsnbTthLAg7KSR67O1IOyytO2BrFxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5TVFJFQU0pO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKHByb3BlcnR5S2V5LCB0cnVlKX1gO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zLnBhdGggPz8gZGVmYXVsdFBhdGg7XG4gICAgLy8gc3RyZWFtIOyghOyaqSDtlYTrk5woZXZlbnRzLCB0eXBlKeuKlCBBcGlEZWNvcmF0b3JPcHRpb25z7JeQIOyGje2VmOyngCDslYrsnLzrr4DroZwg7KCc7Jm4XG4gICAgY29uc3QgeyBldmVudHM6IF8sIHR5cGU6IF90eXBlLCAuLi5hcGlPcHRpb25zIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoRGVmYXVsdHMgPSB7XG4gICAgICAuLi5hcGlPcHRpb25zLFxuICAgICAgaHR0cE1ldGhvZDpcbiAgICAgICAgLyogU0FGRVRZOiBBUEkg642w7L2U66CI7J207YSw7JmAIFpvZCDqsoDspp3quLAg65Ox66GdIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChyZWdpc3RlcmVkQXBpKSA9PlxuICAgICAgICByZWdpc3RlcmVkQXBpLm1vZGVsTmFtZSA9PT0gbW9kZWxOYW1lICYmIHJlZ2lzdGVyZWRBcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHdlYnNvY2tldCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLldFQlNPQ0tFVCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcbiAgICBjb25zdCB7IG91dEV2ZW50czogX291dEV2ZW50cywgaW5FdmVudHM6IF9pbkV2ZW50cywgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6XG4gICAgICAgIC8qIFNBRkVUWTogQVBJIOuNsOy9lOugiOydtO2EsOyZgCBab2Qg6rKA7Kad6riwIOuTseuhnSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBcIkdFVFwiIGFzIEhUVFBNZXRob2RzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAocmVnaXN0ZXJlZEFwaSkgPT5cbiAgICAgICAgcmVnaXN0ZXJlZEFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiByZWdpc3RlcmVkQXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFwid2Vic29ja2V0XCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkucGF0aCwgcGF0aCk7XG4gICAgICBleGlzdGluZ0FwaS5wYXRoID0gcGF0aDtcblxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwid2Vic29ja2V0XCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkud2Vic29ja2V0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHdlYnNvY2tldE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcIndlYnNvY2tldDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwob3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHRyYW5zYWN0aW9uYWwgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJ0cmFuc2FjdGlvbmFsOiB7bW9kZWx9LnttZXRob2R9XCIsIHtcbiAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOyXhuycvOuptCDsg4gg7Yq4656c7J6t7IWY6rO8IHNjb3Bl66W8IO2VqOq7mCDsi5zsnpHtlZzri6QuXG4gICAgICBjb25zdCBzdGFydFRyYW5zYWN0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBwdXJpID0gdGhpcy5nZXRQdXJpKGRiUHJlc2V0KTtcblxuICAgICAgICByZXR1cm4gcHVyaS5rbmV4LnRyYW5zYWN0aW9uKFxuICAgICAgICAgIGFzeW5jICh0cngpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwibmV3IHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRyeFdyYXBwZXIgPSBuZXcgUHVyaVRyYW5zYWN0aW9uV3JhcHBlcih0cngsIG5ldyBVcHNlcnRCdWlsZGVyKCkpO1xuXG4gICAgICAgICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uU2NvcGUoZGJQcmVzZXQsIHRyeFdyYXBwZXIsICgpID0+XG4gICAgICAgICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgaXNvbGF0aW9uTGV2ZWw6IGlzb2xhdGlvbiwgcmVhZE9ubHkgfSxcbiAgICAgICAgKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGV4aXN0aW5nVHJhbnNhY3Rpb24gPSBEQi50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKT8uZ2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQpO1xuICAgICAgaWYgKGV4aXN0aW5nVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXVzZSB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgIC8vIOuLpOuluCBwcmVzZXTsnbQg7JWI7Kq97JeQIOyeiOyWtOuPhCDsnbQg66mU7ISc65Oc6rCAIOyerOyCrOyaqe2VnCDtirjrnpzsnq3shZjsnYQg7ZiE7J6sIHNjb3Bl66GcIO2RnOyLnO2VnOuLpC5cbiAgICAgICAgcmV0dXJuIERCLnJ1bldpdGhUcmFuc2FjdGlvblNjb3BlKGRiUHJlc2V0LCBleGlzdGluZ1RyYW5zYWN0aW9uLCAoKSA9PlxuICAgICAgICAgIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDtjIzsnbwg7JeF66Gc65OcIEFQSeulvCDsg53shLHtlbTspI3ri4jri6QuIChAYXBpIOuNsOy9lOugiOydtO2EsCDsl4bsnbQg64+F66a97KCB7Jy866GcIOyCrOyaqSlcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkKG9wdGlvbnM6IFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7IGNvbnN1bWU6IFwiYnVmZmVyXCIgfSkge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSh0YXJnZXQuY29uc3RydWN0b3IubmFtZSk7XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAdXBsb2FkIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyDrqZTshJzrk5zsl5Ag6rG466awIOuNsOy9lOugiOydtO2EsCDspJHrs7Ug7LK07YGsXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLlVQTE9BRCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUobWV0aG9kTmFtZSwgdHJ1ZSl9YDtcblxuICAgIC8vIHJlZ2lzdGVyZWRBcGlz7JeQ7IScIO2VtOuLuSBBUEkg7LC+7JWE7IScIHVwbG9hZE9wdGlvbnMg7LaU6rCAXG4gICAgY29uc3QgZXhpc3RpbmdBcGkgPSByZWdpc3RlcmVkQXBpcy5maW5kKFxuICAgICAgKHJlZ2lzdGVyZWRBcGkpID0+XG4gICAgICAgIHJlZ2lzdGVyZWRBcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgcmVnaXN0ZXJlZEFwaS5tZXRob2ROYW1lID09PSBtZXRob2ROYW1lLFxuICAgICk7XG5cbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIC8vIOyerOuTseuhnSDsi5wg7JeF66Gc65OcIOyYteyFmOunjCDqsLHsi6BcbiAgICAgIGV4aXN0aW5nQXBpLnVwbG9hZE9wdGlvbnMgPSBvcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDsg4jroZwg65Ox66GdXG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoOiBkZWZhdWx0UGF0aCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGh0dHBNZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGNsaWVudHM6IFtcImF4aW9zLW11bHRpcGFydFwiLCBcInRhbnN0YWNrLW11dGF0aW9uLW11bHRpcGFydFwiXSxcbiAgICAgICAgICBndWFyZHM6IG9wdGlvbnMuZ3VhcmRzLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBvcHRpb25zLmRlc2NyaXB0aW9uLFxuICAgICAgICB9LFxuICAgICAgICB1cGxvYWRPcHRpb25zOiBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwidXBsb2FkOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICB9O1xufVxuXG4vKipcbiAqIOq4sOyhtOydmCBwYXRo7JmAIOyDiOuhnOyatCBwYXRo6rCAIOuLpOultOuLpOuptCg96rCS7J20IOyeiOuNmCDsiqTtirjrp4HsnbQg64uk66W4IOqwkuydtCDsnojripQg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gKiBAcGFyYW0gZGVjb3JhdG9yTmFtZSDrjbDsvZTroIjsnbTthLAg7J2066aEXG4gKiBAcGFyYW0gbW9kZWxOYW1lIOuqqOuNuCDsnbTrpoRcbiAqIEBwYXJhbSBtZXRob2ROYW1lIOuplOyEnOuTnCDsnbTrpoRcbiAqIEBwYXJhbSBleGlzdGluZ1BhdGgg6riw7KG07J2YIHBhdGhcbiAqIEBwYXJhbSBuZXdQYXRoIOyDiOuhnOyatCBwYXRoXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIGV4aXN0aW5nUGF0aDogc3RyaW5nLFxuICBuZXdQYXRoOiBzdHJpbmcsXG4pIHtcbiAgaWYgKGV4aXN0aW5nUGF0aCAhPT0gXCJcIiAmJiBuZXdQYXRoICE9PSBcIlwiICYmIGV4aXN0aW5nUGF0aCAhPT0gbmV3UGF0aCkge1xuICAgIC8vIOydtOqyg+ydtCDrrLTsiqgg7IOB7Zmp7J2064OQ66m07JqULCBhcGkucGF0aOqwgCDrja7slrTslIzsm4zsp4DripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOqwgOuguSBAYXBpKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzXCIgfSkg642w7L2U66CI7J207YSw6rCAIOu2meyWtOyeiOuKlCDrqZTshJzrk5zsl5BcbiAgICAvLyBAc3RyZWFtKHsgcGF0aDogXCIvYXBpL3YxL3VzZXJzL3N0cmVhbVwiIH0pIOqwmeydgCDqsoPsnbQg67aZ7Ja0IOyeiOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgLy8g7J2066CH6rKMIOuQmOuptCDrkZAg642w7L2U66CI7J207YSw6rCAIOqwmeydgCBhcGnsnZggcGF0aCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yTmFtZX0gZGVjb3JhdG9yIG9uICR7bW9kZWxOYW1lfS4ke21ldGhvZE5hbWV9IGhhcyBjb25mbGljdGluZyBwYXRoOiAke25ld1BhdGh9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcGF0aCgke2V4aXN0aW5nUGF0aH0pIHdpdGggdGhlIG5ldyBwYXRoKCR7bmV3UGF0aH0pLmAsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdPcHRpb25zIOq4sOyhtOydmCDsmLXshZhcbiAqIEBwYXJhbSBuZXdPcHRpb25zIOyDiOuhnOyatCDsmLXshZhcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnM8RXhpc3RpbmdPcHRpb25zIGV4dGVuZHMgb2JqZWN0LCBOZXdPcHRpb25zIGV4dGVuZHMgb2JqZWN0PihcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ09wdGlvbnM6IEV4aXN0aW5nT3B0aW9ucyxcbiAgbmV3T3B0aW9uczogTmV3T3B0aW9ucyxcbikge1xuICBjb25zdCBleGlzdGluZ0VudHJpZXMgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGV4aXN0aW5nT3B0aW9ucykpO1xuICBPYmplY3QuZW50cmllcyhuZXdPcHRpb25zKS5mb3JFYWNoKChba2V5LCBuZXdWYWx1ZV0pID0+IHtcbiAgICBjb25zdCBleGlzdGluZ1ZhbHVlID0gZXhpc3RpbmdFbnRyaWVzLmdldChrZXkpO1xuICAgIGlmIChleGlzdGluZ1ZhbHVlICYmICFpc0VxdWFsKGV4aXN0aW5nVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdWYWx1ZSl9KSB3aXRoIHRoZSBuZXcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpfSkuYCxcbiAgICAgICk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWtJQSxTQUFTLHFCQUFxQixRQUF5QixhQUFxQixlQUF1QjtDQUNqRyxNQUFNLGlCQUFpQix1QkFBdUIsSUFBSSxNQUFNLHFCQUFLLElBQUksSUFBb0I7Q0FDckYsTUFBTSx3QkFBd0IsZUFBZSxJQUFJLFdBQVc7Q0FFNUQsSUFBSSx5QkFBeUIsMEJBQTBCLGVBQ3JELE1BQU0sSUFBSSxNQUNSLElBQUksY0FBYyxlQUFlLE9BQU8sYUFBYSxFQUFFLHNDQUFzQyxPQUFPLFlBQVksS0FBSyxHQUFHLFlBQVksOEZBQ3RJO01BQ0s7RUFDTCxlQUFlLElBQUks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
@@ -1 +1 @@
1
- {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}