sonamu 0.10.12 → 0.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/agents/agent.d.ts +1 -1
- package/dist/ai/agents/agent.d.ts.map +1 -1
- package/dist/ai/agents/agent.js +5 -6
- package/dist/ai/agents/types.d.ts +1 -1
- package/dist/ai/agents/types.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/api.js +18 -18
- package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/error.js +17 -15
- package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/model.js +3 -2
- package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/options.js +16 -16
- package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/provider.js +9 -9
- package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
- package/dist/ai/providers/rtzr/utils.js +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +17 -17
- package/dist/api/code-converters.d.ts +4 -2
- package/dist/api/code-converters.d.ts.map +1 -1
- package/dist/api/code-converters.js +100 -19
- package/dist/api/config.d.ts +16 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +28 -21
- package/dist/api/context.d.ts +2 -2
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +1 -1
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js +18 -11
- package/dist/api/http-validator.d.ts +36 -0
- package/dist/api/http-validator.d.ts.map +1 -0
- package/dist/api/http-validator.js +72 -0
- package/dist/api/index.js +6 -4
- package/dist/api/sonamu.d.ts +59 -20
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +250 -106
- package/dist/api/websocket-helpers.d.ts +7 -5
- package/dist/api/websocket-helpers.d.ts.map +1 -1
- package/dist/api/websocket-helpers.js +6 -6
- package/dist/auth/audit-log/builders.d.ts.map +1 -1
- package/dist/auth/audit-log/builders.js +1 -1
- package/dist/auth/audit-log/client-ip.d.ts +1 -1
- package/dist/auth/audit-log/client-ip.d.ts.map +1 -1
- package/dist/auth/audit-log/client-ip.js +4 -2
- package/dist/auth/audit-log/events.d.ts +5 -1
- package/dist/auth/audit-log/events.d.ts.map +1 -1
- package/dist/auth/audit-log/events.js +1 -1
- package/dist/auth/audit-log/plugin.d.ts +0 -8
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +48 -52
- package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
- package/dist/auth/audit-log-ingestor.js +16 -12
- package/dist/auth/auth-generator.d.ts.map +1 -1
- package/dist/auth/auth-generator.js +1 -1
- package/dist/auth/better-auth-request.d.ts.map +1 -1
- package/dist/auth/better-auth-request.js +6 -5
- package/dist/auth/knex-adapter.js +1 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts +13 -1
- package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
- package/dist/auth/plugins/entity-definitions/index.js +1 -1
- package/dist/auth/plugins/wrappers/admin.d.ts +1 -1
- package/dist/bin/build-config.d.ts +25 -0
- package/dist/bin/build-config.d.ts.map +1 -1
- package/dist/bin/build-config.js +105 -2
- package/dist/bin/cli.js +131 -27
- package/dist/bin/compiler-policy.d.ts +3 -0
- package/dist/bin/compiler-policy.d.ts.map +1 -0
- package/dist/bin/compiler-policy.js +24 -0
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +5 -3
- package/dist/bin/test-command.d.ts +22 -1
- package/dist/bin/test-command.d.ts.map +1 -1
- package/dist/bin/test-command.js +18 -10
- package/dist/bin/ts-loader-registration.d.ts +7 -1
- package/dist/bin/ts-loader-registration.d.ts.map +1 -1
- package/dist/bin/ts-loader-registration.js +13 -4
- package/dist/cache/decorator.d.ts.map +1 -1
- package/dist/cache/decorator.js +11 -4
- package/dist/compress/compress.d.ts.map +1 -1
- package/dist/compress/compress.js +1 -1
- package/dist/cone/cone-generator.d.ts +14 -1
- package/dist/cone/cone-generator.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +13 -9
- package/dist/database/_batch_update.js +1 -1
- package/dist/database/base-model.d.ts +22 -10
- package/dist/database/base-model.d.ts.map +1 -1
- package/dist/database/base-model.js +26 -16
- package/dist/database/base-model.types.d.ts +15 -3
- package/dist/database/base-model.types.d.ts.map +1 -1
- package/dist/database/db.d.ts +12 -2
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +10 -7
- package/dist/database/knex.d.ts.map +1 -1
- package/dist/database/knex.js +17 -14
- package/dist/database/puri.d.ts +11 -9
- package/dist/database/puri.d.ts.map +1 -1
- package/dist/database/puri.js +93 -79
- package/dist/database/puri.types.d.ts +21 -21
- package/dist/database/puri.types.d.ts.map +1 -1
- package/dist/database/puri.types.js +1 -1
- package/dist/database/upsert-builder.d.ts +12 -10
- package/dist/database/upsert-builder.d.ts.map +1 -1
- package/dist/database/upsert-builder.js +20 -12
- package/dist/dict/sd.d.ts.map +1 -1
- package/dist/dict/sd.js +1 -1
- package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
- package/dist/dict/sonamu-dictionary.js +1 -1
- package/dist/dict/utils.d.ts.map +1 -1
- package/dist/dict/utils.js +7 -2
- package/dist/entity/entity-manager.d.ts +13 -4
- package/dist/entity/entity-manager.d.ts.map +1 -1
- package/dist/entity/entity-manager.js +19 -11
- package/dist/entity/entity-template-cone.d.ts +73 -5
- package/dist/entity/entity-template-cone.d.ts.map +1 -1
- package/dist/entity/entity-template-cone.js +4 -2
- package/dist/entity/entity.d.ts +6 -2
- package/dist/entity/entity.d.ts.map +1 -1
- package/dist/entity/entity.js +30 -28
- package/dist/env.d.ts +3 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +1 -1
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +7 -2
- package/dist/exceptions/so-exceptions.d.ts +24 -20
- package/dist/exceptions/so-exceptions.d.ts.map +1 -1
- package/dist/exceptions/so-exceptions.js +4 -2
- package/dist/filter/utils.d.ts +7 -2
- package/dist/filter/utils.d.ts.map +1 -1
- package/dist/filter/utils.js +8 -6
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -6
- package/dist/logger/configure.d.ts.map +1 -1
- package/dist/logger/configure.js +10 -10
- package/dist/migration/code-generation.d.ts.map +1 -1
- package/dist/migration/code-generation.js +50 -46
- package/dist/migration/index-where-predicate.d.ts.map +1 -1
- package/dist/migration/index-where-predicate.js +22 -8
- package/dist/migration/migration-set.d.ts.map +1 -1
- package/dist/migration/migration-set.js +1 -1
- package/dist/migration/migrator.d.ts +3 -2
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +27 -21
- package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
- package/dist/migration/postgresql-schema-reader.js +51 -36
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +1 -1
- package/dist/naite/naite-reporter.js +2 -2
- package/dist/naite/naite.d.ts +74 -15
- package/dist/naite/naite.d.ts.map +1 -1
- package/dist/naite/naite.js +5 -19
- package/dist/runtime-type.d.ts +6 -0
- package/dist/runtime-type.d.ts.map +1 -0
- package/dist/runtime-type.js +26 -0
- package/dist/ssr/hmr-opt-out.d.ts +26 -0
- package/dist/ssr/hmr-opt-out.d.ts.map +1 -0
- package/dist/ssr/hmr-opt-out.js +59 -0
- package/dist/ssr/renderer.d.ts.map +1 -1
- package/dist/ssr/renderer.js +4 -1
- package/dist/storage/base-file.js +14 -14
- package/dist/storage/buffered-file.d.ts +2 -2
- package/dist/storage/buffered-file.d.ts.map +1 -1
- package/dist/storage/buffered-file.js +12 -12
- package/dist/storage/s3-driver.d.ts.map +1 -1
- package/dist/storage/s3-driver.js +1 -1
- package/dist/storage/uploaded-file.d.ts +2 -2
- package/dist/storage/uploaded-file.d.ts.map +1 -1
- package/dist/storage/uploaded-file.js +8 -8
- package/dist/stream/sse.js +11 -11
- package/dist/stream/ws-core.d.ts +1 -1
- package/dist/stream/ws-core.d.ts.map +1 -1
- package/dist/stream/ws-delivery.d.ts +1 -1
- package/dist/stream/ws-delivery.d.ts.map +1 -1
- package/dist/stream/ws-delivery.js +6 -4
- package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
- package/dist/stream/ws-local-connection-store.js +4 -2
- package/dist/stream/ws-presence-store.js +1 -1
- package/dist/stream/ws-registry.d.ts +4 -4
- package/dist/stream/ws-registry.d.ts.map +1 -1
- package/dist/stream/ws-registry.js +4 -2
- package/dist/stream/ws-telemetry.d.ts +16 -12
- package/dist/stream/ws-telemetry.d.ts.map +1 -1
- package/dist/stream/ws-telemetry.js +22 -18
- package/dist/stream/ws.d.ts +18 -12
- package/dist/stream/ws.d.ts.map +1 -1
- package/dist/stream/ws.js +26 -22
- package/dist/syncer/api-parser.js +1 -1
- package/dist/syncer/checksum.d.ts.map +1 -1
- package/dist/syncer/checksum.js +7 -8
- package/dist/syncer/code-generator.d.ts.map +1 -1
- package/dist/syncer/code-generator.js +13 -14
- package/dist/syncer/entity-operations.d.ts.map +1 -1
- package/dist/syncer/entity-operations.js +5 -6
- package/dist/syncer/file-copy.d.ts +5 -0
- package/dist/syncer/file-copy.d.ts.map +1 -0
- package/dist/syncer/file-copy.js +36 -0
- package/dist/syncer/file-patterns.d.ts +1 -0
- package/dist/syncer/file-patterns.d.ts.map +1 -1
- package/dist/syncer/file-patterns.js +5 -2
- package/dist/syncer/file-tracking.d.ts.map +1 -1
- package/dist/syncer/file-tracking.js +5 -4
- package/dist/syncer/filesystem-dependencies.d.ts +15 -0
- package/dist/syncer/filesystem-dependencies.d.ts.map +1 -0
- package/dist/syncer/filesystem-dependencies.js +53 -0
- package/dist/syncer/module-loader.d.ts +1 -1
- package/dist/syncer/module-loader.d.ts.map +1 -1
- package/dist/syncer/module-loader.js +6 -4
- package/dist/syncer/syncer-actions.d.ts +4 -0
- package/dist/syncer/syncer-actions.d.ts.map +1 -1
- package/dist/syncer/syncer-actions.js +34 -17
- package/dist/syncer/syncer.d.ts +17 -6
- package/dist/syncer/syncer.d.ts.map +1 -1
- package/dist/syncer/syncer.js +71 -29
- package/dist/syncer/watcher.d.ts.map +1 -1
- package/dist/syncer/watcher.js +3 -3
- package/dist/tasks/decorator.d.ts +6 -6
- package/dist/tasks/decorator.d.ts.map +1 -1
- package/dist/tasks/decorator.js +4 -4
- package/dist/tasks/step-wrapper.d.ts +6 -4
- package/dist/tasks/step-wrapper.d.ts.map +1 -1
- package/dist/tasks/step-wrapper.js +5 -5
- package/dist/tasks/workflow-manager.d.ts.map +1 -1
- package/dist/tasks/workflow-manager.js +13 -7
- package/dist/template/entity-converter.d.ts +1 -1
- package/dist/template/entity-converter.d.ts.map +1 -1
- package/dist/template/entity-converter.js +2 -2
- package/dist/template/helpers.d.ts +8 -6
- package/dist/template/helpers.d.ts.map +1 -1
- package/dist/template/helpers.js +1 -1
- package/dist/template/implementations/generated.template.d.ts.map +1 -1
- package/dist/template/implementations/generated.template.js +4 -4
- package/dist/template/implementations/generated_http.template.d.ts +7 -4
- package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_http.template.js +21 -21
- package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
- package/dist/template/implementations/generated_sso.template.js +6 -3
- package/dist/template/implementations/http_validators.template.d.ts +18 -0
- package/dist/template/implementations/http_validators.template.d.ts.map +1 -0
- package/dist/template/implementations/http_validators.template.js +127 -0
- package/dist/template/implementations/model.template.d.ts.map +1 -1
- package/dist/template/implementations/model.template.js +1 -1
- package/dist/template/implementations/queries.template.js +1 -1
- package/dist/template/implementations/sd.template.d.ts.map +1 -1
- package/dist/template/implementations/sd.template.js +79 -39
- package/dist/template/implementations/services.template.d.ts.map +1 -1
- package/dist/template/implementations/services.template.js +6 -4
- package/dist/template/implementations/view_form.template.d.ts +6 -1
- package/dist/template/implementations/view_form.template.d.ts.map +1 -1
- package/dist/template/implementations/view_form.template.js +23 -15
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +11 -6
- package/dist/template/template-manager.d.ts.map +1 -1
- package/dist/template/template-manager.js +9 -7
- package/dist/template/template-types.d.ts +12 -5
- package/dist/template/template-types.d.ts.map +1 -1
- package/dist/template/template-types.js +1 -1
- package/dist/template/template.d.ts +2 -2
- package/dist/template/template.d.ts.map +1 -1
- package/dist/template/template.js +6 -4
- package/dist/template/zod-converter.d.ts +0 -19
- package/dist/template/zod-converter.d.ts.map +1 -1
- package/dist/template/zod-converter.js +100 -84
- package/dist/testing/_relation-graph.d.ts.map +1 -1
- package/dist/testing/_relation-graph.js +2 -1
- package/dist/testing/bootstrap.d.ts.map +1 -1
- package/dist/testing/bootstrap.js +9 -6
- package/dist/testing/data-explorer.d.ts +32 -7
- package/dist/testing/data-explorer.d.ts.map +1 -1
- package/dist/testing/data-explorer.js +77 -31
- package/dist/testing/dev-test-routes.d.ts +8 -1
- package/dist/testing/dev-test-routes.d.ts.map +1 -1
- package/dist/testing/dev-test-routes.js +125 -108
- package/dist/testing/dev-vitest-manager.d.ts +54 -8
- package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
- package/dist/testing/dev-vitest-manager.js +24 -9
- package/dist/testing/faker-mappings.d.ts +412 -1
- package/dist/testing/faker-mappings.d.ts.map +1 -1
- package/dist/testing/faker-mappings.js +1 -1
- package/dist/testing/filesystem.d.ts +2 -0
- package/dist/testing/filesystem.d.ts.map +1 -0
- package/dist/testing/filesystem.js +7 -0
- package/dist/testing/fixture-generator.d.ts +25 -8
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +132 -73
- package/dist/testing/fixture-loader.d.ts +3 -1
- package/dist/testing/fixture-loader.d.ts.map +1 -1
- package/dist/testing/fixture-loader.js +1 -20
- package/dist/testing/fixture-manager.d.ts +8 -7
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +91 -59
- package/dist/testing/global-setup.d.ts.map +1 -1
- package/dist/testing/global-setup.js +5 -2
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +6 -3
- package/dist/types/types.d.ts +101 -99
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/types.js +234 -225
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +1 -1
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +28 -18
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +135 -128
- package/dist/ui/async-route.d.ts +3 -0
- package/dist/ui/async-route.d.ts.map +1 -0
- package/dist/ui/async-route.js +12 -0
- package/dist/ui/cdd-service.d.ts +9 -7
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +7 -5
- package/dist/ui/migrations-api.d.ts.map +1 -1
- package/dist/ui/migrations-api.js +17 -15
- package/dist/ui-web/assets/index-DV1AAq6W.js +178 -0
- package/dist/ui-web/index.html +1 -1
- package/dist/utils/formatter.d.ts.map +1 -1
- package/dist/utils/formatter.js +7 -5
- package/dist/utils/fs-utils.d.ts +3 -3
- package/dist/utils/fs-utils.d.ts.map +1 -1
- package/dist/utils/fs-utils.js +6 -6
- package/dist/utils/model.d.ts +3 -5
- package/dist/utils/model.d.ts.map +1 -1
- package/dist/utils/model.js +1 -1
- package/dist/utils/object-utils.d.ts +1 -1
- package/dist/utils/object-utils.d.ts.map +1 -1
- package/dist/utils/object-utils.js +17 -16
- package/dist/utils/process-utils.d.ts.map +1 -1
- package/dist/utils/process-utils.js +4 -2
- package/dist/utils/runtime-value.d.ts +13 -0
- package/dist/utils/runtime-value.d.ts.map +1 -0
- package/dist/utils/runtime-value.js +40 -0
- package/dist/utils/sql-parser.d.ts +8 -1
- package/dist/utils/sql-parser.d.ts.map +1 -1
- package/dist/utils/sql-parser.js +6 -3
- package/dist/utils/type-utils.d.ts.map +1 -1
- package/dist/utils/type-utils.js +10 -8
- package/dist/utils/utils.d.ts +2 -2
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js +11 -8
- package/dist/utils/zod-error.d.ts.map +1 -1
- package/dist/utils/zod-error.js +7 -4
- package/dist/vector/chunking.d.ts.map +1 -1
- package/dist/vector/chunking.js +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/dist/vector/embedding.js +1 -1
- package/dist/vector/types.d.ts +3 -2
- package/dist/vector/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/ai/agents/agent.ts +5 -5
- package/src/ai/agents/types.ts +1 -1
- package/src/ai/providers/rtzr/__tests__/model.test.ts +2 -2
- package/src/ai/providers/rtzr/error.ts +5 -3
- package/src/ai/providers/rtzr/model.ts +3 -2
- package/src/ai/providers/rtzr/options.ts +10 -5
- package/src/ai/providers/rtzr/provider.ts +10 -10
- package/src/ai/providers/rtzr/utils.ts +3 -1
- package/src/api/__tests__/config.test.ts +11 -21
- package/src/api/__tests__/sonamu.http-validator.test.ts +512 -0
- package/src/api/__tests__/sonamu.websocket.test.ts +51 -41
- package/src/api/__tests__/zod-compiler-policy.test.ts +95 -0
- package/src/api/caster.ts +6 -8
- package/src/api/code-converters.ts +136 -36
- package/src/api/config.ts +62 -4
- package/src/api/context.ts +3 -3
- package/src/api/decorators.ts +28 -17
- package/src/api/http-validator.ts +149 -0
- package/src/api/sonamu.ts +459 -152
- package/src/api/websocket-helpers.ts +24 -17
- package/src/auth/audit-log/builders.ts +3 -2
- package/src/auth/audit-log/client-ip.ts +4 -2
- package/src/auth/audit-log/events.ts +15 -1
- package/src/auth/audit-log/plugin.ts +129 -200
- package/src/auth/audit-log-ingestor.ts +19 -15
- package/src/auth/auth-generator.ts +10 -5
- package/src/auth/better-auth-request.ts +4 -3
- package/src/auth/knex-adapter.ts +8 -2
- package/src/auth/plugins/entity-definitions/index.ts +6 -5
- package/src/bin/__tests__/http-validator-benchmark.test.ts +94 -0
- package/src/bin/__tests__/test-command.test.ts +9 -15
- package/src/bin/__tests__/ts-loader-register.test.ts +15 -17
- package/src/bin/__tests__/zod-compiler-build.test.ts +307 -0
- package/src/bin/build-config.ts +167 -0
- package/src/bin/cli.ts +153 -36
- package/src/bin/compiler-policy.ts +35 -0
- package/src/bin/fixture.ts +14 -3
- package/src/bin/test-command.ts +74 -29
- package/src/bin/ts-loader-registration.ts +22 -4
- package/src/cache/decorator.ts +10 -3
- package/src/compress/compress.ts +17 -4
- package/src/cone/cone-generator.ts +34 -6
- package/src/database/__tests__/db.test.ts +1 -0
- package/src/database/__tests__/puri.test.ts +16 -15
- package/src/database/__tests__/transaction-scope.test.ts +5 -0
- package/src/database/_batch_update.ts +1 -0
- package/src/database/base-model.ts +81 -50
- package/src/database/base-model.types.ts +6 -6
- package/src/database/db.ts +29 -19
- package/src/database/knex.ts +30 -17
- package/src/database/puri-subset.test-d.ts +17 -0
- package/src/database/puri.ts +181 -143
- package/src/database/puri.types.test-d.ts +31 -1
- package/src/database/puri.types.ts +23 -21
- package/src/database/upsert-builder.ts +75 -53
- package/src/dict/sd.ts +15 -5
- package/src/dict/sonamu-dictionary.ts +6 -6
- package/src/dict/utils.ts +9 -1
- package/src/entity/entity-manager.ts +26 -9
- package/src/entity/entity-template-cone.ts +5 -10
- package/src/entity/entity.ts +50 -34
- package/src/env.ts +7 -3
- package/src/exceptions/error-handler.ts +17 -2
- package/src/exceptions/so-exceptions.ts +26 -20
- package/src/filter/utils.ts +21 -11
- package/src/index.ts +3 -0
- package/src/logger/configure.ts +26 -18
- package/src/migration/__tests__/migrator.test.ts +50 -57
- package/src/migration/code-generation.ts +132 -104
- package/src/migration/index-where-predicate.ts +51 -24
- package/src/migration/migration-set.ts +11 -5
- package/src/migration/migrator.ts +68 -41
- package/src/migration/postgresql-schema-reader.ts +52 -47
- package/src/migration/slack-confirm.ts +17 -15
- package/src/naite/naite-reporter.ts +1 -1
- package/src/naite/naite.ts +97 -24
- package/src/runtime-type.ts +34 -0
- package/src/ssr/hmr-opt-out.ts +78 -0
- package/src/ssr/renderer.ts +6 -0
- package/src/storage/base-file.ts +13 -13
- package/src/storage/buffered-file.ts +11 -11
- package/src/storage/s3-driver.ts +4 -1
- package/src/storage/uploaded-file.ts +8 -8
- package/src/stream/__tests__/ws-contracts.test.ts +4 -2
- package/src/stream/__tests__/ws-telemetry.test.ts +1 -1
- package/src/stream/__tests__/ws.test.ts +30 -6
- package/src/stream/sse.ts +12 -11
- package/src/stream/ws-core.ts +1 -1
- package/src/stream/ws-delivery.ts +16 -7
- package/src/stream/ws-local-connection-store.ts +2 -3
- package/src/stream/ws-presence-store.ts +6 -1
- package/src/stream/ws-registry.ts +16 -7
- package/src/stream/ws-telemetry.ts +66 -43
- package/src/stream/ws.ts +73 -39
- package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +3 -2
- package/src/syncer/__tests__/http-validator-registry.test.ts +137 -0
- package/src/syncer/api-parser.ts +67 -27
- package/src/syncer/checksum.ts +17 -11
- package/src/syncer/code-generator.ts +25 -17
- package/src/syncer/entity-operations.ts +3 -5
- package/src/syncer/file-copy.ts +46 -0
- package/src/syncer/file-patterns.ts +11 -8
- package/src/syncer/file-tracking.ts +3 -4
- package/src/syncer/filesystem-dependencies.ts +73 -0
- package/src/syncer/module-loader.ts +8 -4
- package/src/syncer/syncer-actions.ts +56 -18
- package/src/syncer/syncer.ts +116 -43
- package/src/syncer/watcher.ts +8 -4
- package/src/tasks/decorator.ts +20 -12
- package/src/tasks/step-wrapper.ts +19 -9
- package/src/tasks/workflow-manager.ts +15 -9
- package/src/template/__tests__/http_validators.template.test.ts +160 -0
- package/src/template/__tests__/services.template.mutation.test.ts +24 -23
- package/src/template/__tests__/services.template.websocket.test.ts +21 -25
- package/src/template/entity-converter.ts +5 -2
- package/src/template/helpers.ts +8 -9
- package/src/template/implementations/generated.template.ts +5 -4
- package/src/template/implementations/generated_http.template.ts +61 -15
- package/src/template/implementations/generated_sso.template.ts +15 -4
- package/src/template/implementations/http_validators.template.ts +175 -0
- package/src/template/implementations/model.template.ts +3 -1
- package/src/template/implementations/sd.template.ts +81 -41
- package/src/template/implementations/services.template.ts +2 -2
- package/src/template/implementations/view_form.template.ts +56 -39
- package/src/template/implementations/view_list.template.ts +31 -23
- package/src/template/template-manager.ts +15 -13
- package/src/template/template-types.ts +13 -5
- package/src/template/template.ts +4 -3
- package/src/template/zod-converter.ts +206 -91
- package/src/testing/__tests__/dev-test-routes.test.ts +85 -25
- package/src/testing/__tests__/dev-vitest-manager.test.ts +15 -15
- package/src/testing/_relation-graph.ts +4 -1
- package/src/testing/bootstrap.ts +12 -5
- package/src/testing/data-explorer.ts +102 -53
- package/src/testing/dev-test-routes.ts +87 -50
- package/src/testing/dev-vitest-manager.ts +88 -32
- package/src/testing/faker-mappings.ts +2 -2
- package/src/testing/filesystem.ts +1 -0
- package/src/testing/fixture-generator.ts +191 -131
- package/src/testing/fixture-loader.ts +5 -1
- package/src/testing/fixture-manager.ts +129 -90
- package/src/testing/global-setup.ts +7 -3
- package/src/testing/index.ts +5 -0
- package/src/types/__tests__/entity-json-schema-search-text.test.ts +9 -3
- package/src/types/types.ts +184 -158
- package/src/ui/ai-api.ts +9 -7
- package/src/ui/ai-client.ts +61 -56
- package/src/ui/api.ts +727 -616
- package/src/ui/async-route.ts +4 -0
- package/src/ui/cdd-service.ts +35 -12
- package/src/ui/migrations-api.ts +63 -51
- package/src/utils/formatter.ts +7 -3
- package/src/utils/fs-utils.ts +5 -5
- package/src/utils/model.ts +4 -5
- package/src/utils/object-utils.ts +32 -22
- package/src/utils/process-utils.ts +4 -1
- package/src/utils/runtime-value.ts +43 -0
- package/src/utils/sql-parser.ts +13 -6
- package/src/utils/type-utils.ts +9 -7
- package/src/utils/utils.ts +19 -21
- package/src/utils/zod-error.ts +4 -2
- package/src/vector/chunking.ts +6 -1
- package/src/vector/embedding.ts +2 -1
- package/src/vector/types.ts +4 -2
- package/tsdown.api.config.ts +5 -2
- package/dist/ui-web/assets/index-C0m1pk6K.js +0 -177
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-where-predicate.d.ts","sourceRoot":"","sources":["../../src/migration/index-where-predicate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index-where-predicate.d.ts","sourceRoot":"","sources":["../../src/migration/index-where-predicate.ts"],"names":[],"mappings":"AA6BA;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAY1F;AAED;;;GAGG;AACH,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,GAAG,SAAS,CAQpB"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { init_runtime_value, isNumberValue, isObjectValue, isStringValue } from "../utils/runtime-value.js";
|
|
3
|
+
import { init_runtime_type, isBooleanValue } from "../runtime-type.js";
|
|
2
4
|
import SqlParser from "node-sql-parser";
|
|
3
5
|
//#region src/migration/index-where-predicate.ts
|
|
6
|
+
function parseSqlAstValue(value) {
|
|
7
|
+
if (value === null) return null;
|
|
8
|
+
if (value === void 0) return void 0;
|
|
9
|
+
if (isBooleanValue(value)) return value;
|
|
10
|
+
if (isNumberValue(value)) return value;
|
|
11
|
+
if (isStringValue(value)) return value;
|
|
12
|
+
if (Array.isArray(value)) return value.map(parseSqlAstValue);
|
|
13
|
+
if (isObjectValue(value)) return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, parseSqlAstValue(child)]));
|
|
14
|
+
throw new Error("지원하지 않는 SQL AST 값입니다");
|
|
15
|
+
}
|
|
4
16
|
/**
|
|
5
17
|
* Migration DDL 출력에 사용할 index predicate를 정리한다.
|
|
6
18
|
* 원본 SQL 표현은 보존하고, 빈 문자열과 전체를 감싼 괄호만 제거한다.
|
|
@@ -33,7 +45,7 @@ function removeOuterSqlParentheses(source) {
|
|
|
33
45
|
}
|
|
34
46
|
function normalizeIndexWherePredicateByAst(where) {
|
|
35
47
|
try {
|
|
36
|
-
const parsed = INDEX_WHERE_SQL_PARSER.astify(`SELECT * FROM __sonamu_index_predicate_source WHERE ${where}`, { database: "postgresql" });
|
|
48
|
+
const parsed = parseSqlAstValue(INDEX_WHERE_SQL_PARSER.astify(`SELECT * FROM __sonamu_index_predicate_source WHERE ${where}`, { database: "postgresql" }));
|
|
37
49
|
const statement = Array.isArray(parsed) ? parsed[0] : parsed;
|
|
38
50
|
if (!isSqlAstRecord(statement)) return;
|
|
39
51
|
return serializeIndexWhereAst(statement.where);
|
|
@@ -134,16 +146,16 @@ function serializeSqlColumnRef(node) {
|
|
|
134
146
|
return `column:${table ? `${table}.` : ""}${column}`;
|
|
135
147
|
}
|
|
136
148
|
function serializeSqlIdentifierNode(node) {
|
|
137
|
-
if (
|
|
149
|
+
if (isStringValue(node)) return normalizeSqlIdentifier(node);
|
|
138
150
|
if (isSqlAstRecord(node)) {
|
|
139
|
-
if (
|
|
140
|
-
if (isSqlAstRecord(node.expr) &&
|
|
151
|
+
if (isStringValue(node.value)) return normalizeSqlIdentifier(node.value);
|
|
152
|
+
if (isSqlAstRecord(node.expr) && isStringValue(node.expr.value)) return normalizeSqlIdentifier(node.expr.value);
|
|
141
153
|
}
|
|
142
154
|
return "";
|
|
143
155
|
}
|
|
144
156
|
function getSqlFunctionName(node) {
|
|
145
157
|
const name = node.name;
|
|
146
|
-
if (
|
|
158
|
+
if (isStringValue(name)) return normalizeSqlIdentifier(name);
|
|
147
159
|
if (isSqlAstRecord(name)) {
|
|
148
160
|
if (Array.isArray(name.name)) return name.name.map(serializeSqlIdentifierNode).join(".");
|
|
149
161
|
const nameParts = serializeSqlExprList(name);
|
|
@@ -161,11 +173,11 @@ function serializeUnknownSqlAstRecord(node) {
|
|
|
161
173
|
return `record:{${Object.entries(node).filter(([key]) => key !== "parentheses").toSorted(([left], [right]) => left.localeCompare(right)).map(([key, value]) => `${key}:${serializeIndexWhereAst(value)}`).join(",")}}`;
|
|
162
174
|
}
|
|
163
175
|
function isSqlAstRecord(value) {
|
|
164
|
-
return
|
|
176
|
+
return isObjectValue(value) && value !== null && !Array.isArray(value);
|
|
165
177
|
}
|
|
166
178
|
function getSqlAstString(node, key) {
|
|
167
179
|
const value = node[key];
|
|
168
|
-
return
|
|
180
|
+
return isStringValue(value) ? value : void 0;
|
|
169
181
|
}
|
|
170
182
|
function findMatchingParenthesisInSql(source, openIndex) {
|
|
171
183
|
let depth = 0;
|
|
@@ -204,10 +216,12 @@ function findMatchingParenthesisInSql(source, openIndex) {
|
|
|
204
216
|
}
|
|
205
217
|
var INDEX_WHERE_SQL_PARSER;
|
|
206
218
|
var init_index_where_predicate = __esmMin((() => {
|
|
219
|
+
init_runtime_type();
|
|
220
|
+
init_runtime_value();
|
|
207
221
|
INDEX_WHERE_SQL_PARSER = new SqlParser.Parser();
|
|
208
222
|
}));
|
|
209
223
|
//#endregion
|
|
210
224
|
init_index_where_predicate();
|
|
211
225
|
export { init_index_where_predicate, normalizeIndexWherePredicate, normalizeIndexWherePredicateForComparison };
|
|
212
226
|
|
|
213
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtd2hlcmUtcHJlZGljYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRpb24vaW5kZXgtd2hlcmUtcHJlZGljYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTcWxQYXJzZXIgZnJvbSBcIm5vZGUtc3FsLXBhcnNlclwiO1xuXG5jb25zdCBJTkRFWF9XSEVSRV9TUUxfUEFSU0VSID0gbmV3IFNxbFBhcnNlci5QYXJzZXIoKTtcblxuLyoqXG4gKiBNaWdyYXRpb24gRERMIOy2nOugpeyXkCDsgqzsmqntlaAgaW5kZXggcHJlZGljYXRl66W8IOygleumrO2VnOuLpC5cbiAqIOybkOuzuCBTUUwg7ZGc7ZiE7J2AIOuztOyhtO2VmOqzoCwg67mIIOusuOyekOyXtOqzvCDsoITssrTrpbwg6rCQ7Iu8IOq0hO2YuOunjCDsoJzqsbDtlZzri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVJbmRleFdoZXJlUHJlZGljYXRlKHdoZXJlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIXdoZXJlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIOy2nOugpSDqsr3roZzsl5DshJzripQg7IKs7Jqp7J6Q6rCAIOyekeyEse2VnCBwcmVkaWNhdGXrpbwg7LWc64yA7ZWcIOq3uOuMgOuhnCDsnKDsp4DtlZzri6QuXG4gIGNvbnN0IHRyaW1tZWQgPSByZW1vdmVPdXRlclNxbFBhcmVudGhlc2VzKHdoZXJlLnRyaW0oKSk7XG4gIGlmICh0cmltbWVkLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gdHJpbW1lZDtcbn1cblxuLyoqXG4gKiBJbmRleCBkaWZmIOu5hOq1kOyXkCDsgqzsmqntlaAgcHJlZGljYXRlIGlkZW50aXR566W8IOunjOuToOuLpC5cbiAqIFBvc3RncmVTUUwgY2Fub25pY2FsIO2RnO2YhCDssKjsnbTripQgQVNUIOq4sOuwmCDsoJXqt5ztmZTroZwg7Z2h7IiY7ZWc64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSW5kZXhXaGVyZVByZWRpY2F0ZUZvckNvbXBhcmlzb24oXG4gIHdoZXJlOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplSW5kZXhXaGVyZVByZWRpY2F0ZSh3aGVyZSk7XG4gIGlmICghbm9ybWFsaXplZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyDtjIzsi7Eg6rCA64ql7ZWcIHByZWRpY2F0ZeunjCBjYW5vbmljYWwgZm9ybeycvOuhnCDrsJTqvrjqs6AsIOyLpO2MqO2VmOuptCDquLDsobQgc3RyaWN0IOu5hOq1kOulvCDsnKDsp4DtlZzri6QuXG4gIHJldHVybiBub3JtYWxpemVJbmRleFdoZXJlUHJlZGljYXRlQnlBc3Qobm9ybWFsaXplZCkgPz8gbm9ybWFsaXplZDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlT3V0ZXJTcWxQYXJlbnRoZXNlcyhzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCB0cmltbWVkID0gc291cmNlLnRyaW0oKTtcblxuICAvLyDsoITssrQgcHJlZGljYXRl66W8IOqwkOyLvCDqtITtmLjrp4wg7KCc6rGw7ZWY6rOgIOuCtOu2gCBncm91cGluZ+ydgCDqsbTrk5zrpqzsp4Ag7JWK64qU64ukLlxuICB3aGlsZSAodHJpbW1lZC5zdGFydHNXaXRoKFwiKFwiKSAmJiB0cmltbWVkLmVuZHNXaXRoKFwiKVwiKSkge1xuICAgIGNvbnN0IGNsb3NlSW5kZXggPSBmaW5kTWF0Y2hpbmdQYXJlbnRoZXNpc0luU3FsKHRyaW1tZWQsIDApO1xuICAgIGlmIChjbG9zZUluZGV4ID09PSB0cmltbWVkLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRyaW1tZWQgPSB0cmltbWVkLnNsaWNlKDEsIC0xKS50cmltKCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiB0cmltbWVkO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVJbmRleFdoZXJlUHJlZGljYXRlQnlBc3Qod2hlcmU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgLy8gbm9kZS1zcWwtcGFyc2Vy64qUIHJhdyBwcmVkaWNhdGXrpbwg7KeB7KCRIO2MjOyLse2VmOyngCDslYrsnLzrr4DroZwg7J6E7IucIFNFTEVDVCBXSEVSReuhnCDqsJDsi7zri6QuXG4gICAgY29uc3QgcGFyc2VkID0gSU5ERVhfV0hFUkVfU1FMX1BBUlNFUi5hc3RpZnkoXG4gICAgICBgU0VMRUNUICogRlJPTSBfX3NvbmFtdV9pbmRleF9wcmVkaWNhdGVfc291cmNlIFdIRVJFICR7d2hlcmV9YCxcbiAgICAgIHsgZGF0YWJhc2U6IFwicG9zdGdyZXNxbFwiIH0sXG4gICAgKTtcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBBcnJheS5pc0FycmF5KHBhcnNlZCkgPyBwYXJzZWRbMF0gOiBwYXJzZWQ7XG4gICAgaWYgKCFpc1NxbEFzdFJlY29yZChzdGF0ZW1lbnQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJpYWxpemVJbmRleFdoZXJlQXN0KHN0YXRlbWVudC53aGVyZSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplSW5kZXhXaGVyZUFzdChub2RlOiB1bmtub3duKTogc3RyaW5nIHtcbiAgLy8gUG9zdGdyZVNRTOydtCBJTuydhCBBTlkoQVJSQVlbLi4uXSnroZwg7J6s7J6R7ISx7ZWY66+A66GcIG1lbWJlcnNoaXDsnYAg66i87KCAIO2KueyImCDsspjrpqztlZzri6QuXG4gIGNvbnN0IG1lbWJlcnNoaXAgPSBzZXJpYWxpemVTcWxNZW1iZXJzaGlwUHJlZGljYXRlKG5vZGUpO1xuICBpZiAobWVtYmVyc2hpcCkge1xuICAgIHJldHVybiBtZW1iZXJzaGlwO1xuICB9XG5cbiAgaWYgKCFpc1NxbEFzdFJlY29yZChub2RlKSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShub2RlKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGUgPSBnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJ0eXBlXCIpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwiYmluYXJ5X2V4cHJcIjoge1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSBub3JtYWxpemVTcWxPcGVyYXRvcihnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJvcGVyYXRvclwiKSk7XG4gICAgICBjb25zdCBsZWZ0ID0gc2VyaWFsaXplSW5kZXhXaGVyZUFzdChub2RlLmxlZnQpO1xuICAgICAgY29uc3QgcmlnaHQgPSBzZXJpYWxpemVJbmRleFdoZXJlQXN0KG5vZGUucmlnaHQpO1xuICAgICAgaWYgKG9wZXJhdG9yID09PSBcIkFORFwiIHx8IG9wZXJhdG9yID09PSBcIk9SXCIpIHtcbiAgICAgICAgLy8gQU5EL09S64qUIOyInOyEnOqwgCBkaWZmIOydmOuvuOulvCDrsJTqvrjsp4Ag7JWK7Jy866+A66GcIHN0YWJsZSBpZGVudGl0eeuhnCDsoJXroKztlZzri6QuXG4gICAgICAgIHJldHVybiBgKCR7W2xlZnQsIHJpZ2h0XS50b1NvcnRlZCgpLmpvaW4oYCAke29wZXJhdG9yfSBgKX0pYDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgKCR7bGVmdH0gJHtvcGVyYXRvcn0gJHtyaWdodH0pYDtcbiAgICB9XG4gICAgY2FzZSBcInVuYXJ5X2V4cHJcIjoge1xuICAgICAgY29uc3Qgb3BlcmF0b3IgPSBub3JtYWxpemVTcWxPcGVyYXRvcihnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJvcGVyYXRvclwiKSk7XG4gICAgICByZXR1cm4gYCgke29wZXJhdG9yfSAke3NlcmlhbGl6ZUluZGV4V2hlcmVBc3Qobm9kZS5leHByKX0pYDtcbiAgICB9XG4gICAgY2FzZSBcImNvbHVtbl9yZWZcIjoge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZVNxbENvbHVtblJlZihub2RlKTtcbiAgICB9XG4gICAgY2FzZSBcInNpbmdsZV9xdW90ZV9zdHJpbmdcIjoge1xuICAgICAgcmV0dXJuIGBzdHJpbmc6JHtKU09OLnN0cmluZ2lmeShnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJ2YWx1ZVwiKSl9YDtcbiAgICB9XG4gICAgY2FzZSBcIm51bWJlclwiOiB7XG4gICAgICByZXR1cm4gYG51bWJlcjoke1N0cmluZyhub2RlLnZhbHVlKX1gO1xuICAgIH1cbiAgICBjYXNlIFwiYm9vbFwiOiB7XG4gICAgICByZXR1cm4gYGJvb2w6JHtTdHJpbmcobm9kZS52YWx1ZSkudG9Mb3dlckNhc2UoKX1gO1xuICAgIH1cbiAgICBjYXNlIFwibnVsbFwiOiB7XG4gICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgfVxuICAgIGNhc2UgXCJjYXN0XCI6IHtcbiAgICAgIGNvbnN0IHRhcmdldFR5cGUgPSBnZXRTcWxDYXN0VGFyZ2V0VHlwZShub2RlKTtcbiAgICAgIGNvbnN0IGV4cHIgPSBub2RlLmV4cHI7XG4gICAgICBpZiAodGFyZ2V0VHlwZSAmJiBpc1RleHRMaWtlU3FsVHlwZSh0YXJnZXRUeXBlKSAmJiBpc1NxbFN0cmluZ0xpdGVyYWxMaWtlKGV4cHIpKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVJbmRleFdoZXJlQXN0KHN0cmlwVGV4dExpa2VTcWxDYXN0KGV4cHIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBgY2FzdCgke3NlcmlhbGl6ZUluZGV4V2hlcmVBc3QoZXhwcil9IGFzICR7dGFyZ2V0VHlwZSA/PyBcInVua25vd25cIn0pYDtcbiAgICB9XG4gICAgY2FzZSBcImZ1bmN0aW9uXCI6IHtcbiAgICAgIHJldHVybiBgZm46JHtnZXRTcWxGdW5jdGlvbk5hbWUobm9kZSl9KCR7c2VyaWFsaXplU3FsRXhwckxpc3Qobm9kZS5hcmdzKS5qb2luKFwiLFwiKX0pYDtcbiAgICB9XG4gICAgY2FzZSBcImFycmF5XCI6IHtcbiAgICAgIHJldHVybiBgYXJyYXk6WyR7c2VyaWFsaXplU3FsQXJyYXlFbGVtZW50cyhub2RlKS5tYXAoc2VyaWFsaXplSW5kZXhXaGVyZUFzdCkuam9pbihcIixcIil9XWA7XG4gICAgfVxuICAgIGNhc2UgXCJleHByX2xpc3RcIjoge1xuICAgICAgcmV0dXJuIGBsaXN0Olske3NlcmlhbGl6ZVNxbEV4cHJMaXN0KG5vZGUpLm1hcChzZXJpYWxpemVJbmRleFdoZXJlQXN0KS5qb2luKFwiLFwiKX1dYDtcbiAgICB9XG4gICAgY2FzZSBcImRlZmF1bHRcIjoge1xuICAgICAgcmV0dXJuIGBpZGVudDoke25vcm1hbGl6ZVNxbElkZW50aWZpZXIoZ2V0U3FsQXN0U3RyaW5nKG5vZGUsIFwidmFsdWVcIikgPz8gXCJcIil9YDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIHNlcmlhbGl6ZVVua25vd25TcWxBc3RSZWNvcmQobm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVNxbE1lbWJlcnNoaXBQcmVkaWNhdGUobm9kZTogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghaXNTcWxBc3RSZWNvcmQobm9kZSkgfHwgZ2V0U3FsQXN0U3RyaW5nKG5vZGUsIFwidHlwZVwiKSAhPT0gXCJiaW5hcnlfZXhwclwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIElOICguLi4p6rO8ID0gQU5ZKEFSUkFZWy4uLl0p66W8IOuPmeydvO2VnCB1bm9yZGVyZWQgbWVtYmVyc2hpcCDtkZztmITsnLzroZwg66ee7LaY64ukLlxuICBjb25zdCBvcGVyYXRvciA9IG5vcm1hbGl6ZVNxbE9wZXJhdG9yKGdldFNxbEFzdFN0cmluZyhub2RlLCBcIm9wZXJhdG9yXCIpKTtcbiAgY29uc3QgbGVmdCA9IHNlcmlhbGl6ZUluZGV4V2hlcmVBc3Qoc3RyaXBUZXh0TGlrZVNxbENhc3Qobm9kZS5sZWZ0KSk7XG4gIGNvbnN0IHZhbHVlcyA9ICgoKSA9PiB7XG4gICAgaWYgKG9wZXJhdG9yID09PSBcIklOXCIpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemVTcWxNZW1iZXJzaGlwVmFsdWVzKHNlcmlhbGl6ZVNxbEV4cHJMaXN0KG5vZGUucmlnaHQpKTtcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0b3IgPT09IFwiPVwiKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplU3FsTWVtYmVyc2hpcFZhbHVlcyhnZXRTcWxBbnlBcnJheUVsZW1lbnRzKG5vZGUucmlnaHQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9KSgpO1xuXG4gIGlmICghdmFsdWVzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBgbWVtYmVyc2hpcDoke2xlZnR9OmluOlske3ZhbHVlcy5qb2luKFwiLFwiKX1dYDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplU3FsTWVtYmVyc2hpcFZhbHVlcyh2YWx1ZXM6IHVua25vd25bXSB8IHVuZGVmaW5lZCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZXMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gbWVtYmVyc2hpcCDqsJLsnZgg7Iic7ISc7JmAIOykkeuzteydgCDsnZjrr7jqsIAg7JeG7Jy866+A66GcIOyViOygleyggeyduCBpZGVudGl0eeuhnCDsoJXroKztlZzri6QuXG4gIGNvbnN0IHNlcmlhbGl6ZWQgPSB2YWx1ZXMubWFwKCh2YWx1ZSkgPT4gc2VyaWFsaXplSW5kZXhXaGVyZUFzdChzdHJpcFRleHRMaWtlU3FsQ2FzdCh2YWx1ZSkpKTtcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KHNlcmlhbGl6ZWQpXS50b1NvcnRlZCgpO1xufVxuXG5mdW5jdGlvbiBnZXRTcWxBbnlBcnJheUVsZW1lbnRzKG5vZGU6IHVua25vd24pOiB1bmtub3duW10gfCB1bmRlZmluZWQge1xuICBpZiAoIWlzU3FsQXN0UmVjb3JkKG5vZGUpIHx8IGdldFNxbEFzdFN0cmluZyhub2RlLCBcInR5cGVcIikgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGdldFNxbEZ1bmN0aW9uTmFtZShub2RlKSAhPT0gXCJhbnlcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBBTlkoKeydmCDssqsg67KI7Ke4IOyduOyekOunjCBQb3N0Z3JlU1FMIOuwsOyXtCBtZW1iZXJzaGlwIOuMgOyDgeycvOuhnCDtlbTshJ3tlZzri6QuXG4gIGNvbnN0IFthcmddID0gc2VyaWFsaXplU3FsRXhwckxpc3Qobm9kZS5hcmdzKTtcbiAgaWYgKCFhcmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVNxbEFycmF5RWxlbWVudHMoc3RyaXBUZXh0TGlrZVNxbENhc3QoYXJnKSk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVNxbEFycmF5RWxlbWVudHMobm9kZTogdW5rbm93bik6IHVua25vd25bXSB7XG4gIGlmICghaXNTcWxBc3RSZWNvcmQobm9kZSkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICAvLyBwYXJzZXIg67KE7KCE7JeQIOuUsOudvCDrsLDsl7Qg7JuQ7IaM6rCAIGFycmF5LmV4cHJfbGlzdCDrmJDripQgZXhwcl9saXN066GcIOuTpOyWtOyYqOuLpC5cbiAgaWYgKGdldFNxbEFzdFN0cmluZyhub2RlLCBcInR5cGVcIikgPT09IFwiYXJyYXlcIikge1xuICAgIHJldHVybiBzZXJpYWxpemVTcWxFeHByTGlzdChub2RlLmV4cHJfbGlzdCk7XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3FsRXhwckxpc3Qobm9kZSk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVNxbEV4cHJMaXN0KG5vZGU6IHVua25vd24pOiB1bmtub3duW10ge1xuICBpZiAoIWlzU3FsQXN0UmVjb3JkKG5vZGUpKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gZXhwcl9saXN064qUIOyLpOygnCBBU1Qg64W465OcIOuwsOyXtOydtOqzoCwg64uo7J28IO2RnO2YhOyLneydgCDrsLDsl7Qg7ZWY64KY66GcIOqwkOyLuCDthrXsnbztlZzri6QuXG4gIGlmIChnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJ0eXBlXCIpID09PSBcImV4cHJfbGlzdFwiICYmIEFycmF5LmlzQXJyYXkobm9kZS52YWx1ZSkpIHtcbiAgICByZXR1cm4gbm9kZS52YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBbbm9kZV07XG59XG5cbmZ1bmN0aW9uIHN0cmlwVGV4dExpa2VTcWxDYXN0KG5vZGU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKCFpc1NxbEFzdFJlY29yZChub2RlKSB8fCBnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJ0eXBlXCIpICE9PSBcImNhc3RcIikge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gUG9zdGdyZVNRTOydgCB2YXJjaGFyL3RleHQgY2FzdOulvCDrsLDsl7Qg65iQ64qUIOybkOyGjCDsqr3snLzroZwg7Jiu6ri4IOyImCDsnojslrQg67mE6rWQ7JeQ7IScIOygnOqxsO2VnOuLpC5cbiAgY29uc3QgdGFyZ2V0VHlwZSA9IGdldFNxbENhc3RUYXJnZXRUeXBlKG5vZGUpO1xuICBpZiAoIXRhcmdldFR5cGUgfHwgIWlzVGV4dExpa2VTcWxUeXBlKHRhcmdldFR5cGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gc3RyaXBUZXh0TGlrZVNxbENhc3Qobm9kZS5leHByKTtcbn1cblxuZnVuY3Rpb24gaXNTcWxTdHJpbmdMaXRlcmFsTGlrZShub2RlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIC8vIOusuOyekOyXtCBsaXRlcmFs7JeQIOu2meydgCB0ZXh0IOqzhOyXtCBjYXN064qUIG1lbWJlcnNoaXAg67mE6rWQ7JeQ7IScIOydmOuvuOqwgCDqsJnri6QuXG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBUZXh0TGlrZVNxbENhc3Qobm9kZSk7XG4gIHJldHVybiBpc1NxbEFzdFJlY29yZChzdHJpcHBlZCkgJiYgZ2V0U3FsQXN0U3RyaW5nKHN0cmlwcGVkLCBcInR5cGVcIikgPT09IFwic2luZ2xlX3F1b3RlX3N0cmluZ1wiO1xufVxuXG5mdW5jdGlvbiBnZXRTcWxDYXN0VGFyZ2V0VHlwZShub2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghQXJyYXkuaXNBcnJheShub2RlLnRhcmdldCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gY2hhcmFjdGVyIHZhcnlpbmfsspjrn7wg7Jes65+sIHRva2Vu7Jy866GcIOyYpOuKlCDtg4DsnoXrqoXsnYQg7ZWY64KY7J2YIOygleq3nO2ZlCDrrLjsnpDsl7TroZwg7ZWp7Lmc64ukLlxuICBjb25zdCBkYXRhVHlwZXMgPSBub2RlLnRhcmdldFxuICAgIC5tYXAoKHRhcmdldCkgPT4gKGlzU3FsQXN0UmVjb3JkKHRhcmdldCkgPyBnZXRTcWxBc3RTdHJpbmcodGFyZ2V0LCBcImRhdGFUeXBlXCIpIDogdW5kZWZpbmVkKSlcbiAgICAuZmlsdGVyKChkYXRhVHlwZSk6IGRhdGFUeXBlIGlzIHN0cmluZyA9PiBkYXRhVHlwZSAhPT0gdW5kZWZpbmVkKTtcblxuICBpZiAoZGF0YVR5cGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplU3FsRGF0YVR5cGUoZGF0YVR5cGVzLmpvaW4oXCIgXCIpKTtcbn1cblxuZnVuY3Rpb24gaXNUZXh0TGlrZVNxbFR5cGUodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIOuwsOyXtCBjYXN0KHRleHRbXSnrj4Qg7JuQ7IaMIG1lbWJlcnNoaXAg67mE6rWQ7JeQ7ISc64qUIHRleHQg6rOE7Je0IGNhc3TroZwg7Leo6riJ7ZWc64ukLlxuICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplU3FsRGF0YVR5cGUodHlwZSkucmVwbGFjZSgvXFxbXFxdJC9nLCBcIlwiKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZWQgPT09IFwidGV4dFwiIHx8IG5vcm1hbGl6ZWQgPT09IFwidmFyY2hhclwiO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTcWxEYXRhVHlwZSh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gdHlwZVxuICAgIC50cmltKClcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9cXHMrL2csIFwiIFwiKVxuICAgIC5yZXBsYWNlKC9eY2hhcmFjdGVyIHZhcnlpbmckLywgXCJ2YXJjaGFyXCIpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVTcWxDb2x1bW5SZWYobm9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcge1xuICBjb25zdCB0YWJsZSA9IHNlcmlhbGl6ZVNxbElkZW50aWZpZXJOb2RlKG5vZGUudGFibGUpO1xuICBjb25zdCBjb2x1bW4gPSBzZXJpYWxpemVTcWxJZGVudGlmaWVyTm9kZShub2RlLmNvbHVtbik7XG4gIHJldHVybiBgY29sdW1uOiR7dGFibGUgPyBgJHt0YWJsZX0uYCA6IFwiXCJ9JHtjb2x1bW59YDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplU3FsSWRlbnRpZmllck5vZGUobm9kZTogdW5rbm93bik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBub3JtYWxpemVTcWxJZGVudGlmaWVyKG5vZGUpO1xuICB9XG5cbiAgLy8gcXVvdGVkIGlkZW50aWZpZXLsmYAgZnVuY3Rpb24gbmFtZeydmCBBU1Qgc2hhcGUg7LCo7J2066W8IOqwmeydgCBpZGVudGlmaWVyIOusuOyekOyXtOuhnCDtnaHsiJjtlZzri6QuXG4gIGlmIChpc1NxbEFzdFJlY29yZChub2RlKSkge1xuICAgIGlmICh0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZVNxbElkZW50aWZpZXIobm9kZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGlzU3FsQXN0UmVjb3JkKG5vZGUuZXhwcikgJiYgdHlwZW9mIG5vZGUuZXhwci52YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZVNxbElkZW50aWZpZXIobm9kZS5leHByLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cblxuZnVuY3Rpb24gZ2V0U3FsRnVuY3Rpb25OYW1lKG5vZGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nIHtcbiAgY29uc3QgbmFtZSA9IG5vZGUubmFtZTtcbiAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZVNxbElkZW50aWZpZXIobmFtZSk7XG4gIH1cblxuICAvLyBBTlnsspjrn7wgbmFtZS5uYW1lIOuwsOyXtOuhnCDsmKTripQgZnVuY3Rpb24gQVNU66W8IHNjaGVtYS1xdWFsaWZpZWQg7J2066aE6rmM7KeAIOyngOybkO2VnOuLpC5cbiAgaWYgKGlzU3FsQXN0UmVjb3JkKG5hbWUpKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmFtZS5uYW1lKSkge1xuICAgICAgcmV0dXJuIG5hbWUubmFtZS5tYXAoc2VyaWFsaXplU3FsSWRlbnRpZmllck5vZGUpLmpvaW4oXCIuXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWVQYXJ0cyA9IHNlcmlhbGl6ZVNxbEV4cHJMaXN0KG5hbWUpO1xuICAgIGlmIChuYW1lUGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIG5hbWVQYXJ0cy5tYXAoc2VyaWFsaXplU3FsSWRlbnRpZmllck5vZGUpLmpvaW4oXCIuXCIpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBcIlwiO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTcWxJZGVudGlmaWVyKGlkZW50aWZpZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpZGVudGlmaWVyLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVTcWxPcGVyYXRvcihvcGVyYXRvcjogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgcmV0dXJuIChvcGVyYXRvciA/PyBcIlwiKS50cmltKCkudG9VcHBlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csIFwiIFwiKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplVW5rbm93blNxbEFzdFJlY29yZChub2RlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB7XG4gIC8vIOyVhOyngSDrqoXsi5zsoIHsnLzroZwg64uk66Oo7KeAIOyViuuKlCBBU1Qg64W465Oc64qUIGtleSDsoJXroKzroZwg7LWc7IaM7ZWcIOyViOygleyggeyduCDruYTqtZDqsJLsnYQg66eM65Og64ukLlxuICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMobm9kZSlcbiAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSBcInBhcmVudGhlc2VzXCIpXG4gICAgLnRvU29ydGVkKChbbGVmdF0sIFtyaWdodF0pID0+IGxlZnQubG9jYWxlQ29tcGFyZShyaWdodCkpXG4gICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJHtrZXl9OiR7c2VyaWFsaXplSW5kZXhXaGVyZUFzdCh2YWx1ZSl9YCk7XG5cbiAgcmV0dXJuIGByZWNvcmQ6eyR7ZW50cmllcy5qb2luKFwiLFwiKX19YDtcbn1cblxuZnVuY3Rpb24gaXNTcWxBc3RSZWNvcmQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBnZXRTcWxBc3RTdHJpbmcobm9kZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgdmFsdWUgPSBub2RlW2tleV07XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoaW5nUGFyZW50aGVzaXNJblNxbChzb3VyY2U6IHN0cmluZywgb3BlbkluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgZGVwdGggPSAwO1xuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuXG4gIC8vIFNRTCDrrLjsnpDsl7Tqs7wgcXVvdGVkIGlkZW50aWZpZXIg64K067aAIOq0hO2YuOuKlCBncm91cGluZyDqtITtmLjroZwg7IS47KeAIOyViuuKlOuLpC5cbiAgZm9yIChsZXQgaW5kZXggPSBvcGVuSW5kZXg7IGluZGV4IDwgc291cmNlLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGNvbnN0IGNoYXIgPSBzb3VyY2VbaW5kZXhdO1xuICAgIGNvbnN0IG5leHRDaGFyID0gc291cmNlW2luZGV4ICsgMV07XG5cbiAgICBpZiAoY2hhciA9PT0gXCInXCIgJiYgIWluRG91YmxlUXVvdGUpIHtcbiAgICAgIGlmIChpblNpbmdsZVF1b3RlICYmIG5leHRDaGFyID09PSBcIidcIikge1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGluU2luZ2xlUXVvdGUgPSAhaW5TaW5nbGVRdW90ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInICYmICFpblNpbmdsZVF1b3RlKSB7XG4gICAgICBpZiAoaW5Eb3VibGVRdW90ZSAmJiBuZXh0Q2hhciA9PT0gJ1wiJykge1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGluRG91YmxlUXVvdGUgPSAhaW5Eb3VibGVRdW90ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpblNpbmdsZVF1b3RlIHx8IGluRG91YmxlUXVvdGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSBcIihcIikge1xuICAgICAgZGVwdGggKz0gMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSBcIilcIikge1xuICAgICAgZGVwdGggLT0gMTtcbiAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBUUEsU0FBZ0IsNkJBQTZCLE9BQStDO0NBQzFGLElBQUksQ0FBQyxPQUNIO0NBSUYsTUFBTSxVQUFVLDBCQUEwQixNQUFNLEtBQUssQ0FBQztDQUN0RCxJQUFJLFFBQVEsV0FBVyxHQUNyQjtDQUdGLE9BQU87QUFDVDs7Ozs7QUFNQSxTQUFnQiwwQ0FDZCxPQUNvQjtDQUNwQixNQUFNLGFBQWEsNkJBQTZCLEtBQUs7Q0FDckQsSUFBSSxDQUFDLFlBQ0g7Q0FJRixPQUFPLGtDQUFrQyxVQUFVLEtBQUs7QUFDMUQ7QUFFQSxTQUFTLDBCQUEwQixRQUF3QjtDQUN6RCxJQUFJLFVBQVUsT0FBTyxLQUFLO0NBRzFCLE9BQU8sUUFBUSxXQUFXLEdBQUcsS0FBSyxRQUFRLFNBQVMsR0FBRyxHQUFHO0VBRXZELElBRG1CLDZCQUE2QixTQUFTLENBQ3JELE1BQWUsUUFBUSxTQUFTLEdBQUc7R0FDckMsVUFBVSxRQUFRLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLO0dBQ3BDO0VBQ0Y7RUFFQTtDQUNGO0NBRUEsT0FBTztBQUNUO0FBRUEsU0FBUyxrQ0FBa0MsT0FBbUM7Q0FDNUUsSUFBSTtFQUVGLE1BQU0sU0FBUyx1QkFBdUIsT0FDcEMsdURBQXVELFNBQ3ZELEVBQUUsVUFBVSxhQUFhLENBQzNCO0VBQ0EsTUFBTSxZQUFZLE1BQU0sUUFBUSxNQUFNLElBQUksT0FBTyxLQUFLO0VBQ3RELElBQUksQ0FBQyxlQUFlLFNBQVMsR0FDM0I7RUFHRixPQUFPLHVCQUF1QixVQUFVLEtBQUs7Q0FDL0MsUUFBUTtFQUNOO0NBQ0Y7QUFDRjtBQUVBLFNBQVMsdUJBQXVCLE1BQXVCO0NBRXJELE1BQU0sYUFBYSxnQ0FBZ0MsSUFBSTtDQUN2RCxJQUFJLFlBQ0YsT0FBTztDQUdULElBQUksQ0FBQyxlQUFlLElBQUksR0FDdEIsT0FBTyxLQUFLLFVBQVUsSUFBSTtDQUk1QixRQURhLGdCQUFnQixNQUFNLE1BQzNCLEdBQVI7RUFDRSxLQUFLLGVBQWU7R0FDbEIsTUFBTSxXQUFXLHFCQUFxQixnQkFBZ0IsTUFBTSxVQUFVLENBQUM7R0FDdkUsTUFBTSxPQUFPLHVCQUF1QixLQUFLLElBQUk7R0FDN0MsTUFBTSxRQUFRLHVCQUF1QixLQUFLLEtBQUs7R0FDL0MsSUFBSSxhQUFhLFNBQVMsYUFBYSxNQUVyQyxPQUFPLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQUUsRUFBRTtHQUU1RCxPQUFPLElBQUksS0FBSyxHQUFHLFNBQVMsR0FBRyxNQUFNO0VBQ3ZDO0VBQ0EsS0FBSyxjQUVILE9BQU8sSUFEVSxxQkFBcUIsZ0JBQWdCLE1BQU0sVUFBVSxDQUMzRCxFQUFTLEdBQUcsdUJBQXVCLEtBQUssSUFBSSxFQUFFO0VBRTNELEtBQUssY0FDSCxPQUFPLHNCQUFzQixJQUFJO0VBRW5DLEtBQUssdUJBQ0gsT0FBTyxVQUFVLEtBQUssVUFBVSxnQkFBZ0IsTUFBTSxPQUFPLENBQUM7RUFFaEUsS0FBSyxVQUNILE9BQU8sVUFBVSxPQUFPLEtBQUssS0FBSztFQUVwQyxLQUFLLFFBQ0gsT0FBTyxRQUFRLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxZQUFZO0VBRWhELEtBQUssUUFDSCxPQUFPO0VBRVQsS0FBSyxRQUFRO0dBQ1gsTUFBTSxhQUFhLHFCQUFxQixJQUFJO0dBQzVDLE1BQU0sT0FBTyxLQUFLO0dBQ2xCLElBQUksY0FBYyxrQkFBa0IsVUFBVSxLQUFLLHVCQUF1QixJQUFJLEdBQzVFLE9BQU8sdUJBQXVCLHFCQUFxQixJQUFJLENBQUM7R0FFMUQsT0FBTyxRQUFRLHVCQUF1QixJQUFJLEVBQUUsTUFBTSxjQUFjLFVBQVU7RUFDNUU7RUFDQSxLQUFLLFlBQ0gsT0FBTyxNQUFNLG1CQUFtQixJQUFJLEVBQUUsR0FBRyxxQkFBcUIsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtFQUVyRixLQUFLLFNBQ0gsT0FBTyxVQUFVLDBCQUEwQixJQUFJLENBQUMsQ0FBQyxJQUFJLHNCQUFzQixDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7RUFFekYsS0FBSyxhQUNILE9BQU8sU0FBUyxxQkFBcUIsSUFBSSxDQUFDLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO0VBRW5GLEtBQUssV0FDSCxPQUFPLFNBQVMsdUJBQXVCLGdCQUFnQixNQUFNLE9BQU8sS0FBSyxFQUFFO0VBRTdFLFNBQ0UsT0FBTyw2QkFBNkIsSUFBSTtDQUU1QztBQUNGO0FBRUEsU0FBUyxnQ0FBZ0MsTUFBbUM7Q0FDMUUsSUFBSSxDQUFDLGVBQWUsSUFBSSxLQUFLLGdCQUFnQixNQUFNLE1BQU0sTUFBTSxlQUM3RDtDQUlGLE1BQU0sV0FBVyxxQkFBcUIsZ0JBQWdCLE1BQU0sVUFBVSxDQUFDO0NBQ3ZFLE1BQU0sT0FBTyx1QkFBdUIscUJBQXFCLEtBQUssSUFBSSxDQUFDO0NBQ25FLE1BQU0sZ0JBQWdCO0VBQ3BCLElBQUksYUFBYSxNQUNmLE9BQU8sNkJBQTZCLHFCQUFxQixLQUFLLEtBQUssQ0FBQztFQUd0RSxJQUFJLGFBQWEsS0FDZixPQUFPLDZCQUE2Qix1QkFBdUIsS0FBSyxLQUFLLENBQUM7Q0FJMUUsRUFBQSxDQUFHO0NBRUgsSUFBSSxDQUFDLFFBQ0g7Q0FHRixPQUFPLGNBQWMsS0FBSyxPQUFPLE9BQU8sS0FBSyxHQUFHLEVBQUU7QUFDcEQ7QUFFQSxTQUFTLDZCQUE2QixRQUFxRDtDQUN6RixJQUFJLENBQUMsUUFDSDtDQUlGLE1BQU0sYUFBYSxPQUFPLEtBQUssVUFBVSx1QkFBdUIscUJBQXFCLEtBQUssQ0FBQyxDQUFDO0NBQzVGLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFDM0M7QUFFQSxTQUFTLHVCQUF1QixNQUFzQztDQUNwRSxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssZ0JBQWdCLE1BQU0sTUFBTSxNQUFNLFlBQzdEO0NBRUYsSUFBSSxtQkFBbUIsSUFBSSxNQUFNLE9BQy9CO0NBSUYsTUFBTSxDQUFDLE9BQU8scUJBQXFCLEtBQUssSUFBSTtDQUM1QyxJQUFJLENBQUMsS0FDSDtDQUdGLE9BQU8sMEJBQTBCLHFCQUFxQixHQUFHLENBQUM7QUFDNUQ7QUFFQSxTQUFTLDBCQUEwQixNQUEwQjtDQUMzRCxJQUFJLENBQUMsZUFBZSxJQUFJLEdBQ3RCLE9BQU8sQ0FBQztDQUlWLElBQUksZ0JBQWdCLE1BQU0sTUFBTSxNQUFNLFNBQ3BDLE9BQU8scUJBQXFCLEtBQUssU0FBUztDQUc1QyxPQUFPLHFCQUFxQixJQUFJO0FBQ2xDO0FBRUEsU0FBUyxxQkFBcUIsTUFBMEI7Q0FDdEQsSUFBSSxDQUFDLGVBQWUsSUFBSSxHQUN0QixPQUFPLENBQUM7Q0FJVixJQUFJLGdCQUFnQixNQUFNLE1BQU0sTUFBTSxlQUFlLE1BQU0sUUFBUSxLQUFLLEtBQUssR0FDM0UsT0FBTyxLQUFLO0NBR2QsT0FBTyxDQUFDLElBQUk7QUFDZDtBQUVBLFNBQVMscUJBQXFCLE1BQXdCO0NBQ3BELElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxnQkFBZ0IsTUFBTSxNQUFNLE1BQU0sUUFDN0QsT0FBTztDQUlULE1BQU0sYUFBYSxxQkFBcUIsSUFBSTtDQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixVQUFVLEdBQzlDLE9BQU87Q0FHVCxPQUFPLHFCQUFxQixLQUFLLElBQUk7QUFDdkM7QUFFQSxTQUFTLHVCQUF1QixNQUF3QjtDQUV0RCxNQUFNLFdBQVcscUJBQXFCLElBQUk7Q0FDMUMsT0FBTyxlQUFlLFFBQVEsS0FBSyxnQkFBZ0IsVUFBVSxNQUFNLE1BQU07QUFDM0U7QUFFQSxTQUFTLHFCQUFxQixNQUFtRDtDQUMvRSxJQUFJLENBQUMsTUFBTSxRQUFRLEtBQUssTUFBTSxHQUM1QjtDQUlGLE1BQU0sWUFBWSxLQUFLLE9BQ3BCLEtBQUssV0FBWSxlQUFlLE1BQU0sSUFBSSxnQkFBZ0IsUUFBUSxVQUFVLElBQUksTUFBVSxDQUFDLENBQzNGLFFBQVEsYUFBaUMsYUFBYSxNQUFTO0NBRWxFLElBQUksVUFBVSxXQUFXLEdBQ3ZCO0NBR0YsT0FBTyxxQkFBcUIsVUFBVSxLQUFLLEdBQUcsQ0FBQztBQUNqRDtBQUVBLFNBQVMsa0JBQWtCLE1BQXVCO0NBRWhELE1BQU0sYUFBYSxxQkFBcUIsSUFBSSxDQUFDLENBQUMsUUFBUSxVQUFVLEVBQUU7Q0FDbEUsT0FBTyxlQUFlLFVBQVUsZUFBZTtBQUNqRDtBQUVBLFNBQVMscUJBQXFCLE1BQXNCO0NBQ2xELE9BQU8sS0FDSixLQUFLLENBQUMsQ0FDTixZQUFZLENBQUMsQ0FDYixRQUFRLFFBQVEsR0FBRyxDQUFDLENBQ3BCLFFBQVEsdUJBQXVCLFNBQVM7QUFDN0M7QUFFQSxTQUFTLHNCQUFzQixNQUF1QztDQUNwRSxNQUFNLFFBQVEsMkJBQTJCLEtBQUssS0FBSztDQUNuRCxNQUFNLFNBQVMsMkJBQTJCLEtBQUssTUFBTTtDQUNyRCxPQUFPLFVBQVUsUUFBUSxHQUFHLE1BQU0sS0FBSyxLQUFLO0FBQzlDO0FBRUEsU0FBUywyQkFBMkIsTUFBdUI7Q0FDekQsSUFBSSxPQUFPLFNBQVMsVUFDbEIsT0FBTyx1QkFBdUIsSUFBSTtDQUlwQyxJQUFJLGVBQWUsSUFBSSxHQUFHO0VBQ3hCLElBQUksT0FBTyxLQUFLLFVBQVUsVUFDeEIsT0FBTyx1QkFBdUIsS0FBSyxLQUFLO0VBRzFDLElBQUksZUFBZSxLQUFLLElBQUksS0FBSyxPQUFPLEtBQUssS0FBSyxVQUFVLFVBQzFELE9BQU8sdUJBQXVCLEtBQUssS0FBSyxLQUFLO0NBRWpEO0NBRUEsT0FBTztBQUNUO0FBRUEsU0FBUyxtQkFBbUIsTUFBdUM7Q0FDakUsTUFBTSxPQUFPLEtBQUs7Q0FDbEIsSUFBSSxPQUFPLFNBQVMsVUFDbEIsT0FBTyx1QkFBdUIsSUFBSTtDQUlwQyxJQUFJLGVBQWUsSUFBSSxHQUFHO0VBQ3hCLElBQUksTUFBTSxRQUFRLEtBQUssSUFBSSxHQUN6QixPQUFPLEtBQUssS0FBSyxJQUFJLDBCQUEwQixDQUFDLENBQUMsS0FBSyxHQUFHO0VBRzNELE1BQU0sWUFBWSxxQkFBcUIsSUFBSTtFQUMzQyxJQUFJLFVBQVUsU0FBUyxHQUNyQixPQUFPLFVBQVUsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDLEtBQUssR0FBRztDQUU3RDtDQUVBLE9BQU87QUFDVDtBQUVBLFNBQVMsdUJBQXVCLFlBQTRCO0NBQzFELE9BQU8sV0FBVyxLQUFLLENBQUMsQ0FBQyxZQUFZO0FBQ3ZDO0FBRUEsU0FBUyxxQkFBcUIsVUFBc0M7Q0FDbEUsUUFBUSxZQUFZLEdBQUEsQ0FBSSxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLFFBQVEsR0FBRztBQUNsRTtBQUVBLFNBQVMsNkJBQTZCLE1BQXVDO0NBTzNFLE9BQU8sV0FMUyxPQUFPLFFBQVEsSUFBSSxDQUFDLENBQ2pDLFFBQVEsQ0FBQyxTQUFTLFFBQVEsYUFBYSxDQUFDLENBQ3hDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxLQUFLLGNBQWMsS0FBSyxDQUFDLENBQUMsQ0FDeEQsS0FBSyxDQUFDLEtBQUssV0FBVyxHQUFHLElBQUksR0FBRyx1QkFBdUIsS0FBSyxHQUU3QyxDQUFBLENBQVEsS0FBSyxHQUFHLEVBQUU7QUFDdEM7QUFFQSxTQUFTLGVBQWUsT0FBa0Q7Q0FDeEUsT0FBTyxPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsQ0FBQyxNQUFNLFFBQVEsS0FBSztBQUM1RTtBQUVBLFNBQVMsZ0JBQWdCLE1BQStCLEtBQWlDO0NBQ3ZGLE1BQU0sUUFBUSxLQUFLO0NBQ25CLE9BQU8sT0FBTyxVQUFVLFdBQVcsUUFBUTtBQUM3QztBQUVBLFNBQVMsNkJBQTZCLFFBQWdCLFdBQTJCO0NBQy9FLElBQUksUUFBUTtDQUNaLElBQUksZ0JBQWdCO0NBQ3BCLElBQUksZ0JBQWdCO0NBR3BCLEtBQUssSUFBSSxRQUFRLFdBQVcsUUFBUSxPQUFPLFFBQVEsU0FBUyxHQUFHO0VBQzdELE1BQU0sT0FBTyxPQUFPO0VBQ3BCLE1BQU0sV0FBVyxPQUFPLFFBQVE7RUFFaEMsSUFBSSxTQUFTLE9BQU8sQ0FBQyxlQUFlO0dBQ2xDLElBQUksaUJBQWlCLGFBQWEsS0FBSztJQUNyQyxTQUFTO0lBQ1Q7R0FDRjtHQUNBLGdCQUFnQixDQUFDO0dBQ2pCO0VBQ0Y7RUFFQSxJQUFJLFNBQVMsUUFBTyxDQUFDLGVBQWU7R0FDbEMsSUFBSSxpQkFBaUIsYUFBYSxNQUFLO0lBQ3JDLFNBQVM7SUFDVDtHQUNGO0dBQ0EsZ0JBQWdCLENBQUM7R0FDakI7RUFDRjtFQUVBLElBQUksaUJBQWlCLGVBQ25CO0VBR0YsSUFBSSxTQUFTLEtBQUs7R0FDaEIsU0FBUztHQUNUO0VBQ0Y7RUFFQSxJQUFJLFNBQVMsS0FBSztHQUNoQixTQUFTO0dBQ1QsSUFBSSxVQUFVLEdBQ1osT0FBTztFQUVYO0NBQ0Y7Q0FFQSxPQUFPO0FBQ1Q7OztDQXJZTSx5QkFBeUIsSUFBSSxVQUFVLE9BQU8ifQ==
|
|
227
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtd2hlcmUtcHJlZGljYXRlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRpb24vaW5kZXgtd2hlcmUtcHJlZGljYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTcWxQYXJzZXIgZnJvbSBcIm5vZGUtc3FsLXBhcnNlclwiO1xuXG5pbXBvcnQgeyBpc0Jvb2xlYW5WYWx1ZSB9IGZyb20gXCIuLi9ydW50aW1lLXR5cGVcIjtcbmltcG9ydCB7IGlzTnVtYmVyVmFsdWUsIGlzT2JqZWN0VmFsdWUsIGlzU3RyaW5nVmFsdWUgfSBmcm9tIFwiLi4vdXRpbHMvcnVudGltZS12YWx1ZVwiO1xuXG5jb25zdCBJTkRFWF9XSEVSRV9TUUxfUEFSU0VSID0gbmV3IFNxbFBhcnNlci5QYXJzZXIoKTtcblxudHlwZSBTcWxBc3RWYWx1ZSA9IG51bGwgfCB1bmRlZmluZWQgfCBib29sZWFuIHwgbnVtYmVyIHwgc3RyaW5nIHwgU3FsQXN0VmFsdWVbXSB8IFNxbEFzdFJlY29yZDtcbmludGVyZmFjZSBTcWxBc3RSZWNvcmQge1xuICBba2V5OiBzdHJpbmddOiBTcWxBc3RWYWx1ZTtcbn1cblxuZnVuY3Rpb24gcGFyc2VTcWxBc3RWYWx1ZTxWYWx1ZT4odmFsdWU6IFZhbHVlKTogU3FsQXN0VmFsdWUge1xuICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBudWxsO1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKGlzQm9vbGVhblZhbHVlKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICBpZiAoaXNOdW1iZXJWYWx1ZSh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgaWYgKGlzU3RyaW5nVmFsdWUodmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAocGFyc2VTcWxBc3RWYWx1ZSk7XG4gIH1cbiAgaWYgKGlzT2JqZWN0VmFsdWUodmFsdWUpKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5tYXAoKFtrZXksIGNoaWxkXSkgPT4gW2tleSwgcGFyc2VTcWxBc3RWYWx1ZShjaGlsZCldKSxcbiAgICApO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihcIuyngOybkO2VmOyngCDslYrripQgU1FMIEFTVCDqsJLsnoXri4jri6RcIik7XG59XG5cbi8qKlxuICogTWlncmF0aW9uIERETCDstpzroKXsl5Ag7IKs7Jqp7ZWgIGluZGV4IHByZWRpY2F0ZeulvCDsoJXrpqztlZzri6QuXG4gKiDsm5Drs7ggU1FMIO2RnO2YhOydgCDrs7TsobTtlZjqs6AsIOu5iCDrrLjsnpDsl7Tqs7wg7KCE7LK066W8IOqwkOyLvCDqtITtmLjrp4wg7KCc6rGw7ZWc64ukLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSW5kZXhXaGVyZVByZWRpY2F0ZSh3aGVyZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF3aGVyZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyDstpzroKUg6rK966Gc7JeQ7ISc64qUIOyCrOyaqeyekOqwgCDsnpHshLHtlZwgcHJlZGljYXRl66W8IOy1nOuMgO2VnCDqt7jrjIDroZwg7Jyg7KeA7ZWc64ukLlxuICBjb25zdCB0cmltbWVkID0gcmVtb3ZlT3V0ZXJTcWxQYXJlbnRoZXNlcyh3aGVyZS50cmltKCkpO1xuICBpZiAodHJpbW1lZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHRyaW1tZWQ7XG59XG5cbi8qKlxuICogSW5kZXggZGlmZiDruYTqtZDsl5Ag7IKs7Jqp7ZWgIHByZWRpY2F0ZSBpZGVudGl0eeulvCDrp4zrk6Dri6QuXG4gKiBQb3N0Z3JlU1FMIGNhbm9uaWNhbCDtkZztmIQg7LCo7J2064qUIEFTVCDquLDrsJgg7KCV6rec7ZmU66GcIO2doeyImO2VnOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUluZGV4V2hlcmVQcmVkaWNhdGVGb3JDb21wYXJpc29uKFxuICB3aGVyZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZUluZGV4V2hlcmVQcmVkaWNhdGUod2hlcmUpO1xuICBpZiAoIW5vcm1hbGl6ZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8g7YyM7IuxIOqwgOuKpe2VnCBwcmVkaWNhdGXrp4wgY2Fub25pY2FsIGZvcm3snLzroZwg67CU6r646rOgLCDsi6TtjKjtlZjrqbQg6riw7KG0IHN0cmljdCDruYTqtZDrpbwg7Jyg7KeA7ZWc64ukLlxuICByZXR1cm4gbm9ybWFsaXplSW5kZXhXaGVyZVByZWRpY2F0ZUJ5QXN0KG5vcm1hbGl6ZWQpID8/IG5vcm1hbGl6ZWQ7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU91dGVyU3FsUGFyZW50aGVzZXMoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgdHJpbW1lZCA9IHNvdXJjZS50cmltKCk7XG5cbiAgLy8g7KCE7LK0IHByZWRpY2F0ZeulvCDqsJDsi7wg6rSE7Zi466eMIOygnOqxsO2VmOqzoCDrgrTrtoAgZ3JvdXBpbmfsnYAg6rG065Oc66as7KeAIOyViuuKlOuLpC5cbiAgd2hpbGUgKHRyaW1tZWQuc3RhcnRzV2l0aChcIihcIikgJiYgdHJpbW1lZC5lbmRzV2l0aChcIilcIikpIHtcbiAgICBjb25zdCBjbG9zZUluZGV4ID0gZmluZE1hdGNoaW5nUGFyZW50aGVzaXNJblNxbCh0cmltbWVkLCAwKTtcbiAgICBpZiAoY2xvc2VJbmRleCA9PT0gdHJpbW1lZC5sZW5ndGggLSAxKSB7XG4gICAgICB0cmltbWVkID0gdHJpbW1lZC5zbGljZSgxLCAtMSkudHJpbSgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gdHJpbW1lZDtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplSW5kZXhXaGVyZVByZWRpY2F0ZUJ5QXN0KHdoZXJlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIC8vIG5vZGUtc3FsLXBhcnNlcuuKlCByYXcgcHJlZGljYXRl66W8IOyngeygkSDtjIzsi7HtlZjsp4Ag7JWK7Jy866+A66GcIOyehOyLnCBTRUxFQ1QgV0hFUkXroZwg6rCQ7Iu864ukLlxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU3FsQXN0VmFsdWUoXG4gICAgICBJTkRFWF9XSEVSRV9TUUxfUEFSU0VSLmFzdGlmeShcbiAgICAgICAgYFNFTEVDVCAqIEZST00gX19zb25hbXVfaW5kZXhfcHJlZGljYXRlX3NvdXJjZSBXSEVSRSAke3doZXJlfWAsXG4gICAgICAgIHsgZGF0YWJhc2U6IFwicG9zdGdyZXNxbFwiIH0sXG4gICAgICApLFxuICAgICk7XG4gICAgY29uc3Qgc3RhdGVtZW50ID0gQXJyYXkuaXNBcnJheShwYXJzZWQpID8gcGFyc2VkWzBdIDogcGFyc2VkO1xuICAgIGlmICghaXNTcWxBc3RSZWNvcmQoc3RhdGVtZW50KSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VyaWFsaXplSW5kZXhXaGVyZUFzdChzdGF0ZW1lbnQud2hlcmUpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUluZGV4V2hlcmVBc3Qobm9kZTogU3FsQXN0VmFsdWUpOiBzdHJpbmcge1xuICAvLyBQb3N0Z3JlU1FM7J20IElO7J2EIEFOWShBUlJBWVsuLi5dKeuhnCDsnqzsnpHshLHtlZjrr4DroZwgbWVtYmVyc2hpcOydgCDrqLzsoIAg7Yq57IiYIOyymOumrO2VnOuLpC5cbiAgY29uc3QgbWVtYmVyc2hpcCA9IHNlcmlhbGl6ZVNxbE1lbWJlcnNoaXBQcmVkaWNhdGUobm9kZSk7XG4gIGlmIChtZW1iZXJzaGlwKSB7XG4gICAgcmV0dXJuIG1lbWJlcnNoaXA7XG4gIH1cblxuICBpZiAoIWlzU3FsQXN0UmVjb3JkKG5vZGUpKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG5vZGUpO1xuICB9XG5cbiAgY29uc3QgdHlwZSA9IGdldFNxbEFzdFN0cmluZyhub2RlLCBcInR5cGVcIik7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJiaW5hcnlfZXhwclwiOiB7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IG5vcm1hbGl6ZVNxbE9wZXJhdG9yKGdldFNxbEFzdFN0cmluZyhub2RlLCBcIm9wZXJhdG9yXCIpKTtcbiAgICAgIGNvbnN0IGxlZnQgPSBzZXJpYWxpemVJbmRleFdoZXJlQXN0KG5vZGUubGVmdCk7XG4gICAgICBjb25zdCByaWdodCA9IHNlcmlhbGl6ZUluZGV4V2hlcmVBc3Qobm9kZS5yaWdodCk7XG4gICAgICBpZiAob3BlcmF0b3IgPT09IFwiQU5EXCIgfHwgb3BlcmF0b3IgPT09IFwiT1JcIikge1xuICAgICAgICAvLyBBTkQvT1LripQg7Iic7ISc6rCAIGRpZmYg7J2Y66+466W8IOuwlOq+uOyngCDslYrsnLzrr4DroZwgc3RhYmxlIGlkZW50aXR566GcIOygleugrO2VnOuLpC5cbiAgICAgICAgcmV0dXJuIGAoJHtbbGVmdCwgcmlnaHRdLnRvU29ydGVkKCkuam9pbihgICR7b3BlcmF0b3J9IGApfSlgO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGAoJHtsZWZ0fSAke29wZXJhdG9yfSAke3JpZ2h0fSlgO1xuICAgIH1cbiAgICBjYXNlIFwidW5hcnlfZXhwclwiOiB7XG4gICAgICBjb25zdCBvcGVyYXRvciA9IG5vcm1hbGl6ZVNxbE9wZXJhdG9yKGdldFNxbEFzdFN0cmluZyhub2RlLCBcIm9wZXJhdG9yXCIpKTtcbiAgICAgIHJldHVybiBgKCR7b3BlcmF0b3J9ICR7c2VyaWFsaXplSW5kZXhXaGVyZUFzdChub2RlLmV4cHIpfSlgO1xuICAgIH1cbiAgICBjYXNlIFwiY29sdW1uX3JlZlwiOiB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplU3FsQ29sdW1uUmVmKG5vZGUpO1xuICAgIH1cbiAgICBjYXNlIFwic2luZ2xlX3F1b3RlX3N0cmluZ1wiOiB7XG4gICAgICByZXR1cm4gYHN0cmluZzoke0pTT04uc3RyaW5naWZ5KGdldFNxbEFzdFN0cmluZyhub2RlLCBcInZhbHVlXCIpKX1gO1xuICAgIH1cbiAgICBjYXNlIFwibnVtYmVyXCI6IHtcbiAgICAgIHJldHVybiBgbnVtYmVyOiR7U3RyaW5nKG5vZGUudmFsdWUpfWA7XG4gICAgfVxuICAgIGNhc2UgXCJib29sXCI6IHtcbiAgICAgIHJldHVybiBgYm9vbDoke1N0cmluZyhub2RlLnZhbHVlKS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgfVxuICAgIGNhc2UgXCJudWxsXCI6IHtcbiAgICAgIHJldHVybiBcIm51bGxcIjtcbiAgICB9XG4gICAgY2FzZSBcImNhc3RcIjoge1xuICAgICAgY29uc3QgdGFyZ2V0VHlwZSA9IGdldFNxbENhc3RUYXJnZXRUeXBlKG5vZGUpO1xuICAgICAgY29uc3QgZXhwciA9IG5vZGUuZXhwcjtcbiAgICAgIGlmICh0YXJnZXRUeXBlICYmIGlzVGV4dExpa2VTcWxUeXBlKHRhcmdldFR5cGUpICYmIGlzU3FsU3RyaW5nTGl0ZXJhbExpa2UoZXhwcikpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUluZGV4V2hlcmVBc3Qoc3RyaXBUZXh0TGlrZVNxbENhc3QoZXhwcikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBjYXN0KCR7c2VyaWFsaXplSW5kZXhXaGVyZUFzdChleHByKX0gYXMgJHt0YXJnZXRUeXBlID8/IFwidW5rbm93blwifSlgO1xuICAgIH1cbiAgICBjYXNlIFwiZnVuY3Rpb25cIjoge1xuICAgICAgcmV0dXJuIGBmbjoke2dldFNxbEZ1bmN0aW9uTmFtZShub2RlKX0oJHtzZXJpYWxpemVTcWxFeHByTGlzdChub2RlLmFyZ3MpLmpvaW4oXCIsXCIpfSlgO1xuICAgIH1cbiAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgcmV0dXJuIGBhcnJheTpbJHtzZXJpYWxpemVTcWxBcnJheUVsZW1lbnRzKG5vZGUpLm1hcChzZXJpYWxpemVJbmRleFdoZXJlQXN0KS5qb2luKFwiLFwiKX1dYDtcbiAgICB9XG4gICAgY2FzZSBcImV4cHJfbGlzdFwiOiB7XG4gICAgICByZXR1cm4gYGxpc3Q6WyR7c2VyaWFsaXplU3FsRXhwckxpc3Qobm9kZSkubWFwKHNlcmlhbGl6ZUluZGV4V2hlcmVBc3QpLmpvaW4oXCIsXCIpfV1gO1xuICAgIH1cbiAgICBjYXNlIFwiZGVmYXVsdFwiOiB7XG4gICAgICByZXR1cm4gYGlkZW50OiR7bm9ybWFsaXplU3FsSWRlbnRpZmllcihnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJ2YWx1ZVwiKSA/PyBcIlwiKX1gO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplVW5rbm93blNxbEFzdFJlY29yZChub2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplU3FsTWVtYmVyc2hpcFByZWRpY2F0ZShub2RlOiBTcWxBc3RWYWx1ZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICghaXNTcWxBc3RSZWNvcmQobm9kZSkgfHwgZ2V0U3FsQXN0U3RyaW5nKG5vZGUsIFwidHlwZVwiKSAhPT0gXCJiaW5hcnlfZXhwclwiKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIElOICguLi4p6rO8ID0gQU5ZKEFSUkFZWy4uLl0p66W8IOuPmeydvO2VnCB1bm9yZGVyZWQgbWVtYmVyc2hpcCDtkZztmITsnLzroZwg66ee7LaY64ukLlxuICBjb25zdCBvcGVyYXRvciA9IG5vcm1hbGl6ZVNxbE9wZXJhdG9yKGdldFNxbEFzdFN0cmluZyhub2RlLCBcIm9wZXJhdG9yXCIpKTtcbiAgY29uc3QgbGVmdCA9IHNlcmlhbGl6ZUluZGV4V2hlcmVBc3Qoc3RyaXBUZXh0TGlrZVNxbENhc3Qobm9kZS5sZWZ0KSk7XG4gIGNvbnN0IHZhbHVlcyA9ICgoKSA9PiB7XG4gICAgaWYgKG9wZXJhdG9yID09PSBcIklOXCIpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemVTcWxNZW1iZXJzaGlwVmFsdWVzKHNlcmlhbGl6ZVNxbEV4cHJMaXN0KG5vZGUucmlnaHQpKTtcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0b3IgPT09IFwiPVwiKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplU3FsTWVtYmVyc2hpcFZhbHVlcyhnZXRTcWxBbnlBcnJheUVsZW1lbnRzKG5vZGUucmlnaHQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9KSgpO1xuXG4gIGlmICghdmFsdWVzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBgbWVtYmVyc2hpcDoke2xlZnR9OmluOlske3ZhbHVlcy5qb2luKFwiLFwiKX1dYDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplU3FsTWVtYmVyc2hpcFZhbHVlcyh2YWx1ZXM6IFNxbEFzdFZhbHVlW10gfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGlmICghdmFsdWVzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIG1lbWJlcnNoaXAg6rCS7J2YIOyInOyEnOyZgCDspJHrs7XsnYAg7J2Y66+46rCAIOyXhuycvOuvgOuhnCDslYjsoJXsoIHsnbggaWRlbnRpdHnroZwg7KCV66Cs7ZWc64ukLlxuICBjb25zdCBzZXJpYWxpemVkID0gdmFsdWVzLm1hcCgodmFsdWUpID0+IHNlcmlhbGl6ZUluZGV4V2hlcmVBc3Qoc3RyaXBUZXh0TGlrZVNxbENhc3QodmFsdWUpKSk7XG4gIHJldHVybiBbLi4ubmV3IFNldChzZXJpYWxpemVkKV0udG9Tb3J0ZWQoKTtcbn1cblxuZnVuY3Rpb24gZ2V0U3FsQW55QXJyYXlFbGVtZW50cyhub2RlOiBTcWxBc3RWYWx1ZSk6IFNxbEFzdFZhbHVlW10gfCB1bmRlZmluZWQge1xuICBpZiAoIWlzU3FsQXN0UmVjb3JkKG5vZGUpIHx8IGdldFNxbEFzdFN0cmluZyhub2RlLCBcInR5cGVcIikgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGdldFNxbEZ1bmN0aW9uTmFtZShub2RlKSAhPT0gXCJhbnlcIikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBBTlkoKeydmCDssqsg67KI7Ke4IOyduOyekOunjCBQb3N0Z3JlU1FMIOuwsOyXtCBtZW1iZXJzaGlwIOuMgOyDgeycvOuhnCDtlbTshJ3tlZzri6QuXG4gIGNvbnN0IFthcmddID0gc2VyaWFsaXplU3FsRXhwckxpc3Qobm9kZS5hcmdzKTtcbiAgaWYgKCFhcmcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVNxbEFycmF5RWxlbWVudHMoc3RyaXBUZXh0TGlrZVNxbENhc3QoYXJnKSk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVNxbEFycmF5RWxlbWVudHMobm9kZTogU3FsQXN0VmFsdWUpOiBTcWxBc3RWYWx1ZVtdIHtcbiAgaWYgKCFpc1NxbEFzdFJlY29yZChub2RlKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIHBhcnNlciDrsoTsoITsl5Ag65Sw6528IOuwsOyXtCDsm5DshozqsIAgYXJyYXkuZXhwcl9saXN0IOuYkOuKlCBleHByX2xpc3TroZwg65Ok7Ja07Jio64ukLlxuICBpZiAoZ2V0U3FsQXN0U3RyaW5nKG5vZGUsIFwidHlwZVwiKSA9PT0gXCJhcnJheVwiKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZVNxbEV4cHJMaXN0KG5vZGUuZXhwcl9saXN0KTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVTcWxFeHByTGlzdChub2RlKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplU3FsRXhwckxpc3Qobm9kZTogU3FsQXN0VmFsdWUpOiBTcWxBc3RWYWx1ZVtdIHtcbiAgaWYgKCFpc1NxbEFzdFJlY29yZChub2RlKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIGV4cHJfbGlzdOuKlCDsi6TsoJwgQVNUIOuFuOuTnCDrsLDsl7TsnbTqs6AsIOuLqOydvCDtkZztmITsi53snYAg67Cw7Je0IO2VmOuCmOuhnCDqsJDsi7gg7Ya17J287ZWc64ukLlxuICBpZiAoZ2V0U3FsQXN0U3RyaW5nKG5vZGUsIFwidHlwZVwiKSA9PT0gXCJleHByX2xpc3RcIiAmJiBBcnJheS5pc0FycmF5KG5vZGUudmFsdWUpKSB7XG4gICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gIH1cblxuICByZXR1cm4gW25vZGVdO1xufVxuXG5mdW5jdGlvbiBzdHJpcFRleHRMaWtlU3FsQ2FzdChub2RlOiBTcWxBc3RWYWx1ZSk6IFNxbEFzdFZhbHVlIHtcbiAgaWYgKCFpc1NxbEFzdFJlY29yZChub2RlKSB8fCBnZXRTcWxBc3RTdHJpbmcobm9kZSwgXCJ0eXBlXCIpICE9PSBcImNhc3RcIikge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLy8gUG9zdGdyZVNRTOydgCB2YXJjaGFyL3RleHQgY2FzdOulvCDrsLDsl7Qg65iQ64qUIOybkOyGjCDsqr3snLzroZwg7Jiu6ri4IOyImCDsnojslrQg67mE6rWQ7JeQ7IScIOygnOqxsO2VnOuLpC5cbiAgY29uc3QgdGFyZ2V0VHlwZSA9IGdldFNxbENhc3RUYXJnZXRUeXBlKG5vZGUpO1xuICBpZiAoIXRhcmdldFR5cGUgfHwgIWlzVGV4dExpa2VTcWxUeXBlKHRhcmdldFR5cGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gc3RyaXBUZXh0TGlrZVNxbENhc3Qobm9kZS5leHByKTtcbn1cblxuZnVuY3Rpb24gaXNTcWxTdHJpbmdMaXRlcmFsTGlrZShub2RlOiBTcWxBc3RWYWx1ZSk6IGJvb2xlYW4ge1xuICAvLyDrrLjsnpDsl7QgbGl0ZXJhbOyXkCDrtpnsnYAgdGV4dCDqs4Tsl7QgY2FzdOuKlCBtZW1iZXJzaGlwIOu5hOq1kOyXkOyEnCDsnZjrr7jqsIAg6rCZ64ukLlxuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVGV4dExpa2VTcWxDYXN0KG5vZGUpO1xuICByZXR1cm4gaXNTcWxBc3RSZWNvcmQoc3RyaXBwZWQpICYmIGdldFNxbEFzdFN0cmluZyhzdHJpcHBlZCwgXCJ0eXBlXCIpID09PSBcInNpbmdsZV9xdW90ZV9zdHJpbmdcIjtcbn1cblxuZnVuY3Rpb24gZ2V0U3FsQ2FzdFRhcmdldFR5cGUobm9kZTogU3FsQXN0UmVjb3JkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUudGFyZ2V0KSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBjaGFyYWN0ZXIgdmFyeWluZ+yymOufvCDsl6zrn6wgdG9rZW7snLzroZwg7Jik64qUIO2DgOyeheuqheydhCDtlZjrgpjsnZgg7KCV6rec7ZmUIOusuOyekOyXtOuhnCDtlansuZzri6QuXG4gIGNvbnN0IGRhdGFUeXBlcyA9IG5vZGUudGFyZ2V0XG4gICAgLm1hcCgodGFyZ2V0KSA9PiAoaXNTcWxBc3RSZWNvcmQodGFyZ2V0KSA/IGdldFNxbEFzdFN0cmluZyh0YXJnZXQsIFwiZGF0YVR5cGVcIikgOiB1bmRlZmluZWQpKVxuICAgIC5maWx0ZXIoKGRhdGFUeXBlKTogZGF0YVR5cGUgaXMgc3RyaW5nID0+IGRhdGFUeXBlICE9PSB1bmRlZmluZWQpO1xuXG4gIGlmIChkYXRhVHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVTcWxEYXRhVHlwZShkYXRhVHlwZXMuam9pbihcIiBcIikpO1xufVxuXG5mdW5jdGlvbiBpc1RleHRMaWtlU3FsVHlwZSh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8g67Cw7Je0IGNhc3QodGV4dFtdKeuPhCDsm5DshowgbWVtYmVyc2hpcCDruYTqtZDsl5DshJzripQgdGV4dCDqs4Tsl7QgY2FzdOuhnCDst6jquIntlZzri6QuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSBub3JtYWxpemVTcWxEYXRhVHlwZSh0eXBlKS5yZXBsYWNlKC9cXFtcXF0kL2csIFwiXCIpO1xuICByZXR1cm4gbm9ybWFsaXplZCA9PT0gXCJ0ZXh0XCIgfHwgbm9ybWFsaXplZCA9PT0gXCJ2YXJjaGFyXCI7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNxbERhdGFUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0eXBlXG4gICAgLnRyaW0oKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1xccysvZywgXCIgXCIpXG4gICAgLnJlcGxhY2UoL15jaGFyYWN0ZXIgdmFyeWluZyQvLCBcInZhcmNoYXJcIik7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVNxbENvbHVtblJlZihub2RlOiBTcWxBc3RSZWNvcmQpOiBzdHJpbmcge1xuICBjb25zdCB0YWJsZSA9IHNlcmlhbGl6ZVNxbElkZW50aWZpZXJOb2RlKG5vZGUudGFibGUpO1xuICBjb25zdCBjb2x1bW4gPSBzZXJpYWxpemVTcWxJZGVudGlmaWVyTm9kZShub2RlLmNvbHVtbik7XG4gIHJldHVybiBgY29sdW1uOiR7dGFibGUgPyBgJHt0YWJsZX0uYCA6IFwiXCJ9JHtjb2x1bW59YDtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplU3FsSWRlbnRpZmllck5vZGUobm9kZTogU3FsQXN0VmFsdWUpOiBzdHJpbmcge1xuICBpZiAoaXNTdHJpbmdWYWx1ZShub2RlKSkge1xuICAgIHJldHVybiBub3JtYWxpemVTcWxJZGVudGlmaWVyKG5vZGUpO1xuICB9XG5cbiAgLy8gcXVvdGVkIGlkZW50aWZpZXLsmYAgZnVuY3Rpb24gbmFtZeydmCBBU1Qgc2hhcGUg7LCo7J2066W8IOqwmeydgCBpZGVudGlmaWVyIOusuOyekOyXtOuhnCDtnaHsiJjtlZzri6QuXG4gIGlmIChpc1NxbEFzdFJlY29yZChub2RlKSkge1xuICAgIGlmIChpc1N0cmluZ1ZhbHVlKG5vZGUudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplU3FsSWRlbnRpZmllcihub2RlLnZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNTcWxBc3RSZWNvcmQobm9kZS5leHByKSAmJiBpc1N0cmluZ1ZhbHVlKG5vZGUuZXhwci52YWx1ZSkpIHtcbiAgICAgIHJldHVybiBub3JtYWxpemVTcWxJZGVudGlmaWVyKG5vZGUuZXhwci52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG5cbmZ1bmN0aW9uIGdldFNxbEZ1bmN0aW9uTmFtZShub2RlOiBTcWxBc3RSZWNvcmQpOiBzdHJpbmcge1xuICBjb25zdCBuYW1lID0gbm9kZS5uYW1lO1xuICBpZiAoaXNTdHJpbmdWYWx1ZShuYW1lKSkge1xuICAgIHJldHVybiBub3JtYWxpemVTcWxJZGVudGlmaWVyKG5hbWUpO1xuICB9XG5cbiAgLy8gQU5Z7LKY65+8IG5hbWUubmFtZSDrsLDsl7TroZwg7Jik64qUIGZ1bmN0aW9uIEFTVOulvCBzY2hlbWEtcXVhbGlmaWVkIOydtOumhOq5jOyngCDsp4Dsm5DtlZzri6QuXG4gIGlmIChpc1NxbEFzdFJlY29yZChuYW1lKSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG5hbWUubmFtZSkpIHtcbiAgICAgIHJldHVybiBuYW1lLm5hbWUubWFwKHNlcmlhbGl6ZVNxbElkZW50aWZpZXJOb2RlKS5qb2luKFwiLlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lUGFydHMgPSBzZXJpYWxpemVTcWxFeHByTGlzdChuYW1lKTtcbiAgICBpZiAobmFtZVBhcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBuYW1lUGFydHMubWFwKHNlcmlhbGl6ZVNxbElkZW50aWZpZXJOb2RlKS5qb2luKFwiLlwiKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU3FsSWRlbnRpZmllcihpZGVudGlmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaWRlbnRpZmllci50cmltKCkudG9Mb3dlckNhc2UoKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU3FsT3BlcmF0b3Iob3BlcmF0b3I6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiAob3BlcmF0b3IgPz8gXCJcIikudHJpbSgpLnRvVXBwZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCBcIiBcIik7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZVVua25vd25TcWxBc3RSZWNvcmQobm9kZTogU3FsQXN0UmVjb3JkKTogc3RyaW5nIHtcbiAgLy8g7JWE7KeBIOuqheyLnOyggeycvOuhnCDri6Tro6jsp4Ag7JWK64qUIEFTVCDrhbjrk5zripQga2V5IOygleugrOuhnCDstZzshoztlZwg7JWI7KCV7KCB7J24IOu5hOq1kOqwkuydhCDrp4zrk6Dri6QuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhub2RlKVxuICAgIC5maWx0ZXIoKFtrZXldKSA9PiBrZXkgIT09IFwicGFyZW50aGVzZXNcIilcbiAgICAudG9Tb3J0ZWQoKFtsZWZ0XSwgW3JpZ2h0XSkgPT4gbGVmdC5sb2NhbGVDb21wYXJlKHJpZ2h0KSlcbiAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06JHtzZXJpYWxpemVJbmRleFdoZXJlQXN0KHZhbHVlKX1gKTtcblxuICByZXR1cm4gYHJlY29yZDp7JHtlbnRyaWVzLmpvaW4oXCIsXCIpfX1gO1xufVxuXG5mdW5jdGlvbiBpc1NxbEFzdFJlY29yZCh2YWx1ZTogU3FsQXN0VmFsdWUpOiB2YWx1ZSBpcyBTcWxBc3RSZWNvcmQge1xuICByZXR1cm4gaXNPYmplY3RWYWx1ZSh2YWx1ZSkgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBnZXRTcWxBc3RTdHJpbmcobm9kZTogU3FsQXN0UmVjb3JkLCBrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHZhbHVlID0gbm9kZVtrZXldO1xuICByZXR1cm4gaXNTdHJpbmdWYWx1ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZmluZE1hdGNoaW5nUGFyZW50aGVzaXNJblNxbChzb3VyY2U6IHN0cmluZywgb3BlbkluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICBsZXQgZGVwdGggPSAwO1xuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlO1xuICBsZXQgaW5Eb3VibGVRdW90ZSA9IGZhbHNlO1xuXG4gIC8vIFNRTCDrrLjsnpDsl7Tqs7wgcXVvdGVkIGlkZW50aWZpZXIg64K067aAIOq0hO2YuOuKlCBncm91cGluZyDqtITtmLjroZwg7IS47KeAIOyViuuKlOuLpC5cbiAgZm9yIChsZXQgaW5kZXggPSBvcGVuSW5kZXg7IGluZGV4IDwgc291cmNlLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGNvbnN0IGNoYXIgPSBzb3VyY2VbaW5kZXhdO1xuICAgIGNvbnN0IG5leHRDaGFyID0gc291cmNlW2luZGV4ICsgMV07XG5cbiAgICBpZiAoY2hhciA9PT0gXCInXCIgJiYgIWluRG91YmxlUXVvdGUpIHtcbiAgICAgIGlmIChpblNpbmdsZVF1b3RlICYmIG5leHRDaGFyID09PSBcIidcIikge1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGluU2luZ2xlUXVvdGUgPSAhaW5TaW5nbGVRdW90ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInICYmICFpblNpbmdsZVF1b3RlKSB7XG4gICAgICBpZiAoaW5Eb3VibGVRdW90ZSAmJiBuZXh0Q2hhciA9PT0gJ1wiJykge1xuICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGluRG91YmxlUXVvdGUgPSAhaW5Eb3VibGVRdW90ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpblNpbmdsZVF1b3RlIHx8IGluRG91YmxlUXVvdGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSBcIihcIikge1xuICAgICAgZGVwdGggKz0gMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChjaGFyID09PSBcIilcIikge1xuICAgICAgZGVwdGggLT0gMTtcbiAgICAgIGlmIChkZXB0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQVlBLFNBQVMsaUJBQXdCLE9BQTJCO0NBQzFELElBQUksVUFBVSxNQUFNLE9BQU87Q0FDM0IsSUFBSSxVQUFVLFFBQVcsT0FBTztDQUNoQyxJQUFJLGVBQWUsS0FBSyxHQUFHLE9BQU87Q0FDbEMsSUFBSSxjQUFjLEtBQUssR0FBRyxPQUFPO0NBQ2pDLElBQUksY0FBYyxLQUFLLEdBQUcsT0FBTztDQUNqQyxJQUFJLE1BQU0sUUFBUSxLQUFLLEdBQ3JCLE9BQU8sTUFBTSxJQUFJLGdCQUFnQjtDQUVuQyxJQUFJLGNBQWMsS0FBSyxHQUNyQixPQUFPLE9BQU8sWUFDWixPQUFPLFFBQVEsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssV0FBVyxDQUFDLEtBQUssaUJBQWlCLEtBQUssQ0FBQyxDQUFDLENBQzVFO0NBRUYsTUFBTSxJQUFJLE1BQU0sc0JBQXNCO0FBQ3hDOzs7OztBQU1BLFNBQWdCLDZCQUE2QixPQUErQztDQUMxRixJQUFJLENBQUMsT0FDSDtDQUlGLE1BQU0sVUFBVSwwQkFBMEIsTUFBTSxLQUFLLENBQUM7Q0FDdEQsSUFBSSxRQUFRLFdBQVcsR0FDckI7Q0FHRixPQUFPO0FBQ1Q7Ozs7O0FBTUEsU0FBZ0IsMENBQ2QsT0FDb0I7Q0FDcEIsTUFBTSxhQUFhLDZCQUE2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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-set.d.ts","sourceRoot":"","sources":["../../src/migration/migration-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAc/C,OAAO,EAOL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"migration-set.d.ts","sourceRoot":"","sources":["../../src/migration/migration-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAc/C,OAAO,EAOL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CA0LlF"}
|
|
@@ -166,4 +166,4 @@ var init_migration_set = __esmMin((() => {
|
|
|
166
166
|
init_migration_set();
|
|
167
167
|
export { getMigrationSetFromEntity, init_migration_set };
|
|
168
168
|
|
|
169
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXNldC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9uL21pZ3JhdGlvbi1zZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuaW1wb3J0IHsgdHlwZSBFbnRpdHkgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc0hhc01hbnlSZWxhdGlvblByb3AsXG4gIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCxcbiAgaXNOdW1iZXJQcm9wLFxuICBpc051bWVyaWNQcm9wLFxuICBpc09uZVRvT25lUmVsYXRpb25Qcm9wLFxuICBpc1JlbGF0aW9uUHJvcCxcbiAgaXNTdHJpbmdQcm9wLFxuICBpc1ZlY3RvclByb3AsXG4gIGlzVmlydHVhbFByb3AsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbnRpdHlQcm9wLFxuICB0eXBlIE1pZ3JhdGlvbkNvbHVtbixcbiAgdHlwZSBNaWdyYXRpb25Db2x1bW5UeXBlLFxuICB0eXBlIE1pZ3JhdGlvbkZvcmVpZ24sXG4gIHR5cGUgTWlncmF0aW9uSW5kZXgsXG4gIHR5cGUgTWlncmF0aW9uSm9pblRhYmxlLFxuICB0eXBlIE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBleGhhdXN0aXZlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbi8qKlxuICogRW50aXR566W8IOydveyWtOyEnCBNaWdyYXRpb25TZXRBbmRKb2luVGFibGXsnYQg66eM65Ok7Ja07Ji164uI64ukLlxuICogQHBhcmFtIGVudGl0eSBFbnRpdHkg6rCd7LK0XG4gKiBAcmV0dXJucyBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUg6rCd7LK0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWdyYXRpb25TZXRGcm9tRW50aXR5KGVudGl0eTogRW50aXR5KTogTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlIHtcbiAgY29uc3QgbWlncmF0aW9uU2V0OiBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUgPSBlbnRpdHkucHJvcHMucmVkdWNlKFxuICAgIChyLCBwcm9wKSA9PiB7XG4gICAgICAvLyB2aXJ0dWFsIO2VhOuTnCDsoJzsmbhcbiAgICAgIGlmIChpc1ZpcnR1YWxQcm9wKHByb3ApKSB7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfVxuICAgICAgLy8gSGFzTWFueSDsvIDsnbTsiqTripQg7JWE66y0IOyymOumrOuPhCDtlZjsp4Ag7JWK7J2MXG4gICAgICBpZiAoaXNIYXNNYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfVxuXG4gICAgICAvLyDsnbzrsJgg7Lus65+8XG4gICAgICBpZiAoIWlzUmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHtcbiAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgdHlwZTogcmVzb2x2ZUVudGl0eVByb3BUeXBlVG9NaWdyYXRpb25Db2x1bW5UeXBlKHByb3ApLFxuICAgICAgICAgIG51bGxhYmxlOiBwcm9wLm51bGxhYmxlID09PSB0cnVlLFxuICAgICAgICAgIC4uLigoKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcC5kYkRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRUbzogcHJvcC5kYkRlZmF1bHQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfSkoKSxcbiAgICAgICAgICAvLyBTdHJpbmcg7YOA7J6F7JeQIGxlbmd0aCDsnojripQg6rK97JqwIOy2lOqwgFxuICAgICAgICAgIC4uLihpc1N0cmluZ1Byb3AocHJvcCkgJiZcbiAgICAgICAgICAgIHByb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICBsZW5ndGg6IHByb3AubGVuZ3RoLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgLy8gTnVtYmVyL051bWVyaWMg7YOA7J6F7J2YIOqyveyasCBwcmVjaXNpb24sIHNjYWxlIOy2lOqwgFxuICAgICAgICAgIC4uLigoaXNOdW1iZXJQcm9wKHByb3ApIHx8IGlzTnVtZXJpY1Byb3AocHJvcCkpICYmIHtcbiAgICAgICAgICAgIHByZWNpc2lvbjogcHJvcC5wcmVjaXNpb24sXG4gICAgICAgICAgICBzY2FsZTogcHJvcC5zY2FsZSxcbiAgICAgICAgICAgIG51bWJlclR5cGU6IGlzTnVtYmVyUHJvcChwcm9wKSA/IChwcm9wLm51bWJlclR5cGUgPz8gXCJudW1lcmljXCIpIDogXCJudW1lcmljXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gVmVjdG9yIO2DgOyeheydmCDqsr3smrAgZGltZW5zaW9ucyDstpTqsIBcbiAgICAgICAgICAuLi4oaXNWZWN0b3JQcm9wKHByb3ApICYmIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IHByb3AuZGltZW5zaW9ucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBHZW5lcmF0ZWQgQ29sdW1uIOygleuztCDstpTqsIBcbiAgICAgICAgICAuLi4ocHJvcC5nZW5lcmF0ZWQgJiYge1xuICAgICAgICAgICAgZ2VuZXJhdGVkOiBwcm9wLmdlbmVyYXRlZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcblxuICAgICAgICByLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIC8vIE1hbnlUb01hbnkg7LyA7J207IqkXG4gICAgICAgIGNvbnN0IHJlbE1kID0gRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKTtcbiAgICAgICAgY29uc3QgdGFibGUxID0gZW50aXR5LnRhYmxlO1xuICAgICAgICBjb25zdCB0YWJsZTIgPSByZWxNZC50YWJsZTtcblxuICAgICAgICAvLyDqsIEg7JeU7Yuw7Yuw7J2YIFBLIO2DgOyehSDsoJXrs7Qg6rCA7KC47Jik6riwXG4gICAgICAgIGNvbnN0IHRoaXNQa1R5cGUgPSBlbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgICAgIGNvbnN0IHRoaXNQa1Byb3AgPSBlbnRpdHkuZ2V0UGtQcm9wKCk7XG4gICAgICAgIGNvbnN0IHJlbFBrVHlwZSA9IHJlbE1kLmdldFBrVHlwZSgpO1xuICAgICAgICBjb25zdCByZWxQa1Byb3AgPSByZWxNZC5nZXRQa1Byb3AoKTtcblxuICAgICAgICBjb25zdCBqb2luID0ge1xuICAgICAgICAgIGZyb206IGAke2VudGl0eS50YWJsZX0uaWRgLFxuICAgICAgICAgIHRocm91Z2g6IHtcbiAgICAgICAgICAgIGZyb206IGAke3Byb3Auam9pblRhYmxlfS4ke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUxKX1faWRgLFxuICAgICAgICAgICAgdG86IGAke3Byb3Auam9pblRhYmxlfS4ke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUyKX1faWRgLFxuICAgICAgICAgICAgb25VcGRhdGU6IHByb3Aub25VcGRhdGUsXG4gICAgICAgICAgICBvbkRlbGV0ZTogcHJvcC5vbkRlbGV0ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRvOiBgJHtyZWxNZC50YWJsZX0uaWRgLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0aHJvdWdoID0gam9pbi50aHJvdWdoO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBbdGhyb3VnaC5mcm9tLCB0aHJvdWdoLnRvXTtcbiAgICAgICAgci5qb2luVGFibGVzLnB1c2goe1xuICAgICAgICAgIHRhYmxlOiB0aHJvdWdoLmZyb20uc3BsaXQoXCIuXCIpWzBdLFxuICAgICAgICAgIGluZGV4ZXM6IGVudGl0eS5pbmRleGVzXG4gICAgICAgICAgICAuZmlsdGVyKChpbmRleCkgPT4gaW5kZXguY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5uYW1lLmluY2x1ZGVzKGAke3Byb3Auam9pblRhYmxlfS5gKSkpXG4gICAgICAgICAgICAubWFwKChpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uaW5kZXgsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IGluZGV4LmNvbHVtbnMubWFwKChjb2wpID0+ICh7XG4gICAgICAgICAgICAgICAgbmFtZTogY29sLm5hbWUucmVwbGFjZShgJHtwcm9wLmpvaW5UYWJsZX0uYCwgXCJcIiksXG4gICAgICAgICAgICAgICAgbnVsbHNGaXJzdDogY29sLm51bGxzRmlyc3QsXG4gICAgICAgICAgICAgICAgc29ydE9yZGVyOiBjb2wuc29ydE9yZGVyLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgICAgIHR5cGU6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g7ZiE7J6sIOyXlO2LsO2LsOydmCBGS1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBgJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMSl9X2lkYCxcbiAgICAgICAgICAgICAgdHlwZTogdGhpc1BrVHlwZSxcbiAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAuLi4odGhpc1BrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHRoaXNQa1Byb3AudHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHRoaXNQa1Byb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICAgICAgbGVuZ3RoOiB0aGlzUGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyDssLjsobAg7JeU7Yuw7Yuw7J2YIEZLXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IGAke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUyKX1faWRgLFxuICAgICAgICAgICAgICB0eXBlOiByZWxQa1R5cGUsXG4gICAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgLi4uKHJlbFBrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHJlbFBrUHJvcC50eXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgcmVsUGtQcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgICAgIGxlbmd0aDogcmVsUGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBmb3JlaWduczogZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIC8vIO2YhOyerCDtlYTrk5zqsIAg7Ja065akIO2FjOydtOu4lOyXkCDsho3tlZjripTsp4Ag7YyQ64uoXG4gICAgICAgICAgICBjb25zdCBjb2wgPSBmaWVsZC5zcGxpdChcIi5cIilbMV07XG4gICAgICAgICAgICBjb25zdCB0byA9ICgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChgJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKGpvaW4udG8uc3BsaXQoXCIuXCIpWzBdKX1faWRgID09PSBjb2wpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gam9pbi50bztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gam9pbi5mcm9tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uczogW2NvbF0sXG4gICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICBvblVwZGF0ZTogdGhyb3VnaC5vblVwZGF0ZSxcbiAgICAgICAgICAgICAgb25EZWxldGU6IHRocm91Z2gub25EZWxldGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwcm9wKSB8fFxuICAgICAgICAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pXG4gICAgICApIHtcbiAgICAgICAgLy8gLU9uZVJlbGF0aW9uIOy8gOydtOyKpFxuICAgICAgICBjb25zdCByZWxFbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChwcm9wLndpdGgpO1xuICAgICAgICBjb25zdCBwa1R5cGUgPSByZWxFbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgICAgIGNvbnN0IHBrUHJvcCA9IHJlbEVudGl0eS5nZXRQa1Byb3AoKTtcblxuICAgICAgICBjb25zdCBpZENvbHVtbk5hbWUgPSBgJHtwcm9wLm5hbWV9X2lkYDtcbiAgICAgICAgci5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGlkQ29sdW1uTmFtZSxcbiAgICAgICAgICB0eXBlOiBwa1R5cGUsXG4gICAgICAgICAgbnVsbGFibGU6IHByb3AubnVsbGFibGUgPz8gZmFsc2UsXG4gICAgICAgICAgLy8gc3RyaW5nIEZL7J24IOqyveyasCBsZW5ndGjrj4Qg7KCE64usXG4gICAgICAgICAgLi4uKHBrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgcGtQcm9wLnR5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHBrUHJvcC5sZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICAgIGxlbmd0aDogcGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb3AudXNlQ29uc3RyYWludCA/PyB0cnVlKSB7XG4gICAgICAgICAgci5mb3JlaWducy5wdXNoKHtcbiAgICAgICAgICAgIGNvbHVtbnM6IFtpZENvbHVtbk5hbWVdLFxuICAgICAgICAgICAgdG86IGAke2luZmxlY3Rpb24udW5kZXJzY29yZShpbmZsZWN0aW9uLnBsdXJhbGl6ZShwcm9wLndpdGgpKS50b0xvd2VyQ2FzZSgpfS5pZGAsXG4gICAgICAgICAgICBvblVwZGF0ZTogcHJvcC5vblVwZGF0ZSA/PyBcIlJFU1RSSUNUXCIsXG4gICAgICAgICAgICBvbkRlbGV0ZTogcHJvcC5vbkRlbGV0ZSA/PyBcIlJFU1RSSUNUXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHI7XG4gICAgfSxcbiAgICB7XG4gICAgICB0YWJsZTogZW50aXR5LnRhYmxlLFxuICAgICAgY29sdW1uczogW10gYXMgTWlncmF0aW9uQ29sdW1uW10sXG4gICAgICBpbmRleGVzOiBbXSBhcyBNaWdyYXRpb25JbmRleFtdLFxuICAgICAgZm9yZWlnbnM6IFtdIGFzIE1pZ3JhdGlvbkZvcmVpZ25bXSxcbiAgICAgIGpvaW5UYWJsZXM6IFtdIGFzIE1pZ3JhdGlvbkpvaW5UYWJsZVtdLFxuICAgIH0sXG4gICk7XG5cbiAgLy8gaW5kZXhlc1xuICBtaWdyYXRpb25TZXQuaW5kZXhlcyA9IGVudGl0eS5pbmRleGVzLmZpbHRlcigoaW5kZXgpID0+XG4gICAgaW5kZXguY29sdW1ucy5maW5kKChjb2wpID0+ICFjb2wubmFtZS5pbmNsdWRlcyhcIi5cIikpLFxuICApO1xuXG4gIHJldHVybiBtaWdyYXRpb25TZXQ7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVFbnRpdHlQcm9wVHlwZVRvTWlncmF0aW9uQ29sdW1uVHlwZShwcm9wOiBFbnRpdHlQcm9wKTogTWlncmF0aW9uQ29sdW1uVHlwZSB7XG4gIGlmIChwcm9wLnR5cGUgPT09IFwicmVsYXRpb25cIiB8fCBwcm9wLnR5cGUgPT09IFwidmlydHVhbFwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlc29sdmVkIGNvbHVtbiB0eXBlOiAke3Byb3AudHlwZX1gKTtcbiAgfVxuXG4gIHN3aXRjaCAocHJvcC50eXBlKSB7XG4gICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgY2FzZSBcInN0cmluZ1tdXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdbXVwiO1xuICAgIGNhc2UgXCJlbnVtXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFwiZW51bVtdXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdbXVwiO1xuICAgIGNhc2UgXCJpbnRlZ2VyXCI6XG4gICAgICByZXR1cm4gXCJpbnRlZ2VyXCI7XG4gICAgY2FzZSBcImludGVnZXJbXVwiOlxuICAgICAgcmV0dXJuIFwiaW50ZWdlcltdXCI7XG4gICAgY2FzZSBcImJpZ0ludGVnZXJcIjpcbiAgICAgIHJldHVybiBcImJpZ0ludGVnZXJcIjtcbiAgICBjYXNlIFwiYmlnSW50ZWdlcltdXCI6XG4gICAgICByZXR1cm4gXCJiaWdJbnRlZ2VyW11cIjtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNcIjtcbiAgICBjYXNlIFwibnVtYmVyW11cIjpcbiAgICAgIHJldHVybiBcIm51bWJlck9yTnVtZXJpY1tdXCI7XG4gICAgY2FzZSBcIm51bWVyaWNcIjpcbiAgICAgIHJldHVybiBcIm51bWJlck9yTnVtZXJpY1wiO1xuICAgIGNhc2UgXCJudW1lcmljW11cIjpcbiAgICAgIHJldHVybiBcIm51bWJlck9yTnVtZXJpY1tdXCI7XG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgIHJldHVybiBcImJvb2xlYW5cIjtcbiAgICBjYXNlIFwiYm9vbGVhbltdXCI6XG4gICAgICByZXR1cm4gXCJib29sZWFuW11cIjtcbiAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgcmV0dXJuIFwiZGF0ZVwiO1xuICAgIGNhc2UgXCJkYXRlW11cIjpcbiAgICAgIHJldHVybiBcImRhdGVbXVwiO1xuICAgIGNhc2UgXCJ1dWlkXCI6XG4gICAgICByZXR1cm4gXCJ1dWlkXCI7XG4gICAgY2FzZSBcInV1aWRbXVwiOlxuICAgICAgcmV0dXJuIFwidXVpZFtdXCI7XG4gICAgY2FzZSBcImpzb25cIjpcbiAgICAgIHJldHVybiBcImpzb25cIjtcbiAgICBjYXNlIFwic2VhcmNoVGV4dFwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgY2FzZSBcInZlY3RvclwiOlxuICAgICAgcmV0dXJuIFwidmVjdG9yXCI7XG4gICAgY2FzZSBcInZlY3RvcltdXCI6XG4gICAgICByZXR1cm4gXCJ2ZWN0b3JbXVwiO1xuICAgIGNhc2UgXCJ0c3ZlY3RvclwiOlxuICAgICAgcmV0dXJuIFwidHN2ZWN0b3JcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgZXhoYXVzdGl2ZShwcm9wKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBlbnRpdHkgcHJvcCB0eXBlOiAkeyhwcm9wIGFzIHsgdHlwZTogc3RyaW5nIH0pLnR5cGV9YCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFnQ0EsU0FBZ0IsMEJBQTBCLFFBQTBDO0NBQ2xGLE1BQU0sZUFBeUMsT0FBTyxNQUFNLFFBQ3pELEdBQUcsU0FBUztFQUVYLElBQUksY0FBYyxJQUFJLEdBQ3BCLE9BQU87RUFHVCxJQUFJLHNCQUFzQixJQUFJLEdBQzVCLE9BQU87RUFJVCxJQUFJLENBQUMsZUFBZSxJQUFJLEdBQUc7R0FDekIsTUFBTSxTQUFTO0lBQ2IsTUFBTSxLQUFLO0lBQ1gsTUFBTSwyQ0FBMkMsSUFBSTtJQUNyRCxVQUFVLEtBQUssYUFBYTtJQUM1QixVQUFVO0tBQ1IsSUFBSSxLQUFLLGNBQWMsUUFDckIsT0FBTyxFQUNMLFdBQVcsS0FBSyxVQUNsQjtLQUVGLE9BQU8sQ0FBQztJQUNWLEVBQUEsQ0FBRztJQUVILEdBQUksYUFBYSxJQUFJLEtBQ25CLEtBQUssV0FBVyxVQUFhLEVBQzNCLFFBQVEsS0FBSyxPQUNmO0lBRUYsSUFBSyxhQUFhLElBQUksS0FBSyxjQUFjLElBQUksTUFBTTtLQUNqRCxXQUFXLEtBQUs7S0FDaEIsT0FBTyxLQUFLO0tBQ1osWUFBWSxhQUFhLElBQUksSUFBSyxLQUFLLGNBQWMsWUFBYTtJQUNwRTtJQUVBLEdBQUksYUFBYSxJQUFJLEtBQUssRUFDeEIsWUFBWSxLQUFLLFdBQ25CO0lBRUEsR0FBSSxLQUFLLGFBQWEsRUFDcEIsV0FBVyxLQUFLLFVBQ2xCO0dBQ0Y7R0FFQSxFQUFFLFFBQVEsS0FBSyxNQUFNO0VBQ3ZCO0VBRUEsSUFBSSx5QkFBeUIsSUFBSSxHQUFHO0dBRWxDLE1BQU0sUUFBUSxjQUFjLElBQUksS0FBSyxJQUFJO0dBQ3pDLE1BQU0sU0FBUyxPQUFPO0dBQ3RCLE1BQU0sU0FBUyxNQUFNO0dBR3JCLE1BQU0sYUFBYSxPQUFPLFVBQVU7R0FDcEMsTUFBTSxhQUFhLE9BQU8sVUFBVTtHQUNwQyxNQUFNLFlBQVksTUFBTSxVQUFVO0dBQ2xDLE1BQU0sWUFBWSxNQUFNLFVBQVU7R0FFbEMsTUFBTSxPQUFPO0lBQ1gsTUFBTSxHQUFHLE9BQU8sTUFBTTtJQUN0QixTQUFTO0tBQ1AsTUFBTSxHQUFHLEtBQUssVUFBVSxHQUFHLFdBQVcsWUFBWSxNQUFNLEVBQUU7S0FDMUQsSUFBSSxHQUFHLEtBQUssVUFBVSxHQUFHLFdBQVcsWUFBWSxNQUFNLEVBQUU7S0FDeEQsVUFBVSxLQUFLO0tBQ2YsVUFBVSxLQUFLO0lBQ2pCO0lBQ0EsSUFBSSxHQUFHLE1BQU0sTUFBTTtHQUNyQjtHQUNBLE1BQU0sVUFBVSxLQUFLO0dBQ3JCLE1BQU0sU0FBUyxDQUFDLFFBQVEsTUFBTSxRQUFRLEVBQUU7R0FDeEMsRUFBRSxXQUFXLEtBQUs7SUFDaEIsT0FBTyxRQUFRLEtBQUssTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMvQixTQUFTLE9BQU8sUUFDYixRQUFRLFVBQVUsTUFBTSxRQUFRLE1BQU0sUUFBUSxJQUFJLEtBQUssU0FBUyxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3ZGLEtBQUssV0FBVztLQUNmLEdBQUc7S0FDSCxTQUFTLE1BQU0sUUFBUSxLQUFLLFNBQVM7TUFDbkMsTUFBTSxJQUFJLEtBQUssUUFBUSxHQUFHLEtBQUssVUFBVSxJQUFJLEVBQUU7TUFDL0MsWUFBWSxJQUFJO01BQ2hCLFdBQVcsSUFBSTtLQUNqQixFQUFFO0lBQ0osRUFBRTtJQUNKLFNBQVM7S0FDUDtNQUNFLE1BQU07TUFDTixNQUFNO01BQ04sVUFBVTtLQUNaO0tBRUE7TUFDRSxNQUFNLEdBQUcsV0FBVyxZQUFZLE1BQU0sRUFBRTtNQUN4QyxNQUFNO01BQ04sVUFBVTtNQUNWLEdBQUksZUFBZSxZQUNqQixXQUFXLFNBQVMsWUFDcEIsV0FBVyxXQUFXLFVBQWEsRUFDakMsUUFBUSxXQUFXLE9BQ3JCO0tBQ0o7S0FFQTtNQUNFLE1BQU0sR0FBRyxXQUFXLFlBQVksTUFBTSxFQUFFO01BQ3hDLE1BQU07TUFDTixVQUFVO01BQ1YsR0FBSSxjQUFjLFlBQ2hCLFVBQVUsU0FBUyxZQUNuQixVQUFVLFdBQVcsVUFBYSxFQUNoQyxRQUFRLFVBQVUsT0FDcEI7S0FDSjtJQUNGO0lBQ0EsVUFBVSxPQUFPLEtBQUssVUFBVTtLQUU5QixNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0tBQzdCLE1BQU0sWUFBWTtNQUNoQixJQUFJLEdBQUcsV0FBVyxZQUFZLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEtBQzVELE9BQU8sS0FBSztXQUVaLE9BQU8sS0FBSztLQUVoQixFQUFBLENBQUc7S0FDSCxPQUFPO01BQ0wsU0FBUyxDQUFDLEdBQUc7TUFDYjtNQUNBLFVBQVUsUUFBUTtNQUNsQixVQUFVLFFBQVE7S0FDcEI7SUFDRixDQUFDO0dBQ0gsQ0FBQztHQUNELE9BQU87RUFDVCxPQUFPLElBQ0wsMkJBQTJCLElBQUksS0FDOUIsdUJBQXVCLElBQUksS0FBSyxLQUFLLGVBQ3RDO0dBRUEsTUFBTSxZQUFZLGNBQWMsSUFBSSxLQUFLLElBQUk7R0FDN0MsTUFBTSxTQUFTLFVBQVUsVUFBVTtHQUNuQyxNQUFNLFNBQVMsVUFBVSxVQUFVO0dBRW5DLE1BQU0sZUFBZSxHQUFHLEtBQUssS0FBSztHQUNsQyxFQUFFLFFBQVEsS0FBSztJQUNiLE1BQU07SUFDTixNQUFNO0lBQ04sVUFBVSxLQUFLLFlBQVk7SUFFM0IsR0FBSSxXQUFXLFlBQ2IsT0FBTyxTQUFTLFlBQ2hCLE9BQU8sV0FBVyxVQUFhLEVBQzdCLFFBQVEsT0FBTyxPQUNqQjtHQUNKLENBQUM7R0FDRCxJQUFJLEtBQUssaUJBQWlCLE1BQ3hCLEVBQUUsU0FBUyxLQUFLO0lBQ2QsU0FBUyxDQUFDLFlBQVk7SUFDdEIsSUFBSSxHQUFHLFdBQVcsV0FBVyxXQUFXLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRTtJQUM1RSxVQUFVLEtBQUssWUFBWTtJQUMzQixVQUFVLEtBQUssWUFBWTtHQUM3QixDQUFDO0VBRUw7RUFFQSxPQUFPO0NBQ1QsR0FDQTtFQUNFLE9BQU8sT0FBTztFQUNkLFNBQVMsQ0FBQztFQUNWLFNBQVMsQ0FBQztFQUNWLFVBQVUsQ0FBQztFQUNYLFlBQVksQ0FBQztDQUNmLENBQ0Y7Q0FHQSxhQUFhLFVBQVUsT0FBTyxRQUFRLFFBQVEsVUFDNUMsTUFBTSxRQUFRLE1BQU0sUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEdBQUcsQ0FBQyxDQUNyRDtDQUVBLE9BQU87QUFDVDtBQUVBLFNBQVMsMkNBQTJDLE1BQXVDO0NBQ3pGLElBQUksS0FBSyxTQUFTLGNBQWMsS0FBSyxTQUFTLFdBQzVDLE1BQU0sSUFBSSxNQUFNLDJCQUEyQixLQUFLLE1BQU07Q0FHeEQsUUFBUSxLQUFLLE1BQWI7RUFDRSxLQUFLLFVBQ0gsT0FBTztFQUNULEtBQUssWUFDSCxPQUFPO0VBQ1QsS0FBSyxRQUNILE9BQU87RUFDVCxLQUFLLFVBQ0gsT0FBTztFQUNULEtBQUssV0FDSCxPQUFPO0VBQ1QsS0FBSyxhQUNILE9BQU87RUFDVCxLQUFLLGNBQ0gsT0FBTztFQUNULEtBQUssZ0JBQ0gsT0FBTztFQUNULEtBQUssVUFDSCxPQUFPO0VBQ1QsS0FBSyxZQUNILE9BQU87RUFDVCxLQUFLLFdBQ0gsT0FBTztFQUNULEtBQUssYUFDSCxPQUFPO0VBQ1QsS0FBSyxXQUNILE9BQU87RUFDVCxLQUFLLGFBQ0gsT0FBTztFQUNULEtBQUssUUFDSCxPQUFPO0VBQ1QsS0FBSyxVQUNILE9BQU87RUFDVCxLQUFLLFFBQ0gsT0FBTztFQUNULEtBQUssVUFDSCxPQUFPO0VBQ1QsS0FBSyxRQUNILE9BQU87RUFDVCxLQUFLLGNBQ0gsT0FBTztFQUNULEtBQUssVUFDSCxPQUFPO0VBQ1QsS0FBSyxZQUNILE9BQU87RUFDVCxLQUFLLFlBQ0gsT0FBTztFQUNUO0dBQ0UsV0FBVyxJQUFJO0dBQ2YsTUFBTSxJQUFJLE1BQU0sNkJBQThCLEtBQTBCLE1BQU07Q0FDbEY7QUFDRjs7cUJBN1F3RDtZQVlqQztZQVVvQiJ9
|
|
169
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXNldC5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9uL21pZ3JhdGlvbi1zZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuaW1wb3J0IHsgdHlwZSBFbnRpdHkgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc0hhc01hbnlSZWxhdGlvblByb3AsXG4gIGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCxcbiAgaXNOdW1iZXJQcm9wLFxuICBpc051bWVyaWNQcm9wLFxuICBpc09uZVRvT25lUmVsYXRpb25Qcm9wLFxuICBpc1JlbGF0aW9uUHJvcCxcbiAgaXNTdHJpbmdQcm9wLFxuICBpc1ZlY3RvclByb3AsXG4gIGlzVmlydHVhbFByb3AsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHtcbiAgdHlwZSBFbnRpdHlQcm9wLFxuICB0eXBlIE1pZ3JhdGlvbkNvbHVtbixcbiAgdHlwZSBNaWdyYXRpb25Db2x1bW5UeXBlLFxuICB0eXBlIE1pZ3JhdGlvbkZvcmVpZ24sXG4gIHR5cGUgTWlncmF0aW9uSW5kZXgsXG4gIHR5cGUgTWlncmF0aW9uSm9pblRhYmxlLFxuICB0eXBlIE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBleGhhdXN0aXZlIH0gZnJvbSBcIi4uL3V0aWxzL3V0aWxzXCI7XG5cbi8qKlxuICogRW50aXR566W8IOydveyWtOyEnCBNaWdyYXRpb25TZXRBbmRKb2luVGFibGXsnYQg66eM65Ok7Ja07Ji164uI64ukLlxuICogQHBhcmFtIGVudGl0eSBFbnRpdHkg6rCd7LK0XG4gKiBAcmV0dXJucyBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUg6rCd7LK0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWdyYXRpb25TZXRGcm9tRW50aXR5KGVudGl0eTogRW50aXR5KTogTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlIHtcbiAgY29uc3QgbWlncmF0aW9uU2V0OiBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUgPSBlbnRpdHkucHJvcHMucmVkdWNlKFxuICAgIChyLCBwcm9wKSA9PiB7XG4gICAgICAvLyB2aXJ0dWFsIO2VhOuTnCDsoJzsmbhcbiAgICAgIGlmIChpc1ZpcnR1YWxQcm9wKHByb3ApKSB7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfVxuICAgICAgLy8gSGFzTWFueSDsvIDsnbTsiqTripQg7JWE66y0IOyymOumrOuPhCDtlZjsp4Ag7JWK7J2MXG4gICAgICBpZiAoaXNIYXNNYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfVxuXG4gICAgICAvLyDsnbzrsJgg7Lus65+8XG4gICAgICBpZiAoIWlzUmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHtcbiAgICAgICAgICBuYW1lOiBwcm9wLm5hbWUsXG4gICAgICAgICAgdHlwZTogcmVzb2x2ZUVudGl0eVByb3BUeXBlVG9NaWdyYXRpb25Db2x1bW5UeXBlKHByb3ApLFxuICAgICAgICAgIG51bGxhYmxlOiBwcm9wLm51bGxhYmxlID09PSB0cnVlLFxuICAgICAgICAgIC4uLigoKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcC5kYkRlZmF1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRUbzogcHJvcC5kYkRlZmF1bHQsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfSkoKSxcbiAgICAgICAgICAvLyBTdHJpbmcg7YOA7J6F7JeQIGxlbmd0aCDsnojripQg6rK97JqwIOy2lOqwgFxuICAgICAgICAgIC4uLihpc1N0cmluZ1Byb3AocHJvcCkgJiZcbiAgICAgICAgICAgIHByb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICBsZW5ndGg6IHByb3AubGVuZ3RoLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgLy8gTnVtYmVyL051bWVyaWMg7YOA7J6F7J2YIOqyveyasCBwcmVjaXNpb24sIHNjYWxlIOy2lOqwgFxuICAgICAgICAgIC4uLigoaXNOdW1iZXJQcm9wKHByb3ApIHx8IGlzTnVtZXJpY1Byb3AocHJvcCkpICYmIHtcbiAgICAgICAgICAgIHByZWNpc2lvbjogcHJvcC5wcmVjaXNpb24sXG4gICAgICAgICAgICBzY2FsZTogcHJvcC5zY2FsZSxcbiAgICAgICAgICAgIG51bWJlclR5cGU6IGlzTnVtYmVyUHJvcChwcm9wKSA/IChwcm9wLm51bWJlclR5cGUgPz8gXCJudW1lcmljXCIpIDogXCJudW1lcmljXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gVmVjdG9yIO2DgOyeheydmCDqsr3smrAgZGltZW5zaW9ucyDstpTqsIBcbiAgICAgICAgICAuLi4oaXNWZWN0b3JQcm9wKHByb3ApICYmIHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IHByb3AuZGltZW5zaW9ucyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICAvLyBHZW5lcmF0ZWQgQ29sdW1uIOygleuztCDstpTqsIBcbiAgICAgICAgICAuLi4ocHJvcC5nZW5lcmF0ZWQgJiYge1xuICAgICAgICAgICAgZ2VuZXJhdGVkOiBwcm9wLmdlbmVyYXRlZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcblxuICAgICAgICByLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgIC8vIE1hbnlUb01hbnkg7LyA7J207IqkXG4gICAgICAgIGNvbnN0IHJlbE1kID0gRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKTtcbiAgICAgICAgY29uc3QgdGFibGUxID0gZW50aXR5LnRhYmxlO1xuICAgICAgICBjb25zdCB0YWJsZTIgPSByZWxNZC50YWJsZTtcblxuICAgICAgICAvLyDqsIEg7JeU7Yuw7Yuw7J2YIFBLIO2DgOyehSDsoJXrs7Qg6rCA7KC47Jik6riwXG4gICAgICAgIGNvbnN0IHRoaXNQa1R5cGUgPSBlbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgICAgIGNvbnN0IHRoaXNQa1Byb3AgPSBlbnRpdHkuZ2V0UGtQcm9wKCk7XG4gICAgICAgIGNvbnN0IHJlbFBrVHlwZSA9IHJlbE1kLmdldFBrVHlwZSgpO1xuICAgICAgICBjb25zdCByZWxQa1Byb3AgPSByZWxNZC5nZXRQa1Byb3AoKTtcblxuICAgICAgICBjb25zdCBqb2luID0ge1xuICAgICAgICAgIGZyb206IGAke2VudGl0eS50YWJsZX0uaWRgLFxuICAgICAgICAgIHRocm91Z2g6IHtcbiAgICAgICAgICAgIGZyb206IGAke3Byb3Auam9pblRhYmxlfS4ke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUxKX1faWRgLFxuICAgICAgICAgICAgdG86IGAke3Byb3Auam9pblRhYmxlfS4ke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUyKX1faWRgLFxuICAgICAgICAgICAgb25VcGRhdGU6IHByb3Aub25VcGRhdGUsXG4gICAgICAgICAgICBvbkRlbGV0ZTogcHJvcC5vbkRlbGV0ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRvOiBgJHtyZWxNZC50YWJsZX0uaWRgLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0aHJvdWdoID0gam9pbi50aHJvdWdoO1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBbdGhyb3VnaC5mcm9tLCB0aHJvdWdoLnRvXTtcbiAgICAgICAgci5qb2luVGFibGVzLnB1c2goe1xuICAgICAgICAgIHRhYmxlOiB0aHJvdWdoLmZyb20uc3BsaXQoXCIuXCIpWzBdLFxuICAgICAgICAgIGluZGV4ZXM6IGVudGl0eS5pbmRleGVzXG4gICAgICAgICAgICAuZmlsdGVyKChpbmRleCkgPT4gaW5kZXguY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5uYW1lLmluY2x1ZGVzKGAke3Byb3Auam9pblRhYmxlfS5gKSkpXG4gICAgICAgICAgICAubWFwKChpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uaW5kZXgsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IGluZGV4LmNvbHVtbnMubWFwKChjb2wpID0+ICh7XG4gICAgICAgICAgICAgICAgbmFtZTogY29sLm5hbWUucmVwbGFjZShgJHtwcm9wLmpvaW5UYWJsZX0uYCwgXCJcIiksXG4gICAgICAgICAgICAgICAgbnVsbHNGaXJzdDogY29sLm51bGxzRmlyc3QsXG4gICAgICAgICAgICAgICAgc29ydE9yZGVyOiBjb2wuc29ydE9yZGVyLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgICAgIHR5cGU6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g7ZiE7J6sIOyXlO2LsO2LsOydmCBGS1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBgJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMSl9X2lkYCxcbiAgICAgICAgICAgICAgdHlwZTogdGhpc1BrVHlwZSxcbiAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAuLi4odGhpc1BrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHRoaXNQa1Byb3AudHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHRoaXNQa1Byb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICAgICAgbGVuZ3RoOiB0aGlzUGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyDssLjsobAg7JeU7Yuw7Yuw7J2YIEZLXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IGAke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUyKX1faWRgLFxuICAgICAgICAgICAgICB0eXBlOiByZWxQa1R5cGUsXG4gICAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgLi4uKHJlbFBrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHJlbFBrUHJvcC50eXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgcmVsUGtQcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgICAgIGxlbmd0aDogcmVsUGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBmb3JlaWduczogZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgICAgIC8vIO2YhOyerCDtlYTrk5zqsIAg7Ja065akIO2FjOydtOu4lOyXkCDsho3tlZjripTsp4Ag7YyQ64uoXG4gICAgICAgICAgICBjb25zdCBjb2wgPSBmaWVsZC5zcGxpdChcIi5cIilbMV07XG4gICAgICAgICAgICBjb25zdCB0byA9ICgoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChgJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKGpvaW4udG8uc3BsaXQoXCIuXCIpWzBdKX1faWRgID09PSBjb2wpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gam9pbi50bztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gam9pbi5mcm9tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSgpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY29sdW1uczogW2NvbF0sXG4gICAgICAgICAgICAgIHRvLFxuICAgICAgICAgICAgICBvblVwZGF0ZTogdGhyb3VnaC5vblVwZGF0ZSxcbiAgICAgICAgICAgICAgb25EZWxldGU6IHRocm91Z2gub25EZWxldGUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwcm9wKSB8fFxuICAgICAgICAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pXG4gICAgICApIHtcbiAgICAgICAgLy8gLU9uZVJlbGF0aW9uIOy8gOydtOyKpFxuICAgICAgICBjb25zdCByZWxFbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChwcm9wLndpdGgpO1xuICAgICAgICBjb25zdCBwa1R5cGUgPSByZWxFbnRpdHkuZ2V0UGtUeXBlKCk7XG4gICAgICAgIGNvbnN0IHBrUHJvcCA9IHJlbEVudGl0eS5nZXRQa1Byb3AoKTtcblxuICAgICAgICBjb25zdCBpZENvbHVtbk5hbWUgPSBgJHtwcm9wLm5hbWV9X2lkYDtcbiAgICAgICAgci5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgIG5hbWU6IGlkQ29sdW1uTmFtZSxcbiAgICAgICAgICB0eXBlOiBwa1R5cGUsXG4gICAgICAgICAgbnVsbGFibGU6IHByb3AubnVsbGFibGUgPz8gZmFsc2UsXG4gICAgICAgICAgLy8gc3RyaW5nIEZL7J24IOqyveyasCBsZW5ndGjrj4Qg7KCE64usXG4gICAgICAgICAgLi4uKHBrVHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgcGtQcm9wLnR5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHBrUHJvcC5sZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICAgIGxlbmd0aDogcGtQcm9wLmxlbmd0aCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByb3AudXNlQ29uc3RyYWludCA/PyB0cnVlKSB7XG4gICAgICAgICAgci5mb3JlaWducy5wdXNoKHtcbiAgICAgICAgICAgIGNvbHVtbnM6IFtpZENvbHVtbk5hbWVdLFxuICAgICAgICAgICAgdG86IGAke2luZmxlY3Rpb24udW5kZXJzY29yZShpbmZsZWN0aW9uLnBsdXJhbGl6ZShwcm9wLndpdGgpKS50b0xvd2VyQ2FzZSgpfS5pZGAsXG4gICAgICAgICAgICBvblVwZGF0ZTogcHJvcC5vblVwZGF0ZSA/PyBcIlJFU1RSSUNUXCIsXG4gICAgICAgICAgICBvbkRlbGV0ZTogcHJvcC5vbkRlbGV0ZSA/PyBcIlJFU1RSSUNUXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHI7XG4gICAgfSxcbiAgICB7XG4gICAgICB0YWJsZTogZW50aXR5LnRhYmxlLFxuICAgICAgY29sdW1uczpcbiAgICAgICAgLyogU0FGRVRZOiBLbmV47JmAIFBvc3RncmVTUUwg7Iqk7YKk66eIIOyhsO2ajCDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyBbXSBhcyBNaWdyYXRpb25Db2x1bW5bXSxcbiAgICAgIGluZGV4ZXM6XG4gICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gW10gYXMgTWlncmF0aW9uSW5kZXhbXSxcbiAgICAgIGZvcmVpZ25zOlxuICAgICAgICAvKiBTQUZFVFk6IEtuZXjsmYAgUG9zdGdyZVNRTCDsiqTtgqTrp4gg7KGw7ZqMIOqzhOyVveydtCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIFtdIGFzIE1pZ3JhdGlvbkZvcmVpZ25bXSxcbiAgICAgIGpvaW5UYWJsZXM6XG4gICAgICAgIC8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gW10gYXMgTWlncmF0aW9uSm9pblRhYmxlW10sXG4gICAgfSxcbiAgKTtcblxuICAvLyBpbmRleGVzXG4gIG1pZ3JhdGlvblNldC5pbmRleGVzID0gZW50aXR5LmluZGV4ZXMuZmlsdGVyKChpbmRleCkgPT5cbiAgICBpbmRleC5jb2x1bW5zLmZpbmQoKGNvbCkgPT4gIWNvbC5uYW1lLmluY2x1ZGVzKFwiLlwiKSksXG4gICk7XG5cbiAgcmV0dXJuIG1pZ3JhdGlvblNldDtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUVudGl0eVByb3BUeXBlVG9NaWdyYXRpb25Db2x1bW5UeXBlKHByb3A6IEVudGl0eVByb3ApOiBNaWdyYXRpb25Db2x1bW5UeXBlIHtcbiAgaWYgKHByb3AudHlwZSA9PT0gXCJyZWxhdGlvblwiIHx8IHByb3AudHlwZSA9PT0gXCJ2aXJ0dWFsXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVzb2x2ZWQgY29sdW1uIHR5cGU6ICR7cHJvcC50eXBlfWApO1xuICB9XG5cbiAgc3dpdGNoIChwcm9wLnR5cGUpIHtcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFwic3RyaW5nW11cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1tdXCI7XG4gICAgY2FzZSBcImVudW1cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJlbnVtW11cIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1tdXCI7XG4gICAgY2FzZSBcImludGVnZXJcIjpcbiAgICAgIHJldHVybiBcImludGVnZXJcIjtcbiAgICBjYXNlIFwiaW50ZWdlcltdXCI6XG4gICAgICByZXR1cm4gXCJpbnRlZ2VyW11cIjtcbiAgICBjYXNlIFwiYmlnSW50ZWdlclwiOlxuICAgICAgcmV0dXJuIFwiYmlnSW50ZWdlclwiO1xuICAgIGNhc2UgXCJiaWdJbnRlZ2VyW11cIjpcbiAgICAgIHJldHVybiBcImJpZ0ludGVnZXJbXVwiO1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgIHJldHVybiBcIm51bWJlck9yTnVtZXJpY1wiO1xuICAgIGNhc2UgXCJudW1iZXJbXVwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljW11cIjtcbiAgICBjYXNlIFwibnVtZXJpY1wiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljXCI7XG4gICAgY2FzZSBcIm51bWVyaWNbXVwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljW11cIjtcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgcmV0dXJuIFwiYm9vbGVhblwiO1xuICAgIGNhc2UgXCJib29sZWFuW11cIjpcbiAgICAgIHJldHVybiBcImJvb2xlYW5bXVwiO1xuICAgIGNhc2UgXCJkYXRlXCI6XG4gICAgICByZXR1cm4gXCJkYXRlXCI7XG4gICAgY2FzZSBcImRhdGVbXVwiOlxuICAgICAgcmV0dXJuIFwiZGF0ZVtdXCI7XG4gICAgY2FzZSBcInV1aWRcIjpcbiAgICAgIHJldHVybiBcInV1aWRcIjtcbiAgICBjYXNlIFwidXVpZFtdXCI6XG4gICAgICByZXR1cm4gXCJ1dWlkW11cIjtcbiAgICBjYXNlIFwianNvblwiOlxuICAgICAgcmV0dXJuIFwianNvblwiO1xuICAgIGNhc2UgXCJzZWFyY2hUZXh0XCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICBjYXNlIFwidmVjdG9yXCI6XG4gICAgICByZXR1cm4gXCJ2ZWN0b3JcIjtcbiAgICBjYXNlIFwidmVjdG9yW11cIjpcbiAgICAgIHJldHVybiBcInZlY3RvcltdXCI7XG4gICAgY2FzZSBcInRzdmVjdG9yXCI6XG4gICAgICByZXR1cm4gXCJ0c3ZlY3RvclwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICBleGhhdXN0aXZlKHByb3ApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVW5rbm93biBlbnRpdHkgcHJvcCB0eXBlOiAkey8qIFNBRkVUWTogS25leOyZgCBQb3N0Z3JlU1FMIOyKpO2CpOuniCDsobDtmowg6rOE7JW97J20IOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gKHByb3AgYXMgeyB0eXBlOiBzdHJpbmcgfSkudHlwZX1gLFxuICAgICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWdDQSxTQUFnQiwwQkFBMEIsUUFBMEM7Q0FDbEYsTUFBTSxlQUF5QyxPQUFPLE1BQU0sUUFDekQsR0FBRyxTQUFTO0VBRVgsSUFBSSxjQUFjLElBQUksR0FDcEIsT0FBTztFQUdULElBQUksc0JBQXNCLElBQUksR0FDNUIsT0FBTztFQUlULElBQUksQ0FBQyxlQUFlLElBQUksR0FBRztHQUN6QixNQUFNLFNBQVM7SUFDYixNQUFNLEtBQUs7SUFDWCxNQUFNLDJDQUEyQyxJQUFJO0lBQ3JELFVBQVUsS0FBSyxhQUFhO0lBQzVCLFVBQVU7S0FDUixJQUFJLEtBQUssY0FBYyxRQUNyQixPQUFPLEVBQ0wsV0FBVyxLQUFLLFVBQ2xCO0tBRUYsT0FBTyxDQUFDO0lBQ1YsRUFBQSxDQUFHO0lBRUgsR0FBSSxhQUFhLElBQUksS0FDbkIsS0FBSyxXQUFXLFVBQWEsRUFDM0IsUUFBUSxLQUFLLE9BQ2Y7SUFFRixJQUFLLGFBQWEsSUFBSSxLQUFLLGNBQWMsSUFBSSxNQUFNO0tBQ2pELFdBQVcsS0FBSztLQUNoQixPQUFPLEtBQUs7S0FDWixZQUFZLGFBQWEsSUFBSSxJQUFLLEtBQUssY0FBYyxZQUFhO0lBQ3BFO0lBRUEsR0FBSSxh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
|
|
@@ -9,7 +9,7 @@ export type MigrationResult = {
|
|
|
9
9
|
}[];
|
|
10
10
|
export declare class MigrationTargetExecutionError extends Error {
|
|
11
11
|
readonly connKey: MigrationTarget | "shadow";
|
|
12
|
-
constructor(connKey: MigrationTarget | "shadow",
|
|
12
|
+
constructor(connKey: MigrationTarget | "shadow", cause: unknown);
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Note 2026-08-26, 병준
|
|
@@ -18,7 +18,8 @@ export declare class MigrationTargetExecutionError extends Error {
|
|
|
18
18
|
*/
|
|
19
19
|
export declare class Migrator {
|
|
20
20
|
private isMissingMigrationTableError;
|
|
21
|
-
|
|
21
|
+
/** 현재 실행 환경에서 허용된 마이그레이션 대상 키를 반환합니다. */
|
|
22
|
+
getMigrationTargetKeys(): MigrationTarget[];
|
|
22
23
|
private runMigrationsSequentially;
|
|
23
24
|
private migrationName;
|
|
24
25
|
private emitProgress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/migration/migrator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAOrD,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/migration/migrator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAOrD,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,gBAAgB,CAAC;AAQ1E,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAE9B,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,EAAE,CAAC;AAMJ,qBAAa,6BAA8B,SAAQ,KAAK;aAEpC,OAAO,EAAE,eAAe,GAAG,QAAQ;gBAAnC,OAAO,EAAE,eAAe,GAAG,QAAQ,EACnD,KAAK,EAAE,OAAO;CAKjB;AA4BD;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,4BAA4B;IAiBpC,yCAAyC;IACzC,sBAAsB,IAAI,eAAe,EAAE;YAc7B,yBAAyB;IAsCvC,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,mBAAmB;IAiC3B,OAAO,CAAC,qBAAqB;IAQ7B;;;;;OAKG;IACH,cAAc,IAAI,uBAAuB,EAAE;IAoB3C;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAqBnD;;;;;OAKG;IACG,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA0FvF;;;;OAIG;IACG,gBAAgB,CAAC,cAAc,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAWtE,qBAAqB;IASnC;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IA4C3C;;;;;OAKG;IACG,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhG;;;;;OAKG;IACG,QAAQ,CACZ,OAAO,EAAE,eAAe,EAAE,EAC1B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC;IAI3B;;;;OAIG;IACG,SAAS,CACb,MAAM,EAAE,OAAO,GAAG,UAAU,EAC5B,OAAO,EAAE,CAAC,MAAM,cAAc,CAAC,EAAE,GAChC,OAAO,CAAC,eAAe,CAAC;YAIb,qBAAqB;IAuDnC,OAAO,CAAC,UAAU;IAYlB;;;;;;OAMG;IACG,qBAAqB,CAAC,cAAc,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BxE,iBAAiB,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqErE;;;;;OAKG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;CA2F7E"}
|