sonamu 0.7.53 → 0.8.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/api/config.d.ts +9 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +1 -1
- package/dist/api/sonamu.d.ts +21 -1
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +159 -65
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts +10 -0
- package/dist/auth/plugins/entity-definitions/anonymous.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/anonymous.js +23 -0
- package/dist/auth/plugins/entity-definitions/api-key.d.ts +9 -0
- package/dist/auth/plugins/entity-definitions/api-key.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/api-key.js +199 -0
- package/dist/auth/plugins/entity-definitions/index.d.ts +6 -0
- package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/index.js +20 -2
- package/dist/auth/plugins/entity-definitions/jwt.d.ts +9 -0
- package/dist/auth/plugins/entity-definitions/jwt.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/jwt.js +67 -0
- package/dist/auth/plugins/entity-definitions/organization.d.ts +9 -0
- package/dist/auth/plugins/entity-definitions/organization.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/organization.js +424 -0
- package/dist/auth/plugins/entity-definitions/passkey.d.ts +10 -0
- package/dist/auth/plugins/entity-definitions/passkey.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/passkey.js +129 -0
- package/dist/auth/plugins/entity-definitions/sso.d.ts +10 -0
- package/dist/auth/plugins/entity-definitions/sso.d.ts.map +1 -0
- package/dist/auth/plugins/entity-definitions/sso.js +110 -0
- package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
- package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/types.js +1 -1
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +2 -4
- package/dist/auth/plugins/wrappers/anonymous.d.ts +18 -0
- package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/anonymous.js +26 -0
- package/dist/auth/plugins/wrappers/api-key.d.ts +18 -0
- package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/api-key.js +38 -0
- package/dist/auth/plugins/wrappers/index.d.ts +6 -0
- package/dist/auth/plugins/wrappers/index.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/index.js +7 -1
- package/dist/auth/plugins/wrappers/jwt.d.ts +18 -0
- package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/jwt.js +30 -0
- package/dist/auth/plugins/wrappers/organization.d.ts +18 -0
- package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/organization.js +67 -0
- package/dist/auth/plugins/wrappers/passkey.d.ts +18 -0
- package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/passkey.js +32 -0
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +2 -4
- package/dist/auth/plugins/wrappers/sso.d.ts +853 -0
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -0
- package/dist/auth/plugins/wrappers/sso.js +36 -0
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +2 -4
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +2 -4
- package/dist/bin/build-config.d.ts +2 -2
- package/dist/bin/build-config.js +6 -7
- package/dist/bin/cli.js +417 -32
- package/dist/bin/fixture.d.ts +27 -0
- package/dist/bin/fixture.d.ts.map +1 -0
- package/dist/bin/fixture.js +245 -0
- package/dist/cache/decorator.d.ts +4 -3
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/decorator.js +5 -4
- package/dist/cone/cone-generator.d.ts +33 -0
- package/dist/cone/cone-generator.d.ts.map +1 -0
- package/dist/cone/cone-generator.js +286 -0
- package/dist/database/_batch_update.d.ts.map +1 -1
- package/dist/database/_batch_update.js +16 -2
- package/dist/database/puri-subset.test-d.js +1 -1
- package/dist/database/puri-subset.types.d.ts +1 -1
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-subset.types.js +1 -1
- package/dist/database/puri.d.ts +4 -0
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +20 -2
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +19 -3
- package/dist/dict/en.d.ts +15 -0
- package/dist/dict/en.d.ts.map +1 -1
- package/dist/dict/en.js +2 -1
- package/dist/dict/ko.d.ts +15 -0
- package/dist/dict/ko.d.ts.map +1 -1
- package/dist/dict/ko.js +2 -1
- package/dist/dict/rc-keys.d.ts +28 -0
- package/dist/dict/rc-keys.d.ts.map +1 -1
- package/dist/dict/rc-keys.js +31 -1
- package/dist/dict/sd.d.ts.map +1 -1
- package/dist/dict/sd.js +20 -4
- package/dist/entity/entity-manager.d.ts +298 -2
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +4 -1
- package/dist/entity/entity-template-cone.d.ts +14 -0
- package/dist/entity/entity-template-cone.d.ts.map +1 -0
- package/dist/entity/entity-template-cone.js +222 -0
- package/dist/entity/entity.d.ts +47 -2
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +161 -14
- package/dist/ssr/renderer.js +3 -3
- package/dist/syncer/api-parser.js +12 -1
- package/dist/syncer/checksum.d.ts +0 -14
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +1 -23
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +8 -2
- package/dist/syncer/syncer.d.ts +1 -1
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +17 -10
- package/dist/tasks/workflow-manager.d.ts +13 -1
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +18 -1
- package/dist/template/entity-converter.js +4 -4
- package/dist/template/helpers.d.ts +10 -0
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +48 -1
- package/dist/template/implementations/entry-server.template.d.ts +1 -1
- package/dist/template/implementations/entry-server.template.js +7 -2
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +5 -1
- package/dist/template/implementations/generated_http.template.d.ts +1 -0
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +6 -2
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +29 -8
- package/dist/template/implementations/queries.template.d.ts.map +1 -1
- package/dist/template/implementations/queries.template.js +9 -1
- package/dist/template/implementations/sd.template.d.ts +1 -1
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +28 -4
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +12 -12
- package/dist/template/implementations/view_form.template.d.ts +11 -7
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +97 -87
- package/dist/template/implementations/view_list.template.d.ts +3 -3
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +115 -109
- package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
- package/dist/template/implementations/view_search_input.template.js +18 -14
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +95 -7
- package/dist/testing/_relation-graph.js +1 -1
- package/dist/testing/data-explorer.d.ts +61 -0
- package/dist/testing/data-explorer.d.ts.map +1 -0
- package/dist/testing/data-explorer.js +274 -0
- package/dist/testing/faker-mappings.d.ts +20 -0
- package/dist/testing/faker-mappings.d.ts.map +1 -0
- package/dist/testing/faker-mappings.js +421 -0
- package/dist/testing/fixture-generator.d.ts +161 -0
- package/dist/testing/fixture-generator.d.ts.map +1 -0
- package/dist/testing/fixture-generator.js +954 -0
- package/dist/testing/fixture-manager.d.ts +6 -1
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +72 -4
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4 -1
- package/dist/types/types.d.ts +1520 -26
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +136 -22
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +9 -4
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +303 -24
- package/dist/ui-web/assets/index-CsUr-_pV.js +254 -0
- package/dist/ui-web/assets/index-T42zzs1K.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/fs-utils.d.ts +2 -1
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +14 -3
- package/package.json +19 -11
- package/src/api/config.ts +12 -1
- package/src/api/sonamu.ts +179 -65
- package/src/auth/plugins/entity-definitions/anonymous.ts +17 -0
- package/src/auth/plugins/entity-definitions/api-key.ts +93 -0
- package/src/auth/plugins/entity-definitions/index.ts +18 -0
- package/src/auth/plugins/entity-definitions/jwt.ts +35 -0
- package/src/auth/plugins/entity-definitions/organization.ts +215 -0
- package/src/auth/plugins/entity-definitions/passkey.ts +64 -0
- package/src/auth/plugins/entity-definitions/sso.ts +62 -0
- package/src/auth/plugins/entity-definitions/types.ts +11 -1
- package/src/auth/plugins/wrappers/admin.ts +1 -3
- package/src/auth/plugins/wrappers/anonymous.ts +30 -0
- package/src/auth/plugins/wrappers/api-key.ts +42 -0
- package/src/auth/plugins/wrappers/index.ts +6 -0
- package/src/auth/plugins/wrappers/jwt.ts +34 -0
- package/src/auth/plugins/wrappers/organization.ts +73 -0
- package/src/auth/plugins/wrappers/passkey.ts +36 -0
- package/src/auth/plugins/wrappers/phone-number.ts +1 -3
- package/src/auth/plugins/wrappers/sso.ts +40 -0
- package/src/auth/plugins/wrappers/two-factor.ts +1 -3
- package/src/auth/plugins/wrappers/username.ts +1 -3
- package/src/bin/build-config.ts +6 -6
- package/src/bin/cli.ts +452 -31
- package/src/bin/fixture.ts +302 -0
- package/src/cache/decorator.ts +4 -3
- package/src/cone/cone-generator.ts +363 -0
- package/src/database/_batch_update.ts +11 -0
- package/src/database/puri-subset.test-d.ts +13 -13
- package/src/database/puri-subset.types.ts +1 -1
- package/src/database/puri.ts +43 -1
- package/src/database/upsert-builder.ts +16 -2
- package/src/dict/en.ts +1 -0
- package/src/dict/ko.ts +1 -0
- package/src/dict/rc-keys.ts +32 -0
- package/src/dict/sd.ts +23 -3
- package/src/entity/entity-manager.ts +4 -0
- package/src/entity/entity-template-cone.ts +298 -0
- package/src/entity/entity.ts +189 -13
- package/src/shared/app.shared.ts.txt +5 -0
- package/src/shared/web.shared.ts.txt +9 -5
- package/src/skills/project/README.md +21 -0
- package/src/skills/project/architecture.md +373 -0
- package/src/skills/project/business-logic.md +270 -0
- package/src/skills/project/requirements.md +160 -0
- package/src/skills/sonamu/SKILL.md +168 -3
- package/src/skills/sonamu/api.md +102 -0
- package/src/skills/sonamu/database.md +220 -1
- package/src/skills/sonamu/entity-relations.md +89 -1
- package/src/skills/sonamu/fixture-cli.md +501 -0
- package/src/skills/sonamu/frontend.md +214 -0
- package/src/skills/sonamu/i18n.md +95 -0
- package/src/skills/sonamu/model.md +153 -0
- package/src/skills/sonamu/project-init.md +178 -8
- package/src/skills/sonamu/scaffolding.md +112 -0
- package/src/skills/sonamu/subset.md +9 -3
- package/src/skills/sonamu/testing.md +287 -2
- package/src/skills/sonamu/workflow.md +70 -5
- package/src/ssr/renderer.ts +2 -2
- package/src/syncer/api-parser.ts +12 -0
- package/src/syncer/checksum.ts +0 -38
- package/src/syncer/syncer-actions.ts +7 -1
- package/src/syncer/syncer.ts +16 -5
- package/src/tasks/workflow-manager.ts +29 -8
- package/src/template/entity-converter.ts +3 -3
- package/src/template/helpers.ts +49 -0
- package/src/template/implementations/entry-server.template.ts +1 -1
- package/src/template/implementations/generated.template.ts +4 -0
- package/src/template/implementations/generated_http.template.ts +1 -0
- package/src/template/implementations/generated_sso.template.ts +40 -11
- package/src/template/implementations/queries.template.ts +8 -0
- package/src/template/implementations/sd.template.ts +22 -3
- package/src/template/implementations/services.template.ts +11 -10
- package/src/template/implementations/view_form.template.ts +111 -101
- package/src/template/implementations/view_list.template.ts +120 -119
- package/src/template/implementations/view_search_input.template.ts +17 -13
- package/src/template/zod-converter.ts +103 -6
- package/src/testing/_relation-graph.ts +1 -1
- package/src/testing/data-explorer.ts +427 -0
- package/src/testing/faker-mappings.ts +434 -0
- package/src/testing/fixture-generator.ts +1166 -0
- package/src/testing/fixture-manager.ts +91 -6
- package/src/testing/index.ts +3 -0
- package/src/types/types.ts +222 -26
- package/src/ui/ai-client.ts +9 -1
- package/src/ui/api.ts +429 -23
- package/src/utils/fs-utils.ts +14 -1
- package/dist/template/implementations/view_enums_select.template.d.ts +0 -17
- package/dist/template/implementations/view_enums_select.template.d.ts.map +0 -1
- package/dist/template/implementations/view_enums_select.template.js +0 -62
- package/dist/template/implementations/view_id_async_select.template.d.ts +0 -17
- package/dist/template/implementations/view_id_async_select.template.d.ts.map +0 -1
- package/dist/template/implementations/view_id_async_select.template.js +0 -125
- package/dist/ui-web/assets/index-Bd_2AkLb.css +0 -1
- package/dist/ui-web/assets/index-BpSbhQWo.js +0 -225
- package/src/template/implementations/view_enums_select.template.ts +0 -65
- package/src/template/implementations/view_id_async_select.template.ts +0 -139
|
@@ -125,6 +125,10 @@ export class Template__generated_sso extends Template {
|
|
|
125
125
|
].filter(Boolean).join(", ");
|
|
126
126
|
// customHeaders 구성
|
|
127
127
|
const customHeaders = [
|
|
128
|
+
"/**",
|
|
129
|
+
" * @generated",
|
|
130
|
+
" * 직접 수정하지 마세요.",
|
|
131
|
+
" */",
|
|
128
132
|
`import { ${sonamuImports} } from "sonamu";`
|
|
129
133
|
];
|
|
130
134
|
if (this.hasAuthConfig()) {
|
|
@@ -148,11 +152,14 @@ export class Template__generated_sso extends Template {
|
|
|
148
152
|
const entitySchemaLines = entities.map((entity)=>`${entity.table}: ${entity.id}BaseSchema;`);
|
|
149
153
|
const joinTables = unique(entities.flatMap((entity)=>entity.props.filter(isManyToManyRelationProp).map((prop)=>{
|
|
150
154
|
const fromTableKey = inflection.singularize(entity.table);
|
|
151
|
-
const
|
|
155
|
+
const toEntity = EntityManager.get(prop.with);
|
|
156
|
+
const toTableKey = inflection.singularize(toEntity.table);
|
|
152
157
|
return {
|
|
153
158
|
table: prop.joinTable,
|
|
154
159
|
fromTableKey,
|
|
155
|
-
toTableKey
|
|
160
|
+
toTableKey,
|
|
161
|
+
fromEntityId: entity.id,
|
|
162
|
+
toEntityId: toEntity.id
|
|
156
163
|
};
|
|
157
164
|
})), (joinTable)=>joinTable.table);
|
|
158
165
|
// DatabaseForeignKeys - FK 컬럼을 가진 테이블만 정의
|
|
@@ -169,7 +176,13 @@ export class Template__generated_sso extends Template {
|
|
|
169
176
|
`declare module "sonamu" {`,
|
|
170
177
|
` export interface DatabaseSchemaExtend {`,
|
|
171
178
|
...entitySchemaLines,
|
|
172
|
-
...joinTables.map((joinTable)
|
|
179
|
+
...joinTables.map((joinTable)=>{
|
|
180
|
+
const fromEntity = EntityManager.get(joinTable.fromEntityId);
|
|
181
|
+
const toEntity = EntityManager.get(joinTable.toEntityId);
|
|
182
|
+
const fromPkType = fromEntity.getPkType() === "integer" ? "number" : "string";
|
|
183
|
+
const toPkType = toEntity.getPkType() === "integer" ? "number" : "string";
|
|
184
|
+
return `${joinTable.table}: ManyToManyBaseSchema<"${joinTable.fromTableKey}", "${joinTable.toTableKey}", ${fromPkType}, ${toPkType}>;`;
|
|
185
|
+
}),
|
|
173
186
|
` }`,
|
|
174
187
|
``,
|
|
175
188
|
` export interface DatabaseForeignKeys {`,
|
|
@@ -233,12 +246,20 @@ export class Template__generated_sso extends Template {
|
|
|
233
246
|
importKeys: []
|
|
234
247
|
};
|
|
235
248
|
}
|
|
249
|
+
const importKeys = [];
|
|
236
250
|
// additionalFields를 TypeScript 타입으로 변환
|
|
237
251
|
const fieldLines = Object.entries(additionalFields).map(([key, value])=>{
|
|
238
252
|
// biome-ignore lint/suspicious/noExplicitAny: better-auth additionalFields 구조
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
253
|
+
const fieldConfig = value;
|
|
254
|
+
const isRequired = fieldConfig.required !== false;
|
|
255
|
+
let fieldType;
|
|
256
|
+
// sonamuType이 있으면 description을 타입명으로 사용
|
|
257
|
+
if (fieldConfig.sonamuType) {
|
|
258
|
+
fieldType = fieldConfig.sonamuType;
|
|
259
|
+
importKeys.push(fieldType);
|
|
260
|
+
} else {
|
|
261
|
+
fieldType = mapBetterAuthFieldType(fieldConfig.type);
|
|
262
|
+
}
|
|
242
263
|
return ` ${key}${isRequired ? "" : "?"}: ${fieldType};`;
|
|
243
264
|
});
|
|
244
265
|
return {
|
|
@@ -248,7 +269,7 @@ export class Template__generated_sso extends Template {
|
|
|
248
269
|
...fieldLines,
|
|
249
270
|
"};"
|
|
250
271
|
],
|
|
251
|
-
importKeys
|
|
272
|
+
importKeys
|
|
252
273
|
};
|
|
253
274
|
}
|
|
254
275
|
/**
|
|
@@ -258,4 +279,4 @@ export class Template__generated_sso extends Template {
|
|
|
258
279
|
}
|
|
259
280
|
}
|
|
260
281
|
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX3Nzby50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHkgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc01hbnlUb01hbnlSZWxhdGlvblByb3AsXG4gIGlzT25lVG9PbmVSZWxhdGlvblByb3AsXG59IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIHsgU291cmNlQ29kZSB9IGZyb20gXCIuL2dlbmVyYXRlZC50ZW1wbGF0ZVwiO1xuXG4vKipcbiAqIGJldHRlci1hdXRoIGFkZGl0aW9uYWxGaWVsZHPsnZggdHlwZSDqsJLsnYQgVHlwZVNjcmlwdCDtg4DsnoUg66y47J6Q7Je066GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gbWFwQmV0dGVyQXV0aEZpZWxkVHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJcIjtcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgcmV0dXJuIFwiYm9vbGVhblwiO1xuICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICByZXR1cm4gXCJEYXRlXCI7XG4gICAgY2FzZSBcInN0cmluZ1tdXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdbXVwiO1xuICAgIGNhc2UgXCJudW1iZXJbXVwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyW11cIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX3NzbyBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJnZW5lcmF0ZWRfc3NvXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgc29uYW11LmdlbmVyYXRlZC5zc28udHNgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgZW50aXR5SWRzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcbiAgICBjb25zdCBlbnRpdGllcyA9IGVudGl0eUlkcy5tYXAoKGlkKSA9PiBFbnRpdHlNYW5hZ2VyLmdldChpZCkpO1xuXG4gICAgLy8gU3Vic2V0UXVlcmllcyDsg53shLEg64yA7IOBOiDrtoDrqqgg7JeU7Yuw7Yuw6rCAIOyXhuqzoCDshJzruIzshYvsnbQg7KG07J6sXG4gICAgY29uc3QgdGFyZ2V0RW50aXRpZXMgPSBlbnRpdGllcy5maWx0ZXIoXG4gICAgICAoZW50aXR5KSA9PiBlbnRpdHkucGFyZW50SWQgPT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyhlbnRpdHkuc3Vic2V0cykubGVuZ3RoID4gMCxcbiAgICApO1xuXG4gICAgLy8gU3Vic2V0UXVlcmllcyDsg53shLFcbiAgICBjb25zdCBzb3VyY2VDb2RlczogU291cmNlQ29kZVtdID0gdGFyZ2V0RW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PiB7XG4gICAgICBjb25zdCBzdWJzZXRLZXlzID0gT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpO1xuXG4gICAgICBjb25zdCBzdWJzZXRLZXlUeXBlTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5YDtcbiAgICAgIGNvbnN0IGVudGl0eUNhbWVsTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoZW50aXR5LmlkLCB0cnVlKTtcblxuICAgICAgLy8gUHVyaSDquLDrsJggU3Vic2V0UXVlcnlcbiAgICAgIGNvbnN0IHB1cmlTdWJzZXRRdWVyeTogU291cmNlQ29kZSA9IHtcbiAgICAgICAgbGFiZWw6IGBTdWJzZXRRdWVyeTogJHtlbnRpdHkuaWR9YCxcbiAgICAgICAgbGluZXM6IFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7ZW50aXR5Q2FtZWxOYW1lfVN1YnNldFF1ZXJpZXMgPSB7YCxcbiAgICAgICAgICAuLi5zdWJzZXRLZXlzLm1hcChcbiAgICAgICAgICAgIChzdWJzZXRLZXkpID0+IGAke3N1YnNldEtleX06IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgICAgICAgICAgJHtlbnRpdHkuZ2V0UHVyaVN1YnNldFF1ZXJ5KHN1YnNldEtleSl9O1xuICAgICAgICAgIH0sYCxcbiAgICAgICAgICApLFxuICAgICAgICAgIGB9O2AsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9O1xuXG4gICAgICAvLyBQdXJpIOq4sOuwmCBTdWJzZXRMb2FkZXJzUXVlcnlcbiAgICAgIGNvbnN0IHB1cmlMb2FkZXJRdWVyeTogU291cmNlQ29kZSA9IHtcbiAgICAgICAgbGFiZWw6IGBMb2FkZXJRdWVyeTogJHtlbnRpdHkuaWR9YCxcbiAgICAgICAgbGluZXM6IFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7ZW50aXR5Q2FtZWxOYW1lfUxvYWRlclF1ZXJpZXMgPSB7YCxcbiAgICAgICAgICAuLi5zdWJzZXRLZXlzLm1hcCgoc3Vic2V0S2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7c3Vic2V0S2V5fTogJHtlbnRpdHkuZ2V0UHVyaUxvYWRlclF1ZXJ5KHN1YnNldEtleSl9LGA7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgYH0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPCR7c3Vic2V0S2V5VHlwZU5hbWV9PjtgLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGltcG9ydEtleXM6IFtzdWJzZXRLZXlUeXBlTmFtZV0sXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gW3B1cmlTdWJzZXRRdWVyeSwgcHVyaUxvYWRlclF1ZXJ5XTtcbiAgICB9KTtcblxuICAgIC8vIEZvcmVpZ25LZXkg7YOA7J6FIOyDneyEsVxuICAgIGNvbnN0IGZrVHlwZVNvdXJjZUNvZGUgPSB0aGlzLmdldEZvcmVpZ25LZXlUeXBlU291cmNlQ29kZShlbnRpdGllcyk7XG4gICAgaWYgKGZrVHlwZVNvdXJjZUNvZGUpIHtcbiAgICAgIHNvdXJjZUNvZGVzLnB1c2goZmtUeXBlU291cmNlQ29kZSk7XG4gICAgfVxuXG4gICAgLy8gRGF0YWJhc2VTY2hlbWEg7IOd7ISxXG4gICAgY29uc3QgZGJTY2hlbWFTb3VyY2VDb2RlID0gdGhpcy5nZXREYXRhYmFzZVNjaGVtYVNvdXJjZUNvZGUoZW50aXRpZXMpO1xuICAgIGlmIChkYlNjaGVtYVNvdXJjZUNvZGUpIHtcbiAgICAgIHNvdXJjZUNvZGVzLnB1c2goZGJTY2hlbWFTb3VyY2VDb2RlKTtcbiAgICB9XG5cbiAgICAvLyBBdXRoIFVzZXIg7YOA7J6FIOyDneyEsVxuICAgIGNvbnN0IGF1dGhVc2VyVHlwZVNvdXJjZUNvZGUgPSB0aGlzLmdldEF1dGhVc2VyVHlwZVNvdXJjZUNvZGUoKTtcbiAgICBpZiAoYXV0aFVzZXJUeXBlU291cmNlQ29kZSkge1xuICAgICAgc291cmNlQ29kZXMucHVzaChhdXRoVXNlclR5cGVTb3VyY2VDb2RlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VDb2RlID0gc291cmNlQ29kZXMucmVkdWNlKFxuICAgICAgKHJlc3VsdCwgdHMpID0+IHtcbiAgICAgICAgaWYgKHRzID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBhc3NlcnQocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lczogWy4uLnJlc3VsdC5saW5lcywgYC8vICR7dHMubGFiZWx9YCwgLi4udHMubGluZXMsIFwiXCJdLFxuICAgICAgICAgIGltcG9ydEtleXM6IHVuaXF1ZShbLi4ucmVzdWx0LmltcG9ydEtleXMsIC4uLnRzLmltcG9ydEtleXNdKSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxpbmVzOiBbXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9IGFzIE9taXQ8U291cmNlQ29kZSwgXCJsYWJlbFwiPixcbiAgICApO1xuXG4gICAgY29uc3QgYm9keSA9IHNvdXJjZUNvZGUubGluZXMuam9pbihcIlxcblwiKTtcbiAgICBjb25zdCBpc1VzaW5nTWFueVRvTWFueUJhc2VTY2hlbWEgPSBib2R5LmluY2x1ZGVzKFwiTWFueVRvTWFueUJhc2VTY2hlbWFcIik7XG5cbiAgICBjb25zdCBzb25hbXVJbXBvcnRzID0gW1xuICAgICAgXCJQdXJpV3JhcHBlclwiLFxuICAgICAgXCJEYXRhYmFzZVNjaGVtYUV4dGVuZFwiLFxuICAgICAgXCJQdXJpTG9hZGVyUXVlcmllc1wiLFxuICAgICAgaXNVc2luZ01hbnlUb01hbnlCYXNlU2NoZW1hID8gXCJNYW55VG9NYW55QmFzZVNjaGVtYVwiIDogXCJcIixcbiAgICBdXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbihcIiwgXCIpO1xuXG4gICAgLy8gY3VzdG9tSGVhZGVycyDqtazshLFcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzID0gW2BpbXBvcnQgeyAke3NvbmFtdUltcG9ydHN9IH0gZnJvbSBcInNvbmFtdVwiO2BdO1xuICAgIGlmICh0aGlzLmhhc0F1dGhDb25maWcoKSkge1xuICAgICAgY3VzdG9tSGVhZGVycy5wdXNoKGBpbXBvcnQgdHlwZSB7IFVzZXIgfSBmcm9tIFwiYmV0dGVyLWF1dGhcIjtgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBzb3VyY2VDb2RlLmxpbmVzLmpvaW4oXCJcXG5cIiksXG4gICAgICBpbXBvcnRLZXlzOiBzb3VyY2VDb2RlLmltcG9ydEtleXMsXG4gICAgICBjdXN0b21IZWFkZXJzLFxuICAgIH07XG4gIH1cblxuICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIHByaXZhdGUgSGVscGVyIE1ldGhvZHNcbiAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICBwcml2YXRlIGdldERhdGFiYXNlU2NoZW1hU291cmNlQ29kZShlbnRpdGllczogRW50aXR5W10pOiBTb3VyY2VDb2RlIHwgbnVsbCB7XG4gICAgaWYgKGVudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gRGF0YWJhc2VTY2hlbWFFeHRlbmQgLSDthYzsnbTruJQg7Iqk7YKk66eIIO2DgOyehSDsoJXsnZhcbiAgICBjb25zdCBlbnRpdHlTY2hlbWFMaW5lcyA9IGVudGl0aWVzLm1hcCgoZW50aXR5KSA9PiBgJHtlbnRpdHkudGFibGV9OiAke2VudGl0eS5pZH1CYXNlU2NoZW1hO2ApO1xuXG4gICAgY29uc3Qgam9pblRhYmxlcyA9IHVuaXF1ZShcbiAgICAgIGVudGl0aWVzLmZsYXRNYXAoKGVudGl0eSkgPT5cbiAgICAgICAgZW50aXR5LnByb3BzLmZpbHRlcihpc01hbnlUb01hbnlSZWxhdGlvblByb3ApLm1hcCgocHJvcCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZyb21UYWJsZUtleSA9IGluZmxlY3Rpb24uc2luZ3VsYXJpemUoZW50aXR5LnRhYmxlKTtcbiAgICAgICAgICBjb25zdCB0b1RhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZShFbnRpdHlNYW5hZ2VyLmdldChwcm9wLndpdGgpLnRhYmxlKTtcbiAgICAgICAgICByZXR1cm4geyB0YWJsZTogcHJvcC5qb2luVGFibGUsIGZyb21UYWJsZUtleSwgdG9UYWJsZUtleSB9O1xuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgICAoam9pblRhYmxlKSA9PiBqb2luVGFibGUudGFibGUsXG4gICAgKTtcblxuICAgIC8vIERhdGFiYXNlRm9yZWlnbktleXMgLSBGSyDsu6zrn7zsnYQg6rCA7KeEIO2FjOydtOu4lOunjCDsoJXsnZhcbiAgICBjb25zdCBlbnRpdGllc1dpdGhGayA9IGVudGl0aWVzLmZpbHRlcihcbiAgICAgIChlbnRpdHkpID0+IHRoaXMuZ2V0Rm9yZWlnbktleUNvbHVtbnMoZW50aXR5KS5sZW5ndGggPiAwLFxuICAgICk7XG4gICAgY29uc3QgZmtNZXRhZGF0YUxpbmVzID0gZW50aXRpZXNXaXRoRmsubWFwKFxuICAgICAgKGVudGl0eSkgPT4gYCR7ZW50aXR5LnRhYmxlfTogJHtlbnRpdHkuaWR9Rm9yZWlnbktleXM7YCxcbiAgICApO1xuXG4gICAgLy8gQ29udGV4dEV4dGVuZCAtIGF1dGgg7ISk7KCV7J20IOyeiOydhCDrlYzrp4wgdXNlciDtg4DsnoUg7LaU6rCAXG4gICAgY29uc3QgY29udGV4dEV4dGVuZExpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLmhhc0F1dGhDb25maWcoKSkge1xuICAgICAgY29udGV4dEV4dGVuZExpbmVzLnB1c2goXG4gICAgICAgIGBgLFxuICAgICAgICBgICBleHBvcnQgaW50ZXJmYWNlIENvbnRleHRFeHRlbmQge2AsXG4gICAgICAgIGAgICAgdXNlcjogU29uYW11VXNlciB8IG51bGw7YCxcbiAgICAgICAgYCAgfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYERhdGFiYXNlU2NoZW1hYCxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgIGBkZWNsYXJlIG1vZHVsZSBcInNvbmFtdVwiIHtgLFxuICAgICAgICBgICBleHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlU2NoZW1hRXh0ZW5kIHtgLFxuICAgICAgICAuLi5lbnRpdHlTY2hlbWFMaW5lcyxcbiAgICAgICAgLi4uam9pblRhYmxlcy5tYXAoXG4gICAgICAgICAgKGpvaW5UYWJsZSkgPT5cbiAgICAgICAgICAgIGAke2pvaW5UYWJsZS50YWJsZX06IE1hbnlUb01hbnlCYXNlU2NoZW1hPFwiJHtqb2luVGFibGUuZnJvbVRhYmxlS2V5fVwiLCBcIiR7am9pblRhYmxlLnRvVGFibGVLZXl9XCI+O2AsXG4gICAgICAgICksXG4gICAgICAgIGAgIH1gLFxuICAgICAgICBgYCxcbiAgICAgICAgYCAgZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUZvcmVpZ25LZXlzIHtgLFxuICAgICAgICAuLi5ma01ldGFkYXRhTGluZXMsXG4gICAgICAgIGAgIH1gLFxuICAgICAgICAuLi5jb250ZXh0RXh0ZW5kTGluZXMsXG4gICAgICAgIGB9YCxcbiAgICAgIF0sXG4gICAgICBpbXBvcnRLZXlzOiBlbnRpdGllcy5tYXAoKGVudGl0eSkgPT4gYCR7ZW50aXR5LmlkfUJhc2VTY2hlbWFgKSxcbiAgICB9O1xuICB9XG5cbiAgLy8gRksg6rSA6rOE66W8IOy7rOufvOuqheycvOuhnCDrs4DtmZggKOyYiDogY29tcGFueSDihpIgY29tcGFueV9pZClcbiAgcHJpdmF0ZSBnZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHk6IEVudGl0eSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZW50aXR5LnByb3BzXG4gICAgICAuZmlsdGVyKChwcm9wKSA9PiB7XG4gICAgICAgIGlmIChpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc09uZVRvT25lUmVsYXRpb25Qcm9wKHByb3ApICYmIHByb3AuaGFzSm9pbkNvbHVtbikge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAubWFwKChwcm9wKSA9PiBgJHtwcm9wLm5hbWV9X2lkYCk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcmVpZ25LZXlUeXBlU291cmNlQ29kZShlbnRpdGllczogRW50aXR5W10pOiBTb3VyY2VDb2RlIHwgbnVsbCB7XG4gICAgaWYgKGVudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gRkvqsIAg7J6I64qUIOyXlO2LsO2LsOunjCDtg4DsnoUg7IOd7ISxXG4gICAgY29uc3QgZW50aXRpZXNXaXRoRmsgPSBlbnRpdGllcy5maWx0ZXIoXG4gICAgICAoZW50aXR5KSA9PiB0aGlzLmdldEZvcmVpZ25LZXlDb2x1bW5zKGVudGl0eSkubGVuZ3RoID4gMCxcbiAgICApO1xuXG4gICAgaWYgKGVudGl0aWVzV2l0aEZrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZmtUeXBlTGluZXMgPSBlbnRpdGllc1dpdGhGay5tYXAoKGVudGl0eSkgPT4ge1xuICAgICAgY29uc3QgZmtDb2x1bW5zID0gdGhpcy5nZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHkpO1xuICAgICAgY29uc3QgZmtUeXBlVmFsdWUgPSBma0NvbHVtbnMubWFwKChjb2wpID0+IGBcIiR7Y29sfVwiYCkuam9pbihcIiB8IFwiKTtcblxuICAgICAgcmV0dXJuIGBleHBvcnQgdHlwZSAke2VudGl0eS5pZH1Gb3JlaWduS2V5cyA9ICR7ZmtUeXBlVmFsdWV9O2A7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IGBGb3JlaWduS2V5IFR5cGVzYCxcbiAgICAgIGxpbmVzOiBma1R5cGVMaW5lcyxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogc29uYW11LmNvbmZpZy50c+ydmCBhdXRoLnVzZXIuYWRkaXRpb25hbEZpZWxkc+yXkOyEnCBTb25hbXVVc2VyIO2DgOyeheydhCDsg53shLHtlanri4jri6QuXG4gICAqIEByZXR1cm5zIFNvdXJjZUNvZGUgfCBudWxsIC0gYXV0aCDshKTsoJXsnbQg7JeG7Jy866m0IG51bGwg67CY7ZmYXG4gICAqL1xuICBwcml2YXRlIGdldEF1dGhVc2VyVHlwZVNvdXJjZUNvZGUoKTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIGNvbnN0IGF1dGhDb25maWcgPSBTb25hbXUuY29uZmlnLnNlcnZlcj8uYXV0aDtcbiAgICBpZiAoIWF1dGhDb25maWcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogYWRkaXRpb25hbEZpZWxkcyDtg4DsnoXsnbQg64+Z7KCB7J6EXG4gICAgY29uc3QgYWRkaXRpb25hbEZpZWxkcyA9IChhdXRoQ29uZmlnIGFzIGFueSk/LnVzZXI/LmFkZGl0aW9uYWxGaWVsZHM7XG4gICAgaWYgKCFhZGRpdGlvbmFsRmllbGRzIHx8IE9iamVjdC5rZXlzKGFkZGl0aW9uYWxGaWVsZHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gYWRkaXRpb25hbEZpZWxkc+qwgCDsl4bsnLzrqbQg6riw67O4IFVzZXIg7YOA7J6F66eMIOyCrOyaqVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWw6IFwiQXV0aCBVc2VyIFR5cGVcIixcbiAgICAgICAgbGluZXM6IFtcImV4cG9ydCB0eXBlIFNvbmFtdVVzZXIgPSBVc2VyO1wiXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGFkZGl0aW9uYWxGaWVsZHPrpbwgVHlwZVNjcmlwdCDtg4DsnoXsnLzroZwg67OA7ZmYXG4gICAgY29uc3QgZmllbGRMaW5lcyA9IE9iamVjdC5lbnRyaWVzKGFkZGl0aW9uYWxGaWVsZHMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGJldHRlci1hdXRoIGFkZGl0aW9uYWxGaWVsZHMg6rWs7KGwXG4gICAgICBjb25zdCBmaWVsZFR5cGUgPSBtYXBCZXR0ZXJBdXRoRmllbGRUeXBlKCh2YWx1ZSBhcyBhbnkpLnR5cGUpO1xuICAgICAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiBiZXR0ZXItYXV0aCBhZGRpdGlvbmFsRmllbGRzIOq1rOyhsFxuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9ICh2YWx1ZSBhcyBhbnkpLnJlcXVpcmVkICE9PSBmYWxzZTtcbiAgICAgIHJldHVybiBgICAke2tleX0ke2lzUmVxdWlyZWQgPyBcIlwiIDogXCI/XCJ9OiAke2ZpZWxkVHlwZX07YDtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogXCJBdXRoIFVzZXIgVHlwZVwiLFxuICAgICAgbGluZXM6IFtcImV4cG9ydCB0eXBlIFNvbmFtdVVzZXIgPSBVc2VyICYge1wiLCAuLi5maWVsZExpbmVzLCBcIn07XCJdLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhdXRoIOyEpOygleydtCDsnojripTsp4Ag7ZmV7J247ZWp64uI64ukLlxuICAgKi9cbiAgcHJpdmF0ZSBoYXNBdXRoQ29uZmlnKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIVNvbmFtdS5jb25maWcuc2VydmVyPy5hdXRoO1xuICB9XG59XG4iXSwibmFtZXMiOlsiYXNzZXJ0IiwiaW5mbGVjdGlvbiIsInVuaXF1ZSIsIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcCIsImlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCIsImlzT25lVG9PbmVSZWxhdGlvblByb3AiLCJUZW1wbGF0ZSIsIm1hcEJldHRlckF1dGhGaWVsZFR5cGUiLCJ0eXBlIiwiVGVtcGxhdGVfX2dlbmVyYXRlZF9zc28iLCJnZXRUYXJnZXRBbmRQYXRoIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsInJlbmRlciIsImVudGl0eUlkcyIsImdldEFsbElkcyIsImVudGl0aWVzIiwibWFwIiwiaWQiLCJnZXQiLCJ0YXJnZXRFbnRpdGllcyIsImZpbHRlciIsImVudGl0eSIsInBhcmVudElkIiwidW5kZWZpbmVkIiwiT2JqZWN0Iiwia2V5cyIsInN1YnNldHMiLCJsZW5ndGgiLCJzb3VyY2VDb2RlcyIsImZsYXRNYXAiLCJzdWJzZXRLZXlzIiwic3Vic2V0S2V5VHlwZU5hbWUiLCJuYW1lcyIsIm1vZHVsZSIsImVudGl0eUNhbWVsTmFtZSIsImNhbWVsaXplIiwicHVyaVN1YnNldFF1ZXJ5IiwibGFiZWwiLCJsaW5lcyIsInN1YnNldEtleSIsImdldFB1cmlTdWJzZXRRdWVyeSIsImltcG9ydEtleXMiLCJwdXJpTG9hZGVyUXVlcnkiLCJnZXRQdXJpTG9hZGVyUXVlcnkiLCJma1R5cGVTb3VyY2VDb2RlIiwiZ2V0Rm9yZWlnbktleVR5cGVTb3VyY2VDb2RlIiwicHVzaCIsImRiU2NoZW1hU291cmNlQ29kZSIsImdldERhdGFiYXNlU2NoZW1hU291cmNlQ29kZSIsImF1dGhVc2VyVHlwZVNvdXJjZUNvZGUiLCJnZXRBdXRoVXNlclR5cGVTb3VyY2VDb2RlIiwic291cmNlQ29kZSIsInJlZHVjZSIsInJlc3VsdCIsInRzIiwiYm9keSIsImpvaW4iLCJpc1VzaW5nTWFueVRvTWFueUJhc2VTY2hlbWEiLCJpbmNsdWRlcyIsInNvbmFtdUltcG9ydHMiLCJCb29sZWFuIiwiY3VzdG9tSGVhZGVycyIsImhhc0F1dGhDb25maWciLCJlbnRpdHlTY2hlbWFMaW5lcyIsInRhYmxlIiwiam9pblRhYmxlcyIsInByb3BzIiwicHJvcCIsImZyb21UYWJsZUtleSIsInNpbmd1bGFyaXplIiwidG9UYWJsZUtleSIsIndpdGgiLCJqb2luVGFibGUiLCJlbnRpdGllc1dpdGhGayIsImdldEZvcmVpZ25LZXlDb2x1bW5zIiwiZmtNZXRhZGF0YUxpbmVzIiwiY29udGV4dEV4dGVuZExpbmVzIiwiaGFzSm9pbkNvbHVtbiIsIm5hbWUiLCJma1R5cGVMaW5lcyIsImZrQ29sdW1ucyIsImZrVHlwZVZhbHVlIiwiY29sIiwiYXV0aENvbmZpZyIsInNlcnZlciIsImF1dGgiLCJhZGRpdGlvbmFsRmllbGRzIiwidXNlciIsImZpZWxkTGluZXMiLCJlbnRyaWVzIiwia2V5IiwidmFsdWUiLCJmaWVsZFR5cGUiLCJpc1JlcXVpcmVkIiwicmVxdWlyZWQiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixPQUFPQyxnQkFBZ0IsYUFBYTtBQUNwQyxTQUFTQyxNQUFNLFFBQVEsVUFBVTtBQUNqQyxTQUFTQyxNQUFNLFFBQVEscUJBQVk7QUFFbkMsU0FBU0MsYUFBYSxRQUFRLGlDQUE4QjtBQUM1RCxTQUNFQywwQkFBMEIsRUFDMUJDLHdCQUF3QixFQUN4QkMsc0JBQXNCLFFBQ2pCLHVCQUFvQjtBQUMzQixTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFHdkM7O0NBRUMsR0FDRCxTQUFTQyx1QkFBdUJDLElBQVk7SUFDMUMsT0FBUUE7UUFDTixLQUFLO1lBQ0gsT0FBTztRQUNULEtBQUs7WUFDSCxPQUFPO1FBQ1QsS0FBSztZQUNILE9BQU87UUFDVCxLQUFLO1lBQ0gsT0FBTztR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
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX3Nzby50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyB1bmlxdWUgfSBmcm9tIFwicmFkYXNoaVwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHkgfSBmcm9tIFwiLi4vLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc01hbnlUb01hbnlSZWxhdGlvblByb3AsXG4gIGlzT25lVG9PbmVSZWxhdGlvblByb3AsXG59IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB0eXBlIHsgU291cmNlQ29kZSB9IGZyb20gXCIuL2dlbmVyYXRlZC50ZW1wbGF0ZVwiO1xuXG4vKipcbiAqIGJldHRlci1hdXRoIGFkZGl0aW9uYWxGaWVsZHPsnZggdHlwZSDqsJLsnYQgVHlwZVNjcmlwdCDtg4DsnoUg66y47J6Q7Je066GcIOuzgO2ZmO2VqeuLiOuLpC5cbiAqL1xuZnVuY3Rpb24gbWFwQmV0dGVyQXV0aEZpZWxkVHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJcIjtcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgcmV0dXJuIFwiYm9vbGVhblwiO1xuICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICByZXR1cm4gXCJEYXRlXCI7XG4gICAgY2FzZSBcInN0cmluZ1tdXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdbXVwiO1xuICAgIGNhc2UgXCJudW1iZXJbXVwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyW11cIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX3NzbyBleHRlbmRzIFRlbXBsYXRlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJnZW5lcmF0ZWRfc3NvXCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aCgpIHtcbiAgICBjb25zdCB7IGRpciB9ID0gU29uYW11LmNvbmZpZy5hcGk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBgJHtkaXJ9L3NyYy9hcHBsaWNhdGlvbmAsXG4gICAgICBwYXRoOiBgc29uYW11LmdlbmVyYXRlZC5zc28udHNgLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3QgZW50aXR5SWRzID0gRW50aXR5TWFuYWdlci5nZXRBbGxJZHMoKTtcbiAgICBjb25zdCBlbnRpdGllcyA9IGVudGl0eUlkcy5tYXAoKGlkKSA9PiBFbnRpdHlNYW5hZ2VyLmdldChpZCkpO1xuXG4gICAgLy8gU3Vic2V0UXVlcmllcyDsg53shLEg64yA7IOBOiDrtoDrqqgg7JeU7Yuw7Yuw6rCAIOyXhuqzoCDshJzruIzshYvsnbQg7KG07J6sXG4gICAgY29uc3QgdGFyZ2V0RW50aXRpZXMgPSBlbnRpdGllcy5maWx0ZXIoXG4gICAgICAoZW50aXR5KSA9PiBlbnRpdHkucGFyZW50SWQgPT09IHVuZGVmaW5lZCAmJiBPYmplY3Qua2V5cyhlbnRpdHkuc3Vic2V0cykubGVuZ3RoID4gMCxcbiAgICApO1xuXG4gICAgLy8gU3Vic2V0UXVlcmllcyDsg53shLFcbiAgICBjb25zdCBzb3VyY2VDb2RlczogU291cmNlQ29kZVtdID0gdGFyZ2V0RW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PiB7XG4gICAgICBjb25zdCBzdWJzZXRLZXlzID0gT2JqZWN0LmtleXMoZW50aXR5LnN1YnNldHMpO1xuXG4gICAgICBjb25zdCBzdWJzZXRLZXlUeXBlTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5YDtcbiAgICAgIGNvbnN0IGVudGl0eUNhbWVsTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoZW50aXR5LmlkLCB0cnVlKTtcblxuICAgICAgLy8gUHVyaSDquLDrsJggU3Vic2V0UXVlcnlcbiAgICAgIGNvbnN0IHB1cmlTdWJzZXRRdWVyeTogU291cmNlQ29kZSA9IHtcbiAgICAgICAgbGFiZWw6IGBTdWJzZXRRdWVyeTogJHtlbnRpdHkuaWR9YCxcbiAgICAgICAgbGluZXM6IFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7ZW50aXR5Q2FtZWxOYW1lfVN1YnNldFF1ZXJpZXMgPSB7YCxcbiAgICAgICAgICAuLi5zdWJzZXRLZXlzLm1hcChcbiAgICAgICAgICAgIChzdWJzZXRLZXkpID0+IGAke3N1YnNldEtleX06IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4ge1xuICAgICAgICAgICAgJHtlbnRpdHkuZ2V0UHVyaVN1YnNldFF1ZXJ5KHN1YnNldEtleSl9O1xuICAgICAgICAgIH0sYCxcbiAgICAgICAgICApLFxuICAgICAgICAgIGB9O2AsXG4gICAgICAgICAgXCJcIixcbiAgICAgICAgXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9O1xuXG4gICAgICAvLyBQdXJpIOq4sOuwmCBTdWJzZXRMb2FkZXJzUXVlcnlcbiAgICAgIGNvbnN0IHB1cmlMb2FkZXJRdWVyeTogU291cmNlQ29kZSA9IHtcbiAgICAgICAgbGFiZWw6IGBMb2FkZXJRdWVyeTogJHtlbnRpdHkuaWR9YCxcbiAgICAgICAgbGluZXM6IFtcbiAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7ZW50aXR5Q2FtZWxOYW1lfUxvYWRlclF1ZXJpZXMgPSB7YCxcbiAgICAgICAgICAuLi5zdWJzZXRLZXlzLm1hcCgoc3Vic2V0S2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7c3Vic2V0S2V5fTogJHtlbnRpdHkuZ2V0UHVyaUxvYWRlclF1ZXJ5KHN1YnNldEtleSl9LGA7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgYH0gYXMgY29uc3Qgc2F0aXNmaWVzIFB1cmlMb2FkZXJRdWVyaWVzPCR7c3Vic2V0S2V5VHlwZU5hbWV9PjtgLFxuICAgICAgICAgIFwiXCIsXG4gICAgICAgIF0sXG4gICAgICAgIGltcG9ydEtleXM6IFtzdWJzZXRLZXlUeXBlTmFtZV0sXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gW3B1cmlTdWJzZXRRdWVyeSwgcHVyaUxvYWRlclF1ZXJ5XTtcbiAgICB9KTtcblxuICAgIC8vIEZvcmVpZ25LZXkg7YOA7J6FIOyDneyEsVxuICAgIGNvbnN0IGZrVHlwZVNvdXJjZUNvZGUgPSB0aGlzLmdldEZvcmVpZ25LZXlUeXBlU291cmNlQ29kZShlbnRpdGllcyk7XG4gICAgaWYgKGZrVHlwZVNvdXJjZUNvZGUpIHtcbiAgICAgIHNvdXJjZUNvZGVzLnB1c2goZmtUeXBlU291cmNlQ29kZSk7XG4gICAgfVxuXG4gICAgLy8gRGF0YWJhc2VTY2hlbWEg7IOd7ISxXG4gICAgY29uc3QgZGJTY2hlbWFTb3VyY2VDb2RlID0gdGhpcy5nZXREYXRhYmFzZVNjaGVtYVNvdXJjZUNvZGUoZW50aXRpZXMpO1xuICAgIGlmIChkYlNjaGVtYVNvdXJjZUNvZGUpIHtcbiAgICAgIHNvdXJjZUNvZGVzLnB1c2goZGJTY2hlbWFTb3VyY2VDb2RlKTtcbiAgICB9XG5cbiAgICAvLyBBdXRoIFVzZXIg7YOA7J6FIOyDneyEsVxuICAgIGNvbnN0IGF1dGhVc2VyVHlwZVNvdXJjZUNvZGUgPSB0aGlzLmdldEF1dGhVc2VyVHlwZVNvdXJjZUNvZGUoKTtcbiAgICBpZiAoYXV0aFVzZXJUeXBlU291cmNlQ29kZSkge1xuICAgICAgc291cmNlQ29kZXMucHVzaChhdXRoVXNlclR5cGVTb3VyY2VDb2RlKTtcbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2VDb2RlID0gc291cmNlQ29kZXMucmVkdWNlKFxuICAgICAgKHJlc3VsdCwgdHMpID0+IHtcbiAgICAgICAgaWYgKHRzID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBhc3NlcnQocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lczogWy4uLnJlc3VsdC5saW5lcywgYC8vICR7dHMubGFiZWx9YCwgLi4udHMubGluZXMsIFwiXCJdLFxuICAgICAgICAgIGltcG9ydEtleXM6IHVuaXF1ZShbLi4ucmVzdWx0LmltcG9ydEtleXMsIC4uLnRzLmltcG9ydEtleXNdKSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxpbmVzOiBbXSxcbiAgICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICB9IGFzIE9taXQ8U291cmNlQ29kZSwgXCJsYWJlbFwiPixcbiAgICApO1xuXG4gICAgY29uc3QgYm9keSA9IHNvdXJjZUNvZGUubGluZXMuam9pbihcIlxcblwiKTtcbiAgICBjb25zdCBpc1VzaW5nTWFueVRvTWFueUJhc2VTY2hlbWEgPSBib2R5LmluY2x1ZGVzKFwiTWFueVRvTWFueUJhc2VTY2hlbWFcIik7XG5cbiAgICBjb25zdCBzb25hbXVJbXBvcnRzID0gW1xuICAgICAgXCJQdXJpV3JhcHBlclwiLFxuICAgICAgXCJEYXRhYmFzZVNjaGVtYUV4dGVuZFwiLFxuICAgICAgXCJQdXJpTG9hZGVyUXVlcmllc1wiLFxuICAgICAgaXNVc2luZ01hbnlUb01hbnlCYXNlU2NoZW1hID8gXCJNYW55VG9NYW55QmFzZVNjaGVtYVwiIDogXCJcIixcbiAgICBdXG4gICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAuam9pbihcIiwgXCIpO1xuXG4gICAgLy8gY3VzdG9tSGVhZGVycyDqtazshLFcbiAgICBjb25zdCBjdXN0b21IZWFkZXJzID0gW1xuICAgICAgXCIvKipcIixcbiAgICAgIFwiICogQGdlbmVyYXRlZFwiLFxuICAgICAgXCIgKiDsp4HsoJEg7IiY7KCV7ZWY7KeAIOuniOyEuOyalC5cIixcbiAgICAgIFwiICovXCIsXG4gICAgICBgaW1wb3J0IHsgJHtzb25hbXVJbXBvcnRzfSB9IGZyb20gXCJzb25hbXVcIjtgLFxuICAgIF07XG4gICAgaWYgKHRoaXMuaGFzQXV0aENvbmZpZygpKSB7XG4gICAgICBjdXN0b21IZWFkZXJzLnB1c2goYGltcG9ydCB0eXBlIHsgVXNlciB9IGZyb20gXCJiZXR0ZXItYXV0aFwiO2ApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHk6IHNvdXJjZUNvZGUubGluZXMuam9pbihcIlxcblwiKSxcbiAgICAgIGltcG9ydEtleXM6IHNvdXJjZUNvZGUuaW1wb3J0S2V5cyxcbiAgICAgIGN1c3RvbUhlYWRlcnMsXG4gICAgfTtcbiAgfVxuXG4gIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gcHJpdmF0ZSBIZWxwZXIgTWV0aG9kc1xuICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHByaXZhdGUgZ2V0RGF0YWJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0aWVzOiBFbnRpdHlbXSk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBpZiAoZW50aXRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBEYXRhYmFzZVNjaGVtYUV4dGVuZCAtIO2FjOydtOu4lCDsiqTtgqTrp4gg7YOA7J6FIOygleydmFxuICAgIGNvbnN0IGVudGl0eVNjaGVtYUxpbmVzID0gZW50aXRpZXMubWFwKChlbnRpdHkpID0+IGAke2VudGl0eS50YWJsZX06ICR7ZW50aXR5LmlkfUJhc2VTY2hlbWE7YCk7XG5cbiAgICBjb25zdCBqb2luVGFibGVzID0gdW5pcXVlKFxuICAgICAgZW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PlxuICAgICAgICBlbnRpdHkucHJvcHMuZmlsdGVyKGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCkubWFwKChwcm9wKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbVRhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZShlbnRpdHkudGFibGUpO1xuICAgICAgICAgIGNvbnN0IHRvRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKTtcbiAgICAgICAgICBjb25zdCB0b1RhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0b0VudGl0eS50YWJsZSk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhYmxlOiBwcm9wLmpvaW5UYWJsZSxcbiAgICAgICAgICAgIGZyb21UYWJsZUtleSxcbiAgICAgICAgICAgIHRvVGFibGVLZXksXG4gICAgICAgICAgICBmcm9tRW50aXR5SWQ6IGVudGl0eS5pZCxcbiAgICAgICAgICAgIHRvRW50aXR5SWQ6IHRvRW50aXR5LmlkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIChqb2luVGFibGUpID0+IGpvaW5UYWJsZS50YWJsZSxcbiAgICApO1xuXG4gICAgLy8gRGF0YWJhc2VGb3JlaWduS2V5cyAtIEZLIOy7rOufvOydhCDqsIDsp4Qg7YWM7J2067iU66eMIOygleydmFxuICAgIGNvbnN0IGVudGl0aWVzV2l0aEZrID0gZW50aXRpZXMuZmlsdGVyKFxuICAgICAgKGVudGl0eSkgPT4gdGhpcy5nZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHkpLmxlbmd0aCA+IDAsXG4gICAgKTtcbiAgICBjb25zdCBma01ldGFkYXRhTGluZXMgPSBlbnRpdGllc1dpdGhGay5tYXAoXG4gICAgICAoZW50aXR5KSA9PiBgJHtlbnRpdHkudGFibGV9OiAke2VudGl0eS5pZH1Gb3JlaWduS2V5cztgLFxuICAgICk7XG5cbiAgICAvLyBDb250ZXh0RXh0ZW5kIC0gYXV0aCDshKTsoJXsnbQg7J6I7J2EIOuVjOunjCB1c2VyIO2DgOyehSDstpTqsIBcbiAgICBjb25zdCBjb250ZXh0RXh0ZW5kTGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHRoaXMuaGFzQXV0aENvbmZpZygpKSB7XG4gICAgICBjb250ZXh0RXh0ZW5kTGluZXMucHVzaChcbiAgICAgICAgYGAsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dEV4dGVuZCB7YCxcbiAgICAgICAgYCAgICB1c2VyOiBTb25hbXVVc2VyIHwgbnVsbDtgLFxuICAgICAgICBgICB9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgRGF0YWJhc2VTY2hlbWFgLFxuICAgICAgbGluZXM6IFtcbiAgICAgICAgYGRlY2xhcmUgbW9kdWxlIFwic29uYW11XCIge2AsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VTY2hlbWFFeHRlbmQge2AsXG4gICAgICAgIC4uLmVudGl0eVNjaGVtYUxpbmVzLFxuICAgICAgICAuLi5qb2luVGFibGVzLm1hcCgoam9pblRhYmxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbUVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGpvaW5UYWJsZS5mcm9tRW50aXR5SWQpO1xuICAgICAgICAgIGNvbnN0IHRvRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoam9pblRhYmxlLnRvRW50aXR5SWQpO1xuICAgICAgICAgIGNvbnN0IGZyb21Qa1R5cGUgPSBmcm9tRW50aXR5LmdldFBrVHlwZSgpID09PSBcImludGVnZXJcIiA/IFwibnVtYmVyXCIgOiBcInN0cmluZ1wiO1xuICAgICAgICAgIGNvbnN0IHRvUGtUeXBlID0gdG9FbnRpdHkuZ2V0UGtUeXBlKCkgPT09IFwiaW50ZWdlclwiID8gXCJudW1iZXJcIiA6IFwic3RyaW5nXCI7XG5cbiAgICAgICAgICByZXR1cm4gYCR7am9pblRhYmxlLnRhYmxlfTogTWFueVRvTWFueUJhc2VTY2hlbWE8XCIke2pvaW5UYWJsZS5mcm9tVGFibGVLZXl9XCIsIFwiJHtqb2luVGFibGUudG9UYWJsZUtleX1cIiwgJHtmcm9tUGtUeXBlfSwgJHt0b1BrVHlwZX0+O2A7XG4gICAgICAgIH0pLFxuICAgICAgICBgICB9YCxcbiAgICAgICAgYGAsXG4gICAgICAgIGAgIGV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VGb3JlaWduS2V5cyB7YCxcbiAgICAgICAgLi4uZmtNZXRhZGF0YUxpbmVzLFxuICAgICAgICBgICB9YCxcbiAgICAgICAgLi4uY29udGV4dEV4dGVuZExpbmVzLFxuICAgICAgICBgfWAsXG4gICAgICBdLFxuICAgICAgaW1wb3J0S2V5czogZW50aXRpZXMubWFwKChlbnRpdHkpID0+IGAke2VudGl0eS5pZH1CYXNlU2NoZW1hYCksXG4gICAgfTtcbiAgfVxuXG4gIC8vIEZLIOq0gOqzhOulvCDsu6zrn7zrqoXsnLzroZwg67OA7ZmYICjsmIg6IGNvbXBhbnkg4oaSIGNvbXBhbnlfaWQpXG4gIHByaXZhdGUgZ2V0Rm9yZWlnbktleUNvbHVtbnMoZW50aXR5OiBFbnRpdHkpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIGVudGl0eS5wcm9wc1xuICAgICAgLmZpbHRlcigocHJvcCkgPT4ge1xuICAgICAgICBpZiAoaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLm1hcCgocHJvcCkgPT4gYCR7cHJvcC5uYW1lfV9pZGApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGb3JlaWduS2V5VHlwZVNvdXJjZUNvZGUoZW50aXRpZXM6IEVudGl0eVtdKTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIGlmIChlbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIEZL6rCAIOyeiOuKlCDsl5Tti7Dti7Drp4wg7YOA7J6FIOyDneyEsVxuICAgIGNvbnN0IGVudGl0aWVzV2l0aEZrID0gZW50aXRpZXMuZmlsdGVyKFxuICAgICAgKGVudGl0eSkgPT4gdGhpcy5nZXRGb3JlaWduS2V5Q29sdW1ucyhlbnRpdHkpLmxlbmd0aCA+IDAsXG4gICAgKTtcblxuICAgIGlmIChlbnRpdGllc1dpdGhGay5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGZrVHlwZUxpbmVzID0gZW50aXRpZXNXaXRoRmsubWFwKChlbnRpdHkpID0+IHtcbiAgICAgIGNvbnN0IGZrQ29sdW1ucyA9IHRoaXMuZ2V0Rm9yZWlnbktleUNvbHVtbnMoZW50aXR5KTtcbiAgICAgIGNvbnN0IGZrVHlwZVZhbHVlID0gZmtDb2x1bW5zLm1hcCgoY29sKSA9PiBgXCIke2NvbH1cImApLmpvaW4oXCIgfCBcIik7XG5cbiAgICAgIHJldHVybiBgZXhwb3J0IHR5cGUgJHtlbnRpdHkuaWR9Rm9yZWlnbktleXMgPSAke2ZrVHlwZVZhbHVlfTtgO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgRm9yZWlnbktleSBUeXBlc2AsXG4gICAgICBsaW5lczogZmtUeXBlTGluZXMsXG4gICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIHNvbmFtdS5jb25maWcudHPsnZggYXV0aC51c2VyLmFkZGl0aW9uYWxGaWVsZHPsl5DshJwgU29uYW11VXNlciDtg4DsnoXsnYQg7IOd7ISx7ZWp64uI64ukLlxuICAgKiBAcmV0dXJucyBTb3VyY2VDb2RlIHwgbnVsbCAtIGF1dGgg7ISk7KCV7J20IOyXhuycvOuptCBudWxsIOuwmO2ZmFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRBdXRoVXNlclR5cGVTb3VyY2VDb2RlKCk6IFNvdXJjZUNvZGUgfCBudWxsIHtcbiAgICBjb25zdCBhdXRoQ29uZmlnID0gU29uYW11LmNvbmZpZy5zZXJ2ZXI/LmF1dGg7XG4gICAgaWYgKCFhdXRoQ29uZmlnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGFkZGl0aW9uYWxGaWVsZHMg7YOA7J6F7J20IOuPmeyggeyehFxuICAgIGNvbnN0IGFkZGl0aW9uYWxGaWVsZHMgPSAoYXV0aENvbmZpZyBhcyBhbnkpPy51c2VyPy5hZGRpdGlvbmFsRmllbGRzO1xuICAgIGlmICghYWRkaXRpb25hbEZpZWxkcyB8fCBPYmplY3Qua2V5cyhhZGRpdGlvbmFsRmllbGRzKS5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIGFkZGl0aW9uYWxGaWVsZHPqsIAg7JeG7Jy866m0IOq4sOuzuCBVc2VyIO2DgOyeheunjCDsgqzsmqlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsOiBcIkF1dGggVXNlciBUeXBlXCIsXG4gICAgICAgIGxpbmVzOiBbXCJleHBvcnQgdHlwZSBTb25hbXVVc2VyID0gVXNlcjtcIl0sXG4gICAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgLy8gYWRkaXRpb25hbEZpZWxkc+ulvCBUeXBlU2NyaXB0IO2DgOyeheycvOuhnCDrs4DtmZhcbiAgICBjb25zdCBmaWVsZExpbmVzID0gT2JqZWN0LmVudHJpZXMoYWRkaXRpb25hbEZpZWxkcykubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTogYmV0dGVyLWF1dGggYWRkaXRpb25hbEZpZWxkcyDqtazsobBcbiAgICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdmFsdWUgYXMgYW55O1xuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGZpZWxkQ29uZmlnLnJlcXVpcmVkICE9PSBmYWxzZTtcblxuICAgICAgbGV0IGZpZWxkVHlwZTogc3RyaW5nO1xuXG4gICAgICAvLyBzb25hbXVUeXBl7J20IOyeiOycvOuptCBkZXNjcmlwdGlvbuydhCDtg4DsnoXrqoXsnLzroZwg7IKs7JqpXG4gICAgICBpZiAoZmllbGRDb25maWcuc29uYW11VHlwZSkge1xuICAgICAgICBmaWVsZFR5cGUgPSBmaWVsZENvbmZpZy5zb25hbXVUeXBlO1xuICAgICAgICBpbXBvcnRLZXlzLnB1c2goZmllbGRUeXBlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkVHlwZSA9IG1hcEJldHRlckF1dGhGaWVsZFR5cGUoZmllbGRDb25maWcudHlwZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBgICAke2tleX0ke2lzUmVxdWlyZWQgPyBcIlwiIDogXCI/XCJ9OiAke2ZpZWxkVHlwZX07YDtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogXCJBdXRoIFVzZXIgVHlwZVwiLFxuICAgICAgbGluZXM6IFtcImV4cG9ydCB0eXBlIFNvbmFtdVVzZXIgPSBVc2VyICYge1wiLCAuLi5maWVsZExpbmVzLCBcIn07XCJdLFxuICAgICAgaW1wb3J0S2V5cyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIGF1dGgg7ISk7KCV7J20IOyeiOuKlOyngCDtmZXsnbjtlanri4jri6QuXG4gICAqL1xuICBwcml2YXRlIGhhc0F1dGhDb25maWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhU29uYW11LmNvbmZpZy5zZXJ2ZXI/LmF1dGg7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJhc3NlcnQiLCJpbmZsZWN0aW9uIiwidW5pcXVlIiwiU29uYW11IiwiRW50aXR5TWFuYWdlciIsImlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wIiwiaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wIiwiaXNPbmVUb09uZVJlbGF0aW9uUHJvcCIsIlRlbXBsYXRlIiwibWFwQmV0dGVyQXV0aEZpZWxkVHlwZSIsInR5cGUiLCJUZW1wbGF0ZV9fZ2VuZXJhdGVkX3NzbyIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiZW50aXR5SWRzIiwiZ2V0QWxsSWRzIiwiZW50aXRpZXMiLCJtYXAiLCJpZCIsImdldCIsInRhcmdldEVudGl0aWVzIiwiZmlsdGVyIiwiZW50aXR5IiwicGFyZW50SWQiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJrZXlzIiwic3Vic2V0cyIsImxlbmd0aCIsInNvdXJjZUNvZGVzIiwiZmxhdE1hcCIsInN1YnNldEtleXMiLCJzdWJzZXRLZXlUeXBlTmFtZSIsIm5hbWVzIiwibW9kdWxlIiwiZW50aXR5Q2FtZWxOYW1lIiwiY2FtZWxpemUiLCJwdXJpU3Vic2V0UXVlcnkiLCJsYWJlbCIsImxpbmVzIiwic3Vic2V0S2V5IiwiZ2V0UHVyaVN1YnNldFF1ZXJ5IiwiaW1wb3J0S2V5cyIsInB1cmlMb2FkZXJRdWVyeSIsImdldFB1cmlMb2FkZXJRdWVyeSIsImZrVHlwZVNvdXJjZUNvZGUiLCJnZXRGb3JlaWduS2V5VHlwZVNvdXJjZUNvZGUiLCJwdXNoIiwiZGJTY2hlbWFTb3VyY2VDb2RlIiwiZ2V0RGF0YWJhc2VTY2hlbWFTb3VyY2VDb2RlIiwiYXV0aFVzZXJUeXBlU291cmNlQ29kZSIsImdldEF1dGhVc2VyVHlwZVNvdXJjZUNvZGUiLCJzb3VyY2VDb2RlIiwicmVkdWNlIiwicmVzdWx0IiwidHMiLCJib2R5Iiwiam9pbiIsImlzVXNpbmdNYW55VG9NYW55QmFzZVNjaGVtYSIsImluY2x1ZGVzIiwic29uYW11SW1wb3J0cyIsIkJvb2xlYW4iLCJjdXN0b21IZWFkZXJzIiwiaGFzQXV0aENvbmZpZyIsImVudGl0eVNjaGVtYUxpbmVzIiwidGFibGUiLCJqb2luVGFibGVzIiwicHJvcHMiLCJwcm9wIiwiZnJvbVRhYmxlS2V5Iiwic2luZ3VsYXJpemUiLCJ0b0VudGl0eSIsIndpdGgiLCJ0b1RhYmxlS2V5Iiwiam9pblRhYmxlIiwiZnJvbUVudGl0eUlkIiwidG9FbnRpdHlJZCIsImVudGl0aWVzV2l0aEZrIiwiZ2V0Rm9yZWlnbktleUNvbHVtbnMiLCJma01ldGFkYXRhTGluZXMiLCJjb250ZXh0RXh0ZW5kTGluZXMiLCJmcm9tRW50aXR5IiwiZnJvbVBrVHlwZSIsImdldFBrVHlwZSIsInRvUGtUeXBlIiwiaGFzSm9pbkNvbHVtbiIsIm5hbWUiLCJma1R5cGVMaW5lcyIsImZrQ29sdW1ucyIsImZrVHlwZVZhbHVlIiwiY29sIiwiYXV0aENvbmZpZyIsInNlcnZlciIsImF1dGgiLCJhZGRpdGlvbmFsRmllbGRzIiwidXNlciIsImZpZWxkTGluZXMiLCJlbnRyaWVzIiwia2V5IiwidmFsdWUiLCJmaWVsZENvbmZpZyIsImlzUmVxdWlyZWQiLCJyZXF1aXJlZCIsImZpZWxkVHlwZSIsInNvbmFtdVR5cGUiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixPQUFPQyxnQkFBZ0IsYUFBYTtBQUNwQyxTQUFTQyxNQUFNLFFBQVEsVUFBVTtBQUNqQyxTQUFTQyxNQUFNLFFBQVEscUJBQVk7QUFFbkMsU0FBU0MsYUFBYSxRQUFRLGlDQUE4QjtBQUM1RCxTQUNFQywwQkFBMEIsRUFDMUJDLHdCQUF3QixFQUN4QkMsc0JBQXNCLFFBQ2pCLHVCQUFvQjtBQUMzQixTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFHdkM7O0NBRUMsR0FDRCxTQUFTQyx1QkFBdUJDLElBQVk7SUFDMUMsT0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/queries.template.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB;;;;IAQhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC;;;;;;;
|
|
1
|
+
{"version":3,"file":"queries.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/queries.template.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,iBAAkB,SAAQ,QAAQ;;IAK7C,gBAAgB;;;;IAQhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,SAAS,CAAC;;;;;;;CA2GtC"}
|
|
@@ -69,6 +69,10 @@ ${functions.join("\n\n")}
|
|
|
69
69
|
body: namespaces.join("\n\n"),
|
|
70
70
|
importKeys: diff(unique(importKeys), typeParamNames),
|
|
71
71
|
customHeaders: hasQueries ? [
|
|
72
|
+
"/**",
|
|
73
|
+
" * @generated",
|
|
74
|
+
" * 직접 수정하지 마세요.",
|
|
75
|
+
" */",
|
|
72
76
|
"/** biome-ignore-all lint: generated는 무시 */",
|
|
73
77
|
"/** biome-ignore-all assist: generated는 무시 */",
|
|
74
78
|
"",
|
|
@@ -80,6 +84,10 @@ ${functions.join("\n\n")}
|
|
|
80
84
|
`}`,
|
|
81
85
|
""
|
|
82
86
|
] : [
|
|
87
|
+
"/**",
|
|
88
|
+
" * @generated",
|
|
89
|
+
" * 직접 수정하지 마세요.",
|
|
90
|
+
" */",
|
|
83
91
|
"/** biome-ignore-all lint: generated는 무시 */",
|
|
84
92
|
"/** biome-ignore-all assist: generated는 무시 */",
|
|
85
93
|
""
|
|
@@ -88,4 +96,4 @@ ${functions.join("\n\n")}
|
|
|
88
96
|
}
|
|
89
97
|
}
|
|
90
98
|
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvcXVlcmllcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgZGlmZiwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IGFwaVBhcmFtVG9Uc0NvZGUsIGFwaVBhcmFtVHlwZVRvVHNUeXBlIH0gZnJvbSBcIi4uLy4uL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3F1ZXJpZXMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwicXVlcmllc1wiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgoKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBxdWVyaWVzLmdlbmVyYXRlZC50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7fTogVGVtcGxhdGVPcHRpb25zW1wicXVlcmllc1wiXSkge1xuICAgIGNvbnN0IHsgYXBpcyB9ID0gU29uYW11LnN5bmNlcjtcblxuICAgIC8vIHRhbnN0YWNrLXF1ZXJ566W8IO2PrO2VqO2VnCBBUEnrp4wg7ZWE7YSw66eBXG4gICAgY29uc3QgcXVlcnlBcGlzID0gYXBpcy5maWx0ZXIoKGFwaSkgPT4gYXBpLm9wdGlvbnMuY2xpZW50cz8uaW5jbHVkZXMoXCJ0YW5zdGFjay1xdWVyeVwiKSk7XG5cbiAgICAvLyDrqqjrjbjrs4TroZwg6re466O57ZmUXG4gICAgY29uc3QgYXBpc0J5TW9kZWwgPSBuZXcgTWFwPHN0cmluZywgRXh0ZW5kZWRBcGlbXT4oKTtcbiAgICBmb3IgKGNvbnN0IGFwaSBvZiBxdWVyeUFwaXMpIHtcbiAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IGFwaS5tb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIik7XG4gICAgICBpZiAoIWFwaXNCeU1vZGVsLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgIGFwaXNCeU1vZGVsLnNldChtb2RlbE5hbWUsIFtdKTtcbiAgICAgIH1cbiAgICAgIGFwaXNCeU1vZGVsLmdldChtb2RlbE5hbWUpPy5wdXNoKGFwaSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZXNwYWNlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCB0eXBlUGFyYW1OYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW21vZGVsTmFtZSwgbW9kZWxBcGlzXSBvZiBhcGlzQnlNb2RlbCkge1xuICAgICAgY29uc3QgZnVuY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFwaSBvZiBtb2RlbEFwaXMpIHtcbiAgICAgICAgLy8gQ29udGV4dCDsoJzsmbjtlZwg7YyM652866+47YSwXG4gICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICFBcGlQYXJhbVR5cGUuaXNDb250ZXh0KHBhcmFtLnR5cGUpICYmXG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDtg4DsnoUg7YyM652866+47YSwIOydtOumhCDsiJjsp5FcbiAgICAgICAgdHlwZVBhcmFtTmFtZXMgPSB0eXBlUGFyYW1OYW1lcy5jb25jYXQoYXBpLnR5cGVQYXJhbWV0ZXJzLm1hcCgodHApID0+IHRwLmlkKSk7XG5cbiAgICAgICAgLy8g7YOA7J6FIO2MjOudvOuvuO2EsCDsoJXsnZhcbiAgICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA9IGFwaS50eXBlUGFyYW1ldGVyc1xuICAgICAgICAgIC5tYXAoKHR5cGVQYXJhbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaVBhcmFtVHlwZVRvVHNUeXBlKHR5cGVQYXJhbSwgaW1wb3J0S2V5cyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpO1xuICAgICAgICBjb25zdCB0eXBlUGFyYW1zRGVmID0gdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA/IGA8JHt0eXBlUGFyYW1ldGVyc0FzVHNUeXBlfT5gIDogXCJcIjtcblxuICAgICAgICAvLyDtjIzrnbzrr7jthLAg7KCV7J2YXG4gICAgICAgIGNvbnN0IHBhcmFtc0RlZiA9IGFwaVBhcmFtVG9Uc0NvZGUocGFyYW1zV2l0aG91dENvbnRleHQsIGltcG9ydEtleXMpO1xuICAgICAgICBjb25zdCBwYXJhbU5hbWVzID0gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICAgICAgICAvLyBzZXJ2aWNlTWV0aG9kTmFtZSDqs4TsgrAgKHNlcnZpY2VzLnRlbXBsYXRlLnRz7JmAIOuPmeydvO2VnCDroZzsp4EpXG4gICAgICAgIGNvbnN0IHNlcnZpY2VNZXRob2ROYW1lID0gYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lXG4gICAgICAgICAgPyBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgICAgIDogYXBpLm1ldGhvZE5hbWU7XG5cbiAgICAgICAgLy8gU1NSUXVlcnkg7ZWo7IiYIOyDneyEsSAo7ZWo7IiY66qF64+EIHNlcnZpY2VNZXRob2ROYW1lIOyCrOyaqSlcbiAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgYFxuICBleHBvcnQgY29uc3QgJHtzZXJ2aWNlTWV0aG9kTmFtZX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoJyR7YXBpLm1vZGVsTmFtZX0nLCAnJHthcGkubWV0aG9kTmFtZX0nLCBbJHtwYXJhbU5hbWVzfV0sIFsnJHttb2RlbE5hbWV9JywgJyR7c2VydmljZU1ldGhvZE5hbWV9J10pO1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBuYW1lc3BhY2VzLnB1c2goXG4gICAgICAgIGBcbmV4cG9ydCBuYW1lc3BhY2UgJHttb2RlbE5hbWV9U2VydmljZSB7XG4ke2Z1bmN0aW9ucy5qb2luKFwiXFxuXFxuXCIpfVxufVxuICAgICAgYC50cmltKCksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHRhbnN0YWNrLXF1ZXJ5IEFQSeqwgCDsl4bsnLzrqbQg7Zes7Y28IO2VqOyImOyZgCBpbXBvcnTrpbwg7Y+s7ZWo7ZWY7KeAIOyViuyKteuLiOuLpC5cbiAgICAvLyDsg4gg7ZSE66Gc7KCd7Yq47JeQ7IScIOyyqyDruYzrk5wg7IucIHN5bmPqsIAg7JWE7KeBIOyViCDrkJjslrQgbmFtZXNwYWNl6rCAIOu5hOyWtOyeiOydhCDsiJgg7J6I6rOgLFxuICAgIC8vIOydtOuVjCBjcmVhdGVTU1JRdWVyeeqwgCB1bnVzZWTroZwg67mM65OcIOyXkOufrOqwgCDrsJzsg53tlZjripQg6rKD7J2EIOuwqeyngO2VqeuLiOuLpC5cbiAgICBjb25zdCBoYXNRdWVyaWVzID0gbmFtZXNwYWNlcy5sZW5ndGggPiAwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCgpLFxuICAgICAgYm9keTogbmFtZXNwYWNlcy5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogZGlmZih1bmlxdWUoaW1wb3J0S2V5cyksIHR5cGVQYXJhbU5hbWVzKSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IGhhc1F1ZXJpZXNcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZOuKlCDrrLTsi5wgKi9cIixcbiAgICAgICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgYXNzaXN0OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgYGltcG9ydCB0eXBlIHsgU1NSUXVlcnkgfSBmcm9tICdzb25hbXUvc3NyJztgLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgIGAvLyBTU1JRdWVyeSDtl6ztjbwg7ZWo7IiYYCxcbiAgICAgICAgICAgIGBmdW5jdGlvbiBjcmVhdGVTU1JRdWVyeShtb2RlbE5hbWU6IHN0cmluZywgbWV0aG9kTmFtZTogc3RyaW5nLCBwYXJhbXM6IGFueVtdLCBzZXJ2aWNlS2V5OiBbc3RyaW5nLCBzdHJpbmddKTogU1NSUXVlcnkge2AsXG4gICAgICAgICAgICBgICByZXR1cm4geyBtb2RlbE5hbWUsIG1ldGhvZE5hbWUsIHBhcmFtcywgc2VydmljZUtleSwgX19icmFuZDogJ1NTUlF1ZXJ5JyB9IGFzIFNTUlF1ZXJ5O2AsXG4gICAgICAgICAgICBgfWAsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXG4gICAgICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGxpbnQ6IGdlbmVyYXRlZOuKlCDrrLTsi5wgKi9cIixcbiAgICAgICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgYXNzaXN0OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgIF0sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImluZmxlY3Rpb24iLCJkaWZmIiwidW5pcXVlIiwiYXBpUGFyYW1Ub1RzQ29kZSIsImFwaVBhcmFtVHlwZVRvVHNUeXBlIiwiU29uYW11IiwiQXBpUGFyYW1UeXBlIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fcXVlcmllcyIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiYXBpcyIsInN5bmNlciIsInF1ZXJ5QXBpcyIsImZpbHRlciIsIm9wdGlvbnMiLCJjbGllbnRzIiwiaW5jbHVkZXMiLCJhcGlzQnlNb2RlbCIsIk1hcCIsIm1vZGVsTmFtZSIsInJlcGxhY2UiLCJoYXMiLCJzZXQiLCJnZXQiLCJwdXNoIiwibmFtZXNwYWNlcyIsImltcG9ydEtleXMiLCJ0eXBlUGFyYW1OYW1lcyIsIm1vZGVsQXBpcyIsImZ1bmN0aW9ucyIsInBhcmFtc1dpdGhvdXRDb250ZXh0IiwicGFyYW1ldGVycyIsInBhcmFtIiwiaXNDb250ZXh0IiwidHlwZSIsImlzUmVmS25leCIsIm9wdGlvbmFsIiwibmFtZSIsInN0YXJ0c1dpdGgiLCJjb25jYXQiLCJ0eXBlUGFyYW1ldGVycyIsIm1hcCIsInRwIiwiaWQiLCJ0eXBlUGFyYW1ldGVyc0FzVHNUeXBlIiwidHlwZVBhcmFtIiwiam9pbiIsInR5cGVQYXJhbXNEZWYiLCJwYXJhbXNEZWYiLCJwYXJhbU5hbWVzIiwicCIsInNlcnZpY2VNZXRob2ROYW1lIiwicmVzb3VyY2VOYW1lIiwiY2FtZWxpemUiLCJtZXRob2RO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
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvcXVlcmllcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgZGlmZiwgdW5pcXVlIH0gZnJvbSBcInJhZGFzaGlcIjtcbmltcG9ydCB7IGFwaVBhcmFtVG9Uc0NvZGUsIGFwaVBhcmFtVHlwZVRvVHNUeXBlIH0gZnJvbSBcIi4uLy4uL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZW5kZWRBcGkgfSBmcm9tIFwiLi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgQXBpUGFyYW1UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3F1ZXJpZXMgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwicXVlcmllc1wiKTtcbiAgfVxuXG4gIGdldFRhcmdldEFuZFBhdGgoKSB7XG4gICAgY29uc3QgeyBkaXIgfSA9IFNvbmFtdS5jb25maWcuYXBpO1xuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBxdWVyaWVzLmdlbmVyYXRlZC50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7fTogVGVtcGxhdGVPcHRpb25zW1wicXVlcmllc1wiXSkge1xuICAgIGNvbnN0IHsgYXBpcyB9ID0gU29uYW11LnN5bmNlcjtcblxuICAgIC8vIHRhbnN0YWNrLXF1ZXJ566W8IO2PrO2VqO2VnCBBUEnrp4wg7ZWE7YSw66eBXG4gICAgY29uc3QgcXVlcnlBcGlzID0gYXBpcy5maWx0ZXIoKGFwaSkgPT4gYXBpLm9wdGlvbnMuY2xpZW50cz8uaW5jbHVkZXMoXCJ0YW5zdGFjay1xdWVyeVwiKSk7XG5cbiAgICAvLyDrqqjrjbjrs4TroZwg6re466O57ZmUXG4gICAgY29uc3QgYXBpc0J5TW9kZWwgPSBuZXcgTWFwPHN0cmluZywgRXh0ZW5kZWRBcGlbXT4oKTtcbiAgICBmb3IgKGNvbnN0IGFwaSBvZiBxdWVyeUFwaXMpIHtcbiAgICAgIGNvbnN0IG1vZGVsTmFtZSA9IGFwaS5tb2RlbE5hbWUucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIik7XG4gICAgICBpZiAoIWFwaXNCeU1vZGVsLmhhcyhtb2RlbE5hbWUpKSB7XG4gICAgICAgIGFwaXNCeU1vZGVsLnNldChtb2RlbE5hbWUsIFtdKTtcbiAgICAgIH1cbiAgICAgIGFwaXNCeU1vZGVsLmdldChtb2RlbE5hbWUpPy5wdXNoKGFwaSk7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZXNwYWNlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBpbXBvcnRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCB0eXBlUGFyYW1OYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW21vZGVsTmFtZSwgbW9kZWxBcGlzXSBvZiBhcGlzQnlNb2RlbCkge1xuICAgICAgY29uc3QgZnVuY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFwaSBvZiBtb2RlbEFwaXMpIHtcbiAgICAgICAgLy8gQ29udGV4dCDsoJzsmbjtlZwg7YyM652866+47YSwXG4gICAgICAgIGNvbnN0IHBhcmFtc1dpdGhvdXRDb250ZXh0ID0gYXBpLnBhcmFtZXRlcnMuZmlsdGVyKFxuICAgICAgICAgIChwYXJhbSkgPT5cbiAgICAgICAgICAgICFBcGlQYXJhbVR5cGUuaXNDb250ZXh0KHBhcmFtLnR5cGUpICYmXG4gICAgICAgICAgICAhQXBpUGFyYW1UeXBlLmlzUmVmS25leChwYXJhbS50eXBlKSAmJlxuICAgICAgICAgICAgIShwYXJhbS5vcHRpb25hbCA9PT0gdHJ1ZSAmJiBwYXJhbS5uYW1lLnN0YXJ0c1dpdGgoXCJfXCIpKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDtg4DsnoUg7YyM652866+47YSwIOydtOumhCDsiJjsp5FcbiAgICAgICAgdHlwZVBhcmFtTmFtZXMgPSB0eXBlUGFyYW1OYW1lcy5jb25jYXQoYXBpLnR5cGVQYXJhbWV0ZXJzLm1hcCgodHApID0+IHRwLmlkKSk7XG5cbiAgICAgICAgLy8g7YOA7J6FIO2MjOudvOuvuO2EsCDsoJXsnZhcbiAgICAgICAgY29uc3QgdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA9IGFwaS50eXBlUGFyYW1ldGVyc1xuICAgICAgICAgIC5tYXAoKHR5cGVQYXJhbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaVBhcmFtVHlwZVRvVHNUeXBlKHR5cGVQYXJhbSwgaW1wb3J0S2V5cyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuam9pbihcIiwgXCIpO1xuICAgICAgICBjb25zdCB0eXBlUGFyYW1zRGVmID0gdHlwZVBhcmFtZXRlcnNBc1RzVHlwZSA/IGA8JHt0eXBlUGFyYW1ldGVyc0FzVHNUeXBlfT5gIDogXCJcIjtcblxuICAgICAgICAvLyDtjIzrnbzrr7jthLAg7KCV7J2YXG4gICAgICAgIGNvbnN0IHBhcmFtc0RlZiA9IGFwaVBhcmFtVG9Uc0NvZGUocGFyYW1zV2l0aG91dENvbnRleHQsIGltcG9ydEtleXMpO1xuICAgICAgICBjb25zdCBwYXJhbU5hbWVzID0gcGFyYW1zV2l0aG91dENvbnRleHQubWFwKChwKSA9PiBwLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICAgICAgICAvLyBzZXJ2aWNlTWV0aG9kTmFtZSDqs4TsgrAgKHNlcnZpY2VzLnRlbXBsYXRlLnRz7JmAIOuPmeydvO2VnCDroZzsp4EpXG4gICAgICAgIGNvbnN0IHNlcnZpY2VNZXRob2ROYW1lID0gYXBpLm9wdGlvbnMucmVzb3VyY2VOYW1lXG4gICAgICAgICAgPyBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKGFwaS5vcHRpb25zLnJlc291cmNlTmFtZSl9YFxuICAgICAgICAgIDogYXBpLm1ldGhvZE5hbWU7XG5cbiAgICAgICAgLy8gU1NSUXVlcnkg7ZWo7IiYIOyDneyEsSAo7ZWo7IiY66qF64+EIHNlcnZpY2VNZXRob2ROYW1lIOyCrOyaqSlcbiAgICAgICAgZnVuY3Rpb25zLnB1c2goXG4gICAgICAgICAgYFxuICBleHBvcnQgY29uc3QgJHtzZXJ2aWNlTWV0aG9kTmFtZX0gPSAke3R5cGVQYXJhbXNEZWZ9KCR7cGFyYW1zRGVmfSk6IFNTUlF1ZXJ5ID0+XG4gICAgY3JlYXRlU1NSUXVlcnkoJyR7YXBpLm1vZGVsTmFtZX0nLCAnJHthcGkubWV0aG9kTmFtZX0nLCBbJHtwYXJhbU5hbWVzfV0sIFsnJHttb2RlbE5hbWV9JywgJyR7c2VydmljZU1ldGhvZE5hbWV9J10pO1xuICAgICAgICAgIGAudHJpbSgpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBuYW1lc3BhY2VzLnB1c2goXG4gICAgICAgIGBcbmV4cG9ydCBuYW1lc3BhY2UgJHttb2RlbE5hbWV9U2VydmljZSB7XG4ke2Z1bmN0aW9ucy5qb2luKFwiXFxuXFxuXCIpfVxufVxuICAgICAgYC50cmltKCksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHRhbnN0YWNrLXF1ZXJ5IEFQSeqwgCDsl4bsnLzrqbQg7Zes7Y28IO2VqOyImOyZgCBpbXBvcnTrpbwg7Y+s7ZWo7ZWY7KeAIOyViuyKteuLiOuLpC5cbiAgICAvLyDsg4gg7ZSE66Gc7KCd7Yq47JeQ7IScIOyyqyDruYzrk5wg7IucIHN5bmPqsIAg7JWE7KeBIOyViCDrkJjslrQgbmFtZXNwYWNl6rCAIOu5hOyWtOyeiOydhCDsiJgg7J6I6rOgLFxuICAgIC8vIOydtOuVjCBjcmVhdGVTU1JRdWVyeeqwgCB1bnVzZWTroZwg67mM65OcIOyXkOufrOqwgCDrsJzsg53tlZjripQg6rKD7J2EIOuwqeyngO2VqeuLiOuLpC5cbiAgICBjb25zdCBoYXNRdWVyaWVzID0gbmFtZXNwYWNlcy5sZW5ndGggPiAwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCgpLFxuICAgICAgYm9keTogbmFtZXNwYWNlcy5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogZGlmZih1bmlxdWUoaW1wb3J0S2V5cyksIHR5cGVQYXJhbU5hbWVzKSxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IGhhc1F1ZXJpZXNcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBcIi8qKlwiLFxuICAgICAgICAgICAgXCIgKiBAZ2VuZXJhdGVkXCIsXG4gICAgICAgICAgICBcIiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlwiLFxuICAgICAgICAgICAgXCIgKi9cIixcbiAgICAgICAgICAgIFwiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludDogZ2VuZXJhdGVk64qUIOustOyLnCAqL1wiLFxuICAgICAgICAgICAgXCIvKiogYmlvbWUtaWdub3JlLWFsbCBhc3Npc3Q6IGdlbmVyYXRlZOuKlCDrrLTsi5wgKi9cIixcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICBgaW1wb3J0IHR5cGUgeyBTU1JRdWVyeSB9IGZyb20gJ3NvbmFtdS9zc3InO2AsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgYC8vIFNTUlF1ZXJ5IO2XrO2NvCDtlajsiJhgLFxuICAgICAgICAgICAgYGZ1bmN0aW9uIGNyZWF0ZVNTUlF1ZXJ5KG1vZGVsTmFtZTogc3RyaW5nLCBtZXRob2ROYW1lOiBzdHJpbmcsIHBhcmFtczogYW55W10sIHNlcnZpY2VLZXk6IFtzdHJpbmcsIHN0cmluZ10pOiBTU1JRdWVyeSB7YCxcbiAgICAgICAgICAgIGAgIHJldHVybiB7IG1vZGVsTmFtZSwgbWV0aG9kTmFtZSwgcGFyYW1zLCBzZXJ2aWNlS2V5LCBfX2JyYW5kOiAnU1NSUXVlcnknIH0gYXMgU1NSUXVlcnk7YCxcbiAgICAgICAgICAgIGB9YCxcbiAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgXVxuICAgICAgICA6IFtcbiAgICAgICAgICAgIFwiLyoqXCIsXG4gICAgICAgICAgICBcIiAqIEBnZW5lcmF0ZWRcIixcbiAgICAgICAgICAgIFwiICog7KeB7KCRIOyImOygle2VmOyngCDrp4jshLjsmpQuXCIsXG4gICAgICAgICAgICBcIiAqL1wiLFxuICAgICAgICAgICAgXCIvKiogYmlvbWUtaWdub3JlLWFsbCBsaW50OiBnZW5lcmF0ZWTripQg66y07IucICovXCIsXG4gICAgICAgICAgICBcIi8qKiBiaW9tZS1pZ25vcmUtYWxsIGFzc2lzdDogZ2VuZXJhdGVk64qUIOustOyLnCAqL1wiLFxuICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwiZGlmZiIsInVuaXF1ZSIsImFwaVBhcmFtVG9Uc0NvZGUiLCJhcGlQYXJhbVR5cGVUb1RzVHlwZSIsIlNvbmFtdSIsIkFwaVBhcmFtVHlwZSIsIlRlbXBsYXRlIiwiVGVtcGxhdGVfX3F1ZXJpZXMiLCJnZXRUYXJnZXRBbmRQYXRoIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsInJlbmRlciIsImFwaXMiLCJzeW5jZXIiLCJxdWVyeUFwaXMiLCJmaWx0ZXIiLCJvcHRpb25zIiwiY2xpZW50cyIsImluY2x1ZGVzIiwiYXBpc0J5TW9kZWwiLCJNYXAiLCJtb2RlbE5hbWUiLCJyZXBsYWNlIiwiaGFzIiwic2V0IiwiZ2V0IiwicHVzaCIsIm5hbWVzcGFjZXMiLCJpbXBvcnRLZXlzIiwidHlwZVBhcmFtTmFtZXMiLCJtb2RlbEFwaXMiLCJmdW5jdGlvbnMiLCJwYXJhbXNXaXRob3V0Q29udGV4dCIsInBhcmFtZXRlcnMiLCJwYXJhbSIsImlzQ29udGV4dCIsInR5cGUiLCJpc1JlZktuZXgiLCJvcHRpb25hbCIsIm5hbWUiLCJzdGFydHNXaXRoIiwiY29uY2F0IiwidHlwZVBhcmFtZXRlcnMiLCJtYXAiLCJ0cCIsImlkIiwidHlwZVBhcmFtZXRlcnNBc1RzVHlwZSIsInR5cGVQYXJhbSIsImpvaW4iLCJ0eXBlUGFyYW1zRGVmIiwicGFyYW1zRGVmIiwicGFyYW1OYW1lcyIsInAiLCJzZXJ2aWNlTWV0aG9kTmFtZSIsInJlc291cmNlTmFtZSIsImNhbWVsaXplIiwibWV0aG9kTmFtZSIsInRyaW0iLCJoYXNRdWVyaWVzIiwibGVuZ3RoIiwiYm9keSIsImN1c3RvbUhlYWRlcnMiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLGdCQUFnQixhQUFhO0FBQ3BDLFNBQVNDLElBQUksRUFBRUMsTUFBTSxRQUFRLFVBQVU7QUFDdkMsU0FBU0MsZ0JBQWdCLEVBQUVDLG9CQUFvQixRQUFRLCtCQUE0QjtBQUVuRixTQUFTQyxNQUFNLFFBQVEsc0JBQW1CO0FBRTFDLFNBQVNDLFlBQVksUUFBUSx1QkFBb0I7QUFDakQsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBRXZDLE9BQU8sTUFBTUMsMEJBQTBCRDtJQUNyQyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUUsbUJBQW1CO1FBQ2pCLE1BQU0sRUFBRUMsR0FBRyxFQUFFLEdBQUdMLE9BQU9NLE1BQU0sQ0FBQ0MsR0FBRztRQUNqQyxPQUFPO1lBQ0xDLFFBQVEsR0FBR0gsSUFBSSxnQkFBZ0IsQ0FBQztZQUNoQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDO1FBQzlCO0lBQ0Y7SUFFQUMsT0FBTyxFQUE4QixFQUFFO1FBQ3JDLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdYLE9BQU9ZLE1BQU07UUFFOUIsK0JBQStCO1FBQy9CLE1BQU1DLFlBQVlGLEtBQUtHLE1BQU0sQ0FBQyxDQUFDUCxNQUFRQSxJQUFJUSxPQUFPLENBQUNDLE9BQU8sRUFBRUMsU0FBUztRQUVyRSxXQUFXO1FBQ1gs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/sd.template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;;IAKxC,gBAAgB,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK;;;;IAW7E,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC;;;;;;;
|
|
1
|
+
{"version":3,"file":"sd.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/sd.template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;;IAKxC,gBAAgB,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK;;;;IAW7E,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC;;;;;;;IAiOrC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAoC/B;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -115,9 +115,28 @@ type SDReturnType<K extends DictKey> = MergedDictionary[K] extends (...args: inf
|
|
|
115
115
|
: LocalizedString;
|
|
116
116
|
|
|
117
117
|
function getDictValue<K extends DictKey>(key: K, locale: string): SDReturnType<K> {
|
|
118
|
+
// 1. 지정된 locale에서 조회
|
|
118
119
|
const dict = dictionaries[locale];
|
|
119
|
-
|
|
120
|
-
|
|
120
|
+
if (dict?.[key] !== undefined) {
|
|
121
|
+
return dict[key] as unknown as SDReturnType<K>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 2. default locale에서 조회
|
|
125
|
+
if (locale !== DEFAULT_LOCALE && dictionaries[DEFAULT_LOCALE]?.[key] !== undefined) {
|
|
126
|
+
return dictionaries[DEFAULT_LOCALE][key] as unknown as SDReturnType<K>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// 3. supported locales 순회
|
|
130
|
+
for (const supportedLocale of SUPPORTED_LOCALES) {
|
|
131
|
+
if (supportedLocale !== locale && supportedLocale !== DEFAULT_LOCALE) {
|
|
132
|
+
if (dictionaries[supportedLocale]?.[key] !== undefined) {
|
|
133
|
+
return dictionaries[supportedLocale][key] as unknown as SDReturnType<K>;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// 4. 모두 실패 시 key 반환
|
|
139
|
+
return key as unknown as SDReturnType<K>;
|
|
121
140
|
}
|
|
122
141
|
|
|
123
142
|
/**
|
|
@@ -206,7 +225,12 @@ SD.enumLabels = (enumName: string): Record<string, LocalizedString> => {
|
|
|
206
225
|
...this.getTargetAndPath(undefined, target),
|
|
207
226
|
body,
|
|
208
227
|
importKeys: [],
|
|
209
|
-
customHeaders: [
|
|
228
|
+
customHeaders: [
|
|
229
|
+
"/**",
|
|
230
|
+
" * @generated",
|
|
231
|
+
" * 직접 수정하지 마세요.",
|
|
232
|
+
" */"
|
|
233
|
+
]
|
|
210
234
|
};
|
|
211
235
|
}
|
|
212
236
|
/**
|
|
@@ -295,4 +319,4 @@ ${entries.join("\n")}
|
|
|
295
319
|
}
|
|
296
320
|
}
|
|
297
321
|
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBleHRyYWN0T2JqZWN0RGVjbGFyYXRpb24gfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeSAoU0QpIO2FnO2UjOumv1xuICogaTE4buydhCDsnITtlZwgc2QuZ2VuZXJhdGVkLnRzIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2QgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwic2RcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKF9uYW1lcz86IEVudGl0eU5hbWVzUmVjb3JkLCBzZFRhcmdldD86IFwiYXBpXCIgfCBcIndlYlwiIHwgXCJhcHBcIikge1xuICAgIGNvbnN0IHRhcmdldCA9IHNkVGFyZ2V0ID8/IFwiYXBpXCI7XG4gICAgLy8gYXBpLmRpcuydgCDsg4HrjIAg6rK966GcKFwiYXBpXCIp7J2066+A66GcLCB3ZWIvYXBw64+EIOyDgeuMgCDqsr3roZzroZwg66ee7LakXG4gICAgY29uc3QgZGlyID0gdGFyZ2V0ID09PSBcImFwaVwiID8gU29uYW11LmNvbmZpZy5hcGkuZGlyIDogdGFyZ2V0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvaTE4bmAsXG4gICAgICBwYXRoOiBcInNkLmdlbmVyYXRlZC50c1wiLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIob3B0aW9uczogVGVtcGxhdGVPcHRpb25zW1wic2RcIl0pIHtcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBpMThuQ29uZmlnID0gU29uYW11LmNvbmZpZy5pMThuO1xuXG4gICAgY29uc3QgeyBkZWZhdWx0TG9jYWxlLCBzdXBwb3J0ZWRMb2NhbGVzIH0gPSBpMThuQ29uZmlnO1xuXG4gICAgLy8gZW50aXR5Lmpzb27sl5DshJwgZW50aXR5IGxhYmVscyDstpTstpxcbiAgICBjb25zdCBlbnRpdHlMYWJlbHMgPSB0aGlzLmV4dHJhY3RFbnRpdHlMYWJlbHMoKTtcblxuICAgIC8vIHJjLWtleXMg7IaM7IqkIOy9lOuTnCDstpTstpxcbiAgICBjb25zdCByY0tleXNTb3VyY2VDb2RlID0gdGhpcy5leHRyYWN0UkNLZXlzU291cmNlQ29kZSgpO1xuXG4gICAgLy8g7ZSM656r7Y+867OEIGxvY2FsZSDqtIDrpqwg7L2U65OcXG4gICAgY29uc3QgbG9jYWxlTWFuYWdlbWVudENvZGUgPVxuICAgICAgdGFyZ2V0ID09PSBcImFwaVwiXG4gICAgICAgID8gYFxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcInNvbmFtdVwiO1xuXG5jb25zdCBERUZBVUxUX0xPQ0FMRSA9IFwiJHtkZWZhdWx0TG9jYWxlfVwiIGFzIGNvbnN0O1xuY29uc3QgU1VQUE9SVEVEX0xPQ0FMRVMgPSAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZExvY2FsZXMpfSBhcyBjb25zdDtcbmZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhbGUoKTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSB7XG4gIHRyeSB7XG4gICAgY29uc3QgY3R4ID0gU29uYW11LmdldENvbnRleHQoKTtcbiAgICByZXR1cm4gY3R4LmxvY2FsZSBhcyAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIERFRkFVTFRfTE9DQUxFO1xuICB9XG59XG5gLnRyaW0oKVxuICAgICAgICA6IGBcbmNvbnN0IERFRkFVTFRfTE9DQUxFID0gXCIke2RlZmF1bHRMb2NhbGV9XCIgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0xPQ0FMRVMgPSAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZExvY2FsZXMpfSBhcyBjb25zdDtcbmxldCBfY3VycmVudExvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSA9IERFRkFVTFRfTE9DQUxFO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9jYWxlKGxvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSkge1xuICBfY3VycmVudExvY2FsZSA9IGxvY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhbGUoKTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSB7XG4gIHJldHVybiBfY3VycmVudExvY2FsZTtcbn1cbmAudHJpbSgpO1xuXG4gICAgLy8gbG9jYWxlIGltcG9ydFxuICAgIGNvbnN0IGxvY2FsZUltcG9ydHMgPSBzdXBwb3J0ZWRMb2NhbGVzXG4gICAgICAubWFwKChsb2NhbGUpID0+IGBpbXBvcnQgJHtsb2NhbGV9IGZyb20gXCIuLyR7bG9jYWxlfVwiO2ApXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIC8vIGVudGl0eUxhYmVsc+ulvCDsvZTrk5zroZwg67OA7ZmYXG4gICAgY29uc3QgZW50aXR5TGFiZWxzQ29kZSA9IHRoaXMuZ2VuZXJhdGVFbnRpdHlMYWJlbHNDb2RlKGVudGl0eUxhYmVscyk7XG5cbiAgICAvLyBsb2NhbGXrs4QgcmNLZXlzIOuzgOyImOuqhSDrp6TtlZFcbiAgICBjb25zdCBnZXRSQ0tleXNWYXJOYW1lID0gKGxvY2FsZTogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBzdXBwb3J0ZWRMb2NhbGVz7JeQIO2PrO2VqOuQnCBsb2NhbGXrp4wg7ZW064u5IOuzgOyImCDrsJjtmZhcbiAgICAgIGlmIChsb2NhbGUgPT09IFwia29cIiAmJiBzdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKFwia29cIikpIHJldHVybiBcInJjS2V5c0tvXCI7XG4gICAgICBpZiAobG9jYWxlID09PSBcImVuXCIgJiYgc3VwcG9ydGVkTG9jYWxlcy5pbmNsdWRlcyhcImVuXCIpKSByZXR1cm4gXCJyY0tleXNFblwiO1xuICAgICAgLy8gZmFsbGJhY2s6IGRlZmF1bHRMb2NhbGXsnZggcmNLZXlzXG4gICAgICBpZiAobG9jYWxlICE9PSBkZWZhdWx0TG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBnZXRSQ0tleXNWYXJOYW1lKGRlZmF1bHRMb2NhbGUpO1xuICAgICAgfVxuICAgICAgLy8gZGVmYXVsdExvY2FsZeyhsOywqCDsl4bripQg6rK97JqwIGVu7J2EIGZhbGxiYWNr7Jy866GcIOyCrOyaqVxuICAgICAgcmV0dXJuIFwicmNLZXlzRW5cIjtcbiAgICB9O1xuXG4gICAgY29uc3QgYm9keSA9IGBcbiR7bG9jYWxlTWFuYWdlbWVudENvZGV9XG5cbiR7bG9jYWxlSW1wb3J0c31cblxuLy8gcmVhY3QtY29tcG9uZW50cyBpMThuIGtleXNcbiR7c3VwcG9ydGVkTG9jYWxlcy5pbmNsdWRlcyhcImtvXCIpID8gcmNLZXlzU291cmNlQ29kZS5rbyA6IFwiXCJ9XG5cbiR7c3VwcG9ydGVkTG9jYWxlcy5pbmNsdWRlcyhcImVuXCIpID8gcmNLZXlzU291cmNlQ29kZS5lbiA6IFwiXCJ9XG5cbi8vIGVudGl0eS5qc29u7JeQ7IScIOy2lOy2nO2VnCBlbnRpdHkgbGFiZWxzIChkZWZhdWx0TG9jYWxlIOyghOyaqSlcbiR7ZW50aXR5TGFiZWxzQ29kZX1cblxuLy8gZGVmYXVsdExvY2FsZeydmCBkaWN0aW9uYXJ566W8IOq4sOykgOycvOuhnCDtgqQg7LaU7LacXG50eXBlIFJDS2V5cyA9IHR5cGVvZiAke2dldFJDS2V5c1Zhck5hbWUoZGVmYXVsdExvY2FsZSl9O1xudHlwZSBQcm9qZWN0RGljdGlvbmFyeSA9IHR5cGVvZiAke2RlZmF1bHRMb2NhbGV9O1xudHlwZSBFbnRpdHlMYWJlbHMgPSB0eXBlb2YgZW50aXR5TGFiZWxzO1xudHlwZSBSYXdNZXJnZWREaWN0aW9uYXJ5ID0gUkNLZXlzICYgT21pdDxFbnRpdHlMYWJlbHMsIGtleW9mIChSQ0tleXMgJiBQcm9qZWN0RGljdGlvbmFyeSk+ICYgUHJvamVjdERpY3Rpb25hcnk7XG5cbi8vIO2CpOuKlCDsnKDsp4DtlZjrkJgsIOqwkiDtg4DsnoXsnYAgc3RyaW5nIOuYkOuKlCDtlajsiJjroZwg7J2867CY7ZmUICjri6TrpbggbG9jYWxl7J2YIOumrO2EsOuftCDtg4DsnoUg7Lap64+MIOuwqeyngClcbmV4cG9ydCB0eXBlIE1lcmdlZERpY3Rpb25hcnkgPSB7XG4gIFtLIGluIGtleW9mIFJhd01lcmdlZERpY3Rpb25hcnldOiBSYXdNZXJnZWREaWN0aW9uYXJ5W0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIFApID0+IHN0cmluZ1xuICAgID8gKC4uLmFyZ3M6IFApID0+IHN0cmluZ1xuICAgIDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIERpY3RLZXkgPSBrZXlvZiBNZXJnZWREaWN0aW9uYXJ5O1xuZXhwb3J0IHR5cGUgTG9jYWxpemVkU3RyaW5nID0gc3RyaW5nICYgeyBfX2JyYW5kOiBcIkxvY2FsaXplZFN0cmluZ1wiIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVMb2NhbGUoZGljdDogUGFydGlhbDxNZXJnZWREaWN0aW9uYXJ5Pikge1xuICByZXR1cm4gZGljdDtcbn1cblxuLy8g6rCBIGxvY2FsZeuzhOuhnCByYy1rZXlzICsgZW50aXR5IGxhYmVscyArIO2UhOuhnOygne2KuCBkaWN0IO2Vqey5qFxuY29uc3QgZGljdGlvbmFyaWVzOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPE1lcmdlZERpY3Rpb25hcnk+PiA9IHtcbiAgJHtkZWZhdWx0TG9jYWxlfTogeyAuLi4ke2dldFJDS2V5c1Zhck5hbWUoZGVmYXVsdExvY2FsZSl9LCAuLi5lbnRpdHlMYWJlbHMsIC4uLiR7ZGVmYXVsdExvY2FsZX0gfSxcbiAgJHtzdXBwb3J0ZWRMb2NhbGVzXG4gICAgLmZpbHRlcigobG9jYWxlKSA9PiBsb2NhbGUgIT09IGRlZmF1bHRMb2NhbGUpXG4gICAgLm1hcCgobG9jYWxlKSA9PiBgICAke2xvY2FsZX06IHsgLi4uJHtnZXRSQ0tleXNWYXJOYW1lKGxvY2FsZSl9LCAuLi4ke2xvY2FsZX0gfSxgKVxuICAgIC5qb2luKFwiXFxuXCIpfVxufTtcblxudHlwZSBTRFJldHVyblR5cGU8SyBleHRlbmRzIERpY3RLZXk+ID0gTWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgPyAoLi4uYXJnczogUCkgPT4gTG9jYWxpemVkU3RyaW5nXG4gIDogTG9jYWxpemVkU3RyaW5nO1xuXG5mdW5jdGlvbiBnZXREaWN0VmFsdWU8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSywgbG9jYWxlOiBzdHJpbmcpOiBTRFJldHVyblR5cGU8Sz4ge1xuICBjb25zdCBkaWN0ID0gZGljdGlvbmFyaWVzW2xvY2FsZV07XG4gIGNvbnN0IHZhbHVlID0gZGljdD8uW2tleV0gPz8gZGljdGlvbmFyaWVzW0RFRkFVTFRfTE9DQUxFXT8uW2tleV0gPz8ga2V5O1xuICByZXR1cm4gdmFsdWUgYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG59XG5cbi8qKlxuICogU29uYW11IERpY3Rpb25hcnkg7ZWo7IiYXG4gKiBsb2NhbGXsl5Ag66ee64qUIOuyiOyXrSDthY3siqTtirjrpbwg67CY7ZmY7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBTRChcImNvbW1vbi5zYXZlXCIpICAvLyDihpIgXCLsoIDsnqVcIiAoTG9jYWxpemVkU3RyaW5nKVxuICogU0QoXCJ1c2VyLm5vdEZvdW5kXCIpKDEpICAvLyDihpIgXCLsobTsnqztlZjsp4Ag7JWK64qUIFVzZXIgSUQgMVwiIChMb2NhbGl6ZWRTdHJpbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTRDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+IHtcbiAgY29uc3QgbG9jYWxlID0gZ2V0Q3VycmVudExvY2FsZSgpO1xuICByZXR1cm4gZ2V0RGljdFZhbHVlKGtleSwgbG9jYWxlKTtcbn1cblxuLyoqXG4gKiDtirnsoJUgbG9jYWxl7J2YIOuyiOyXrSDthY3siqTtirjrpbwg67CY7ZmY7ZWY64qUIO2VqOyImOulvCDsg53shLHtlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IEVOID0gU0QubG9jYWxlKFwiZW5cIik7XG4gKiBFTihcImNvbW1vbi5zYXZlXCIpICAvLyDihpIgXCJTYXZlXCJcbiAqL1xuU0QubG9jYWxlID0gKGxvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSkgPT4gPEsgZXh0ZW5kcyBEaWN0S2V5PihrZXk6IEspOiBTRFJldHVyblR5cGU8Sz4gPT4ge1xuICByZXR1cm4gZ2V0RGljdFZhbHVlKGtleSwgbG9jYWxlKTtcbn07XG5cbi8vIExvY2FsaXplZCDqsIDriqXtlZwgQ29sdW1uIO2DgOyehSDqs4TsgrBcbnR5cGUgTG9jYWxpemVkQmFzZUNvbHVtbjxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVCAmIHN0cmluZ106IEsgZXh0ZW5kcyBcXGBcXCR7aW5mZXIgQmFzZX1fXFwkeyh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl19XFxgID8gQmFzZSA6IEs7XG59W2tleW9mIFQgJiBzdHJpbmddO1xuXG4vKipcbiAqIGxvY2FsZeyXkCDrlLDrnbwg7KCB7KCI7ZWcIOy7rOufvCDqsJLsnYQg67CY7ZmY7ZWp64uI64ukLlxuICogRELsl5AgbmFtZSwgbmFtZV9rbywgbmFtZV9lbuyymOufvCBsb2NhbGl6ZWQgY29sdW1u7J20IOyeiOydhCDrlYwg7IKs7Jqp7ZWp64uI64ukLlxuICpcbiAqIOyasOyEoOyInOychCAo7KeA7JuQIOuhnOy8gOydvOydgCBrby9qcC9lbuydtOqzoCwg7ISc67mE7Iqk7J2YIOq4sOuzuCDroZzsvIDsnbzsnYAga28sIOyCrOyaqeyekOydmCDroZzsvIDsnbzsnYAganDsnbwg65WMKTogY29sdW1uX2pwIOKGkiBjb2x1bW4g4oaSIGNvbHVtbl9rbyDihpIgY29sdW1uX2VuXG4gKiDsmrDshKDsiJzsnIQgKOyngOybkCDroZzsvIDsnbzsnYAga28vanAvZW7snbTqs6AsIOyEnOu5hOyKpOydmCDquLDrs7gg66Gc7LyA7J287J2AIGVuLCDsgqzsmqnsnpDsnZgg66Gc7LyA7J287J2AIGtv7J28IOuVjCk6IGNvbHVtbl9rbyDihpIgY29sdW1uIOKGkiBjb2x1bW5fZW4g4oaSIGNvbHVtbl9qcFxuICpcbiAqIEBleGFtcGxlXG4gKiBsb2NhbGl6ZWRDb2x1bW4odGFnLCBcIm5hbWVcIilcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2FsaXplZENvbHVtbjxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIEsgZXh0ZW5kcyBMb2NhbGl6ZWRCYXNlQ29sdW1uPFQ+PihcbiAgcm93OiBULFxuICBjb2x1bW46IEssXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBsb2NhbGUgPSBnZXRDdXJyZW50TG9jYWxlKCk7XG4gIGNvbnN0IG90aGVyTG9jYWxlcyA9IFNVUFBPUlRFRF9MT0NBTEVTLmZpbHRlcigobDogc3RyaW5nKSA9PiBsICE9PSBsb2NhbGUgJiYgbCAhPT0gREVGQVVMVF9MT0NBTEUpO1xuICBjb25zdCBsb2NhbGl6ZWRLZXkgPSAoY29sdW1uOiBLLCBsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+IFxcYFxcJHtjb2x1bW59X1xcJHtsb2NhbGV9XFxgO1xuICBjb25zdCBrZXlzID0gW1xuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIGxvY2FsZSksXG4gICAgY29sdW1uLFxuICAgIGxvY2FsaXplZEtleShjb2x1bW4sIERFRkFVTFRfTE9DQUxFKSxcbiAgICAuLi5vdGhlckxvY2FsZXMubWFwKChsKSA9PiBsb2NhbGl6ZWRLZXkoY29sdW1uLCBsKSksXG4gIF07XG5cbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGlmICghKGtleSBpbiByb3cpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocm93W2tleV0gIT09IG51bGwgJiYgcm93W2tleV0gIT09IHVuZGVmaW5lZCAmJiByb3dba2V5XSAhPT0gXCJcIikge1xuICAgICAgcmV0dXJuIFN0cmluZyhyb3dba2V5XSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBFbnVt7J2YIGxvY2FsaXplZCBsYWJlbHPrpbwgUHJveHnroZwg67CY7ZmY7ZWp64uI64ukLlxuICogU2VsZWN0IOy7tO2PrOuEjO2KuCDrk7Hsl5DshJwgRW51bUxhYmVsW2tleV0g64yA7IugIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QuZW51bUxhYmVscyhcIlRhZ09yZGVyQnlcIilba2V5XSAgLy8g4oaSIO2YhOyerCBsb2NhbGXsnZgg652867KoXG4gKi9cblNELmVudW1MYWJlbHMgPSAoZW51bU5hbWU6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4gPT4ge1xuICByZXR1cm4gbmV3IFByb3h5KHt9IGFzIFJlY29yZDxzdHJpbmcsIExvY2FsaXplZFN0cmluZz4sIHtcbiAgICBnZXQoXywga2V5OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IGRpY3RLZXkgPSBcXGBlbnVtLlxcJHtlbnVtTmFtZX0uXFwke2tleX1cXGAgYXMgRGljdEtleTtcbiAgICAgIHJldHVybiBnZXREaWN0VmFsdWUoZGljdEtleSwgZ2V0Q3VycmVudExvY2FsZSgpKTtcbiAgICB9XG4gIH0pO1xufTtcbmAudHJpbSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aCh1bmRlZmluZWQsIHRhcmdldCksXG4gICAgICBib2R5LFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgICBjdXN0b21IZWFkZXJzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIHJlYWN0LWNvbXBvbmVudHPsnZggcmMta2V5c+ulvCDstpTstpztlalcbiAgICogc29uYW11L3NyYy9kaWN0L3JjLWtleXMudHMg7YyM7J287J2YIOyGjOyKpCDsvZTrk5zrpbwg7KeB7KCRIOydveyWtOyEnCDrsJjtmZhcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdFJDS2V5c1NvdXJjZUNvZGUoKTogeyBrbzogc3RyaW5nOyBlbjogc3RyaW5nIH0ge1xuICAgIHRyeSB7XG4gICAgICAvLyByYy1rZXlzLnRzIO2MjOydvCDqsr3roZxcbiAgICAgIGNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCk7XG4gICAgICBjb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoX19maWxlbmFtZSk7XG5cbiAgICAgIC8vIGRpc3Tsl5DshJwg7Iuk7ZaJ65CgIOuVjOuKlCBzcmProZwg6rK966GcIOuzgOqyvVxuICAgICAgY29uc3QgYmFzZVBhdGggPSBfX2Rpcm5hbWUuaW5jbHVkZXMoXCIvZGlzdC9cIilcbiAgICAgICAgPyBfX2Rpcm5hbWUucmVwbGFjZShcIi9kaXN0L1wiLCBcIi9zcmMvXCIpXG4gICAgICAgIDogX19kaXJuYW1lO1xuXG4gICAgICBjb25zdCByY0tleXNQYXRoID0gcGF0aC5qb2luKGJhc2VQYXRoLCBcIi4uLy4uL2RpY3QvcmMta2V5cy50c1wiKTtcblxuICAgICAgLy8g7YyM7J28IOydveq4sFxuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IGZzLnJlYWRGaWxlU3luYyhyY0tleXNQYXRoLCBcInV0Zi04XCIpO1xuXG4gICAgICAvLyByY0tleXNLbyDstpTstpwgKOykkeq0hO2YuCDsubTsmrTtjIUg67Cp7IudKVxuICAgICAgY29uc3Qga29Db2RlID0gZXh0cmFjdE9iamVjdERlY2xhcmF0aW9uKHNvdXJjZUNvZGUsIFwicmNLZXlzS29cIik7XG5cbiAgICAgIC8vIHJjS2V5c0VuIOy2lOy2nCAo7KSR6rSE7Zi4IOy5tOyatO2MhSDrsKnsi50pXG4gICAgICBjb25zdCBlbkNvZGUgPSBleHRyYWN0T2JqZWN0RGVjbGFyYXRpb24oc291cmNlQ29kZSwgXCJyY0tleXNFblwiKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAga286IGtvQ29kZS5yZXBsYWNlKC9eZXhwb3J0IC8sIFwiXCIpLFxuICAgICAgICBlbjogZW5Db2RlLnJlcGxhY2UoL15leHBvcnQgLywgXCJcIikucmVwbGFjZSgvIHNhdGlzZmllcyBSQ0tleXMvLCBcIiBhcyBjb25zdFwiKSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIHJjLWtleXMg7YyM7J287J20IOyXhuuKlCDqsr3smrAg67mIIOy9lOuTnCDrsJjtmZhcbiAgICAgIGNvbnNvbGUud2FybihcIkZhaWxlZCB0byBsb2FkIHJjLWtleXMgc291cmNlOlwiLCBlcnJvcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrbzogXCJjb25zdCByY0tleXNLbyA9IHt9IGFzIGNvbnN0O1wiLFxuICAgICAgICBlbjogXCJjb25zdCByY0tleXNFbiA9IHt9IGFzIGNvbnN0O1wiLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog66qo65OgIGVudGl0eS5qc29u7JeQ7IScIGVudGl0eSBsYWJlbHMg7LaU7LacXG4gICAqIGVudGl0eS5qc29u7JeQ7IScIOyngeygkSDqtIDrpqzrkJjripQg6rCS66eMIO2PrO2VqCAo7J6Q64+ZIOyDneyEsSDqsJIg7KCc7Jm4KVxuICAgKiAtIGVudGl0eS57ZW50aXR5SWR9OiBlbnRpdHkgdGl0bGVcbiAgICogLSBlbnRpdHkue2VudGl0eUlkfS57cHJvcE5hbWV9OiBwcm9wIGRlc2NcbiAgICogLSBlbnVtLntFbnVtSWR9Lnt2YWx1ZX06IGVudW0gbGFiZWxcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdEVudGl0eUxhYmVscygpOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgY29uc3QgbGFiZWxzOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSA9IFtdO1xuXG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmlzQXV0b2xvYWRlZCkge1xuICAgICAgcmV0dXJuIGxhYmVscztcbiAgICB9XG5cbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHlJZCBvZiBlbnRpdHlJZHMpIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcblxuICAgICAgLy8gZW50aXR5IHRpdGxlIChlbnRpdHkuanNvbuyXkOyEnCDqtIDrpqwpXG4gICAgICBsYWJlbHMucHVzaCh7IGtleTogYGVudGl0eS4ke2VudGl0eUlkfWAsIHZhbHVlOiBlbnRpdHkudGl0bGUgfSk7XG5cbiAgICAgIC8vIHByb3AgbGFiZWxzIChlbnRpdHkuanNvbuyXkOyEnCDqtIDrpqwpXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgZW50aXR5LnByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wLmRlc2MpIHtcbiAgICAgICAgICBsYWJlbHMucHVzaCh7IGtleTogYGVudGl0eS4ke2VudGl0eUlkfS4ke3Byb3AubmFtZX1gLCB2YWx1ZTogcHJvcC5kZXNjIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGVudW0gbGFiZWxzIChlbnRpdHkuanNvbuyXkOyEnCDqtIDrpqwpXG4gICAgICBmb3IgKGNvbnN0IFtlbnVtSWQsIGVudW1MYWJlbHNNYXBdIG9mIE9iamVjdC5lbnRyaWVzKGVudGl0eS5lbnVtTGFiZWxzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IFt2YWx1ZSwgbGFiZWxdIG9mIE9iamVjdC5lbnRyaWVzKGVudW1MYWJlbHNNYXApKSB7XG4gICAgICAgICAgbGFiZWxzLnB1c2goeyBrZXk6IGBlbnVtLiR7ZW51bUlkfS4ke3ZhbHVlfWAsIHZhbHVlOiBsYWJlbCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICAvKipcbiAgICogZW50aXR5TGFiZWxz66W8IFR5cGVTY3JpcHQg7L2U65Oc66GcIOuzgO2ZmFxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUVudGl0eUxhYmVsc0NvZGUobGFiZWxzOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSk6IHN0cmluZyB7XG4gICAgaWYgKGxhYmVscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcImNvbnN0IGVudGl0eUxhYmVscyA9IHt9IGFzIGNvbnN0O1wiO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSBsYWJlbHMubWFwKCh7IGtleSwgdmFsdWUgfSkgPT4gYCAgXCIke2tleX1cIjogXCIke3RoaXMuZXNjYXBlU3RyaW5nKHZhbHVlKX1cIixgKTtcblxuICAgIHJldHVybiBgY29uc3QgZW50aXR5TGFiZWxzID0ge1xuJHtlbnRyaWVzLmpvaW4oXCJcXG5cIil9XG59IGFzIGNvbnN0O2A7XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIikucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZnMiLCJwYXRoIiwiZmlsZVVSTFRvUGF0aCIsIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJleHRyYWN0T2JqZWN0RGVjbGFyYXRpb24iLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX19zZCIsImdldFRhcmdldEFuZFBhdGgiLCJfbmFtZXMiLCJzZFRhcmdldCIsInRhcmdldCIsImRpciIsImNvbmZpZyIsImFwaSIsInJlbmRlciIsIm9wdGlvbnMiLCJpMThuQ29uZmlnIiwiaTE4biIsImRlZmF1bHRMb2NhbGUiLCJzdXBwb3J0ZWRMb2NhbGVzIiwiZW50aXR5TGFiZWxzIiwiZXh0cmFjdEVudGl0eUxhYmVscyIsInJjS2V5c1NvdXJjZUNvZGUiLCJleHRyYWN0UkNLZXlzU291cmNlQ29kZSIsImxvY2FsZU1hbmFnZW1lbnRDb2RlIiwiSlNPTiIsInN0cmluZ2lmeSIsInRyaW0iLCJsb2NhbGVJbXBvcnRzIiwibWFwIiwibG9jYWxlIiwiam9pbiIsImVudGl0eUxhYmVsc0NvZGUiLCJnZW5lcmF0ZUVudGl0eUxhYmVsc0NvZGUiLCJnZXRSQ0tleXNWYXJOYW1lIiwiaW5jbHVkZXMiLCJib2R5Iiwia28iLCJlbiIsImZpbHRlciIsInVuZGVmaW5lZCIsImltcG9ydEtleXMiLCJjdXN0b21IZWFkZXJzIiwiX19maWxlbmFtZSIsInVybCIsIl9fZGlybmFtZSIsImRpcm5hbWUiLCJiYXNlUGF0aCIsInJlcGxhY2UiLCJyY0tleXNQYXRoIiwic291cmNlQ29kZSIsInJlYWRGaWxlU3luYyIsImtvQ29kZSIsImVuQ29kZSIsImVycm9yIiwiY29uc29sZSIsIndhcm4iLCJsYWJlbHMiLCJpc0F1dG9sb2FkZWQiLCJlbnRpdHlJZHMiLCJnZXRBbGxJZHMiLCJlbnRpdHlJZCIsImVudGl0eSIsImdldCIsInB1c2giLCJrZXkiLCJ2YWx1ZSIsInRpdGxlIiwicHJvcCIsInByb3BzIiwiZGVzYyIsIm5hbWUiLCJlbnVtSWQiLCJlbnVtTGFiZWxzTWFwIiwiT2JqZWN0IiwiZW50cmllcyIsImVudW1MYWJlbHMiLCJsYWJlbCIsImxlbmd0aCIsImVzY2FwZVN0cmluZyIsInN0ciJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsUUFBUSxVQUFVO0FBQ3pCLE9BQU9DLFVBQVUsWUFBWTtBQUM3QixTQUFTQyxhQUFhLFFBQVEsV0FBVztBQUN6QyxTQUFTQyxNQUFNLFFBQVEsc0JBQW1CO0FBQzFDLFNBQVNDLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNBQVNDLHdCQUF3QixRQUFRLGdCQUFhO0FBQ3RELFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUV2Qzs7O0NBR0MsR0FDRCxPQUFPLE1BQU1DLHFCQUFxQkQ7SUFDaEMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFFLGlCQUFpQkMsTUFBMEIsRUFBRUMsUUFBZ0MsRUFBRTtRQUM3RSxNQUFNQyxTQUFTRCxZQUFZO1FBQzNCLCtDQUErQztRQUMvQyxNQUFNRSxNQUFNRCxXQUFXLFFBQVFSLE9BQU9VLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDRixHQUFHLEdBQUdEO1FBRXZELE9BQU87WUFDTEEsUUFBUSxHQUFHQyxJQUFJLFNBQVMsQ0FBQztZQUN6QlgsTUFBTTtRQUNSO0lBQ0Y7SUFFQWMsT0FBT0MsT0FBOEIsRUFBRTtRQUNyQyxNQUFNLEVBQUVMLE1BQU0sRUFBRSxHQUFHSztRQUNuQixNQUFNQyxhQUFhZCxPQUFPVSxNQUFNLENBQUNLLElBQUk7UUFFckMsTUFBTSxFQUFFQyxhQUFhLEVBQUVDLGdCQUFnQixFQUFFLEdBQUdIO1FBRTVDLGlDQUFpQztRQUNqQyxNQUFNSSxlQUFlLElBQUksQ0FBQ0MsbUJBQW1CO1FBRTdDLG1CQUFtQjtRQUNuQixNQUFNQyxtQkFBbUIsSUFBSSxDQUFDQyx1QkFBdUI7UUFFckQsb0JBQW9CO1FBQ3BCLE1BQU1DLHVCQUNKZCxXQUFXLFFBQ1AsQ0FBQzs7O3dCQUdhLEVBQUVRLGNBQWM7MEJBQ2QsRUFBRU8sS0FBS0MsU0FBUyxDQUFDUCxrQkFBa0I7Ozs7Ozs7OztBQVM3RCxDQUFDLENBQUNRLElBQUksS0FDSSxDQUFDO3dCQUNhLEVBQUVULGNBQWM7aUNBQ1AsRUFBRU8sS0FBS0MsU0FBUyxDQUFDUCxrQkFBa0I7Ozs7Ozs7Ozs7QUFVcEUsQ0FBQyxDQUFDUSxJQUFJO1FBRUYsZ0JBQWdCO1FBQ2hCLE1BQU1DLGdCQUFnQlQsaUJBQ25CVSxHQUFHLENBQUMsQ0FBQ0MsU0FBVyxDQUFDLE9BQU8sRUFBRUEsT0FBTyxTQUFTLEVBQUVBLE9BQU8sRUFBRSxDQUFDLEVBQ3REQyxJQUFJLENBQUM7UUFFUix1QkFBdUI7UUFDdkIsTUFBTUMsbUJBQW1CLElBQUksQ0FBQ0Msd0JBQXdCLENBQUNiO1FBRXZELHdCQUF3QjtRQUN4QixNQUFNYyxtQkFBbUIsQ0FBQ0o7WUFDeEIseUNBQXlDO1lBQ3pDLElBQUlBLFdBQVcsUUFBUVgsaUJBQWlCZ0IsUUFBUSxDQUFDLE9BQU8sT0FBTztZQUMvRCxJQUFJTCxXQUFXLFFBQVFYLGlCQUFpQmdCLFFBQVEsQ0FBQyxPQUFPLE9BQU87WUFDL0Qsa0NBQWtDO1lBQ2xDLElBQUlMLFdBQVdaLGVBQWU7Z0JBQzVCLE9BQU9nQixpQkFBaUJoQjtZQUMxQjtZQUNBLDBDQUEwQztZQUMxQyxPQUFPO1FBQ1Q7UUFFQSxNQUFNa0IsT0FBTyxDQUFDO0FBQ2xCLEVBQUVaLHFCQUFxQjs7QUFFdkIsRUFBRUksY0FBYzs7O0FBR2hCLEVBQUVULGlCQUFpQmdCLFFBQVEsQ0FBQyxRQUFRYixpQkFBaUJlLEVBQUUsR0FBRyxHQUFHOztBQUU3RCxFQUFFbEIsaUJBQWlCZ0IsUUFBUSxDQUFDLFFBQVFiLGlCQUFpQmdCLEVBQUUsR0FBRyxHQUFHOzs7QUFHN0QsRUFBRU4saUJBQWlCOzs7cUJBR0UsRUFBRUUsaUJBQWlCaEIsZUFBZTtnQ0FDdkIsRUFBRUEsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1COUMsRUFBRUEsY0FBYyxPQUFPLEVBQUVnQixpQkFBaUJoQixlQUFlLHNCQUFzQixFQUFFQSxjQUFjO0VBQy9GLEVBQUVDLGlCQUNDb0IsTUFBTSxDQUFDLENBQUNULFNBQVdBLFdBQVdaLGVBQzlCVyxHQUFHLENBQUMsQ0FBQ0MsU0FBVyxDQUFDLEVBQUUsRUFBRUEsT0FBTyxPQUFPLEVBQUVJLGlCQUFpQkosUUFBUSxLQUFLLEVBQUVBLE9BQU8sR0FBRyxDQUFDLEVBQ2hGQyxJQUFJLENBQUMsTUFBTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThGaEIsQ0FBQyxDQUFDSixJQUFJO1FBRUYsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDcEIsZ0JBQWdCLENBQUNpQyxXQUFXOUIsT0FBTztZQUMzQzBCO1lBQ0FLLFlBQVksRUFBRTtZQUNkQyxlQUFlLEVBQUU7UUFDbkI7SUFDRjtJQUVBOzs7R0FHQyxHQUNELEFBQVFuQiwwQkFBc0Q7UUFDNUQsSUFBSTtZQUNGLG1CQUFtQjtZQUNuQixNQUFNb0IsYUFBYTFDLGNBQWMsWUFBWTJDLEdBQUc7WUFDaEQsTUFBTUMsWUFBWTdDLEtBQUs4QyxPQUFPLENBQUNIO1lBRS9CLDJCQUEyQjtZQUMzQixNQUFNSSxXQUFXRixVQUFVVixRQUFRLENBQUMsWUFDaENVLFVBQVVHLE9BQU8sQ0FBQyxVQUFVLFdBQzVCSDtZQUVKLE1BQU1JLGFBQWFqRCxLQUFLK0IsSUFBSSxDQUFDZ0IsVUFBVTtZQUV2QyxRQUFRO1lBQ1IsTUFBTUcsYUFBYW5ELEdBQUdvRCxZQUFZLENBQUNGLFlBQVk7WUFFL0MsMkJBQTJCO1lBQzNCLE1BQU1HLFNBQVNoRCx5QkFBeUI4QyxZQUFZO1lBRXBELDJCQUEyQjtZQUMzQixNQUFNRyxTQUFTakQseUJBQXlCOEMsWUFBWTtZQUVwRCxPQUFPO2dCQUNMYixJQUFJZSxPQUFPSixPQUFPLENBQUMsWUFBWTtnQkFDL0JWLElBQUllLE9BQU9MLE9BQU8sQ0FBQyxZQUFZLElBQUlBLE9BQU8sQ0FBQyxxQkFBcUI7WUFDbEU7UUFDRixFQUFFLE9BQU9NLE9BQU87WUFDZCw0QkFBNEI7WUFDNUJDLFFBQVFDLElBQUksQ0FBQyxrQ0FBa0NGO1lBQy9DLE9BQU87Z0JBQ0xqQixJQUFJO2dCQUNKQyxJQUFJO1lBQ047UUFDRjtJQUNGO0lBRUE7Ozs7OztHQU1DLEdBQ0QsQUFBUWpCLHNCQUF3RDtRQUM5RCxNQUFNb0MsU0FBMkMsRUFBRTtRQUVuRCxJQUFJLENBQUN0RCxjQUFjdUQsWUFBWSxFQUFFO1lBQy9CLE9BQU9EO1FBQ1Q7UUFFQSxNQUFNRSxZQUFZeEQsY0FBY3lELFNBQVM7UUFFekMsS0FBSyxNQUFNQyxZQUFZRixVQUFXO1lBQ2hDLE1BQU1HLFNBQVMzRCxjQUFjNEQsR0FBRyxDQUFDRjtZQUVqQyxrQ0FBa0M7WUFDbENKLE9BQU9PLElBQUksQ0FBQztnQkFBRUMsS0FBSyxDQUFDLE9BQU8sRUFBRUosVUFBVTtnQkFBRUssT0FBT0osT0FBT0ssS0FBSztZQUFDO1lBRTdELGlDQUFpQztZQUNqQyxLQUFLLE1BQU1DLFFBQVFOLE9BQU9PLEtBQUssQ0FBRTtnQkFDL0IsSUFBSUQsS0FBS0UsSUFBSSxFQUFFO29CQUNiYixPQUFPTyxJQUFJLENBQUM7d0JBQUVDLEtBQUssQ0FBQyxPQUFPLEVBQUVKLFNBQVMsQ0FBQyxFQUFFTyxLQUFLRyxJQUFJLEVBQUU7d0JBQUVMLE9BQU9FLEtBQUtFLElBQUk7b0JBQUM7Z0JBQ3pFO1lBQ0Y7WUFFQSxpQ0FBaUM7WUFDakMsS0FBSyxNQUFNLENBQUNFLFFBQVFDLGNBQWMsSUFBSUMsT0FBT0MsT0FBTyxDQUFDYixPQUFPYyxVQUFVLEVBQUc7Z0JBQ3ZFLEtBQUssTUFBTSxDQUFDVixPQUFPVyxNQUFNLElBQUlILE9BQU9DLE9BQU8sQ0FBQ0YsZUFBZ0I7b0JBQzFEaEIsT0FBT08sSUFBSSxDQUFDO3dCQUFFQyxLQUFLLENBQUMsS0FBSyxFQUFFTyxPQUFPLENBQUMsRUFBRU4sT0FBTzt3QkFBRUEsT0FBT1c7b0JBQU07Z0JBQzdEO1lBQ0Y7UUFDRjtRQUVBLE9BQU9wQjtJQUNUO0lBRUE7O0dBRUMsR0FDRCxBQUFReEIseUJBQXlCd0IsTUFBd0MsRUFBVTtRQUNqRixJQUFJQSxPQUFPcUIsTUFBTSxLQUFLLEdBQUc7WUFDdkIsT0FBTztRQUNUO1FBRUEsTUFBTUgsVUFBVWxCLE9BQU81QixHQUFHLENBQUMsQ0FBQyxFQUFFb0MsR0FBRyxFQUFFQyxLQUFLLEVBQUUsR0FBSyxDQUFDLEdBQUcsRUFBRUQsSUFBSSxJQUFJLEVBQUUsSUFBSSxDQUFDYyxZQUFZLENBQUNiLE9BQU8sRUFBRSxDQUFDO1FBRTNGLE9BQU8sQ0FBQztBQUNaLEVBQUVTLFFBQVE1QyxJQUFJLENBQUMsTUFBTTtXQUNWLENBQUM7SUFDVjtJQUVRZ0QsYUFBYUMsR0FBVyxFQUFVO1FBQ3hDLE9BQU9BLElBQUloQyxPQUFPLENBQUMsT0FBTyxRQUFRQSxPQUFPLENBQUMsTUFBTSxPQUFPQSxPQUFPLENBQUMsT0FBTztJQUN4RTtBQUNGIn0=
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvc2QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBmaWxlVVJMVG9QYXRoIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBleHRyYWN0T2JqZWN0RGVjbGFyYXRpb24gfSBmcm9tIFwiLi4vaGVscGVyc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcblxuLyoqXG4gKiBTb25hbXUgRGljdGlvbmFyeSAoU0QpIO2FnO2UjOumv1xuICogaTE4buydhCDsnITtlZwgc2QuZ2VuZXJhdGVkLnRzIO2MjOydvOydhCDsg53shLHtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fc2QgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwic2RcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKF9uYW1lcz86IEVudGl0eU5hbWVzUmVjb3JkLCBzZFRhcmdldD86IFwiYXBpXCIgfCBcIndlYlwiIHwgXCJhcHBcIikge1xuICAgIGNvbnN0IHRhcmdldCA9IHNkVGFyZ2V0ID8/IFwiYXBpXCI7XG4gICAgLy8gYXBpLmRpcuydgCDsg4HrjIAg6rK966GcKFwiYXBpXCIp7J2066+A66GcLCB3ZWIvYXBw64+EIOyDgeuMgCDqsr3roZzroZwg66ee7LakXG4gICAgY29uc3QgZGlyID0gdGFyZ2V0ID09PSBcImFwaVwiID8gU29uYW11LmNvbmZpZy5hcGkuZGlyIDogdGFyZ2V0O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogYCR7ZGlyfS9zcmMvaTE4bmAsXG4gICAgICBwYXRoOiBcInNkLmdlbmVyYXRlZC50c1wiLFxuICAgIH07XG4gIH1cblxuICByZW5kZXIob3B0aW9uczogVGVtcGxhdGVPcHRpb25zW1wic2RcIl0pIHtcbiAgICBjb25zdCB7IHRhcmdldCB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBpMThuQ29uZmlnID0gU29uYW11LmNvbmZpZy5pMThuO1xuXG4gICAgY29uc3QgeyBkZWZhdWx0TG9jYWxlLCBzdXBwb3J0ZWRMb2NhbGVzIH0gPSBpMThuQ29uZmlnO1xuXG4gICAgLy8gZW50aXR5Lmpzb27sl5DshJwgZW50aXR5IGxhYmVscyDstpTstpxcbiAgICBjb25zdCBlbnRpdHlMYWJlbHMgPSB0aGlzLmV4dHJhY3RFbnRpdHlMYWJlbHMoKTtcblxuICAgIC8vIHJjLWtleXMg7IaM7IqkIOy9lOuTnCDstpTstpxcbiAgICBjb25zdCByY0tleXNTb3VyY2VDb2RlID0gdGhpcy5leHRyYWN0UkNLZXlzU291cmNlQ29kZSgpO1xuXG4gICAgLy8g7ZSM656r7Y+867OEIGxvY2FsZSDqtIDrpqwg7L2U65OcXG4gICAgY29uc3QgbG9jYWxlTWFuYWdlbWVudENvZGUgPVxuICAgICAgdGFyZ2V0ID09PSBcImFwaVwiXG4gICAgICAgID8gYFxuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcInNvbmFtdVwiO1xuXG5jb25zdCBERUZBVUxUX0xPQ0FMRSA9IFwiJHtkZWZhdWx0TG9jYWxlfVwiIGFzIGNvbnN0O1xuY29uc3QgU1VQUE9SVEVEX0xPQ0FMRVMgPSAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZExvY2FsZXMpfSBhcyBjb25zdDtcbmZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhbGUoKTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSB7XG4gIHRyeSB7XG4gICAgY29uc3QgY3R4ID0gU29uYW11LmdldENvbnRleHQoKTtcbiAgICByZXR1cm4gY3R4LmxvY2FsZSBhcyAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdID8/IERFRkFVTFRfTE9DQUxFO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIERFRkFVTFRfTE9DQUxFO1xuICB9XG59XG5gLnRyaW0oKVxuICAgICAgICA6IGBcbmNvbnN0IERFRkFVTFRfTE9DQUxFID0gXCIke2RlZmF1bHRMb2NhbGV9XCIgYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX0xPQ0FMRVMgPSAke0pTT04uc3RyaW5naWZ5KHN1cHBvcnRlZExvY2FsZXMpfSBhcyBjb25zdDtcbmxldCBfY3VycmVudExvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSA9IERFRkFVTFRfTE9DQUxFO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9jYWxlKGxvY2FsZTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSkge1xuICBfY3VycmVudExvY2FsZSA9IGxvY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRMb2NhbGUoKTogKHR5cGVvZiBTVVBQT1JURURfTE9DQUxFUylbbnVtYmVyXSB7XG4gIHJldHVybiBfY3VycmVudExvY2FsZTtcbn1cbmAudHJpbSgpO1xuXG4gICAgLy8gbG9jYWxlIGltcG9ydFxuICAgIGNvbnN0IGxvY2FsZUltcG9ydHMgPSBzdXBwb3J0ZWRMb2NhbGVzXG4gICAgICAubWFwKChsb2NhbGUpID0+IGBpbXBvcnQgJHtsb2NhbGV9IGZyb20gXCIuLyR7bG9jYWxlfVwiO2ApXG4gICAgICAuam9pbihcIlxcblwiKTtcblxuICAgIC8vIGVudGl0eUxhYmVsc+ulvCDsvZTrk5zroZwg67OA7ZmYXG4gICAgY29uc3QgZW50aXR5TGFiZWxzQ29kZSA9IHRoaXMuZ2VuZXJhdGVFbnRpdHlMYWJlbHNDb2RlKGVudGl0eUxhYmVscyk7XG5cbiAgICAvLyBsb2NhbGXrs4QgcmNLZXlzIOuzgOyImOuqhSDrp6TtlZFcbiAgICBjb25zdCBnZXRSQ0tleXNWYXJOYW1lID0gKGxvY2FsZTogc3RyaW5nKSA9PiB7XG4gICAgICAvLyBzdXBwb3J0ZWRMb2NhbGVz7JeQIO2PrO2VqOuQnCBsb2NhbGXrp4wg7ZW064u5IOuzgOyImCDrsJjtmZhcbiAgICAgIGlmIChsb2NhbGUgPT09IFwia29cIiAmJiBzdXBwb3J0ZWRMb2NhbGVzLmluY2x1ZGVzKFwia29cIikpIHJldHVybiBcInJjS2V5c0tvXCI7XG4gICAgICBpZiAobG9jYWxlID09PSBcImVuXCIgJiYgc3VwcG9ydGVkTG9jYWxlcy5pbmNsdWRlcyhcImVuXCIpKSByZXR1cm4gXCJyY0tleXNFblwiO1xuICAgICAgLy8gZmFsbGJhY2s6IGRlZmF1bHRMb2NhbGXsnZggcmNLZXlzXG4gICAgICBpZiAobG9jYWxlICE9PSBkZWZhdWx0TG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBnZXRSQ0tleXNWYXJOYW1lKGRlZmF1bHRMb2NhbGUpO1xuICAgICAgfVxuICAgICAgLy8gZGVmYXVsdExvY2FsZeyhsOywqCDsl4bripQg6rK97JqwIGVu7J2EIGZhbGxiYWNr7Jy866GcIOyCrOyaqVxuICAgICAgcmV0dXJuIFwicmNLZXlzRW5cIjtcbiAgICB9O1xuXG4gICAgY29uc3QgYm9keSA9IGBcbiR7bG9jYWxlTWFuYWdlbWVudENvZGV9XG5cbiR7bG9jYWxlSW1wb3J0c31cblxuLy8gcmVhY3QtY29tcG9uZW50cyBpMThuIGtleXNcbiR7c3VwcG9ydGVkTG9jYWxlcy5pbmNsdWRlcyhcImtvXCIpID8gcmNLZXlzU291cmNlQ29kZS5rbyA6IFwiXCJ9XG5cbiR7c3VwcG9ydGVkTG9jYWxlcy5pbmNsdWRlcyhcImVuXCIpID8gcmNLZXlzU291cmNlQ29kZS5lbiA6IFwiXCJ9XG5cbi8vIGVudGl0eS5qc29u7JeQ7IScIOy2lOy2nO2VnCBlbnRpdHkgbGFiZWxzIChkZWZhdWx0TG9jYWxlIOyghOyaqSlcbiR7ZW50aXR5TGFiZWxzQ29kZX1cblxuLy8gZGVmYXVsdExvY2FsZeydmCBkaWN0aW9uYXJ566W8IOq4sOykgOycvOuhnCDtgqQg7LaU7LacXG50eXBlIFJDS2V5cyA9IHR5cGVvZiAke2dldFJDS2V5c1Zhck5hbWUoZGVmYXVsdExvY2FsZSl9O1xudHlwZSBQcm9qZWN0RGljdGlvbmFyeSA9IHR5cGVvZiAke2RlZmF1bHRMb2NhbGV9O1xudHlwZSBFbnRpdHlMYWJlbHMgPSB0eXBlb2YgZW50aXR5TGFiZWxzO1xudHlwZSBSYXdNZXJnZWREaWN0aW9uYXJ5ID0gUkNLZXlzICYgT21pdDxFbnRpdHlMYWJlbHMsIGtleW9mIChSQ0tleXMgJiBQcm9qZWN0RGljdGlvbmFyeSk+ICYgUHJvamVjdERpY3Rpb25hcnk7XG5cbi8vIO2CpOuKlCDsnKDsp4DtlZjrkJgsIOqwkiDtg4DsnoXsnYAgc3RyaW5nIOuYkOuKlCDtlajsiJjroZwg7J2867CY7ZmUICjri6TrpbggbG9jYWxl7J2YIOumrO2EsOuftCDtg4DsnoUg7Lap64+MIOuwqeyngClcbmV4cG9ydCB0eXBlIE1lcmdlZERpY3Rpb25hcnkgPSB7XG4gIFtLIGluIGtleW9mIFJhd01lcmdlZERpY3Rpb25hcnldOiBSYXdNZXJnZWREaWN0aW9uYXJ5W0tdIGV4dGVuZHMgKC4uLmFyZ3M6IGluZmVyIFApID0+IHN0cmluZ1xuICAgID8gKC4uLmFyZ3M6IFApID0+IHN0cmluZ1xuICAgIDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIERpY3RLZXkgPSBrZXlvZiBNZXJnZWREaWN0aW9uYXJ5O1xuZXhwb3J0IHR5cGUgTG9jYWxpemVkU3RyaW5nID0gc3RyaW5nICYgeyBfX2JyYW5kOiBcIkxvY2FsaXplZFN0cmluZ1wiIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVMb2NhbGUoZGljdDogUGFydGlhbDxNZXJnZWREaWN0aW9uYXJ5Pikge1xuICByZXR1cm4gZGljdDtcbn1cblxuLy8g6rCBIGxvY2FsZeuzhOuhnCByYy1rZXlzICsgZW50aXR5IGxhYmVscyArIO2UhOuhnOygne2KuCBkaWN0IO2Vqey5qFxuY29uc3QgZGljdGlvbmFyaWVzOiBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPE1lcmdlZERpY3Rpb25hcnk+PiA9IHtcbiAgJHtkZWZhdWx0TG9jYWxlfTogeyAuLi4ke2dldFJDS2V5c1Zhck5hbWUoZGVmYXVsdExvY2FsZSl9LCAuLi5lbnRpdHlMYWJlbHMsIC4uLiR7ZGVmYXVsdExvY2FsZX0gfSxcbiAgJHtzdXBwb3J0ZWRMb2NhbGVzXG4gICAgLmZpbHRlcigobG9jYWxlKSA9PiBsb2NhbGUgIT09IGRlZmF1bHRMb2NhbGUpXG4gICAgLm1hcCgobG9jYWxlKSA9PiBgICAke2xvY2FsZX06IHsgLi4uJHtnZXRSQ0tleXNWYXJOYW1lKGxvY2FsZSl9LCAuLi4ke2xvY2FsZX0gfSxgKVxuICAgIC5qb2luKFwiXFxuXCIpfVxufTtcblxudHlwZSBTRFJldHVyblR5cGU8SyBleHRlbmRzIERpY3RLZXk+ID0gTWVyZ2VkRGljdGlvbmFyeVtLXSBleHRlbmRzICguLi5hcmdzOiBpbmZlciBQKSA9PiBzdHJpbmdcbiAgPyAoLi4uYXJnczogUCkgPT4gTG9jYWxpemVkU3RyaW5nXG4gIDogTG9jYWxpemVkU3RyaW5nO1xuXG5mdW5jdGlvbiBnZXREaWN0VmFsdWU8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSywgbG9jYWxlOiBzdHJpbmcpOiBTRFJldHVyblR5cGU8Sz4ge1xuICAvLyAxLiDsp4DsoJXrkJwgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBjb25zdCBkaWN0ID0gZGljdGlvbmFyaWVzW2xvY2FsZV07XG4gIGlmIChkaWN0Py5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDIuIGRlZmF1bHQgbG9jYWxl7JeQ7IScIOyhsO2ajFxuICBpZiAobG9jYWxlICE9PSBERUZBVUxUX0xPQ0FMRSAmJiBkaWN0aW9uYXJpZXNbREVGQVVMVF9MT0NBTEVdPy5ba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGRpY3Rpb25hcmllc1tERUZBVUxUX0xPQ0FMRV1ba2V5XSBhcyB1bmtub3duIGFzIFNEUmV0dXJuVHlwZTxLPjtcbiAgfVxuXG4gIC8vIDMuIHN1cHBvcnRlZCBsb2NhbGVzIOyInO2ajFxuICBmb3IgKGNvbnN0IHN1cHBvcnRlZExvY2FsZSBvZiBTVVBQT1JURURfTE9DQUxFUykge1xuICAgIGlmIChzdXBwb3J0ZWRMb2NhbGUgIT09IGxvY2FsZSAmJiBzdXBwb3J0ZWRMb2NhbGUgIT09IERFRkFVTFRfTE9DQUxFKSB7XG4gICAgICBpZiAoZGljdGlvbmFyaWVzW3N1cHBvcnRlZExvY2FsZV0/LltrZXldICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRpY3Rpb25hcmllc1tzdXBwb3J0ZWRMb2NhbGVdW2tleV0gYXMgdW5rbm93biBhcyBTRFJldHVyblR5cGU8Sz47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gNC4g66qo65GQIOyLpO2MqCDsi5wga2V5IOuwmO2ZmFxuICByZXR1cm4ga2V5IGFzIHVua25vd24gYXMgU0RSZXR1cm5UeXBlPEs+O1xufVxuXG4vKipcbiAqIFNvbmFtdSBEaWN0aW9uYXJ5IO2VqOyImFxuICogbG9jYWxl7JeQIOunnuuKlCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VqeuLiOuLpC5cbiAqXG4gKiBAZXhhbXBsZVxuICogU0QoXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwi7KCA7J6lXCIgKExvY2FsaXplZFN0cmluZylcbiAqIFNEKFwidXNlci5ub3RGb3VuZFwiKSgxKSAgLy8g4oaSIFwi7KG07J6s7ZWY7KeAIOyViuuKlCBVc2VyIElEIDFcIiAoTG9jYWxpemVkU3RyaW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gU0Q8SyBleHRlbmRzIERpY3RLZXk+KGtleTogSyk6IFNEUmV0dXJuVHlwZTxLPiB7XG4gIGNvbnN0IGxvY2FsZSA9IGdldEN1cnJlbnRMb2NhbGUoKTtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59XG5cbi8qKlxuICog7Yq57KCVIGxvY2FsZeydmCDrsojsl60g7YWN7Iqk7Yq466W8IOuwmO2ZmO2VmOuKlCDtlajsiJjrpbwg7IOd7ISx7ZWp64uI64ukLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBFTiA9IFNELmxvY2FsZShcImVuXCIpO1xuICogRU4oXCJjb21tb24uc2F2ZVwiKSAgLy8g4oaSIFwiU2F2ZVwiXG4gKi9cblNELmxvY2FsZSA9IChsb2NhbGU6ICh0eXBlb2YgU1VQUE9SVEVEX0xPQ0FMRVMpW251bWJlcl0pID0+IDxLIGV4dGVuZHMgRGljdEtleT4oa2V5OiBLKTogU0RSZXR1cm5UeXBlPEs+ID0+IHtcbiAgcmV0dXJuIGdldERpY3RWYWx1ZShrZXksIGxvY2FsZSk7XG59O1xuXG4vLyBMb2NhbGl6ZWQg6rCA64ql7ZWcIENvbHVtbiDtg4DsnoUg6rOE7IKwXG50eXBlIExvY2FsaXplZEJhc2VDb2x1bW48VD4gPSB7XG4gIFtLIGluIGtleW9mIFQgJiBzdHJpbmddOiBLIGV4dGVuZHMgXFxgXFwke2luZmVyIEJhc2V9X1xcJHsodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdfVxcYCA/IEJhc2UgOiBLO1xufVtrZXlvZiBUICYgc3RyaW5nXTtcblxuLyoqXG4gKiBsb2NhbGXsl5Ag65Sw6528IOyggeygiO2VnCDsu6zrn7wg6rCS7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAqIERC7JeQIG5hbWUsIG5hbWVfa28sIG5hbWVfZW7sspjrn7wgbG9jYWxpemVkIGNvbHVtbuydtCDsnojsnYQg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiDsmrDshKDsiJzsnIQgKOyngOybkCDroZzsvIDsnbzsnYAga28vanAvZW7snbTqs6AsIOyEnOu5hOyKpOydmCDquLDrs7gg66Gc7LyA7J287J2AIGtvLCDsgqzsmqnsnpDsnZgg66Gc7LyA7J287J2AIGpw7J28IOuVjCk6IGNvbHVtbl9qcCDihpIgY29sdW1uIOKGkiBjb2x1bW5fa28g4oaSIGNvbHVtbl9lblxuICog7Jqw7ISg7Iic7JyEICjsp4Dsm5Ag66Gc7LyA7J287J2AIGtvL2pwL2Vu7J206rOgLCDshJzruYTsiqTsnZgg6riw67O4IOuhnOy8gOydvOydgCBlbiwg7IKs7Jqp7J6Q7J2YIOuhnOy8gOydvOydgCBrb+ydvCDrlYwpOiBjb2x1bW5fa28g4oaSIGNvbHVtbiDihpIgY29sdW1uX2VuIOKGkiBjb2x1bW5fanBcbiAqXG4gKiBAZXhhbXBsZVxuICogbG9jYWxpemVkQ29sdW1uKHRhZywgXCJuYW1lXCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGl6ZWRDb2x1bW48VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBLIGV4dGVuZHMgTG9jYWxpemVkQmFzZUNvbHVtbjxUPj4oXG4gIHJvdzogVCxcbiAgY29sdW1uOiBLLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbG9jYWxlID0gZ2V0Q3VycmVudExvY2FsZSgpO1xuICBjb25zdCBvdGhlckxvY2FsZXMgPSBTVVBQT1JURURfTE9DQUxFUy5maWx0ZXIoKGw6IHN0cmluZykgPT4gbCAhPT0gbG9jYWxlICYmIGwgIT09IERFRkFVTFRfTE9DQUxFKTtcbiAgY29uc3QgbG9jYWxpemVkS2V5ID0gKGNvbHVtbjogSywgbG9jYWxlOiAodHlwZW9mIFNVUFBPUlRFRF9MT0NBTEVTKVtudW1iZXJdKSA9PiBcXGBcXCR7Y29sdW1ufV9cXCR7bG9jYWxlfVxcYDtcbiAgY29uc3Qga2V5cyA9IFtcbiAgICBsb2NhbGl6ZWRLZXkoY29sdW1uLCBsb2NhbGUpLFxuICAgIGNvbHVtbixcbiAgICBsb2NhbGl6ZWRLZXkoY29sdW1uLCBERUZBVUxUX0xPQ0FMRSksXG4gICAgLi4ub3RoZXJMb2NhbGVzLm1hcCgobCkgPT4gbG9jYWxpemVkS2V5KGNvbHVtbiwgbCkpLFxuICBdO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBpZiAoIShrZXkgaW4gcm93KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHJvd1trZXldICE9PSBudWxsICYmIHJvd1trZXldICE9PSB1bmRlZmluZWQgJiYgcm93W2tleV0gIT09IFwiXCIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcocm93W2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRW51beydmCBsb2NhbGl6ZWQgbGFiZWxz66W8IFByb3h566GcIOuwmO2ZmO2VqeuLiOuLpC5cbiAqIFNlbGVjdCDsu7Ttj6zrhIztirgg65Ox7JeQ7IScIEVudW1MYWJlbFtrZXldIOuMgOyLoCDsgqzsmqntlanri4jri6QuXG4gKlxuICogQGV4YW1wbGVcbiAqIFNELmVudW1MYWJlbHMoXCJUYWdPcmRlckJ5XCIpW2tleV0gIC8vIOKGkiDtmITsnqwgbG9jYWxl7J2YIOudvOuyqFxuICovXG5TRC5lbnVtTGFiZWxzID0gKGVudW1OYW1lOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBMb2NhbGl6ZWRTdHJpbmc+ID0+IHtcbiAgcmV0dXJuIG5ldyBQcm94eSh7fSBhcyBSZWNvcmQ8c3RyaW5nLCBMb2NhbGl6ZWRTdHJpbmc+LCB7XG4gICAgZ2V0KF8sIGtleTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBkaWN0S2V5ID0gXFxgZW51bS5cXCR7ZW51bU5hbWV9LlxcJHtrZXl9XFxgIGFzIERpY3RLZXk7XG4gICAgICByZXR1cm4gZ2V0RGljdFZhbHVlKGRpY3RLZXksIGdldEN1cnJlbnRMb2NhbGUoKSk7XG4gICAgfVxuICB9KTtcbn07XG5gLnRyaW0oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgodW5kZWZpbmVkLCB0YXJnZXQpLFxuICAgICAgYm9keSxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgICAgY3VzdG9tSGVhZGVyczogW1wiLyoqXCIsIFwiICogQGdlbmVyYXRlZFwiLCBcIiAqIOyngeygkSDsiJjsoJXtlZjsp4Ag66eI7IS47JqULlwiLCBcIiAqL1wiXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIHJlYWN0LWNvbXBvbmVudHPsnZggcmMta2V5c+ulvCDstpTstpztlalcbiAgICogc29uYW11L3NyYy9kaWN0L3JjLWtleXMudHMg7YyM7J287J2YIOyGjOyKpCDsvZTrk5zrpbwg7KeB7KCRIOydveyWtOyEnCDrsJjtmZhcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdFJDS2V5c1NvdXJjZUNvZGUoKTogeyBrbzogc3RyaW5nOyBlbjogc3RyaW5nIH0ge1xuICAgIHRyeSB7XG4gICAgICAvLyByYy1rZXlzLnRzIO2MjOydvCDqsr3roZxcbiAgICAgIGNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCk7XG4gICAgICBjb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoX19maWxlbmFtZSk7XG5cbiAgICAgIC8vIGRpc3Tsl5DshJwg7Iuk7ZaJ65CgIOuVjOuKlCBzcmProZwg6rK966GcIOuzgOqyvVxuICAgICAgY29uc3QgYmFzZVBhdGggPSBfX2Rpcm5hbWUuaW5jbHVkZXMoXCIvZGlzdC9cIilcbiAgICAgICAgPyBfX2Rpcm5hbWUucmVwbGFjZShcIi9kaXN0L1wiLCBcIi9zcmMvXCIpXG4gICAgICAgIDogX19kaXJuYW1lO1xuXG4gICAgICBjb25zdCByY0tleXNQYXRoID0gcGF0aC5qb2luKGJhc2VQYXRoLCBcIi4uLy4uL2RpY3QvcmMta2V5cy50c1wiKTtcblxuICAgICAgLy8g7YyM7J28IOydveq4sFxuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IGZzLnJlYWRGaWxlU3luYyhyY0tleXNQYXRoLCBcInV0Zi04XCIpO1xuXG4gICAgICAvLyByY0tleXNLbyDstpTstpwgKOykkeq0hO2YuCDsubTsmrTtjIUg67Cp7IudKVxuICAgICAgY29uc3Qga29Db2RlID0gZXh0cmFjdE9iamVjdERlY2xhcmF0aW9uKHNvdXJjZUNvZGUsIFwicmNLZXlzS29cIik7XG5cbiAgICAgIC8vIHJjS2V5c0VuIOy2lOy2nCAo7KSR6rSE7Zi4IOy5tOyatO2MhSDrsKnsi50pXG4gICAgICBjb25zdCBlbkNvZGUgPSBleHRyYWN0T2JqZWN0RGVjbGFyYXRpb24oc291cmNlQ29kZSwgXCJyY0tleXNFblwiKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAga286IGtvQ29kZS5yZXBsYWNlKC9eZXhwb3J0IC8sIFwiXCIpLFxuICAgICAgICBlbjogZW5Db2RlLnJlcGxhY2UoL15leHBvcnQgLywgXCJcIikucmVwbGFjZSgvIHNhdGlzZmllcyBSQ0tleXMvLCBcIiBhcyBjb25zdFwiKSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIHJjLWtleXMg7YyM7J287J20IOyXhuuKlCDqsr3smrAg67mIIOy9lOuTnCDrsJjtmZhcbiAgICAgIGNvbnNvbGUud2FybihcIkZhaWxlZCB0byBsb2FkIHJjLWtleXMgc291cmNlOlwiLCBlcnJvcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrbzogXCJjb25zdCByY0tleXNLbyA9IHt9IGFzIGNvbnN0O1wiLFxuICAgICAgICBlbjogXCJjb25zdCByY0tleXNFbiA9IHt9IGFzIGNvbnN0O1wiLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog66qo65OgIGVudGl0eS5qc29u7JeQ7IScIGVudGl0eSBsYWJlbHMg7LaU7LacXG4gICAqIGVudGl0eS5qc29u7JeQ7IScIOyngeygkSDqtIDrpqzrkJjripQg6rCS66eMIO2PrO2VqCAo7J6Q64+ZIOyDneyEsSDqsJIg7KCc7Jm4KVxuICAgKiAtIGVudGl0eS57ZW50aXR5SWR9OiBlbnRpdHkgdGl0bGVcbiAgICogLSBlbnRpdHkue2VudGl0eUlkfS57cHJvcE5hbWV9OiBwcm9wIGRlc2NcbiAgICogLSBlbnVtLntFbnVtSWR9Lnt2YWx1ZX06IGVudW0gbGFiZWxcbiAgICovXG4gIHByaXZhdGUgZXh0cmFjdEVudGl0eUxhYmVscygpOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSB7XG4gICAgY29uc3QgbGFiZWxzOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSA9IFtdO1xuXG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmlzQXV0b2xvYWRlZCkge1xuICAgICAgcmV0dXJuIGxhYmVscztcbiAgICB9XG5cbiAgICBjb25zdCBlbnRpdHlJZHMgPSBFbnRpdHlNYW5hZ2VyLmdldEFsbElkcygpO1xuXG4gICAgZm9yIChjb25zdCBlbnRpdHlJZCBvZiBlbnRpdHlJZHMpIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcblxuICAgICAgLy8gZW50aXR5IHRpdGxlIChlbnRpdHkuanNvbuyXkOyEnCDqtIDrpqwpXG4gICAgICBsYWJlbHMucHVzaCh7IGtleTogYGVudGl0eS4ke2VudGl0eUlkfWAsIHZhbHVlOiBlbnRpdHkudGl0bGUgfSk7XG5cbiAgICAgIC8vIHByb3AgbGFiZWxzIChlbnRpdHkuanNvbuyXkOyEnCDqtIDrpqwpXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgZW50aXR5LnByb3BzKSB7XG4gICAgICAgIGlmIChwcm9wLmRlc2MpIHtcbiAgICAgICAgICBsYWJlbHMucHVzaCh7IGtleTogYGVudGl0eS4ke2VudGl0eUlkfS4ke3Byb3AubmFtZX1gLCB2YWx1ZTogcHJvcC5kZXNjIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGVudW0gbGFiZWxzIChlbnRpdHkuanNvbuyXkOyEnCDqtIDrpqwpXG4gICAgICBmb3IgKGNvbnN0IFtlbnVtSWQsIGVudW1MYWJlbHNNYXBdIG9mIE9iamVjdC5lbnRyaWVzKGVudGl0eS5lbnVtTGFiZWxzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IFt2YWx1ZSwgbGFiZWxdIG9mIE9iamVjdC5lbnRyaWVzKGVudW1MYWJlbHNNYXApKSB7XG4gICAgICAgICAgbGFiZWxzLnB1c2goeyBrZXk6IGBlbnVtLiR7ZW51bUlkfS4ke3ZhbHVlfWAsIHZhbHVlOiBsYWJlbCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICAvKipcbiAgICogZW50aXR5TGFiZWxz66W8IFR5cGVTY3JpcHQg7L2U65Oc66GcIOuzgO2ZmFxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUVudGl0eUxhYmVsc0NvZGUobGFiZWxzOiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXSk6IHN0cmluZyB7XG4gICAgaWYgKGxhYmVscy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBcImNvbnN0IGVudGl0eUxhYmVscyA9IHt9IGFzIGNvbnN0O1wiO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSBsYWJlbHMubWFwKCh7IGtleSwgdmFsdWUgfSkgPT4gYCAgXCIke2tleX1cIjogXCIke3RoaXMuZXNjYXBlU3RyaW5nKHZhbHVlKX1cIixgKTtcblxuICAgIHJldHVybiBgY29uc3QgZW50aXR5TGFiZWxzID0ge1xuJHtlbnRyaWVzLmpvaW4oXCJcXG5cIil9XG59IGFzIGNvbnN0O2A7XG4gIH1cblxuICBwcml2YXRlIGVzY2FwZVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIikucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZnMiLCJwYXRoIiwiZmlsZVVSTFRvUGF0aCIsIlNvbmFtdSIsIkVudGl0eU1hbmFnZXIiLCJleHRyYWN0T2JqZWN0RGVjbGFyYXRpb24iLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX19zZCIsImdldFRhcmdldEFuZFBhdGgiLCJfbmFtZXMiLCJzZFRhcmdldCIsInRhcmdldCIsImRpciIsImNvbmZpZyIsImFwaSIsInJlbmRlciIsIm9wdGlvbnMiLCJpMThuQ29uZmlnIiwiaTE4biIsImRlZmF1bHRMb2NhbGUiLCJzdXBwb3J0ZWRMb2NhbGVzIiwiZW50aXR5TGFiZWxzIiwiZXh0cmFjdEVudGl0eUxhYmVscyIsInJjS2V5c1NvdXJjZUNvZGUiLCJleHRyYWN0UkNLZXlzU291cmNlQ29kZSIsImxvY2FsZU1hbmFnZW1lbnRDb2RlIiwiSlNPTiIsInN0cmluZ2lmeSIsInRyaW0iLCJsb2NhbGVJbXBvcnRzIiwibWFwIiwibG9jYWxlIiwiam9pbiIsImVudGl0eUxhYmVsc0NvZGUiLCJnZW5lcmF0ZUVudGl0eUxhYmVsc0NvZGUiLCJnZXRSQ0tleXNWYXJOYW1lIiwiaW5jbHVkZXMiLCJib2R5Iiwia28iLCJlbiIsImZpbHRlciIsInVuZGVmaW5lZCIsImltcG9ydEtleXMiLCJjdXN0b21IZWFkZXJzIiwiX19maWxlbmFtZSIsInVybCIsIl9fZGlybmFtZSIsImRpcm5hbWUiLCJiYXNlUGF0aCIsInJlcGxhY2UiLCJyY0tleXNQYXRoIiwic291cmNlQ29kZSIsInJlYWRGaWxlU3luYyIsImtvQ29kZSIsImVuQ29kZSIsImVycm9yIiwiY29uc29sZSIsIndhcm4iLCJsYWJlbHMiLCJpc0F1dG9sb2FkZWQiLCJlbnRpdHlJZHMiLCJnZXRBbGxJZHMiLCJlbnRpdHlJZCIsImVudGl0eSIsImdldCIsInB1c2giLCJrZXkiLCJ2YWx1ZSIsInRpdGxlIiwicHJvcCIsInByb3BzIiwiZGVzYyIsIm5hbWUiLCJlbnVtSWQiLCJlbnVtTGFiZWxzTWFwIiwiT2JqZWN0IiwiZW50cmllcyIsImVudW1MYWJlbHMiLCJsYWJlbCIsImxlbmd0aCIsImVzY2FwZVN0cmluZyIsInN0ciJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsUUFBUSxVQUFVO0FBQ3pCLE9BQU9DLFVBQVUsWUFBWTtBQUM3QixTQUFTQyxhQUFhLFFBQVEsV0FBVztBQUN6QyxTQUFTQyxNQUFNLFFBQVEsc0JBQW1CO0FBQzFDLFNBQVNDLGFBQWEsUUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/services.template.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,kBAAmB,SAAQ,QAAQ;;IAK9C,gBAAgB;;;;IAOhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC;;;;;;;
|
|
1
|
+
{"version":3,"file":"services.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/services.template.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,kBAAmB,SAAQ,QAAQ;;IAK9C,gBAAgB;;;;IAOhB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,UAAU,CAAC;;;;;;;CAkWvC"}
|