sonamu 0.10.13 → 0.11.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/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
- package/dist/api/base-frame.d.ts.map +1 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +3 -2
- package/dist/api/validator.d.ts.map +1 -1
- package/dist/auth/audit-log/events.d.ts.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +3 -3
- package/dist/auth/knex-adapter.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.d.ts +4 -4
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/bin/build-config.d.ts +10 -0
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +130 -6
- package/dist/bin/fixture.d.ts +7 -4
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +161 -13
- package/dist/bin/test-command.d.ts +7 -0
- package/dist/bin/test-command.d.ts.map +1 -1
- package/dist/bin/test-command.js +18 -4
- package/dist/bin/typecheck-web.d.ts +2 -0
- package/dist/bin/typecheck-web.d.ts.map +1 -0
- package/dist/bin/typecheck-web.js +36 -0
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/drivers.d.ts.map +1 -1
- package/dist/cache-control/cache-control.d.ts.map +1 -1
- package/dist/compress/compress.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +1 -1
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.types.d.ts +0 -1
- package/dist/database/base-model.types.d.ts.map +1 -1
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/puri-subset.types.d.ts +0 -1
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-wrapper.d.ts +0 -1
- package/dist/database/puri-wrapper.d.ts.map +1 -1
- package/dist/database/puri.d.ts +0 -1
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.types.d.ts +0 -1
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/transaction-context.d.ts.map +1 -1
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/dict/en.d.ts +58 -58
- package/dist/dict/en.d.ts.map +1 -1
- package/dist/dict/ko.d.ts +58 -58
- package/dist/dict/ko.d.ts.map +1 -1
- package/dist/dict/rc-keys.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.js +2 -2
- package/dist/dict/utils.d.ts.map +1 -1
- package/dist/entity/entity-manager.d.ts +115 -113
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +25 -19
- package/dist/entity/entity-template-cone.d.ts +4 -4
- package/dist/entity/entity.d.ts +6 -1
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +8 -3
- package/dist/env.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/filter/types.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/logger/configure.d.ts +10 -1
- package/dist/logger/configure.d.ts.map +1 -1
- package/dist/logger/configure.js +30 -5
- package/dist/migration/migrator.d.ts +12 -1
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +77 -30
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/naite/messaging-types.d.ts +0 -1
- package/dist/naite/messaging-types.d.ts.map +1 -1
- package/dist/naite/naite-reporter.d.ts +0 -1
- package/dist/naite/naite-reporter.d.ts.map +1 -1
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/storage/base-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/drivers.d.ts.map +1 -1
- package/dist/storage/s3-driver.d.ts.map +1 -1
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/stream/ws-audience-resolver.d.ts.map +1 -1
- package/dist/stream/ws-audience.d.ts.map +1 -1
- package/dist/stream/ws-cluster-bus.d.ts.map +1 -1
- package/dist/stream/ws-delivery.d.ts.map +1 -1
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
- package/dist/stream/ws-presence-store.d.ts.map +1 -1
- package/dist/stream/ws-registry.d.ts.map +1 -1
- package/dist/stream/ws-telemetry-memory.d.ts.map +1 -1
- package/dist/stream/ws-telemetry.d.ts.map +1 -1
- package/dist/stream/ws.d.ts.map +1 -1
- package/dist/syncer/api-parser.js +2 -2
- package/dist/syncer/file-patterns.d.ts +17 -17
- package/dist/syncer/filesystem-dependencies.js +1 -1
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/template/implementations/entity.template.d.ts +2 -2
- package/dist/template/implementations/entity.template.d.ts.map +1 -1
- package/dist/template/implementations/entry-server.template.d.ts +2 -2
- package/dist/template/implementations/entry-server.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.d.ts +2 -2
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.d.ts +2 -2
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.d.ts +2 -2
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/http_validators.template.d.ts +2 -2
- package/dist/template/implementations/http_validators.template.d.ts.map +1 -1
- package/dist/template/implementations/init_types.template.d.ts +2 -2
- package/dist/template/implementations/init_types.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.d.ts +2 -2
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model_test.template.d.ts +2 -2
- package/dist/template/implementations/model_test.template.d.ts.map +1 -1
- package/dist/template/implementations/queries.template.d.ts +2 -2
- package/dist/template/implementations/queries.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.d.ts +2 -2
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +1 -1
- package/dist/template/implementations/services.template.d.ts +2 -2
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.d.ts +3 -3
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_id_all_select.template.d.ts +2 -2
- package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.d.ts +2 -2
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.d.ts +2 -2
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/template-manager.d.ts.map +1 -1
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/data-explorer.d.ts +2 -2
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
- package/dist/testing/faker-mappings.d.ts.map +1 -1
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +1 -1
- package/dist/testing/fixture-loader.d.ts.map +1 -1
- package/dist/testing/fixture-manager.d.ts +4 -0
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +99 -25
- package/dist/testing/naite-vitest-reporter.d.ts.map +1 -1
- package/dist/testing/parallel-db-manager.d.ts.map +1 -1
- package/dist/tooling/__tests__/helpers/sonamu-test-root.d.ts +10 -0
- package/dist/tooling/__tests__/helpers/sonamu-test-root.d.ts.map +1 -0
- package/dist/tooling/__tests__/helpers/sonamu-test-root.js +42 -0
- package/dist/tooling/cdd-service.d.ts +87 -0
- package/dist/tooling/cdd-service.d.ts.map +1 -0
- package/dist/tooling/cdd-service.js +215 -0
- package/dist/tooling/cli-tooling.d.ts +11 -0
- package/dist/tooling/cli-tooling.d.ts.map +1 -0
- package/dist/tooling/cli-tooling.js +901 -0
- package/dist/tooling/fixture-service.d.ts +29 -0
- package/dist/tooling/fixture-service.d.ts.map +1 -0
- package/dist/tooling/fixture-service.js +53 -0
- package/dist/tooling/index.d.ts +2 -0
- package/dist/tooling/index.d.ts.map +1 -0
- package/dist/tooling/index.js +2 -0
- package/dist/tooling/test-run-client.d.ts +27 -0
- package/dist/tooling/test-run-client.d.ts.map +1 -0
- package/dist/tooling/test-run-client.js +120 -0
- package/dist/tsdown.api.config.js +48 -0
- package/dist/types/types.d.ts +527 -527
- package/dist/types/types.d.ts.map +1 -1
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/utils/formatter.d.ts +6 -0
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +42 -11
- package/dist/utils/model.d.ts +1 -1
- package/dist/vector/chunking.d.ts.map +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/package.json +13 -12
- package/src/api/sonamu.ts +2 -1
- package/src/auth/index.ts +1 -1
- package/src/bin/__tests__/zod-compiler-build.test.ts +67 -0
- package/src/bin/build-config.ts +151 -5
- package/src/bin/fixture.ts +204 -21
- package/src/bin/test-command.ts +27 -4
- package/src/bin/typecheck-web.ts +56 -0
- package/src/dict/sonamu-dictionary.ts +1 -1
- package/src/entity/__tests__/entity-manager-autoload.contract.test.ts +55 -0
- package/src/entity/__tests__/entity-manager-explicit-root-registration.contract.test.ts +107 -0
- package/src/entity/entity-manager.ts +31 -19
- package/src/entity/entity.ts +7 -2
- package/src/logger/__tests__/configure.test.ts +33 -0
- package/src/logger/configure.ts +45 -3
- package/src/migration/__tests__/migrator.test.ts +51 -0
- package/src/migration/migrator.ts +103 -34
- package/src/syncer/api-parser.ts +1 -1
- package/src/testing/fixture-manager.ts +124 -32
- package/src/tooling/__tests__/cdd-rule-bootstrap.contract.test.ts +118 -0
- package/src/tooling/__tests__/cli-tooling-auth.contract.test.ts +72 -0
- package/src/tooling/__tests__/cli-tooling-cone-locale.contract.test.ts +150 -0
- package/src/tooling/__tests__/cli-tooling-entity-patch.contract.test.ts +131 -0
- package/src/tooling/__tests__/cli-tooling-fixture-transfer.contract.test.ts +255 -0
- package/src/tooling/__tests__/cli-tooling-i18n-update.contract.test.ts +104 -0
- package/src/tooling/__tests__/cli-tooling-scaffold.contract.test.ts +86 -0
- package/src/tooling/__tests__/cli-tooling-stub-practice.contract.test.ts +147 -0
- package/src/tooling/__tests__/default-cdd-adapter.contract.test.ts +73 -0
- package/src/tooling/__tests__/helpers/sonamu-test-root.ts +42 -0
- package/src/tooling/__tests__/test-run-client-config.contract.test.ts +154 -0
- package/src/tooling/cdd-service.ts +256 -0
- package/src/tooling/cli-tooling.ts +937 -0
- package/src/tooling/fixture-service.ts +72 -0
- package/src/tooling/index.ts +1 -0
- package/src/tooling/test-run-client.ts +196 -0
- package/src/utils/__tests__/formatter-bin.test.ts +99 -0
- package/src/utils/formatter.ts +74 -10
- package/tsdown.api.config.ts +8 -10
- package/bin/cli.js +0 -75
- package/dist/bin/cli.d.ts +0 -2
- package/dist/bin/cli.d.ts.map +0 -1
- package/dist/bin/cli.js +0 -956
- package/src/bin/cli.ts +0 -1166
|
@@ -31,59 +31,65 @@ var init_entity_manager = __esmMin((() => {
|
|
|
31
31
|
modulePaths = /* @__PURE__ */ new Map();
|
|
32
32
|
tableSpecs = /* @__PURE__ */ new Map();
|
|
33
33
|
isAutoloaded = false;
|
|
34
|
-
|
|
34
|
+
explicitApiRootPath;
|
|
35
|
+
async autoload(doSilent = false, explicitApiRootPath) {
|
|
35
36
|
if (this.isAutoloaded) return;
|
|
36
|
-
|
|
37
|
+
this.explicitApiRootPath = explicitApiRootPath;
|
|
38
|
+
const apiRootPath = explicitApiRootPath ?? Sonamu.apiRootPath;
|
|
39
|
+
const pathPattern = path.join(apiRootPath, "/src/application/**/*.entity.json");
|
|
37
40
|
for await (const file of glob(path.resolve(pathPattern))) {
|
|
38
41
|
const json = parseEntityJson((await readFile(file)).toString());
|
|
39
42
|
const error = this.schemaValidate(json);
|
|
40
43
|
if (error) {
|
|
41
|
-
const relativePath = path.relative(
|
|
44
|
+
const relativePath = path.relative(apiRootPath, file);
|
|
42
45
|
const errorMessage = prettifyError(error);
|
|
43
46
|
if (!doSilent) console.error(chalk.red(`Invalid entity.json schema: ${relativePath}\n${chalk.yellow(errorMessage)}`));
|
|
44
47
|
}
|
|
45
|
-
await this.register(json, {
|
|
48
|
+
await this.register(json, {
|
|
49
|
+
deferSearchTextJsonSourceValidation: true,
|
|
50
|
+
apiRootPath
|
|
51
|
+
});
|
|
46
52
|
}
|
|
47
|
-
await this.registerNonEntityTypeModulePaths();
|
|
48
|
-
await this.validateAllRegisteredSearchTextJsonSources();
|
|
53
|
+
await this.registerNonEntityTypeModulePaths(apiRootPath);
|
|
54
|
+
await this.validateAllRegisteredSearchTextJsonSources(apiRootPath);
|
|
49
55
|
this.isAutoloaded = true;
|
|
50
56
|
}
|
|
51
57
|
schemaValidate(json) {
|
|
52
58
|
const result = EntityJsonSchema.safeParse(json);
|
|
53
59
|
return result.success ? null : result.error;
|
|
54
60
|
}
|
|
55
|
-
async reload(doSilent = false) {
|
|
61
|
+
async reload(doSilent = false, explicitApiRootPath) {
|
|
56
62
|
this.entities.clear();
|
|
57
63
|
this.modulePaths.clear();
|
|
58
64
|
this.tableSpecs.clear();
|
|
59
65
|
this.isAutoloaded = false;
|
|
60
|
-
return await this.autoload(doSilent);
|
|
66
|
+
return await this.autoload(doSilent, explicitApiRootPath ?? this.explicitApiRootPath);
|
|
61
67
|
}
|
|
62
68
|
async register(json, options = {}) {
|
|
63
69
|
const { Entity } = await import("./entity.js");
|
|
64
70
|
const entity = new Entity(json);
|
|
65
|
-
await entity.registerModulePaths();
|
|
66
|
-
if (!options.deferSearchTextJsonSourceValidation) await this.validateSearchTextJsonSources(entity);
|
|
71
|
+
await entity.registerModulePaths(options.apiRootPath);
|
|
72
|
+
if (!options.deferSearchTextJsonSourceValidation) await this.validateSearchTextJsonSources(entity, options.apiRootPath);
|
|
67
73
|
entity.registerTableSpecs();
|
|
68
74
|
this.entities.set(json.id, entity);
|
|
69
75
|
}
|
|
70
|
-
async validateAllRegisteredSearchTextJsonSources() {
|
|
71
|
-
for (const entity of this.entities.values()) await this.validateSearchTextJsonSources(entity);
|
|
76
|
+
async validateAllRegisteredSearchTextJsonSources(apiRootPath) {
|
|
77
|
+
for (const entity of this.entities.values()) await this.validateSearchTextJsonSources(entity, apiRootPath);
|
|
72
78
|
}
|
|
73
|
-
async validateSearchTextJsonSources(entity) {
|
|
79
|
+
async validateSearchTextJsonSources(entity, apiRootPath) {
|
|
74
80
|
const propsByName = new Map(entity.props.map((prop) => [prop.name, prop]));
|
|
75
81
|
for (const prop of entity.props) {
|
|
76
82
|
if (!isSearchTextProp(prop)) continue;
|
|
77
83
|
for (const source of prop.sourceColumns) {
|
|
78
84
|
const sourceProp = propsByName.get(source.name);
|
|
79
85
|
if (!sourceProp || sourceProp.type !== "json") continue;
|
|
80
|
-
const zodType = await this.resolveSearchTextJsonSourceType(entity, sourceProp.id);
|
|
86
|
+
const zodType = await this.resolveSearchTextJsonSourceType(entity, sourceProp.id, apiRootPath);
|
|
81
87
|
if (!zodType) throw new Error(`searchText source "${source.name}"의 json 타입 "${sourceProp.id}"을(를) 로드할 수 없습니다.`);
|
|
82
88
|
if (!isSearchTextJsonSourceZodType(zodType)) throw new Error(`searchText source "${source.name}"의 json 타입 "${sourceProp.id}"은(는) unwrap 후 z.array(z.string()) 이어야 합니다.`);
|
|
83
89
|
}
|
|
84
90
|
}
|
|
85
91
|
}
|
|
86
|
-
async resolveSearchTextJsonSourceType(entity, typeId) {
|
|
92
|
+
async resolveSearchTextJsonSourceType(entity, typeId, explicitApiRootPath) {
|
|
87
93
|
const localType = entity.types[typeId];
|
|
88
94
|
if (localType instanceof z.ZodType) return localType;
|
|
89
95
|
for (const registeredEntity of this.entities.values()) {
|
|
@@ -94,7 +100,7 @@ var init_entity_manager = __esmMin((() => {
|
|
|
94
100
|
if (typeId === "SonamuFile[]") return SonamuFileArraySchema;
|
|
95
101
|
const modulePath = this.modulePaths.get(typeId);
|
|
96
102
|
if (!modulePath) return null;
|
|
97
|
-
const matched = (await importMembers(path.join(Sonamu.apiRootPath, runtimePath(`dist/application/${modulePath}.js`)))).find(({ name }) => name === typeId);
|
|
103
|
+
const matched = (await importMembers(path.join(explicitApiRootPath ?? Sonamu.apiRootPath, runtimePath(`dist/application/${modulePath}.js`)))).find(({ name }) => name === typeId);
|
|
98
104
|
if (!matched || !(matched.value instanceof z.ZodType)) return null;
|
|
99
105
|
return matched.value;
|
|
100
106
|
}
|
|
@@ -175,8 +181,8 @@ var init_entity_manager = __esmMin((() => {
|
|
|
175
181
|
assert(entityBaseName.length > 0, `EntityId를 계산할 수 없는 경로입니다: ${filePath}`);
|
|
176
182
|
return inflection.camelize(entityBaseName.replace(/-/g, "_"));
|
|
177
183
|
}
|
|
178
|
-
async registerNonEntityTypeModulePaths() {
|
|
179
|
-
const typePathsPatterns = [path.join(
|
|
184
|
+
async registerNonEntityTypeModulePaths(apiRootPath) {
|
|
185
|
+
const typePathsPatterns = [path.join(apiRootPath, runtimePath("src/application/**/*.types.ts")), path.join(apiRootPath, runtimePath("src/application/**/*.generated.ts"))];
|
|
180
186
|
const typePaths = (await Promise.all(typePathsPatterns.map((pattern) => globAsync(pattern)))).flat();
|
|
181
187
|
for (const filePath of typePaths) {
|
|
182
188
|
const modulePath = this.getModulePathFromTypeFilePath(filePath);
|
|
@@ -196,4 +202,4 @@ var init_entity_manager = __esmMin((() => {
|
|
|
196
202
|
init_entity_manager();
|
|
197
203
|
export { EntityManager, init_entity_manager };
|
|
198
204
|
|
|
199
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hbmFnZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9lbnRpdHktbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IGdsb2IsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgcHJldHRpZnlFcnJvciwgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7XG4gIEVudGl0eUpzb25TY2hlbWEsXG4gIGlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlLFxuICBpc1NlYXJjaFRleHRQcm9wLFxuICBTb25hbXVGaWxlQXJyYXlTY2hlbWEsXG4gIFNvbmFtdUZpbGVTY2hlbWEsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlJbmRleCwgdHlwZSBFbnRpdHlKc29uIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGltcG9ydE1lbWJlcnMgfSBmcm9tIFwiLi4vdXRpbHMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW50aW1lUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuL2VudGl0eVwiO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCA9IFJlY29yZDxcbiAgXCJmc1wiIHwgXCJmc1BsdXJhbFwiIHwgXCJjYW1lbFwiIHwgXCJjYW1lbFBsdXJhbFwiIHwgXCJjYXBpdGFsXCIgfCBcImNhcGl0YWxQbHVyYWxcIiB8IFwidXBwZXJcIiB8IFwiY29uc3RhbnRcIixcbiAgc3RyaW5nXG4+O1xuZXhwb3J0IHR5cGUgVGFibGVTcGVjID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVuaXF1ZUluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIGpzb25Db2x1bW5zOiBzdHJpbmdbXTtcbn07XG5cbmZ1bmN0aW9uIHBhcnNlRW50aXR5SnNvbihzb3VyY2U6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHNvdXJjZSk7XG4gIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgLy8gSlNPTiDtjIzshJwg6rOE7JW9IOuwluydmCDsmKTrpZjripQg6rWs66y4IOyYpOulmOuhnCDsoJXqt5ztmZTtlZjqs6Ag7JuQ7J247J2EIOuztOyhtO2VqeuLiOuLpC5cbiAgICBpZiAoIShjYXVzZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiZW50aXR5Lmpzb24g7YyM7IuxIOykkSDsmIjquLDsuZgg7JWK7J2AIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6QuXCIsIHsgY2F1c2UgfSk7XG4gICAgfVxuICAgIHRocm93IGNhdXNlO1xuICB9XG59XG5cbmNsYXNzIEVudGl0eU1hbmFnZXJDbGFzcyB7XG4gIHByaXZhdGUgZW50aXRpZXM6IE1hcDxzdHJpbmcsIEVudGl0eT4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBtb2R1bGVQYXRoczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB0YWJsZVNwZWNzOiBNYXA8c3RyaW5nLCBUYWJsZVNwZWM+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgaXNBdXRvbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8g6rK966GcIOyghOuLrOuwm+yVhCDrqqjrk6AgZW50aXR5Lmpzb24g7YyM7J28IOuhnOuTnFxuICBhc3luYyBhdXRvbG9hZChkb1NpbGVudDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMuaXNBdXRvbG9hZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhdGhQYXR0ZXJuID0gcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgXCIvc3JjL2FwcGxpY2F0aW9uLyoqLyouZW50aXR5Lmpzb25cIik7XG5cbiAgICBmb3IgYXdhaXQgKGNvbnN0IGZpbGUgb2YgZ2xvYihwYXRoLnJlc29sdmUocGF0aFBhdHRlcm4pKSkge1xuICAgICAgY29uc3QganNvbiA9IHBhcnNlRW50aXR5SnNvbigoYXdhaXQgcmVhZEZpbGUoZmlsZSkpLnRvU3RyaW5nKCkpO1xuXG4gICAgICAvLyBlbnRpdHkuanNvbiDsiqTtgqTrp4gg6rKA7KadXG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuc2NoZW1hVmFsaWRhdGUoanNvbik7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZShTb25hbXUuYXBpUm9vdFBhdGgsIGZpbGUpO1xuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBwcmV0dGlmeUVycm9yKGVycm9yKTtcbiAgICAgICAgaWYgKCFkb1NpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBjaGFsay5yZWQoYEludmFsaWQgZW50aXR5Lmpzb24gc2NoZW1hOiAke3JlbGF0aXZlUGF0aH1cXG4ke2NoYWxrLnllbGxvdyhlcnJvck1lc3NhZ2UpfWApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5yZWdpc3Rlcihqc29uLCB7IGRlZmVyU2VhcmNoVGV4dEpzb25Tb3VyY2VWYWxpZGF0aW9uOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoKTtcbiAgICBhd2FpdCB0aGlzLnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcygpO1xuXG4gICAgdGhpcy5pc0F1dG9sb2FkZWQgPSB0cnVlO1xuICB9XG5cbiAgc2NoZW1hVmFsaWRhdGU8VmFsdWU+KGpzb246IFZhbHVlKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gRW50aXR5SnNvblNjaGVtYS5zYWZlUGFyc2UoanNvbik7XG4gICAgcmV0dXJuIHJlc3VsdC5zdWNjZXNzID8gbnVsbCA6IHJlc3VsdC5lcnJvcjtcbiAgfVxuXG4gIGFzeW5jIHJlbG9hZChkb1NpbGVudDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgdGhpcy5lbnRpdGllcy5jbGVhcigpO1xuICAgIHRoaXMubW9kdWxlUGF0aHMuY2xlYXIoKTtcbiAgICB0aGlzLnRhYmxlU3BlY3MuY2xlYXIoKTtcbiAgICB0aGlzLmlzQXV0b2xvYWRlZCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYXV0b2xvYWQoZG9TaWxlbnQpO1xuICB9XG5cbiAgYXN5bmMgcmVnaXN0ZXIoXG4gICAganNvbjogRW50aXR5SnNvbixcbiAgICBvcHRpb25zOiB7IGRlZmVyU2VhcmNoVGV4dEpzb25Tb3VyY2VWYWxpZGF0aW9uPzogYm9vbGVhbiB9ID0ge30sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgRW50aXR5IH0gPSBhd2FpdCBpbXBvcnQoXCIuL2VudGl0eVwiKTtcbiAgICBjb25zdCBlbnRpdHkgPSBuZXcgRW50aXR5KGpzb24pO1xuICAgIGF3YWl0IGVudGl0eS5yZWdpc3Rlck1vZHVsZVBhdGhzKCk7XG4gICAgaWYgKCFvcHRpb25zLmRlZmVyU2VhcmNoVGV4dEpzb25Tb3VyY2VWYWxpZGF0aW9uKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eSk7XG4gICAgfVxuICAgIGVudGl0eS5yZWdpc3RlclRhYmxlU3BlY3MoKTtcbiAgICB0aGlzLmVudGl0aWVzLnNldChqc29uLmlkLCBlbnRpdHkpO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGVBbGxSZWdpc3RlcmVkU2VhcmNoVGV4dEpzb25Tb3VyY2VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgZW50aXR5IG9mIHRoaXMuZW50aXRpZXMudmFsdWVzKCkpIHtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVTZWFyY2hUZXh0SnNvblNvdXJjZXMoZW50aXR5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eTogRW50aXR5KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJvcHNCeU5hbWUgPSBuZXcgTWFwKGVudGl0eS5wcm9wcy5tYXAoKHByb3ApID0+IFtwcm9wLm5hbWUsIHByb3BdKSk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgZW50aXR5LnByb3BzKSB7XG4gICAgICBpZiAoIWlzU2VhcmNoVGV4dFByb3AocHJvcCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgc291cmNlIG9mIHByb3Auc291cmNlQ29sdW1ucykge1xuICAgICAgICBjb25zdCBzb3VyY2VQcm9wID0gcHJvcHNCeU5hbWUuZ2V0KHNvdXJjZS5uYW1lKTtcbiAgICAgICAgaWYgKCFzb3VyY2VQcm9wIHx8IHNvdXJjZVByb3AudHlwZSAhPT0gXCJqc29uXCIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHpvZFR5cGUgPSBhd2FpdCB0aGlzLnJlc29sdmVTZWFyY2hUZXh0SnNvblNvdXJjZVR5cGUoZW50aXR5LCBzb3VyY2VQcm9wLmlkKTtcbiAgICAgICAgaWYgKCF6b2RUeXBlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNlYXJjaFRleHQgc291cmNlIFwiJHtzb3VyY2UubmFtZX1cIuydmCBqc29uIO2DgOyehSBcIiR7c291cmNlUHJvcC5pZH1cIuydhCjrpbwpIOuhnOuTnO2VoCDsiJgg7JeG7Iq164uI64ukLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNTZWFyY2hUZXh0SnNvblNvdXJjZVpvZFR5cGUoem9kVHlwZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgc2VhcmNoVGV4dCBzb3VyY2UgXCIke3NvdXJjZS5uYW1lfVwi7J2YIGpzb24g7YOA7J6FIFwiJHtzb3VyY2VQcm9wLmlkfVwi7J2AKOuKlCkgdW53cmFwIO2bhCB6LmFycmF5KHouc3RyaW5nKCkpIOydtOyWtOyVvCDtlanri4jri6QuYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXNvbHZlU2VhcmNoVGV4dEpzb25Tb3VyY2VUeXBlKFxuICAgIGVudGl0eTogRW50aXR5LFxuICAgIHR5cGVJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHouWm9kVHlwZUFueSB8IG51bGw+IHtcbiAgICBjb25zdCBsb2NhbFR5cGUgPSBlbnRpdHkudHlwZXNbdHlwZUlkXTtcbiAgICBpZiAobG9jYWxUeXBlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSB7XG4gICAgICByZXR1cm4gbG9jYWxUeXBlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVnaXN0ZXJlZEVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCByZWdpc3RlcmVkVHlwZSA9IHJlZ2lzdGVyZWRFbnRpdHkudHlwZXNbdHlwZUlkXTtcbiAgICAgIGlmIChyZWdpc3RlcmVkVHlwZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZFR5cGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVJZCA9PT0gXCJTb25hbXVGaWxlXCIpIHtcbiAgICAgIHJldHVybiBTb25hbXVGaWxlU2NoZW1hO1xuICAgIH1cbiAgICBpZiAodHlwZUlkID09PSBcIlNvbmFtdUZpbGVbXVwiKSB7XG4gICAgICByZXR1cm4gU29uYW11RmlsZUFycmF5U2NoZW1hO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLm1vZHVsZVBhdGhzLmdldCh0eXBlSWQpO1xuICAgIGlmICghbW9kdWxlUGF0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kdWxlRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICBTb25hbXUuYXBpUm9vdFBhdGgsXG4gICAgICBydW50aW1lUGF0aChgZGlzdC9hcHBsaWNhdGlvbi8ke21vZHVsZVBhdGh9LmpzYCksXG4gICAgKTtcbiAgICBjb25zdCBpbXBvcnRlZE1lbWJlcnMgPSBhd2FpdCBpbXBvcnRNZW1iZXJzPHVua25vd24+KG1vZHVsZUZpbGVQYXRoKTtcbiAgICBjb25zdCBtYXRjaGVkID0gaW1wb3J0ZWRNZW1iZXJzLmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSB0eXBlSWQpO1xuICAgIGlmICghbWF0Y2hlZCB8fCAhKG1hdGNoZWQudmFsdWUgaW5zdGFuY2VvZiB6LlpvZFR5cGUpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlZC52YWx1ZTtcbiAgfVxuXG4gIGdldChlbnRpdHlJZDogc3RyaW5nKTogRW50aXR5IHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0aWVzLmdldChlbnRpdHlJZCk7XG4gICAgaWYgKGVudGl0eSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYOyhtOyerO2VmOyngCDslYrripQgRW50aXR5IOyalOyyrSAke2VudGl0eUlkfWApO1xuICAgIH1cblxuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICBnZXRCeVRhYmxlKHRhYmxlOiBzdHJpbmcpOiBFbnRpdHkge1xuICAgIGNvbnN0IGVudGl0eSA9IEFycmF5LmZyb20odGhpcy5lbnRpdGllcy52YWx1ZXMoKSkuZmluZChcbiAgICAgIChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS50YWJsZSA9PT0gdGFibGUsXG4gICAgKTtcbiAgICBpZiAoZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCBFbnRpdHkg7JqU7LKtICR7dGFibGV9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGV4aXN0cyhlbnRpdHlJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZW50aXR5ID0gdGhpcy5lbnRpdGllcy5nZXQoZW50aXR5SWQpO1xuICAgIHJldHVybiBlbnRpdHkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldEFsbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oRW50aXR5TWFuYWdlci5lbnRpdGllcy5rZXlzKCkpLnRvU29ydGVkKCk7XG4gIH1cblxuICBnZXRBbGxFbnRpdGllcygpOiBFbnRpdHlbXSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRpdGllcy52YWx1ZXMoKSk7XG4gIH1cblxuICBnZXRBbGxQYXJlbnRJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbElkcygpLmZpbHRlcigoZW50aXR5SWQpID0+IHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZ2V0KGVudGl0eUlkKTtcbiAgICAgIHJldHVybiBlbnRpdHkucGFyZW50SWQgPT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldENoaWxkcmVuSWRzKHBhcmVudElkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsSWRzKCkuZmlsdGVyKChlbnRpdHlJZCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5nZXQoZW50aXR5SWQpO1xuICAgICAgcmV0dXJuIGVudGl0eS5wYXJlbnRJZCA9PT0gcGFyZW50SWQ7XG4gICAgfSk7XG4gIH1cblxuICBzZXRNb2R1bGVQYXRoKGtleTogc3RyaW5nLCBtb2R1bGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBjb25zb2xlLmRlYnVnKGNoYWxrLmN5YW4oYHNldE1vZHVsZVBhdGggOjogJHtrZXl9IDo6ICR7bW9kdWxlUGF0aH1gKSk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5zZXQoa2V5LCBtb2R1bGVQYXRoKTtcbiAgfVxuXG4gIGdldE1vZHVsZVBhdGgoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLm1vZHVsZVBhdGhzLmdldChrZXkpO1xuICAgIGlmIChtb2R1bGVQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDrqqjrk4gg7Yyo7IqkIOyalOyyrSAke2tleX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kdWxlUGF0aDtcbiAgfVxuXG4gIHNldFRhYmxlU3BlYyh0YWJsZVNwZWM6IFRhYmxlU3BlYykge1xuICAgIHRoaXMudGFibGVTcGVjcy5zZXQodGFibGVTcGVjLm5hbWUsIHRhYmxlU3BlYyk7XG4gIH1cblxuICBnZXRUYWJsZVNwZWMoa2V5OiBzdHJpbmcpOiBUYWJsZVNwZWMge1xuICAgIGNvbnN0IHRhYmxlU3BlYyA9IHRoaXMudGFibGVTcGVjcy5nZXQoa2V5KTtcbiAgICBpZiAodGFibGVTcGVjID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCDthYzsnbTruJQg7Iqk7Y6ZIOyalOyyrSAke2tleX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVTcGVjO1xuICB9XG5cbiAgZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQ6IHN0cmluZykge1xuICAgIC8vIGVudGl0eUlk6rCAIOuLqOuzteyImCDrj5ntmJUg64uo7Ja07J24IOqyveyasCBMaXN0IOu2meyXrOyEnCDsg53shLFcbiAgICBjb25zdCBwbHVyYWxpemVkID1cbiAgICAgIGluZmxlY3Rpb24ucGx1cmFsaXplKGVudGl0eUlkKSA9PT0gZW50aXR5SWRcbiAgICAgICAgPyBgJHtlbnRpdHlJZH1MaXN0YFxuICAgICAgICA6IGluZmxlY3Rpb24ucGx1cmFsaXplKGVudGl0eUlkKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmczogaW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGZzUGx1cmFsOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUocGx1cmFsaXplZCkpLnRvTG93ZXJDYXNlKCksXG4gICAgICBjYW1lbDogaW5mbGVjdGlvbi5jYW1lbGl6ZShlbnRpdHlJZCwgdHJ1ZSksXG4gICAgICBjYW1lbFBsdXJhbDogaW5mbGVjdGlvbi5jYW1lbGl6ZShwbHVyYWxpemVkLCB0cnVlKSxcbiAgICAgIGNhcGl0YWw6IGVudGl0eUlkLFxuICAgICAgY2FwaXRhbFBsdXJhbDogcGx1cmFsaXplZCxcbiAgICAgIHVwcGVyOiBlbnRpdHlJZC50b1VwcGVyQ2FzZSgpLFxuICAgICAgY29uc3RhbnQ6IGluZmxlY3Rpb24udW5kZXJzY29yZShlbnRpdHlJZCkudG9VcHBlckNhc2UoKSxcbiAgICB9IHNhdGlzZmllcyBFbnRpdHlOYW1lc1JlY29yZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnRpdHlJZOuKlCBNb2RlbOydhCDsoJzsmbjtlZwgUGFzY2FsQ2FzZSDsnbTrpoTsnoXri4jri6QuIChleC4gXCJVc2VyXCIpXG4gICAqIEBwYXJhbSBmaWxlUGF0aFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0RW50aXR5SWRGcm9tUGF0aChmaWxlUGF0aDogQWJzb2x1dGVQYXRoKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaWxlTmFtZSA9IHBhdGguYmFzZW5hbWUoZmlsZVBhdGgpO1xuICAgIGNvbnN0IHN1cHBvcnRlZFN1ZmZpeGVzID0gW1wiLm1vZGVsLnRzXCIsIFwiLm1vZGVsLmpzXCIsIFwiLmVudGl0eS5qc29uXCIsIFwiLmZyYW1lLnRzXCIsIFwiLmZyYW1lLmpzXCJdO1xuICAgIGNvbnN0IG1hdGNoZWRTdWZmaXggPSBzdXBwb3J0ZWRTdWZmaXhlcy5maW5kKChzdWZmaXgpID0+IGZpbGVOYW1lLmVuZHNXaXRoKHN1ZmZpeCkpO1xuXG4gICAgYXNzZXJ0KG1hdGNoZWRTdWZmaXgsIGDsp4Dsm5DtlZjsp4Ag7JWK64qUIGVudGl0eSDqsr3roZzsnoXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG5cbiAgICBjb25zdCBlbnRpdHlCYXNlTmFtZSA9IGZpbGVOYW1lLnNsaWNlKDAsIC1tYXRjaGVkU3VmZml4Lmxlbmd0aCk7XG4gICAgYXNzZXJ0KGVudGl0eUJhc2VOYW1lLmxlbmd0aCA+IDAsIGBFbnRpdHlJZOulvCDqs4TsgrDtlaAg7IiYIOyXhuuKlCDqsr3roZzsnoXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG5cbiAgICByZXR1cm4gaW5mbGVjdGlvbi5jYW1lbGl6ZShlbnRpdHlCYXNlTmFtZS5yZXBsYWNlKC8tL2csIFwiX1wiKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlZ2lzdGVyTm9uRW50aXR5VHlwZU1vZHVsZVBhdGhzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHR5cGVQYXRoc1BhdHRlcm5zID0gW1xuICAgICAgcGF0aC5qb2luKFNvbmFtdS5hcGlSb290UGF0aCwgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi50eXBlcy50c1wiKSksXG4gICAgICBwYXRoLmpvaW4oU29uYW11LmFwaVJvb3RQYXRoLCBydW50aW1lUGF0aChcInNyYy9hcHBsaWNhdGlvbi8qKi8qLmdlbmVyYXRlZC50c1wiKSksXG4gICAgXTtcbiAgICBjb25zdCB0eXBlUGF0aHMgPSAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbCh0eXBlUGF0aHNQYXR0ZXJucy5tYXAoKHBhdHRlcm4pID0+IGdsb2JBc3luYyhwYXR0ZXJuKSkpXG4gICAgKS5mbGF0KCk7XG5cbiAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHR5cGVQYXRocykge1xuICAgICAgY29uc3QgbW9kdWxlUGF0aCA9IHRoaXMuZ2V0TW9kdWxlUGF0aEZyb21UeXBlRmlsZVBhdGgoZmlsZVBhdGgpO1xuICAgICAgY29uc3QgaW1wb3J0ZWRNZW1iZXJzID0gYXdhaXQgaW1wb3J0TWVtYmVyczx1bmtub3duPihmaWxlUGF0aCk7XG4gICAgICBmb3IgKGNvbnN0IHsgbmFtZSwgdmFsdWUgfSBvZiBpbXBvcnRlZE1lbWJlcnMpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSB7XG4gICAgICAgICAgdGhpcy5zZXRNb2R1bGVQYXRoKG5hbWUsIG1vZHVsZVBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2R1bGVQYXRoRnJvbVR5cGVGaWxlUGF0aChmaWxlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IGZpbGVQYXRoLnJlcGxhY2VBbGwoXCJcXFxcXCIsIFwiL1wiKTtcbiAgICBjb25zdCBtYXRjaGVkID0gbm9ybWFsaXplZFBhdGgubWF0Y2goL1xcLyg/OnNyY3xkaXN0KVxcL2FwcGxpY2F0aW9uXFwvKC4rKVxcLig/OnRzfGpzKSQvKTtcblxuICAgIGlmICghbWF0Y2hlZD8uWzFdKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYO2DgOyehSDtjIzsnbzsnZgg66qo65OIIOqyveuhnOulvCDqs4TsgrDtlaAg7IiYIOyXhuyKteuLiOuLpDogJHtmaWxlUGF0aH1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlZFsxXTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgRW50aXR5TWFuYWdlciA9IG5ldyBFbnRpdHlNYW5hZ2VyQ2xhc3MoKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWlDQSxTQUFTLGdCQUFnQixRQUFnQjtDQUN2QyxJQUFJO0VBQ0YsT0FBTyxLQUFLLE1BQU0sTUFBTTtDQUMxQixTQUFTLE9BQU87RUFFZCxJQUFJLEVBQUUsaUJBQWlCLGNBQ3JCLE1BQU0sSUFBSSxZQUFZLHVDQUF1QyxFQUFFLE1BQU0sQ0FBQztFQUV4RSxNQUFNO0NBQ1I7QUFDRjs7O2FBbkNzQztZQU9mO2tCQUV5QjtnQkFDRTtpQkFFRDtDQXlCM0MscUJBQU4sTUFBeUI7RUFDdkIsMkJBQXdDLElBQUksSUFBSTtFQUNoRCw4QkFBMEMsSUFBSSxJQUFJO0VBQ2xELDZCQUE2QyxJQUFJLElBQUk7RUFDckQsZUFBK0I7RUFHL0IsTUFBTSxTQUFTLFdBQW9CLE9BQU87R0FDeEMsSUFBSSxLQUFLLGNBQ1A7R0FFRixNQUFNLGNBQWMsS0FBSyxLQUFLLE9BQU8sYUFBYSxtQ0FBbUM7R0FFckYsV0FBVyxNQUFNLFFBQVEsS0FBSyxLQUFLLFFBQVEsV0FBVyxDQUFDLEdBQUc7SUFDeEQsTUFBTSxPQUFPLGlCQUFpQixNQUFNLFNBQVMsSUFBSSxFQUFBLENBQUcsU0FBUyxDQUFDO0lBRzlELE1BQU0sUUFBUSxLQUFLLGVBQWUsSUFBSTtJQUN0QyxJQUFJLE9BQU87S0FDVCxNQUFNLGVBQWUsS0FBSyxTQUFTLE9BQU8sYUFBYSxJQUFJO0tBQzNELE1BQU0sZUFBZSxjQUFjLEtBQUs7S0FDeEMsSUFBSSxDQUFDLFVBQ0gsUUFBUSxNQUNOLE1BQU0sSUFBSSwrQkFBK0IsYUFBYSxJQUFJLE1BQU0sT0FBTyxZQUFZLEdBQUcsQ0FDeEY7SUFFSjtJQUVBLE1BQU0sS0FBSyxTQUFTLE1BQU0sRUFBRSxxQ0FBcUMsS0FBSyxDQUFDO0dBQ3pFO0dBRUEsTUFBTSxLQUFLLGlDQUFpQztHQUM1QyxNQUFNLEtBQUssMkNBQTJDO0dBRXRELEtBQUssZUFBZTtFQUN0QjtFQUVBLGVBQXNCLE1BQWE7R0FDakMsTUFBTSxTQUFTLGlCQUFpQixVQUFVLElBQUk7R0FDOUMsT0FBTyxPQUFPLFVBQVUsT0FBTyxPQUFPO0VBQ3hDO0VBRUEsTUFBTSxPQUFPLFdBQW9CLE9BQU87R0FDdEMsS0FBSyxTQUFTLE1BQU07R0FDcEIsS0FBSyxZQUFZLE1BQU07R0FDdkIsS0FBSyxXQUFXLE1BQU07R0FDdEIsS0FBSyxlQUFlO0dBRXBCLE9BQU8sTUFBTSxLQUFLLFNBQVMsUUFBUTtFQUNyQztFQUVBLE1BQU0sU0FDSixNQUNBLFVBQTZELENBQUMsR0FDL0M7R0FDZixNQUFNLEVBQUUsV0FBVyxNQUFNLE9BQU87R0FDaEMsTUFBTSxTQUFTLElBQUksT0FBTyxJQUFJO0dBQzlCLE1BQU0sT0FBTyxvQkFBb0I7R0FDakMsSUFBSSxDQUFDLFFBQVEscUNBQ1gsTUFBTSxLQUFLLDhCQUE4QixNQUFNO0dBRWpELE9BQU8sbUJBQW1CO0dBQzFCLEtBQUssU0FBUyxJQUFJLEtBQUssSUFBSSxNQUFNO0VBQ25DO0VBRUEsTUFBTSw2Q0FBNEQ7R0FDaEUsS0FBSyxNQUFNLFVBQVUsS0FBSyxTQUFTLE9BQU8sR0FDeEMsTUFBTSxLQUFLLDhCQUE4QixNQUFNO0VBRW5EO0VBRUEsTUFBYyw4QkFBOEIsUUFBK0I7R0FDekUsTUFBTSxjQUFjLElBQUksSUFBSSxPQUFPLE1BQU0sS0FBSyxTQUFTLENBQUMsS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDO0dBRXpFLEtBQUssTUFBTSxRQUFRLE9BQU8sT0FBTztJQUMvQixJQUFJLENBQUMsaUJBQWlCLElBQUksR0FDeEI7SUFHRixLQUFLLE1BQU0sVUFBVSxLQUFLLGVBQWU7S0FDdkMsTUFBTSxhQUFhLFlBQVksSUFBSSxPQUFPLElBQUk7S0FDOUMsSUFBSSxDQUFDLGNBQWMsV0FBVyxTQUFTLFFBQ3JDO0tBR0YsTUFBTSxVQUFVLE1BQU0sS0FBSyxnQ0FBZ0MsUUFBUSxXQUFXLEVBQUU7S0FDaEYsSUFBSSxDQUFDLFNBQ0gsTUFBTSxJQUFJLE1BQ1Isc0JBQXNCLE9BQU8sS0FBSyxjQUFjLFdBQVcsR0FBRyxrQkFDaEU7S0FHRixJQUFJLENBQUMsOEJBQThCLE9BQU8sR0FDeEMsTUFBTSxJQUFJLE1BQ1Isc0JBQXNCLE9BQU8sS0FBSyxjQUFjLFdBQVcsR0FBRyw0Q0FDaEU7SUFFSjtHQUNGO0VBQ0Y7RUFFQSxNQUFjLGdDQUNaLFFBQ0EsUUFDOEI7R0FDOUIsTUFBTSxZQUFZLE9BQU8sTUFBTTtHQUMvQixJQUFJLHFCQUFxQixFQUFFLFNBQ3pCLE9BQU87R0FHVCxLQUFLLE1BQU0sb0JBQW9CLEtBQUssU0FBUyxPQUFPLEdBQUc7SUFDckQsTUFBTSxpQkFBaUIsaUJBQWlCLE1BQU07SUFDOUMsSUFBSSwwQkFBMEIsRUFBRSxTQUM5QixPQUFPO0dBRVg7R0FFQSxJQUFJLFdBQVcsY0FDYixPQUFPO0dBRVQsSUFBSSxXQUFXLGdCQUNiLE9BQU87R0FHVCxNQUFNLGFBQWEsS0FBSyxZQUFZLElBQUksTUFBTTtHQUM5QyxJQUFJLENBQUMsWUFDSCxPQUFPO0dBUVQsTUFBTSxXQUFVLE1BRGMsY0FKUCxLQUFLLEtBQzFCLE9BQU8sYUFDUCxZQUFZLG9CQUFvQixXQUFXLElBQUksQ0FFSSxDQUFjLEVBQ25ELENBQWdCLE1BQU0sRUFBRSxXQUFXLFNBQVMsTUFBTTtHQUNsRSxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsaUJBQWlCLEVBQUUsVUFDM0MsT0FBTztHQUdULE9BQU8sUUFBUTtFQUNqQjtFQUVBLElBQUksVUFBMEI7R0FDNUIsTUFBTSxTQUFTLEtBQUssU0FBUyxJQUFJLFFBQVE7R0FDekMsSUFBSSxXQUFXLFFBQ2IsTUFBTSxJQUFJLE1BQU0scUJBQXFCLFVBQVU7R0FHakQsT0FBTztFQUNUO0VBRUEsV0FBVyxPQUF1QjtHQUNoQyxNQUFNLFNBQVMsTUFBTSxLQUFLLEtBQUssU0FBUyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQy9DLGNBQWMsVUFBVSxVQUFVLEtBQ3JDO0dBQ0EsSUFBSSxXQUFXLFFBQ2IsTUFBTSxJQUFJLE1BQU0scUJBQXFCLE9BQU87R0FHOUMsT0FBTztFQUNUO0VBRUEsT0FBTyxVQUEyQjtHQUVoQyxPQURlLEtBQUssU0FBUyxJQUFJLFFBQzFCLE1BQVc7RUFDcEI7RUFFQSxZQUFzQjtHQUNwQixPQUFPLE1BQU0sS0FBSyxjQUFjLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTO0VBQzVEO0VBRUEsaUJBQTJCO0dBQ3pCLE9BQU8sTUFBTSxLQUFLLEtBQUssU0FBUyxPQUFPLENBQUM7RUFDMUM7RUFFQSxrQkFBNEI7R0FDMUIsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLFFBQVEsYUFBYTtJQUUzQyxPQURlLEtBQUssSUFBSSxRQUNqQixDQUFBLENBQU8sYUFBYTtHQUM3QixDQUFDO0VBQ0g7RUFFQSxlQUFlLFVBQTRCO0dBQ3pDLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxRQUFRLGFBQWE7SUFFM0MsT0FEZSxLQUFLLElBQUksUUFDakIsQ0FBQSxDQUFPLGFBQWE7R0FDN0IsQ0FBQztFQUNIO0VBRUEsY0FBYyxLQUFhLFlBQTBCO0dBRW5ELEtBQUssWUFBWSxJQUFJLEtBQUssVUFBVTtFQUN0QztFQUVBLGNBQWMsS0FBcUI7R0FDakMsTUFBTSxhQUFhLEtBQUssWUFBWSxJQUFJLEdBQUc7R0FDM0MsSUFBSSxlQUFlLFFBQ2pCLE1BQU0sSUFBSSxNQUFNLG9CQUFvQixLQUFLO0dBRzNDLE9BQU87RUFDVDtFQUVBLGFBQWEsV0FBc0I7R0FDakMsS0FBSyxXQUFXLElBQUksVUFBVSxNQUFNLFNBQVM7RUFDL0M7RUFFQSxhQUFhLEtBQXdCO0dBQ25DLE1BQU0sWUFBWSxLQUFLLFdBQVcsSUFBSSxHQUFHO0dBQ3pDLElBQUksY0FBYyxRQUNoQixNQUFNLElBQUksTUFBTSxxQkFBcUIsS0FBSztHQUc1QyxPQUFPO0VBQ1Q7RUFFQSxlQUFlLFVBQWtCO0dBRS9CLE1BQU0sYUFDSixXQUFXLFVBQVUsUUFBUSxNQUFNLFdBQy9CLEdBQUcsU0FBUyxRQUNaLFdBQVcsVUFBVSxRQUFRO0dBRW5DLE9BQU87SUFDTCxJQUFJLFdBQVcsVUFBVSxXQUFXLFdBQVcsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZO0lBQ3RFLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVk7SUFDOUUsT0FBTyxXQUFXLFNBQVMsVUFBVSxJQUFJO0lBQ3pDLGFBQWEsV0FBVyxTQUFTLFlBQVksSUFBSTtJQUNqRCxTQUFTO0lBQ1QsZUFBZTtJQUNmLE9BQU8sU0FBUyxZQUFZO0lBQzVCLFVBQVUsV0FBVyxXQUFXLFFBQVEsQ0FBQyxDQUFDLFlBQVk7R0FDeEQ7RUFDRjs7Ozs7O0VBT0Esb0JBQW9CLFVBQWdDO0dBQ2xELE1BQU0sV0FBVyxLQUFLLFNBQVMsUUFBUTtHQUV2QyxNQUFNLGdCQUFnQjtJQURLO0lBQWE7SUFBYTtJQUFnQjtJQUFhO0dBQzVELENBQUEsQ0FBa0IsTUFBTSxXQUFXLFNBQVMsU0FBUyxNQUFNLENBQUM7R0FFbEYsT0FBTyxlQUFlLHlCQUF5QixVQUFVO0dBRXpELE1BQU0saUJBQWlCLFNBQVMsTUFBTSxHQUFHLENBQUMsY0FBYyxNQUFNO0dBQzlELE9BQU8sZUFBZSxTQUFTLEdBQUcsNkJBQTZCLFVBQVU7R0FFekUsT0FBTyxXQUFXLFNBQVMsZUFBZSxRQUFRLE1BQU0sR0FBRyxDQUFDO0VBQzlEO0VBRUEsTUFBYyxtQ0FBa0Q7R0FDOUQsTUFBTSxvQkFBb0IsQ0FDeEIsS0FBSyxLQUFLLE9BQU8sYUFBYSxZQUFZLCtCQUErQixDQUFDLEdBQzFFLEtBQUssS0FBSyxPQUFPLGFBQWEsWUFBWSxtQ0FBbUMsQ0FBQyxDQUNoRjtHQUNBLE1BQU0sYUFDSixNQUFNLFFBQVEsSUFBSSxrQkFBa0IsS0FBSyxZQUFZLFVBQVUsT0FBTyxDQUFDLENBQUMsRUFBQSxDQUN4RSxLQUFLO0dBRVAsS0FBSyxNQUFNLFlBQVksV0FBVztJQUNoQyxNQUFNLGFBQWEsS0FBSyw4QkFBOEIsUUFBUTtJQUM5RCxNQUFNLGtCQUFrQixNQUFNLGNBQXVCLFFBQVE7SUFDN0QsS0FBSyxNQUFNLEVBQUUsTUFBTSxXQUFXLGlCQUM1QixJQUFJLGlCQUFpQixFQUFFLFNBQ3JCLEtBQUssY0FBYyxNQUFNLFVBQVU7R0FHekM7RUFDRjtFQUVBLDhCQUFzQyxVQUEwQjtHQUU5RCxNQUFNLFVBRGlCLFNBQVMsV0FBVyxNQUFNLEdBQ2pDLENBQUEsQ0FBZSxNQUFNLCtDQUErQztHQUVwRixJQUFJLENBQUMsVUFBVSxJQUNiLE1BQU0sSUFBSSxNQUFNLDZCQUE2QixVQUFVO0dBR3pELE9BQU8sUUFBUTtFQUNqQjtDQUNGO0NBRWEsZ0JBQWdCLElBQUksbUJBQW1CIn0=
|
|
205
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LW1hbmFnZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VudGl0eS9lbnRpdHktbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCB7IGdsb2IsIHJlYWRGaWxlIH0gZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgcHJldHRpZnlFcnJvciwgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7XG4gIEVudGl0eUpzb25TY2hlbWEsXG4gIGlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlLFxuICBpc1NlYXJjaFRleHRQcm9wLFxuICBTb25hbXVGaWxlQXJyYXlTY2hlbWEsXG4gIFNvbmFtdUZpbGVTY2hlbWEsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlJbmRleCwgdHlwZSBFbnRpdHlKc29uIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vdXRpbHMvYXN5bmMtdXRpbHNcIjtcbmltcG9ydCB7IGltcG9ydE1lbWJlcnMgfSBmcm9tIFwiLi4vdXRpbHMvZXNtLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEFic29sdXRlUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyBydW50aW1lUGF0aCB9IGZyb20gXCIuLi91dGlscy9wYXRoLXV0aWxzXCI7XG5pbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuL2VudGl0eVwiO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCA9IFJlY29yZDxcbiAgXCJmc1wiIHwgXCJmc1BsdXJhbFwiIHwgXCJjYW1lbFwiIHwgXCJjYW1lbFBsdXJhbFwiIHwgXCJjYXBpdGFsXCIgfCBcImNhcGl0YWxQbHVyYWxcIiB8IFwidXBwZXJcIiB8IFwiY29uc3RhbnRcIixcbiAgc3RyaW5nXG4+O1xuZXhwb3J0IHR5cGUgVGFibGVTcGVjID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHVuaXF1ZUluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIGpzb25Db2x1bW5zOiBzdHJpbmdbXTtcbn07XG5cbmZ1bmN0aW9uIHBhcnNlRW50aXR5SnNvbihzb3VyY2U6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHNvdXJjZSk7XG4gIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgLy8gSlNPTiDtjIzshJwg6rOE7JW9IOuwluydmCDsmKTrpZjripQg6rWs66y4IOyYpOulmOuhnCDsoJXqt5ztmZTtlZjqs6Ag7JuQ7J247J2EIOuztOyhtO2VqeuLiOuLpC5cbiAgICBpZiAoIShjYXVzZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSkge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiZW50aXR5Lmpzb24g7YyM7IuxIOykkSDsmIjquLDsuZgg7JWK7J2AIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6QuXCIsIHsgY2F1c2UgfSk7XG4gICAgfVxuICAgIHRocm93IGNhdXNlO1xuICB9XG59XG5cbmNsYXNzIEVudGl0eU1hbmFnZXJDbGFzcyB7XG4gIHByaXZhdGUgZW50aXRpZXM6IE1hcDxzdHJpbmcsIEVudGl0eT4gPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBtb2R1bGVQYXRoczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSB0YWJsZVNwZWNzOiBNYXA8c3RyaW5nLCBUYWJsZVNwZWM+ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgaXNBdXRvbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG4gIC8vIHJlbG9hZCgp6rCAIFNvbmFtdSDstIjquLDtmZQg7JeG7J2064+EIOqwmeydgCDro6jtirjrpbwg64uk7IucIOydveuPhOuhnSDrqoXsi5zsoIEgYXBpIHJvb3Trpbwg67O07KG07ZWp64uI64ukLlxuICBwcml2YXRlIGV4cGxpY2l0QXBpUm9vdFBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvLyDqsr3roZwg7KCE64us67Cb7JWEIOuqqOuToCBlbnRpdHkuanNvbiDtjIzsnbwg66Gc65OcXG4gIGFzeW5jIGF1dG9sb2FkKGRvU2lsZW50OiBib29sZWFuID0gZmFsc2UsIGV4cGxpY2l0QXBpUm9vdFBhdGg/OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5pc0F1dG9sb2FkZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5leHBsaWNpdEFwaVJvb3RQYXRoID0gZXhwbGljaXRBcGlSb290UGF0aDtcbiAgICBjb25zdCBhcGlSb290UGF0aCA9IGV4cGxpY2l0QXBpUm9vdFBhdGggPz8gU29uYW11LmFwaVJvb3RQYXRoO1xuICAgIGNvbnN0IHBhdGhQYXR0ZXJuID0gcGF0aC5qb2luKGFwaVJvb3RQYXRoLCBcIi9zcmMvYXBwbGljYXRpb24vKiovKi5lbnRpdHkuanNvblwiKTtcblxuICAgIGZvciBhd2FpdCAoY29uc3QgZmlsZSBvZiBnbG9iKHBhdGgucmVzb2x2ZShwYXRoUGF0dGVybikpKSB7XG4gICAgICBjb25zdCBqc29uID0gcGFyc2VFbnRpdHlKc29uKChhd2FpdCByZWFkRmlsZShmaWxlKSkudG9TdHJpbmcoKSk7XG5cbiAgICAgIC8vIGVudGl0eS5qc29uIOyKpO2CpOuniCDqsoDspp1cbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5zY2hlbWFWYWxpZGF0ZShqc29uKTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKGFwaVJvb3RQYXRoLCBmaWxlKTtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gcHJldHRpZnlFcnJvcihlcnJvcik7XG4gICAgICAgIGlmICghZG9TaWxlbnQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgY2hhbGsucmVkKGBJbnZhbGlkIGVudGl0eS5qc29uIHNjaGVtYTogJHtyZWxhdGl2ZVBhdGh9XFxuJHtjaGFsay55ZWxsb3coZXJyb3JNZXNzYWdlKX1gKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMucmVnaXN0ZXIoanNvbiwge1xuICAgICAgICBkZWZlclNlYXJjaFRleHRKc29uU291cmNlVmFsaWRhdGlvbjogdHJ1ZSxcbiAgICAgICAgYXBpUm9vdFBhdGgsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJlZ2lzdGVyTm9uRW50aXR5VHlwZU1vZHVsZVBhdGhzKGFwaVJvb3RQYXRoKTtcbiAgICBhd2FpdCB0aGlzLnZhbGlkYXRlQWxsUmVnaXN0ZXJlZFNlYXJjaFRleHRKc29uU291cmNlcyhhcGlSb290UGF0aCk7XG5cbiAgICB0aGlzLmlzQXV0b2xvYWRlZCA9IHRydWU7XG4gIH1cblxuICBzY2hlbWFWYWxpZGF0ZTxWYWx1ZT4oanNvbjogVmFsdWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSBFbnRpdHlKc29uU2NoZW1hLnNhZmVQYXJzZShqc29uKTtcbiAgICByZXR1cm4gcmVzdWx0LnN1Y2Nlc3MgPyBudWxsIDogcmVzdWx0LmVycm9yO1xuICB9XG5cbiAgYXN5bmMgcmVsb2FkKGRvU2lsZW50OiBib29sZWFuID0gZmFsc2UsIGV4cGxpY2l0QXBpUm9vdFBhdGg/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmVudGl0aWVzLmNsZWFyKCk7XG4gICAgdGhpcy5tb2R1bGVQYXRocy5jbGVhcigpO1xuICAgIHRoaXMudGFibGVTcGVjcy5jbGVhcigpO1xuICAgIHRoaXMuaXNBdXRvbG9hZGVkID0gZmFsc2U7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5hdXRvbG9hZChkb1NpbGVudCwgZXhwbGljaXRBcGlSb290UGF0aCA/PyB0aGlzLmV4cGxpY2l0QXBpUm9vdFBhdGgpO1xuICB9XG5cbiAgYXN5bmMgcmVnaXN0ZXIoXG4gICAganNvbjogRW50aXR5SnNvbixcbiAgICBvcHRpb25zOiB7IGRlZmVyU2VhcmNoVGV4dEpzb25Tb3VyY2VWYWxpZGF0aW9uPzogYm9vbGVhbjsgYXBpUm9vdFBhdGg/OiBzdHJpbmcgfSA9IHt9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IEVudGl0eSB9ID0gYXdhaXQgaW1wb3J0KFwiLi9lbnRpdHlcIik7XG4gICAgY29uc3QgZW50aXR5ID0gbmV3IEVudGl0eShqc29uKTtcbiAgICBhd2FpdCBlbnRpdHkucmVnaXN0ZXJNb2R1bGVQYXRocyhvcHRpb25zLmFwaVJvb3RQYXRoKTtcbiAgICBpZiAoIW9wdGlvbnMuZGVmZXJTZWFyY2hUZXh0SnNvblNvdXJjZVZhbGlkYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhdGVTZWFyY2hUZXh0SnNvblNvdXJjZXMoZW50aXR5LCBvcHRpb25zLmFwaVJvb3RQYXRoKTtcbiAgICB9XG4gICAgZW50aXR5LnJlZ2lzdGVyVGFibGVTcGVjcygpO1xuICAgIHRoaXMuZW50aXRpZXMuc2V0KGpzb24uaWQsIGVudGl0eSk7XG4gIH1cblxuICBhc3luYyB2YWxpZGF0ZUFsbFJlZ2lzdGVyZWRTZWFyY2hUZXh0SnNvblNvdXJjZXMoYXBpUm9vdFBhdGg/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlU2VhcmNoVGV4dEpzb25Tb3VyY2VzKGVudGl0eSwgYXBpUm9vdFBhdGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVTZWFyY2hUZXh0SnNvblNvdXJjZXMoZW50aXR5OiBFbnRpdHksIGFwaVJvb3RQYXRoPzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcHJvcHNCeU5hbWUgPSBuZXcgTWFwKGVudGl0eS5wcm9wcy5tYXAoKHByb3ApID0+IFtwcm9wLm5hbWUsIHByb3BdKSk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgZW50aXR5LnByb3BzKSB7XG4gICAgICBpZiAoIWlzU2VhcmNoVGV4dFByb3AocHJvcCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgc291cmNlIG9mIHByb3Auc291cmNlQ29sdW1ucykge1xuICAgICAgICBjb25zdCBzb3VyY2VQcm9wID0gcHJvcHNCeU5hbWUuZ2V0KHNvdXJjZS5uYW1lKTtcbiAgICAgICAgaWYgKCFzb3VyY2VQcm9wIHx8IHNvdXJjZVByb3AudHlwZSAhPT0gXCJqc29uXCIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHpvZFR5cGUgPSBhd2FpdCB0aGlzLnJlc29sdmVTZWFyY2hUZXh0SnNvblNvdXJjZVR5cGUoXG4gICAgICAgICAgZW50aXR5LFxuICAgICAgICAgIHNvdXJjZVByb3AuaWQsXG4gICAgICAgICAgYXBpUm9vdFBhdGgsXG4gICAgICAgICk7XG4gICAgICAgIGlmICghem9kVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBzZWFyY2hUZXh0IHNvdXJjZSBcIiR7c291cmNlLm5hbWV9XCLsnZgganNvbiDtg4DsnoUgXCIke3NvdXJjZVByb3AuaWR9XCLsnYQo66W8KSDroZzrk5ztlaAg7IiYIOyXhuyKteuLiOuLpC5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzU2VhcmNoVGV4dEpzb25Tb3VyY2Vab2RUeXBlKHpvZFR5cGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHNlYXJjaFRleHQgc291cmNlIFwiJHtzb3VyY2UubmFtZX1cIuydmCBqc29uIO2DgOyehSBcIiR7c291cmNlUHJvcC5pZH1cIuydgCjripQpIHVud3JhcCDtm4Qgei5hcnJheSh6LnN0cmluZygpKSDsnbTslrTslbwg7ZWp64uI64ukLmAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZVNlYXJjaFRleHRKc29uU291cmNlVHlwZShcbiAgICBlbnRpdHk6IEVudGl0eSxcbiAgICB0eXBlSWQ6IHN0cmluZyxcbiAgICBleHBsaWNpdEFwaVJvb3RQYXRoPzogc3RyaW5nLFxuICApOiBQcm9taXNlPHouWm9kVHlwZUFueSB8IG51bGw+IHtcbiAgICBjb25zdCBsb2NhbFR5cGUgPSBlbnRpdHkudHlwZXNbdHlwZUlkXTtcbiAgICBpZiAobG9jYWxUeXBlIGluc3RhbmNlb2Ygei5ab2RUeXBlKSB7XG4gICAgICByZXR1cm4gbG9jYWxUeXBlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgcmVnaXN0ZXJlZEVudGl0eSBvZiB0aGlzLmVudGl0aWVzLnZhbHVlcygpKSB7XG4gICAgICBjb25zdCByZWdpc3RlcmVkVHlwZSA9IHJlZ2lzdGVyZWRFbnRpdHkudHlwZXNbdHlwZUlkXTtcbiAgICAgIGlmIChyZWdpc3RlcmVkVHlwZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgICByZXR1cm4gcmVnaXN0ZXJlZFR5cGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVJZCA9PT0gXCJTb25hbXVGaWxlXCIpIHtcbiAgICAgIHJldHVybiBTb25hbXVGaWxlU2NoZW1hO1xuICAgIH1cbiAgICBpZiAodHlwZUlkID09PSBcIlNvbmFtdUZpbGVbXVwiKSB7XG4gICAgICByZXR1cm4gU29uYW11RmlsZUFycmF5U2NoZW1hO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLm1vZHVsZVBhdGhzLmdldCh0eXBlSWQpO1xuICAgIGlmICghbW9kdWxlUGF0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kdWxlRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICBleHBsaWNpdEFwaVJvb3RQYXRoID8/IFNvbmFtdS5hcGlSb290UGF0aCxcbiAgICAgIHJ1bnRpbWVQYXRoKGBkaXN0L2FwcGxpY2F0aW9uLyR7bW9kdWxlUGF0aH0uanNgKSxcbiAgICApO1xuICAgIGNvbnN0IGltcG9ydGVkTWVtYmVycyA9IGF3YWl0IGltcG9ydE1lbWJlcnM8dW5rbm93bj4obW9kdWxlRmlsZVBhdGgpO1xuICAgIGNvbnN0IG1hdGNoZWQgPSBpbXBvcnRlZE1lbWJlcnMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IHR5cGVJZCk7XG4gICAgaWYgKCFtYXRjaGVkIHx8ICEobWF0Y2hlZC52YWx1ZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGVkLnZhbHVlO1xuICB9XG5cbiAgZ2V0KGVudGl0eUlkOiBzdHJpbmcpOiBFbnRpdHkge1xuICAgIGNvbnN0IGVudGl0eSA9IHRoaXMuZW50aXRpZXMuZ2V0KGVudGl0eUlkKTtcbiAgICBpZiAoZW50aXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihg7KG07J6s7ZWY7KeAIOyViuuKlCBFbnRpdHkg7JqU7LKtICR7ZW50aXR5SWR9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGdldEJ5VGFibGUodGFibGU6IHN0cmluZyk6IEVudGl0eSB7XG4gICAgY29uc3QgZW50aXR5ID0gQXJyYXkuZnJvbSh0aGlzLmVudGl0aWVzLnZhbHVlcygpKS5maW5kKFxuICAgICAgKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLnRhYmxlID09PSB0YWJsZSxcbiAgICApO1xuICAgIGlmIChlbnRpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIEVudGl0eSDsmpTssq0gJHt0YWJsZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW50aXR5O1xuICB9XG5cbiAgZXhpc3RzKGVudGl0eUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmVudGl0aWVzLmdldChlbnRpdHlJZCk7XG4gICAgcmV0dXJuIGVudGl0eSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0QWxsSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShFbnRpdHlNYW5hZ2VyLmVudGl0aWVzLmtleXMoKSkudG9Tb3J0ZWQoKTtcbiAgfVxuXG4gIGdldEFsbEVudGl0aWVzKCk6IEVudGl0eVtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudGl0aWVzLnZhbHVlcygpKTtcbiAgfVxuXG4gIGdldEFsbFBhcmVudElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsSWRzKCkuZmlsdGVyKChlbnRpdHlJZCkgPT4ge1xuICAgICAgY29uc3QgZW50aXR5ID0gdGhpcy5nZXQoZW50aXR5SWQpO1xuICAgICAgcmV0dXJuIGVudGl0eS5wYXJlbnRJZCA9PT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q2hpbGRyZW5JZHMocGFyZW50SWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxJZHMoKS5maWx0ZXIoKGVudGl0eUlkKSA9PiB7XG4gICAgICBjb25zdCBlbnRpdHkgPSB0aGlzLmdldChlbnRpdHlJZCk7XG4gICAgICByZXR1cm4gZW50aXR5LnBhcmVudElkID09PSBwYXJlbnRJZDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldE1vZHVsZVBhdGgoa2V5OiBzdHJpbmcsIG1vZHVsZVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIGNvbnNvbGUuZGVidWcoY2hhbGsuY3lhbihgc2V0TW9kdWxlUGF0aCA6OiAke2tleX0gOjogJHttb2R1bGVQYXRofWApKTtcbiAgICB0aGlzLm1vZHVsZVBhdGhzLnNldChrZXksIG1vZHVsZVBhdGgpO1xuICB9XG5cbiAgZ2V0TW9kdWxlUGF0aChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9kdWxlUGF0aCA9IHRoaXMubW9kdWxlUGF0aHMuZ2V0KGtleSk7XG4gICAgaWYgKG1vZHVsZVBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIOuqqOuTiCDtjKjsiqQg7JqU7LKtICR7a2V5fWApO1xuICAgIH1cblxuICAgIHJldHVybiBtb2R1bGVQYXRoO1xuICB9XG5cbiAgc2V0VGFibGVTcGVjKHRhYmxlU3BlYzogVGFibGVTcGVjKSB7XG4gICAgdGhpcy50YWJsZVNwZWNzLnNldCh0YWJsZVNwZWMubmFtZSwgdGFibGVTcGVjKTtcbiAgfVxuXG4gIGdldFRhYmxlU3BlYyhrZXk6IHN0cmluZyk6IFRhYmxlU3BlYyB7XG4gICAgY29uc3QgdGFibGVTcGVjID0gdGhpcy50YWJsZVNwZWNzLmdldChrZXkpO1xuICAgIGlmICh0YWJsZVNwZWMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDsobTsnqztlZjsp4Ag7JWK64qUIO2FjOydtOu4lCDsiqTtjpkg7JqU7LKtICR7a2V5fWApO1xuICAgIH1cblxuICAgIHJldHVybiB0YWJsZVNwZWM7XG4gIH1cblxuICBnZXROYW1lc0Zyb21JZChlbnRpdHlJZDogc3RyaW5nKSB7XG4gICAgLy8gZW50aXR5SWTqsIAg64uo67O17IiYIOuPme2YlSDri6jslrTsnbgg6rK97JqwIExpc3Qg67aZ7Jes7IScIOyDneyEsVxuICAgIGNvbnN0IHBsdXJhbGl6ZWQgPVxuICAgICAgaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpID09PSBlbnRpdHlJZFxuICAgICAgICA/IGAke2VudGl0eUlkfUxpc3RgXG4gICAgICAgIDogaW5mbGVjdGlvbi5wbHVyYWxpemUoZW50aXR5SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZzOiBpbmZsZWN0aW9uLmRhc2hlcml6ZShpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZW50aXR5SWQpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgZnNQbHVyYWw6IGluZmxlY3Rpb24uZGFzaGVyaXplKGluZmxlY3Rpb24udW5kZXJzY29yZShwbHVyYWxpemVkKSkudG9Mb3dlckNhc2UoKSxcbiAgICAgIGNhbWVsOiBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eUlkLCB0cnVlKSxcbiAgICAgIGNhbWVsUGx1cmFsOiBpbmZsZWN0aW9uLmNhbWVsaXplKHBsdXJhbGl6ZWQsIHRydWUpLFxuICAgICAgY2FwaXRhbDogZW50aXR5SWQsXG4gICAgICBjYXBpdGFsUGx1cmFsOiBwbHVyYWxpemVkLFxuICAgICAgdXBwZXI6IGVudGl0eUlkLnRvVXBwZXJDYXNlKCksXG4gICAgICBjb25zdGFudDogaW5mbGVjdGlvbi51bmRlcnNjb3JlKGVudGl0eUlkKS50b1VwcGVyQ2FzZSgpLFxuICAgIH0gc2F0aXNmaWVzIEVudGl0eU5hbWVzUmVjb3JkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudGl0eUlk64qUIE1vZGVs7J2EIOygnOyZuO2VnCBQYXNjYWxDYXNlIOydtOumhOyeheuLiOuLpC4gKGV4LiBcIlVzZXJcIilcbiAgICogQHBhcmFtIGZpbGVQYXRoXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRFbnRpdHlJZEZyb21QYXRoKGZpbGVQYXRoOiBBYnNvbHV0ZVBhdGgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVOYW1lID0gcGF0aC5iYXNlbmFtZShmaWxlUGF0aCk7XG4gICAgY29uc3Qgc3VwcG9ydGVkU3VmZml4ZXMgPSBbXCIubW9kZWwudHNcIiwgXCIubW9kZWwuanNcIiwgXCIuZW50aXR5Lmpzb25cIiwgXCIuZnJhbWUudHNcIiwgXCIuZnJhbWUuanNcIl07XG4gICAgY29uc3QgbWF0Y2hlZFN1ZmZpeCA9IHN1cHBvcnRlZFN1ZmZpeGVzLmZpbmQoKHN1ZmZpeCkgPT4gZmlsZU5hbWUuZW5kc1dpdGgoc3VmZml4KSk7XG5cbiAgICBhc3NlcnQobWF0Y2hlZFN1ZmZpeCwgYOyngOybkO2VmOyngCDslYrripQgZW50aXR5IOqyveuhnOyeheuLiOuLpDogJHtmaWxlUGF0aH1gKTtcblxuICAgIGNvbnN0IGVudGl0eUJhc2VOYW1lID0gZmlsZU5hbWUuc2xpY2UoMCwgLW1hdGNoZWRTdWZmaXgubGVuZ3RoKTtcbiAgICBhc3NlcnQoZW50aXR5QmFzZU5hbWUubGVuZ3RoID4gMCwgYEVudGl0eUlk66W8IOqzhOyCsO2VoCDsiJgg7JeG64qUIOqyveuhnOyeheuLiOuLpDogJHtmaWxlUGF0aH1gKTtcblxuICAgIHJldHVybiBpbmZsZWN0aW9uLmNhbWVsaXplKGVudGl0eUJhc2VOYW1lLnJlcGxhY2UoLy0vZywgXCJfXCIpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVnaXN0ZXJOb25FbnRpdHlUeXBlTW9kdWxlUGF0aHMoYXBpUm9vdFBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHR5cGVQYXRoc1BhdHRlcm5zID0gW1xuICAgICAgcGF0aC5qb2luKGFwaVJvb3RQYXRoLCBydW50aW1lUGF0aChcInNyYy9hcHBsaWNhdGlvbi8qKi8qLnR5cGVzLnRzXCIpKSxcbiAgICAgIHBhdGguam9pbihhcGlSb290UGF0aCwgcnVudGltZVBhdGgoXCJzcmMvYXBwbGljYXRpb24vKiovKi5nZW5lcmF0ZWQudHNcIikpLFxuICAgIF07XG4gICAgY29uc3QgdHlwZVBhdGhzID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodHlwZVBhdGhzUGF0dGVybnMubWFwKChwYXR0ZXJuKSA9PiBnbG9iQXN5bmMocGF0dGVybikpKVxuICAgICkuZmxhdCgpO1xuXG4gICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiB0eXBlUGF0aHMpIHtcbiAgICAgIGNvbnN0IG1vZHVsZVBhdGggPSB0aGlzLmdldE1vZHVsZVBhdGhGcm9tVHlwZUZpbGVQYXRoKGZpbGVQYXRoKTtcbiAgICAgIGNvbnN0IGltcG9ydGVkTWVtYmVycyA9IGF3YWl0IGltcG9ydE1lbWJlcnM8dW5rbm93bj4oZmlsZVBhdGgpO1xuICAgICAgZm9yIChjb25zdCB7IG5hbWUsIHZhbHVlIH0gb2YgaW1wb3J0ZWRNZW1iZXJzKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIHouWm9kVHlwZSkge1xuICAgICAgICAgIHRoaXMuc2V0TW9kdWxlUGF0aChuYW1lLCBtb2R1bGVQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kdWxlUGF0aEZyb21UeXBlRmlsZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBmaWxlUGF0aC5yZXBsYWNlQWxsKFwiXFxcXFwiLCBcIi9cIik7XG4gICAgY29uc3QgbWF0Y2hlZCA9IG5vcm1hbGl6ZWRQYXRoLm1hdGNoKC9cXC8oPzpzcmN8ZGlzdClcXC9hcHBsaWNhdGlvblxcLyguKylcXC4oPzp0c3xqcykkLyk7XG5cbiAgICBpZiAoIW1hdGNoZWQ/LlsxXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGDtg4DsnoUg7YyM7J287J2YIOuqqOuTiCDqsr3roZzrpbwg6rOE7IKw7ZWgIOyImCDsl4bsirXri4jri6Q6ICR7ZmlsZVBhdGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hdGNoZWRbMV07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVudGl0eU1hbmFnZXIgPSBuZXcgRW50aXR5TWFuYWdlckNsYXNzKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFpQ0EsU0FBUyxnQkFBZ0IsUUFBZ0I7Q0FDdkMsSUFBSTtFQUNGLE9BQU8sS0FBSyxNQUFNLE1BQU07Q0FDMUIsU0FBUyxPQUFPO0VBRWQsSUFBSSxFQUFFLGlCQUFpQixjQUNyQixN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
|
|
@@ -20,7 +20,7 @@ export declare function generateTemplateCones(entity: EntityJson, locale?: "ko"
|
|
|
20
20
|
}[] | undefined;
|
|
21
21
|
fixtureParentOverrides?: Record<string, unknown> | undefined;
|
|
22
22
|
dataSource?: {
|
|
23
|
-
strategy: "file" | "
|
|
23
|
+
strategy: "file" | "ids" | "query" | "random" | "recent" | "sample";
|
|
24
24
|
config?: unknown;
|
|
25
25
|
} | undefined;
|
|
26
26
|
};
|
|
@@ -38,7 +38,7 @@ export declare function generateTemplateCones(entity: EntityJson, locale?: "ko"
|
|
|
38
38
|
}[] | undefined;
|
|
39
39
|
fixtureParentOverrides?: Record<string, unknown> | undefined;
|
|
40
40
|
dataSource?: {
|
|
41
|
-
strategy: "file" | "
|
|
41
|
+
strategy: "file" | "ids" | "query" | "random" | "recent" | "sample";
|
|
42
42
|
config?: unknown;
|
|
43
43
|
} | undefined;
|
|
44
44
|
}>;
|
|
@@ -56,7 +56,7 @@ export declare function generateTemplateCones(entity: EntityJson, locale?: "ko"
|
|
|
56
56
|
}[] | undefined;
|
|
57
57
|
fixtureParentOverrides?: Record<string, unknown> | undefined;
|
|
58
58
|
dataSource?: {
|
|
59
|
-
strategy: "file" | "
|
|
59
|
+
strategy: "file" | "ids" | "query" | "random" | "recent" | "sample";
|
|
60
60
|
config?: unknown;
|
|
61
61
|
} | undefined;
|
|
62
62
|
}>;
|
|
@@ -74,7 +74,7 @@ export declare function generateTemplateCones(entity: EntityJson, locale?: "ko"
|
|
|
74
74
|
}[] | undefined;
|
|
75
75
|
fixtureParentOverrides?: Record<string, unknown> | undefined;
|
|
76
76
|
dataSource?: {
|
|
77
|
-
strategy: "file" | "
|
|
77
|
+
strategy: "file" | "ids" | "query" | "random" | "recent" | "sample";
|
|
78
78
|
config?: unknown;
|
|
79
79
|
} | undefined;
|
|
80
80
|
}>;
|
package/dist/entity/entity.d.ts
CHANGED
|
@@ -113,7 +113,12 @@ export declare class Entity {
|
|
|
113
113
|
* → {name}_id 형태의 가상 integer prop으로 변환
|
|
114
114
|
*/
|
|
115
115
|
getFilterableProps(): EntityProp[];
|
|
116
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Entity가 노출하는 타입 이름과 모듈 경로를 EntityManager에 등록합니다.
|
|
118
|
+
*
|
|
119
|
+
* @param explicitApiRootPath - Sonamu 초기화 없이 등록할 때 사용할 API 루트 경로
|
|
120
|
+
*/
|
|
121
|
+
registerModulePaths(explicitApiRootPath?: string): Promise<void>;
|
|
117
122
|
registerTableSpecs(): void;
|
|
118
123
|
toJson(): EntityJson;
|
|
119
124
|
save(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/entity/entity.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,OAAO,EACL,KAAK,IAAI,EACT,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAWxB,qBAAa,MAAM;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;KAC3B,CAAC;IACF,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,eAAe,EAAE;QACf,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC;KAC9B,CAAM;IACP,KAAK,EAAE;QACL,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;KAC/D,CAAM;IACP,UAAU,EAAE;QACV,CAAC,MAAM,EAAE,MAAM,GAAG;YAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACvB,CAAC;KACH,CAAM;IACP,SAAS,EAAE;QACT,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAM;IACP,WAAW,EAAE;QACX,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAM;
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/entity/entity.ts"],"names":[],"mappings":"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"}
|