sonamu 0.9.8 → 0.9.10
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.
- package/dist/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/agents/agent.js +4 -2
- package/dist/ai/providers/rtzr/api.d.ts +1 -1
- package/dist/api/decorators.d.ts +0 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +8 -6
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +123 -12
- package/dist/api/websocket-helpers.d.ts +1 -3
- package/dist/api/websocket-helpers.d.ts.map +1 -1
- package/dist/api/websocket-helpers.js +2 -15
- package/dist/stream/index.d.ts +3 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +8 -2
- package/dist/stream/ws-core.d.ts +1 -0
- package/dist/stream/ws-core.d.ts.map +1 -1
- package/dist/stream/ws-delivery.d.ts +8 -0
- package/dist/stream/ws-delivery.d.ts.map +1 -1
- package/dist/stream/ws-delivery.js +160 -14
- package/dist/stream/ws-local-connection-store.d.ts +2 -0
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
- package/dist/stream/ws-local-connection-store.js +21 -1
- package/dist/stream/ws-registry.d.ts +6 -2
- package/dist/stream/ws-registry.d.ts.map +1 -1
- package/dist/stream/ws-registry.js +170 -6
- package/dist/stream/ws-telemetry-memory.d.ts +28 -0
- package/dist/stream/ws-telemetry-memory.d.ts.map +1 -0
- package/dist/stream/ws-telemetry-memory.js +180 -0
- package/dist/stream/ws-telemetry-trace.d.ts +12 -0
- package/dist/stream/ws-telemetry-trace.d.ts.map +1 -0
- package/dist/stream/ws-telemetry-trace.js +41 -0
- package/dist/stream/ws-telemetry.d.ts +509 -0
- package/dist/stream/ws-telemetry.d.ts.map +1 -0
- package/dist/stream/ws-telemetry.js +931 -0
- package/dist/stream/ws.d.ts +10 -3
- package/dist/stream/ws.d.ts.map +1 -1
- package/dist/stream/ws.js +306 -27
- package/dist/syncer/file-patterns.js +2 -2
- package/dist/syncer/syncer-actions.d.ts +2 -8
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +4 -11
- package/dist/syncer/syncer.d.ts +1 -1
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +8 -6
- package/dist/template/template.d.ts +1 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +3 -4
- package/dist/template/zod-converter.d.ts +2 -2
- package/dist/testing/dev-vitest-manager.d.ts +1 -1
- package/dist/testing/dev-vitest-manager.js +2 -2
- package/dist/types/types.d.ts +11 -5
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +2 -2
- package/dist/utils/class-name.d.ts +6 -0
- package/dist/utils/class-name.d.ts.map +1 -0
- package/dist/utils/class-name.js +19 -0
- package/package.json +2 -2
- package/src/ai/agents/agent.ts +2 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +84 -10
- package/src/api/decorators.ts +6 -6
- package/src/api/sonamu.ts +142 -7
- package/src/api/websocket-helpers.ts +2 -28
- package/src/shared/app.shared.ts.txt +16 -8
- package/src/shared/web.shared.ts.txt +8 -7
- package/src/skills/sonamu/testing-devrunner.md +1 -1
- package/src/stream/__tests__/ws-telemetry.test.ts +821 -0
- package/src/stream/__tests__/ws.test.ts +362 -2
- package/src/stream/index.ts +3 -0
- package/src/stream/ws-core.ts +2 -0
- package/src/stream/ws-delivery.ts +161 -19
- package/src/stream/ws-local-connection-store.ts +33 -0
- package/src/stream/ws-registry.ts +186 -5
- package/src/stream/ws-telemetry-memory.ts +246 -0
- package/src/stream/ws-telemetry-trace.ts +52 -0
- package/src/stream/ws-telemetry.ts +1772 -0
- package/src/stream/ws.ts +332 -34
- package/src/syncer/file-patterns.ts +3 -3
- package/src/syncer/syncer-actions.ts +3 -15
- package/src/syncer/syncer.ts +9 -13
- package/src/template/__tests__/services.template.websocket.test.ts +2 -0
- package/src/template/template.ts +2 -3
- package/src/testing/dev-vitest-manager.ts +1 -1
- package/src/types/types.ts +10 -3
- package/src/utils/class-name.ts +12 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAA6B,MAAM,wBAAwB,CAAC;AAG9E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAA6B,MAAM,wBAAwB,CAAC;AAG9E,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,IAAI,CAAC;AAM9C,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAC1B,MAAM,SAAS,CAAC;AAKjB,qBAAa,cAAc,CAAC,MAAM;aAKJ,SAAS,EAAE,MAAM;IAJ7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,IAAI,CAAmC;gBAEnB,SAAS,GAAE,MAA8B;IAIrE,IAAW,KAAK,uBAEf;IAED,SAAS,KAAK,OAAO,yBAkBpB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAEM,GAAG,CAAC,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;CAS/D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,IAEjF,QAAQ,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAuC7F"}
|
package/dist/ai/agents/agent.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { convertDomainToCategory, init_category } from "../../logger/category.js";
|
|
2
|
+
import { getModelNameFromClassName, init_class_name } from "../../utils/class-name.js";
|
|
2
3
|
import { AsyncLocalStorage } from "async_hooks";
|
|
3
4
|
import { tool } from "@ai-sdk/provider-utils";
|
|
4
5
|
import { getLogger } from "@logtape/logtape";
|
|
@@ -7,6 +8,7 @@ import inflection from "inflection";
|
|
|
7
8
|
|
|
8
9
|
//#region src/ai/agents/agent.ts
|
|
9
10
|
init_category();
|
|
11
|
+
init_class_name();
|
|
10
12
|
const toolDefinitions = [];
|
|
11
13
|
var BaseAgentClass = class {
|
|
12
14
|
logger;
|
|
@@ -52,7 +54,7 @@ function tools(options) {
|
|
|
52
54
|
if (!(target instanceof BaseAgentClass)) {
|
|
53
55
|
throw new Error("Target must be a subclass of BaseAgentClass");
|
|
54
56
|
}
|
|
55
|
-
const modelName = target.constructor.name
|
|
57
|
+
const modelName = getModelNameFromClassName(target.constructor.name);
|
|
56
58
|
const methodName = propertyKey;
|
|
57
59
|
const originalMethod = descriptor.value;
|
|
58
60
|
const method = async function(...args) {
|
|
@@ -80,4 +82,4 @@ function tools(options) {
|
|
|
80
82
|
|
|
81
83
|
//#endregion
|
|
82
84
|
export { BaseAgentClass, tools };
|
|
83
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJuYW1lcyI6WyJ0b29sRGVmaW5pdGlvbnM6IFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbltdIiwiYWdlbnROYW1lOiBzdHJpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWkvYWdlbnRzL2FnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jTG9jYWxTdG9yYWdlIH0gZnJvbSBcImFzeW5jX2hvb2tzXCI7XG5cbmltcG9ydCB7IHR5cGUgVG9vbCwgdHlwZSBUb29sRXhlY3V0aW9uT3B0aW9ucyB9IGZyb20gXCJAYWktc2RrL3Byb3ZpZGVyLXV0aWxzXCI7XG5pbXBvcnQgeyB0b29sIH0gZnJvbSBcIkBhaS1zZGsvcHJvdmlkZXItdXRpbHNcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEFnZW50LCB0eXBlIFRvb2xTZXQgfSBmcm9tIFwiYWlcIjtcbmltcG9ydCB7IFRvb2xMb29wQWdlbnQgfSBmcm9tIFwiYWlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5cbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uLy4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9jbGFzcy1uYW1lXCI7XG5pbXBvcnQge1xuICB0eXBlIEFnZW50Q29uZmlnLFxuICB0eXBlIFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbixcbiAgdHlwZSBUb29sRGVjb3JhdG9yT3B0aW9ucyxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuY29uc3QgdG9vbERlZmluaXRpb25zOiBSZWdpc3RlcmVkVG9vbERlZmluaXRpb25bXSA9IFtdO1xuXG4vLyBUT0RPKEhhemUsIDI1MTIwNSk6IO2FjeyKpO2KuOqwgCDslYTri4wgc3RydWN0dXJlZCBvdXRwdXTsnbwg6rK97Jqw7JeQIOuMgO2VnCDsp4Dsm5DsnbQg7ZWE7JqUXG5leHBvcnQgY2xhc3MgQmFzZUFnZW50Q2xhc3M8VFN0b3JlPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBsb2dnZXI6IExvZ2dlcjtcblxuICBwcml2YXRlIF9hbHMgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8VFN0b3JlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBhZ2VudE5hbWU6IHN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IubmFtZSkge1xuICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuYWdlbnROYW1lLCBcImFnZW50XCIpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fscy5nZXRTdG9yZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0b29sU2V0KCkge1xuICAgIHJldHVybiB0b29sRGVmaW5pdGlvbnNcbiAgICAgIC5maWx0ZXIoKGRlZikgPT4gZGVmLmZyb20gPT09IHRoaXMuY29uc3RydWN0b3IubmFtZSlcbiAgICAgIC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgVG9vbD4+KChhY2MsIGRlZikgPT4ge1xuICAgICAgICBhY2NbZGVmLm5hbWVdID0gdG9vbCh7XG4gICAgICAgICAgZGVzY3JpcHRpb246IGRlZi5kZXNjcmlwdGlvbixcbiAgICAgICAgICBpbnB1dFNjaGVtYTogZGVmLnNjaGVtYS5pbnB1dCxcbiAgICAgICAgICBvdXRwdXRTY2hlbWE6IGRlZi5zY2hlbWEub3V0cHV0LFxuICAgICAgICAgIG5lZWRzQXBwcm92YWw6IGRlZi5uZWVkc0FwcHJvdmFsID8/IGZhbHNlLFxuICAgICAgICAgIHRvTW9kZWxPdXRwdXQ6IGRlZi50b01vZGVsT3V0cHV0LFxuICAgICAgICAgIHByb3ZpZGVyT3B0aW9uczogZGVmLnByb3ZpZGVyT3B0aW9ucyxcbiAgICAgICAgICBleGVjdXRlOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM6IFRvb2xFeGVjdXRpb25PcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBib3VuZCA9IGRlZi5tZXRob2QuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiBib3VuZC5sZW5ndGggPj0gMiA/IGJvdW5kKGlucHV0LCBvcHRpb25zKSA6IGJvdW5kKGlucHV0KTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIHt9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdG9vbHMoKTogVG9vbFNldCB7XG4gICAgcmV0dXJuIHRoaXMudG9vbFNldDtcbiAgfVxuXG4gIHB1YmxpYyB1c2U8VFJldHVybj4oXG4gICAgY29uZmlnOiBBZ2VudENvbmZpZyxcbiAgICBpbml0aWFsU3RhdHVzOiBUU3RvcmUsXG4gICAgY2FsbGJhY2s6IChhZ2VudDogQWdlbnQ8bmV2ZXIsIFRvb2xTZXQ+KSA9PiBQcm9taXNlPFRSZXR1cm4+LFxuICApIHtcbiAgICBjb25zdCBhZ2VudCA9IG5ldyBUb29sTG9vcEFnZW50KHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHRvb2xzOiB0aGlzLnRvb2xzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Fscy5ydW4oaW5pdGlhbFN0YXR1cywgKCkgPT4gY2FsbGJhY2soYWdlbnQpKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9vbHM8SU5QVVQsIE9VVFBVVCA9IHVua25vd24+KG9wdGlvbnM6IFRvb2xEZWNvcmF0b3JPcHRpb25zPElOUFVULCBPVVRQVVQ+KSB7XG4gIGNvbnN0IHsgbmFtZSwgZGVzY3JpcHRpb24sIHNjaGVtYSwgbmVlZHNBcHByb3ZhbCwgdG9Nb2RlbE91dHB1dCwgcHJvdmlkZXJPcHRpb25zIH0gPSBvcHRpb25zO1xuICByZXR1cm4gKHRhcmdldDogQmFzZUFnZW50Q2xhc3M8dW5rbm93bj4sIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIEJhc2VBZ2VudENsYXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGFyZ2V0IG11c3QgYmUgYSBzdWJjbGFzcyBvZiBCYXNlQWdlbnRDbGFzc1wiKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlbE5hbWUgPSBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lKHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbWV0aG9kID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VBZ2VudENsYXNzPHVua25vd24+LCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwidG9vbHM6IHttb2RlbH0ue21ldGhvZH0gd2l0aCBhcmdzOiB7YXJnc31cIiwge1xuICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgIGFyZ3MsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IG1ldGhvZDtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID1cbiAgICAgIG1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgICAgICAgIChtb2RlbE5hbWUgPz8gXCJcIikucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICl9LiR7aW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKX1gXG4gICAgICAgIDogaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKTtcblxuICAgIHRvb2xEZWZpbml0aW9ucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUgPz8gZGVmYXVsdFBhdGgsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHNjaGVtYSxcbiAgICAgIG5lZWRzQXBwcm92YWwsXG4gICAgICB0b01vZGVsT3V0cHV0LFxuICAgICAgcHJvdmlkZXJPcHRpb25zLFxuICAgICAgbWV0aG9kLFxuICAgICAgZnJvbTogdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgfSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztlQVVnRTtpQkFDRztBQU9uRSxNQUFNQSxrQkFBOEMsRUFBRTtBQUd0RCxJQUFhLGlCQUFiLE1BQW9DO0NBQ2xDLEFBQW1CO0NBRW5CLEFBQVEsT0FBTyxJQUFJLG1CQUEyQjtDQUU5QyxZQUFZLEFBQWdCQyxZQUFvQixLQUFLLFlBQVksTUFBTTtFQUEzQztBQUMxQixPQUFLLFNBQVMsVUFBVSx3QkFBd0IsS0FBSyxXQUFXLFFBQVEsQ0FBQzs7Q0FHM0UsSUFBVyxRQUFRO0FBQ2pCLFNBQU8sS0FBSyxLQUFLLFVBQVU7O0NBRzdCLElBQWMsVUFBVTtBQUN0QixTQUFPLGdCQUNKLFFBQVEsUUFBUSxJQUFJLFNBQVMsS0FBSyxZQUFZLEtBQUssQ0FDbkQsUUFBOEIsS0FBSyxRQUFRO0FBQzFDLE9BQUksSUFBSSxRQUFRLEtBQUs7SUFDbkIsYUFBYSxJQUFJO0lBQ2pCLGFBQWEsSUFBSSxPQUFPO0lBQ3hCLGNBQWMsSUFBSSxPQUFPO0lBQ3pCLGVBQWUsSUFBSSxpQkFBaUI7SUFDcEMsZUFBZSxJQUFJO0lBQ25CLGlCQUFpQixJQUFJO0lBQ3JCLFVBQVUsT0FBZ0IsWUFBa0M7S0FDMUQsTUFBTSxRQUFRLElBQUksT0FBTyxLQUFLLEtBQUs7QUFDbkMsWUFBTyxNQUFNLFVBQVUsSUFBSSxNQUFNLE9BQU8sUUFBUSxHQUFHLE1BQU0sTUFBTTs7SUFFbEUsQ0FBQztBQUNGLFVBQU87S0FDTixFQUFFLENBQUM7O0NBR1YsSUFBVyxRQUFpQjtBQUMxQixTQUFPLEtBQUs7O0NBR2QsQUFBTyxJQUNMLFFBQ0EsZUFDQSxVQUNBO0VBQ0EsTUFBTSxRQUFRLElBQUksY0FBYztHQUM5QixHQUFHO0dBQ0gsT0FBTyxLQUFLO0dBQ2IsQ0FBQztBQUVGLFNBQU8sS0FBSyxLQUFLLElBQUkscUJBQXFCLFNBQVMsTUFBTSxDQUFDOzs7QUFJOUQsU0FBZ0IsTUFBK0IsU0FBOEM7Q0FDM0YsTUFBTSxFQUFFLE1BQU0sYUFBYSxRQUFRLGVBQWUsZUFBZSxvQkFBb0I7QUFDckYsU0FBUSxRQUFpQyxhQUFxQixlQUFtQztBQUMvRixNQUFJLEVBQUUsa0JBQWtCLGlCQUFpQjtBQUN2QyxTQUFNLElBQUksTUFBTSw4Q0FBOEM7O0VBR2hFLE1BQU0sWUFBWSwwQkFBMEIsT0FBTyxZQUFZLEtBQUs7RUFDcEUsTUFBTSxhQUFhO0VBRW5CLE1BQU0saUJBQWlCLFdBQVc7RUFDbEMsTUFBTSxTQUFTLGVBQStDLEdBQUcsTUFBaUI7QUFDaEYsUUFBSyxPQUFPLE1BQU0sNkNBQTZDO0lBQzdELE9BQU87SUFDUCxRQUFRO0lBQ1I7SUFDRCxDQUFDO0FBRUYsVUFBTyxlQUFlLE1BQU0sTUFBTSxLQUFLOztBQUV6QyxhQUFXLFFBQVE7RUFFbkIsTUFBTSxjQUNKLGNBQWMsWUFDVixHQUFHLFdBQVcsVUFDWCxhQUFhLElBQUksUUFBUSxVQUFVLEdBQUcsQ0FBQyxRQUFRLFVBQVUsR0FBRyxFQUM3RCxLQUNELENBQUMsR0FBRyxXQUFXLFNBQVMsWUFBWSxLQUFLLEtBQzFDLFdBQVcsU0FBUyxZQUFZLEtBQUs7QUFFM0Msa0JBQWdCLEtBQUs7R0FDbkIsTUFBTSxRQUFRO0dBQ2Q7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0EsTUFBTSxPQUFPLFlBQVk7R0FDMUIsQ0FBQyJ9
|
|
@@ -8,7 +8,7 @@ export declare const rtzrTranscriptionResponseSchema: import("@ai-sdk/provider-u
|
|
|
8
8
|
}>;
|
|
9
9
|
export declare const rtzrTranscriptionResultResponseSchema: import("@ai-sdk/provider-utils").LazySchema<{
|
|
10
10
|
id: string;
|
|
11
|
-
status: "
|
|
11
|
+
status: "completed" | "failed" | "transcribing";
|
|
12
12
|
results?: {
|
|
13
13
|
utterances: {
|
|
14
14
|
start_at: number;
|
package/dist/api/decorators.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIlE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACZ;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC;AACvC,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,6BAA6B,GAC7B,cAAc,CAAC;AACnB,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EACR,YAAY,GACZ,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,0BAA0B,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC;IAEZ,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG;IAEtC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAE5B,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,iCAAiC,GAAG,yBAAyB,GAAG;IAE1E,gBAAgB,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;IACpC,eAAe,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC;CACpC,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,OAAO,CAAC,EAAE,QAAQ,CAAC;CACpB,CAAC;AACF,KAAK,mBAAmB,GAAG;IACzB,OAAO,EAAE,QAAQ,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;CAChD,GAAG,CAAC,mBAAmB,GAAG,mBAAmB,CAAC,CAAC;AAEhD,eAAO,MAAM,cAAc,EAAE;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,CAAC,EAAE,iCAAiC,CAAC;IACrD,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,EAAO,CAAC;AACT,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,CAAC,EAAE,iCAAiC,CAAC;IACrD,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;IACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AACF,KAAK,eAAe,GAAG;IAAE,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAoBzD,wBAAgB,GAAG,CAAC,OAAO,GAAE,mBAAwB,IAQ3C,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAoErF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,sBAAsB,IAC5C,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAgFrF;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,yBAAyB,IAClD,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UA4ErF;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,IAGtD,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBAyDrF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,sBAA8C,IACpE,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBAmErF"}
|
package/dist/api/decorators.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/rolldown_runtime.js";
|
|
2
2
|
import { convertDomainToCategory, init_category } from "../logger/category.js";
|
|
3
|
+
import { getModelNameFromClassName, init_class_name } from "../utils/class-name.js";
|
|
3
4
|
import { DB, init_db } from "../database/db.js";
|
|
4
5
|
import { UpsertBuilder, init_upsert_builder } from "../database/upsert-builder.js";
|
|
5
6
|
import { BaseFrameClass, init_base_frame } from "./base-frame.js";
|
|
@@ -27,7 +28,7 @@ function api(options = {}) {
|
|
|
27
28
|
...options
|
|
28
29
|
};
|
|
29
30
|
return (target, propertyKey, descriptor) => {
|
|
30
|
-
const modelName = target.constructor.name
|
|
31
|
+
const modelName = getModelNameFromClassName(target.constructor.name);
|
|
31
32
|
assert(modelName, `modelName is required on @api decorator on ${target.constructor.name}.${propertyKey}`);
|
|
32
33
|
const methodName = propertyKey;
|
|
33
34
|
checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.API);
|
|
@@ -72,7 +73,7 @@ function api(options = {}) {
|
|
|
72
73
|
}
|
|
73
74
|
function stream(options) {
|
|
74
75
|
return (target, propertyKey, descriptor) => {
|
|
75
|
-
const modelName = target.constructor.name
|
|
76
|
+
const modelName = getModelNameFromClassName(target.constructor.name);
|
|
76
77
|
assert(modelName, `modelName is required on @stream decorator on ${target.constructor.name}.${propertyKey}`);
|
|
77
78
|
const methodName = propertyKey;
|
|
78
79
|
checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.STREAM);
|
|
@@ -122,7 +123,7 @@ function stream(options) {
|
|
|
122
123
|
}
|
|
123
124
|
function websocket(options) {
|
|
124
125
|
return (target, propertyKey, descriptor) => {
|
|
125
|
-
const modelName = target.constructor.name
|
|
126
|
+
const modelName = getModelNameFromClassName(target.constructor.name);
|
|
126
127
|
assert(modelName, `modelName is required on @websocket decorator on ${target.constructor.name}.${propertyKey}`);
|
|
127
128
|
const methodName = propertyKey;
|
|
128
129
|
checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.WEBSOCKET);
|
|
@@ -174,7 +175,7 @@ function transactional(options = {}) {
|
|
|
174
175
|
const { isolation, readOnly, dbPreset = "w" } = options;
|
|
175
176
|
return (target, propertyKey, descriptor) => {
|
|
176
177
|
const originalMethod = descriptor.value;
|
|
177
|
-
const modelName = target.constructor.name
|
|
178
|
+
const modelName = getModelNameFromClassName(target.constructor.name);
|
|
178
179
|
assert(modelName, `modelName is required on @transactional decorator on ${target.constructor.name}.${propertyKey}`);
|
|
179
180
|
const methodName = propertyKey;
|
|
180
181
|
descriptor.value = async function(...args) {
|
|
@@ -220,7 +221,7 @@ function transactional(options = {}) {
|
|
|
220
221
|
function upload(options = { consume: "buffer" }) {
|
|
221
222
|
return (target, propertyKey, descriptor) => {
|
|
222
223
|
const originalMethod = descriptor.value;
|
|
223
|
-
const modelName = target.constructor.name
|
|
224
|
+
const modelName = getModelNameFromClassName(target.constructor.name);
|
|
224
225
|
assert(modelName, `modelName is required on @upload decorator on ${target.constructor.name}.${propertyKey}`);
|
|
225
226
|
const methodName = propertyKey;
|
|
226
227
|
checkSingleDecorator(target, propertyKey, DECORATOR_TYPES.UPLOAD);
|
|
@@ -295,6 +296,7 @@ var init_decorators = __esmMin((() => {
|
|
|
295
296
|
init_puri_wrapper();
|
|
296
297
|
init_upsert_builder();
|
|
297
298
|
init_category();
|
|
299
|
+
init_class_name();
|
|
298
300
|
init_base_frame();
|
|
299
301
|
registeredApis = [];
|
|
300
302
|
DECORATOR_TYPES = {
|
|
@@ -308,4 +310,4 @@ var init_decorators = __esmMin((() => {
|
|
|
308
310
|
//#endregion
|
|
309
311
|
init_decorators();
|
|
310
312
|
export { api, init_decorators, registeredApis, stream, transactional, upload, websocket };
|
|
311
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbImFwaSIsInJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZWNvcmF0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xDb25maWcgfSBmcm9tIFwiLi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21wcmVzc0NvbmZpZyB9IGZyb20gXCIuLi9jb21wcmVzcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgREIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGJcIjtcbmltcG9ydCB7IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuLi9zdG9yYWdlL2RyaXZlcnNcIjtcbmltcG9ydCB7IHR5cGUgS2V5R2VuZXJhdG9yIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBCYXNlRnJhbWVDbGFzcyB9IGZyb20gXCIuL2Jhc2UtZnJhbWVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBHdWFyZEtleXMge1xuICBxdWVyeTogdHJ1ZTtcbiAgYWRtaW46IHRydWU7XG4gIHVzZXI6IHRydWU7XG59XG5leHBvcnQgdHlwZSBHdWFyZEtleSA9IGtleW9mIEd1YXJkS2V5cztcbmV4cG9ydCB0eXBlIFNlcnZpY2VDbGllbnQgPVxuICB8IFwiYXhpb3NcIlxuICB8IFwiYXhpb3MtbXVsdGlwYXJ0XCJcbiAgfCBcInRhbnN0YWNrLXF1ZXJ5XCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uXCJcbiAgfCBcInRhbnN0YWNrLW11dGF0aW9uLW11bHRpcGFydFwiXG4gIHwgXCJ3aW5kb3ctZmV0Y2hcIjtcbmV4cG9ydCB0eXBlIEFwaURlY29yYXRvck9wdGlvbnMgPSB7XG4gIGh0dHBNZXRob2Q/OiBIVFRQTWV0aG9kcztcbiAgY29udGVudFR5cGU/OlxuICAgIHwgXCJ0ZXh0L3BsYWluXCJcbiAgICB8IFwidGV4dC9odG1sXCJcbiAgICB8IFwidGV4dC94bWxcIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9qc29uXCJcbiAgICB8IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG4gIGNsaWVudHM/OiBTZXJ2aWNlQ2xpZW50W107XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBBUEkg7J2R64u17J2YIENhY2hlLUNvbnRyb2wg7Zek642UIOyEpOyglS4g7ISk7KCV7ZWY7KeAIOyViuycvOuptCBjYWNoZUNvbnRyb2xIYW5kbGVyIOuYkOuKlCDquLDrs7jqsJLsnbQg7KCB7Jqp65Cp64uI64ukLiAqL1xuICBjYWNoZUNvbnRyb2w/OiBDYWNoZUNvbnRyb2xDb25maWc7XG4gIC8qKiBBUEkg7J2R64u17J2YIOyVley2lSDshKTsoJUuIGZhbHNl66GcIOyEpOygle2VmOuptCDslZXstpXsnYQg67mE7Zmc7ISx7ZmU7ZWp64uI64ukLiAqL1xuICBjb21wcmVzcz86IENvbXByZXNzQ29uZmlnO1xufTtcbmV4cG9ydCB0eXBlIFN0cmVhbURlY29yYXRvck9wdGlvbnMgPSB7XG4gIHR5cGU6IFwic3NlXCI7XG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIOydtOuypO2KuCDtgqTrs4TroZwg64SY6rKo7KO864qUIOqwkuydtOuvgOuhnCDslrTrlqQg7YOA7J6F7J2065OgIOyDgeq0gOyXhuydjFxuICBldmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIG91dEV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIGluRXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICBwYXRoPzogc3RyaW5nO1xuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBoZWFydGJlYXQ/OiBudW1iZXI7XG4gIG1heFBheWxvYWQ/OiBudW1iZXI7XG4gIG5hbWVzcGFjZT86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgPSBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zICYge1xuICAvLyBjb2RlZ2Vu7J20IO2DgOyehSDsnbTrpoTsnYQg7J6s7IKs7Jqp7ZWgIOyImCDsnojrj4TroZ0gc3luY2Vy6rCAIEFTVOyXkOyEnCDrs7TqsJXtlZjripQg66mU7YOA642w7J207YSwXG4gIG91dEV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xuICBpbkV2ZW50c1R5cGVSZWY/OiBBcGlQYXJhbVR5cGUuUmVmO1xufTtcblxudHlwZSBCdWZmZXJVcGxvYWRPcHRpb25zID0ge1xuICBjb25zdW1lPzogXCJidWZmZXJcIjtcbn07XG50eXBlIFN0cmVhbVVwbG9hZE9wdGlvbnMgPSB7XG4gIGNvbnN1bWU6IFwic3RyZWFtXCI7XG4gIGRlc3RpbmF0aW9uOiBEcml2ZXJLZXk7XG4gIGtleUdlbmVyYXRvcj86IEtleUdlbmVyYXRvcjtcbn07XG5leHBvcnQgdHlwZSBVcGxvYWREZWNvcmF0b3JPcHRpb25zID0ge1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgbGltaXRzPzogRmFzdGlmeU11bHRpcGFydEJhc2VPcHRpb25zW1wibGltaXRzXCJdO1xufSAmIChCdWZmZXJVcGxvYWRPcHRpb25zIHwgU3RyZWFtVXBsb2FkT3B0aW9ucyk7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlcmVkQXBpczoge1xuICAvKipcbiAgICogbW9kZWxOYW1l7J2AIOuqqOuNuCDtgbTrnpjsiqQg7J2066aE7J6F64uI64ukLiAoZXguIFwiVXNlck1vZGVsXCIpXG4gICAqL1xuICBtb2RlbE5hbWU6IHN0cmluZztcbiAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnM7XG4gIHN0cmVhbU9wdGlvbnM/OiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zO1xuICB3ZWJzb2NrZXRPcHRpb25zPzogUmVzb2x2ZWRXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zO1xuICB1cGxvYWRPcHRpb25zPzogVXBsb2FkRGVjb3JhdG9yT3B0aW9ucztcbn1bXSA9IFtdO1xuZXhwb3J0IHR5cGUgRXh0ZW5kZWRBcGkgPSB7XG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xuICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICBwYXJhbWV0ZXJzOiBBcGlQYXJhbVtdO1xuICByZXR1cm5UeXBlOiBBcGlQYXJhbVR5cGU7XG59O1xudHlwZSBEZWNvcmF0b3JUYXJnZXQgPSB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH07XG5cbmNvbnN0IERFQ09SQVRPUl9UWVBFUyA9IHtcbiAgQVBJOiBTeW1ib2woXCJhcGlcIiksXG4gIFNUUkVBTTogU3ltYm9sKFwic3RyZWFtXCIpLFxuICBXRUJTT0NLRVQ6IFN5bWJvbChcIndlYnNvY2tldFwiKSxcbiAgVVBMT0FEOiBTeW1ib2woXCJ1cGxvYWRcIiksXG59IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVjb3JhdG9yVHlwZTogc3ltYm9sKSB7XG4gIGNvbnN0IG1ldGhvZCA9IHRhcmdldFtwcm9wZXJ0eUtleSBhcyBrZXlvZiB0eXBlb2YgdGFyZ2V0XSBhcyB7IF9fZGVjb3JhdG9yVHlwZT86IHN5bWJvbCB9O1xuICBpZiAobWV0aG9kPy5fX2RlY29yYXRvclR5cGUgJiYgbWV0aG9kPy5fX2RlY29yYXRvclR5cGUgIT09IGRlY29yYXRvclR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQCR7ZGVjb3JhdG9yVHlwZS5kZXNjcmlwdGlvbiA/PyBTdHJpbmcoZGVjb3JhdG9yVHlwZSl9IGRlY29yYXRvciBjYW4gb25seSBiZSB1c2VkIG9uY2Ugb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX0uIFlvdSBjYW4gdXNlIG9ubHkgb25lIG9mIEBhcGksIEBzdHJlYW0sIEB3ZWJzb2NrZXQsIG9yIEB1cGxvYWQgZGVjb3JhdG9yIG9uIHRoZSBzYW1lIG1ldGhvZC5gLFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kLl9fZGVjb3JhdG9yVHlwZSA9IGRlY29yYXRvclR5cGU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwaShvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zID0ge30pIHtcbiAgb3B0aW9ucyA9IHtcbiAgICBodHRwTWV0aG9kOiBcIkdFVFwiLFxuICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICBjbGllbnRzOiBbXCJheGlvc1wiXSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuXG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBhcGkgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuQVBJKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuXG4gICAgLy8g6riw7KG0IOuPmeydvO2VnCDrqZTshJzrk5zqsIAg7J6I64qU7KeAIO2ZleyduCDtm4Qg7J6I64qUIOqyveyasCBvdmVycmlkZVxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcImFwaVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsIC8vIOq4sOyhtOydmCDsmLXshZjsnYQg7KG07KSR7ZWY65CYXG4gICAgICAgIC4uLm9wdGlvbnMsIC8vIEBhcGkg642w7L2U66CI7J207YSw7J2YIOyYteyFmOydhCDstpTqsIDtlanri4jri6QuXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZWdpc3RlcmVkQXBpcy5wdXNoKHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBwYXRoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJhcGk6IHtodHRwTWV0aG9kfSB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaHR0cE1ldGhvZDogb3B0aW9ucy5odHRwTWV0aG9kLFxuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmVhbShvcHRpb25zOiBTdHJlYW1EZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuU1RSRUFNKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuICAgIC8vIHN0cmVhbSDsoITsmqkg7ZWE65OcKGV2ZW50cywgdHlwZSnripQgQXBpRGVjb3JhdG9yT3B0aW9uc+yXkCDsho3tlZjsp4Ag7JWK7Jy866+A66GcIOygnOyZuFxuICAgIGNvbnN0IHsgZXZlbnRzOiBfLCB0eXBlOiBfdHlwZSwgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB3ZWJzb2NrZXQgZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5XRUJTT0NLRVQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKHByb3BlcnR5S2V5LCB0cnVlKX1gO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zLnBhdGggPz8gZGVmYXVsdFBhdGg7XG4gICAgY29uc3QgeyBvdXRFdmVudHM6IF9vdXRFdmVudHMsIGluRXZlbnRzOiBfaW5FdmVudHMsIC4uLmFwaU9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3Qgb3B0aW9uc1dpdGhEZWZhdWx0cyA9IHtcbiAgICAgIC4uLmFwaU9wdGlvbnMsXG4gICAgICBodHRwTWV0aG9kOiBcIkdFVFwiIGFzIEhUVFBNZXRob2RzLFxuICAgIH07XG5cbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAoYXBpKSA9PiBhcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdQYXRoKFwid2Vic29ja2V0XCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkucGF0aCwgcGF0aCk7XG4gICAgICBleGlzdGluZ0FwaS5wYXRoID0gcGF0aDtcblxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwid2Vic29ja2V0XCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkud2Vic29ja2V0T3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHdlYnNvY2tldE9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcIndlYnNvY2tldDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwob3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7IGlzb2xhdGlvbiwgcmVhZE9ubHksIGRiUHJlc2V0ID0gXCJ3XCIgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEB0cmFuc2FjdGlvbmFsIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwidHJhbnNhY3Rpb25hbDoge21vZGVsfS57bWV0aG9kfVwiLCB7XG4gICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBleGlzdGluZ0NvbnRleHQgPSBEQi50cmFuc2FjdGlvblN0b3JhZ2UuZ2V0U3RvcmUoKTtcblxuICAgICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq4IOyXhuqxsOuCmCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsl4bsnLzrqbQg7IOI66GcIOyLnOyekVxuICAgICAgY29uc3Qgc3RhcnRUcmFuc2FjdGlvbiA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgcHVyaSA9IHRoaXMuZ2V0UHVyaShkYlByZXNldCk7XG5cbiAgICAgICAgcmV0dXJuIHB1cmkua25leC50cmFuc2FjdGlvbihcbiAgICAgICAgICBhc3luYyAodHJ4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIm5ldyB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgICAgICBjb25zdCB0cnhXcmFwcGVyID0gbmV3IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIodHJ4LCBuZXcgVXBzZXJ0QnVpbGRlcigpKTtcbiAgICAgICAgICAgIC8vIFRyYW5zYWN0aW9uQ29udGV4dOyXkCDtirjrnpzsnq3shZgg7KCA7J6lXG4gICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5zZXRUcmFuc2FjdGlvbihkYlByZXNldCwgdHJ4V3JhcHBlcik7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBhd2FpdCBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgIC8vIO2KuOuenOyereyFmCDsoJzqsbBcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJkZWxldGUgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5kZWxldGVUcmFuc2FjdGlvbihkYlByZXNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGlzb2xhdGlvbkxldmVsOiBpc29sYXRpb24sIHJlYWRPbmx5IH0sXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG7Jy866m0IOyDiOuhnCDsg53shLFcbiAgICAgIGlmICghZXhpc3RpbmdDb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBEQi5ydW5XaXRoVHJhbnNhY3Rpb24oc3RhcnRUcmFuc2FjdGlvbik7XG4gICAgICB9XG5cbiAgICAgIC8vIOydtOuvuCBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirgg7JWI7JeQIOyeiOuKlOyngCDtmZXsnbgg7ZuEIO2VtOuLuSBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J20IOydtOuvuCDsnojsnLzrqbQg7J6s7IKs7JqpXG4gICAgICBpZiAoZXhpc3RpbmdDb250ZXh0Py5nZXRUcmFuc2FjdGlvbihkYlByZXNldCkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJyZXVzZSB0cmFuc2FjdGlvbiBjb250ZXh0OiB7ZGJQcmVzZXR9XCIsIHsgZGJQcmVzZXQgfSk7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH1cblxuICAgICAgLy8g7Luo7YWN7Iqk7Yq464qUIOyeiOyngOunjCDsnbQgcHJlc2V07J2YIO2KuOuenOyereyFmOydgCDsl4bripQg6rK97JqwICjqsJnsnYAg7Luo7YWN7Iqk7Yq4IOuCtOyXkOyEnCDsi6TtlokpXG4gICAgICByZXR1cm4gc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDtjIzsnbwg7JeF66Gc65OcIEFQSeulvCDsg53shLHtlbTspI3ri4jri6QuIChAYXBpIOuNsOy9lOugiOydtO2EsCDsl4bsnbQg64+F66a97KCB7Jy866GcIOyCrOyaqSlcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkKG9wdGlvbnM6IFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7IGNvbnN1bWU6IFwiYnVmZmVyXCIgfSkge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUubWF0Y2goLyguKylDbGFzcyQvKT8uWzFdO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHVwbG9hZCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgLy8g66mU7ISc65Oc7JeQIOqxuOumsCDrjbDsvZTroIjsnbTthLAg7KSR67O1IOyytO2BrFxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5VUExPQUQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWUsIHRydWUpfWA7XG5cbiAgICAvLyByZWdpc3RlcmVkQXBpc+yXkOyEnCDtlbTri7kgQVBJIOywvuyVhOyEnCB1cGxvYWRPcHRpb25zIOy2lOqwgFxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuXG4gICAgaWYgKGV4aXN0aW5nQXBpKSB7XG4gICAgICAvLyDsnqzrk7HroZ0g7IucIOyXheuhnOuTnCDsmLXshZjrp4wg6rCx7IugXG4gICAgICBleGlzdGluZ0FwaS51cGxvYWRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g7IOI66GcIOuTseuhnVxuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogZGVmYXVsdFBhdGgsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBodHRwTWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBjbGllbnRzOiBbXCJheGlvcy1tdWx0aXBhcnRcIiwgXCJ0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnRcIl0sXG4gICAgICAgICAgZ3VhcmRzOiBvcHRpb25zLmd1YXJkcyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgdXBsb2FkT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ1cGxvYWQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZUZyYW1lQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuZnJhbWVOYW1lLCBcImZyYW1lXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDquLDsobTsnZggcGF0aOyZgCDsg4jroZzsmrQgcGF0aOqwgCDri6TrpbTri6TrqbQoPeqwkuydtCDsnojrjZgg7Iqk7Yq466eB7J20IOuLpOuluCDqsJLsnbQg7J6I64qUIOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdQYXRoIOq4sOyhtOydmCBwYXRoXG4gKiBAcGFyYW0gbmV3UGF0aCDsg4jroZzsmrQgcGF0aFxuICovXG5mdW5jdGlvbiBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ1BhdGg6IHN0cmluZyxcbiAgbmV3UGF0aDogc3RyaW5nLFxuKSB7XG4gIGlmIChleGlzdGluZ1BhdGggIT09IFwiXCIgJiYgbmV3UGF0aCAhPT0gXCJcIiAmJiBleGlzdGluZ1BhdGggIT09IG5ld1BhdGgpIHtcbiAgICAvLyDsnbTqsoPsnbQg66y07IqoIOyDge2ZqeydtOuDkOuptOyalCwgYXBpLnBhdGjqsIAg642u7Ja07JSM7JuM7KeA64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAvLyDqsIDroLkgQGFwaSh7IHBhdGg6IFwiL2FwaS92MS91c2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgLy8gQHN0cmVhbSh7IHBhdGg6IFwiL2FwaS92MS91c2Vycy9zdHJlYW1cIiB9KSDqsJnsnYAg6rKD7J20IOu2meyWtCDsnojripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIHBhdGgg7ZWE65Oc66W8IOqxtOuTnOumrOqyjCDrkJjrr4DroZwsIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3RpbmcgcGF0aDogJHtuZXdQYXRofS4gVGhlIGRlY29yYXRvciBpcyB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHBhdGgoJHtleGlzdGluZ1BhdGh9KSB3aXRoIHRoZSBuZXcgcGF0aCgke25ld1BhdGh9KS5gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAqIEBwYXJhbSBkZWNvcmF0b3JOYW1lIOuNsOy9lOugiOydtO2EsCDsnbTrpoRcbiAqIEBwYXJhbSBtb2RlbE5hbWUg66qo6424IOydtOumhFxuICogQHBhcmFtIG1ldGhvZE5hbWUg66mU7ISc65OcIOydtOumhFxuICogQHBhcmFtIGV4aXN0aW5nT3B0aW9ucyDquLDsobTsnZgg7Ji17IWYXG4gKiBAcGFyYW0gbmV3T3B0aW9ucyDsg4jroZzsmrQg7Ji17IWYXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIDzslYQg7Im96rKM7Im96rKMIOyigCDqsJHsi5zri6Q+XG4gIGV4aXN0aW5nT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gPOydtOuftCDrlYwg7JWE64uI66m0IGFueSDslrjsoJwg7JSB64uI6rmMPlxuICBuZXdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIE9iamVjdC5rZXlzKG5ld09wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChleGlzdGluZ09wdGlvbnNba2V5XSAmJiAhaXNFcXVhbChleGlzdGluZ09wdGlvbnNba2V5XSwgbmV3T3B0aW9uc1trZXldKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdPcHRpb25zW2tleV0pfSkgd2l0aCB0aGUgbmV3IG9wdGlvbigke0pTT04uc3RyaW5naWZ5KG5ld09wdGlvbnNba2V5XSl9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBaUlBLFNBQVMscUJBQXFCLFFBQXlCLGFBQXFCLGVBQXVCO0NBQ2pHLE1BQU0sU0FBUyxPQUFPO0FBQ3RCLEtBQUksUUFBUSxtQkFBbUIsUUFBUSxvQkFBb0IsZUFBZTtBQUN4RSxRQUFNLElBQUksTUFDUixJQUFJLGNBQWMsZUFBZSxPQUFPLGNBQWMsQ0FBQyxzQ0FBc0MsT0FBTyxZQUFZLEtBQUssR0FBRyxZQUFZLCtGQUNySTtRQUNJO0FBQ0wsU0FBTyxrQkFBa0I7OztBQUk3QixTQUFnQixJQUFJLFVBQStCLEVBQUUsRUFBRTtBQUNyRCxXQUFVO0VBQ1IsWUFBWTtFQUNaLGFBQWE7RUFDYixTQUFTLENBQUMsUUFBUTtFQUNsQixHQUFHO0VBQ0o7QUFFRCxTQUFRLFFBQXlCLGFBQXFCLGVBQW1DO0VBQ3ZGLE1BQU0sWUFBWSxPQUFPLFlBQVksS0FBSyxNQUFNLGFBQWEsR0FBRztBQUNoRSxTQUNFLFdBQ0EsOENBQThDLE9BQU8sWUFBWSxLQUFLLEdBQUcsY0FDMUU7RUFDRCxNQUFNLGFBQWE7QUFHbkIsdUJBQXFCLFFBQVEsYUFBYSxnQkFBZ0IsSUFBSTtFQUU5RCxNQUFNLGNBQWMsSUFBSSxXQUFXLFNBQ2pDLFVBQVUsUUFBUSxVQUFVLEdBQUcsQ0FBQyxRQUFRLFVBQVUsR0FBRyxFQUNyRCxLQUNELENBQUMsR0FBRyxXQUFXLFNBQVMsYUFBYSxLQUFLO0VBQzNDLE1BQU0sT0FBTyxRQUFRLFFBQVE7RUFHN0IsTUFBTSxjQUFjLGVBQWUsTUFDaEMsVUFBUUEsTUFBSSxjQUFjLGFBQWFBLE1BQUksZUFBZSxXQUM1RDtBQUNELE1BQUksYUFBYTtBQUVmLDJCQUF3QixPQUFPLFdBQVcsWUFBWSxZQUFZLE1BQU0sS0FBSztBQUM3RSxlQUFZLE9BQU87QUFHbkIsOEJBQTJCLE9BQU8sV0FBVyxZQUFZLFlBQVksU0FBUyxRQUFRO0FBQ3RGLGVB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
|
|
313
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsIm5hbWVzIjpbImFwaSIsInJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9kZWNvcmF0b3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlNdWx0aXBhcnRCYXNlT3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyB0eXBlIEhUVFBNZXRob2RzIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDYWNoZUNvbnRyb2xDb25maWcgfSBmcm9tIFwiLi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBDb21wcmVzc0NvbmZpZyB9IGZyb20gXCIuLi9jb21wcmVzcy90eXBlc1wiO1xuaW1wb3J0IHsgQmFzZU1vZGVsQ2xhc3MgfSBmcm9tIFwiLi4vZGF0YWJhc2UvYmFzZS1tb2RlbFwiO1xuaW1wb3J0IHsgREIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGJcIjtcbmltcG9ydCB7IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIgfSBmcm9tIFwiLi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3B1cmktd3JhcHBlclwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuLi9zdG9yYWdlL2RyaXZlcnNcIjtcbmltcG9ydCB7IHR5cGUgS2V5R2VuZXJhdG9yIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQXBpUGFyYW0sIHR5cGUgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lIH0gZnJvbSBcIi4uL3V0aWxzL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IEJhc2VGcmFtZUNsYXNzIH0gZnJvbSBcIi4vYmFzZS1mcmFtZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEd1YXJkS2V5cyB7XG4gIHF1ZXJ5OiB0cnVlO1xuICBhZG1pbjogdHJ1ZTtcbiAgdXNlcjogdHJ1ZTtcbn1cbmV4cG9ydCB0eXBlIEd1YXJkS2V5ID0ga2V5b2YgR3VhcmRLZXlzO1xuZXhwb3J0IHR5cGUgU2VydmljZUNsaWVudCA9XG4gIHwgXCJheGlvc1wiXG4gIHwgXCJheGlvcy1tdWx0aXBhcnRcIlxuICB8IFwidGFuc3RhY2stcXVlcnlcIlxuICB8IFwidGFuc3RhY2stbXV0YXRpb25cIlxuICB8IFwidGFuc3RhY2stbXV0YXRpb24tbXVsdGlwYXJ0XCJcbiAgfCBcIndpbmRvdy1mZXRjaFwiO1xuZXhwb3J0IHR5cGUgQXBpRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgaHR0cE1ldGhvZD86IEhUVFBNZXRob2RzO1xuICBjb250ZW50VHlwZT86XG4gICAgfCBcInRleHQvcGxhaW5cIlxuICAgIHwgXCJ0ZXh0L2h0bWxcIlxuICAgIHwgXCJ0ZXh0L3htbFwiXG4gICAgfCBcImFwcGxpY2F0aW9uL2pzb25cIlxuICAgIHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIjtcbiAgY2xpZW50cz86IFNlcnZpY2VDbGllbnRbXTtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbiAgLyoqIEFQSSDsnZHri7XsnZggQ2FjaGUtQ29udHJvbCDtl6TrjZQg7ISk7KCVLiDshKTsoJXtlZjsp4Ag7JWK7Jy866m0IGNhY2hlQ29udHJvbEhhbmRsZXIg65iQ64qUIOq4sOuzuOqwkuydtCDsoIHsmqnrkKnri4jri6QuICovXG4gIGNhY2hlQ29udHJvbD86IENhY2hlQ29udHJvbENvbmZpZztcbiAgLyoqIEFQSSDsnZHri7XsnZgg7JWV7LaVIOyEpOyglS4gZmFsc2XroZwg7ISk7KCV7ZWY66m0IOyVley2leydhCDruYTtmZzshLHtmZTtlanri4jri6QuICovXG4gIGNvbXByZXNzPzogQ29tcHJlc3NDb25maWc7XG59O1xuZXhwb3J0IHR5cGUgU3RyZWFtRGVjb3JhdG9yT3B0aW9ucyA9IHtcbiAgdHlwZTogXCJzc2VcIjtcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0g7J2067Kk7Yq4IO2CpOuzhOuhnCDrhJjqsqjso7zripQg6rCS7J2066+A66GcIOyWtOuWpCDtg4DsnoXsnbTrk6Ag7IOB6rSA7JeG7J2MXG4gIGV2ZW50czogei5ab2RPYmplY3Q8YW55PjtcbiAgcGF0aD86IHN0cmluZztcbiAgcmVzb3VyY2VOYW1lPzogc3RyaW5nO1xuICBndWFyZHM/OiBHdWFyZEtleVtdO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zID0ge1xuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgb3V0RXZlbnRzOiB6LlpvZE9iamVjdDxhbnk+O1xuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSDsnbTrsqTtirgg7YKk67OE66GcIOuEmOqyqOyjvOuKlCDqsJLsnbTrr4DroZwg7Ja065akIO2DgOyeheydtOuToCDsg4HqtIDsl4bsnYxcbiAgaW5FdmVudHM6IHouWm9kT2JqZWN0PGFueT47XG4gIHBhdGg/OiBzdHJpbmc7XG4gIHJlc291cmNlTmFtZT86IHN0cmluZztcbiAgZ3VhcmRzPzogR3VhcmRLZXlbXTtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGhlYXJ0YmVhdD86IG51bWJlcjtcbiAgbmFtZXNwYWNlPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucyA9IFdlYlNvY2tldERlY29yYXRvck9wdGlvbnMgJiB7XG4gIC8vIGNvZGVnZW7snbQg7YOA7J6FIOydtOumhOydhCDsnqzsgqzsmqntlaAg7IiYIOyeiOuPhOuhnSBzeW5jZXLqsIAgQVNU7JeQ7IScIOuztOqwle2VmOuKlCDrqZTtg4DrjbDsnbTthLBcbiAgb3V0RXZlbnRzVHlwZVJlZj86IEFwaVBhcmFtVHlwZS5SZWY7XG4gIGluRXZlbnRzVHlwZVJlZj86IEFwaVBhcmFtVHlwZS5SZWY7XG59O1xuXG50eXBlIEJ1ZmZlclVwbG9hZE9wdGlvbnMgPSB7XG4gIGNvbnN1bWU/OiBcImJ1ZmZlclwiO1xufTtcbnR5cGUgU3RyZWFtVXBsb2FkT3B0aW9ucyA9IHtcbiAgY29uc3VtZTogXCJzdHJlYW1cIjtcbiAgZGVzdGluYXRpb246IERyaXZlcktleTtcbiAga2V5R2VuZXJhdG9yPzogS2V5R2VuZXJhdG9yO1xufTtcbmV4cG9ydCB0eXBlIFVwbG9hZERlY29yYXRvck9wdGlvbnMgPSB7XG4gIGd1YXJkcz86IEd1YXJkS2V5W107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBsaW1pdHM/OiBGYXN0aWZ5TXVsdGlwYXJ0QmFzZU9wdGlvbnNbXCJsaW1pdHNcIl07XG59ICYgKEJ1ZmZlclVwbG9hZE9wdGlvbnMgfCBTdHJlYW1VcGxvYWRPcHRpb25zKTtcblxuZXhwb3J0IGNvbnN0IHJlZ2lzdGVyZWRBcGlzOiB7XG4gIC8qKlxuICAgKiBtb2RlbE5hbWXsnYAg66qo6424IO2BtOuemOyKpCDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyTW9kZWxcIilcbiAgICovXG4gIG1vZGVsTmFtZTogc3RyaW5nO1xuICBtZXRob2ROYW1lOiBzdHJpbmc7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgc3RyZWFtT3B0aW9ucz86IFN0cmVhbURlY29yYXRvck9wdGlvbnM7XG4gIHdlYnNvY2tldE9wdGlvbnM/OiBSZXNvbHZlZFdlYlNvY2tldERlY29yYXRvck9wdGlvbnM7XG4gIHVwbG9hZE9wdGlvbnM/OiBVcGxvYWREZWNvcmF0b3JPcHRpb25zO1xufVtdID0gW107XG5leHBvcnQgdHlwZSBFeHRlbmRlZEFwaSA9IHtcbiAgbW9kZWxOYW1lOiBzdHJpbmc7XG4gIG1ldGhvZE5hbWU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zOiBBcGlEZWNvcmF0b3JPcHRpb25zO1xuICBzdHJlYW1PcHRpb25zPzogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucztcbiAgd2Vic29ja2V0T3B0aW9ucz86IFJlc29sdmVkV2ViU29ja2V0RGVjb3JhdG9yT3B0aW9ucztcbiAgdXBsb2FkT3B0aW9ucz86IFVwbG9hZERlY29yYXRvck9wdGlvbnM7XG4gIHR5cGVQYXJhbWV0ZXJzOiBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtW107XG4gIHBhcmFtZXRlcnM6IEFwaVBhcmFtW107XG4gIHJldHVyblR5cGU6IEFwaVBhcmFtVHlwZTtcbn07XG50eXBlIERlY29yYXRvclRhcmdldCA9IHsgY29uc3RydWN0b3I6IHsgbmFtZTogc3RyaW5nIH0gfTtcblxuY29uc3QgREVDT1JBVE9SX1RZUEVTID0ge1xuICBBUEk6IFN5bWJvbChcImFwaVwiKSxcbiAgU1RSRUFNOiBTeW1ib2woXCJzdHJlYW1cIiksXG4gIFdFQlNPQ0tFVDogU3ltYm9sKFwid2Vic29ja2V0XCIpLFxuICBVUExPQUQ6IFN5bWJvbChcInVwbG9hZFwiKSxcbn0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZWNvcmF0b3JUeXBlOiBzeW1ib2wpIHtcbiAgY29uc3QgbWV0aG9kID0gdGFyZ2V0W3Byb3BlcnR5S2V5IGFzIGtleW9mIHR5cGVvZiB0YXJnZXRdIGFzIHsgX19kZWNvcmF0b3JUeXBlPzogc3ltYm9sIH07XG4gIGlmIChtZXRob2Q/Ll9fZGVjb3JhdG9yVHlwZSAmJiBtZXRob2Q/Ll9fZGVjb3JhdG9yVHlwZSAhPT0gZGVjb3JhdG9yVHlwZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBAJHtkZWNvcmF0b3JUeXBlLmRlc2NyaXB0aW9uID8/IFN0cmluZyhkZWNvcmF0b3JUeXBlKX0gZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fS4gWW91IGNhbiB1c2Ugb25seSBvbmUgb2YgQGFwaSwgQHN0cmVhbSwgQHdlYnNvY2tldCwgb3IgQHVwbG9hZCBkZWNvcmF0b3Igb24gdGhlIHNhbWUgbWV0aG9kLmAsXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBtZXRob2QuX19kZWNvcmF0b3JUeXBlID0gZGVjb3JhdG9yVHlwZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBpKG9wdGlvbnM6IEFwaURlY29yYXRvck9wdGlvbnMgPSB7fSkge1xuICBvcHRpb25zID0ge1xuICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIsXG4gICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIGNsaWVudHM6IFtcImF4aW9zXCJdLFxuICAgIC4uLm9wdGlvbnMsXG4gIH07XG5cbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSh0YXJnZXQuY29uc3RydWN0b3IubmFtZSk7XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAYXBpIGRlY29yYXRvciBvbiAke3RhcmdldC5jb25zdHJ1Y3Rvci5uYW1lfS4ke3Byb3BlcnR5S2V5fWAsXG4gICAgKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICAvLyDrqZTshJzrk5zsl5Ag6rG466awIOuNsOy9lOugiOydtO2EsCDspJHrs7Ug7LK07YGsXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLkFQSSk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcblxuICAgIC8vIOq4sOyhtCDrj5nsnbztlZwg66mU7ISc65Oc6rCAIOyeiOuKlOyngCDtmZXsnbgg7ZuEIOyeiOuKlCDqsr3smrAgb3ZlcnJpZGVcbiAgICBjb25zdCBleGlzdGluZ0FwaSA9IHJlZ2lzdGVyZWRBcGlzLmZpbmQoXG4gICAgICAoYXBpKSA9PiBhcGkubW9kZWxOYW1lID09PSBtb2RlbE5hbWUgJiYgYXBpLm1ldGhvZE5hbWUgPT09IG1ldGhvZE5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXhpc3RpbmdBcGkpIHtcbiAgICAgIC8vIOq4sOyhtOydmCBwYXRo7JmAIOyDiOuhnOyatCBwYXRo6rCAIOuLpOultOuLpOuptCg967mIIOyKpO2KuOungeydtCDslYTri4jsl4jripTrjbAg64uk66W4IOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ1BhdGgoXCJhcGlcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5wYXRoLCBwYXRoKTtcbiAgICAgIGV4aXN0aW5nQXBpLnBhdGggPSBwYXRoO1xuXG4gICAgICAvLyDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFwiYXBpXCIsIG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgZXhpc3RpbmdBcGkub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zLCAvLyBAYXBpIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlTW9kZWxDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpLmRlYnVnKFxuICAgICAgICAgIFwiYXBpOiB7aHR0cE1ldGhvZH0ge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0dHBNZXRob2Q6IG9wdGlvbnMuaHR0cE1ldGhvZCxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwiYXBpOiB7aHR0cE1ldGhvZH0ge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGh0dHBNZXRob2Q6IG9wdGlvbnMuaHR0cE1ldGhvZCxcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJlYW0ob3B0aW9uczogU3RyZWFtRGVjb3JhdG9yT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBtb2RlbE5hbWUgPSBnZXRNb2RlbE5hbWVGcm9tQ2xhc3NOYW1lKHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lKTtcbiAgICBhc3NlcnQoXG4gICAgICBtb2RlbE5hbWUsXG4gICAgICBgbW9kZWxOYW1lIGlzIHJlcXVpcmVkIG9uIEBzdHJlYW0gZGVjb3JhdG9yIG9uICR7dGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWV9LiR7cHJvcGVydHlLZXl9YCxcbiAgICApO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIC8vIOuplOyEnOuTnOyXkCDqsbjrprAg642w7L2U66CI7J207YSwIOykkeuztSDssrTtgaxcbiAgICBjaGVja1NpbmdsZURlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5S2V5LCBERUNPUkFUT1JfVFlQRVMuU1RSRUFNKTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID0gYC8ke2luZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBtb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICB0cnVlLFxuICAgICl9LyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wZXJ0eUtleSwgdHJ1ZSl9YDtcbiAgICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IGRlZmF1bHRQYXRoO1xuICAgIC8vIHN0cmVhbSDsoITsmqkg7ZWE65OcKGV2ZW50cywgdHlwZSnripQgQXBpRGVjb3JhdG9yT3B0aW9uc+yXkCDsho3tlZjsp4Ag7JWK7Jy866+A66GcIOygnOyZuFxuICAgIGNvbnN0IHsgZXZlbnRzOiBfLCB0eXBlOiBfdHlwZSwgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgLy8g6riw7KG07J2YIHBhdGjsmYAg7IOI66Gc7Jq0IHBhdGjqsIAg64uk66W064uk66m0KD3ruYgg7Iqk7Yq466eB7J20IOyVhOuLiOyXiOuKlOuNsCDri6Trpbgg7Iqk7Yq466eB7Jy866GcIOuwlOuAjOqyjCDrkJzri6TrqbQpIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcInN0cmVhbVwiLCBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIGV4aXN0aW5nQXBpLnBhdGgsIHBhdGgpO1xuICAgICAgZXhpc3RpbmdBcGkucGF0aCA9IHBhdGg7XG5cbiAgICAgIC8vIOq4sOyhtOydmCDsmLXshZjqs7wg7IOI66Gc7Jq0IOyYteyFmOydtCDqsrnsuZjripQg67aA67aE7J20IOyeiOuLpOuptCDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ09wdGlvbnMoXG4gICAgICAgIFwic3RyZWFtXCIsXG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgZXhpc3RpbmdBcGkub3B0aW9ucyxcbiAgICAgICAgb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICk7XG4gICAgICBleGlzdGluZ0FwaS5vcHRpb25zID0ge1xuICAgICAgICAuLi5leGlzdGluZ0FwaS5vcHRpb25zLCAvLyDquLDsobTsnZgg7Ji17IWY7J2EIOyhtOykke2VmOuQmFxuICAgICAgICAuLi5vcHRpb25zV2l0aERlZmF1bHRzLCAvLyBAc3RyZWFtIOuNsOy9lOugiOydtO2EsOydmCDsmLXshZjsnYQg7LaU6rCA7ZWp64uI64ukLlxuICAgICAgfTtcblxuICAgICAgZXhpc3RpbmdBcGkuc3RyZWFtT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlZ2lzdGVyZWRBcGlzLnB1c2goe1xuICAgICAgICBtb2RlbE5hbWUsXG4gICAgICAgIG1ldGhvZE5hbWUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICAgIHN0cmVhbU9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcyB8IEJhc2VGcmFtZUNsYXNzLCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZU1vZGVsQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMubW9kZWxOYW1lLCBcIm1vZGVsXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInN0cmVhbToge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlRnJhbWVDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5mcmFtZU5hbWUsIFwiZnJhbWVcIikpLmRlYnVnKFxuICAgICAgICAgIFwic3RyZWFtOiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdlYnNvY2tldChvcHRpb25zOiBXZWJTb2NrZXREZWNvcmF0b3JPcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBEZWNvcmF0b3JUYXJnZXQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHdlYnNvY2tldCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgY2hlY2tTaW5nbGVEZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eUtleSwgREVDT1JBVE9SX1RZUEVTLldFQlNPQ0tFVCk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGF0aCA9IGAvJHtpbmZsZWN0aW9uLmNhbWVsaXplKFxuICAgICAgbW9kZWxOYW1lLnJlcGxhY2UoL01vZGVsJC8sIFwiXCIpLnJlcGxhY2UoL0ZyYW1lJC8sIFwiXCIpLFxuICAgICAgdHJ1ZSxcbiAgICApfS8ke2luZmxlY3Rpb24uY2FtZWxpemUocHJvcGVydHlLZXksIHRydWUpfWA7XG4gICAgY29uc3QgcGF0aCA9IG9wdGlvbnMucGF0aCA/PyBkZWZhdWx0UGF0aDtcbiAgICBjb25zdCB7IG91dEV2ZW50czogX291dEV2ZW50cywgaW5FdmVudHM6IF9pbkV2ZW50cywgLi4uYXBpT3B0aW9ucyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBvcHRpb25zV2l0aERlZmF1bHRzID0ge1xuICAgICAgLi4uYXBpT3B0aW9ucyxcbiAgICAgIGh0dHBNZXRob2Q6IFwiR0VUXCIgYXMgSFRUUE1ldGhvZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuICAgIGlmIChleGlzdGluZ0FwaSkge1xuICAgICAgYXNzZXJ0Tm9Db25mbGljdGluZ1BhdGgoXCJ3ZWJzb2NrZXRcIiwgbW9kZWxOYW1lLCBtZXRob2ROYW1lLCBleGlzdGluZ0FwaS5wYXRoLCBwYXRoKTtcbiAgICAgIGV4aXN0aW5nQXBpLnBhdGggPSBwYXRoO1xuXG4gICAgICBhc3NlcnROb0NvbmZsaWN0aW5nT3B0aW9ucyhcbiAgICAgICAgXCJ3ZWJzb2NrZXRcIixcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2ROYW1lLFxuICAgICAgICBleGlzdGluZ0FwaS5vcHRpb25zLFxuICAgICAgICBvcHRpb25zV2l0aERlZmF1bHRzLFxuICAgICAgKTtcbiAgICAgIGV4aXN0aW5nQXBpLm9wdGlvbnMgPSB7XG4gICAgICAgIC4uLmV4aXN0aW5nQXBpLm9wdGlvbnMsXG4gICAgICAgIC4uLm9wdGlvbnNXaXRoRGVmYXVsdHMsXG4gICAgICB9O1xuXG4gICAgICBleGlzdGluZ0FwaS53ZWJzb2NrZXRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgb3B0aW9uczogb3B0aW9uc1dpdGhEZWZhdWx0cyxcbiAgICAgICAgd2Vic29ja2V0T3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IG9yaWdpbmFsTWV0aG9kID0gZGVzY3JpcHRvci52YWx1ZTtcbiAgICBkZXNjcmlwdG9yLnZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VNb2RlbENsYXNzIHwgQmFzZUZyYW1lQ2xhc3MsIC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBCYXNlTW9kZWxDbGFzcykge1xuICAgICAgICBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5tb2RlbE5hbWUsIFwibW9kZWxcIikpLmRlYnVnKFxuICAgICAgICAgIFwid2Vic29ja2V0OiB7bW9kZWx9LnttZXRob2R9XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VGcmFtZUNsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLmZyYW1lTmFtZSwgXCJmcmFtZVwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ3ZWJzb2NrZXQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcmlnaW5hbE1ldGhvZC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNhY3Rpb25hbChvcHRpb25zOiBUcmFuc2FjdGlvbmFsT3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHsgaXNvbGF0aW9uLCByZWFkT25seSwgZGJQcmVzZXQgPSBcIndcIiB9ID0gb3B0aW9ucztcblxuICByZXR1cm4gKHRhcmdldDogRGVjb3JhdG9yVGFyZ2V0LCBwcm9wZXJ0eUtleTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gZ2V0TW9kZWxOYW1lRnJvbUNsYXNzTmFtZSh0YXJnZXQuY29uc3RydWN0b3IubmFtZSk7XG4gICAgYXNzZXJ0KFxuICAgICAgbW9kZWxOYW1lLFxuICAgICAgYG1vZGVsTmFtZSBpcyByZXF1aXJlZCBvbiBAdHJhbnNhY3Rpb25hbCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBCYXNlTW9kZWxDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcInRyYW5zYWN0aW9uYWw6IHttb2RlbH0ue21ldGhvZH1cIiwge1xuICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgZXhpc3RpbmdDb250ZXh0ID0gREIudHJhbnNhY3Rpb25TdG9yYWdlLmdldFN0b3JlKCk7XG5cbiAgICAgIC8vIEFzeW5jTG9jYWxTdG9yYWdlIOy7qO2FjeyKpO2KuCDsl4bqsbDrgpgg7ZW064u5IHByZXNldOydmCDtirjrnpzsnq3shZjsnbQg7JeG7Jy866m0IOyDiOuhnCDsi5zsnpFcbiAgICAgIGNvbnN0IHN0YXJ0VHJhbnNhY3Rpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHB1cmkgPSB0aGlzLmdldFB1cmkoZGJQcmVzZXQpO1xuXG4gICAgICAgIHJldHVybiBwdXJpLmtuZXgudHJhbnNhY3Rpb24oXG4gICAgICAgICAgYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJuZXcgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICAgICAgY29uc3QgdHJ4V3JhcHBlciA9IG5ldyBQdXJpVHJhbnNhY3Rpb25XcmFwcGVyKHRyeCwgbmV3IFVwc2VydEJ1aWxkZXIoKSk7XG4gICAgICAgICAgICAvLyBUcmFuc2FjdGlvbkNvbnRleHTsl5Ag7Yq4656c7J6t7IWYIOyggOyepVxuICAgICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuc2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQsIHRyeFdyYXBwZXIpO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAvLyDtirjrnpzsnq3shZgg7KCc6rGwXG4gICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiZGVsZXRlIHRyYW5zYWN0aW9uIGNvbnRleHQ6IHtkYlByZXNldH1cIiwgeyBkYlByZXNldCB9KTtcbiAgICAgICAgICAgICAgREIuZ2V0VHJhbnNhY3Rpb25Db250ZXh0KCkuZGVsZXRlVHJhbnNhY3Rpb24oZGJQcmVzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBpc29sYXRpb25MZXZlbDogaXNvbGF0aW9uLCByZWFkT25seSB9LFxuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq46rCAIOyXhuycvOuptCDsg4jroZwg7IOd7ISxXG4gICAgICBpZiAoIWV4aXN0aW5nQ29udGV4dCkge1xuICAgICAgICByZXR1cm4gREIucnVuV2l0aFRyYW5zYWN0aW9uKHN0YXJ0VHJhbnNhY3Rpb24pO1xuICAgICAgfVxuXG4gICAgICAvLyDsnbTrr7ggQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq4IOyViOyXkCDsnojripTsp4Ag7ZmV7J24IO2bhCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsnbTrr7gg7J6I7Jy866m0IOyerOyCrOyaqVxuICAgICAgaWYgKGV4aXN0aW5nQ29udGV4dD8uZ2V0VHJhbnNhY3Rpb24oZGJQcmVzZXQpKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwicmV1c2UgdHJhbnNhY3Rpb24gY29udGV4dDoge2RiUHJlc2V0fVwiLCB7IGRiUHJlc2V0IH0pO1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxNZXRob2QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICB9XG5cbiAgICAgIC8vIOy7qO2FjeyKpO2KuOuKlCDsnojsp4Drp4wg7J20IHByZXNldOydmCDtirjrnpzsnq3shZjsnYAg7JeG64qUIOqyveyasCAo6rCZ7J2AIOy7qO2FjeyKpO2KuCDrgrTsl5DshJwg7Iuk7ZaJKVxuICAgICAgcmV0dXJuIHN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gIH07XG59XG5cbi8qKlxuICog7YyM7J28IOyXheuhnOuTnCBBUEnrpbwg7IOd7ISx7ZW07KSN64uI64ukLiAoQGFwaSDrjbDsvZTroIjsnbTthLAg7JeG7J20IOuPheumveyggeycvOuhnCDsgqzsmqkpXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwbG9hZChvcHRpb25zOiBVcGxvYWREZWNvcmF0b3JPcHRpb25zID0geyBjb25zdW1lOiBcImJ1ZmZlclwiIH0pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IERlY29yYXRvclRhcmdldCwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGNvbnN0IG1vZGVsTmFtZSA9IGdldE1vZGVsTmFtZUZyb21DbGFzc05hbWUodGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIGFzc2VydChcbiAgICAgIG1vZGVsTmFtZSxcbiAgICAgIGBtb2RlbE5hbWUgaXMgcmVxdWlyZWQgb24gQHVwbG9hZCBkZWNvcmF0b3Igb24gJHt0YXJnZXQuY29uc3RydWN0b3IubmFtZX0uJHtwcm9wZXJ0eUtleX1gLFxuICAgICk7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHByb3BlcnR5S2V5O1xuXG4gICAgLy8g66mU7ISc65Oc7JeQIOqxuOumsCDrjbDsvZTroIjsnbTthLAg7KSR67O1IOyytO2BrFxuICAgIGNoZWNrU2luZ2xlRGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHlLZXksIERFQ09SQVRPUl9UWVBFUy5VUExPQUQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFBhdGggPSBgLyR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgIG1vZGVsTmFtZS5yZXBsYWNlKC9Nb2RlbCQvLCBcIlwiKS5yZXBsYWNlKC9GcmFtZSQvLCBcIlwiKSxcbiAgICAgIHRydWUsXG4gICAgKX0vJHtpbmZsZWN0aW9uLmNhbWVsaXplKG1ldGhvZE5hbWUsIHRydWUpfWA7XG5cbiAgICAvLyByZWdpc3RlcmVkQXBpc+yXkOyEnCDtlbTri7kgQVBJIOywvuyVhOyEnCB1cGxvYWRPcHRpb25zIOy2lOqwgFxuICAgIGNvbnN0IGV4aXN0aW5nQXBpID0gcmVnaXN0ZXJlZEFwaXMuZmluZChcbiAgICAgIChhcGkpID0+IGFwaS5tb2RlbE5hbWUgPT09IG1vZGVsTmFtZSAmJiBhcGkubWV0aG9kTmFtZSA9PT0gbWV0aG9kTmFtZSxcbiAgICApO1xuXG4gICAgaWYgKGV4aXN0aW5nQXBpKSB7XG4gICAgICAvLyDsnqzrk7HroZ0g7IucIOyXheuhnOuTnCDsmLXshZjrp4wg6rCx7IugXG4gICAgICBleGlzdGluZ0FwaS51cGxvYWRPcHRpb25zID0gb3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g7IOI66GcIOuTseuhnVxuICAgICAgcmVnaXN0ZXJlZEFwaXMucHVzaCh7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgbWV0aG9kTmFtZSxcbiAgICAgICAgcGF0aDogZGVmYXVsdFBhdGgsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBodHRwTWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBjbGllbnRzOiBbXCJheGlvcy1tdWx0aXBhcnRcIiwgXCJ0YW5zdGFjay1tdXRhdGlvbi1tdWx0aXBhcnRcIl0sXG4gICAgICAgICAgZ3VhcmRzOiBvcHRpb25zLmd1YXJkcyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogb3B0aW9ucy5kZXNjcmlwdGlvbixcbiAgICAgICAgfSxcbiAgICAgICAgdXBsb2FkT3B0aW9uczogb3B0aW9ucyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBhc3luYyBmdW5jdGlvbiAodGhpczogQmFzZU1vZGVsQ2xhc3MgfCBCYXNlRnJhbWVDbGFzcywgLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEJhc2VNb2RlbENsYXNzKSB7XG4gICAgICAgIGdldExvZ2dlcihjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSh0aGlzLm1vZGVsTmFtZSwgXCJtb2RlbFwiKSkuZGVidWcoXG4gICAgICAgICAgXCJ1cGxvYWQ6IHttb2RlbH0ue21ldGhvZH1cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICAgICAgbWV0aG9kOiBtZXRob2ROYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQmFzZUZyYW1lQ2xhc3MpIHtcbiAgICAgICAgZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuZnJhbWVOYW1lLCBcImZyYW1lXCIpKS5kZWJ1ZyhcbiAgICAgICAgICBcInVwbG9hZDoge21vZGVsfS57bWV0aG9kfVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgfTtcbn1cblxuLyoqXG4gKiDquLDsobTsnZggcGF0aOyZgCDsg4jroZzsmrQgcGF0aOqwgCDri6TrpbTri6TrqbQoPeqwkuydtCDsnojrjZgg7Iqk7Yq466eB7J20IOuLpOuluCDqsJLsnbQg7J6I64qUIOyKpO2KuOungeycvOuhnCDrsJTrgIzqsowg65Cc64uk66m0KSDsl5Drn6zrpbwg7YSw65yo66Ck7KSN64uI64ukLlxuICogQHBhcmFtIGRlY29yYXRvck5hbWUg642w7L2U66CI7J207YSwIOydtOumhFxuICogQHBhcmFtIG1vZGVsTmFtZSDrqqjrjbgg7J2066aEXG4gKiBAcGFyYW0gbWV0aG9kTmFtZSDrqZTshJzrk5wg7J2066aEXG4gKiBAcGFyYW0gZXhpc3RpbmdQYXRoIOq4sOyhtOydmCBwYXRoXG4gKiBAcGFyYW0gbmV3UGF0aCDsg4jroZzsmrQgcGF0aFxuICovXG5mdW5jdGlvbiBhc3NlcnROb0NvbmZsaWN0aW5nUGF0aChcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgbWV0aG9kTmFtZTogc3RyaW5nLFxuICBleGlzdGluZ1BhdGg6IHN0cmluZyxcbiAgbmV3UGF0aDogc3RyaW5nLFxuKSB7XG4gIGlmIChleGlzdGluZ1BhdGggIT09IFwiXCIgJiYgbmV3UGF0aCAhPT0gXCJcIiAmJiBleGlzdGluZ1BhdGggIT09IG5ld1BhdGgpIHtcbiAgICAvLyDsnbTqsoPsnbQg66y07IqoIOyDge2ZqeydtOuDkOuptOyalCwgYXBpLnBhdGjqsIAg642u7Ja07JSM7JuM7KeA64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAvLyDqsIDroLkgQGFwaSh7IHBhdGg6IFwiL2FwaS92MS91c2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgLy8gQHN0cmVhbSh7IHBhdGg6IFwiL2FwaS92MS91c2Vycy9zdHJlYW1cIiB9KSDqsJnsnYAg6rKD7J20IOu2meyWtCDsnojripQg7IOB7Zmp7J6F64uI64ukLlxuICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIHBhdGgg7ZWE65Oc66W8IOqxtOuTnOumrOqyjCDrkJjrr4DroZwsIOyXkOufrOulvCDthLDrnKjroKTspI3ri4jri6QuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3RpbmcgcGF0aDogJHtuZXdQYXRofS4gVGhlIGRlY29yYXRvciBpcyB0cnlpbmcgdG8gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHBhdGgoJHtleGlzdGluZ1BhdGh9KSB3aXRoIHRoZSBuZXcgcGF0aCgke25ld1BhdGh9KS5gLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobTsnZgg7Ji17IWY6rO8IOyDiOuhnOyatCDsmLXshZjsnbQg6rK57LmY64qUIOu2gOu2hOydtCDsnojri6TrqbQg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAqIEBwYXJhbSBkZWNvcmF0b3JOYW1lIOuNsOy9lOugiOydtO2EsCDsnbTrpoRcbiAqIEBwYXJhbSBtb2RlbE5hbWUg66qo6424IOydtOumhFxuICogQHBhcmFtIG1ldGhvZE5hbWUg66mU7ISc65OcIOydtOumhFxuICogQHBhcmFtIGV4aXN0aW5nT3B0aW9ucyDquLDsobTsnZgg7Ji17IWYXG4gKiBAcGFyYW0gbmV3T3B0aW9ucyDsg4jroZzsmrQg7Ji17IWYXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vQ29uZmxpY3RpbmdPcHRpb25zKFxuICBkZWNvcmF0b3JOYW1lOiBzdHJpbmcsXG4gIG1vZGVsTmFtZTogc3RyaW5nLFxuICBtZXRob2ROYW1lOiBzdHJpbmcsXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIDzslYQg7Im96rKM7Im96rKMIOyigCDqsJHsi5zri6Q+XG4gIGV4aXN0aW5nT3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgLy8gb3hsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgLS0gPOydtOuftCDrlYwg7JWE64uI66m0IGFueSDslrjsoJwg7JSB64uI6rmMPlxuICBuZXdPcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSB7XG4gIE9iamVjdC5rZXlzKG5ld09wdGlvbnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChleGlzdGluZ09wdGlvbnNba2V5XSAmJiAhaXNFcXVhbChleGlzdGluZ09wdGlvbnNba2V5XSwgbmV3T3B0aW9uc1trZXldKSkge1xuICAgICAgLy8g7J206rKD7J20IOustOyKqCDsg4HtmansnbTrg5DrqbTsmpQsIGFwaS5vcHRpb25z6rCAIOuNruyWtOyUjOybjOyngOuKlCDsg4HtmansnoXri4jri6QuXG4gICAgICAvLyDqsIDroLkgQGFwaSh7IHJlc291cmNlTmFtZTogXCJVc2Vyc1wiIH0pIOuNsOy9lOugiOydtO2EsOqwgCDrtpnslrTsnojripQg66mU7ISc65Oc7JeQXG4gICAgICAvLyBAc3RyZWFtKHsgcmVzb3VyY2VOYW1lOiBcIlBvc3RzXCIgfSkg6rCZ7J2AIOqyg+ydtCDrtpnslrQg7J6I64qUIOyDge2ZqeyeheuLiOuLpC5cbiAgICAgIC8vIOydtOugh+qyjCDrkJjrqbQg65GQIOuNsOy9lOugiOydtO2EsOqwgCDqsJnsnYAgYXBp7J2YIG9wdGlvbnMg7IaNIOqwmeydgCDtlYTrk5zrpbwg6rG065Oc66as6rKMIOuQmOuvgOuhnCwg7JeQ65+s66W8IO2EsOucqOugpOykjeuLiOuLpC5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEAke2RlY29yYXRvck5hbWV9IGRlY29yYXRvciBvbiAke21vZGVsTmFtZX0uJHttZXRob2ROYW1lfSBoYXMgY29uZmxpY3Rpbmcgb3B0aW9uczogJHtrZXl9LiBUaGUgZGVjb3JhdG9yIGlzIHRyeWluZyB0byBvdmVycmlkZSB0aGUgZXhpc3Rpbmcgb3B0aW9uKCR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmdPcHRpb25zW2tleV0pfSkgd2l0aCB0aGUgbmV3IG9wdGlvbigke0pTT04uc3RyaW5naWZ5KG5ld09wdGlvbnNba2V5XSl9KS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQWlJQSxTQUFTLHFCQUFxQixRQUF5QixhQUFxQixlQUF1QjtDQUNqRyxNQUFNLFNBQVMsT0FBTztBQUN0QixLQUFJLFFBQVEsbUJBQW1CLFFBQVEsb0JBQW9CLGVBQWU7QUFDeEUsUUFBTSxJQUFJLE1BQ1IsSUFBSSxjQUFjLGVBQWUsT0FBTyxjQUFjLENBQUMsc0NBQXNDLE9BQU8sWUFBWSxLQUFLLEdBQUcsWUFBWSwrRkFDckk7UUFDSTtBQUNMLFNBQU8sa0JBQWtCOzs7QUFJN0IsU0FBZ0IsSUFBSSxVQUErQixFQUFFLEVBQUU7QUFDckQsV0FBVTtFQUNSLFlBQVk7RUFDWixhQUFhO0VBQ2IsU0FBUyxDQUFDLFFBQVE7RUFDbEIsR0FBRztFQUNKO0FBRUQsU0FBUSxRQUF5QixhQUFxQixlQUFtQztFQUN2RixNQUFNLFlBQVksMEJBQTBCLE9BQU8sWUFBWSxLQUFLO0FBQ3BFLFNBQ0UsV0FDQSw4Q0FBOEMsT0FBTyxZQUFZLEtBQUssR0FBRyxjQUMxRTtFQUNELE1BQU0sYUFBYTtBQUduQix1QkFBcUIsUUFBUSxhQUFhLGdCQUFnQixJQUFJO0VBRTlELE1BQU0sY0FBYyxJQUFJLFdBQVcsU0FDakMsVUFBVSxRQUFRLFVBQVUsR0FBRyxDQUFDLFFBQVEsVUFBVSxHQUFHLEVBQ3JELEtBQ0QsQ0FBQyxHQUFHLFdBQVcsU0FBUyxhQUFhLEtBQUs7RUFDM0MsTUFBTSxPQUFPLFFBQVEsUUFBUTtFQUc3QixNQUFNLGNBQWMsZUFBZSxNQUNoQyxVQUFRQSxNQUFJLGNBQWMsYUFBYUEsTUFBSSxlQUFlLFdBQzVEO0FBQ0QsTUFBSSxhQUFhO0FBRWYsMkJBQXdCLE9BQU8sV0FBVyxZQUFZLFlBQVksTUFBTSxLQUFLO0FBQzdFLGVBQVksT0FBTztBQUdu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
|
package/dist/api/sonamu.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,MAAM,CAAC;AAM9E,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAQvF,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIrE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKrD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,OAAO,EAAE,gBAAgB,EAAoD,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}
|