sonamu 0.12.0 → 0.13.0
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/_virtual/_rolldown/runtime.js +1 -2
- package/dist/ai/agents/agent.js +2 -3
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +1 -2
- package/dist/ai/providers/rtzr/error.js +2 -3
- package/dist/ai/providers/rtzr/model.js +1 -2
- package/dist/ai/providers/rtzr/options.js +1 -2
- package/dist/ai/providers/rtzr/provider.js +1 -2
- package/dist/ai/providers/rtzr/utils.js +1 -2
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.d.ts +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +9 -9
- package/dist/api/code-converters.js +6 -5
- package/dist/api/config.d.ts +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +2 -3
- package/dist/api/context.d.ts +2 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +2 -3
- package/dist/api/http-validator.js +2 -3
- package/dist/api/index.js +8 -3
- package/dist/api/secret.js +1 -2
- package/dist/api/sonamu.d.ts +3 -5
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +19 -18
- package/dist/api/validator.js +1 -2
- package/dist/api/websocket-helpers.js +2 -3
- package/dist/auth/audit-log/builders.js +1 -2
- package/dist/auth/audit-log/client-ip.js +2 -3
- package/dist/auth/audit-log/events.js +1 -2
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +2 -3
- package/dist/auth/audit-log-ingestor.js +2 -3
- package/dist/auth/auth-generator.js +2 -3
- package/dist/auth/better-auth-entities.js +1 -2
- package/dist/auth/better-auth-request.js +2 -3
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +2 -3
- package/dist/auth/plugins/entity-definitions/admin.js +1 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +1 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +1 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +1 -2
- package/dist/auth/plugins/entity-definitions/index.js +1 -2
- package/dist/auth/plugins/entity-definitions/jwt.js +1 -2
- package/dist/auth/plugins/entity-definitions/organization.js +1 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +1 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +1 -2
- package/dist/auth/plugins/entity-definitions/sso.js +1 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +1 -2
- package/dist/auth/plugins/entity-definitions/username.js +1 -2
- package/dist/auth/plugins/wrappers/admin.d.ts +33 -32
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +2 -3
- package/dist/auth/plugins/wrappers/anonymous.js +2 -3
- package/dist/auth/plugins/wrappers/api-key.js +2 -3
- package/dist/auth/plugins/wrappers/jwt.js +2 -3
- package/dist/auth/plugins/wrappers/organization.js +2 -3
- package/dist/auth/plugins/wrappers/passkey.js +2 -3
- package/dist/auth/plugins/wrappers/phone-number.d.ts +43 -1
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.d.ts +138 -187
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.js +1 -2
- package/dist/auth/plugins/wrappers/two-factor.d.ts +51 -10
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.d.ts +39 -5
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +5 -5
- package/dist/bin/compiler-policy.js +2 -3
- package/dist/bin/fixture.js +7 -5
- package/dist/bin/hmr-hook-register.js +1 -2
- package/dist/bin/migrate-targets.js +2 -3
- package/dist/bin/test-command.js +2 -3
- package/dist/bin/ts-loader-register.js +2 -3
- package/dist/bin/ts-loader-registration.js +2 -3
- package/dist/bin/typecheck-web.js +2 -3
- package/dist/cache/cache-manager.js +1 -2
- package/dist/cache/decorator.js +2 -3
- package/dist/cache/drivers.js +1 -2
- package/dist/cache/index.js +2 -3
- package/dist/cache-control/cache-control.js +1 -2
- package/dist/code-formatting/index.js +2 -3
- package/dist/code-formatting/oxfmt.js +2 -3
- package/dist/code-formatting/oxlint.js +2 -3
- package/dist/compress/compress.js +1 -2
- package/dist/compress/index.js +2 -2
- package/dist/compress/types.d.ts +1 -1
- package/dist/compress/types.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +2 -3
- package/dist/database/_batch_update.js +1 -2
- package/dist/database/base-model.js +4 -4
- package/dist/database/db.js +4 -4
- package/dist/database/knex.js +2 -3
- package/dist/database/puri-wrapper.js +2 -3
- package/dist/database/puri.js +23 -22
- package/dist/database/puri.types.js +1 -2
- package/dist/database/transaction-context.js +1 -2
- package/dist/database/upsert-builder.js +2 -3
- package/dist/dict/en.js +2 -3
- package/dist/dict/index.js +3 -3
- package/dist/dict/ko.js +2 -3
- package/dist/dict/rc-keys.js +1 -2
- package/dist/dict/sd.js +2 -3
- package/dist/dict/sonamu-dictionary.js +7 -6
- package/dist/dict/utils.js +2 -3
- package/dist/entity/entity-manager.d.ts +66 -66
- package/dist/entity/entity-manager.js +4 -4
- package/dist/entity/entity-template-cone.js +2 -3
- package/dist/entity/entity.js +21 -18
- package/dist/env.js +1 -2
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +2 -3
- package/dist/filter/index.js +3 -2
- package/dist/filter/types.js +1 -2
- package/dist/filter/utils.js +7 -6
- package/dist/index.js +39 -5
- package/dist/logger/category.js +2 -3
- package/dist/logger/configure.js +5 -5
- package/dist/migration/code-generation.js +23 -16
- package/dist/migration/index-where-predicate.js +2 -3
- package/dist/migration/migration-set.js +2 -3
- package/dist/migration/migrator.js +2 -3
- package/dist/migration/postgresql-schema-reader.js +6 -9
- package/dist/migration/slack-confirm.js +2 -3
- package/dist/naite/naite-reporter.js +2 -3
- package/dist/naite/naite.js +10 -8
- package/dist/runtime-type.js +2 -3
- package/dist/ssr/hmr-opt-out.js +1 -2
- package/dist/ssr/index.js +7 -4
- package/dist/ssr/registry.js +1 -2
- package/dist/ssr/renderer.js +2 -3
- package/dist/storage/base-file.js +1 -2
- package/dist/storage/buffered-file.js +2 -3
- package/dist/storage/drivers.js +1 -2
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +1 -2
- package/dist/storage/storage-manager.js +2 -3
- package/dist/storage/uploaded-file.js +2 -3
- package/dist/stream/__tests__/ws-test-helpers.js +2 -3
- package/dist/stream/index.js +11 -2
- package/dist/stream/sse.js +1 -2
- package/dist/stream/ws-audience-resolver.js +2 -3
- package/dist/stream/ws-audience.js +1 -2
- package/dist/stream/ws-cluster-bus.js +1 -2
- package/dist/stream/ws-delivery.js +2 -3
- package/dist/stream/ws-frame.js +1 -2
- package/dist/stream/ws-local-connection-store.js +2 -3
- package/dist/stream/ws-presence-index.js +1 -2
- package/dist/stream/ws-presence-store.js +2 -3
- package/dist/stream/ws-registry.js +2 -3
- package/dist/stream/ws-session-id.js +1 -2
- package/dist/stream/ws-telemetry-memory.js +3 -4
- package/dist/stream/ws-telemetry-trace.js +1 -2
- package/dist/stream/ws-telemetry.js +2 -3
- package/dist/stream/ws.js +2 -3
- package/dist/syncer/api-parser.js +2 -3
- package/dist/syncer/checksum.js +4 -4
- package/dist/syncer/code-generator.js +4 -4
- package/dist/syncer/entity-operations.js +2 -3
- package/dist/syncer/event-batcher.js +1 -2
- package/dist/syncer/file-copy.js +2 -3
- package/dist/syncer/file-patterns.js +2 -3
- package/dist/syncer/file-tracking.js +2 -3
- package/dist/syncer/filesystem-dependencies.js +1 -2
- package/dist/syncer/index.js +8 -2
- package/dist/syncer/module-loader.js +8 -6
- package/dist/syncer/syncer-actions.js +8 -7
- package/dist/syncer/syncer.js +13 -8
- package/dist/syncer/watcher.js +2 -3
- package/dist/tasks/decorator.js +1 -2
- package/dist/tasks/step-wrapper.js +2 -3
- package/dist/tasks/workflow-manager.js +2 -3
- package/dist/template/entity-converter.js +17 -16
- package/dist/template/helpers.js +2 -3
- package/dist/template/implementations/entity.template.js +2 -3
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +2 -3
- package/dist/template/implementations/generated_http.template.js +6 -6
- package/dist/template/implementations/generated_sso.template.js +2 -3
- package/dist/template/implementations/http_validators.template.js +2 -3
- package/dist/template/implementations/init_types.template.js +2 -3
- package/dist/template/implementations/model.template.js +4 -4
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +2 -3
- package/dist/template/implementations/sd.template.js +2 -3
- package/dist/template/implementations/services.template.js +2 -3
- package/dist/template/implementations/view_form.template.js +12 -9
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +19 -17
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +9 -3
- package/dist/template/template-manager.js +2 -3
- package/dist/template/template-types.js +1 -2
- package/dist/template/template.js +2 -3
- package/dist/template/zod-converter.js +54 -47
- package/dist/testing/_relation-graph.js +2 -3
- package/dist/testing/bootstrap.js +2 -3
- package/dist/testing/data-explorer.js +2 -3
- package/dist/testing/dev-test-routes.js +2 -3
- package/dist/testing/dev-vitest-manager.js +15 -12
- package/dist/testing/faker-mappings.js +1 -2
- package/dist/testing/filesystem.js +2 -3
- package/dist/testing/fixture-generator.js +2 -3
- package/dist/testing/fixture-loader.js +1 -2
- package/dist/testing/fixture-manager.js +12 -9
- package/dist/testing/global-setup.js +5 -5
- package/dist/testing/index.js +6 -3
- package/dist/testing/naite-vitest-reporter.js +1 -2
- package/dist/testing/parallel-db-manager.js +2 -3
- package/dist/testing/vitest-helpers.js +2 -3
- package/dist/tooling/__tests__/helpers/sonamu-test-root.js +2 -3
- package/dist/tooling/cdd-service.js +1 -2
- package/dist/tooling/cli-tooling.js +1 -2
- package/dist/tooling/fixture-service.js +1 -2
- package/dist/tooling/index.js +1 -2
- package/dist/tooling/test-run-client.js +2 -3
- package/dist/tsdown.api.config.js +1 -2
- package/dist/types/types.js +2 -3
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +4 -5
- package/dist/ui/ai-client.d.ts +2 -2
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +9 -8
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +11 -8
- package/dist/ui/async-route.js +1 -2
- package/dist/ui/cdd-service.js +22 -21
- package/dist/ui/migrations-api.js +6 -5
- package/dist/ui-web/assets/index-QDMyy31K.js +180 -0
- package/dist/ui-web/assets/index-dV7akMFB.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +1 -2
- package/dist/utils/class-name.js +1 -2
- package/dist/utils/console-util.js +1 -2
- package/dist/utils/controller.js +2 -3
- package/dist/utils/esm-utils.js +1 -2
- package/dist/utils/fs-utils.js +2 -3
- package/dist/utils/lodash-able.js +1 -2
- package/dist/utils/model.js +1 -2
- package/dist/utils/object-utils.js +2 -3
- package/dist/utils/path-utils.js +2 -3
- package/dist/utils/process-utils.js +2 -3
- package/dist/utils/runtime-value.js +1 -2
- package/dist/utils/sql-parser.js +2 -3
- package/dist/utils/type-utils.js +8 -8
- package/dist/utils/utils.js +2 -3
- package/dist/utils/zod-error.js +2 -3
- package/dist/vector/chunking.js +1 -2
- package/dist/vector/config.js +1 -2
- package/dist/vector/embedding.js +4 -4
- package/package.json +63 -63
- package/src/ai/agents/agent.ts +1 -1
- package/src/api/__tests__/sonamu.plugins.test.ts +11 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +6 -10
- package/src/api/config.ts +1 -1
- package/src/api/context.ts +2 -8
- package/src/api/sonamu.ts +26 -21
- package/src/auth/audit-log/plugin.ts +2 -0
- package/src/compress/types.ts +1 -1
- package/src/exceptions/error-handler.ts +3 -2
- package/src/template/implementations/model.template.ts +3 -3
- package/src/template/implementations/view_list.template.ts +12 -13
- package/src/ui/ai-api.ts +4 -2
- package/src/ui/ai-client.ts +2 -2
- package/src/ui/api.ts +58 -62
- package/dist/ui-web/assets/index-BMdIyKXS.css +0 -1
- package/dist/ui-web/assets/index-LpE8u19O.js +0 -178
|
@@ -5,7 +5,7 @@ import { EntityManager, init_entity_manager } from "../entity/entity-manager.js"
|
|
|
5
5
|
import { init_zod_converter, propToZodType, zodTypeToRenderingNode } from "./zod-converter.js";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import assert from "assert";
|
|
8
|
-
|
|
8
|
+
// src/template/entity-converter.ts
|
|
9
9
|
/**
|
|
10
10
|
* 엔티티의 특정 subset을 RenderingNode로 변환합니다.
|
|
11
11
|
* subset의 필드들을 Zod 타입으로 변환한 후 UI 렌더링용 노드로 만듭니다.
|
|
@@ -15,10 +15,11 @@ async function getColumnsNode(entityId, subsetKey) {
|
|
|
15
15
|
const entity = EntityManager.get(entityId);
|
|
16
16
|
const subsetDef = entity.subsets[subsetKey];
|
|
17
17
|
if (subsetDef === void 0) throw new ServiceUnavailableException(SD("sonamu.error.subsetNotFound")(subsetKey));
|
|
18
|
-
const
|
|
18
|
+
const columnsZodType = await propNodeToZodType({
|
|
19
19
|
nodeType: "object",
|
|
20
20
|
children: entity.fieldExprsToPropNodes(subsetDef)
|
|
21
|
-
})
|
|
21
|
+
});
|
|
22
|
+
const columnsNode = zodTypeToRenderingNode(columnsZodType);
|
|
22
23
|
assert(columnsNode.children !== void 0, "columnsNode.children is undefined");
|
|
23
24
|
columnsNode.children = columnsNode.children.map((child) => {
|
|
24
25
|
if (child.renderType === "object") {
|
|
@@ -52,17 +53,18 @@ async function getColumnsNode(entityId, subsetKey) {
|
|
|
52
53
|
*/
|
|
53
54
|
async function propNodeToZodType(propNode) {
|
|
54
55
|
if (propNode.nodeType === "plain") return propToZodType(propNode.prop);
|
|
55
|
-
else if (propNode.nodeType === "array")
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
else if (propNode.nodeType === "array") {
|
|
57
|
+
if (propNode.prop === void 0) throw new Error();
|
|
58
|
+
else if (propNode.children.length > 0) return (await propNodeToZodType({
|
|
59
|
+
...propNode,
|
|
60
|
+
nodeType: "object"
|
|
61
|
+
})).array();
|
|
62
|
+
else {
|
|
63
|
+
const innerType = await propToZodType(propNode.prop);
|
|
64
|
+
if (propNode.prop.nullable === true) return z.array(innerType).nullable();
|
|
65
|
+
else return z.array(innerType);
|
|
66
|
+
}
|
|
67
|
+
} else if (propNode.nodeType === "object") {
|
|
66
68
|
const entries = await Promise.all(propNode.children.map(async (childPropNode) => {
|
|
67
69
|
assert(childPropNode.prop?.name !== void 0, "childPropNode.prop.name is undefined");
|
|
68
70
|
return [childPropNode.prop.name, await propNodeToZodType(childPropNode)];
|
|
@@ -78,8 +80,7 @@ var init_entity_converter = __esmMin((() => {
|
|
|
78
80
|
init_so_exceptions();
|
|
79
81
|
init_zod_converter();
|
|
80
82
|
}));
|
|
81
|
-
//#endregion
|
|
82
83
|
init_entity_converter();
|
|
83
84
|
export { getColumnsNode, init_entity_converter, propNodeToZodType };
|
|
84
85
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNvbnZlcnRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvZW50aXR5LWNvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vZGljdC9zZFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbiB9IGZyb20gXCIuLi9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5UHJvcE5vZGUsIHR5cGUgUmVuZGVyaW5nTm9kZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgcHJvcFRvWm9kVHlwZSwgem9kVHlwZVRvUmVuZGVyaW5nTm9kZSB9IGZyb20gXCIuL3pvZC1jb252ZXJ0ZXJcIjtcblxuLyoqXG4gKiDsl5Tti7Dti7DsnZgg7Yq57KCVIHN1YnNldOydhCBSZW5kZXJpbmdOb2Rl66GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqIHN1YnNldOydmCDtlYTrk5zrk6TsnYQgWm9kIO2DgOyeheycvOuhnCDrs4DtmZjtlZwg7ZuEIFVJIOugjOuNlOungeyaqSDrhbjrk5zroZwg66eM65Ot64uI64ukLlxuICogb2JqZWN07JmAIGFycmF57J2YIOqyveyasCDsoIHsoIjtlZwgcGljayDtlYTrk5zrpbwg7J6Q64+Z7Jy866GcIOyEoO2Dne2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbHVtbnNOb2RlKGVudGl0eUlkOiBzdHJpbmcsIHN1YnNldEtleTogc3RyaW5nKTogUHJvbWlzZTxSZW5kZXJpbmdOb2RlPiB7XG4gIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgY29uc3Qgc3Vic2V0RGVmID0gZW50aXR5LnN1YnNldHNbc3Vic2V0S2V5XTtcbiAgaWYgKHN1YnNldERlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbihTRChcInNvbmFtdS5lcnJvci5zdWJzZXROb3RGb3VuZFwiKShzdWJzZXRLZXkpKTtcbiAgfVxuICBjb25zdCBwcm9wTm9kZXMgPSBlbnRpdHkuZmllbGRFeHByc1RvUHJvcE5vZGVzKHN1YnNldERlZik7XG4gIGNvbnN0IHJvb3RQcm9wTm9kZTogRW50aXR5UHJvcE5vZGUgPSB7XG4gICAgbm9kZVR5cGU6IFwib2JqZWN0XCIsXG4gICAgY2hpbGRyZW46IHByb3BOb2RlcyxcbiAgfTtcblxuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSB6b2Qg7Iqk7YKk66eI66W8IOuhnOuTnO2VoCDrlYwg7IKs7Jqp7ZWY64qUIO2DgOyehVxuICBjb25zdCBjb2x1bW5zWm9kVHlwZSA9XG4gICAgLyogU0FGRVRZOiDshKDtlokgWm9kIOyiheulmCDrtoTquLDsmYAg7YWc7ZSM66a/IOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoYXdhaXQgcHJvcE5vZGVUb1pvZFR5cGUoXG4gICAgICByb290UHJvcE5vZGUsXG4gICAgKSkgYXMgei5ab2RPYmplY3Q8YW55PjtcblxuICBjb25zdCBjb2x1bW5zTm9kZSA9IHpvZFR5cGVUb1JlbmRlcmluZ05vZGUoY29sdW1uc1pvZFR5cGUpO1xuICBhc3NlcnQoY29sdW1uc05vZGUuY2hpbGRyZW4gIT09IHVuZGVmaW5lZCwgXCJjb2x1bW5zTm9kZS5jaGlsZHJlbiBpcyB1bmRlZmluZWRcIik7XG4gIGNvbHVtbnNOb2RlLmNoaWxkcmVuID0gY29sdW1uc05vZGUuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xuICAgIGlmIChjaGlsZC5yZW5kZXJUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBhc3NlcnQoY2hpbGQuY2hpbGRyZW4gIT09IHVuZGVmaW5lZCwgXCJjaGlsZC5jaGlsZHJlbiBpcyB1bmRlZmluZWRcIik7XG4gICAgICBjb25zdCBwaWNrZWRDb2wgPSBjaGlsZC5jaGlsZHJlbi5maW5kKChjYykgPT4gW1widGl0bGVcIiwgXCJuYW1lXCJdLmluY2x1ZGVzKGNjLm5hbWUpKTtcbiAgICAgIGlmIChwaWNrZWRDb2wpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICByZW5kZXJUeXBlOiBcIm9iamVjdC1waWNrXCIsXG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBwaWNrZWQ6IHBpY2tlZENvbC5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNoaWxkLnJlbmRlclR5cGUgPT09IFwiYXJyYXlcIiAmJlxuICAgICAgY2hpbGQuZWxlbWVudCAmJlxuICAgICAgY2hpbGQuZWxlbWVudC5yZW5kZXJUeXBlID09PSBcIm9iamVjdFwiXG4gICAgKSB7XG4gICAgICBjb25zdCBwaWNrZWRDb2wgPSBjaGlsZC5lbGVtZW50Py5jaGlsZHJlbj8uZmluZCgoY2MpID0+IFtcInRpdGxlXCIsIFwibmFtZVwiXS5pbmNsdWRlcyhjYy5uYW1lKSk7XG4gICAgICBpZiAocGlja2VkQ29sKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgLi4uY2hpbGQuZWxlbWVudCxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6IFwib2JqZWN0LXBpY2tcIixcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICBwaWNrZWQ6IHBpY2tlZENvbC5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGQ7XG4gIH0pO1xuXG4gIHJldHVybiBjb2x1bW5zTm9kZTtcbn1cblxuLyoqXG4gKiBFbnRpdHlQcm9wTm9kZeulvCBab2Qg7YOA7J6F7Jy866GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqIHBsYWluLCBhcnJheSwgb2JqZWN0IOyEuCDqsIDsp4Agbm9kZVR5cGXsnYQg7J6s6reA7KCB7Jy866GcIOyymOumrO2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb3BOb2RlVG9ab2RUeXBlKHByb3BOb2RlOiBFbnRpdHlQcm9wTm9kZSk6IFByb21pc2U8ei5ab2RUeXBlQW55PiB7XG4gIGlmIChwcm9wTm9kZS5ub2RlVHlwZSA9PT0gXCJwbGFpblwiKSB7XG4gICAgcmV0dXJuIHByb3BUb1pvZFR5cGUocHJvcE5vZGUucHJvcCk7XG4gIH0gZWxzZSBpZiAocHJvcE5vZGUubm9kZVR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgIGlmIChwcm9wTm9kZS5wcm9wID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH0gZWxzZSBpZiAocHJvcE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYXdhaXQgcHJvcE5vZGVUb1pvZFR5cGUoe1xuICAgICAgICAgIC4uLnByb3BOb2RlLFxuICAgICAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgICB9KVxuICAgICAgKS5hcnJheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbm5lclR5cGUgPSBhd2FpdCBwcm9wVG9ab2RUeXBlKHByb3BOb2RlLnByb3ApO1xuICAgICAgaWYgKHByb3BOb2RlLnByb3AubnVsbGFibGUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHouYXJyYXkoaW5uZXJUeXBlKS5udWxsYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHouYXJyYXkoaW5uZXJUeXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvcE5vZGUubm9kZVR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcm9wTm9kZS5jaGlsZHJlbi5tYXAoYXN5bmMgKGNoaWxkUHJvcE5vZGUpID0+
|
|
86
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNvbnZlcnRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvZW50aXR5LWNvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU0QgfSBmcm9tIFwiLi4vZGljdC9zZFwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbiB9IGZyb20gXCIuLi9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnNcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5UHJvcE5vZGUsIHR5cGUgUmVuZGVyaW5nTm9kZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgcHJvcFRvWm9kVHlwZSwgem9kVHlwZVRvUmVuZGVyaW5nTm9kZSB9IGZyb20gXCIuL3pvZC1jb252ZXJ0ZXJcIjtcblxuLyoqXG4gKiDsl5Tti7Dti7DsnZgg7Yq57KCVIHN1YnNldOydhCBSZW5kZXJpbmdOb2Rl66GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqIHN1YnNldOydmCDtlYTrk5zrk6TsnYQgWm9kIO2DgOyeheycvOuhnCDrs4DtmZjtlZwg7ZuEIFVJIOugjOuNlOungeyaqSDrhbjrk5zroZwg66eM65Ot64uI64ukLlxuICogb2JqZWN07JmAIGFycmF57J2YIOqyveyasCDsoIHsoIjtlZwgcGljayDtlYTrk5zrpbwg7J6Q64+Z7Jy866GcIOyEoO2Dne2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldENvbHVtbnNOb2RlKGVudGl0eUlkOiBzdHJpbmcsIHN1YnNldEtleTogc3RyaW5nKTogUHJvbWlzZTxSZW5kZXJpbmdOb2RlPiB7XG4gIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgY29uc3Qgc3Vic2V0RGVmID0gZW50aXR5LnN1YnNldHNbc3Vic2V0S2V5XTtcbiAgaWYgKHN1YnNldERlZiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IFNlcnZpY2VVbmF2YWlsYWJsZUV4Y2VwdGlvbihTRChcInNvbmFtdS5lcnJvci5zdWJzZXROb3RGb3VuZFwiKShzdWJzZXRLZXkpKTtcbiAgfVxuICBjb25zdCBwcm9wTm9kZXMgPSBlbnRpdHkuZmllbGRFeHByc1RvUHJvcE5vZGVzKHN1YnNldERlZik7XG4gIGNvbnN0IHJvb3RQcm9wTm9kZTogRW50aXR5UHJvcE5vZGUgPSB7XG4gICAgbm9kZVR5cGU6IFwib2JqZWN0XCIsXG4gICAgY2hpbGRyZW46IHByb3BOb2RlcyxcbiAgfTtcblxuICAvLyBveGxpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAtLSB6b2Qg7Iqk7YKk66eI66W8IOuhnOuTnO2VoCDrlYwg7IKs7Jqp7ZWY64qUIO2DgOyehVxuICBjb25zdCBjb2x1bW5zWm9kVHlwZSA9XG4gICAgLyogU0FGRVRZOiDshKDtlokgWm9kIOyiheulmCDrtoTquLDsmYAg7YWc7ZSM66a/IOyeheugpSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoYXdhaXQgcHJvcE5vZGVUb1pvZFR5cGUoXG4gICAgICByb290UHJvcE5vZGUsXG4gICAgKSkgYXMgei5ab2RPYmplY3Q8YW55PjtcblxuICBjb25zdCBjb2x1bW5zTm9kZSA9IHpvZFR5cGVUb1JlbmRlcmluZ05vZGUoY29sdW1uc1pvZFR5cGUpO1xuICBhc3NlcnQoY29sdW1uc05vZGUuY2hpbGRyZW4gIT09IHVuZGVmaW5lZCwgXCJjb2x1bW5zTm9kZS5jaGlsZHJlbiBpcyB1bmRlZmluZWRcIik7XG4gIGNvbHVtbnNOb2RlLmNoaWxkcmVuID0gY29sdW1uc05vZGUuY2hpbGRyZW4ubWFwKChjaGlsZCkgPT4ge1xuICAgIGlmIChjaGlsZC5yZW5kZXJUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBhc3NlcnQoY2hpbGQuY2hpbGRyZW4gIT09IHVuZGVmaW5lZCwgXCJjaGlsZC5jaGlsZHJlbiBpcyB1bmRlZmluZWRcIik7XG4gICAgICBjb25zdCBwaWNrZWRDb2wgPSBjaGlsZC5jaGlsZHJlbi5maW5kKChjYykgPT4gW1widGl0bGVcIiwgXCJuYW1lXCJdLmluY2x1ZGVzKGNjLm5hbWUpKTtcbiAgICAgIGlmIChwaWNrZWRDb2wpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICByZW5kZXJUeXBlOiBcIm9iamVjdC1waWNrXCIsXG4gICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICBwaWNrZWQ6IHBpY2tlZENvbC5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNoaWxkLnJlbmRlclR5cGUgPT09IFwiYXJyYXlcIiAmJlxuICAgICAgY2hpbGQuZWxlbWVudCAmJlxuICAgICAgY2hpbGQuZWxlbWVudC5yZW5kZXJUeXBlID09PSBcIm9iamVjdFwiXG4gICAgKSB7XG4gICAgICBjb25zdCBwaWNrZWRDb2wgPSBjaGlsZC5lbGVtZW50Py5jaGlsZHJlbj8uZmluZCgoY2MpID0+IFtcInRpdGxlXCIsIFwibmFtZVwiXS5pbmNsdWRlcyhjYy5uYW1lKSk7XG4gICAgICBpZiAocGlja2VkQ29sKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgLi4uY2hpbGQuZWxlbWVudCxcbiAgICAgICAgICAgIHJlbmRlclR5cGU6IFwib2JqZWN0LXBpY2tcIixcbiAgICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgICBwaWNrZWQ6IHBpY2tlZENvbC5uYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGQ7XG4gIH0pO1xuXG4gIHJldHVybiBjb2x1bW5zTm9kZTtcbn1cblxuLyoqXG4gKiBFbnRpdHlQcm9wTm9kZeulvCBab2Qg7YOA7J6F7Jy866GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqIHBsYWluLCBhcnJheSwgb2JqZWN0IOyEuCDqsIDsp4Agbm9kZVR5cGXsnYQg7J6s6reA7KCB7Jy866GcIOyymOumrO2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb3BOb2RlVG9ab2RUeXBlKHByb3BOb2RlOiBFbnRpdHlQcm9wTm9kZSk6IFByb21pc2U8ei5ab2RUeXBlQW55PiB7XG4gIGlmIChwcm9wTm9kZS5ub2RlVHlwZSA9PT0gXCJwbGFpblwiKSB7XG4gICAgcmV0dXJuIHByb3BUb1pvZFR5cGUocHJvcE5vZGUucHJvcCk7XG4gIH0gZWxzZSBpZiAocHJvcE5vZGUubm9kZVR5cGUgPT09IFwiYXJyYXlcIikge1xuICAgIGlmIChwcm9wTm9kZS5wcm9wID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH0gZWxzZSBpZiAocHJvcE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgYXdhaXQgcHJvcE5vZGVUb1pvZFR5cGUoe1xuICAgICAgICAgIC4uLnByb3BOb2RlLFxuICAgICAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgICB9KVxuICAgICAgKS5hcnJheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbm5lclR5cGUgPSBhd2FpdCBwcm9wVG9ab2RUeXBlKHByb3BOb2RlLnByb3ApO1xuICAgICAgaWYgKHByb3BOb2RlLnByb3AubnVsbGFibGUgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIHouYXJyYXkoaW5uZXJUeXBlKS5udWxsYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHouYXJyYXkoaW5uZXJUeXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvcE5vZGUubm9kZVR5cGUgPT09IFwib2JqZWN0XCIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcm9wTm9kZS5jaGlsZHJlbi5tYXAoYXN5bmMgKGNoaWxkUHJvcE5vZGUpID0+IHtcbiAgICAgICAgYXNzZXJ0KGNoaWxkUHJvcE5vZGUucHJvcD8ubmFtZSAhPT0gdW5kZWZpbmVkLCBcImNoaWxkUHJvcE5vZGUucHJvcC5uYW1lIGlzIHVuZGVmaW5lZFwiKTtcbiAgICAgICAgcmV0dXJuIFtjaGlsZFByb3BOb2RlLnByb3AubmFtZSwgYXdhaXQgcHJvcE5vZGVUb1pvZFR5cGUoY2hpbGRQcm9wTm9kZSldIGFzIGNvbnN0O1xuICAgICAgfSksXG4gICAgKTtcbiAgICBjb25zdCBvYmogPSBPYmplY3QuZnJvbUVudHJpZXMoZW50cmllcyk7XG5cbiAgICBpZiAocHJvcE5vZGUucHJvcD8ubnVsbGFibGUgPT09IHRydWUpIHtcbiAgICAgIHJldHVybiB6Lm9iamVjdChvYmopLm51bGxhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB6Lm9iamVjdChvYmopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBFcnJvcjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBZUEsZUFBc0IsZUFBZSxVQUFrQixXQUEyQztDQUNoRyxNQUFNLFNBQVMsY0FBYyxJQUFJLFFBQVE7Q0FDekMsTUFBTSxZQUFZLE9BQU8sUUFBUTtDQUNqQyxJQUFJLGNBQWMsUUFDaEIsTUFBTSxJQUFJLDRCQUE0QixHQUFHLDZCQUE2QixDQUFDLENBQUMsU0FBUyxDQUFDO0NBU3BGLE1BQU0saUJBQ21ELE1BQU0sa0JBQzNEO0VBUEYsVUFBVTtFQUNWLFVBSGdCLE9BQU8sc0JBQXNCLFNBR25DO0NBTVIsQ0FDRjtDQUVGLE1BQU0sY0FBYyx1QkFBdUIsY0FBYztDQUN6RCxPQUFPLFlBQVksYUFBYSxRQUFXLG1DQUFtQztDQUM5RSxZQUFZLFdBQVcsWUFBWSxTQUFTLEtBQUssVUFBVTtFQUN6RCxJQUFJLE1BQU0sZUFBZSxVQUFVO0dBQ2pDLE9BQU8sTUFBTSxhQUFhLFFBQVcsNkJBQTZCO0dBQ2xFLE1BQU0sWUFBWSxNQUFNLFNBQVMsTUFBTSxPQUFPLENBQUMsU0FBUyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0dBQ2pGLElBQUksV0FDRixPQUFPO0lBQ0wsR0FBRztJQUNILFlBQVk7SUFDWixRQUFRLEVBQ04sUUFBUSxVQUFVLEtBQ3BCO0dBQ0Y7UUFFQSxPQUFPO0VBRVgsT0FBTyxJQUNMLE1BQU0sZUFBZSxXQUNyQixNQUFNLFdBQ04sTUFBTSxRQUFRLGVBQWUsVUFDN0I7R0FDQSxNQUFNLFlBQVksTUFBTSxTQUFTLFVBQVUsTUFBTSxPQUFPLENBQUMsU0FBUyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0dBQzNGLElBQUksV0FDRixPQUFPO0lBQ0wsR0FBRztJQUNILFNBQVM7S0FDUCxHQUFHLE1BQU07S0FDVCxZQUFZO0tBQ1osUUFBUSxFQUNOLFFBQVEsVUFBVSxLQUNwQjtJQUNGO0dBQ0Y7UUFFQSxPQUFPO0VBRVg7RUFDQSxPQUFPO0NBQ1QsQ0FBQztDQUVELE9BQU87QUFDVDs7Ozs7QUFNQSxlQUFzQixrQkFBa0IsVUFBaUQ7Q0FDdkYsSUFBSSxTQUFTLGFBQWEsU0FDeEIsT0FBTyxjQUFjLFNBQVMsSUFBSTtNQUM3QixJQUFJLFNBQVMsYUFBYSxTQUFTO0VBQ3hDLElBQUksU0FBUyxTQUFTLFFBQ3BCLE1BQU0sSUFBSSxNQUFNO09BQ1gsSUFBSSxTQUFTLFNBQVMsU0FBUyxHQUNwQyxRQUNFLE1BQU0sa0JBQWtCO0dBQ3RCLEdBQUc7R0FDSCxVQUFVO0VBQ1osQ0FBQyxFQUFBLENBQ0QsTUFBTTtPQUNIO0dBQ0wsTUFBTSxZQUFZLE1BQU0sY0FBYyxTQUFTLElBQUk7R0FDbkQsSUFBSSxTQUFTLEtBQUssYUFBYSxNQUM3QixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUMsQ0FBQyxTQUFTO1FBRW5DLE9BQU8sRUFBRSxNQUFNLFNBQVM7RUFFNUI7Q0FDRixPQUFPLElBQUksU0FBUyxhQUFhLFVBQVU7RUFDekMsTUFBTSxVQUFVLE1BQU0sUUFBUSxJQUM1QixTQUFTLFNBQVMsSUFBSSxPQUFPLGtCQUFrQjtHQUM3QyxPQUFPLGNBQWMsTUFBTSxTQUFTLFFBQVcsc0NBQXNDO0dBQ3JGLE9BQU8sQ0FBQyxjQUFjLEtBQUssTUFBTSxNQUFNLGtCQUFrQixhQUFhLENBQUM7RUFDekUsQ0FBQyxDQUNIO0VBQ0EsTUFBTSxNQUFNLE9BQU8sWUFBWSxPQUFPO0VBRXRDLElBQUksU0FBUyxNQUFNLGFBQWEsTUFDOUIsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUztPQUU5QixPQUFPLEVBQUUsT0FBTyxHQUFHO0NBRXZCLE9BQ0UsTUFBTTtBQUVWOztDQW5IK0IsUUFBQTtDQUN5QixvQkFBQTtDQUNpQixtQkFBQTtDQUVGLG1CQUFBIn0=
|
package/dist/template/helpers.js
CHANGED
|
@@ -2,7 +2,7 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
|
2
2
|
import { init_types, isEnumProp, isRelationProp } from "../types/types.js";
|
|
3
3
|
import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
|
|
4
4
|
import inflection from "inflection";
|
|
5
|
-
|
|
5
|
+
// src/template/helpers.ts
|
|
6
6
|
/**
|
|
7
7
|
* Enum의 표시용 라벨을 가져옵니다.
|
|
8
8
|
* OrderBy, SearchField 등 특수한 경우와 일반 Enum을 구분하여 처리합니다.
|
|
@@ -137,8 +137,7 @@ var init_helpers = __esmMin((() => {
|
|
|
137
137
|
init_entity_manager();
|
|
138
138
|
init_types();
|
|
139
139
|
}));
|
|
140
|
-
//#endregion
|
|
141
140
|
init_helpers();
|
|
142
141
|
export { extractObjectDeclaration, getEnumInfoFromColName, getLabel, getRelationNameFromColumnName, getRelationPropFromColName, init_helpers };
|
|
143
142
|
|
|
144
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuXG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGlzRW51bVByb3AsIGlzUmVsYXRpb25Qcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIFJlbGF0aW9uUHJvcCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuXG5pbnRlcmZhY2UgRW51bUNvbHVtbkluZm8ge1xuICBpZDogc3RyaW5nO1xuICB0YXJnZXRFbnRpdHlOYW1lczogRW50aXR5TmFtZXNSZWNvcmQ7XG4gIHRhcmdldEVudGl0eUlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW51beydmCDtkZzsi5zsmqkg652867Ko7J2EIOqwgOyguOyYteuLiOuLpC5cbiAqIE9yZGVyQnksIFNlYXJjaEZpZWxkIOuTsSDtirnsiJjtlZwg6rK97Jqw7JmAIOydvOuwmCBFbnVt7J2EIOq1rOu2hO2VmOyXrCDsspjrpqztlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYWJlbChlbnRpdHlJZDogc3RyaW5nLCBlbnVtSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChlbnVtSWQuZW5kc1dpdGgoXCJPcmRlckJ5XCIpKSB7XG4gICAgcmV0dXJuIFwi7KCV66CsXCI7XG4gIH0gZWxzZSBpZiAoZW51bUlkLmVuZHNXaXRoKFwiU2VhcmNoRmllbGRcIikpIHtcbiAgICByZXR1cm4gXCLqsoDsg4lcIjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBlbnVtUHJvcCA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKS5wcm9wcy5maW5kKFxuICAgICAgKHByb3ApID0+IGAke2VudGl0eUlkfSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wLm5hbWUpfWAgPT09IGVudW1JZCxcbiAgICApO1xuICAgIGlmIChlbnVtUHJvcD8uZGVzYykge1xuICAgICAgcmV0dXJuIGVudW1Qcm9wLmRlc2M7XG4gICAgfVxuICAgIHJldHVybiBlbnVtSWQ7XG4gIH1cbn1cblxuLyoqXG4gKiDsu6zrn7wg7J2066aE7Jy866Gc67aA7YSwIEVudW0g7KCV67O066W8IOy2lOy2nO2VqeuLiOuLpC5cbiAqIEVudGl0eeydmCBwcm9wIOykkSBlbnVtIO2DgOyeheyduCDqsoPsnYQg7LC+7JWEIOq0gOugqCDsoJXrs7Trpbwg67CY7ZmY7ZWp64uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bUluZm9Gcm9tQ29sTmFtZShlbnRpdHlJZDogc3RyaW5nLCBjb2xOYW1lOiBzdHJpbmcpOiBFbnVtQ29sdW1uSW5mbyB7XG4gIGNvbnN0IGJhc2VFbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG4gIGNvbnN0IHByb3AgPSBiYXNlRW50aXR5LnByb3BzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gY29sTmFtZSk7XG4gIGlmIChwcm9wICYmIGlzRW51bVByb3AocHJvcCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHByb3AuaWQsXG4gICAgICB0YXJnZXRFbnRpdHlJZDogZW50aXR5SWQsXG4gICAgICB0YXJnZXRFbnRpdHlOYW1lczogRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCksXG4gICAgICB0aXRsZTogcHJvcC5kZXNjID8/IHByb3AuaWQsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBpZENhbmRpZGF0ZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpfV8ke2luZmxlY3Rpb24udW5kZXJzY29yZShjb2xOYW1lKX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXRFbnRpdHlOYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogaWRDYW5kaWRhdGUsXG4gICAgICB0YXJnZXRFbnRpdHlJZDogZW50aXR5SWQsXG4gICAgICB0YXJnZXRFbnRpdHlOYW1lczogdGFyZ2V0RW50aXR5TmFtZXMsXG4gICAgICB0aXRsZTogaWRDYW5kaWRhdGUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIOy7rOufvCDsnbTrpoTsnLzroZzrtoDthLAgUmVsYXRpb24gcHJvcCDsoJXrs7Trpbwg6rCA7KC47Ji164uI64ukLlxuICog6rSA6rOE7ZiVIHByb3DsnbQg7JWE64uMIOqyveyasCDsl5Drn6zrpbwg67Cc7IOd7Iuc7YK164uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUoZW50aXR5SWQ6IHN0cmluZywgY29sTmFtZTogc3RyaW5nKTogUmVsYXRpb25Qcm9wIHtcbiAgY29uc3QgYmFzZUVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgY29uc3QgcmVsUHJvcCA9IGJhc2VFbnRpdHkucHJvcHMuZmluZCgocHJvcCkgPT4gcHJvcC5uYW1lID09PSBjb2xOYW1lKTtcbiAgaWYgKGlzUmVsYXRpb25Qcm9wKHJlbFByb3ApKSB7XG4gICAgY29uc3QgcmVsRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQocmVsUHJvcC53aXRoKTtcbiAgICBpZiAocmVsRW50aXR5LnBhcmVudElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk9ubHkgcGFyZW50IGVudGl0aWVzIGNhbiBiZSB1c2VkIGFzIHJlbGF0aW9uIHByb3BzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVsUHJvcDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYOywvuydhCDsiJgg7JeG64qUIFJlbGF0aW9uICR7Y29sTmFtZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEZLIOy7rOufvOuqheyXkOyEnCDsi6TsoJwgcmVsYXRpb24g7J2066aE7J2EIOy2lOy2nO2VqeuLiOuLpC5cbiAqIEJlbG9uZ3NUb09uZS9PbmVUb09uZSByZWxhdGlvbuydgCBzdWJzZXTsl5DshJwgRksg7Lus65+866qFKHVzZXJfaWQp7Jy866GcIOyDneyEseuQmOuvgOuhnCDrs4DtmZjsnbQg7ZWE7JqU7ZWY6rOgLFxuICogTWFueVRvTWFueSByZWxhdGlvbuydgCBzdWJzZXTsl5DshJwgcmVsYXRpb27rqoUoZW1wbG95ZWUp7Jy866GcIOyDneyEseuQmOuvgOuhnCDrs4DtmZjsnbQg67aI7ZWE7JqU7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBnZXRSZWxhdGlvbk5hbWVGcm9tQ29sdW1uTmFtZShcIkVtcGxveWVlXCIsIFwidXNlcl9pZFwiKSAvLyBcInVzZXJcIlxuICogZ2V0UmVsYXRpb25OYW1lRnJvbUNvbHVtbk5hbWUoXCJQcm9qZWN0XCIsIFwidGFnX2lkc1wiKSAvLyBcInRhZ3NcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpb25OYW1lRnJvbUNvbHVtbk5hbWUoZW50aXR5SWQ6IHN0cmluZywgY29sTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gX2lkcyAo67O17IiYKSDsspjrpqxcbiAgaWYgKGNvbE5hbWUuZW5kc1dpdGgoXCJfaWRzXCIpKSB7XG4gICAgY29uc3QgYmFzZU5hbWUgPSBjb2xOYW1lLnJlcGxhY2UoL19pZHMkLywgXCJcIik7XG4gICAgLy8g66i87KCAIGJhc2UgbmFtZeycvOuhnCDssL7quLBcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBiYXNlTmFtZSk7XG4gICAgICByZXR1cm4gcmVsUHJvcC5uYW1lO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gcGx1cmFsaXpl7ZW07IScIOywvuq4sFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGx1cmFsTmFtZSA9IGluZmxlY3Rpb24ucGx1cmFsaXplKGJhc2VOYW1lKTtcbiAgICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBwbHVyYWxOYW1lKTtcbiAgICAgICAgcmV0dXJuIHJlbFByb3AubmFtZTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gY29sTmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gX2lkICjri6jsiJgpIOyymOumrFxuICBpZiAoY29sTmFtZS5lbmRzV2l0aChcIl9pZFwiKSAmJiBjb2xOYW1lICE9PSBcImlkXCIpIHtcbiAgICBjb25zdCBiYXNlTmFtZSA9IGNvbE5hbWUucmVwbGFjZSgvX2lkJC8sIFwiXCIpO1xuICAgIC8vIOuovOyggCBiYXNlIG5hbWXsnLzroZwg7LC+6riwXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlbFByb3AgPSBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZCwgYmFzZU5hbWUpO1xuICAgICAgcmV0dXJuIHJlbFByb3AubmFtZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNpbmd1bGFyaXpl7ZW07IScIOywvuq4sFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc2luZ3VsYXJOYW1lID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZShiYXNlTmFtZSk7XG4gICAgICAgIGNvbnN0IHJlbFByb3AgPSBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZCwgc2luZ3VsYXJOYW1lKTtcbiAgICAgICAgcmV0dXJuIHJlbFByb3AubmFtZTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gY29sTmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbE5hbWU7XG59XG5cbi8qKlxuICog7IaM7IqkIOy9lOuTnOyXkOyEnCDqsJ3ssrQg7ISg7Ja47J2EIOy2lOy2nO2VqeuLiOuLpC5cbiAqIOykkeq0hO2YuCDsubTsmrTtjIUg67Cp7Iud7Jy866GcIOykkeyyqeuQnCDqsJ3ssrTrj4Qg7KCV7ZmV7Z6IIO2MjOyLse2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPYmplY3REZWNsYXJhdGlvbihzb3VyY2VDb2RlOiBzdHJpbmcsIHZhck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFwiZXhwb3J0IGNvbnN0IHZhck5hbWUgPSB7XCIg7Yyo7YS0IOywvuq4sFxuICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChgZXhwb3J0IGNvbnN0ICR7dmFyTmFtZX1cXFxccyo9XFxcXHMqXFxcXHtgKTtcbiAgY29uc3QgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMoc291cmNlQ29kZSk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8g7Iuc7J6RIOychOy5mFxuICBjb25zdCBzdGFydElkeCA9IG1hdGNoLmluZGV4O1xuICBjb25zdCBvcGVuQnJhY2VJZHggPSBzb3VyY2VDb2RlLmluZGV4T2YoXCJ7XCIsIHN0YXJ0SWR4KTtcblxuICAvLyDspJHqtITtmLgg7Lm07Jq07YyFXG4gIGxldCBicmFjZUNvdW50ID0gMDtcbiAgbGV0IGluU3RyaW5nID0gZmFsc2U7XG4gIGxldCBpblRlbXBsYXRlID0gZmFsc2U7XG4gIGxldCBzdHJpbmdDaGFyID0gXCJcIjtcbiAgbGV0IGVuZElkeCA9IG9wZW5CcmFjZUlkeDtcblxuICBmb3IgKGxldCBpID0gb3BlbkJyYWNlSWR4OyBpIDwgc291cmNlQ29kZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzb3VyY2VDb2RlW2ldO1xuICAgIGNvbnN0IHByZXZDaGFyID0gaSA+IDAgPyBzb3VyY2VDb2RlW2kgLSAxXSA6IFwiXCI7XG5cbiAgICAvLyDsnbTsiqTsvIDsnbTtlITrkJwg66y47J6Q64qUIOustOyLnFxuICAgIGlmIChwcmV2Q2hhciA9PT0gXCJcXFxcXCIgJiYgKGluU3RyaW5nIHx8IGluVGVtcGxhdGUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyDrrLjsnpDsl7Qg7Iuc7J6RL+yiheujjFxuICAgIGlmICgoY2hhciA9PT0gJ1wiJyB8fCBjaGFyID09PSBcIidcIikgJiYgIWluVGVtcGxhdGUpIHtcbiAgICAgIGlmICghaW5TdHJpbmcpIHtcbiAgICAgICAgaW5TdHJpbmcgPSB0cnVlO1xuICAgICAgICBzdHJpbmdDaGFyID0gY2hhcjtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gc3RyaW5nQ2hhcikge1xuICAgICAgICBpblN0cmluZyA9IGZhbHNlO1xuICAgICAgICBzdHJpbmdDaGFyID0gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIO2FnO2UjOumvyDrpqzthLDrn7Qg7Iuc7J6RL+yiheujjFxuICAgIGlmIChjaGFyID09PSBcImBcIiAmJiAhaW5TdHJpbmcpIHtcbiAgICAgIGluVGVtcGxhdGUgPSAhaW5UZW1wbGF0ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIOusuOyekOyXtC/thZztlIzrpr8g64K067aA64qUIOykkeq0hO2YuCDsubTsmrTtjIUg7JWIIO2VqFxuICAgIGlmIChpblN0cmluZyB8fCBpblRlbXBsYXRlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyDspJHqtITtmLgg7Lm07Jq07YyFXG4gICAgaWYgKGNoYXIgPT09IFwie1wiKSB7XG4gICAgICBicmFjZUNvdW50Kys7XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIn1cIikge1xuICAgICAgYnJhY2VDb3VudC0tO1xuICAgICAgaWYgKGJyYWNlQ291bnQgPT09IDApIHtcbiAgICAgICAgZW5kSWR4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8g7ISg7Ja466y4IOuBneq5jOyngCDssL7quLAgKH07KVxuICBsZXQgZmluYWxFbmRJZHggPSBlbmRJZHg7XG4gIGZvciAobGV0IGkgPSBlbmRJZHggKyAxOyBpIDwgc291cmNlQ29kZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzb3VyY2VDb2RlW2ldID09PSBcIjtcIikge1xuICAgICAgZmluYWxFbmRJZHggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNvdXJjZUNvZGUuc3Vic3RyaW5nKHN0YXJ0SWR4LCBmaW5hbEVuZElkeCArIDEpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFrQkEsU0FBZ0IsU0FBUyxVQUFrQixRQUF3QjtDQUNqRSxJQUFJLE9BQU8sU0FBUyxTQUFTLEdBQzNCLE9BQU87TUFDRixJQUFJLE9BQU8sU0FBUyxhQUFhLEdBQ3RDLE9BQU87TUFDRjtFQUNMLE1BQU0sV0FBVyxjQUFjLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxNQUNoRCxTQUFTLEdBQUcsV0FBVyxXQUFXLFNBQVMsS0FBSyxJQUFJLFFBQVEsTUFDL0Q7RUFDQSxJQUFJLFVBQVUsTUFDWixPQUFPLFNBQVM7RUFFbEIsT0FBTztDQUNUO0FBQ0Y7Ozs7O0FBTUEsU0FBZ0IsdUJBQXVCLFVBQWtCLFNBQWlDO0NBRXhGLE1BQU0sT0FEYSxjQUFjLElBQUksUUFDeEIsQ0FBQSxDQUFXLE1BQU0sTUFBTSxNQUFNLEVBQUUsU0FBUyxPQUFPO0NBQzVELElBQUksUUFBUSxXQUFXLElBQUksR0FDekIsT0FBTztFQUNMLElBQUksS0FBSztFQUNULGdCQUFnQjtFQUNoQixtQkFBbUIsY0FBYyxlQUFlLFFBQVE7RUFDeEQsT0FBTyxLQUFLLFFBQVEsS0FBSztDQUMzQjtNQUNLO0VBQ0wsTUFBTSxjQUFjLFdBQVcsU0FDN0IsR0FBRyxXQUFXLFdBQVcsUUFBUSxFQUFFLEdBQUcsV0FBVyxXQUFXLE9BQU8s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
|
|
143
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuXG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IGlzRW51bVByb3AsIGlzUmVsYXRpb25Qcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIFJlbGF0aW9uUHJvcCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuXG5pbnRlcmZhY2UgRW51bUNvbHVtbkluZm8ge1xuICBpZDogc3RyaW5nO1xuICB0YXJnZXRFbnRpdHlOYW1lczogRW50aXR5TmFtZXNSZWNvcmQ7XG4gIHRhcmdldEVudGl0eUlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW51beydmCDtkZzsi5zsmqkg652867Ko7J2EIOqwgOyguOyYteuLiOuLpC5cbiAqIE9yZGVyQnksIFNlYXJjaEZpZWxkIOuTsSDtirnsiJjtlZwg6rK97Jqw7JmAIOydvOuwmCBFbnVt7J2EIOq1rOu2hO2VmOyXrCDsspjrpqztlanri4jri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYWJlbChlbnRpdHlJZDogc3RyaW5nLCBlbnVtSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChlbnVtSWQuZW5kc1dpdGgoXCJPcmRlckJ5XCIpKSB7XG4gICAgcmV0dXJuIFwi7KCV66CsXCI7XG4gIH0gZWxzZSBpZiAoZW51bUlkLmVuZHNXaXRoKFwiU2VhcmNoRmllbGRcIikpIHtcbiAgICByZXR1cm4gXCLqsoDsg4lcIjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBlbnVtUHJvcCA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKS5wcm9wcy5maW5kKFxuICAgICAgKHByb3ApID0+IGAke2VudGl0eUlkfSR7aW5mbGVjdGlvbi5jYW1lbGl6ZShwcm9wLm5hbWUpfWAgPT09IGVudW1JZCxcbiAgICApO1xuICAgIGlmIChlbnVtUHJvcD8uZGVzYykge1xuICAgICAgcmV0dXJuIGVudW1Qcm9wLmRlc2M7XG4gICAgfVxuICAgIHJldHVybiBlbnVtSWQ7XG4gIH1cbn1cblxuLyoqXG4gKiDsu6zrn7wg7J2066aE7Jy866Gc67aA7YSwIEVudW0g7KCV67O066W8IOy2lOy2nO2VqeuLiOuLpC5cbiAqIEVudGl0eeydmCBwcm9wIOykkSBlbnVtIO2DgOyeheyduCDqsoPsnYQg7LC+7JWEIOq0gOugqCDsoJXrs7Trpbwg67CY7ZmY7ZWp64uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW51bUluZm9Gcm9tQ29sTmFtZShlbnRpdHlJZDogc3RyaW5nLCBjb2xOYW1lOiBzdHJpbmcpOiBFbnVtQ29sdW1uSW5mbyB7XG4gIGNvbnN0IGJhc2VFbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG4gIGNvbnN0IHByb3AgPSBiYXNlRW50aXR5LnByb3BzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gY29sTmFtZSk7XG4gIGlmIChwcm9wICYmIGlzRW51bVByb3AocHJvcCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHByb3AuaWQsXG4gICAgICB0YXJnZXRFbnRpdHlJZDogZW50aXR5SWQsXG4gICAgICB0YXJnZXRFbnRpdHlOYW1lczogRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCksXG4gICAgICB0aXRsZTogcHJvcC5kZXNjID8/IHByb3AuaWQsXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBpZENhbmRpZGF0ZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoXG4gICAgICBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpfV8ke2luZmxlY3Rpb24udW5kZXJzY29yZShjb2xOYW1lKX1gLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgICBjb25zdCB0YXJnZXRFbnRpdHlOYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogaWRDYW5kaWRhdGUsXG4gICAgICB0YXJnZXRFbnRpdHlJZDogZW50aXR5SWQsXG4gICAgICB0YXJnZXRFbnRpdHlOYW1lczogdGFyZ2V0RW50aXR5TmFtZXMsXG4gICAgICB0aXRsZTogaWRDYW5kaWRhdGUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIOy7rOufvCDsnbTrpoTsnLzroZzrtoDthLAgUmVsYXRpb24gcHJvcCDsoJXrs7Trpbwg6rCA7KC47Ji164uI64ukLlxuICog6rSA6rOE7ZiVIHByb3DsnbQg7JWE64uMIOqyveyasCDsl5Drn6zrpbwg67Cc7IOd7Iuc7YK164uI64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpb25Qcm9wRnJvbUNvbE5hbWUoZW50aXR5SWQ6IHN0cmluZywgY29sTmFtZTogc3RyaW5nKTogUmVsYXRpb25Qcm9wIHtcbiAgY29uc3QgYmFzZUVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgY29uc3QgcmVsUHJvcCA9IGJhc2VFbnRpdHkucHJvcHMuZmluZCgocHJvcCkgPT4gcHJvcC5uYW1lID09PSBjb2xOYW1lKTtcbiAgaWYgKGlzUmVsYXRpb25Qcm9wKHJlbFByb3ApKSB7XG4gICAgY29uc3QgcmVsRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQocmVsUHJvcC53aXRoKTtcbiAgICBpZiAocmVsRW50aXR5LnBhcmVudElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIk9ubHkgcGFyZW50IGVudGl0aWVzIGNhbiBiZSB1c2VkIGFzIHJlbGF0aW9uIHByb3BzXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVsUHJvcDtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYOywvuydhCDsiJgg7JeG64qUIFJlbGF0aW9uICR7Y29sTmFtZX1gKTtcbiAgfVxufVxuXG4vKipcbiAqIEZLIOy7rOufvOuqheyXkOyEnCDsi6TsoJwgcmVsYXRpb24g7J2066aE7J2EIOy2lOy2nO2VqeuLiOuLpC5cbiAqIEJlbG9uZ3NUb09uZS9PbmVUb09uZSByZWxhdGlvbuydgCBzdWJzZXTsl5DshJwgRksg7Lus65+866qFKHVzZXJfaWQp7Jy866GcIOyDneyEseuQmOuvgOuhnCDrs4DtmZjsnbQg7ZWE7JqU7ZWY6rOgLFxuICogTWFueVRvTWFueSByZWxhdGlvbuydgCBzdWJzZXTsl5DshJwgcmVsYXRpb27rqoUoZW1wbG95ZWUp7Jy866GcIOyDneyEseuQmOuvgOuhnCDrs4DtmZjsnbQg67aI7ZWE7JqU7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBnZXRSZWxhdGlvbk5hbWVGcm9tQ29sdW1uTmFtZShcIkVtcGxveWVlXCIsIFwidXNlcl9pZFwiKSAvLyBcInVzZXJcIlxuICogZ2V0UmVsYXRpb25OYW1lRnJvbUNvbHVtbk5hbWUoXCJQcm9qZWN0XCIsIFwidGFnX2lkc1wiKSAvLyBcInRhZ3NcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpb25OYW1lRnJvbUNvbHVtbk5hbWUoZW50aXR5SWQ6IHN0cmluZywgY29sTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gX2lkcyAo67O17IiYKSDsspjrpqxcbiAgaWYgKGNvbE5hbWUuZW5kc1dpdGgoXCJfaWRzXCIpKSB7XG4gICAgY29uc3QgYmFzZU5hbWUgPSBjb2xOYW1lLnJlcGxhY2UoL19pZHMkLywgXCJcIik7XG4gICAgLy8g66i87KCAIGJhc2UgbmFtZeycvOuhnCDssL7quLBcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBiYXNlTmFtZSk7XG4gICAgICByZXR1cm4gcmVsUHJvcC5uYW1lO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gcGx1cmFsaXpl7ZW07IScIOywvuq4sFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGx1cmFsTmFtZSA9IGluZmxlY3Rpb24ucGx1cmFsaXplKGJhc2VOYW1lKTtcbiAgICAgICAgY29uc3QgcmVsUHJvcCA9IGdldFJlbGF0aW9uUHJvcEZyb21Db2xOYW1lKGVudGl0eUlkLCBwbHVyYWxOYW1lKTtcbiAgICAgICAgcmV0dXJuIHJlbFByb3AubmFtZTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gY29sTmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gX2lkICjri6jsiJgpIOyymOumrFxuICBpZiAoY29sTmFtZS5lbmRzV2l0aChcIl9pZFwiKSAmJiBjb2xOYW1lICE9PSBcImlkXCIpIHtcbiAgICBjb25zdCBiYXNlTmFtZSA9IGNvbE5hbWUucmVwbGFjZSgvX2lkJC8sIFwiXCIpO1xuICAgIC8vIOuovOyggCBiYXNlIG5hbWXsnLzroZwg7LC+6riwXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlbFByb3AgPSBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZCwgYmFzZU5hbWUpO1xuICAgICAgcmV0dXJuIHJlbFByb3AubmFtZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHNpbmd1bGFyaXpl7ZW07IScIOywvuq4sFxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc2luZ3VsYXJOYW1lID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZShiYXNlTmFtZSk7XG4gICAgICAgIGNvbnN0IHJlbFByb3AgPSBnZXRSZWxhdGlvblByb3BGcm9tQ29sTmFtZShlbnRpdHlJZCwgc2luZ3VsYXJOYW1lKTtcbiAgICAgICAgcmV0dXJuIHJlbFByb3AubmFtZTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gY29sTmFtZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbE5hbWU7XG59XG5cbi8qKlxuICog7IaM7IqkIOy9lOuTnOyXkOyEnCDqsJ3ssrQg7ISg7Ja47J2EIOy2lOy2nO2VqeuLiOuLpC5cbiAqIOykkeq0hO2YuCDsubTsmrTtjIUg67Cp7Iud7Jy866GcIOykkeyyqeuQnCDqsJ3ssrTrj4Qg7KCV7ZmV7Z6IIO2MjOyLse2VqeuLiOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPYmplY3REZWNsYXJhdGlvbihzb3VyY2VDb2RlOiBzdHJpbmcsIHZhck5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFwiZXhwb3J0IGNvbnN0IHZhck5hbWUgPSB7XCIg7Yyo7YS0IOywvuq4sFxuICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChgZXhwb3J0IGNvbnN0ICR7dmFyTmFtZX1cXFxccyo9XFxcXHMqXFxcXHtgKTtcbiAgY29uc3QgbWF0Y2ggPSBwYXR0ZXJuLmV4ZWMoc291cmNlQ29kZSk7XG5cbiAgaWYgKCFtYXRjaCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgLy8g7Iuc7J6RIOychOy5mFxuICBjb25zdCBzdGFydElkeCA9IG1hdGNoLmluZGV4O1xuICBjb25zdCBvcGVuQnJhY2VJZHggPSBzb3VyY2VDb2RlLmluZGV4T2YoXCJ7XCIsIHN0YXJ0SWR4KTtcblxuICAvLyDspJHqtITtmLgg7Lm07Jq07YyFXG4gIGxldCBicmFjZUNvdW50ID0gMDtcbiAgbGV0IGluU3RyaW5nID0gZmFsc2U7XG4gIGxldCBpblRlbXBsYXRlID0gZmFsc2U7XG4gIGxldCBzdHJpbmdDaGFyID0gXCJcIjtcbiAgbGV0IGVuZElkeCA9IG9wZW5CcmFjZUlkeDtcblxuICBmb3IgKGxldCBpID0gb3BlbkJyYWNlSWR4OyBpIDwgc291cmNlQ29kZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNoYXIgPSBzb3VyY2VDb2RlW2ldO1xuICAgIGNvbnN0IHByZXZDaGFyID0gaSA+IDAgPyBzb3VyY2VDb2RlW2kgLSAxXSA6IFwiXCI7XG5cbiAgICAvLyDsnbTsiqTsvIDsnbTtlITrkJwg66y47J6Q64qUIOustOyLnFxuICAgIGlmIChwcmV2Q2hhciA9PT0gXCJcXFxcXCIgJiYgKGluU3RyaW5nIHx8IGluVGVtcGxhdGUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyDrrLjsnpDsl7Qg7Iuc7J6RL+yiheujjFxuICAgIGlmICgoY2hhciA9PT0gJ1wiJyB8fCBjaGFyID09PSBcIidcIikgJiYgIWluVGVtcGxhdGUpIHtcbiAgICAgIGlmICghaW5TdHJpbmcpIHtcbiAgICAgICAgaW5TdHJpbmcgPSB0cnVlO1xuICAgICAgICBzdHJpbmdDaGFyID0gY2hhcjtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gc3RyaW5nQ2hhcikge1xuICAgICAgICBpblN0cmluZyA9IGZhbHNlO1xuICAgICAgICBzdHJpbmdDaGFyID0gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIO2FnO2UjOumvyDrpqzthLDrn7Qg7Iuc7J6RL+yiheujjFxuICAgIGlmIChjaGFyID09PSBcImBcIiAmJiAhaW5TdHJpbmcpIHtcbiAgICAgIGluVGVtcGxhdGUgPSAhaW5UZW1wbGF0ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIOusuOyekOyXtC/thZztlIzrpr8g64K067aA64qUIOykkeq0hO2YuCDsubTsmrTtjIUg7JWIIO2VqFxuICAgIGlmIChpblN0cmluZyB8fCBpblRlbXBsYXRlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvLyDspJHqtITtmLgg7Lm07Jq07YyFXG4gICAgaWYgKGNoYXIgPT09IFwie1wiKSB7XG4gICAgICBicmFjZUNvdW50Kys7XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIn1cIikge1xuICAgICAgYnJhY2VDb3VudC0tO1xuICAgICAgaWYgKGJyYWNlQ291bnQgPT09IDApIHtcbiAgICAgICAgZW5kSWR4ID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8g7ISg7Ja466y4IOuBneq5jOyngCDssL7quLAgKH07KVxuICBsZXQgZmluYWxFbmRJZHggPSBlbmRJZHg7XG4gIGZvciAobGV0IGkgPSBlbmRJZHggKyAxOyBpIDwgc291cmNlQ29kZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzb3VyY2VDb2RlW2ldID09PSBcIjtcIikge1xuICAgICAgZmluYWxFbmRJZHggPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHNvdXJjZUNvZGUuc3Vic3RyaW5nKHN0YXJ0SWR4LCBmaW5hbEVuZElkeCArIDEpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFrQkEsU0FBZ0IsU0FBUyxVQUFrQixRQUF3QjtDQUNqRSxJQUFJLE9BQU8sU0FBUyxTQUFTLEdBQzNCLE9BQU87TUFDRixJQUFJLE9BQU8sU0FBUyxhQUFhLEdBQ3RDLE9BQU87TUFDRjtFQUNMLE1BQU0sV0FBVyxjQUFjLElBQUksUUFBUSxDQUFDLENBQUMsTUFBTSxNQUNoRCxTQUFTLEdBQUcsV0FBVyxXQUFXLFNBQVMsS0FBSyxJQUFJLFFBQVEsTUFDL0Q7RUFDQSxJQUFJLFVBQVUsTUFDWixPQUFPLFNBQVM7RUFFbEIsT0FBTztDQUNUO0FBQ0Y7Ozs7O0FBTUEsU0FBZ0IsdUJBQXVCLFVBQWtCLFNBQWlDO0NBRXhGLE1BQU0sT0FEYSxjQUFjLElBQUksUUFDeEIsQ0FBQSxDQUFXLE1BQU0sTUFBTSxNQUFNLEVBQUUsU0FBUyxPQUFPO0NBQzVELElBQUksUUFBUSxXQUFXLElBQUksR0FDekIsT0FBTztFQUNMLElBQUksS0FBSztFQUNULGdCQUFnQjtFQUNoQixtQkFBbUIsY0FBYyxlQUFlLFFBQVE7RUFDeEQsT0FBTyxLQUFLLFFBQVEsS0FBSztDQUMzQjtNQUNLO0VBQ0wsTUFBTSxjQUFjLFdBQVcsU0FDN0IsR0FBRyxXQUFXLFdBQVcsUUFBUSxFQUFFLEdBQUcsV0FBVyxXQUFXLE9BQU8s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
|
|
@@ -2,7 +2,7 @@ import { Sonamu } from "../../api/sonamu.js";
|
|
|
2
2
|
import { EntityManager, init_entity_manager } from "../../entity/entity-manager.js";
|
|
3
3
|
import { init_api } from "../../api/index.js";
|
|
4
4
|
import { Template, init_template } from "../template.js";
|
|
5
|
-
|
|
5
|
+
// src/template/implementations/entity.template.ts
|
|
6
6
|
init_api();
|
|
7
7
|
init_entity_manager();
|
|
8
8
|
init_template();
|
|
@@ -67,7 +67,6 @@ var Template__entity = class extends Template {
|
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
|
-
//#endregion
|
|
71
70
|
export { Template__entity };
|
|
72
71
|
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnRlbXBsYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZW50aXR5LnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZW50aXR5IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImVudGl0eVwiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgobmFtZXM6IEVudGl0eU5hbWVzUmVjb3JkLCBwYXJlbnROYW1lcz86IEVudGl0eU5hbWVzUmVjb3JkKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYCR7KHBhcmVudE5hbWVzID8/IG5hbWVzKS5mc30vJHtuYW1lcy5mc30uZW50aXR5Lmpzb25gLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIob3B0aW9uczogVGVtcGxhdGVPcHRpb25zW1wiZW50aXR5XCJdKSB7XG4gICAgY29uc3QgeyBlbnRpdHlJZCwgdGl0bGUsIHBhcmVudElkLCB0YWJsZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgY29uc3QgcGFyZW50ID0gKCgpID0+IHtcbiAgICAgIGlmIChwYXJlbnRJZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWVzOiBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKHBhcmVudElkKSxcbiAgICAgICAgICBlbnRpdHk6IEVudGl0eU1hbmFnZXIuZ2V0KHBhcmVudElkKSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzLCBwYXJlbnQ/Lm5hbWVzID8/IG5hbWVzKSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgaWQ6IGVudGl0eUlkLFxuICAgICAgICB0aXRsZTogdGl0bGUgPz8gZW50aXR5SWQsXG4gICAgICAgIHBhcmVudElkLFxuICAgICAgICB0YWJsZTogdGFibGUgPz8gbmFtZXMuZnNQbHVyYWwucmVwbGFjZSgvLS9nLCBcIl9cIiksXG4gICAgICAgIHByb3BzOiBvcHRpb25zLnByb3BzPy5sZW5ndGhcbiAgICAgICAgICA/IG9wdGlvbnMucHJvcHNcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiLCBkZXNjOiBcIklEXCIgfSxcbiAgICAgICAgICAgICAgLi4uKHBhcmVudFxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJyZWxhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHBhcmVudC5uYW1lcy5jYW1lbCxcbiAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvblR5cGU6IFwiQmVsb25nc1RvT25lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgb25VcGRhdGU6IFwiQ0FTQ0FERVwiLFxuICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlOiBcIkNBU0NBREVcIixcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBwYXJlbnQuZW50aXR5LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJkYXRlXCIsXG4gICAgICAgICAgICAgICAgZGVzYzogXCLrk7HroZ3snbzsi5xcIixcbiAgICAgICAgICAgICAgICBkYkRlZmF1bHQ6IFwiQ1VSUkVOVF9USU1FU1RBTVBcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIGluZGV4ZXM6IFsuLi4ob3B0aW9ucy5pbmRleGVzID8/IFtdKV0sXG4gICAgICAgIHN1YnNldHM6XG4gICAgICAgICAgb3B0aW9ucy5zdWJzZXRzID8/XG4gICAgICAgICAgKHBhcmVudElkXG4gICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBBOiBbXCJpZFwiLCBcImNyZWF0ZWRfYXRcIl0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICBlbnVtczpcbiAgICAgICAgICBvcHRpb25zLmVudW1zID8/XG4gICAgICAgICAgKHBhcmVudElkXG4gICAgICAgICAgICA/
|
|
72
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnRlbXBsYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZW50aXR5LnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZW50aXR5IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImVudGl0eVwiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgobmFtZXM6IEVudGl0eU5hbWVzUmVjb3JkLCBwYXJlbnROYW1lcz86IEVudGl0eU5hbWVzUmVjb3JkKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvYXBwbGljYXRpb25gLFxuICAgICAgcGF0aDogYCR7KHBhcmVudE5hbWVzID8/IG5hbWVzKS5mc30vJHtuYW1lcy5mc30uZW50aXR5Lmpzb25gLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIob3B0aW9uczogVGVtcGxhdGVPcHRpb25zW1wiZW50aXR5XCJdKSB7XG4gICAgY29uc3QgeyBlbnRpdHlJZCwgdGl0bGUsIHBhcmVudElkLCB0YWJsZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgY29uc3QgcGFyZW50ID0gKCgpID0+IHtcbiAgICAgIGlmIChwYXJlbnRJZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWVzOiBFbnRpdHlNYW5hZ2VyLmdldE5hbWVzRnJvbUlkKHBhcmVudElkKSxcbiAgICAgICAgICBlbnRpdHk6IEVudGl0eU1hbmFnZXIuZ2V0KHBhcmVudElkKSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzLCBwYXJlbnQ/Lm5hbWVzID8/IG5hbWVzKSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgaWQ6IGVudGl0eUlkLFxuICAgICAgICB0aXRsZTogdGl0bGUgPz8gZW50aXR5SWQsXG4gICAgICAgIHBhcmVudElkLFxuICAgICAgICB0YWJsZTogdGFibGUgPz8gbmFtZXMuZnNQbHVyYWwucmVwbGFjZSgvLS9nLCBcIl9cIiksXG4gICAgICAgIHByb3BzOiBvcHRpb25zLnByb3BzPy5sZW5ndGhcbiAgICAgICAgICA/IG9wdGlvbnMucHJvcHNcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiLCBkZXNjOiBcIklEXCIgfSxcbiAgICAgICAgICAgICAgLi4uKHBhcmVudFxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJyZWxhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHBhcmVudC5uYW1lcy5jYW1lbCxcbiAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvblR5cGU6IFwiQmVsb25nc1RvT25lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aDogcGFyZW50SWQsXG4gICAgICAgICAgICAgICAgICAgICAgb25VcGRhdGU6IFwiQ0FTQ0FERVwiLFxuICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlOiBcIkNBU0NBREVcIixcbiAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBwYXJlbnQuZW50aXR5LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJjcmVhdGVkX2F0XCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJkYXRlXCIsXG4gICAgICAgICAgICAgICAgZGVzYzogXCLrk7HroZ3snbzsi5xcIixcbiAgICAgICAgICAgICAgICBkYkRlZmF1bHQ6IFwiQ1VSUkVOVF9USU1FU1RBTVBcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIGluZGV4ZXM6IFsuLi4ob3B0aW9ucy5pbmRleGVzID8/IFtdKV0sXG4gICAgICAgIHN1YnNldHM6XG4gICAgICAgICAgb3B0aW9ucy5zdWJzZXRzID8/XG4gICAgICAgICAgKHBhcmVudElkXG4gICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBBOiBbXCJpZFwiLCBcImNyZWF0ZWRfYXRcIl0sXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICBlbnVtczpcbiAgICAgICAgICBvcHRpb25zLmVudW1zID8/XG4gICAgICAgICAgKHBhcmVudElkXG4gICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBbYCR7bmFtZXMuY2FwaXRhbH1PcmRlckJ5YF06IHtcbiAgICAgICAgICAgICAgICAgIFwiaWQtZGVzY1wiOiBcIklE7LWc7Iug7IicXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbYCR7bmFtZXMuY2FwaXRhbH1TZWFyY2hGaWVsZGBdOiB7IGlkOiBcIklEXCIgfSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9KS50cmltKCksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQWtDLFNBQUE7QUFDeUIsb0JBQUE7QUFHckIsY0FBQTtBQUV0QyxJQUFhLG1CQUFiLGNBQXNDLFNBQVM7Q0FDN0MsY0FBYztFQUNaLE1BQU0sUUFBUTtDQUNoQjtDQUVBLGlCQUFpQixPQUEwQixhQUFpQztFQUMxRSxNQUFNLEVBQUUsUUFBUSxPQUFPLE9BQU87RUFFOUIsT0FBTztHQUNMLFFBQVEsR0FBRyxJQUFJO0dBQ2YsTUFBTSxJQUFJLGVBQWUsTUFBQSxDQUFPLEdBQUcsR0FBRyxNQUFNLEdBQUc7RUFDakQ7Q0FDRjtDQUVBLE9BQU8sU0FBb0M7RUFDekMsTUFBTSxFQUFFLFVBQVUsT0FBTyxVQUFVLFVBQVU7RUFDN0MsTUFBTSxRQUFRLGNBQWMsZUFBZSxRQUFRO0VBRW5ELE1BQU0sZ0JBQWdCO0dBQ3BCLElBQUksVUFDRixPQUFPO0lBQ0wsT0FBTyxjQUFjLGVBQWUsUUFBUTtJQUM1QyxRQUFRLGNBQWMsSUFBSSxRQUFRO0dBQ3BDO1FBRUEsT0FBTztFQUVYLEVBQUEsQ0FBRztFQUVILE9BQU87R0FDTCxHQUFHLEtBQUssaUJBQWlCLE9BQU8sUUFBUSxTQUFTLEtBQUs7R0FDdEQsTUFBTSxLQUFLLFVBQVU7SUFDbkIsSUFBSTtJQUNKLE9BQU8sU0FBUztJQUNoQjtJQUNBLE9BQU8sU0FBUyxNQUFNLFNBQVMsUUFBUSxNQUFNLEdBQUc7SUFDaEQsT0FBTyxRQUFRLE9BQU8sU0FDbEIsUUFBUSxRQUNSO0tBQ0U7TUFBRSxNQUFNO01BQU0sTUFBTTtNQUFXLE1BQU07S0FBSztLQUMxQyxHQUFJLFNBQ0EsQ0FDRTtNQUNFLE1BQU07TUFDTixNQUFNLE9BQU8sTUFBTTtNQUNuQixjQUFjO01BQ2QsTUFBTTtNQUNOLFVBQVU7TUFDVixVQUFVO01BQ1YsTUFBTSxPQUFPLE9BQU87S0FDdEIsQ0FDRixJQUNBLENBQUM7S0FDTDtNQUNFLE1BQU07TUFDTixNQUFNO01BQ04sTUFBTTtNQUNOLFdBQVc7S0FDYjtJQUNGO0lBQ0osU0FBUyxDQUFDLEdBQUksUUFBUSxXQUFXLENBQUMsQ0FBRTtJQUNwQyxTQUNFLFFBQVEsWUFDUCxXQUNHLENBQUMsSUFDRCxFQUNFLEdBQUcsQ0FBQyxNQUFNLFlBQVksRUFDeEI7SUFDTixPQUNFLFFBQVEsVUFDUCxXQUNHLENBQUMsSUFDRDtNQUNHLEdBQUcsTUFBTSxRQUFRLFdBQVcsRUFDM0IsV0FBVyxRQUNiO01BQ0MsR0FBRyxNQUFNLFFBQVEsZUFBZSxFQUFFLElBQUksS0FBSztJQUM5QztHQUNSLENBQUMsQ0FBQyxDQUFDLEtBQUs7R0FDUixZQUFZLENBQUM7RUFDZjtDQUNGO0FBQ0YifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Template, init_template } from "../template.js";
|
|
2
|
-
|
|
2
|
+
// src/template/implementations/entry-server.template.ts
|
|
3
3
|
init_template();
|
|
4
4
|
var Template__entry_server = class extends Template {
|
|
5
5
|
constructor() {
|
|
@@ -82,7 +82,6 @@ export async function render(url: string, preloadedData: PreloadedData[] = []) {
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
};
|
|
85
|
-
//#endregion
|
|
86
85
|
export { Template__entry_server };
|
|
87
86
|
|
|
88
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50cnktc2VydmVyLnRlbXBsYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZW50cnktc2VydmVyLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX2VudHJ5X3NlcnZlciBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJlbnRyeV9zZXJ2ZXJcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IFwid2ViL3NyY1wiLFxuICAgICAgcGF0aDogYGVudHJ5LXNlcnZlci5nZW5lcmF0ZWQudHN4YCxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKHt9OiBUZW1wbGF0ZU9wdGlvbnNbXCJlbnRyeV9zZXJ2ZXJcIl0pIHtcbiAgICBjb25zdCBib2R5ID0gYFxuaW1wb3J0IHsgUXVlcnlDbGllbnQsIGRlaHlkcmF0ZSB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBjcmVhdGVNZW1vcnlIaXN0b3J5LCBjcmVhdGVSb3V0ZXIsIFJvdXRlclByb3ZpZGVyIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXJvdXRlcic7XG5pbXBvcnQgeyByZW5kZXJUb1N0cmluZyB9IGZyb20gJ3JlYWN0LWRvbS9zZXJ2ZXInO1xuaW1wb3J0IHsgcm91dGVUcmVlIH0gZnJvbSAnLi9yb3V0ZVRyZWUuZ2VuJztcbmltcG9ydCB7IFN1c3BlbnNlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIFByZWxvYWRlZERhdGEgPSB7XG4gIHF1ZXJ5S2V5OiBhbnlbXTtcbiAgZGF0YTogYW55O1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbmRlcih1cmw6IHN0cmluZywgcHJlbG9hZGVkRGF0YTogUHJlbG9hZGVkRGF0YVtdID0gW10pIHtcbiAgLy8gUXVlcnlDbGllbnQg7IOd7ISxXG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gbmV3IFF1ZXJ5Q2xpZW50KHtcbiAgICBkZWZhdWx0T3B0aW9uczoge1xuICAgICAgcXVlcmllczoge1xuICAgICAgICBzdGFsZVRpbWU6IDUwMDAsXG4gICAgICAgIHJldHJ5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gUHJlbG9hZGVkIOuNsOydtO2EsOulvCBxdWVyeUNsaWVudOyXkCDsp4HsoJEg7KO87J6FXG4gIGZvciAoY29uc3QgeyBxdWVyeUtleSwgZGF0YSB9IG9mIHByZWxvYWRlZERhdGEpIHtcbiAgICBxdWVyeUNsaWVudC5zZXRRdWVyeURhdGEocXVlcnlLZXksIGRhdGEpO1xuICB9XG5cbiAgLy8gRGVoeWRyYXRlXG4gIGNvbnN0IGRlaHlkcmF0ZWRTdGF0ZSA9IGRlaHlkcmF0ZShxdWVyeUNsaWVudCk7XG5cbiAgLy8gU1NS7JqpIOuplOuqqOumrCDtnojsiqTthqDrpqwg7IOd7ISxXG4gIGNvbnN0IG1lbW9yeUhpc3RvcnkgPSBjcmVhdGVNZW1vcnlIaXN0b3J5KHtcbiAgICBpbml0aWFsRW50cmllczogW3VybF0sXG4gIH0pO1xuXG4gIC8vIFJvdXRlciDsg53shLEgKFNTUiDrqqjrk5wpXG4gIGNvbnN0IHJvdXRlciA9IGNyZWF0ZVJvdXRlcih7XG4gICAgcm91dGVUcmVlLFxuICAgIGNvbnRleHQ6IHsgcXVlcnlDbGllbnQgfSxcbiAgICBoaXN0b3J5OiBtZW1vcnlIaXN0b3J5LFxuICAgIGRlZmF1bHRQcmVsb2FkOiAnaW50ZW50JyxcbiAgfSk7XG5cbiAgLy8g65287Jqw7YSwIOy0iOq4sO2ZlDogU1NS7JeQ7IScIOuwmOuTnOyLnCBhd2FpdCByb3V0ZXIubG9hZCgpIO2YuOy2nCDtlYTsmpRcbiAgYXdhaXQgcm91dGVyLmxvYWQoKTtcblxuICAvLyBSb3V0ZXJQcm92aWRlcuunjCDroIzrjZTrp4EgKFN1c3BlbnNl66GcIOuemO2VkSAtIGh5ZHJhdGlvbiBtaXNtYXRjaCDrsKnsp4ApXG4gIGNvbnN0IGFwcEh0bWwgPSByZW5kZXJUb1N0cmluZyg8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PjxSb3V0ZXJQcm92aWRlciByb3V0ZXI9e3JvdXRlcn0gLz48L1N1c3BlbnNlPik7XG5cbiAgcmV0dXJuIHtcbiAgICBodG1sOiBhcHBIdG1sLFxuICAgIGRlaHlkcmF0ZWRTdGF0ZSxcbiAgfTtcbn1cbiAgICBgLnRyaW0oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHksXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcIi8qKlwiLCBcIiAqIEBnZW5lcmF0ZWRcIiwgXCIgKiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIiwgXCIgKi9cIiwgXCJcIl0sXG4gICAgfTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUNzQyxjQUFBO0FBRXRDLElBQWEseUJBQWIsY0FBNEMsU0FBUztDQUNuRCxjQUFjO0VBQ1osTUFBTSxjQUFjO0NBQ3RCO0NBRUEsbUJBQW1CO0VBQ2pCLE9BQU87R0FDTCxRQUFRO0dBQ1IsTUFBTTtFQUNSO0NBQ0Y7Q0FFQSxPQUFPLElBQXFDO0VBQzFDLE1BQU0sT0FBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQXVEWCxLQUFLO0VBRVAsT0FBTztHQUNMLEdBQUcsS0FBSyxpQkFBaUI7R0FDekI7R0FDQSxZQUFZLENBQUM7R0FDYixlQUFlO0lBQUM7SUFBTztJQUFpQjtJQUFtQjtJQUFPO0dBQUU7RUFDdEU7Q0FDRjtBQUNGIn0=
|
|
@@ -8,7 +8,7 @@ import { Template, init_template } from "../template.js";
|
|
|
8
8
|
import { BUILT_IN_TYPES, init_zod_converter, propNodeToZodTypeDef, zodTypeToZodCode } from "../zod-converter.js";
|
|
9
9
|
import { unique } from "radashi";
|
|
10
10
|
import assert from "assert";
|
|
11
|
-
|
|
11
|
+
// src/template/implementations/generated.template.ts
|
|
12
12
|
init_api();
|
|
13
13
|
init_entity_manager();
|
|
14
14
|
init_naite();
|
|
@@ -241,7 +241,6 @@ z.object({
|
|
|
241
241
|
};
|
|
242
242
|
}
|
|
243
243
|
};
|
|
244
|
-
//#endregion
|
|
245
244
|
export { Template__generated };
|
|
246
245
|
|
|
247
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLnRlbXBsYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGlzVmlydHVhbENvZGVQcm9wLCBpc1ZpcnR1YWxRdWVyeVByb3AgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5SW5kZXgsIHR5cGUgRW50aXR5UHJvcE5vZGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IG5vbk51bGxhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgQlVJTFRfSU5fVFlQRVMsIHByb3BOb2RlVG9ab2RUeXBlRGVmLCB6b2RUeXBlVG9ab2RDb2RlIH0gZnJvbSBcIi4uL3pvZC1jb252ZXJ0ZXJcIjtcblxuZXhwb3J0IHR5cGUgU291cmNlQ29kZSA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgbGluZXM6IHN0cmluZ1tdO1xuICBpbXBvcnRLZXlzOiBzdHJpbmdbXTtcbn07XG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX2dlbmVyYXRlZCBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJnZW5lcmF0ZWRcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgc29uYW11LmdlbmVyYXRlZC50c2AsXG4gICAgfTtcbiAgfVxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgZW50aXR5SWRzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcbiAgICBjb25zdCBlbnRpdGllcyA9IGVudGl0eUlkcy5tYXAoKGlkKSA9PiBFbnRpdHlNYW5hZ2VyLmdldChpZCkpO1xuXG4gICAgLy8g7KCE7LK0IFNvdXJjZUNvZGUg7IOd7ISxXG4gICAgY29uc3Qgc291cmNlQ29kZXMgPSBlbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+IHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHRoaXMuZ2V0RW51bXNTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0QmFzZVNjaGVtYVNvdXJjZUNvZGUoZW50aXR5KSxcbiAgICAgICAgdGhpcy5nZXRCYXNlTGlzdFBhcmFtc1NvdXJjZUNvZGUoZW50aXR5KSxcbiAgICAgICAgdGhpcy5nZXRTdWJzZXRTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICBdLmZpbHRlcihub25OdWxsYWJsZSk7XG4gICAgfSk7XG4gICAgTmFpdGUudChcIlRlbXBsYXRlX19nZW5lcmF0ZWQ6c291cmNlQ29kZXNcIiwgc291cmNlQ29kZXMpO1xuXG4gICAgLy8gU29ydFxuICAgIGNvbnN0IExBQkVMX0tFWV9PUkRFUiA9IFtcIkVudW1zXCIsIFwiQmFzZVNjaGVtYVwiLCBcIkJhc2VMaXN0UGFyYW1zXCIsIFwiU3Vic2V0c1wiLCBcIlN1YnNldFF1ZXJpZXNcIl07XG4gICAgc291cmNlQ29kZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgW2FLZXldID0gYS5sYWJlbC5zcGxpdChcIjpcIik7XG4gICAgICBjb25zdCBbYktleV0gPSBiLmxhYmVsLnNwbGl0KFwiOlwiKTtcbiAgICAgIGNvbnN0IGFJbmRleCA9IExBQkVMX0tFWV9PUkRFUi5pbmRleE9mKGFLZXkpO1xuICAgICAgY29uc3QgYkluZGV4ID0gTEFCRUxfS0VZX09SREVSLmluZGV4T2YoYktleSk7XG4gICAgICBpZiAoYUluZGV4ID4gYkluZGV4KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIGlmIChhSW5kZXggPCBiSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzb3VyY2VDb2RlID0gc291cmNlQ29kZXMucmVkdWNlKFxuICAgICAgKHJlc3VsdCwgdHMpID0+IHtcbiAgICAgICAgaWYgKHRzID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmVzOiBbLi4ucmVzdWx0LmxpbmVzLCBgLy8gJHt0cy5sYWJlbH1gLCAuLi50cy5saW5lcywgXCJcIl0sXG4gICAgICAgICAgaW1wb3J0S2V5czogdW5pcXVlKFsuLi5yZXN1bHQuaW1wb3J0S2V5cywgLi4udHMuaW1wb3J0S2V5c10udG9Tb3J0ZWQoKSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgLyogU0FGRVRZOiByZWR1Y2Ug64iE7IKw6riw64qUIGxhYmVs7J2EIOygnOyZuO2VnCBTb3VyY2VDb2Rl7J2YIOuRkCDrsLDsl7TroZwg7LSI6riw7ZmU65Cc64ukLiAqLyB7XG4gICAgICAgIGxpbmVzOiBbXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9IGFzIE9taXQ8U291cmNlQ29kZSwgXCJsYWJlbFwiPixcbiAgICApO1xuXG4gICAgLy8gLnR5cGVzLnRz7J2YIO2DgOyeheydhCDssLjsobDtlZjripQg6rK97JqwIOyInO2ZmOywuOyhsCjsg4HtmLjssLjsobAp6rCAIOuwnOyDne2VmOuvgOuhnCDtg4DsnoXsnYQg6rCA7KC47JmAIOyduOudvOyduCDsspjrpqxcbiAgICBjb25zdCBhbGxUeXBlS2V5cyA9IGVudGl0aWVzLmZsYXRNYXAoKGVudGl0eSkgPT4gT2JqZWN0LmtleXMoZW50aXR5LnR5cGVzKSk7XG4gICAgY29uc3QgY2RJbXBvcnRLZXlzID0gc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcigoaW1wb3J0S2V5KSA9PlxuICAgICAgYWxsVHlwZUtleXMuaW5jbHVkZXMoaW1wb3J0S2V5KSxcbiAgICApO1xuICAgIGlmIChjZEltcG9ydEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY3VzdG9tU2NhbGFyTGluZXMgPSBjZEltcG9ydEtleXMuZmxhdE1hcCgoaW1wb3J0S2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IGVudGl0aWVzLmZpbmQoKGNhbmRpZGF0ZUVudGl0eSkgPT4gY2FuZGlkYXRlRW50aXR5LnR5cGVzW2ltcG9ydEtleV0pO1xuICAgICAgICBpZiAoIWVudGl0eSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWm9kVHlwZSBub3QgZm91bmQgJHtpbXBvcnRLZXl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgem9kVHlwZSA9IGVudGl0eS50eXBlc1tpbXBvcnRLZXldO1xuICAgICAgICBhc3NlcnQoem9kVHlwZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgLy8gQ3VzdG9tU2NhbGFyOiAke2ltcG9ydEtleX1gLFxuICAgICAgICAgIGBjb25zdCAke2ltcG9ydEtleX0gPSAke3pvZFR5cGVUb1pvZENvZGUoem9kVHlwZSwgc291cmNlQ29kZS5pbXBvcnRLZXlzKX07YCxcbiAgICAgICAgICBgdHlwZSAke2ltcG9ydEtleX0gPSB6LmluZmVyPHR5cGVvZiAke2ltcG9ydEtleX0+YCxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gICAgICBzb3VyY2VDb2RlLmxpbmVzID0gWy4uLmN1c3RvbVNjYWxhckxpbmVzLCAuLi5zb3VyY2VDb2RlLmxpbmVzXTtcbiAgICAgIHNvdXJjZUNvZGUuaW1wb3J0S2V5cyA9IHVuaXF1ZShcbiAgICAgICAgc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcigoaW1wb3J0S2V5KSA9PiAhY2RJbXBvcnRLZXlzLmluY2x1ZGVzKGltcG9ydEtleSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gc291cmNlQ29kZS5saW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOmJvZHlcIiwgYm9keSk7XG5cbiAgICAvLyBpbXBvcnRcbiAgICAvLyBzb3VyY2VDb2RlLmltcG9ydEtleXPsl5Ag64K07J6lIO2DgOyeheydmCDsiqTtgqTrp4jqsIAg7J6I7Jy866m0IHNvbmFtdSBpbXBvcnTsl5Ag7LaU6rCAXG4gICAgY29uc3QgYnVpbHRJblNjaGVtYU5hbWVzID0gT2JqZWN0LnZhbHVlcyhCVUlMVF9JTl9UWVBFUykubWFwKFxuICAgICAgKGluZm8pID0+XG4gICAgICAgIC8qIFNBRkVUWTogQlVJTFRfSU5fVFlQRVPsnZgg66qo65OgIO2VreuqqeydgCDsg53shLEg7L2U65Oc7JeQIOyTuCBzY2hlbWFOYW1l7J2EIOqwgOynhOuLpC4gKi8gaW5mby5zY2hlbWFOYW1lIGFzIHN0cmluZyxcbiAgICApO1xuICAgIGNvbnN0IGJ1aWx0SW5TY2hlbWFzID0gc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcigoa2V5KSA9PiBidWlsdEluU2NoZW1hTmFtZXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgY29uc3Qgc29uYW11SW1wb3J0cyA9IFtcbiAgICAgIFwiekFycmF5YWJsZVwiLFxuICAgICAgXCJTUUxEYXRlVGltZVN0cmluZ1wiLFxuICAgICAgXCJTdWJzZXRRdWVyeVwiLFxuICAgICAgXCJTb25hbXVRdWVyeU1vZGVcIixcbiAgICAgIFwiQXBwbHlTb25hbXVGaWx0ZXJcIixcbiAgICAgIC4uLmJ1aWx0SW5TY2hlbWFzLFxuICAgIF0uZmlsdGVyKChtb2QpID0+IGJvZHkuaW5jbHVkZXMobW9kKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5LFxuICAgICAgaW1wb3J0S2V5czogc291cmNlQ29kZS5pbXBvcnRLZXlzLFxuICAgICAgY3VzdG9tSGVhZGVyczogW1xuICAgICAgICBcIi8qKlwiLFxuICAgICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgICAgXCIgKiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIixcbiAgICAgICAgXCIgKi9cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIvKiBveGxpbnQtZGlzYWJsZSAqL1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBgaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7YCxcbiAgICAgICAgYGltcG9ydCB7ICR7c29uYW11SW1wb3J0cy5qb2luKFwiLFwiKX0gfSBmcm9tIFwic29uYW11XCI7YCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEVudW1zU291cmNlQ29kZShlbnRpdHk6IEVudGl0eSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZW50aXR5LmVudW1MYWJlbHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYEVudW1zOiAke2VudGl0eS5pZH1gLFxuICAgICAgbGluZXM6IE9iamVjdC5lbnRyaWVzKGVudGl0eS5lbnVtTGFiZWxzKVxuICAgICAgICAuZmlsdGVyKChbLCBlbnVtTGFiZWxdKSA9PiBPYmplY3Qua2V5cyhlbnVtTGFiZWwpLmxlbmd0aCA+IDApXG4gICAgICAgIC5mbGF0TWFwKChbZW51bUlkLCBlbnVtTGFiZWxdKSA9PiBbXG4gICAgICAgICAgYGV4cG9ydCBjb25zdCAke2VudW1JZH0gPSB6LmVudW0oWyR7T2JqZWN0LmtleXMoZW51bUxhYmVsKS5tYXAoXG4gICAgICAgICAgICAoZWwpID0+IGBcIiR7ZWx9XCJgLFxuICAgICAgICAgICl9XSkuZGVzY3JpYmUoXCIke2VudW1JZH1cIik7YCxcbiAgICAgICAgICBgZXhwb3J0IHR5cGUgJHtlbnVtSWR9ID0gei5pbmZlcjx0eXBlb2YgJHtlbnVtSWR9PjtgLFxuICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnVtSWR9TGFiZWwgPSAke0pTT04uc3RyaW5naWZ5KGVudW1MYWJlbCl9O2AsXG4gICAgICAgIF0pLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIGdldEJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5LCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdKTogU291cmNlQ29kZSB7XG4gICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9QmFzZVNjaGVtYWA7XG4gICAgY29uc3QgcHJvcE5vZGU6IEVudGl0eVByb3BOb2RlID0ge1xuICAgICAgbm9kZVR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBjaGlsZHJlbjogZW50aXR5LnByb3BzLm1hcCgocHJvcCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGVUeXBlOiBcInBsYWluXCIsXG4gICAgICAgICAgcHJvcCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICBjb25zdCBzY2hlbWFCb2R5ID0gKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHByb3BOb2RlVG9ab2RUeXBlRGVmKHByb3BOb2RlLCBpbXBvcnRLZXlzKTtcbiAgICAgIGlmIChyZXN1bHQuZW5kc1dpdGgoXCIsXCIpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pKCk7XG5cbiAgICAvLyBmdWxsdGV4dCBpbmRleOyXkCDtj6ztlajrkJwg7Lus65+865OkIOy2lOy2nFxuICAgIC8vIFRPRE86IEdJTi9HaVNUIOyduOuNseyKpCDsg53shLHrkJwg7Lus65+8IOy2lOy2nFxuICAgIGNvbnN0IGZ1bGx0ZXh0Q29sdW1uczogRW50aXR5SW5kZXhbXCJjb2x1bW5zXCJdW10gPSBbXTtcblxuICAgIC8vIHZpcnR1YWwgcHJvcHMgKHZpcnR1YWxUeXBlOiBcImNvZGVcIiDrmJDripQgdW5kZWZpbmVk7J24IOqyg+unjCDtj6ztlagpXG4gICAgY29uc3QgdmlydHVhbFByb3BzID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiBpc1ZpcnR1YWxDb2RlUHJvcChwcm9wKSlcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICAvLyBxdWVyeSB2aXJ0dWFsIHByb3BzICh2aXJ0dWFsVHlwZTogXCJxdWVyeVwi7J24IOqyg+unjCDtj6ztlagpXG4gICAgY29uc3QgdmlydHVhbFF1ZXJ5UHJvcHMgPSBlbnRpdHkucHJvcHNcbiAgICAgIC5maWx0ZXIoKHByb3ApID0+IGlzVmlydHVhbFF1ZXJ5UHJvcChwcm9wKSlcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICAvKipcbiAgICAgKiBoYXNEZWZhdWx0IHByb3BzXG4gICAgICogLSBudWxsYWJsZSDrmJDripQgZGJEZWZhdWx06rCAIOyeiOuKlCDsu6zrn7wgKGlkIO2PrO2VqClcbiAgICAgKiAtIHJlbGF0aW9u7J20IOyVhOuLiOqxsOuCmCwgcmVsYXRpb27snbTslrTrj4QgbnVsbGFibGXsnbTrqbQg7Y+s7ZWoXG4gICAgICovXG4gICAgY29uc3QgaGFzRGVmYXVsdENvbHVtbnMgPSBlbnRpdHkucHJvcHNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgIChwcm9wLnR5cGUgIT09IFwicmVsYXRpb25cIiB8fCBwcm9wLm51bGxhYmxlID09PSB0cnVlKSAmJlxuICAgICAgICAgIChwcm9wLm51bGxhYmxlID09PSB0cnVlIHx8IChwcm9wLnR5cGUgIT09IFwicmVsYXRpb25cIiAmJiBwcm9wLmRiRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSksXG4gICAgICApXG4gICAgICAubWFwKChwcm9wKSA9PiAocHJvcC50eXBlID09PSBcInJlbGF0aW9uXCIgPyBgJHtwcm9wLm5hbWV9X2lkYCA6IHByb3AubmFtZSkpXG4gICAgICAuY29uY2F0KFwiaWRcIik7XG5cbiAgICAvKipcbiAgICAgKiBoYXNWZWN0b3IgcHJvcHNcbiAgICAgKiAtIHZlY3RvciDtg4DsnoXsnbgg7Lus65+8XG4gICAgICovXG4gICAgY29uc3QgaGFzVmVjdG9yQ29sdW1ucyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4gcHJvcC50eXBlID09PSBcInZlY3RvclwiIHx8IHByb3AudHlwZSA9PT0gXCJ2ZWN0b3JbXVwiKVxuICAgICAgLm1hcCgocHJvcCkgPT4gcHJvcC5uYW1lKTtcblxuICAgIC8qKlxuICAgICAqIEpTT04gcHJvcHNcbiAgICAgKiAtIGpzb24g7YOA7J6F7J24IOy7rOufvFxuICAgICAqL1xuICAgIGNvbnN0IGpzb25Db2x1bW5zID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiBwcm9wLnR5cGUgPT09IFwianNvblwiKVxuICAgICAgLm1hcCgocHJvcCkgPT4gcHJvcC5uYW1lKTtcblxuICAgIC8qKlxuICAgICAqIGdlbmVyYXRlZCBwcm9wc1xuICAgICAqIC0gZ2VuZXJhdGVkIOyGjeyEseydtCDsnojripQg7Lus65+8IChJTlNFUlQvVVBEQVRFIOyLnCDqsJIg7KCc6rO1IOu2iOqwgClcbiAgICAgKi9cbiAgICBjb25zdCBnZW5lcmF0ZWRDb2x1bW5zID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocHJvcCkgPT5cbiAgICAgICAgICBwcm9wLnR5cGUgIT09IFwicmVsYXRpb25cIiAmJiAocHJvcC5nZW5lcmF0ZWQgIT09IHVuZGVmaW5lZCB8fCBwcm9wLnR5cGUgPT09IFwic2VhcmNoVGV4dFwiKSxcbiAgICAgIClcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICBjb25zdCBoYXNNZXRhZGF0YSA9XG4gICAgICBmdWxsdGV4dENvbHVtbnMubGVuZ3RoID4gMCB8fFxuICAgICAgdmlydHVhbFByb3BzLmxlbmd0aCA+IDAgfHxcbiAgICAgIHZpcnR1YWxRdWVyeVByb3BzLmxlbmd0aCA+IDAgfHxcbiAgICAgIGhhc0RlZmF1bHRDb2x1bW5zLmxlbmd0aCA+IDAgfHxcbiAgICAgIGdlbmVyYXRlZENvbHVtbnMubGVuZ3RoID4gMCB8fFxuICAgICAgaGFzVmVjdG9yQ29sdW1ucy5sZW5ndGggPiAwIHx8XG4gICAgICBqc29uQ29sdW1ucy5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke3NjaGVtYUJvZHl9O2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+YCArXG4gICAgICAgIChoYXNNZXRhZGF0YVxuICAgICAgICAgID8gYCAmIHske1xuICAgICAgICAgICAgICAoZnVsbHRleHRDb2x1bW5zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX2Z1bGx0ZXh0X186IHJlYWRvbmx5IFske2Z1bGx0ZXh0Q29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2wpID0+IGBcIiR7Y29sfVwiYClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKHZpcnR1YWxQcm9wcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX192aXJ0dWFsX186IHJlYWRvbmx5IFske3ZpcnR1YWxQcm9wcy5tYXAoKHByb3ApID0+IGBcIiR7cHJvcH1cImApLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKHZpcnR1YWxRdWVyeVByb3BzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX3ZpcnR1YWxfcXVlcnlfXzogcmVhZG9ubHkgWyR7dmlydHVhbFF1ZXJ5UHJvcHMubWFwKChwcm9wKSA9PiBgXCIke3Byb3B9XCJgKS5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgICAgICAgIChoYXNEZWZhdWx0Q29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IFske2hhc0RlZmF1bHRDb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfV0sYFxuICAgICAgICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICAgICAgICAoZ2VuZXJhdGVkQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19nZW5lcmF0ZWRfXzogcmVhZG9ubHkgWyR7Z2VuZXJhdGVkQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2wpID0+IGBcIiR7Y29sfVwiYClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKGhhc1ZlY3RvckNvbHVtbnMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gYHJlYWRvbmx5IF9fdmVjdG9yX186IHJlYWRvbmx5IFske2hhc1ZlY3RvckNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgICAgICAgIChqc29uQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19qc29uX186IHJlYWRvbmx5IFske2pzb25Db2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfV0sYFxuICAgICAgICAgICAgICAgIDogXCJcIilcbiAgICAgICAgICAgIH19YFxuICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICBcIjtcIixcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgQmFzZVNjaGVtYTogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5KTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIC8vIFByb3Ag7JeG64qUIE1E7J24IOqyveyasCDsg53shLEg7KCc7Jm4XG4gICAgaWYgKGVudGl0eS5wcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoZW50aXR5LnBhcmVudElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYU5hbWUgPSBgJHtlbnRpdHkubmFtZXMubW9kdWxlfUJhc2VMaXN0UGFyYW1zYDtcblxuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZW50aXR5LnByb3BzLmZpbHRlcigocHJvcCkgPT4gcHJvcC50b0ZpbHRlciA9PT0gdHJ1ZSk7XG5cbiAgICBjb25zdCBwcm9wTm9kZXM6IEVudGl0eVByb3BOb2RlW10gPSBmaWx0ZXJQcm9wcy5tYXAoKHByb3ApID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVUeXBlOiBcInBsYWluXCIgYXMgY29uc3QsXG4gICAgICAgIHByb3AsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGZpbHRlckJvZHkgPSBwcm9wTm9kZXNcbiAgICAgIC5tYXAoKHByb3BOb2RlKSA9PiBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cykpXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIC8vIEZpbHRlclF1ZXJ5IO2DgOyeheydhCDsnITtlZwg7KCc7Jm47ZWgIHByb3BzIOy2lOy2nCAodmlydHVhbOunjCDsoJzsmbgpXG4gICAgY29uc3QgZXhjbHVkZWRQcm9wcyA9IGVudGl0eS5wcm9wcy5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gXCJ2aXJ0dWFsXCIpLm1hcCgocCkgPT4gcC5uYW1lKTtcblxuICAgIC8vIG51bWVyaWMg7YOA7J6F7J24IHByb3BzIOy2lOy2nFxuICAgIGNvbnN0IG51bWVyaWNQcm9wcyA9IGVudGl0eS5wcm9wcy5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gXCJudW1lcmljXCIpO1xuXG4gICAgLy8gQXBwbHlTb25hbXVGaWx0ZXIg7YOA7J6FIOyduOyekCDsg53shLFcbiAgICBjb25zdCBlbnRpdHlUeXBlID0gYCR7ZW50aXR5LmlkfUJhc2VTY2hlbWFgO1xuICAgIGNvbnN0IG51bWVyaWNLZXlzVW5pb24gPVxuICAgICAgbnVtZXJpY1Byb3BzLmxlbmd0aCA+IDAgPyBudW1lcmljUHJvcHMubWFwKChwcm9wKSA9PiBgXCIke3Byb3AubmFtZX1cImApLmpvaW4oXCIgfCBcIikgOiBcIm5ldmVyXCI7XG4gICAgY29uc3Qgb21pdEtleXNVbmlvbiA9XG4gICAgICBleGNsdWRlZFByb3BzLmxlbmd0aCA+IDAgPyBleGNsdWRlZFByb3BzLm1hcCgobikgPT4gYFwiJHtufVwiYCkuam9pbihcIiB8IFwiKSA6IFwibmV2ZXJcIjtcblxuICAgIC8vIFBLIO2DgOyeheyXkCDrlLDrpbggaWQgWm9kIO2DgOyehSDqsrDsoJVcbiAgICBjb25zdCBwa1R5cGUgPSBlbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgY29uc3QgaWRab2RUeXBlID1cbiAgICAgIHBrVHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBwa1R5cGUgPT09IFwidXVpZFwiXG4gICAgICAgID8gXCJ6QXJyYXlhYmxlKHouc3RyaW5nKCkpXCJcbiAgICAgICAgOiBcInpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKVwiO1xuXG4gICAgY29uc3Qgc2NoZW1hQm9keSA9IGBcbnoub2JqZWN0KHtcbiAgbnVtOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICBzZWFyY2g6ICR7ZW50aXR5LmlkfVNlYXJjaEZpZWxkLFxuICBrZXl3b3JkOiB6LnN0cmluZygpLFxuICBvcmRlckJ5OiAke2VudGl0eS5pZH1PcmRlckJ5LFxuICBxdWVyeU1vZGU6IFNvbmFtdVF1ZXJ5TW9kZSxcbiAgaWQ6ICR7aWRab2RUeXBlfSxcbiAgc29uYW11RmlsdGVyOiB6LmN1c3RvbTxBcHBseVNvbmFtdUZpbHRlcjwke2VudGl0eVR5cGV9LCAke29taXRLZXlzVW5pb259LCAke251bWVyaWNLZXlzVW5pb259Pj4oKSwke2ZpbHRlckJvZHl9XG59KS5wYXJ0aWFsKCk7XG5gLnRyaW0oKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgYGV4cG9ydCBjb25zdCAke3NjaGVtYU5hbWV9ID0gJHtzY2hlbWFCb2R5fTtgLFxuICAgICAgYGV4cG9ydCB0eXBlICR7c2NoZW1hTmFtZX0gPSB6LmluZmVyPHR5cGVvZiAke3NjaGVtYU5hbWV9PjtgLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBCYXNlTGlzdFBhcmFtczogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3Vic2V0U291cmNlQ29kZShlbnRpdHk6IEVudGl0eSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChlbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2V0S2V5cyA9IE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnN1YnNldEtleXMuZmxhdE1hcCgoc3Vic2V0S2V5KSA9PiB7XG4gICAgICAgIC8vIOyEnOu4jOyFi+yXkOyEnCBGaWVsZEV4cHJbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgZmllbGRFeHBycyA9IGVudGl0eS5zdWJzZXRzW3N1YnNldEtleV07XG5cbiAgICAgICAgLy8gRmllbGRFeHByW13roZwgRW50aXR5UHJvcE5vZGVbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgcHJvcE5vZGVzID0gZW50aXR5LmZpZWxkRXhwcnNUb1Byb3BOb2RlcyhmaWVsZEV4cHJzKTtcbiAgICAgICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9YDtcbiAgICAgICAgY29uc3QgcHJvcE5vZGU6IEVudGl0eVByb3BOb2RlID0ge1xuICAgICAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIGNoaWxkcmVuOiBwcm9wTm9kZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gRW50aXR5UHJvcE5vZGVbXeuhnCBab2RUeXBlRGVmKHN0cmluZynsnYQg6rCA7KC47Ji0XG4gICAgICAgIGNvbnN0IGJvZHkgPSBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cyk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke2JvZHkucmVwbGFjZSgvLCQvLCBcIlwiKX07YCxcbiAgICAgICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+O2AsXG4gICAgICAgIF07XG4gICAgICB9KSxcbiAgICAgIGBleHBvcnQgdHlwZSAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0TWFwcGluZyA9IHtgLFxuICAgICAgLi4uc3Vic2V0S2V5cy5tYXAoKHN1YnNldEtleSkgPT4gYCAgJHtzdWJzZXRLZXl9OiAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9O2ApLFxuICAgICAgXCJ9O1wiLFxuICAgICAgYGV4cG9ydCBjb25zdCAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5ID0gei5lbnVtKFske3N1YnNldEtleXNcbiAgICAgICAgLm1hcCgoaykgPT4gYFwiJHtrfVwiYClcbiAgICAgICAgLmpvaW4oXCIsXCIpfV0pO2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtlbnRpdHkubmFtZXMubW9kdWxlfVN1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mICR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRLZXk+O2AsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBTdWJzZXRzOiAke2VudGl0eS5pZH1gLFxuICAgICAgbGluZXMsXG4gICAgICBpbXBvcnRLZXlzOiB1bmlxdWUoaW1wb3J0S2V5cyksXG4gICAgfTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztTQUlrQztvQkFFeUI7V0FDbEI7V0FDZ0M7V0FFMUI7Y0FDVDttQkFDbUQ7QUFPekYsSUFBYSxzQkFBYixjQUF5QyxTQUFTO0NBQ2hELGNBQWM7RUFDWixNQUFNLFdBQVc7Q0FDbkI7Q0FFQSxtQkFBbUI7RUFDakIsTUFBTSxFQUFFLFFBQVEsT0FBTyxPQUFPO0VBQzlCLE9BQU87R0FDTCxRQUFRLEdBQUcsSUFBSTtHQUNmLE1BQU07RUFDUjtDQUNGO0NBQ0EsU0FBUztFQUVQLE1BQU0sV0FEWSxjQUFjLFVBQ2YsQ0FBQSxDQUFVLEtBQUssT0FBTyxjQUFjLElBQUksRUFBRSxDQUFDO0VBRzVELE1BQU0sY0FBYyxTQUFTLFNBQVMsV0FBVztHQUMvQyxPQUFPO0lBQ0wsS0FBSyxtQkFBbUIsTUFBTTtJQUM5QixLQUFLLHdCQUF3QixNQUFNO0lBQ25DLEtBQUssNEJBQTRCLE1BQU07SUFDdkMsS0FBSyxvQkFBb0IsTUFBTTtHQUNqQyxDQUFDLENBQUMsT0FBTyxXQUFXO0VBQ3RCLENBQUM7RUFDRCxNQUFNLEVBQUUsbUNBQW1DLFdBQVc7RUFHdEQsTUFBTSxrQkFBa0I7R0FBQztHQUFTO0dBQWM7R0FBa0I7R0FBVztFQUFlO0VBQzVGLFlBQVksTUFBTSxHQUFHLE1BQU07R0FDekIsTUFBTSxDQUFDLFFBQVEsRUFBRSxNQUFNLE1BQU0sR0FBRztHQUNoQyxNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sTUFBTSxHQUFHO0dBQ2hDLE1BQU0sU0FBUyxnQkFBZ0IsUUFBUSxJQUFJO0dBQzNDLE1BQU0sU0FBUyxnQkFBZ0IsUUFBUSxJQUFJO0dBQzNDLElBQUksU0FBUyxRQUNYLE9BQU87UUFDRixJQUFJLFNBQVMsUUFDbEIsT0FBTztRQUVQLE9BQU87RUFFWCxDQUFDO0VBRUQsTUFBTSxhQUFhLFlBQVksUUFDNUIsUUFBUSxPQUFPO0dBQ2QsSUFB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
|
|
246
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLnRlbXBsYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkLnRlbXBsYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuXG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGlzVmlydHVhbENvZGVQcm9wLCBpc1ZpcnR1YWxRdWVyeVByb3AgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgRW50aXR5SW5kZXgsIHR5cGUgRW50aXR5UHJvcE5vZGUgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IG5vbk51bGxhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuaW1wb3J0IHsgQlVJTFRfSU5fVFlQRVMsIHByb3BOb2RlVG9ab2RUeXBlRGVmLCB6b2RUeXBlVG9ab2RDb2RlIH0gZnJvbSBcIi4uL3pvZC1jb252ZXJ0ZXJcIjtcblxuZXhwb3J0IHR5cGUgU291cmNlQ29kZSA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgbGluZXM6IHN0cmluZ1tdO1xuICBpbXBvcnRLZXlzOiBzdHJpbmdbXTtcbn07XG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX2dlbmVyYXRlZCBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJnZW5lcmF0ZWRcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgc29uYW11LmdlbmVyYXRlZC50c2AsXG4gICAgfTtcbiAgfVxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgZW50aXR5SWRzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcbiAgICBjb25zdCBlbnRpdGllcyA9IGVudGl0eUlkcy5tYXAoKGlkKSA9PiBFbnRpdHlNYW5hZ2VyLmdldChpZCkpO1xuXG4gICAgLy8g7KCE7LK0IFNvdXJjZUNvZGUg7IOd7ISxXG4gICAgY29uc3Qgc291cmNlQ29kZXMgPSBlbnRpdGllcy5mbGF0TWFwKChlbnRpdHkpID0+IHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHRoaXMuZ2V0RW51bXNTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICAgIHRoaXMuZ2V0QmFzZVNjaGVtYVNvdXJjZUNvZGUoZW50aXR5KSxcbiAgICAgICAgdGhpcy5nZXRCYXNlTGlzdFBhcmFtc1NvdXJjZUNvZGUoZW50aXR5KSxcbiAgICAgICAgdGhpcy5nZXRTdWJzZXRTb3VyY2VDb2RlKGVudGl0eSksXG4gICAgICBdLmZpbHRlcihub25OdWxsYWJsZSk7XG4gICAgfSk7XG4gICAgTmFpdGUudChcIlRlbXBsYXRlX19nZW5lcmF0ZWQ6c291cmNlQ29kZXNcIiwgc291cmNlQ29kZXMpO1xuXG4gICAgLy8gU29ydFxuICAgIGNvbnN0IExBQkVMX0tFWV9PUkRFUiA9IFtcIkVudW1zXCIsIFwiQmFzZVNjaGVtYVwiLCBcIkJhc2VMaXN0UGFyYW1zXCIsIFwiU3Vic2V0c1wiLCBcIlN1YnNldFF1ZXJpZXNcIl07XG4gICAgc291cmNlQ29kZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgW2FLZXldID0gYS5sYWJlbC5zcGxpdChcIjpcIik7XG4gICAgICBjb25zdCBbYktleV0gPSBiLmxhYmVsLnNwbGl0KFwiOlwiKTtcbiAgICAgIGNvbnN0IGFJbmRleCA9IExBQkVMX0tFWV9PUkRFUi5pbmRleE9mKGFLZXkpO1xuICAgICAgY29uc3QgYkluZGV4ID0gTEFCRUxfS0VZX09SREVSLmluZGV4T2YoYktleSk7XG4gICAgICBpZiAoYUluZGV4ID4gYkluZGV4KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfSBlbHNlIGlmIChhSW5kZXggPCBiSW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBzb3VyY2VDb2RlID0gc291cmNlQ29kZXMucmVkdWNlKFxuICAgICAgKHJlc3VsdCwgdHMpID0+IHtcbiAgICAgICAgaWYgKHRzID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmVzOiBbLi4ucmVzdWx0LmxpbmVzLCBgLy8gJHt0cy5sYWJlbH1gLCAuLi50cy5saW5lcywgXCJcIl0sXG4gICAgICAgICAgaW1wb3J0S2V5czogdW5pcXVlKFsuLi5yZXN1bHQuaW1wb3J0S2V5cywgLi4udHMuaW1wb3J0S2V5c10udG9Tb3J0ZWQoKSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgLyogU0FGRVRZOiByZWR1Y2Ug64iE7IKw6riw64qUIGxhYmVs7J2EIOygnOyZuO2VnCBTb3VyY2VDb2Rl7J2YIOuRkCDrsLDsl7TroZwg7LSI6riw7ZmU65Cc64ukLiAqLyB7XG4gICAgICAgIGxpbmVzOiBbXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9IGFzIE9taXQ8U291cmNlQ29kZSwgXCJsYWJlbFwiPixcbiAgICApO1xuXG4gICAgLy8gLnR5cGVzLnRz7J2YIO2DgOyeheydhCDssLjsobDtlZjripQg6rK97JqwIOyInO2ZmOywuOyhsCjsg4HtmLjssLjsobAp6rCAIOuwnOyDne2VmOuvgOuhnCDtg4DsnoXsnYQg6rCA7KC47JmAIOyduOudvOyduCDsspjrpqxcbiAgICBjb25zdCBhbGxUeXBlS2V5cyA9IGVudGl0aWVzLmZsYXRNYXAoKGVudGl0eSkgPT4gT2JqZWN0LmtleXMoZW50aXR5LnR5cGVzKSk7XG4gICAgY29uc3QgY2RJbXBvcnRLZXlzID0gc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcigoaW1wb3J0S2V5KSA9PlxuICAgICAgYWxsVHlwZUtleXMuaW5jbHVkZXMoaW1wb3J0S2V5KSxcbiAgICApO1xuICAgIGlmIChjZEltcG9ydEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY3VzdG9tU2NhbGFyTGluZXMgPSBjZEltcG9ydEtleXMuZmxhdE1hcCgoaW1wb3J0S2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IGVudGl0aWVzLmZpbmQoKGNhbmRpZGF0ZUVudGl0eSkgPT4gY2FuZGlkYXRlRW50aXR5LnR5cGVzW2ltcG9ydEtleV0pO1xuICAgICAgICBpZiAoIWVudGl0eSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWm9kVHlwZSBub3QgZm91bmQgJHtpbXBvcnRLZXl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgem9kVHlwZSA9IGVudGl0eS50eXBlc1tpbXBvcnRLZXldO1xuICAgICAgICBhc3NlcnQoem9kVHlwZSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgLy8gQ3VzdG9tU2NhbGFyOiAke2ltcG9ydEtleX1gLFxuICAgICAgICAgIGBjb25zdCAke2ltcG9ydEtleX0gPSAke3pvZFR5cGVUb1pvZENvZGUoem9kVHlwZSwgc291cmNlQ29kZS5pbXBvcnRLZXlzKX07YCxcbiAgICAgICAgICBgdHlwZSAke2ltcG9ydEtleX0gPSB6LmluZmVyPHR5cGVvZiAke2ltcG9ydEtleX0+YCxcbiAgICAgICAgICBcIlwiLFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gICAgICBzb3VyY2VDb2RlLmxpbmVzID0gWy4uLmN1c3RvbVNjYWxhckxpbmVzLCAuLi5zb3VyY2VDb2RlLmxpbmVzXTtcbiAgICAgIHNvdXJjZUNvZGUuaW1wb3J0S2V5cyA9IHVuaXF1ZShcbiAgICAgICAgc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcigoaW1wb3J0S2V5KSA9PiAhY2RJbXBvcnRLZXlzLmluY2x1ZGVzKGltcG9ydEtleSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBib2R5ID0gc291cmNlQ29kZS5saW5lcy5qb2luKFwiXFxuXCIpO1xuICAgIE5haXRlLnQoXCJUZW1wbGF0ZV9fZ2VuZXJhdGVkOmJvZHlcIiwgYm9keSk7XG5cbiAgICAvLyBpbXBvcnRcbiAgICAvLyBzb3VyY2VDb2RlLmltcG9ydEtleXPsl5Ag64K07J6lIO2DgOyeheydmCDsiqTtgqTrp4jqsIAg7J6I7Jy866m0IHNvbmFtdSBpbXBvcnTsl5Ag7LaU6rCAXG4gICAgY29uc3QgYnVpbHRJblNjaGVtYU5hbWVzID0gT2JqZWN0LnZhbHVlcyhCVUlMVF9JTl9UWVBFUykubWFwKFxuICAgICAgKGluZm8pID0+XG4gICAgICAgIC8qIFNBRkVUWTogQlVJTFRfSU5fVFlQRVPsnZgg66qo65OgIO2VreuqqeydgCDsg53shLEg7L2U65Oc7JeQIOyTuCBzY2hlbWFOYW1l7J2EIOqwgOynhOuLpC4gKi8gaW5mby5zY2hlbWFOYW1lIGFzIHN0cmluZyxcbiAgICApO1xuICAgIGNvbnN0IGJ1aWx0SW5TY2hlbWFzID0gc291cmNlQ29kZS5pbXBvcnRLZXlzLmZpbHRlcigoa2V5KSA9PiBidWlsdEluU2NoZW1hTmFtZXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgY29uc3Qgc29uYW11SW1wb3J0cyA9IFtcbiAgICAgIFwiekFycmF5YWJsZVwiLFxuICAgICAgXCJTUUxEYXRlVGltZVN0cmluZ1wiLFxuICAgICAgXCJTdWJzZXRRdWVyeVwiLFxuICAgICAgXCJTb25hbXVRdWVyeU1vZGVcIixcbiAgICAgIFwiQXBwbHlTb25hbXVGaWx0ZXJcIixcbiAgICAgIC4uLmJ1aWx0SW5TY2hlbWFzLFxuICAgIF0uZmlsdGVyKChtb2QpID0+IGJvZHkuaW5jbHVkZXMobW9kKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5LFxuICAgICAgaW1wb3J0S2V5czogc291cmNlQ29kZS5pbXBvcnRLZXlzLFxuICAgICAgY3VzdG9tSGVhZGVyczogW1xuICAgICAgICBcIi8qKlwiLFxuICAgICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgICAgXCIgKiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIixcbiAgICAgICAgXCIgKi9cIixcbiAgICAgICAgXCJcIixcbiAgICAgICAgXCIvKiBveGxpbnQtZGlzYWJsZSAqL1wiLFxuICAgICAgICBcIlwiLFxuICAgICAgICBgaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCc7YCxcbiAgICAgICAgYGltcG9ydCB7ICR7c29uYW11SW1wb3J0cy5qb2luKFwiLFwiKX0gfSBmcm9tIFwic29uYW11XCI7YCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIGdldEVudW1zU291cmNlQ29kZShlbnRpdHk6IEVudGl0eSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZW50aXR5LmVudW1MYWJlbHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYEVudW1zOiAke2VudGl0eS5pZH1gLFxuICAgICAgbGluZXM6IE9iamVjdC5lbnRyaWVzKGVudGl0eS5lbnVtTGFiZWxzKVxuICAgICAgICAuZmlsdGVyKChbLCBlbnVtTGFiZWxdKSA9PiBPYmplY3Qua2V5cyhlbnVtTGFiZWwpLmxlbmd0aCA+IDApXG4gICAgICAgIC5mbGF0TWFwKChbZW51bUlkLCBlbnVtTGFiZWxdKSA9PiBbXG4gICAgICAgICAgYGV4cG9ydCBjb25zdCAke2VudW1JZH0gPSB6LmVudW0oWyR7T2JqZWN0LmtleXMoZW51bUxhYmVsKS5tYXAoXG4gICAgICAgICAgICAoZWwpID0+IGBcIiR7ZWx9XCJgLFxuICAgICAgICAgICl9XSkuZGVzY3JpYmUoXCIke2VudW1JZH1cIik7YCxcbiAgICAgICAgICBgZXhwb3J0IHR5cGUgJHtlbnVtSWR9ID0gei5pbmZlcjx0eXBlb2YgJHtlbnVtSWR9PjtgLFxuICAgICAgICAgIGBleHBvcnQgY29uc3QgJHtlbnVtSWR9TGFiZWwgPSAke0pTT04uc3RyaW5naWZ5KGVudW1MYWJlbCl9O2AsXG4gICAgICAgIF0pLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIGdldEJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5LCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdKTogU291cmNlQ29kZSB7XG4gICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9QmFzZVNjaGVtYWA7XG4gICAgY29uc3QgcHJvcE5vZGU6IEVudGl0eVByb3BOb2RlID0ge1xuICAgICAgbm9kZVR5cGU6IFwib2JqZWN0XCIsXG4gICAgICBjaGlsZHJlbjogZW50aXR5LnByb3BzLm1hcCgocHJvcCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGVUeXBlOiBcInBsYWluXCIsXG4gICAgICAgICAgcHJvcCxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICBjb25zdCBzY2hlbWFCb2R5ID0gKCgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHByb3BOb2RlVG9ab2RUeXBlRGVmKHByb3BOb2RlLCBpbXBvcnRLZXlzKTtcbiAgICAgIGlmIChyZXN1bHQuZW5kc1dpdGgoXCIsXCIpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pKCk7XG5cbiAgICAvLyBmdWxsdGV4dCBpbmRleOyXkCDtj6ztlajrkJwg7Lus65+865OkIOy2lOy2nFxuICAgIC8vIFRPRE86IEdJTi9HaVNUIOyduOuNseyKpCDsg53shLHrkJwg7Lus65+8IOy2lOy2nFxuICAgIGNvbnN0IGZ1bGx0ZXh0Q29sdW1uczogRW50aXR5SW5kZXhbXCJjb2x1bW5zXCJdW10gPSBbXTtcblxuICAgIC8vIHZpcnR1YWwgcHJvcHMgKHZpcnR1YWxUeXBlOiBcImNvZGVcIiDrmJDripQgdW5kZWZpbmVk7J24IOqyg+unjCDtj6ztlagpXG4gICAgY29uc3QgdmlydHVhbFByb3BzID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiBpc1ZpcnR1YWxDb2RlUHJvcChwcm9wKSlcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICAvLyBxdWVyeSB2aXJ0dWFsIHByb3BzICh2aXJ0dWFsVHlwZTogXCJxdWVyeVwi7J24IOqyg+unjCDtj6ztlagpXG4gICAgY29uc3QgdmlydHVhbFF1ZXJ5UHJvcHMgPSBlbnRpdHkucHJvcHNcbiAgICAgIC5maWx0ZXIoKHByb3ApID0+IGlzVmlydHVhbFF1ZXJ5UHJvcChwcm9wKSlcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICAvKipcbiAgICAgKiBoYXNEZWZhdWx0IHByb3BzXG4gICAgICogLSBudWxsYWJsZSDrmJDripQgZGJEZWZhdWx06rCAIOyeiOuKlCDsu6zrn7wgKGlkIO2PrO2VqClcbiAgICAgKiAtIHJlbGF0aW9u7J20IOyVhOuLiOqxsOuCmCwgcmVsYXRpb27snbTslrTrj4QgbnVsbGFibGXsnbTrqbQg7Y+s7ZWoXG4gICAgICovXG4gICAgY29uc3QgaGFzRGVmYXVsdENvbHVtbnMgPSBlbnRpdHkucHJvcHNcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgIChwcm9wLnR5cGUgIT09IFwicmVsYXRpb25cIiB8fCBwcm9wLm51bGxhYmxlID09PSB0cnVlKSAmJlxuICAgICAgICAgIChwcm9wLm51bGxhYmxlID09PSB0cnVlIHx8IChwcm9wLnR5cGUgIT09IFwicmVsYXRpb25cIiAmJiBwcm9wLmRiRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSksXG4gICAgICApXG4gICAgICAubWFwKChwcm9wKSA9PiAocHJvcC50eXBlID09PSBcInJlbGF0aW9uXCIgPyBgJHtwcm9wLm5hbWV9X2lkYCA6IHByb3AubmFtZSkpXG4gICAgICAuY29uY2F0KFwiaWRcIik7XG5cbiAgICAvKipcbiAgICAgKiBoYXNWZWN0b3IgcHJvcHNcbiAgICAgKiAtIHZlY3RvciDtg4DsnoXsnbgg7Lus65+8XG4gICAgICovXG4gICAgY29uc3QgaGFzVmVjdG9yQ29sdW1ucyA9IGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4gcHJvcC50eXBlID09PSBcInZlY3RvclwiIHx8IHByb3AudHlwZSA9PT0gXCJ2ZWN0b3JbXVwiKVxuICAgICAgLm1hcCgocHJvcCkgPT4gcHJvcC5uYW1lKTtcblxuICAgIC8qKlxuICAgICAqIEpTT04gcHJvcHNcbiAgICAgKiAtIGpzb24g7YOA7J6F7J24IOy7rOufvFxuICAgICAqL1xuICAgIGNvbnN0IGpzb25Db2x1bW5zID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiBwcm9wLnR5cGUgPT09IFwianNvblwiKVxuICAgICAgLm1hcCgocHJvcCkgPT4gcHJvcC5uYW1lKTtcblxuICAgIC8qKlxuICAgICAqIGdlbmVyYXRlZCBwcm9wc1xuICAgICAqIC0gZ2VuZXJhdGVkIOyGjeyEseydtCDsnojripQg7Lus65+8IChJTlNFUlQvVVBEQVRFIOyLnCDqsJIg7KCc6rO1IOu2iOqwgClcbiAgICAgKi9cbiAgICBjb25zdCBnZW5lcmF0ZWRDb2x1bW5zID0gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAocHJvcCkgPT5cbiAgICAgICAgICBwcm9wLnR5cGUgIT09IFwicmVsYXRpb25cIiAmJiAocHJvcC5nZW5lcmF0ZWQgIT09IHVuZGVmaW5lZCB8fCBwcm9wLnR5cGUgPT09IFwic2VhcmNoVGV4dFwiKSxcbiAgICAgIClcbiAgICAgIC5tYXAoKHByb3ApID0+IHByb3AubmFtZSk7XG5cbiAgICBjb25zdCBoYXNNZXRhZGF0YSA9XG4gICAgICBmdWxsdGV4dENvbHVtbnMubGVuZ3RoID4gMCB8fFxuICAgICAgdmlydHVhbFByb3BzLmxlbmd0aCA+IDAgfHxcbiAgICAgIHZpcnR1YWxRdWVyeVByb3BzLmxlbmd0aCA+IDAgfHxcbiAgICAgIGhhc0RlZmF1bHRDb2x1bW5zLmxlbmd0aCA+IDAgfHxcbiAgICAgIGdlbmVyYXRlZENvbHVtbnMubGVuZ3RoID4gMCB8fFxuICAgICAgaGFzVmVjdG9yQ29sdW1ucy5sZW5ndGggPiAwIHx8XG4gICAgICBqc29uQ29sdW1ucy5sZW5ndGggPiAwO1xuXG4gICAgY29uc3QgbGluZXMgPSBbXG4gICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke3NjaGVtYUJvZHl9O2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+YCArXG4gICAgICAgIChoYXNNZXRhZGF0YVxuICAgICAgICAgID8gYCAmIHske1xuICAgICAgICAgICAgICAoZnVsbHRleHRDb2x1bW5zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX2Z1bGx0ZXh0X186IHJlYWRvbmx5IFske2Z1bGx0ZXh0Q29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2wpID0+IGBcIiR7Y29sfVwiYClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKHZpcnR1YWxQcm9wcy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX192aXJ0dWFsX186IHJlYWRvbmx5IFske3ZpcnR1YWxQcm9wcy5tYXAoKHByb3ApID0+IGBcIiR7cHJvcH1cImApLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKHZpcnR1YWxRdWVyeVByb3BzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/IGByZWFkb25seSBfX3ZpcnR1YWxfcXVlcnlfXzogcmVhZG9ubHkgWyR7dmlydHVhbFF1ZXJ5UHJvcHMubWFwKChwcm9wKSA9PiBgXCIke3Byb3B9XCJgKS5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgICAgICAgIChoYXNEZWZhdWx0Q29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19oYXNEZWZhdWx0X186IHJlYWRvbmx5IFske2hhc0RlZmF1bHRDb2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfV0sYFxuICAgICAgICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICAgICAgICAoZ2VuZXJhdGVkQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19nZW5lcmF0ZWRfXzogcmVhZG9ubHkgWyR7Z2VuZXJhdGVkQ29sdW1uc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjb2wpID0+IGBcIiR7Y29sfVwiYClcbiAgICAgICAgICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1dLGBcbiAgICAgICAgICAgICAgICA6IFwiXCIpICtcbiAgICAgICAgICAgICAgKGhhc1ZlY3RvckNvbHVtbnMubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgID8gYHJlYWRvbmx5IF9fdmVjdG9yX186IHJlYWRvbmx5IFske2hhc1ZlY3RvckNvbHVtbnNcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKFwiLCBcIil9XSxgXG4gICAgICAgICAgICAgICAgOiBcIlwiKSArXG4gICAgICAgICAgICAgIChqc29uQ29sdW1ucy5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgPyBgcmVhZG9ubHkgX19qc29uX186IHJlYWRvbmx5IFske2pzb25Db2x1bW5zXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gYFwiJHtjb2x9XCJgKVxuICAgICAgICAgICAgICAgICAgICAuam9pbihcIiwgXCIpfV0sYFxuICAgICAgICAgICAgICAgIDogXCJcIilcbiAgICAgICAgICAgIH19YFxuICAgICAgICAgIDogXCJcIikgK1xuICAgICAgICBcIjtcIixcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgQmFzZVNjaGVtYTogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0QmFzZUxpc3RQYXJhbXNTb3VyY2VDb2RlKGVudGl0eTogRW50aXR5KTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIC8vIFByb3Ag7JeG64qUIE1E7J24IOqyveyasCDsg53shLEg7KCc7Jm4XG4gICAgaWYgKGVudGl0eS5wcm9wcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAoZW50aXR5LnBhcmVudElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYU5hbWUgPSBgJHtlbnRpdHkubmFtZXMubW9kdWxlfUJhc2VMaXN0UGFyYW1zYDtcblxuICAgIGNvbnN0IGZpbHRlclByb3BzID0gZW50aXR5LnByb3BzLmZpbHRlcigocHJvcCkgPT4gcHJvcC50b0ZpbHRlciA9PT0gdHJ1ZSk7XG5cbiAgICBjb25zdCBwcm9wTm9kZXM6IEVudGl0eVByb3BOb2RlW10gPSBmaWx0ZXJQcm9wcy5tYXAoKHByb3ApID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5vZGVUeXBlOiBcInBsYWluXCIgYXMgY29uc3QsXG4gICAgICAgIHByb3AsXG4gICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGZpbHRlckJvZHkgPSBwcm9wTm9kZXNcbiAgICAgIC5tYXAoKHByb3BOb2RlKSA9PiBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cykpXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIC8vIEZpbHRlclF1ZXJ5IO2DgOyeheydhCDsnITtlZwg7KCc7Jm47ZWgIHByb3BzIOy2lOy2nCAodmlydHVhbOunjCDsoJzsmbgpXG4gICAgY29uc3QgZXhjbHVkZWRQcm9wcyA9IGVudGl0eS5wcm9wcy5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gXCJ2aXJ0dWFsXCIpLm1hcCgocCkgPT4gcC5uYW1lKTtcblxuICAgIC8vIG51bWVyaWMg7YOA7J6F7J24IHByb3BzIOy2lOy2nFxuICAgIGNvbnN0IG51bWVyaWNQcm9wcyA9IGVudGl0eS5wcm9wcy5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gXCJudW1lcmljXCIpO1xuXG4gICAgLy8gQXBwbHlTb25hbXVGaWx0ZXIg7YOA7J6FIOyduOyekCDsg53shLFcbiAgICBjb25zdCBlbnRpdHlUeXBlID0gYCR7ZW50aXR5LmlkfUJhc2VTY2hlbWFgO1xuICAgIGNvbnN0IG51bWVyaWNLZXlzVW5pb24gPVxuICAgICAgbnVtZXJpY1Byb3BzLmxlbmd0aCA+IDAgPyBudW1lcmljUHJvcHMubWFwKChwcm9wKSA9PiBgXCIke3Byb3AubmFtZX1cImApLmpvaW4oXCIgfCBcIikgOiBcIm5ldmVyXCI7XG4gICAgY29uc3Qgb21pdEtleXNVbmlvbiA9XG4gICAgICBleGNsdWRlZFByb3BzLmxlbmd0aCA+IDAgPyBleGNsdWRlZFByb3BzLm1hcCgobikgPT4gYFwiJHtufVwiYCkuam9pbihcIiB8IFwiKSA6IFwibmV2ZXJcIjtcblxuICAgIC8vIFBLIO2DgOyeheyXkCDrlLDrpbggaWQgWm9kIO2DgOyehSDqsrDsoJVcbiAgICBjb25zdCBwa1R5cGUgPSBlbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgY29uc3QgaWRab2RUeXBlID1cbiAgICAgIHBrVHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBwa1R5cGUgPT09IFwidXVpZFwiXG4gICAgICAgID8gXCJ6QXJyYXlhYmxlKHouc3RyaW5nKCkpXCJcbiAgICAgICAgOiBcInpBcnJheWFibGUoei5udW1iZXIoKS5pbnQoKS5wb3NpdGl2ZSgpKVwiO1xuXG4gICAgY29uc3Qgc2NoZW1hQm9keSA9IGBcbnoub2JqZWN0KHtcbiAgbnVtOiB6Lm51bWJlcigpLmludCgpLm5vbm5lZ2F0aXZlKCksXG4gIHBhZ2U6IHoubnVtYmVyKCkuaW50KCkubWluKDEpLFxuICBzZWFyY2g6ICR7ZW50aXR5LmlkfVNlYXJjaEZpZWxkLFxuICBrZXl3b3JkOiB6LnN0cmluZygpLFxuICBvcmRlckJ5OiAke2VudGl0eS5pZH1PcmRlckJ5LFxuICBxdWVyeU1vZGU6IFNvbmFtdVF1ZXJ5TW9kZSxcbiAgaWQ6ICR7aWRab2RUeXBlfSxcbiAgc29uYW11RmlsdGVyOiB6LmN1c3RvbTxBcHBseVNvbmFtdUZpbHRlcjwke2VudGl0eVR5cGV9LCAke29taXRLZXlzVW5pb259LCAke251bWVyaWNLZXlzVW5pb259Pj4oKSwke2ZpbHRlckJvZHl9XG59KS5wYXJ0aWFsKCk7XG5gLnRyaW0oKTtcblxuICAgIGNvbnN0IGxpbmVzID0gW1xuICAgICAgYGV4cG9ydCBjb25zdCAke3NjaGVtYU5hbWV9ID0gJHtzY2hlbWFCb2R5fTtgLFxuICAgICAgYGV4cG9ydCB0eXBlICR7c2NoZW1hTmFtZX0gPSB6LmluZmVyPHR5cGVvZiAke3NjaGVtYU5hbWV9PjtgLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBCYXNlTGlzdFBhcmFtczogJHtlbnRpdHkuaWR9YCxcbiAgICAgIGltcG9ydEtleXMsXG4gICAgICBsaW5lcyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0U3Vic2V0U291cmNlQ29kZShlbnRpdHk6IEVudGl0eSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChlbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc3Vic2V0S2V5cyA9IE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGxpbmVzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLnN1YnNldEtleXMuZmxhdE1hcCgoc3Vic2V0S2V5KSA9PiB7XG4gICAgICAgIC8vIOyEnOu4jOyFi+yXkOyEnCBGaWVsZEV4cHJbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgZmllbGRFeHBycyA9IGVudGl0eS5zdWJzZXRzW3N1YnNldEtleV07XG5cbiAgICAgICAgLy8gRmllbGRFeHByW13roZwgRW50aXR5UHJvcE5vZGVbXSDqsIDsoLjsmLRcbiAgICAgICAgY29uc3QgcHJvcE5vZGVzID0gZW50aXR5LmZpZWxkRXhwcnNUb1Byb3BOb2RlcyhmaWVsZEV4cHJzKTtcbiAgICAgICAgY29uc3Qgc2NoZW1hTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9YDtcbiAgICAgICAgY29uc3QgcHJvcE5vZGU6IEVudGl0eVByb3BOb2RlID0ge1xuICAgICAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAgIGNoaWxkcmVuOiBwcm9wTm9kZXMsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gRW50aXR5UHJvcE5vZGVbXeuhnCBab2RUeXBlRGVmKHN0cmluZynsnYQg6rCA7KC47Ji0XG4gICAgICAgIGNvbnN0IGJvZHkgPSBwcm9wTm9kZVRvWm9kVHlwZURlZihwcm9wTm9kZSwgaW1wb3J0S2V5cyk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7c2NoZW1hTmFtZX0gPSAke2JvZHkucmVwbGFjZSgvLCQvLCBcIlwiKX07YCxcbiAgICAgICAgICBgZXhwb3J0IHR5cGUgJHtzY2hlbWFOYW1lfSA9IHouaW5mZXI8dHlwZW9mICR7c2NoZW1hTmFtZX0+O2AsXG4gICAgICAgIF07XG4gICAgICB9KSxcbiAgICAgIGBleHBvcnQgdHlwZSAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0TWFwcGluZyA9IHtgLFxuICAgICAgLi4uc3Vic2V0S2V5cy5tYXAoKHN1YnNldEtleSkgPT4gYCAgJHtzdWJzZXRLZXl9OiAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0JHtzdWJzZXRLZXl9O2ApLFxuICAgICAgXCJ9O1wiLFxuICAgICAgYGV4cG9ydCBjb25zdCAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5ID0gei5lbnVtKFske3N1YnNldEtleXNcbiAgICAgICAgLm1hcCgoaykgPT4gYFwiJHtrfVwiYClcbiAgICAgICAgLmpvaW4oXCIsXCIpfV0pO2AsXG4gICAgICBgZXhwb3J0IHR5cGUgJHtlbnRpdHkubmFtZXMubW9kdWxlfVN1YnNldEtleSA9IHouaW5mZXI8dHlwZW9mICR7ZW50aXR5Lm5hbWVzLm1vZHVsZX1TdWJzZXRLZXk+O2AsXG4gICAgICBcIlwiLFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBTdWJzZXRzOiAke2VudGl0eS5pZH1gLFxuICAgICAgbGluZXMsXG4gICAgICBpbXBvcnRLZXlzOiB1bmlxdWUoaW1wb3J0S2V5cyksXG4gICAgfTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUlrQyxTQUFBO0FBRXlCLG9CQUFBO0FBQ2xCLFdBQUE7QUFDZ0MsV0FBQTtBQUUxQixXQUFBO0FBQ1QsY0FBQTtBQUNtRCxtQkFBQTtBQU96RixJQUFhLHNCQUFiLGNBQXlDLFNBQVM7Q0FDaEQsY0FBYztFQUNaLE1BQU0sV0FBVztDQUNuQjtDQUVBLG1CQUFtQjtFQUNqQixNQUFNLEVBQUUsUUFBUSxPQUFPLE9BQU87RUFDOUIsT0FBTztHQUNMLFFBQVEsR0FBRyxJQUFJO0dBQ2YsTUFBTTtFQUNSO0NBQ0Y7Q0FDQSxTQUFTO0VBRVAsTUFBTSxXQURZLGNBQWMsVUFDZixDQUFBLENBQVUsS0FBSyxPQUFPLGNBQWMsSUFBSSxFQUFFLENBQUM7RUFHNUQsTUFBTSxjQUFjLFNBQVMsU0FBUyxXQUFXO0dBQy9DLE9BQU87SUFDTCxLQUFLLG1CQUFtQixNQUFNO0lBQzlCLEtBQUssd0JBQXdCLE1BQU07SUFDbkMsS0FBSyw0QkFBNEIsTUFBTTtJQUN2QyxLQUFLLG9CQUFvQixNQUFNO0dBQ2pDLENBQUMsQ0FBQyxPQUFPLFdBQVc7RUFDdEIsQ0FBQztFQUNELE1BQU0sRUFBRSxtQ0FBbUMsV0FBVztFQUd0RCxNQUFNLGtCQUFrQjtHQUFDO0dBQVM7R0FBYztHQUFrQjtHQUFXO0VBQWU7RUFDNUYsWUFBWSxNQUFNLEdBQUcsTUFBTTtHQUN6QixNQUFNLENBQUMsUUFBUSxFQUFFLE1BQU0sTUFBTSxHQUFHO0dBQ2hDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxNQUFNLEdBQUc7R0FDaEMsTUFBTSxTQUFTLGdCQUFnQixRQUFRLElBQUk7R0FDM0MsTUFBTSxTQUFTLGdCQUFnQixRQUFRLElBQUk7R0FDM0MsSUFBSSxTQUFTLFFBQ1gsT0FBTztRQUNGLElBQUksU0FBUyxRQUNsQixPQUFPO1FBRVAsT0FBTztFQUVYLENBQUM7RUFFRCxNQUFN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
|