sonamu 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +1 -2
- package/dist/ai/agents/agent.js +2 -3
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +1 -2
- package/dist/ai/providers/rtzr/error.js +2 -3
- package/dist/ai/providers/rtzr/model.js +1 -2
- package/dist/ai/providers/rtzr/options.js +1 -2
- package/dist/ai/providers/rtzr/provider.js +1 -2
- package/dist/ai/providers/rtzr/utils.js +1 -2
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.d.ts +1 -1
- package/dist/api/caster.d.ts.map +1 -1
- package/dist/api/caster.js +9 -9
- package/dist/api/code-converters.js +6 -5
- package/dist/api/config.d.ts +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +2 -3
- package/dist/api/context.d.ts +2 -3
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +2 -3
- package/dist/api/http-validator.js +2 -3
- package/dist/api/index.js +8 -3
- package/dist/api/secret.js +1 -2
- package/dist/api/sonamu.d.ts +3 -5
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +19 -18
- package/dist/api/validator.js +1 -2
- package/dist/api/websocket-helpers.js +2 -3
- package/dist/auth/audit-log/builders.js +1 -2
- package/dist/auth/audit-log/client-ip.js +2 -3
- package/dist/auth/audit-log/events.js +1 -2
- package/dist/auth/audit-log/plugin.d.ts.map +1 -1
- package/dist/auth/audit-log/plugin.js +2 -3
- package/dist/auth/audit-log-ingestor.js +2 -3
- package/dist/auth/auth-generator.js +2 -3
- package/dist/auth/better-auth-entities.js +1 -2
- package/dist/auth/better-auth-request.js +2 -3
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +2 -3
- package/dist/auth/plugins/entity-definitions/admin.js +1 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +1 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +1 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +1 -2
- package/dist/auth/plugins/entity-definitions/index.js +1 -2
- package/dist/auth/plugins/entity-definitions/jwt.js +1 -2
- package/dist/auth/plugins/entity-definitions/organization.js +1 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +1 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +1 -2
- package/dist/auth/plugins/entity-definitions/sso.js +1 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +1 -2
- package/dist/auth/plugins/entity-definitions/username.js +1 -2
- package/dist/auth/plugins/wrappers/admin.d.ts +33 -32
- package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/admin.js +2 -3
- package/dist/auth/plugins/wrappers/anonymous.js +2 -3
- package/dist/auth/plugins/wrappers/api-key.js +2 -3
- package/dist/auth/plugins/wrappers/jwt.js +2 -3
- package/dist/auth/plugins/wrappers/organization.js +2 -3
- package/dist/auth/plugins/wrappers/passkey.js +2 -3
- package/dist/auth/plugins/wrappers/phone-number.d.ts +43 -1
- package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.d.ts +138 -187
- package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/sso.js +1 -2
- package/dist/auth/plugins/wrappers/two-factor.d.ts +51 -10
- package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.d.ts +39 -5
- package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +5 -5
- package/dist/bin/compiler-policy.js +2 -3
- package/dist/bin/fixture.js +7 -5
- package/dist/bin/hmr-hook-register.js +1 -2
- package/dist/bin/migrate-targets.js +2 -3
- package/dist/bin/test-command.js +2 -3
- package/dist/bin/ts-loader-register.js +2 -3
- package/dist/bin/ts-loader-registration.js +2 -3
- package/dist/bin/typecheck-web.js +2 -3
- package/dist/cache/cache-manager.js +1 -2
- package/dist/cache/decorator.js +2 -3
- package/dist/cache/drivers.js +1 -2
- package/dist/cache/index.js +2 -3
- package/dist/cache-control/cache-control.js +1 -2
- package/dist/code-formatting/index.js +2 -3
- package/dist/code-formatting/oxfmt.js +2 -3
- package/dist/code-formatting/oxlint.js +2 -3
- package/dist/compress/compress.js +1 -2
- package/dist/compress/index.js +2 -2
- package/dist/compress/types.d.ts +1 -1
- package/dist/compress/types.d.ts.map +1 -1
- package/dist/cone/cone-generator.js +2 -3
- package/dist/database/_batch_update.js +1 -2
- package/dist/database/base-model.js +4 -4
- package/dist/database/db.js +4 -4
- package/dist/database/knex.js +2 -3
- package/dist/database/puri-wrapper.js +2 -3
- package/dist/database/puri.js +23 -22
- package/dist/database/puri.types.js +1 -2
- package/dist/database/transaction-context.js +1 -2
- package/dist/database/upsert-builder.js +2 -3
- package/dist/dict/en.js +2 -3
- package/dist/dict/index.js +3 -3
- package/dist/dict/ko.js +2 -3
- package/dist/dict/rc-keys.js +1 -2
- package/dist/dict/sd.js +2 -3
- package/dist/dict/sonamu-dictionary.js +7 -6
- package/dist/dict/utils.js +2 -3
- package/dist/entity/entity-manager.d.ts +66 -66
- package/dist/entity/entity-manager.js +4 -4
- package/dist/entity/entity-template-cone.js +2 -3
- package/dist/entity/entity.js +21 -18
- package/dist/env.js +1 -2
- package/dist/exceptions/error-handler.d.ts.map +1 -1
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +2 -3
- package/dist/filter/index.js +3 -2
- package/dist/filter/types.js +1 -2
- package/dist/filter/utils.js +7 -6
- package/dist/index.js +39 -5
- package/dist/logger/category.js +2 -3
- package/dist/logger/configure.js +5 -5
- package/dist/migration/code-generation.js +23 -16
- package/dist/migration/index-where-predicate.js +2 -3
- package/dist/migration/migration-set.js +2 -3
- package/dist/migration/migrator.js +2 -3
- package/dist/migration/postgresql-schema-reader.js +6 -9
- package/dist/migration/slack-confirm.js +2 -3
- package/dist/naite/naite-reporter.js +2 -3
- package/dist/naite/naite.js +10 -8
- package/dist/runtime-type.js +2 -3
- package/dist/ssr/hmr-opt-out.js +1 -2
- package/dist/ssr/index.js +7 -4
- package/dist/ssr/registry.js +1 -2
- package/dist/ssr/renderer.js +2 -3
- package/dist/storage/base-file.js +1 -2
- package/dist/storage/buffered-file.js +2 -3
- package/dist/storage/drivers.js +1 -2
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +1 -2
- package/dist/storage/storage-manager.js +2 -3
- package/dist/storage/uploaded-file.js +2 -3
- package/dist/stream/__tests__/ws-test-helpers.js +2 -3
- package/dist/stream/index.js +11 -2
- package/dist/stream/sse.js +1 -2
- package/dist/stream/ws-audience-resolver.js +2 -3
- package/dist/stream/ws-audience.js +1 -2
- package/dist/stream/ws-cluster-bus.js +1 -2
- package/dist/stream/ws-delivery.js +2 -3
- package/dist/stream/ws-frame.js +1 -2
- package/dist/stream/ws-local-connection-store.js +2 -3
- package/dist/stream/ws-presence-index.js +1 -2
- package/dist/stream/ws-presence-store.js +2 -3
- package/dist/stream/ws-registry.js +2 -3
- package/dist/stream/ws-session-id.js +1 -2
- package/dist/stream/ws-telemetry-memory.js +3 -4
- package/dist/stream/ws-telemetry-trace.js +1 -2
- package/dist/stream/ws-telemetry.js +2 -3
- package/dist/stream/ws.js +2 -3
- package/dist/syncer/api-parser.js +2 -3
- package/dist/syncer/checksum.js +4 -4
- package/dist/syncer/code-generator.js +4 -4
- package/dist/syncer/entity-operations.js +2 -3
- package/dist/syncer/event-batcher.js +1 -2
- package/dist/syncer/file-copy.js +2 -3
- package/dist/syncer/file-patterns.js +2 -3
- package/dist/syncer/file-tracking.js +2 -3
- package/dist/syncer/filesystem-dependencies.js +1 -2
- package/dist/syncer/index.js +8 -2
- package/dist/syncer/module-loader.js +8 -6
- package/dist/syncer/syncer-actions.js +8 -7
- package/dist/syncer/syncer.js +13 -8
- package/dist/syncer/watcher.js +2 -3
- package/dist/tasks/decorator.js +1 -2
- package/dist/tasks/step-wrapper.js +2 -3
- package/dist/tasks/workflow-manager.js +2 -3
- package/dist/template/entity-converter.js +17 -16
- package/dist/template/helpers.js +2 -3
- package/dist/template/implementations/entity.template.js +2 -3
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +2 -3
- package/dist/template/implementations/generated_http.template.js +6 -6
- package/dist/template/implementations/generated_sso.template.js +2 -3
- package/dist/template/implementations/http_validators.template.js +2 -3
- package/dist/template/implementations/init_types.template.js +2 -3
- package/dist/template/implementations/model.template.js +4 -4
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +2 -3
- package/dist/template/implementations/sd.template.js +2 -3
- package/dist/template/implementations/services.template.js +2 -3
- package/dist/template/implementations/view_form.template.js +12 -9
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.d.ts.map +1 -1
- package/dist/template/implementations/view_list.template.js +19 -17
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +9 -3
- package/dist/template/template-manager.js +2 -3
- package/dist/template/template-types.js +1 -2
- package/dist/template/template.js +2 -3
- package/dist/template/zod-converter.js +54 -47
- package/dist/testing/_relation-graph.js +2 -3
- package/dist/testing/bootstrap.js +2 -3
- package/dist/testing/data-explorer.js +2 -3
- package/dist/testing/dev-test-routes.js +2 -3
- package/dist/testing/dev-vitest-manager.js +15 -12
- package/dist/testing/faker-mappings.js +1 -2
- package/dist/testing/filesystem.js +2 -3
- package/dist/testing/fixture-generator.js +2 -3
- package/dist/testing/fixture-loader.js +1 -2
- package/dist/testing/fixture-manager.js +12 -9
- package/dist/testing/global-setup.js +5 -5
- package/dist/testing/index.js +6 -3
- package/dist/testing/naite-vitest-reporter.js +1 -2
- package/dist/testing/parallel-db-manager.js +2 -3
- package/dist/testing/vitest-helpers.js +2 -3
- package/dist/tooling/__tests__/helpers/sonamu-test-root.js +2 -3
- package/dist/tooling/cdd-service.js +1 -2
- package/dist/tooling/cli-tooling.js +1 -2
- package/dist/tooling/fixture-service.js +1 -2
- package/dist/tooling/index.js +1 -2
- package/dist/tooling/test-run-client.js +2 -3
- package/dist/tsdown.api.config.js +1 -2
- package/dist/types/types.js +2 -3
- package/dist/ui/ai-api.d.ts.map +1 -1
- package/dist/ui/ai-api.js +4 -5
- package/dist/ui/ai-client.d.ts +2 -2
- package/dist/ui/ai-client.d.ts.map +1 -1
- package/dist/ui/ai-client.js +9 -8
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +11 -8
- package/dist/ui/async-route.js +1 -2
- package/dist/ui/cdd-service.js +22 -21
- package/dist/ui/migrations-api.js +6 -5
- package/dist/ui-web/assets/index-QDMyy31K.js +180 -0
- package/dist/ui-web/assets/index-dV7akMFB.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +1 -2
- package/dist/utils/class-name.js +1 -2
- package/dist/utils/console-util.js +1 -2
- package/dist/utils/controller.js +2 -3
- package/dist/utils/esm-utils.js +1 -2
- package/dist/utils/fs-utils.js +2 -3
- package/dist/utils/lodash-able.js +1 -2
- package/dist/utils/model.js +1 -2
- package/dist/utils/object-utils.js +2 -3
- package/dist/utils/path-utils.js +2 -3
- package/dist/utils/process-utils.js +2 -3
- package/dist/utils/runtime-value.js +1 -2
- package/dist/utils/sql-parser.js +2 -3
- package/dist/utils/type-utils.js +8 -8
- package/dist/utils/utils.js +2 -3
- package/dist/utils/zod-error.js +2 -3
- package/dist/vector/chunking.js +1 -2
- package/dist/vector/config.js +1 -2
- package/dist/vector/embedding.js +4 -4
- package/package.json +63 -63
- package/src/ai/agents/agent.ts +1 -1
- package/src/api/__tests__/sonamu.plugins.test.ts +11 -1
- package/src/api/__tests__/sonamu.websocket.test.ts +6 -10
- package/src/api/config.ts +1 -1
- package/src/api/context.ts +2 -8
- package/src/api/sonamu.ts +26 -21
- package/src/auth/audit-log/plugin.ts +2 -0
- package/src/compress/types.ts +1 -1
- package/src/exceptions/error-handler.ts +3 -2
- package/src/template/implementations/model.template.ts +3 -3
- package/src/template/implementations/view_list.template.ts +12 -13
- package/src/ui/ai-api.ts +4 -2
- package/src/ui/ai-client.ts +2 -2
- package/src/ui/api.ts +58 -62
- package/dist/ui-web/assets/index-BMdIyKXS.css +0 -1
- package/dist/ui-web/assets/index-LpE8u19O.js +0 -178
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InMemoryWebSocketPresenceStore, init_ws_presence_store } from "../ws-presence-store.js";
|
|
2
2
|
import { EventEmitter } from "node:events";
|
|
3
|
-
|
|
3
|
+
// src/stream/__tests__/ws-test-helpers.ts
|
|
4
4
|
init_ws_presence_store();
|
|
5
5
|
async function flushAsync(rounds = 5) {
|
|
6
6
|
for (let index = 0; index < rounds; index += 1) await new Promise((resolve) => {
|
|
@@ -254,7 +254,6 @@ function collectUnhandledRejections() {
|
|
|
254
254
|
return collected;
|
|
255
255
|
};
|
|
256
256
|
}
|
|
257
|
-
//#endregion
|
|
258
257
|
export { FakeWebSocket, InProcessClusterBus, InProcessClusterNetwork, RecordingClusterBus, ScriptedPresenceStore, asWebSocket, collectUnhandledRejections, createDeferred, flushAsync, flushUntil, isSettled, parseFrames };
|
|
259
258
|
|
|
260
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGVzdC1oZWxwZXJzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdHJlYW0vX190ZXN0c19fL3dzLXRlc3QtaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwibm9kZTpldmVudHNcIjtcblxuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRUcmFuc3BvcnQgfSBmcm9tIFwiLi4vd3NcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0QXVkaWVuY2UgfSBmcm9tIFwiLi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgV2ViU29ja2V0Q2x1c3RlckJ1cyxcbiAgdHlwZSBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUsXG4gIHR5cGUgV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlSGFuZGxlcixcbn0gZnJvbSBcIi4uL3dzLWNsdXN0ZXItYnVzXCI7XG5pbXBvcnQgeyB0eXBlIFdlYlNvY2tldFJvb21JZCwgdHlwZSBXZWJTb2NrZXRVc2VySWQgfSBmcm9tIFwiLi4vd3MtY29yZVwiO1xuaW1wb3J0IHsgSW5NZW1vcnlXZWJTb2NrZXRQcmVzZW5jZVN0b3JlIH0gZnJvbSBcIi4uL3dzLXByZXNlbmNlLXN0b3JlXCI7XG5cbi8vIHNldEltbWVkaWF0ZSDri6jsnITroZwg7YGQ66W8IOu5hOybjCBmYW4tb3V0L291dGJvdW5kIGZsdXNoL2NsdXN0ZXIg7KCE64us7J20IOuBneuCmOq4sOulvCDquLDri6TrprDri6RcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmbHVzaEFzeW5jKHJvdW5kczogbnVtYmVyID0gNSk6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcm91bmRzOyBpbmRleCArPSAxKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHNldEltbWVkaWF0ZShyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyDsobDqsbTsnbQg66eM7KGx65CgIOuVjOq5jOyngCBzZXRJbW1lZGlhdGUg64uo7JyE66GcIOq4sOuLpOumsOuLpC4g64Gd64K0IOunjOyhse2VmOyngCDslYrsnLzrqbQg6re464yA66GcIOuwmO2ZmO2VtCBhc3NlcnRpb27sl5DshJwg7Iuk7Yyo7ZWY6rKMIO2VnOuLpFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZsdXNoVW50aWwocHJlZGljYXRlOiAoKSA9PiBib29sZWFuLCBtYXhSb3VuZHM6IG51bWJlciA9IDUwKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYXhSb3VuZHMgJiYgIXByZWRpY2F0ZSgpOyBpbmRleCArPSAxKSB7XG4gICAgYXdhaXQgZmx1c2hBc3luYygxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBEZWZlcnJlZDxUPiA9IHtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcbiAgcmVzb2x2ZTogKHZhbHVlOiBUKSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmZXJyZWQ8VCA9IHZvaWQ+KCk6IERlZmVycmVkPFQ+IHtcbiAgbGV0IHJlc29sdmUhOiAodmFsdWU6IFQpID0+IHZvaWQ7XG4gIGxldCByZWplY3QhOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKGlubmVyUmVzb2x2ZSwgaW5uZXJSZWplY3QpID0+IHtcbiAgICByZXNvbHZlID0gaW5uZXJSZXNvbHZlO1xuICAgIHJlamVjdCA9IGlubmVyUmVqZWN0O1xuICB9KTtcbiAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH07XG59XG5cbi8vIHByb21pc2XqsIAg7JWE7KeBIHNldHRsZeuQmOyngCDslYrslZjripTsp4Ag7ZmV7J247ZWc64ukXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNTZXR0bGVkPFQ+KHByb21pc2U6IFByb21pc2U8VD4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgbGV0IHNldHRsZWQgPSBmYWxzZTtcbiAgcHJvbWlzZS50aGVuKFxuICAgICgpID0+IHtcbiAgICAgIHNldHRsZWQgPSB0cnVlO1xuICAgIH0sXG4gICAgKCkgPT4ge1xuICAgICAgc2V0dGxlZCA9IHRydWU7XG4gICAgfSxcbiAgKTtcbiAgYXdhaXQgZmx1c2hBc3luYygyKTtcbiAgcmV0dXJuIHNldHRsZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBGYWtlV2ViU29ja2V0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgcmVhZHlTdGF0ZTogMCB8IDEgfCAyIHwgMyA9IDE7XG4gIGJ1ZmZlcmVkQW1vdW50ID0gMDtcbiAgc2VudE1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICBwaW5nQ291bnQgPSAwO1xuICBjbG9zZWRXaXRoOiB7IGNvZGU/OiBudW1iZXI7IHJlYXNvbj86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG5cbiAgc2VuZChkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbnRNZXNzYWdlcy5wdXNoKGRhdGEpO1xuICB9XG5cbiAgY2xvc2UoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWRXaXRoID0geyBjb2RlLCByZWFzb24gfTtcbiAgICB0aGlzLnJlYWR5U3RhdGUgPSAzO1xuICAgIHRoaXMuZW1pdChcImNsb3NlXCIsIGNvZGUgPz8gMTAwMCwgQnVmZmVyLmZyb20ocmVhc29uID8/IFwiXCIsIFwidXRmLThcIikpO1xuICB9XG5cbiAgcGluZygpOiB2b2lkIHtcbiAgICB0aGlzLnBpbmdDb3VudCArPSAxO1xuICB9XG5cbiAgdGVybWluYXRlKCk6IHZvaWQge1xuICAgIHRoaXMucmVhZHlTdGF0ZSA9IDM7XG4gICAgdGhpcy5lbWl0KFwiY2xvc2VcIiwgMTAwNiwgQnVmZmVyLmFsbG9jKDApKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNXZWJTb2NrZXQoc29ja2V0OiBGYWtlV2ViU29ja2V0KTogV2ViU29ja2V0VHJhbnNwb3J0IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgYnVmZmVyZWRBbW91bnQoKSB7XG4gICAgICByZXR1cm4gc29ja2V0LmJ1ZmZlcmVkQW1vdW50O1xuICAgIH0sXG4gICAgZ2V0IHJlYWR5U3RhdGUoKSB7XG4gICAgICByZXR1cm4gc29ja2V0LnJlYWR5U3RhdGU7XG4gICAgfSxcbiAgICBjbG9zZShjb2RlLCByZWFzb24pIHtcbiAgICAgIHNvY2tldC5jbG9zZShjb2RlLCByZWFzb24/LnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgb2ZmKC4uLmFyZ3MpIHtcbiAgICAgIHNvY2tldC5vZmYoLi4uYXJncyk7XG4gICAgfSxcbiAgICBvbiguLi5hcmdzKSB7XG4gICAgICBzb2NrZXQub24oLi4uYXJncyk7XG4gICAgfSxcbiAgICBwaW5nKCkge1xuICAgICAgc29ja2V0LnBpbmcoKTtcbiAgICB9LFxuICAgIHNlbmQoZGF0YSkge1xuICAgICAgc29ja2V0LnNlbmQoZGF0YS50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIHRlcm1pbmF0ZSgpIHtcbiAgICAgIHNvY2tldC50ZXJtaW5hdGUoKTtcbiAgICB9LFxuICB9O1xufVxuXG4vLyDthYzsiqTtirgg642w7J207YSwIOyngeugrO2ZlCDqsrDqs7zrpbwg65CY64+M66aw64ukLiDquajsp4QgSlNPTuydtOuptCDsm5DrrLjsnYQg7Y+s7ZWo7ZWcIOyXkOufrOuhnCDthYzsiqTtirjrpbwg7Iuk7Yyo7Iuc7YKo64ukXG5mdW5jdGlvbiBwYXJzZVRlc3RKc29uPFQ+KHJhdzogc3RyaW5nKTogVCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIC8qIFNBRkVUWTog7YWM7Iqk7Yq46rCAIOyngeygkSDsp4HroKztmZTtlojqsbDrgpggcnVudGltZeydtCDsp4HroKztmZTtlZwg6rCS66eMIOuEmOq4tOuLpC4gKi8gSlNPTi5wYXJzZShcbiAgICAgIHJhdyxcbiAgICApIGFzIFQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGDthYzsiqTtirggSlNPTiDtjIzsi7Eg7Iuk7YyoOiAke3Jhd31gLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcmFtZXMoc29ja2V0OiBGYWtlV2ViU29ja2V0KTogQXJyYXk8eyBldmVudDogc3RyaW5nOyBkYXRhOiBvYmplY3QgfT4ge1xuICByZXR1cm4gc29ja2V0LnNlbnRNZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+XG4gICAgcGFyc2VUZXN0SnNvbjx7IGV2ZW50OiBzdHJpbmc7IGRhdGE6IG9iamVjdCB9PihtZXNzYWdlKSxcbiAgKTtcbn1cblxudHlwZSBTY3JpcHRlZE1ldGhvZCA9XG4gIHwgXCJyZWdpc3RlclwiXG4gIHwgXCJhY3RpdmF0ZVwiXG4gIHwgXCJ1bnJlZ2lzdGVyXCJcbiAgfCBcInNldFVzZXJJZFwiXG4gIHwgXCJjbGVhclVzZXJJZFwiXG4gIHwgXCJqb2luXCJcbiAgfCBcImxlYXZlXCJcbiAgfCBcInJlc29sdmVSb3V0ZVwiXG4gIHwgXCJnZXRSb29tTWVtYmVyQ291bnRcIlxuICB8IFwic2h1dGRvd25cIjtcblxuLy8g64uk7J2MIO2YuOy2nCDsp4HsoITsl5Ag64G87JuM64Sj7J2EIOuPmeyekS4g64+Z6riwIHRocm93LCByZWplY3QsIOyngOyXsOuQnCBwcm9taXNl66W8IOq3uOuMgOuhnCDtnYnrgrTrgrjri6RcbnR5cGUgU2NyaXB0ZWRJbnRlcmNlcHRvciA9ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIEluTWVtb3J5V2ViU29ja2V0UHJlc2VuY2VTdG9yZeulvCDqsJDsi7gg7Zi47LacIOyInOyEnOulvCDquLDroZ3tlZjqs6AsIOuplOyEnOuTnOuzhOuhnCDri6TsnYwg7Zi47Lac7J2YIOuPmeyekeydhCDsiqTtgazrpr3tirjtlaAg7IiYIOyeiOuKlCBzdG9yZS5cbiAqIO2YuOy2nCDquLDroZ3snYAgc3RvcmXqsIAg7Zi47Lac7J2EIFwi67Cb7J2AXCIg7Iuc7KCQ7JeQIOuCqOq4tOuLpC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNjcmlwdGVkUHJlc2VuY2VTdG9yZSB7XG4gIHJlYWRvbmx5IGNhbGxzOiBzdHJpbmdbXSA9IFtdO1xuICByZWFkb25seSBpbm5lcjogSW5NZW1vcnlXZWJTb2NrZXRQcmVzZW5jZVN0b3JlO1xuICBub2RlSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJjZXB0b3JzID0gbmV3IE1hcDxTY3JpcHRlZE1ldGhvZCwgU2NyaXB0ZWRJbnRlcmNlcHRvcltdPigpO1xuXG4gIGNvbnN0cnVjdG9yKGlubmVyOiBJbk1lbW9yeVdlYlNvY2tldFByZXNlbmNlU3RvcmUgPSBuZXcgSW5NZW1vcnlXZWJTb2NrZXRQcmVzZW5jZVN0b3JlKCkpIHtcbiAgICB0aGlzLmlubmVyID0gaW5uZXI7XG4gIH1cblxuICBuZXh0KG1ldGhvZDogU2NyaXB0ZWRNZXRob2QsIGludGVyY2VwdG9yOiBTY3JpcHRlZEludGVyY2VwdG9yKTogdGhpcyB7XG4gICAgY29uc3QgcXVldWUgPSB0aGlzLmludGVyY2VwdG9ycy5nZXQobWV0aG9kKSA/PyBbXTtcbiAgICBxdWV1ZS5wdXNoKGludGVyY2VwdG9yKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5zZXQobWV0aG9kLCBxdWV1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyDsnbTtm4Qg66qo65OgIO2YuOy2nOyXkCDqsJnsnYAg64+Z7J6R7J2EIOyggeyaqe2VnOuLpFxuICBhbHdheXMobWV0aG9kOiBTY3JpcHRlZE1ldGhvZCwgaW50ZXJjZXB0b3I6IFNjcmlwdGVkSW50ZXJjZXB0b3IpOiB0aGlzIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMV8wMDA7IGluZGV4ICs9IDEpIHtcbiAgICAgIHRoaXMubmV4dChtZXRob2QsIGludGVyY2VwdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZWdpc3RlcihpbnB1dDoge1xuICAgIHNlc3Npb25JZDogc3RyaW5nO1xuICAgIG5vZGVJZDogc3RyaW5nO1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBjb25uZWN0ZWRBdDogRGF0ZTtcbiAgfSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNhbGxzLnB1c2goYHJlZ2lzdGVyOiR7aW5wdXQuc2Vzc2lvbklkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInJlZ2lzdGVyXCIsICgpID0+IHRoaXMuaW5uZXIucmVnaXN0ZXIoaW5wdXQpKTtcbiAgfVxuXG4gIGFjdGl2YXRlKHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChgYWN0aXZhdGU6JHtzZXNzaW9uSWR9YCk7XG4gICAgcmV0dXJuIHRoaXMucnVuKFwiYWN0aXZhdGVcIiwgKCkgPT4gdGhpcy5pbm5lci5hY3RpdmF0ZShzZXNzaW9uSWQpKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXIoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGB1bnJlZ2lzdGVyOiR7c2Vzc2lvbklkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInVucmVnaXN0ZXJcIiwgKCkgPT4gdGhpcy5pbm5lci51bnJlZ2lzdGVyKHNlc3Npb25JZCkpO1xuICB9XG5cbiAgc2V0VXNlcklkKHNlc3Npb25JZDogc3RyaW5nLCB1c2VySWQ6IFdlYlNvY2tldFVzZXJJZCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNhbGxzLnB1c2goYHNldFVzZXJJZDoke3Nlc3Npb25JZH06JHtKU09OLnN0cmluZ2lmeSh1c2VySWQpfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInNldFVzZXJJZFwiLCAoKSA9PiB0aGlzLmlubmVyLnNldFVzZXJJZChzZXNzaW9uSWQsIHVzZXJJZCkpO1xuICB9XG5cbiAgY2xlYXJVc2VySWQoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGBjbGVhclVzZXJJZDoke3Nlc3Npb25JZH1gKTtcbiAgICByZXR1cm4gdGhpcy5ydW4oXCJjbGVhclVzZXJJZFwiLCAoKSA9PiB0aGlzLmlubmVyLmNsZWFyVXNlcklkKHNlc3Npb25JZCkpO1xuICB9XG5cbiAgam9pbihzZXNzaW9uSWQ6IHN0cmluZywgcm9vbUlkOiBXZWJTb2NrZXRSb29tSWQpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGBqb2luOiR7c2Vzc2lvbklkfToke3Jvb21JZH1gKTtcbiAgICByZXR1cm4gdGhpcy5ydW4oXCJqb2luXCIsICgpID0+IHRoaXMuaW5uZXIuam9pbihzZXNzaW9uSWQsIHJvb21JZCkpO1xuICB9XG5cbiAgbGVhdmUoc2Vzc2lvbklkOiBzdHJpbmcsIHJvb21JZDogV2ViU29ja2V0Um9vbUlkKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChgbGVhdmU6JHtzZXNzaW9uSWR9OiR7cm9vbUlkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcImxlYXZlXCIsICgpID0+IHRoaXMuaW5uZXIubGVhdmUoc2Vzc2lvbklkLCByb29tSWQpKTtcbiAgfVxuXG4gIHJlc29sdmVSb3V0ZShcbiAgICBhdWRpZW5jZTogV2ViU29ja2V0QXVkaWVuY2UsXG4gICAgbm9kZUlkOiBzdHJpbmcsXG4gICk6XG4gICAgfCB7IGxvY2FsU2Vzc2lvbklkczogc3RyaW5nW107IHJlbW90ZU5vZGVJZHM6IHN0cmluZ1tdIH1cbiAgICB8IFByb21pc2U8eyBsb2NhbFNlc3Npb25JZHM6IHN0cmluZ1tdOyByZW1vdGVOb2RlSWRzOiBzdHJpbmdbXSB9PiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGByZXNvbHZlUm91dGU6JHtub2RlSWR9OiR7YXVkaWVuY2UudHlwZX1gKTtcbiAgICByZXR1cm4gdGhpcy5ydW4oXCJyZXNvbHZlUm91dGVcIiwgKCkgPT4gdGhpcy5pbm5lci5yZXNvbHZlUm91dGUoYXVkaWVuY2UsIG5vZGVJZCkpO1xuICB9XG5cbiAgZ2V0Um9vbU1lbWJlckNvdW50KHJvb21JZDogV2ViU29ja2V0Um9vbUlkLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiBudW1iZXIgfCBQcm9taXNlPG51bWJlcj4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChgZ2V0Um9vbU1lbWJlckNvdW50OiR7cm9vbUlkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcImdldFJvb21NZW1iZXJDb3VudFwiLCAoKSA9PiB0aGlzLmlubmVyLmdldFJvb21NZW1iZXJDb3VudChyb29tSWQsIG5hbWVzcGFjZSkpO1xuICB9XG5cbiAgc2h1dGRvd24oKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChcInNodXRkb3duXCIpO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInNodXRkb3duXCIsICgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBjYWxsc09mKHByZWZpeDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNhbGxzLmZpbHRlcigoY2FsbCkgPT4gY2FsbC5zdGFydHNXaXRoKHByZWZpeCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBydW48VD4obWV0aG9kOiBTY3JpcHRlZE1ldGhvZCwgZGVsZWdhdGU6ICgpID0+IFQgfCBQcm9taXNlPFQ+KTogVCB8IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGludGVyY2VwdG9yID0gdGhpcy5pbnRlcmNlcHRvcnMuZ2V0KG1ldGhvZCk/LnNoaWZ0KCk7XG4gICAgaWYgKCFpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGRlbGVnYXRlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gaW50ZXJjZXB0b3IoKTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKCgpID0+IGRlbGVnYXRlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gZGVsZWdhdGUoKTtcbiAgfVxufVxuXG4vKipcbiAqIO2VnCDtlITroZzshLjsiqQg7JWI7JeQ7IScIHRhcmdldE5vZGVJZHMg6riw7KSA7Jy866GcIGVudmVsb3Bl7J2EIOudvOyasO2Mhe2VmOuKlCBmYWtlIGNsdXN0ZXIg64Sk7Yq47JuM7YGsLlxuICog7KCE7IahIOq1rOqwhOydhCDtnYnrgrTrgrTquLAg7JyE7ZW0IGVudmVsb3Bl7J2EIEpTT04g7KeB66Cs7ZmUL+yXreyngeugrO2ZlO2VnCDrkqQg64uk7J2MIHRpY2vsl5Ag7KCE64us7ZWc64ukLlxuICovXG5leHBvcnQgY2xhc3MgSW5Qcm9jZXNzQ2x1c3Rlck5ldHdvcmsge1xuICByZWFkb25seSBwdWJsaXNoZWQ6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgU2V0PFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZUhhbmRsZXI+PigpO1xuXG4gIGJ1cyhub2RlSWQ6IHN0cmluZyk6IEluUHJvY2Vzc0NsdXN0ZXJCdXMge1xuICAgIHJldHVybiBuZXcgSW5Qcm9jZXNzQ2x1c3RlckJ1cyhub2RlSWQsIHRoaXMpO1xuICB9XG5cbiAgc3Vic2NyaWJlKG5vZGVJZDogc3RyaW5nLCBoYW5kbGVyOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVIYW5kbGVyKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzLmdldChub2RlSWQpID8/IG5ldyBTZXQoKTtcbiAgICBoYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgdGhpcy5oYW5kbGVycy5zZXQobm9kZUlkLCBoYW5kbGVycyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICB9O1xuICB9XG5cbiAgZGVsaXZlcihlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB7XG4gICAgY29uc3Qgd2lyZSA9IEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKTtcbiAgICB0aGlzLnB1Ymxpc2hlZC5wdXNoKHBhcnNlVGVzdEpzb248V2ViU29ja2V0Q2x1c3RlckVudmVsb3BlPih3aXJlKSk7XG4gICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0Tm9kZUlkIG9mIGVudmVsb3BlLnRhcmdldE5vZGVJZHMgPz8gW10pIHtcbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMuZ2V0KHRhcmdldE5vZGVJZCkgPz8gW10pIHtcbiAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IHBhcnNlVGVzdEpzb248V2ViU29ja2V0Q2x1c3RlckVudmVsb3BlPih3aXJlKTtcbiAgICAgICAgICB2b2lkIFByb21pc2UucmVzb2x2ZShoYW5kbGVyKHJlY2VpdmVkKSkuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluUHJvY2Vzc0NsdXN0ZXJCdXMgaW1wbGVtZW50cyBXZWJTb2NrZXRDbHVzdGVyQnVzIHtcbiAgc2h1dGRvd25DYWxscyA9IDA7XG4gIHVuc3Vic2NyaWJlQ2FsbHMgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IG5vZGVJZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmV0d29yazogSW5Qcm9jZXNzQ2x1c3Rlck5ldHdvcmssXG4gICkge31cblxuICBwdWJsaXNoKGVudmVsb3BlOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUpOiB2b2lkIHtcbiAgICB0aGlzLm5ldHdvcmsuZGVsaXZlcihlbnZlbG9wZSk7XG4gIH1cblxuICAvLyDsi6TsoJwgYWRhcHRlcuyymOufvCDqtazrj4Ug7JmE66OM66W8IHByb21pc2XroZwg7JWM66aw64ukXG4gIGFzeW5jIHN1YnNjcmliZShoYW5kbGVyOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVIYW5kbGVyKTogUHJvbWlzZTwoKSA9PiB2b2lkPiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSB0aGlzLm5ldHdvcmsuc3Vic2NyaWJlKHRoaXMubm9kZUlkLCBoYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy51bnN1YnNjcmliZUNhbGxzICs9IDE7XG4gICAgICB1bnN1YnNjcmliZSgpO1xuICAgIH07XG4gIH1cblxuICBzaHV0ZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnNodXRkb3duQ2FsbHMgKz0gMTtcbiAgfVxufVxuXG4vLyDrsJztlonrkJwgZW52ZWxvcGXsnYQg6riw66Gd7ZWY6rOgIO2FjOyKpO2KuOqwgCDsp4HsoJEg7IiY7IugIGVudmVsb3Bl7J2EIOyjvOyehe2VoCDsiJgg7J6I64qUIGJ1c1xuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0NsdXN0ZXJCdXMgaW1wbGVtZW50cyBXZWJTb2NrZXRDbHVzdGVyQnVzIHtcbiAgcmVhZG9ubHkgcHVibGlzaGVkOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVbXSA9IFtdO1xuICByZWFkb25seSBoYW5kbGVycyA9IG5ldyBTZXQ8V2ViU29ja2V0Q2x1c3RlckVudmVsb3BlSGFuZGxlcj4oKTtcbiAgc2h1dGRvd25DYWxscyA9IDA7XG4gIHVuc3Vic2NyaWJlQ2FsbHMgPSAwO1xuICBub2RlSWQ/OiBzdHJpbmc7XG5cbiAgcHVibGlzaChlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHVibGlzaGVkLnB1c2goZW52ZWxvcGUpO1xuICB9XG5cbiAgc3Vic2NyaWJlKGhhbmRsZXI6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZUhhbmRsZXIpOiAoKCkgPT4gdm9pZCkgfCBQcm9taXNlPCgpID0+IHZvaWQ+IHtcbiAgICB0aGlzLmhhbmRsZXJzLmFkZChoYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy51bnN1YnNjcmliZUNhbGxzICs9IDE7XG4gICAgICB0aGlzLmhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZW1pdChlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgIGF3YWl0IGhhbmRsZXIoZW52ZWxvcGUpO1xuICAgIH1cbiAgfVxuXG4gIHNodXRkb3duKCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNodXRkb3duQ2FsbHMgKz0gMTtcbiAgfVxufVxuXG4vLyDsoITsl60gdW5oYW5kbGVkUmVqZWN0aW9u7J2EIOyImOynke2VnOuLpC4g67CY7ZmY7ZWcIO2VqOyImOuhnCDtlbTsoJztlZjqs6Ag7IiY7KeRIOqysOqzvOulvCDrsJvripTri6RcbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0VW5oYW5kbGVkUmVqZWN0aW9ucygpOiAoKSA9PiBFcnJvcltdIHtcbiAgY29uc3QgY29sbGVjdGVkOiBFcnJvcltdID0gW107XG4gIGNvbnN0IGxpc3RlbmVyID0gKHJlYXNvbjogRXJyb3IpID0+IHtcbiAgICBjb2xsZWN0ZWQucHVzaChyZWFzb24pO1xuICB9O1xuICBwcm9jZXNzLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIGxpc3RlbmVyKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBwcm9jZXNzLm9mZihcInVuaGFuZGxlZFJlamVjdGlvblwiLCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIGNvbGxlY3RlZDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O3VCQVVxRTtBQUdyRSxlQUFzQixXQUFXLFNBQWlCLEdBQWtCO0NBQ2xFLEtBQUssSUFBSSxRQUFRLEdBQUcs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
|
|
259
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtdGVzdC1oZWxwZXJzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdHJlYW0vX190ZXN0c19fL3dzLXRlc3QtaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tIFwibm9kZTpldmVudHNcIjtcblxuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRUcmFuc3BvcnQgfSBmcm9tIFwiLi4vd3NcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0QXVkaWVuY2UgfSBmcm9tIFwiLi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgV2ViU29ja2V0Q2x1c3RlckJ1cyxcbiAgdHlwZSBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUsXG4gIHR5cGUgV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlSGFuZGxlcixcbn0gZnJvbSBcIi4uL3dzLWNsdXN0ZXItYnVzXCI7XG5pbXBvcnQgeyB0eXBlIFdlYlNvY2tldFJvb21JZCwgdHlwZSBXZWJTb2NrZXRVc2VySWQgfSBmcm9tIFwiLi4vd3MtY29yZVwiO1xuaW1wb3J0IHsgSW5NZW1vcnlXZWJTb2NrZXRQcmVzZW5jZVN0b3JlIH0gZnJvbSBcIi4uL3dzLXByZXNlbmNlLXN0b3JlXCI7XG5cbi8vIHNldEltbWVkaWF0ZSDri6jsnITroZwg7YGQ66W8IOu5hOybjCBmYW4tb3V0L291dGJvdW5kIGZsdXNoL2NsdXN0ZXIg7KCE64us7J20IOuBneuCmOq4sOulvCDquLDri6TrprDri6RcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmbHVzaEFzeW5jKHJvdW5kczogbnVtYmVyID0gNSk6IFByb21pc2U8dm9pZD4ge1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcm91bmRzOyBpbmRleCArPSAxKSB7XG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHNldEltbWVkaWF0ZShyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vLyDsobDqsbTsnbQg66eM7KGx65CgIOuVjOq5jOyngCBzZXRJbW1lZGlhdGUg64uo7JyE66GcIOq4sOuLpOumsOuLpC4g64Gd64K0IOunjOyhse2VmOyngCDslYrsnLzrqbQg6re464yA66GcIOuwmO2ZmO2VtCBhc3NlcnRpb27sl5DshJwg7Iuk7Yyo7ZWY6rKMIO2VnOuLpFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZsdXNoVW50aWwocHJlZGljYXRlOiAoKSA9PiBib29sZWFuLCBtYXhSb3VuZHM6IG51bWJlciA9IDUwKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYXhSb3VuZHMgJiYgIXByZWRpY2F0ZSgpOyBpbmRleCArPSAxKSB7XG4gICAgYXdhaXQgZmx1c2hBc3luYygxKTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBEZWZlcnJlZDxUPiA9IHtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcbiAgcmVzb2x2ZTogKHZhbHVlOiBUKSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVmZXJyZWQ8VCA9IHZvaWQ+KCk6IERlZmVycmVkPFQ+IHtcbiAgbGV0IHJlc29sdmUhOiAodmFsdWU6IFQpID0+IHZvaWQ7XG4gIGxldCByZWplY3QhOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8VD4oKGlubmVyUmVzb2x2ZSwgaW5uZXJSZWplY3QpID0+IHtcbiAgICByZXNvbHZlID0gaW5uZXJSZXNvbHZlO1xuICAgIHJlamVjdCA9IGlubmVyUmVqZWN0O1xuICB9KTtcbiAgcmV0dXJuIHsgcHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0IH07XG59XG5cbi8vIHByb21pc2XqsIAg7JWE7KeBIHNldHRsZeuQmOyngCDslYrslZjripTsp4Ag7ZmV7J247ZWc64ukXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNTZXR0bGVkPFQ+KHByb21pc2U6IFByb21pc2U8VD4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgbGV0IHNldHRsZWQgPSBmYWxzZTtcbiAgcHJvbWlzZS50aGVuKFxuICAgICgpID0+IHtcbiAgICAgIHNldHRsZWQgPSB0cnVlO1xuICAgIH0sXG4gICAgKCkgPT4ge1xuICAgICAgc2V0dGxlZCA9IHRydWU7XG4gICAgfSxcbiAgKTtcbiAgYXdhaXQgZmx1c2hBc3luYygyKTtcbiAgcmV0dXJuIHNldHRsZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBGYWtlV2ViU29ja2V0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgcmVhZHlTdGF0ZTogMCB8IDEgfCAyIHwgMyA9IDE7XG4gIGJ1ZmZlcmVkQW1vdW50ID0gMDtcbiAgc2VudE1lc3NhZ2VzOiBzdHJpbmdbXSA9IFtdO1xuICBwaW5nQ291bnQgPSAwO1xuICBjbG9zZWRXaXRoOiB7IGNvZGU/OiBudW1iZXI7IHJlYXNvbj86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG5cbiAgc2VuZChkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNlbnRNZXNzYWdlcy5wdXNoKGRhdGEpO1xuICB9XG5cbiAgY2xvc2UoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWRXaXRoID0geyBjb2RlLCByZWFzb24gfTtcbiAgICB0aGlzLnJlYWR5U3RhdGUgPSAzO1xuICAgIHRoaXMuZW1pdChcImNsb3NlXCIsIGNvZGUgPz8gMTAwMCwgQnVmZmVyLmZyb20ocmVhc29uID8/IFwiXCIsIFwidXRmLThcIikpO1xuICB9XG5cbiAgcGluZygpOiB2b2lkIHtcbiAgICB0aGlzLnBpbmdDb3VudCArPSAxO1xuICB9XG5cbiAgdGVybWluYXRlKCk6IHZvaWQge1xuICAgIHRoaXMucmVhZHlTdGF0ZSA9IDM7XG4gICAgdGhpcy5lbWl0KFwiY2xvc2VcIiwgMTAwNiwgQnVmZmVyLmFsbG9jKDApKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNXZWJTb2NrZXQoc29ja2V0OiBGYWtlV2ViU29ja2V0KTogV2ViU29ja2V0VHJhbnNwb3J0IHtcbiAgcmV0dXJuIHtcbiAgICBnZXQgYnVmZmVyZWRBbW91bnQoKSB7XG4gICAgICByZXR1cm4gc29ja2V0LmJ1ZmZlcmVkQW1vdW50O1xuICAgIH0sXG4gICAgZ2V0IHJlYWR5U3RhdGUoKSB7XG4gICAgICByZXR1cm4gc29ja2V0LnJlYWR5U3RhdGU7XG4gICAgfSxcbiAgICBjbG9zZShjb2RlLCByZWFzb24pIHtcbiAgICAgIHNvY2tldC5jbG9zZShjb2RlLCByZWFzb24/LnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgb2ZmKC4uLmFyZ3MpIHtcbiAgICAgIHNvY2tldC5vZmYoLi4uYXJncyk7XG4gICAgfSxcbiAgICBvbiguLi5hcmdzKSB7XG4gICAgICBzb2NrZXQub24oLi4uYXJncyk7XG4gICAgfSxcbiAgICBwaW5nKCkge1xuICAgICAgc29ja2V0LnBpbmcoKTtcbiAgICB9LFxuICAgIHNlbmQoZGF0YSkge1xuICAgICAgc29ja2V0LnNlbmQoZGF0YS50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIHRlcm1pbmF0ZSgpIHtcbiAgICAgIHNvY2tldC50ZXJtaW5hdGUoKTtcbiAgICB9LFxuICB9O1xufVxuXG4vLyDthYzsiqTtirgg642w7J207YSwIOyngeugrO2ZlCDqsrDqs7zrpbwg65CY64+M66aw64ukLiDquajsp4QgSlNPTuydtOuptCDsm5DrrLjsnYQg7Y+s7ZWo7ZWcIOyXkOufrOuhnCDthYzsiqTtirjrpbwg7Iuk7Yyo7Iuc7YKo64ukXG5mdW5jdGlvbiBwYXJzZVRlc3RKc29uPFQ+KHJhdzogc3RyaW5nKTogVCB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIC8qIFNBRkVUWTog7YWM7Iqk7Yq46rCAIOyngeygkSDsp4HroKztmZTtlojqsbDrgpggcnVudGltZeydtCDsp4HroKztmZTtlZwg6rCS66eMIOuEmOq4tOuLpC4gKi8gSlNPTi5wYXJzZShcbiAgICAgIHJhdyxcbiAgICApIGFzIFQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGDthYzsiqTtirggSlNPTiDtjIzsi7Eg7Iuk7YyoOiAke3Jhd31gLCB7IGNhdXNlOiBlcnJvciB9KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcmFtZXMoc29ja2V0OiBGYWtlV2ViU29ja2V0KTogQXJyYXk8eyBldmVudDogc3RyaW5nOyBkYXRhOiBvYmplY3QgfT4ge1xuICByZXR1cm4gc29ja2V0LnNlbnRNZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+XG4gICAgcGFyc2VUZXN0SnNvbjx7IGV2ZW50OiBzdHJpbmc7IGRhdGE6IG9iamVjdCB9PihtZXNzYWdlKSxcbiAgKTtcbn1cblxudHlwZSBTY3JpcHRlZE1ldGhvZCA9XG4gIHwgXCJyZWdpc3RlclwiXG4gIHwgXCJhY3RpdmF0ZVwiXG4gIHwgXCJ1bnJlZ2lzdGVyXCJcbiAgfCBcInNldFVzZXJJZFwiXG4gIHwgXCJjbGVhclVzZXJJZFwiXG4gIHwgXCJqb2luXCJcbiAgfCBcImxlYXZlXCJcbiAgfCBcInJlc29sdmVSb3V0ZVwiXG4gIHwgXCJnZXRSb29tTWVtYmVyQ291bnRcIlxuICB8IFwic2h1dGRvd25cIjtcblxuLy8g64uk7J2MIO2YuOy2nCDsp4HsoITsl5Ag64G87JuM64Sj7J2EIOuPmeyekS4g64+Z6riwIHRocm93LCByZWplY3QsIOyngOyXsOuQnCBwcm9taXNl66W8IOq3uOuMgOuhnCDtnYnrgrTrgrjri6RcbnR5cGUgU2NyaXB0ZWRJbnRlcmNlcHRvciA9ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIEluTWVtb3J5V2ViU29ja2V0UHJlc2VuY2VTdG9yZeulvCDqsJDsi7gg7Zi47LacIOyInOyEnOulvCDquLDroZ3tlZjqs6AsIOuplOyEnOuTnOuzhOuhnCDri6TsnYwg7Zi47Lac7J2YIOuPmeyekeydhCDsiqTtgazrpr3tirjtlaAg7IiYIOyeiOuKlCBzdG9yZS5cbiAqIO2YuOy2nCDquLDroZ3snYAgc3RvcmXqsIAg7Zi47Lac7J2EIFwi67Cb7J2AXCIg7Iuc7KCQ7JeQIOuCqOq4tOuLpC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNjcmlwdGVkUHJlc2VuY2VTdG9yZSB7XG4gIHJlYWRvbmx5IGNhbGxzOiBzdHJpbmdbXSA9IFtdO1xuICByZWFkb25seSBpbm5lcjogSW5NZW1vcnlXZWJTb2NrZXRQcmVzZW5jZVN0b3JlO1xuICBub2RlSWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW50ZXJjZXB0b3JzID0gbmV3IE1hcDxTY3JpcHRlZE1ldGhvZCwgU2NyaXB0ZWRJbnRlcmNlcHRvcltdPigpO1xuXG4gIGNvbnN0cnVjdG9yKGlubmVyOiBJbk1lbW9yeVdlYlNvY2tldFByZXNlbmNlU3RvcmUgPSBuZXcgSW5NZW1vcnlXZWJTb2NrZXRQcmVzZW5jZVN0b3JlKCkpIHtcbiAgICB0aGlzLmlubmVyID0gaW5uZXI7XG4gIH1cblxuICBuZXh0KG1ldGhvZDogU2NyaXB0ZWRNZXRob2QsIGludGVyY2VwdG9yOiBTY3JpcHRlZEludGVyY2VwdG9yKTogdGhpcyB7XG4gICAgY29uc3QgcXVldWUgPSB0aGlzLmludGVyY2VwdG9ycy5nZXQobWV0aG9kKSA/PyBbXTtcbiAgICBxdWV1ZS5wdXNoKGludGVyY2VwdG9yKTtcbiAgICB0aGlzLmludGVyY2VwdG9ycy5zZXQobWV0aG9kLCBxdWV1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyDsnbTtm4Qg66qo65OgIO2YuOy2nOyXkCDqsJnsnYAg64+Z7J6R7J2EIOyggeyaqe2VnOuLpFxuICBhbHdheXMobWV0aG9kOiBTY3JpcHRlZE1ldGhvZCwgaW50ZXJjZXB0b3I6IFNjcmlwdGVkSW50ZXJjZXB0b3IpOiB0aGlzIHtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMV8wMDA7IGluZGV4ICs9IDEpIHtcbiAgICAgIHRoaXMubmV4dChtZXRob2QsIGludGVyY2VwdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZWdpc3RlcihpbnB1dDoge1xuICAgIHNlc3Npb25JZDogc3RyaW5nO1xuICAgIG5vZGVJZDogc3RyaW5nO1xuICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgIGFjdGl2ZTogYm9vbGVhbjtcbiAgICBjb25uZWN0ZWRBdDogRGF0ZTtcbiAgfSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNhbGxzLnB1c2goYHJlZ2lzdGVyOiR7aW5wdXQuc2Vzc2lvbklkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInJlZ2lzdGVyXCIsICgpID0+IHRoaXMuaW5uZXIucmVnaXN0ZXIoaW5wdXQpKTtcbiAgfVxuXG4gIGFjdGl2YXRlKHNlc3Npb25JZDogc3RyaW5nKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChgYWN0aXZhdGU6JHtzZXNzaW9uSWR9YCk7XG4gICAgcmV0dXJuIHRoaXMucnVuKFwiYWN0aXZhdGVcIiwgKCkgPT4gdGhpcy5pbm5lci5hY3RpdmF0ZShzZXNzaW9uSWQpKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXIoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGB1bnJlZ2lzdGVyOiR7c2Vzc2lvbklkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInVucmVnaXN0ZXJcIiwgKCkgPT4gdGhpcy5pbm5lci51bnJlZ2lzdGVyKHNlc3Npb25JZCkpO1xuICB9XG5cbiAgc2V0VXNlcklkKHNlc3Npb25JZDogc3RyaW5nLCB1c2VySWQ6IFdlYlNvY2tldFVzZXJJZCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNhbGxzLnB1c2goYHNldFVzZXJJZDoke3Nlc3Npb25JZH06JHtKU09OLnN0cmluZ2lmeSh1c2VySWQpfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInNldFVzZXJJZFwiLCAoKSA9PiB0aGlzLmlubmVyLnNldFVzZXJJZChzZXNzaW9uSWQsIHVzZXJJZCkpO1xuICB9XG5cbiAgY2xlYXJVc2VySWQoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGBjbGVhclVzZXJJZDoke3Nlc3Npb25JZH1gKTtcbiAgICByZXR1cm4gdGhpcy5ydW4oXCJjbGVhclVzZXJJZFwiLCAoKSA9PiB0aGlzLmlubmVyLmNsZWFyVXNlcklkKHNlc3Npb25JZCkpO1xuICB9XG5cbiAgam9pbihzZXNzaW9uSWQ6IHN0cmluZywgcm9vbUlkOiBXZWJTb2NrZXRSb29tSWQpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGBqb2luOiR7c2Vzc2lvbklkfToke3Jvb21JZH1gKTtcbiAgICByZXR1cm4gdGhpcy5ydW4oXCJqb2luXCIsICgpID0+IHRoaXMuaW5uZXIuam9pbihzZXNzaW9uSWQsIHJvb21JZCkpO1xuICB9XG5cbiAgbGVhdmUoc2Vzc2lvbklkOiBzdHJpbmcsIHJvb21JZDogV2ViU29ja2V0Um9vbUlkKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChgbGVhdmU6JHtzZXNzaW9uSWR9OiR7cm9vbUlkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcImxlYXZlXCIsICgpID0+IHRoaXMuaW5uZXIubGVhdmUoc2Vzc2lvbklkLCByb29tSWQpKTtcbiAgfVxuXG4gIHJlc29sdmVSb3V0ZShcbiAgICBhdWRpZW5jZTogV2ViU29ja2V0QXVkaWVuY2UsXG4gICAgbm9kZUlkOiBzdHJpbmcsXG4gICk6XG4gICAgfCB7IGxvY2FsU2Vzc2lvbklkczogc3RyaW5nW107IHJlbW90ZU5vZGVJZHM6IHN0cmluZ1tdIH1cbiAgICB8IFByb21pc2U8eyBsb2NhbFNlc3Npb25JZHM6IHN0cmluZ1tdOyByZW1vdGVOb2RlSWRzOiBzdHJpbmdbXSB9PiB7XG4gICAgdGhpcy5jYWxscy5wdXNoKGByZXNvbHZlUm91dGU6JHtub2RlSWR9OiR7YXVkaWVuY2UudHlwZX1gKTtcbiAgICByZXR1cm4gdGhpcy5ydW4oXCJyZXNvbHZlUm91dGVcIiwgKCkgPT4gdGhpcy5pbm5lci5yZXNvbHZlUm91dGUoYXVkaWVuY2UsIG5vZGVJZCkpO1xuICB9XG5cbiAgZ2V0Um9vbU1lbWJlckNvdW50KHJvb21JZDogV2ViU29ja2V0Um9vbUlkLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiBudW1iZXIgfCBQcm9taXNlPG51bWJlcj4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChgZ2V0Um9vbU1lbWJlckNvdW50OiR7cm9vbUlkfWApO1xuICAgIHJldHVybiB0aGlzLnJ1bihcImdldFJvb21NZW1iZXJDb3VudFwiLCAoKSA9PiB0aGlzLmlubmVyLmdldFJvb21NZW1iZXJDb3VudChyb29tSWQsIG5hbWVzcGFjZSkpO1xuICB9XG5cbiAgc2h1dGRvd24oKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY2FsbHMucHVzaChcInNodXRkb3duXCIpO1xuICAgIHJldHVybiB0aGlzLnJ1bihcInNodXRkb3duXCIsICgpID0+IHVuZGVmaW5lZCk7XG4gIH1cblxuICBjYWxsc09mKHByZWZpeDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNhbGxzLmZpbHRlcigoY2FsbCkgPT4gY2FsbC5zdGFydHNXaXRoKHByZWZpeCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBydW48VD4obWV0aG9kOiBTY3JpcHRlZE1ldGhvZCwgZGVsZWdhdGU6ICgpID0+IFQgfCBQcm9taXNlPFQ+KTogVCB8IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGludGVyY2VwdG9yID0gdGhpcy5pbnRlcmNlcHRvcnMuZ2V0KG1ldGhvZCk/LnNoaWZ0KCk7XG4gICAgaWYgKCFpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGRlbGVnYXRlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gaW50ZXJjZXB0b3IoKTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKCgpID0+IGRlbGVnYXRlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gZGVsZWdhdGUoKTtcbiAgfVxufVxuXG4vKipcbiAqIO2VnCDtlITroZzshLjsiqQg7JWI7JeQ7IScIHRhcmdldE5vZGVJZHMg6riw7KSA7Jy866GcIGVudmVsb3Bl7J2EIOudvOyasO2Mhe2VmOuKlCBmYWtlIGNsdXN0ZXIg64Sk7Yq47JuM7YGsLlxuICog7KCE7IahIOq1rOqwhOydhCDtnYnrgrTrgrTquLAg7JyE7ZW0IGVudmVsb3Bl7J2EIEpTT04g7KeB66Cs7ZmUL+yXreyngeugrO2ZlO2VnCDrkqQg64uk7J2MIHRpY2vsl5Ag7KCE64us7ZWc64ukLlxuICovXG5leHBvcnQgY2xhc3MgSW5Qcm9jZXNzQ2x1c3Rlck5ldHdvcmsge1xuICByZWFkb25seSBwdWJsaXNoZWQ6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgU2V0PFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZUhhbmRsZXI+PigpO1xuXG4gIGJ1cyhub2RlSWQ6IHN0cmluZyk6IEluUHJvY2Vzc0NsdXN0ZXJCdXMge1xuICAgIHJldHVybiBuZXcgSW5Qcm9jZXNzQ2x1c3RlckJ1cyhub2RlSWQsIHRoaXMpO1xuICB9XG5cbiAgc3Vic2NyaWJlKG5vZGVJZDogc3RyaW5nLCBoYW5kbGVyOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVIYW5kbGVyKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzLmdldChub2RlSWQpID8/IG5ldyBTZXQoKTtcbiAgICBoYW5kbGVycy5hZGQoaGFuZGxlcik7XG4gICAgdGhpcy5oYW5kbGVycy5zZXQobm9kZUlkLCBoYW5kbGVycyk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICB9O1xuICB9XG5cbiAgZGVsaXZlcihlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB7XG4gICAgY29uc3Qgd2lyZSA9IEpTT04uc3RyaW5naWZ5KGVudmVsb3BlKTtcbiAgICB0aGlzLnB1Ymxpc2hlZC5wdXNoKHBhcnNlVGVzdEpzb248V2ViU29ja2V0Q2x1c3RlckVudmVsb3BlPih3aXJlKSk7XG4gICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgdGFyZ2V0Tm9kZUlkIG9mIGVudmVsb3BlLnRhcmdldE5vZGVJZHMgPz8gW10pIHtcbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMuZ2V0KHRhcmdldE5vZGVJZCkgPz8gW10pIHtcbiAgICAgICAgICBjb25zdCByZWNlaXZlZCA9IHBhcnNlVGVzdEpzb248V2ViU29ja2V0Q2x1c3RlckVudmVsb3BlPih3aXJlKTtcbiAgICAgICAgICB2b2lkIFByb21pc2UucmVzb2x2ZShoYW5kbGVyKHJlY2VpdmVkKSkuY2F0Y2goKCkgPT4ge30pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluUHJvY2Vzc0NsdXN0ZXJCdXMgaW1wbGVtZW50cyBXZWJTb2NrZXRDbHVzdGVyQnVzIHtcbiAgc2h1dGRvd25DYWxscyA9IDA7XG4gIHVuc3Vic2NyaWJlQ2FsbHMgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IG5vZGVJZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmV0d29yazogSW5Qcm9jZXNzQ2x1c3Rlck5ldHdvcmssXG4gICkge31cblxuICBwdWJsaXNoKGVudmVsb3BlOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUpOiB2b2lkIHtcbiAgICB0aGlzLm5ldHdvcmsuZGVsaXZlcihlbnZlbG9wZSk7XG4gIH1cblxuICAvLyDsi6TsoJwgYWRhcHRlcuyymOufvCDqtazrj4Ug7JmE66OM66W8IHByb21pc2XroZwg7JWM66aw64ukXG4gIGFzeW5jIHN1YnNjcmliZShoYW5kbGVyOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVIYW5kbGVyKTogUHJvbWlzZTwoKSA9PiB2b2lkPiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSB0aGlzLm5ldHdvcmsuc3Vic2NyaWJlKHRoaXMubm9kZUlkLCBoYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy51bnN1YnNjcmliZUNhbGxzICs9IDE7XG4gICAgICB1bnN1YnNjcmliZSgpO1xuICAgIH07XG4gIH1cblxuICBzaHV0ZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnNodXRkb3duQ2FsbHMgKz0gMTtcbiAgfVxufVxuXG4vLyDrsJztlonrkJwgZW52ZWxvcGXsnYQg6riw66Gd7ZWY6rOgIO2FjOyKpO2KuOqwgCDsp4HsoJEg7IiY7IugIGVudmVsb3Bl7J2EIOyjvOyehe2VoCDsiJgg7J6I64qUIGJ1c1xuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0NsdXN0ZXJCdXMgaW1wbGVtZW50cyBXZWJTb2NrZXRDbHVzdGVyQnVzIHtcbiAgcmVhZG9ubHkgcHVibGlzaGVkOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVbXSA9IFtdO1xuICByZWFkb25seSBoYW5kbGVycyA9IG5ldyBTZXQ8V2ViU29ja2V0Q2x1c3RlckVudmVsb3BlSGFuZGxlcj4oKTtcbiAgc2h1dGRvd25DYWxscyA9IDA7XG4gIHVuc3Vic2NyaWJlQ2FsbHMgPSAwO1xuICBub2RlSWQ/OiBzdHJpbmc7XG5cbiAgcHVibGlzaChlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMucHVibGlzaGVkLnB1c2goZW52ZWxvcGUpO1xuICB9XG5cbiAgc3Vic2NyaWJlKGhhbmRsZXI6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZUhhbmRsZXIpOiAoKCkgPT4gdm9pZCkgfCBQcm9taXNlPCgpID0+IHZvaWQ+IHtcbiAgICB0aGlzLmhhbmRsZXJzLmFkZChoYW5kbGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy51bnN1YnNjcmliZUNhbGxzICs9IDE7XG4gICAgICB0aGlzLmhhbmRsZXJzLmRlbGV0ZShoYW5kbGVyKTtcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZW1pdChlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgIGF3YWl0IGhhbmRsZXIoZW52ZWxvcGUpO1xuICAgIH1cbiAgfVxuXG4gIHNodXRkb3duKCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNodXRkb3duQ2FsbHMgKz0gMTtcbiAgfVxufVxuXG4vLyDsoITsl60gdW5oYW5kbGVkUmVqZWN0aW9u7J2EIOyImOynke2VnOuLpC4g67CY7ZmY7ZWcIO2VqOyImOuhnCDtlbTsoJztlZjqs6Ag7IiY7KeRIOqysOqzvOulvCDrsJvripTri6RcbmV4cG9ydCBmdW5jdGlvbiBjb2xsZWN0VW5oYW5kbGVkUmVqZWN0aW9ucygpOiAoKSA9PiBFcnJvcltdIHtcbiAgY29uc3QgY29sbGVjdGVkOiBFcnJvcltdID0gW107XG4gIGNvbnN0IGxpc3RlbmVyID0gKHJlYXNvbjogRXJyb3IpID0+IHtcbiAgICBjb2xsZWN0ZWQucHVzaChyZWFzb24pO1xuICB9O1xuICBwcm9jZXNzLm9uKFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsIGxpc3RlbmVyKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICBwcm9jZXNzLm9mZihcInVuaGFuZGxlZFJlamVjdGlvblwiLCBsaXN0ZW5lcik7XG4gICAgcmV0dXJuIGNvbGxlY3RlZDtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBVXFFLHVCQUFBO0FBR3JFLGVBQXNCLFdBQVcsU0FBaUIsR0FBa0I7Q0FDbEUsS0FBSyxJQUFJLFFBQVEs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
|
package/dist/stream/index.js
CHANGED
|
@@ -9,7 +9,17 @@ import { InMemoryWebSocketPresenceStore, init_ws_presence_store } from "./ws-pre
|
|
|
9
9
|
import { WebSocketRegistry, init_ws_registry } from "./ws-registry.js";
|
|
10
10
|
import { WebSocketRuntime, createWebSocketRuntime, init_ws } from "./ws.js";
|
|
11
11
|
import "./ws-core.js";
|
|
12
|
-
|
|
12
|
+
// src/stream/index.ts
|
|
13
|
+
init_sse();
|
|
14
|
+
init_ws_audience();
|
|
15
|
+
init_ws_session_id();
|
|
16
|
+
init_ws_cluster_bus();
|
|
17
|
+
init_ws_telemetry_memory();
|
|
18
|
+
init_ws_telemetry_trace();
|
|
19
|
+
init_ws_telemetry();
|
|
20
|
+
init_ws_presence_store();
|
|
21
|
+
init_ws_registry();
|
|
22
|
+
init_ws();
|
|
13
23
|
init_sse();
|
|
14
24
|
init_ws_audience();
|
|
15
25
|
init_ws_cluster_bus();
|
|
@@ -20,7 +30,6 @@ init_ws_telemetry_memory();
|
|
|
20
30
|
init_ws_telemetry_trace();
|
|
21
31
|
init_ws();
|
|
22
32
|
init_ws_registry();
|
|
23
|
-
//#endregion
|
|
24
33
|
export { DEFAULT_TRACE_OPTIONS, EMPTY_METRICS_SNAPSHOT, InMemoryEventStore, InMemoryMetricStore, InMemorySpanStore, InMemoryWebSocketPresenceStore, NoopWebSocketClusterBus, NoopWebSocketTelemetryController, WebSocketAudience, WebSocketRegistry, WebSocketRuntime, WebSocketTelemetryControllerImpl, createMockSSEFactory, createSSEFactory, createWebSocketNodeId, createWebSocketRuntime, createWebSocketSessionId, createWebSocketTelemetryController, formatTraceParent, generateSpanId, generateTraceId, isPromiseLike, parseTraceParent, parseWebSocketSessionNodeId };
|
|
25
34
|
|
|
26
35
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9zc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dzLWF1ZGllbmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93cy1jbHVzdGVyLWJ1c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtY29yZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtcHJlc2VuY2Utc3RvcmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dzLXNlc3Npb24taWRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dzLXRlbGVtZXRyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtdGVsZW1ldHJ5LW1lbW9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtdGVsZW1ldHJ5LXRyYWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtcmVnaXN0cnlcIjtcbiJdLCJtYXBwaW5ncyI6IiJ9
|
package/dist/stream/sse.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/stream/sse.ts
|
|
3
3
|
function createSSEFactory(socket, reply, _events) {
|
|
4
4
|
return new SSEConnectionImpl(socket, reply);
|
|
5
5
|
}
|
|
@@ -63,7 +63,6 @@ var init_sse = __esmMin((() => {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
}));
|
|
66
|
-
//#endregion
|
|
67
66
|
init_sse();
|
|
68
67
|
export { createMockSSEFactory, createSSEFactory, init_sse };
|
|
69
68
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_ws_session_id, parseWebSocketSessionNodeId } from "./ws-session-id.js";
|
|
3
|
-
|
|
3
|
+
// src/stream/ws-audience-resolver.ts
|
|
4
4
|
var WebSocketAudienceResolver;
|
|
5
5
|
var init_ws_audience_resolver = __esmMin((() => {
|
|
6
6
|
init_ws_session_id();
|
|
@@ -27,8 +27,7 @@ var init_ws_audience_resolver = __esmMin((() => {
|
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
}));
|
|
30
|
-
//#endregion
|
|
31
30
|
init_ws_audience_resolver();
|
|
32
31
|
export { WebSocketAudienceResolver, init_ws_audience_resolver };
|
|
33
32
|
|
|
34
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtYXVkaWVuY2UtcmVzb2x2ZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1hdWRpZW5jZS1yZXNvbHZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0UHJlc2VuY2VTdG9yZSB9IGZyb20gXCIuL3dzLXByZXNlbmNlLXN0b3JlXCI7XG5pbXBvcnQgeyBwYXJzZVdlYlNvY2tldFNlc3Npb25Ob2RlSWQgfSBmcm9tIFwiLi93cy1zZXNzaW9uLWlkXCI7XG5cbi8qKlxuICogcHVibGlzaCDrjIDsg4Eg7KSRIOybkOqyqSDrhbjrk5zrpbwg7LC+64qU64ukLiDroZzsu6wg64yA7IOB7J2AIHJlZ2lzdHJ5IOuplOuqqOumrOuhnCDtlbTshJ3tlZjrr4DroZwg7Jes6riw7ISc64qUIOybkOqyqSDrhbjrk5zrp4wg64uk66Os64ukLlxuICovXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0QXVkaWVuY2VSZXNvbHZlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczoge1xuICAgICAgbm9kZUlkOiBzdHJpbmc7XG4gICAgICBwcmVzZW5jZVN0b3JlOiBXZWJTb2NrZXRQcmVzZW5jZVN0b3JlO1xuICAgIH0sXG4gICkge31cblxuICAvKipcbiAgICogYGNvbm5lY3Rpb25zYCBhdWRpZW5jZeuKlCDshLjshZggSUTsl5Ag65OgIOuFuOuTnCBJROuhnCBzdG9yZSDsobDtmowg7JeG7J20IOudvOyasO2Mhe2VnOuLpC5cbiAgICog6re4IOuwluydmCBhdWRpZW5jZeuKlCBzdG9yZS5yZXNvbHZlUm91dGXrpbwg7Zi47Lac7ZWY66mwLCDrj5nquLAgdGhyb3frj4QgcmVqZWN0aW9u7Jy866GcIOuwlOq+vOuLpC5cbiAgICovXG4gIGFzeW5jIHJlc29sdmVSZW1vdGVOb2RlSWRzKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAoYXVkaWVuY2UudHlwZSA9PT0gXCJjb25uZWN0aW9uc1wiKSB7XG4gICAgICBjb25zdCBub2RlSWRzID0gbmV3IFNldDxzdHJpbmc+
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtYXVkaWVuY2UtcmVzb2x2ZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1hdWRpZW5jZS1yZXNvbHZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0UHJlc2VuY2VTdG9yZSB9IGZyb20gXCIuL3dzLXByZXNlbmNlLXN0b3JlXCI7XG5pbXBvcnQgeyBwYXJzZVdlYlNvY2tldFNlc3Npb25Ob2RlSWQgfSBmcm9tIFwiLi93cy1zZXNzaW9uLWlkXCI7XG5cbi8qKlxuICogcHVibGlzaCDrjIDsg4Eg7KSRIOybkOqyqSDrhbjrk5zrpbwg7LC+64qU64ukLiDroZzsu6wg64yA7IOB7J2AIHJlZ2lzdHJ5IOuplOuqqOumrOuhnCDtlbTshJ3tlZjrr4DroZwg7Jes6riw7ISc64qUIOybkOqyqSDrhbjrk5zrp4wg64uk66Os64ukLlxuICovXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0QXVkaWVuY2VSZXNvbHZlciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczoge1xuICAgICAgbm9kZUlkOiBzdHJpbmc7XG4gICAgICBwcmVzZW5jZVN0b3JlOiBXZWJTb2NrZXRQcmVzZW5jZVN0b3JlO1xuICAgIH0sXG4gICkge31cblxuICAvKipcbiAgICogYGNvbm5lY3Rpb25zYCBhdWRpZW5jZeuKlCDshLjshZggSUTsl5Ag65OgIOuFuOuTnCBJROuhnCBzdG9yZSDsobDtmowg7JeG7J20IOudvOyasO2Mhe2VnOuLpC5cbiAgICog6re4IOuwluydmCBhdWRpZW5jZeuKlCBzdG9yZS5yZXNvbHZlUm91dGXrpbwg7Zi47Lac7ZWY66mwLCDrj5nquLAgdGhyb3frj4QgcmVqZWN0aW9u7Jy866GcIOuwlOq+vOuLpC5cbiAgICovXG4gIGFzeW5jIHJlc29sdmVSZW1vdGVOb2RlSWRzKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAoYXVkaWVuY2UudHlwZSA9PT0gXCJjb25uZWN0aW9uc1wiKSB7XG4gICAgICBjb25zdCBub2RlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb25JZCBvZiBhdWRpZW5jZS5jb25uZWN0aW9uSWRzKSB7XG4gICAgICAgIGNvbnN0IG5vZGVJZCA9IHBhcnNlV2ViU29ja2V0U2Vzc2lvbk5vZGVJZChjb25uZWN0aW9uSWQpO1xuICAgICAgICBpZiAobm9kZUlkICE9PSB1bmRlZmluZWQgJiYgbm9kZUlkICE9PSB0aGlzLm9wdGlvbnMubm9kZUlkKSB7XG4gICAgICAgICAgbm9kZUlkcy5hZGQobm9kZUlkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIFsuLi5ub2RlSWRzXTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGFuID0gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PlxuICAgICAgdGhpcy5vcHRpb25zLnByZXNlbmNlU3RvcmUucmVzb2x2ZVJvdXRlKGF1ZGllbmNlLCB0aGlzLm9wdGlvbnMubm9kZUlkKSxcbiAgICApO1xuICAgIHJldHVybiBbLi4ubmV3IFNldChwbGFuLnJlbW90ZU5vZGVJZHMpXS5maWx0ZXIoKG5vZGVJZCkgPT4gbm9kZUlkICE9PSB0aGlzLm9wdGlvbnMubm9kZUlkKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztDQUU2RCxtQkFBQTtDQUtoRCw0QkFBYixNQUF1QztFQUVsQjtFQURuQixZQUNFLFNBSUE7R0FKaUIsS0FBQSxVQUFBO0VBSWhCOzs7OztFQU1ILE1BQU0scUJBQXFCLFVBQWdEO0dBQ3pFLElBQUksU0FBUyxTQUFTLGVBQWU7SUFDbkMsTUFBTSwwQkFBVSxJQUFJLElBQVk7SUFDaEMsS0FBSyxNQUFNLGdCQUFnQixTQUFTLGVBQWU7S0FDakQsTUFBTSxTQUFTLDRCQUE0QixZQUFZO0tBQ3ZELElBQUksV0FBVyxVQUFhLFdBQVcsS0FBSyxRQUFRLFFBQ2xELFFBQVEsSUFBSSxNQUFNO0lBRXRCO0lBQ0EsT0FBTyxDQUFDLEdBQUcsT0FBTztHQUNwQjtHQUVBLE1BQU0sT0FBTyxNQUFNLFFBQVEsUUFBUSxDQUFDLENBQUMsV0FDbkMsS0FBSyxRQUFRLGNBQWMsYUFBYSxVQUFVLEtBQUssUUFBUSxNQUFNLENBQ3ZFO0dBQ0EsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxRQUFRLFdBQVcsV0FBVyxLQUFLLFFBQVEsTUFBTTtFQUMzRjtDQUNGIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/stream/ws-audience.ts
|
|
3
3
|
var WebSocketAudience;
|
|
4
4
|
var init_ws_audience = __esmMin((() => {
|
|
5
5
|
WebSocketAudience = {
|
|
@@ -38,7 +38,6 @@ var init_ws_audience = __esmMin((() => {
|
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
}));
|
|
41
|
-
//#endregion
|
|
42
41
|
init_ws_audience();
|
|
43
42
|
export { WebSocketAudience, init_ws_audience };
|
|
44
43
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/stream/ws-cluster-bus.ts
|
|
3
3
|
var NoopWebSocketClusterBus;
|
|
4
4
|
var init_ws_cluster_bus = __esmMin((() => {
|
|
5
5
|
NoopWebSocketClusterBus = class {
|
|
@@ -10,7 +10,6 @@ var init_ws_cluster_bus = __esmMin((() => {
|
|
|
10
10
|
shutdown() {}
|
|
11
11
|
};
|
|
12
12
|
}));
|
|
13
|
-
//#endregion
|
|
14
13
|
init_ws_cluster_bus();
|
|
15
14
|
export { NoopWebSocketClusterBus, init_ws_cluster_bus };
|
|
16
15
|
|
|
@@ -3,7 +3,7 @@ import { init_runtime_type, runtimeTypeOf } from "../runtime-type.js";
|
|
|
3
3
|
import { encodeWebSocketFrame, init_ws_frame } from "./ws-frame.js";
|
|
4
4
|
import { NoopWebSocketTelemetryController, init_ws_telemetry } from "./ws-telemetry.js";
|
|
5
5
|
import { randomUUID } from "node:crypto";
|
|
6
|
-
|
|
6
|
+
// src/stream/ws-delivery.ts
|
|
7
7
|
function getOwnFrame(frames, routeKey) {
|
|
8
8
|
return Object.hasOwn(frames, routeKey) ? frames[routeKey] : void 0;
|
|
9
9
|
}
|
|
@@ -377,8 +377,7 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
377
377
|
}
|
|
378
378
|
};
|
|
379
379
|
}));
|
|
380
|
-
//#endregion
|
|
381
380
|
init_ws_delivery();
|
|
382
381
|
export { WebSocketDeliveryEngine, init_ws_delivery };
|
|
383
382
|
|
|
384
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZGVsaXZlcnkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1kZWxpdmVyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgcnVudGltZVR5cGVPZiB9IGZyb20gXCIuLi9ydW50aW1lLXR5cGVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0QXVkaWVuY2UgfSBmcm9tIFwiLi93cy1hdWRpZW5jZVwiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRBdWRpZW5jZVJlc29sdmVyIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2UtcmVzb2x2ZXJcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0Q2x1c3RlckJ1cywgdHlwZSBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUgfSBmcm9tIFwiLi93cy1jbHVzdGVyLWJ1c1wiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb24gfSBmcm9tIFwiLi93cy1jb3JlXCI7XG5pbXBvcnQgeyBlbmNvZGVXZWJTb2NrZXRGcmFtZSwgdHlwZSBXZWJTb2NrZXRGcmFtZUVuY29kaW5nIH0gZnJvbSBcIi4vd3MtZnJhbWVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0TG9jYWxDb25uZWN0aW9uU3RvcmUgfSBmcm9tIFwiLi93cy1sb2NhbC1jb25uZWN0aW9uLXN0b3JlXCI7XG5pbXBvcnQge1xuICBOb29wV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcixcbiAgdHlwZSBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyLFxufSBmcm9tIFwiLi93cy10ZWxlbWV0cnlcIjtcblxuLy8gZmFuLW91dOydhCBldmVudCBsb29wIHRpY2sg64uo7JyE66GcIOuCmOuIoCDtlZwg67KI7JeQIOq4tCDrj5nquLAg66Oo7ZSE66W8IOunjOuTpOyngCDslYrqsowg7ZWoXG5jb25zdCBGQU5fT1VUX0JBVENIX1NJWkUgPSAyNTA7XG5cbmV4cG9ydCB0eXBlIFdlYlNvY2tldFJvdXRlRGVmaW5pdGlvbiA9IHtcbiAgcm91dGVLZXk6IHN0cmluZztcbiAgb3V0RXZlbnRzOiB6LlpvZE9iamVjdDtcbn07XG5cbnR5cGUgRmFuT3V0VGFyZ2V0ID0ge1xuICBjb25uZWN0aW9uOiBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb247XG4gIGZyYW1lOiBzdHJpbmc7XG59O1xuXG50eXBlIEZhbk91dEpvYiA9IHtcbiAgdGFyZ2V0czogRmFuT3V0VGFyZ2V0W107XG4gIGV2ZW50OiBzdHJpbmc7XG4gIGN1cnNvcjogbnVtYmVyO1xufTtcblxudHlwZSBVbnN1YnNjcmliZSA9ICgpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXREZWxpdmVyeUVuZ2luZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVuZGluZ0Zhbk91dEpvYnM6IEZhbk91dEpvYltdID0gW107XG4gIHByaXZhdGUgZmFuT3V0Rmx1c2hTY2hlZHVsZWQgPSBmYWxzZTtcbiAgLy8gcm91dGVLZXkg4oaSIG91dEV2ZW50cy4g66qo65OgIOuFuOuTnOqwgCDqsJnsnYAgcm91dGUg7KeR7ZWp7J2EIOuTseuhne2VmOuvgOuhnCByb3V0ZUtleeuKlCDtgbTrn6zsiqTthLAg7KCE7LK07JeQ7IScIOydvOq0gOuQnOuLpFxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcyA9IG5ldyBNYXA8c3RyaW5nLCB6LlpvZE9iamVjdD4oKTtcbiAgLy8g64W465OcIOuLqOychCDsp4HroKwgcHVibGlzaCDtgZAuIOyVnuyEoCBwdWJsaXNo7J2YIOudvOyasO2MheydtCDripDroKTrj4Qg7JuQ6rKpIGVudmVsb3BlIOyInOyEnOqwgCDrkqTrsJTrgIzsp4Ag7JWK64qU64ukXG4gIHByaXZhdGUgcHVibGlzaFF1ZXVlOiBQcm9taXNlPHZvaWQ+ID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uOiBQcm9taXNlPFVuc3Vic2NyaWJlIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBzdG9wcGVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVsZW1ldHJ5OiBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHVucmVnaXN0ZXJNZXRyaWNTb3VyY2U6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiB7XG4gICAgICBub2RlSWQ6IHN0cmluZztcbiAgICAgIGxvY2FsQ29ubmVjdGlvbnM6IFdlYlNvY2tldExvY2FsQ29ubmVjdGlvblN0b3JlO1xuICAgICAgLy8gcmVnaXN0cnkg66mU66qo66asIOq4sOykgOycvOuhnCBhdWRpZW5jZeyXkCDsho3tlZwg66Gc7LusIO2ZnOyEsSDshLjshZggSUTrpbwg67CY7ZmY7ZWc64ukXG4gICAgICByZXNvbHZlTG9jYWxTZXNzaW9uSWRzOiAoYXVkaWVuY2U6IFdlYlNvY2tldEF1ZGllbmNlKSA9PiBzdHJpbmdbXTtcbiAgICAgIGF1ZGllbmNlUmVzb2x2ZXI6IFdlYlNvY2tldEF1ZGllbmNlUmVzb2x2ZXI7XG4gICAgICBjbHVzdGVyQnVzOiBXZWJTb2NrZXRDbHVzdGVyQnVzO1xuICAgICAgdGVsZW1ldHJ5Q29udHJvbGxlcj86IFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXI7XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy50ZWxlbWV0cnkgPSB0aGlzLm9wdGlvbnMudGVsZW1ldHJ5Q29udHJvbGxlciA/PyBuZXcgTm9vcFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy51bnJlZ2lzdGVyTWV0cmljU291cmNlID0gdGhpcy50ZWxlbWV0cnkucmVnaXN0ZXJNZXRyaWNTb3VyY2Uoe1xuICAgICAgY29sbGVjdDogKCkgPT4gdGhpcy5nZXRUZWxlbWV0cnlTbmFwc2hvdCgpLFxuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJSb3V0ZShyb3V0ZUtleTogc3RyaW5nLCBvdXRFdmVudHM6IHouWm9kT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXMuc2V0KHJvdXRlS2V5LCBvdXRFdmVudHMpO1xuICB9XG5cbiAgcmVwbGFjZVJvdXRlcyhyb3V0ZXM6IFdlYlNvY2tldFJvdXRlRGVmaW5pdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXMuY2xlYXIoKTtcbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgdGhpcy5yb3V0ZXMuc2V0KHJvdXRlLnJvdXRlS2V5LCByb3V0ZS5vdXRFdmVudHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDrsJztlokg64W465Oc7JeQ7IScIHJvdXRl67OE66GcIO2VnCDrsogg6rKA7KadwrfsnbjsvZTrlKntlZjqs6AsIOuhnOy7rCBmYW4tb3V07J2AIOymieyLnCDtgZDsl5Ag64Sj64qU64ukLlxuICAgKiDsm5Dqsqkg65287Jqw7YyF6rO8IGNsdXN0ZXIgcHVibGlzaOuKlCDrhbjrk5wg64uo7JyEIOyngeugrCDtgZDsl5DshJwg7LKY66as7ZWc64ukLiDrsJjtmZjtlZwgcHJvbWlzZeuKlCByZWplY3TtlZjsp4Ag7JWK64qU64ukLlxuICAgKi9cbiAgcHVibGlzaFRvQXVkaWVuY2U8RGF0YT4oYXVkaWVuY2U6IFdlYlNvY2tldEF1ZGllbmNlLCBldmVudDogc3RyaW5nLCBkYXRhOiBEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBkZWNsYXJlZCA9IGZhbHNlO1xuICAgICAgbGV0IHJlamVjdGVkID0gZmFsc2U7XG4gICAgICBjb25zdCByZWNvcmQgPSAoZW5jb2Rpbmc6IFdlYlNvY2tldEZyYW1lRW5jb2RpbmcpID0+IHtcbiAgICAgICAgaWYgKGVuY29kaW5nLnN0YXR1cyAhPT0gXCJ1bmtub3duRXZlbnRcIikge1xuICAgICAgICAgIGRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5jb2Rpbmcuc3RhdHVzID09PSBcImludmFsaWRQYXlsb2FkXCIpIHtcbiAgICAgICAgICByZWplY3RlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8vIOydtOuypO2KuOulvCDshKDslrjtlZwgcm91dGXrp4jri6Qg7ZWcIOuyiOunjCDqsoDspp3Ct+yduOy9lOuUqe2VnOuLpC4g7JuQ6rKpIOyImOyLoOyekOuPhCDsnbQgZnJhbWXsnYQg6re464yA66GcIOuwm+uKlOuLpFxuICAgICAgY29uc3Qgcm91dGVGcmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW3JvdXRlS2V5LCBvdXRFdmVudHNdIG9mIHRoaXMucm91dGVzKSB7XG4gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZW5jb2RlV2ViU29ja2V0RnJhbWUob3V0RXZlbnRzLCBldmVudCwgZGF0YSk7XG4gICAgICAgIHJlY29yZChlbmNvZGluZyk7XG4gICAgICAgIGlmIChlbmNvZGluZy5zdGF0dXMgPT09IFwiZW5jb2RlZFwiKSB7XG4gICAgICAgICAgcm91dGVGcmFtZXNbcm91dGVLZXldID0gZW5jb2RpbmcuZnJhbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcm91dGUgdGFibGXsl5Ag7JeG64qUIOuhnOy7rCDsl7DqsrDsnYAg7J6Q6riwIOyKpO2CpOuniOuhnCDsnbjsvZTrlKntlZzri6Qo7Iqk7YKk66eIIOqwneyytOuLuSDtlZwg67KIKVxuICAgICAgY29uc3QgZmFsbGJhY2tFbmNvZGluZ3MgPSBuZXcgTWFwPHouWm9kT2JqZWN0LCBXZWJTb2NrZXRGcmFtZUVuY29kaW5nPigpO1xuICAgICAgY29uc3QgbG9jYWxUYXJnZXRzOiBGYW5PdXRUYXJnZXRbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb25uZWN0aW9uIG9mIHRoaXMub3B0aW9ucy5sb2NhbENvbm5lY3Rpb25zLmdldENvbm5lY3Rpb25zKFxuICAgICAgICB0aGlzLm9wdGlvbnMucmVzb2x2ZUxvY2FsU2Vzc2lvbklkcyhhdWRpZW5jZSksXG4gICAgICApKSB7XG4gICAgICAgIGxldCBmcmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoY29ubmVjdGlvbi5yb3V0ZUtleSAhPT0gdW5kZWZpbmVkICYmIHRoaXMucm91dGVzLmhhcyhjb25uZWN0aW9uLnJvdXRlS2V5KSkge1xuICAgICAgICAgIGZyYW1lID0gZ2V0T3duRnJhbWUocm91dGVGcmFtZXMsIGNvbm5lY3Rpb24ucm91dGVLZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBlbmNvZGluZyA9IGZhbGxiYWNrRW5jb2RpbmdzLmdldChjb25uZWN0aW9uLm91dEV2ZW50cyk7XG4gICAgICAgICAgaWYgKCFlbmNvZGluZykge1xuICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGVXZWJTb2NrZXRGcmFtZShjb25uZWN0aW9uLm91dEV2ZW50cywgZXZlbnQsIGRhdGEpO1xuICAgICAgICAgICAgZmFsbGJhY2tFbmNvZGluZ3Muc2V0KGNvbm5lY3Rpb24ub3V0RXZlbnRzLCBlbmNvZGluZyk7XG4gICAgICAgICAgICByZWNvcmQoZW5jb2RpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmcmFtZSA9IGVuY29kaW5nLnN0YXR1cyA9PT0gXCJlbmNvZGVkXCIgPyBlbmNvZGluZy5mcmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOydtOuypO2KuOulvCDshKDslrjtlZjsp4Ag7JWK7JWY6rGw64KYIOqygOymneyXkCDsi6TtjKjtlZwgcm91dGXsnZgg7Jew6rKw7J2AIOuLq+yngCDslYrqs6Ag6rG064SI65u064ukXG4gICAgICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbG9jYWxUYXJnZXRzLnB1c2goeyBjb25uZWN0aW9uLCBmcmFtZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICAgIHRoaXMuZW1pdFB1Ymxpc2hSZWplY3RlZChldmVudCwgXCJ1bmtub3duRXZlbnRcIik7XG4gICAgICB9IGVsc2UgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHRoaXMuZW1pdFB1Ymxpc2hSZWplY3RlZChldmVudCwgXCJpbnZhbGlkUGF5bG9hZFwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbnF1ZXVlRmFuT3V0KGxvY2FsVGFyZ2V0cywgZXZlbnQpO1xuXG4gICAgICBpZiAoT2JqZWN0LmtleXMocm91dGVGcmFtZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmVtaXRGYW5PdXRSZXNvbHZlZChhdWRpZW5jZSwgbG9jYWxUYXJnZXRzLmxlbmd0aCwgMCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgLy8g7JuQ6rKpIOudvOyasO2MhShzdG9yZSDsobDtmowp7J2AIOyVnuyEoCBwdWJsaXNo66W8IOq4sOuLpOumrOyngCDslYrqs6Ag7KeA6riIIOuwlOuhnCDsi5zsnpHtlZzri6QuIHN0b3Jl6rCAIOupiOy2sOuPhCDrsoTsiqTtirgg67mE7Jqp7J20IE7Dl1TqsIAg7JWE64uMIOyVvSBU64ukLlxuICAgICAgLy8g67CY66m0IGVudmVsb3BlIOuwnO2WieydgCDrhbjrk5wg64uo7JyEIO2BkOyXkCDsnbTslrQg67aZ7JesIHB1Ymxpc2gg7Iic7ISc66W8IOyngO2CqOuLpC4g65KkIHB1Ymxpc2jsnZgg65287Jqw7YyF7J20IOuovOyggCDrgZ3rgpjrj4Qg7JWeIOuwnO2WieydhCDquLDri6TrprDri6RcbiAgICAgIGNvbnN0IHJvdXRpbmcgPSB0aGlzLnJlc29sdmVSZW1vdGVOb2RlSWRzKGF1ZGllbmNlLCBldmVudCk7XG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5wdWJsaXNoUXVldWVcbiAgICAgICAgLnRoZW4oKCkgPT4gcm91dGluZylcbiAgICAgICAgLnRoZW4oKHJlbW90ZU5vZGVJZHMpID0+XG4gICAgICAgICAgdGhpcy5wdWJsaXNoUmVtb3RlKGF1ZGllbmNlLCBldmVudCwgcm91dGVGcmFtZXMsIGxvY2FsVGFyZ2V0cy5sZW5ndGgsIHJlbW90ZU5vZGVJZHMpLFxuICAgICAgICApXG4gICAgICAgIC5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICB0aGlzLmVtaXRSb3V0ZUZhaWxlZChldmVudCwgYXVkaWVuY2UsIGNhdXNlKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLnB1Ymxpc2hRdWV1ZSA9IHRhc2s7XG4gICAgICByZXR1cm4gdGFzaztcbiAgICB9IGNhdGNoIChjYXVzZSkge1xuICAgICAgLy8g7Iqk7YKk66eIIHRyYW5zZm9ybSDsmIjsmbgg65OxIOyYiOyDge2VmOyngCDrqrvtlZwg7Iuk7Yyo64+EIO2YuOy2nOyekOyXkOqyjCByZWplY3TroZwg7IOI7KeAIOyViuqyjCDtlZzri6RcbiAgICAgIHRoaXMuZW1pdFJvdXRlRmFpbGVkKGV2ZW50LCBhdWRpZW5jZSwgY2F1c2UpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIOynhO2WiSDspJHsnbggcHVibGlzaCjsm5Dqsqkg7Y+s7ZWoKeyZgCDqtazrj4Ug7Iuc64+E6rCAIOuqqOuRkCDrgZ3rgpjrqbQgcmVzb2x2Ze2VnOuLpFxuICBhc3luYyBkcmFpblB1Ymxpc2hlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wdWJsaXNoUXVldWUsIHRoaXMuc3Vic2NyaXB0aW9uXSk7XG4gIH1cblxuICAvKipcbiAgICog6rWs64+F7J2EIO2VtOygnO2VmOqzoCBjbHVzdGVyIGJ1c+ulvCDsooXro4ztlZzri6QuIOq1rOuPheydtCBkZWFkbGluZeq5jOyngCDrgZ3rgpjsp4Ag7JWK7Jy866m0IOuKpuqyjCDrgZ3rgqAg65WMIO2VtOygnO2VnOuLpC5cbiAgICovXG4gIGFzeW5jIHNodXRkb3duKGRlYWRsaW5lOiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcbiAgICB0aGlzLnVucmVnaXN0ZXJNZXRyaWNTb3VyY2UoKTtcblxuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLnN1YnNjcmlwdGlvbiwgZGVhZGxpbmUudGhlbigoKSA9PiBudWxsKV0pO1xuICAgIGlmICh1bnN1YnNjcmliZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udGhlbigobGF0ZVVuc3Vic2NyaWJlKSA9PiB7XG4gICAgICAgIHRoaXMuc2FmZVVuc3Vic2NyaWJlKGxhdGVVbnN1YnNjcmliZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYWZlVW5zdWJzY3JpYmUodW5zdWJzY3JpYmUpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMub3B0aW9ucy5jbHVzdGVyQnVzLnNodXRkb3duKCkpO1xuICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLnNodXRkb3duLmZhaWxlZFwiLFxuICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICBkZXRhaWw6IHsgZXJyb3JUeXBlOiBkZXNjcmliZUVycm9yKGNhdXNlKSB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5U25hcHNob3QoKSB7XG4gICAgbGV0IHBlbmRpbmdGYW5PdXRUYXJnZXRzID0gMDtcblxuICAgIGZvciAoY29uc3Qgam9iIG9mIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMpIHtcbiAgICAgIHBlbmRpbmdGYW5PdXRUYXJnZXRzICs9IE1hdGgubWF4KGpvYi50YXJnZXRzLmxlbmd0aCAtIGpvYi5jdXJzb3IsIDApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwZW5kaW5nRmFuT3V0Sm9iczogdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5sZW5ndGgsXG4gICAgICBwZW5kaW5nRmFuT3V0VGFyZ2V0cyxcbiAgICB9O1xuICB9XG5cbiAgLy8g6rWs64+FIOyLpO2MqOuKlCDroZzsu6wg7KCE7JqpIOuPmeyekeycvOuhnCDsiJjroLTsi5ztgqTqs6AgdGVsZW1ldHJ566eMIOuCqOq4tOuLpFxuICBwcml2YXRlIHN1YnNjcmliZSgpOiBQcm9taXNlPFVuc3Vic2NyaWJlIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAudGhlbigoKSA9PlxuICAgICAgICB0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5zdWJzY3JpYmUoKGVudmVsb3BlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVDbHVzdGVyRW52ZWxvcGUoZW52ZWxvcGUpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC50aGVuKFxuICAgICAgICAodW5zdWJzY3JpYmUpID0+IHVuc3Vic2NyaWJlLFxuICAgICAgICAoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5zdWJzY3JpYmUuZmFpbGVkXCIsXG4gICAgICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICAgICAgZGV0YWlsOiB7IGVycm9yVHlwZTogZGVzY3JpYmVFcnJvcihjYXVzZSkgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FmZVVuc3Vic2NyaWJlKHVuc3Vic2NyaWJlOiBVbnN1YnNjcmliZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB1bnN1YnNjcmliZT8uKCk7XG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIudW5zdWJzY3JpYmUuZmFpbGVkXCIsXG4gICAgICAgIGxldmVsOiBcImVycm9yXCIsXG4gICAgICAgIGRldGFpbDogeyBlcnJvclR5cGU6IGRlc2NyaWJlRXJyb3IoY2F1c2UpIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyDrnbzsmrDtjIUg7Iuk7Yyo64qUIOyXrOq4sOyEnCB0ZWxlbWV0cnnroZwg67CU6r+UIHVuZGVmaW5lZOulvCDrj4zroKTspIDri6QuIOymieyLnCBjYXRjaOulvCDrtpnsnbTrr4DroZwg7YGQIOywqOuhgOulvCDquLDri6TrpqzripQg64+Z7JWI7JeQ64+EIHVuaGFuZGxlZCByZWplY3Rpb27snbQg7IOd6riw7KeAIOyViuuKlOuLpFxuICBwcml2YXRlIHJlc29sdmVSZW1vdGVOb2RlSWRzKFxuICAgIGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSxcbiAgICBldmVudDogc3RyaW5nLFxuICApOiBQcm9taXNlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdWRpZW5jZVJlc29sdmVyLnJlc29sdmVSZW1vdGVOb2RlSWRzKGF1ZGllbmNlKS5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgIHRoaXMuZW1pdFJvdXRlRmFpbGVkKGV2ZW50LCBhdWRpZW5jZSwgY2F1c2UpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHVibGlzaFJlbW90ZShcbiAgICBhdWRpZW5jZTogV2ViU29ja2V0QXVkaWVuY2UsXG4gICAgZXZlbnQ6IHN0cmluZyxcbiAgICBmcmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgbG9jYWxUYXJnZXRDb3VudDogbnVtYmVyLFxuICAgIHJlc29sdmVkTm9kZUlkczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIOudvOyasO2MhSDsi6TtjKgodW5kZWZpbmVkKSDsi5wg66Gc7LusIOyghOuLrOydgCDsnbTrr7gg64Gd64Ks7Jy866+A66GcIOydtCBwdWJsaXNo7J2YIOybkOqyqSBlbnZlbG9wZeunjCDqsbTrhIjrm7Tri6RcbiAgICBjb25zdCByZW1vdGVOb2RlSWRzID0gcmVzb2x2ZWROb2RlSWRzID8/IFtdO1xuICAgIHRoaXMuZW1pdEZhbk91dFJlc29sdmVkKGF1ZGllbmNlLCBsb2NhbFRhcmdldENvdW50LCByZW1vdGVOb2RlSWRzLmxlbmd0aCk7XG4gICAgaWYgKHJlbW90ZU5vZGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW52ZWxvcGU6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZSA9IHtcbiAgICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgICBzb3VyY2VOb2RlSWQ6IHRoaXMub3B0aW9ucy5ub2RlSWQsXG4gICAgICB0YXJnZXROb2RlSWRzOiByZW1vdGVOb2RlSWRzLFxuICAgICAgYXVkaWVuY2UsXG4gICAgICBldmVudCxcbiAgICAgIGZyYW1lcyxcbiAgICAgIGVtaXR0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcHVibGlzaFN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMub3B0aW9ucy5jbHVzdGVyQnVzLnB1Ymxpc2goZW52ZWxvcGUpKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHB1Ymxpc2hTdGFydGVkQXQ7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnB1Ymxpc2hlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgZXZlbnQsIHRhcmdldE5vZGVDb3VudDogcmVtb3RlTm9kZUlkcy5sZW5ndGggfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5wdWJsaXNoXCIsXG4gICAgICAgIGtpbmQ6IFwicHJvZHVjZXJcIixcbiAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgc3RhdHVzOiBcInVuc2V0XCIsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICB0YXJnZXROb2RlQ291bnQ6IHJlbW90ZU5vZGVJZHMubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHB1Ymxpc2hTdGFydGVkQXQ7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmZhaWxlZFwiLFxuICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICBkZXRhaWw6IHsgZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5wdWJsaXNoXCIsXG4gICAgICAgIGtpbmQ6IFwicHJvZHVjZXJcIixcbiAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgZXZlbnQgfSxcbiAgICAgICAgZXJyb3JUeXBlOiBkZXNjcmliZUVycm9yKGNhdXNlKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIOyImOyLoCDrhbjrk5zripQgc3RvcmUg7JeG7J20IOyekOq4sCDrqZTrqqjrpqzroZwgYXVkaWVuY2Xrpbwg7ZW07ISd7ZWY6rOgLCDqsIEg7Jew6rKw7J2YIHJvdXRlIGZyYW1l7J2EIOyerOqygOymnSDsl4bsnbQg6re464yA66GcIOuztOuCuOuLpFxuICBwcml2YXRlIGhhbmRsZUNsdXN0ZXJFbnZlbG9wZShlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcHBlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbnZlbG9wZS5zb3VyY2VOb2RlSWQgPT09IHRoaXMub3B0aW9ucy5ub2RlSWQpIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIuZW52ZWxvcGUuaWdub3JlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgcmVhc29uOiBcInNlbGZTb3VyY2VcIiwgZXZlbnQ6IGVudmVsb3BlLmV2ZW50IH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBlbnZlbG9wZS50YXJnZXROb2RlSWRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICFlbnZlbG9wZS50YXJnZXROb2RlSWRzLmluY2x1ZGVzKHRoaXMub3B0aW9ucy5ub2RlSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmlnbm9yZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgZGV0YWlsOiB7IHJlYXNvbjogXCJ0YXJnZXRNaXNtYXRjaFwiLCBldmVudDogZW52ZWxvcGUuZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnJlY2VpdmVkXCIsXG4gICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgZGV0YWlsOiB7IGV2ZW50OiBlbnZlbG9wZS5ldmVudCwgc291cmNlTm9kZUlkOiBlbnZlbG9wZS5zb3VyY2VOb2RlSWQgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvY2FsVGFyZ2V0czogRmFuT3V0VGFyZ2V0W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgdGhpcy5vcHRpb25zLmxvY2FsQ29ubmVjdGlvbnMuZ2V0Q29ubmVjdGlvbnMoXG4gICAgICB0aGlzLm9wdGlvbnMucmVzb2x2ZUxvY2FsU2Vzc2lvbklkcyhlbnZlbG9wZS5hdWRpZW5jZSksXG4gICAgKSkge1xuICAgICAgY29uc3QgZnJhbWUgPVxuICAgICAgICBjb25uZWN0aW9uLnJvdXRlS2V5ID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogZ2V0T3duRnJhbWUoZW52ZWxvcGUuZnJhbWVzLCBjb25uZWN0aW9uLnJvdXRlS2V5KTtcbiAgICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvY2FsVGFyZ2V0cy5wdXNoKHsgY29ubmVjdGlvbiwgZnJhbWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZW5xdWV1ZUZhbk91dChsb2NhbFRhcmdldHMsIGVudmVsb3BlLmV2ZW50KTtcblxuICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZFNwYW4oe1xuICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5jbHVzdGVyLnJlY2VpdmVcIixcbiAgICAgIGtpbmQ6IFwiY29uc3VtZXJcIixcbiAgICAgIGR1cmF0aW9uTXM6IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRlZEF0LFxuICAgICAgc3RhdHVzOiBcInVuc2V0XCIsXG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGV2ZW50OiBlbnZlbG9wZS5ldmVudCxcbiAgICAgICAgc291cmNlTm9kZUlkOiBlbnZlbG9wZS5zb3VyY2VOb2RlSWQsXG4gICAgICAgIGxvY2FsVGFyZ2V0Q291bnQ6IGxvY2FsVGFyZ2V0cy5sZW5ndGgsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UHVibGlzaFJlamVjdGVkKGV2ZW50OiBzdHJpbmcsIHJlYXNvbjogXCJ1bmtub3duRXZlbnRcIiB8IFwiaW52YWxpZFBheWxvYWRcIik6IHZvaWQge1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5wdWJsaXNoLnJlamVjdGVkXCIsXG4gICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgZGV0YWlsOiB7IGV2ZW50LCByZWFzb24gfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJvdXRlRmFpbGVkKGV2ZW50OiBzdHJpbmcsIGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgY2F1c2U6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgIG5hbWU6IFwid3MuZmFub3V0LnJvdXRlLmZhaWxlZFwiLFxuICAgICAgbGV2ZWw6IFwiZXJyb3JcIixcbiAgICAgIGRldGFpbDogeyBldmVudCwgYXVkaWVuY2VUeXBlOiBhdWRpZW5jZS50eXBlLCBlcnJvclR5cGU6IGRlc2NyaWJlRXJyb3IoY2F1c2UpIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGYW5PdXRSZXNvbHZlZChcbiAgICBhdWRpZW5jZTogV2ViU29ja2V0QXVkaWVuY2UsXG4gICAgbG9jYWxUYXJnZXRDb3VudDogbnVtYmVyLFxuICAgIHJlbW90ZU5vZGVDb3VudDogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgIG5hbWU6IFwid3MuZmFub3V0LnJlc29sdmVkXCIsXG4gICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgZGV0YWlsOiB7IGxvY2FsVGFyZ2V0Q291bnQsIHJlbW90ZU5vZGVDb3VudCB9LFxuICAgIH0pO1xuICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZE1ldHJpYyh7XG4gICAgICBuYW1lOiBcInNvbmFtdS53cy5mYW5vdXQudGFyZ2V0c1wiLFxuICAgICAga2luZDogXCJoaXN0b2dyYW1cIixcbiAgICAgIHZhbHVlOiBsb2NhbFRhcmdldENvdW50ICsgcmVtb3RlTm9kZUNvdW50LFxuICAgICAgdW5pdDogXCIxXCIsXG4gICAgICB0YWdzOiB7IGF1ZGllbmNlX3R5cGU6IGF1ZGllbmNlLnR5cGUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW5xdWV1ZUZhbk91dCh0YXJnZXRzOiBGYW5PdXRUYXJnZXRbXSwgZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0YXJnZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMucHVzaCh7XG4gICAgICB0YXJnZXRzLFxuICAgICAgZXZlbnQsXG4gICAgICBjdXJzb3I6IDAsXG4gICAgfSk7XG4gICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICBuYW1lOiBcIndzLmZhbm91dC5lbnF1ZXVlZFwiLFxuICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgIGRldGFpbDogeyB0YXJnZXRDb3VudDogdGFyZ2V0cy5sZW5ndGgsIGV2ZW50IH0sXG4gICAgfSk7XG4gICAgdGhpcy5zY2hlZHVsZUZhbk91dEZsdXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlRmFuT3V0Rmx1c2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmFuT3V0Rmx1c2hTY2hlZHVsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZhbk91dEZsdXNoU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgdGhpcy5mYW5PdXRGbHVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5mbHVzaEZhbk91dEpvYnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmx1c2hGYW5PdXRKb2JzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuICAgIGxldCBzdGF0dXM6IFwidW5zZXRcIiB8IFwiZXJyb3JcIiA9IFwidW5zZXRcIjtcbiAgICBsZXQgZXJyb3JUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoID4gMCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgY29uc3Qgam9iID0gdGhpcy5wZW5kaW5nRmFuT3V0Sm9ic1swXTtcblxuICAgICAgICB3aGlsZSAoam9iLmN1cnNvciA8IGpvYi50YXJnZXRzLmxlbmd0aCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgICB0aGlzLnNhZmVTZW5kKGpvYi50YXJnZXRzW2pvYi5jdXJzb3JdLCBqb2IuZXZlbnQpO1xuICAgICAgICAgIGpvYi5jdXJzb3IgKz0gMTtcbiAgICAgICAgICBwcm9jZXNzZWQgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChqb2IuY3Vyc29yID49IGpvYi50YXJnZXRzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzdGF0dXMgPSBcImVycm9yXCI7XG4gICAgICBlcnJvclR5cGUgPSBkZXNjcmliZUVycm9yKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBkdXJhdGlvbk1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydGVkQXQ7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5mYW5vdXQuZmx1c2hlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZCB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5mYW5vdXQuZGlzcGF0Y2hcIixcbiAgICAgICAga2luZDogXCJpbnRlcm5hbFwiLFxuICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZCB9LFxuICAgICAgICBlcnJvclR5cGUsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlRmFuT3V0Rmx1c2goKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhZmVTZW5kKHRhcmdldDogRmFuT3V0VGFyZ2V0LCBldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb25uZWN0aW9uLCBmcmFtZSB9ID0gdGFyZ2V0O1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWNvbm5lY3Rpb24uY2xvc2VkKSB7XG4gICAgICAgIGNvbm5lY3Rpb24uc2VuZEZyYW1lKGV2ZW50LCBmcmFtZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5mYW5vdXQucHVibGlzaC5mYWlsZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZXJyb3JcIixcbiAgICAgICAgY29ubmVjdGlvbklkOiBjb25uZWN0aW9uLmlkLFxuICAgICAgICBuYW1lc3BhY2U6IGNvbm5lY3Rpb24ubmFtZXNwYWNlLFxuICAgICAgICB1c2VySWQ6IGNvbm5lY3Rpb24udXNlcklkLFxuICAgICAgICBkZXRhaWw6IHsgZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgY29ubmVjdGlvbi5jbG9zZSgxMDExLCBcIldlYlNvY2tldCBwdWJsaXNoIGZhaWxlZFwiKTtcbiAgICB9XG4gIH1cbn1cblxuLy8g7JuQ6rKp7JeQ7IScIOyYqCBmcmFtZXPripQgcHJvdG90eXBlIO2CpOulvCDrrLTsi5ztlZjqs6Ag7J6Q6riwIOyGjeyEseunjCDsnb3ripTri6RcbmZ1bmN0aW9uIGdldE93bkZyYW1lKGZyYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgcm91dGVLZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGZyYW1lcywgcm91dGVLZXkpID8gZnJhbWVzW3JvdXRlS2V5XSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVFcnJvcihjYXVzZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBjYXVzZSBpbnN0YW5jZW9mIEVycm9yID8gY2F1c2UubmFtZSA6IHJ1bnRpbWVUeXBlT2YoY2F1c2UpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUEwZkEsU0FBUyxZQUFZLFFBQWdDLFVBQXNDO0NBQ3pGLE9BQU8sT0FBTyxPQUFPLFFBQVEsUUFBUSxJQUFJLE9BQU8sWUFBWTtBQUM5RDtBQUVBLFNBQVMsY0FBYyxPQUF3QjtDQUM3QyxPQUFPLGlCQUFpQixRQUFRLE1BQU0sT0FBTyxjQUFjLEtBQUs7QUFDbEU7OzttQkE1ZitDO2VBSytCO21CQUt2RDtDQUdqQixxQkFBcUI7Q0FvQmQsMEJBQWIsTUFBcUM7RUFhaEI7RUFabkIsb0JBQWtELENBQUM7RUFDbkQsdUJBQStCO0VBRS9CLHlCQUEwQixJQUFJLElBQXlCO0VBRXZELGVBQXNDLFFBQVEsUUFBUTtFQUN0RDtFQUNB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
|
|
383
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZGVsaXZlcnkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1kZWxpdmVyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgcnVudGltZVR5cGVPZiB9IGZyb20gXCIuLi9ydW50aW1lLXR5cGVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0QXVkaWVuY2UgfSBmcm9tIFwiLi93cy1hdWRpZW5jZVwiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRBdWRpZW5jZVJlc29sdmVyIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2UtcmVzb2x2ZXJcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0Q2x1c3RlckJ1cywgdHlwZSBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUgfSBmcm9tIFwiLi93cy1jbHVzdGVyLWJ1c1wiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb24gfSBmcm9tIFwiLi93cy1jb3JlXCI7XG5pbXBvcnQgeyBlbmNvZGVXZWJTb2NrZXRGcmFtZSwgdHlwZSBXZWJTb2NrZXRGcmFtZUVuY29kaW5nIH0gZnJvbSBcIi4vd3MtZnJhbWVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0TG9jYWxDb25uZWN0aW9uU3RvcmUgfSBmcm9tIFwiLi93cy1sb2NhbC1jb25uZWN0aW9uLXN0b3JlXCI7XG5pbXBvcnQge1xuICBOb29wV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcixcbiAgdHlwZSBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyLFxufSBmcm9tIFwiLi93cy10ZWxlbWV0cnlcIjtcblxuLy8gZmFuLW91dOydhCBldmVudCBsb29wIHRpY2sg64uo7JyE66GcIOuCmOuIoCDtlZwg67KI7JeQIOq4tCDrj5nquLAg66Oo7ZSE66W8IOunjOuTpOyngCDslYrqsowg7ZWoXG5jb25zdCBGQU5fT1VUX0JBVENIX1NJWkUgPSAyNTA7XG5cbmV4cG9ydCB0eXBlIFdlYlNvY2tldFJvdXRlRGVmaW5pdGlvbiA9IHtcbiAgcm91dGVLZXk6IHN0cmluZztcbiAgb3V0RXZlbnRzOiB6LlpvZE9iamVjdDtcbn07XG5cbnR5cGUgRmFuT3V0VGFyZ2V0ID0ge1xuICBjb25uZWN0aW9uOiBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb247XG4gIGZyYW1lOiBzdHJpbmc7XG59O1xuXG50eXBlIEZhbk91dEpvYiA9IHtcbiAgdGFyZ2V0czogRmFuT3V0VGFyZ2V0W107XG4gIGV2ZW50OiBzdHJpbmc7XG4gIGN1cnNvcjogbnVtYmVyO1xufTtcblxudHlwZSBVbnN1YnNjcmliZSA9ICgpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXREZWxpdmVyeUVuZ2luZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVuZGluZ0Zhbk91dEpvYnM6IEZhbk91dEpvYltdID0gW107XG4gIHByaXZhdGUgZmFuT3V0Rmx1c2hTY2hlZHVsZWQgPSBmYWxzZTtcbiAgLy8gcm91dGVLZXkg4oaSIG91dEV2ZW50cy4g66qo65OgIOuFuOuTnOqwgCDqsJnsnYAgcm91dGUg7KeR7ZWp7J2EIOuTseuhne2VmOuvgOuhnCByb3V0ZUtleeuKlCDtgbTrn6zsiqTthLAg7KCE7LK07JeQ7IScIOydvOq0gOuQnOuLpFxuICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcyA9IG5ldyBNYXA8c3RyaW5nLCB6LlpvZE9iamVjdD4oKTtcbiAgLy8g64W465OcIOuLqOychCDsp4HroKwgcHVibGlzaCDtgZAuIOyVnuyEoCBwdWJsaXNo7J2YIOudvOyasO2MheydtCDripDroKTrj4Qg7JuQ6rKpIGVudmVsb3BlIOyInOyEnOqwgCDrkqTrsJTrgIzsp4Ag7JWK64qU64ukXG4gIHByaXZhdGUgcHVibGlzaFF1ZXVlOiBQcm9taXNlPHZvaWQ+ID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uOiBQcm9taXNlPFVuc3Vic2NyaWJlIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSBzdG9wcGVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVsZW1ldHJ5OiBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHVucmVnaXN0ZXJNZXRyaWNTb3VyY2U6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiB7XG4gICAgICBub2RlSWQ6IHN0cmluZztcbiAgICAgIGxvY2FsQ29ubmVjdGlvbnM6IFdlYlNvY2tldExvY2FsQ29ubmVjdGlvblN0b3JlO1xuICAgICAgLy8gcmVnaXN0cnkg66mU66qo66asIOq4sOykgOycvOuhnCBhdWRpZW5jZeyXkCDsho3tlZwg66Gc7LusIO2ZnOyEsSDshLjshZggSUTrpbwg67CY7ZmY7ZWc64ukXG4gICAgICByZXNvbHZlTG9jYWxTZXNzaW9uSWRzOiAoYXVkaWVuY2U6IFdlYlNvY2tldEF1ZGllbmNlKSA9PiBzdHJpbmdbXTtcbiAgICAgIGF1ZGllbmNlUmVzb2x2ZXI6IFdlYlNvY2tldEF1ZGllbmNlUmVzb2x2ZXI7XG4gICAgICBjbHVzdGVyQnVzOiBXZWJTb2NrZXRDbHVzdGVyQnVzO1xuICAgICAgdGVsZW1ldHJ5Q29udHJvbGxlcj86IFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXI7XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy50ZWxlbWV0cnkgPSB0aGlzLm9wdGlvbnMudGVsZW1ldHJ5Q29udHJvbGxlciA/PyBuZXcgTm9vcFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXIoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy51bnJlZ2lzdGVyTWV0cmljU291cmNlID0gdGhpcy50ZWxlbWV0cnkucmVnaXN0ZXJNZXRyaWNTb3VyY2Uoe1xuICAgICAgY29sbGVjdDogKCkgPT4gdGhpcy5nZXRUZWxlbWV0cnlTbmFwc2hvdCgpLFxuICAgIH0pO1xuICB9XG5cbiAgcmVnaXN0ZXJSb3V0ZShyb3V0ZUtleTogc3RyaW5nLCBvdXRFdmVudHM6IHouWm9kT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXMuc2V0KHJvdXRlS2V5LCBvdXRFdmVudHMpO1xuICB9XG5cbiAgcmVwbGFjZVJvdXRlcyhyb3V0ZXM6IFdlYlNvY2tldFJvdXRlRGVmaW5pdGlvbltdKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZXMuY2xlYXIoKTtcbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgdGhpcy5yb3V0ZXMuc2V0KHJvdXRlLnJvdXRlS2V5LCByb3V0ZS5vdXRFdmVudHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDrsJztlokg64W465Oc7JeQ7IScIHJvdXRl67OE66GcIO2VnCDrsogg6rKA7KadwrfsnbjsvZTrlKntlZjqs6AsIOuhnOy7rCBmYW4tb3V07J2AIOymieyLnCDtgZDsl5Ag64Sj64qU64ukLlxuICAgKiDsm5Dqsqkg65287Jqw7YyF6rO8IGNsdXN0ZXIgcHVibGlzaOuKlCDrhbjrk5wg64uo7JyEIOyngeugrCDtgZDsl5DshJwg7LKY66as7ZWc64ukLiDrsJjtmZjtlZwgcHJvbWlzZeuKlCByZWplY3TtlZjsp4Ag7JWK64qU64ukLlxuICAgKi9cbiAgcHVibGlzaFRvQXVkaWVuY2U8RGF0YT4oYXVkaWVuY2U6IFdlYlNvY2tldEF1ZGllbmNlLCBldmVudDogc3RyaW5nLCBkYXRhOiBEYXRhKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBkZWNsYXJlZCA9IGZhbHNlO1xuICAgICAgbGV0IHJlamVjdGVkID0gZmFsc2U7XG4gICAgICBjb25zdCByZWNvcmQgPSAoZW5jb2Rpbmc6IFdlYlNvY2tldEZyYW1lRW5jb2RpbmcpID0+IHtcbiAgICAgICAgaWYgKGVuY29kaW5nLnN0YXR1cyAhPT0gXCJ1bmtub3duRXZlbnRcIikge1xuICAgICAgICAgIGRlY2xhcmVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5jb2Rpbmcuc3RhdHVzID09PSBcImludmFsaWRQYXlsb2FkXCIpIHtcbiAgICAgICAgICByZWplY3RlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8vIOydtOuypO2KuOulvCDshKDslrjtlZwgcm91dGXrp4jri6Qg7ZWcIOuyiOunjCDqsoDspp3Ct+yduOy9lOuUqe2VnOuLpC4g7JuQ6rKpIOyImOyLoOyekOuPhCDsnbQgZnJhbWXsnYQg6re464yA66GcIOuwm+uKlOuLpFxuICAgICAgY29uc3Qgcm91dGVGcmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW3JvdXRlS2V5LCBvdXRFdmVudHNdIG9mIHRoaXMucm91dGVzKSB7XG4gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZW5jb2RlV2ViU29ja2V0RnJhbWUob3V0RXZlbnRzLCBldmVudCwgZGF0YSk7XG4gICAgICAgIHJlY29yZChlbmNvZGluZyk7XG4gICAgICAgIGlmIChlbmNvZGluZy5zdGF0dXMgPT09IFwiZW5jb2RlZFwiKSB7XG4gICAgICAgICAgcm91dGVGcmFtZXNbcm91dGVLZXldID0gZW5jb2RpbmcuZnJhbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gcm91dGUgdGFibGXsl5Ag7JeG64qUIOuhnOy7rCDsl7DqsrDsnYAg7J6Q6riwIOyKpO2CpOuniOuhnCDsnbjsvZTrlKntlZzri6Qo7Iqk7YKk66eIIOqwneyytOuLuSDtlZwg67KIKVxuICAgICAgY29uc3QgZmFsbGJhY2tFbmNvZGluZ3MgPSBuZXcgTWFwPHouWm9kT2JqZWN0LCBXZWJTb2NrZXRGcmFtZUVuY29kaW5nPigpO1xuICAgICAgY29uc3QgbG9jYWxUYXJnZXRzOiBGYW5PdXRUYXJnZXRbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBjb25uZWN0aW9uIG9mIHRoaXMub3B0aW9ucy5sb2NhbENvbm5lY3Rpb25zLmdldENvbm5lY3Rpb25zKFxuICAgICAgICB0aGlzLm9wdGlvbnMucmVzb2x2ZUxvY2FsU2Vzc2lvbklkcyhhdWRpZW5jZSksXG4gICAgICApKSB7XG4gICAgICAgIGxldCBmcmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAoY29ubmVjdGlvbi5yb3V0ZUtleSAhPT0gdW5kZWZpbmVkICYmIHRoaXMucm91dGVzLmhhcyhjb25uZWN0aW9uLnJvdXRlS2V5KSkge1xuICAgICAgICAgIGZyYW1lID0gZ2V0T3duRnJhbWUocm91dGVGcmFtZXMsIGNvbm5lY3Rpb24ucm91dGVLZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBlbmNvZGluZyA9IGZhbGxiYWNrRW5jb2RpbmdzLmdldChjb25uZWN0aW9uLm91dEV2ZW50cyk7XG4gICAgICAgICAgaWYgKCFlbmNvZGluZykge1xuICAgICAgICAgICAgZW5jb2RpbmcgPSBlbmNvZGVXZWJTb2NrZXRGcmFtZShjb25uZWN0aW9uLm91dEV2ZW50cywgZXZlbnQsIGRhdGEpO1xuICAgICAgICAgICAgZmFsbGJhY2tFbmNvZGluZ3Muc2V0KGNvbm5lY3Rpb24ub3V0RXZlbnRzLCBlbmNvZGluZyk7XG4gICAgICAgICAgICByZWNvcmQoZW5jb2RpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmcmFtZSA9IGVuY29kaW5nLnN0YXR1cyA9PT0gXCJlbmNvZGVkXCIgPyBlbmNvZGluZy5mcmFtZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIOydtOuypO2KuOulvCDshKDslrjtlZjsp4Ag7JWK7JWY6rGw64KYIOqygOymneyXkCDsi6TtjKjtlZwgcm91dGXsnZgg7Jew6rKw7J2AIOuLq+yngCDslYrqs6Ag6rG064SI65u064ukXG4gICAgICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbG9jYWxUYXJnZXRzLnB1c2goeyBjb25uZWN0aW9uLCBmcmFtZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRlY2xhcmVkKSB7XG4gICAgICAgIHRoaXMuZW1pdFB1Ymxpc2hSZWplY3RlZChldmVudCwgXCJ1bmtub3duRXZlbnRcIik7XG4gICAgICB9IGVsc2UgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHRoaXMuZW1pdFB1Ymxpc2hSZWplY3RlZChldmVudCwgXCJpbnZhbGlkUGF5bG9hZFwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbnF1ZXVlRmFuT3V0KGxvY2FsVGFyZ2V0cywgZXZlbnQpO1xuXG4gICAgICBpZiAoT2JqZWN0LmtleXMocm91dGVGcmFtZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmVtaXRGYW5PdXRSZXNvbHZlZChhdWRpZW5jZSwgbG9jYWxUYXJnZXRzLmxlbmd0aCwgMCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH1cblxuICAgICAgLy8g7JuQ6rKpIOudvOyasO2MhShzdG9yZSDsobDtmowp7J2AIOyVnuyEoCBwdWJsaXNo66W8IOq4sOuLpOumrOyngCDslYrqs6Ag7KeA6riIIOuwlOuhnCDsi5zsnpHtlZzri6QuIHN0b3Jl6rCAIOupiOy2sOuPhCDrsoTsiqTtirgg67mE7Jqp7J20IE7Dl1TqsIAg7JWE64uMIOyVvSBU64ukLlxuICAgICAgLy8g67CY66m0IGVudmVsb3BlIOuwnO2WieydgCDrhbjrk5wg64uo7JyEIO2BkOyXkCDsnbTslrQg67aZ7JesIHB1Ymxpc2gg7Iic7ISc66W8IOyngO2CqOuLpC4g65KkIHB1Ymxpc2jsnZgg65287Jqw7YyF7J20IOuovOyggCDrgZ3rgpjrj4Qg7JWeIOuwnO2WieydhCDquLDri6TrprDri6RcbiAgICAgIGNvbnN0IHJvdXRpbmcgPSB0aGlzLnJlc29sdmVSZW1vdGVOb2RlSWRzKGF1ZGllbmNlLCBldmVudCk7XG4gICAgICBjb25zdCB0YXNrID0gdGhpcy5wdWJsaXNoUXVldWVcbiAgICAgICAgLnRoZW4oKCkgPT4gcm91dGluZylcbiAgICAgICAgLnRoZW4oKHJlbW90ZU5vZGVJZHMpID0+XG4gICAgICAgICAgdGhpcy5wdWJsaXNoUmVtb3RlKGF1ZGllbmNlLCBldmVudCwgcm91dGVGcmFtZXMsIGxvY2FsVGFyZ2V0cy5sZW5ndGgsIHJlbW90ZU5vZGVJZHMpLFxuICAgICAgICApXG4gICAgICAgIC5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICB0aGlzLmVtaXRSb3V0ZUZhaWxlZChldmVudCwgYXVkaWVuY2UsIGNhdXNlKTtcbiAgICAgICAgfSk7XG4gICAgICB0aGlzLnB1Ymxpc2hRdWV1ZSA9IHRhc2s7XG4gICAgICByZXR1cm4gdGFzaztcbiAgICB9IGNhdGNoIChjYXVzZSkge1xuICAgICAgLy8g7Iqk7YKk66eIIHRyYW5zZm9ybSDsmIjsmbgg65OxIOyYiOyDge2VmOyngCDrqrvtlZwg7Iuk7Yyo64+EIO2YuOy2nOyekOyXkOqyjCByZWplY3TroZwg7IOI7KeAIOyViuqyjCDtlZzri6RcbiAgICAgIHRoaXMuZW1pdFJvdXRlRmFpbGVkKGV2ZW50LCBhdWRpZW5jZSwgY2F1c2UpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIOynhO2WiSDspJHsnbggcHVibGlzaCjsm5Dqsqkg7Y+s7ZWoKeyZgCDqtazrj4Ug7Iuc64+E6rCAIOuqqOuRkCDrgZ3rgpjrqbQgcmVzb2x2Ze2VnOuLpFxuICBhc3luYyBkcmFpblB1Ymxpc2hlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbdGhpcy5wdWJsaXNoUXVldWUsIHRoaXMuc3Vic2NyaXB0aW9uXSk7XG4gIH1cblxuICAvKipcbiAgICog6rWs64+F7J2EIO2VtOygnO2VmOqzoCBjbHVzdGVyIGJ1c+ulvCDsooXro4ztlZzri6QuIOq1rOuPheydtCBkZWFkbGluZeq5jOyngCDrgZ3rgpjsp4Ag7JWK7Jy866m0IOuKpuqyjCDrgZ3rgqAg65WMIO2VtOygnO2VnOuLpC5cbiAgICovXG4gIGFzeW5jIHNodXRkb3duKGRlYWRsaW5lOiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcbiAgICB0aGlzLnVucmVnaXN0ZXJNZXRyaWNTb3VyY2UoKTtcblxuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFt0aGlzLnN1YnNjcmlwdGlvbiwgZGVhZGxpbmUudGhlbigoKSA9PiBudWxsKV0pO1xuICAgIGlmICh1bnN1YnNjcmliZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udGhlbigobGF0ZVVuc3Vic2NyaWJlKSA9PiB7XG4gICAgICAgIHRoaXMuc2FmZVVuc3Vic2NyaWJlKGxhdGVVbnN1YnNjcmliZSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYWZlVW5zdWJzY3JpYmUodW5zdWJzY3JpYmUpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMub3B0aW9ucy5jbHVzdGVyQnVzLnNodXRkb3duKCkpO1xuICAgIH0gY2F0Y2ggKGNhdXNlKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLnNodXRkb3duLmZhaWxlZFwiLFxuICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICBkZXRhaWw6IHsgZXJyb3JUeXBlOiBkZXNjcmliZUVycm9yKGNhdXNlKSB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5U25hcHNob3QoKSB7XG4gICAgbGV0IHBlbmRpbmdGYW5PdXRUYXJnZXRzID0gMDtcblxuICAgIGZvciAoY29uc3Qgam9iIG9mIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMpIHtcbiAgICAgIHBlbmRpbmdGYW5PdXRUYXJnZXRzICs9IE1hdGgubWF4KGpvYi50YXJnZXRzLmxlbmd0aCAtIGpvYi5jdXJzb3IsIDApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwZW5kaW5nRmFuT3V0Sm9iczogdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5sZW5ndGgsXG4gICAgICBwZW5kaW5nRmFuT3V0VGFyZ2V0cyxcbiAgICB9O1xuICB9XG5cbiAgLy8g6rWs64+FIOyLpO2MqOuKlCDroZzsu6wg7KCE7JqpIOuPmeyekeycvOuhnCDsiJjroLTsi5ztgqTqs6AgdGVsZW1ldHJ566eMIOuCqOq4tOuLpFxuICBwcml2YXRlIHN1YnNjcmliZSgpOiBQcm9taXNlPFVuc3Vic2NyaWJlIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAudGhlbigoKSA9PlxuICAgICAgICB0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5zdWJzY3JpYmUoKGVudmVsb3BlKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVDbHVzdGVyRW52ZWxvcGUoZW52ZWxvcGUpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC50aGVuKFxuICAgICAgICAodW5zdWJzY3JpYmUpID0+IHVuc3Vic2NyaWJlLFxuICAgICAgICAoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5zdWJzY3JpYmUuZmFpbGVkXCIsXG4gICAgICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICAgICAgZGV0YWlsOiB7IGVycm9yVHlwZTogZGVzY3JpYmVFcnJvcihjYXVzZSkgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2FmZVVuc3Vic2NyaWJlKHVuc3Vic2NyaWJlOiBVbnN1YnNjcmliZSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB1bnN1YnNjcmliZT8uKCk7XG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIudW5zdWJzY3JpYmUuZmFpbGVkXCIsXG4gICAgICAgIGxldmVsOiBcImVycm9yXCIsXG4gICAgICAgIGRldGFpbDogeyBlcnJvclR5cGU6IGRlc2NyaWJlRXJyb3IoY2F1c2UpIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyDrnbzsmrDtjIUg7Iuk7Yyo64qUIOyXrOq4sOyEnCB0ZWxlbWV0cnnroZwg67CU6r+UIHVuZGVmaW5lZOulvCDrj4zroKTspIDri6QuIOymieyLnCBjYXRjaOulvCDrtpnsnbTrr4DroZwg7YGQIOywqOuhgOulvCDquLDri6TrpqzripQg64+Z7JWI7JeQ64+EIHVuaGFuZGxlZCByZWplY3Rpb27snbQg7IOd6riw7KeAIOyViuuKlOuLpFxuICBwcml2YXRlIHJlc29sdmVSZW1vdGVOb2RlSWRzKFxuICAgIGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSxcbiAgICBldmVudDogc3RyaW5nLFxuICApOiBQcm9taXNlPHN0cmluZ1tdIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5hdWRpZW5jZVJlc29sdmVyLnJlc29sdmVSZW1vdGVOb2RlSWRzKGF1ZGllbmNlKS5jYXRjaCgoY2F1c2U6IHVua25vd24pID0+IHtcbiAgICAgIHRoaXMuZW1pdFJvdXRlRmFpbGVkKGV2ZW50LCBhdWRpZW5jZSwgY2F1c2UpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHVibGlzaFJlbW90ZShcbiAgICBhdWRpZW5jZTogV2ViU29ja2V0QXVkaWVuY2UsXG4gICAgZXZlbnQ6IHN0cmluZyxcbiAgICBmcmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgbG9jYWxUYXJnZXRDb3VudDogbnVtYmVyLFxuICAgIHJlc29sdmVkTm9kZUlkczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIOudvOyasO2MhSDsi6TtjKgodW5kZWZpbmVkKSDsi5wg66Gc7LusIOyghOuLrOydgCDsnbTrr7gg64Gd64Ks7Jy866+A66GcIOydtCBwdWJsaXNo7J2YIOybkOqyqSBlbnZlbG9wZeunjCDqsbTrhIjrm7Tri6RcbiAgICBjb25zdCByZW1vdGVOb2RlSWRzID0gcmVzb2x2ZWROb2RlSWRzID8/IFtdO1xuICAgIHRoaXMuZW1pdEZhbk91dFJlc29sdmVkKGF1ZGllbmNlLCBsb2NhbFRhcmdldENvdW50LCByZW1vdGVOb2RlSWRzLmxlbmd0aCk7XG4gICAgaWYgKHJlbW90ZU5vZGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW52ZWxvcGU6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZSA9IHtcbiAgICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgICBzb3VyY2VOb2RlSWQ6IHRoaXMub3B0aW9ucy5ub2RlSWQsXG4gICAgICB0YXJnZXROb2RlSWRzOiByZW1vdGVOb2RlSWRzLFxuICAgICAgYXVkaWVuY2UsXG4gICAgICBldmVudCxcbiAgICAgIGZyYW1lcyxcbiAgICAgIGVtaXR0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcHVibGlzaFN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMub3B0aW9ucy5jbHVzdGVyQnVzLnB1Ymxpc2goZW52ZWxvcGUpKTtcbiAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHB1Ymxpc2hTdGFydGVkQXQ7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnB1Ymxpc2hlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgZXZlbnQsIHRhcmdldE5vZGVDb3VudDogcmVtb3RlTm9kZUlkcy5sZW5ndGggfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5wdWJsaXNoXCIsXG4gICAgICAgIGtpbmQ6IFwicHJvZHVjZXJcIixcbiAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgc3RhdHVzOiBcInVuc2V0XCIsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICB0YXJnZXROb2RlQ291bnQ6IHJlbW90ZU5vZGVJZHMubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHB1Ymxpc2hTdGFydGVkQXQ7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmZhaWxlZFwiLFxuICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICBkZXRhaWw6IHsgZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5wdWJsaXNoXCIsXG4gICAgICAgIGtpbmQ6IFwicHJvZHVjZXJcIixcbiAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgZXZlbnQgfSxcbiAgICAgICAgZXJyb3JUeXBlOiBkZXNjcmliZUVycm9yKGNhdXNlKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIOyImOyLoCDrhbjrk5zripQgc3RvcmUg7JeG7J20IOyekOq4sCDrqZTrqqjrpqzroZwgYXVkaWVuY2Xrpbwg7ZW07ISd7ZWY6rOgLCDqsIEg7Jew6rKw7J2YIHJvdXRlIGZyYW1l7J2EIOyerOqygOymnSDsl4bsnbQg6re464yA66GcIOuztOuCuOuLpFxuICBwcml2YXRlIGhhbmRsZUNsdXN0ZXJFbnZlbG9wZShlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RvcHBlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbnZlbG9wZS5zb3VyY2VOb2RlSWQgPT09IHRoaXMub3B0aW9ucy5ub2RlSWQpIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIuZW52ZWxvcGUuaWdub3JlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgcmVhc29uOiBcInNlbGZTb3VyY2VcIiwgZXZlbnQ6IGVudmVsb3BlLmV2ZW50IH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBlbnZlbG9wZS50YXJnZXROb2RlSWRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICFlbnZlbG9wZS50YXJnZXROb2RlSWRzLmluY2x1ZGVzKHRoaXMub3B0aW9ucy5ub2RlSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmlnbm9yZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgZGV0YWlsOiB7IHJlYXNvbjogXCJ0YXJnZXRNaXNtYXRjaFwiLCBldmVudDogZW52ZWxvcGUuZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnJlY2VpdmVkXCIsXG4gICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgZGV0YWlsOiB7IGV2ZW50OiBlbnZlbG9wZS5ldmVudCwgc291cmNlTm9kZUlkOiBlbnZlbG9wZS5zb3VyY2VOb2RlSWQgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGxvY2FsVGFyZ2V0czogRmFuT3V0VGFyZ2V0W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgdGhpcy5vcHRpb25zLmxvY2FsQ29ubmVjdGlvbnMuZ2V0Q29ubmVjdGlvbnMoXG4gICAgICB0aGlzLm9wdGlvbnMucmVzb2x2ZUxvY2FsU2Vzc2lvbklkcyhlbnZlbG9wZS5hdWRpZW5jZSksXG4gICAgKSkge1xuICAgICAgY29uc3QgZnJhbWUgPVxuICAgICAgICBjb25uZWN0aW9uLnJvdXRlS2V5ID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogZ2V0T3duRnJhbWUoZW52ZWxvcGUuZnJhbWVzLCBjb25uZWN0aW9uLnJvdXRlS2V5KTtcbiAgICAgIGlmIChmcmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxvY2FsVGFyZ2V0cy5wdXNoKHsgY29ubmVjdGlvbiwgZnJhbWUgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZW5xdWV1ZUZhbk91dChsb2NhbFRhcmdldHMsIGVudmVsb3BlLmV2ZW50KTtcblxuICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZFNwYW4oe1xuICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5jbHVzdGVyLnJlY2VpdmVcIixcbiAgICAgIGtpbmQ6IFwiY29uc3VtZXJcIixcbiAgICAgIGR1cmF0aW9uTXM6IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRlZEF0LFxuICAgICAgc3RhdHVzOiBcInVuc2V0XCIsXG4gICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgIGV2ZW50OiBlbnZlbG9wZS5ldmVudCxcbiAgICAgICAgc291cmNlTm9kZUlkOiBlbnZlbG9wZS5zb3VyY2VOb2RlSWQsXG4gICAgICAgIGxvY2FsVGFyZ2V0Q291bnQ6IGxvY2FsVGFyZ2V0cy5sZW5ndGgsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UHVibGlzaFJlamVjdGVkKGV2ZW50OiBzdHJpbmcsIHJlYXNvbjogXCJ1bmtub3duRXZlbnRcIiB8IFwiaW52YWxpZFBheWxvYWRcIik6IHZvaWQge1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5wdWJsaXNoLnJlamVjdGVkXCIsXG4gICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgZGV0YWlsOiB7IGV2ZW50LCByZWFzb24gfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdFJvdXRlRmFpbGVkKGV2ZW50OiBzdHJpbmcsIGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgY2F1c2U6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgIG5hbWU6IFwid3MuZmFub3V0LnJvdXRlLmZhaWxlZFwiLFxuICAgICAgbGV2ZWw6IFwiZXJyb3JcIixcbiAgICAgIGRldGFpbDogeyBldmVudCwgYXVkaWVuY2VUeXBlOiBhdWRpZW5jZS50eXBlLCBlcnJvclR5cGU6IGRlc2NyaWJlRXJyb3IoY2F1c2UpIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRGYW5PdXRSZXNvbHZlZChcbiAgICBhdWRpZW5jZTogV2ViU29ja2V0QXVkaWVuY2UsXG4gICAgbG9jYWxUYXJnZXRDb3VudDogbnVtYmVyLFxuICAgIHJlbW90ZU5vZGVDb3VudDogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgIG5hbWU6IFwid3MuZmFub3V0LnJlc29sdmVkXCIsXG4gICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgZGV0YWlsOiB7IGxvY2FsVGFyZ2V0Q291bnQsIHJlbW90ZU5vZGVDb3VudCB9LFxuICAgIH0pO1xuICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZE1ldHJpYyh7XG4gICAgICBuYW1lOiBcInNvbmFtdS53cy5mYW5vdXQudGFyZ2V0c1wiLFxuICAgICAga2luZDogXCJoaXN0b2dyYW1cIixcbiAgICAgIHZhbHVlOiBsb2NhbFRhcmdldENvdW50ICsgcmVtb3RlTm9kZUNvdW50LFxuICAgICAgdW5pdDogXCIxXCIsXG4gICAgICB0YWdzOiB7IGF1ZGllbmNlX3R5cGU6IGF1ZGllbmNlLnR5cGUgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW5xdWV1ZUZhbk91dCh0YXJnZXRzOiBGYW5PdXRUYXJnZXRbXSwgZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0YXJnZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMucHVzaCh7XG4gICAgICB0YXJnZXRzLFxuICAgICAgZXZlbnQsXG4gICAgICBjdXJzb3I6IDAsXG4gICAgfSk7XG4gICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICBuYW1lOiBcIndzLmZhbm91dC5lbnF1ZXVlZFwiLFxuICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgIGRldGFpbDogeyB0YXJnZXRDb3VudDogdGFyZ2V0cy5sZW5ndGgsIGV2ZW50IH0sXG4gICAgfSk7XG4gICAgdGhpcy5zY2hlZHVsZUZhbk91dEZsdXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlRmFuT3V0Rmx1c2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmFuT3V0Rmx1c2hTY2hlZHVsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZhbk91dEZsdXNoU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgdGhpcy5mYW5PdXRGbHVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5mbHVzaEZhbk91dEpvYnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmx1c2hGYW5PdXRKb2JzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuICAgIGxldCBzdGF0dXM6IFwidW5zZXRcIiB8IFwiZXJyb3JcIiA9IFwidW5zZXRcIjtcbiAgICBsZXQgZXJyb3JUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoID4gMCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgY29uc3Qgam9iID0gdGhpcy5wZW5kaW5nRmFuT3V0Sm9ic1swXTtcblxuICAgICAgICB3aGlsZSAoam9iLmN1cnNvciA8IGpvYi50YXJnZXRzLmxlbmd0aCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgICB0aGlzLnNhZmVTZW5kKGpvYi50YXJnZXRzW2pvYi5jdXJzb3JdLCBqb2IuZXZlbnQpO1xuICAgICAgICAgIGpvYi5jdXJzb3IgKz0gMTtcbiAgICAgICAgICBwcm9jZXNzZWQgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChqb2IuY3Vyc29yID49IGpvYi50YXJnZXRzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzdGF0dXMgPSBcImVycm9yXCI7XG4gICAgICBlcnJvclR5cGUgPSBkZXNjcmliZUVycm9yKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBkdXJhdGlvbk1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydGVkQXQ7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5mYW5vdXQuZmx1c2hlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZCB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5mYW5vdXQuZGlzcGF0Y2hcIixcbiAgICAgICAga2luZDogXCJpbnRlcm5hbFwiLFxuICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZCB9LFxuICAgICAgICBlcnJvclR5cGUsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlRmFuT3V0Rmx1c2goKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhZmVTZW5kKHRhcmdldDogRmFuT3V0VGFyZ2V0LCBldmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb25uZWN0aW9uLCBmcmFtZSB9ID0gdGFyZ2V0O1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWNvbm5lY3Rpb24uY2xvc2VkKSB7XG4gICAgICAgIGNvbm5lY3Rpb24uc2VuZEZyYW1lKGV2ZW50LCBmcmFtZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5mYW5vdXQucHVibGlzaC5mYWlsZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZXJyb3JcIixcbiAgICAgICAgY29ubmVjdGlvbklkOiBjb25uZWN0aW9uLmlkLFxuICAgICAgICBuYW1lc3BhY2U6IGNvbm5lY3Rpb24ubmFtZXNwYWNlLFxuICAgICAgICB1c2VySWQ6IGNvbm5lY3Rpb24udXNlcklkLFxuICAgICAgICBkZXRhaWw6IHsgZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgY29ubmVjdGlvbi5jbG9zZSgxMDExLCBcIldlYlNvY2tldCBwdWJsaXNoIGZhaWxlZFwiKTtcbiAgICB9XG4gIH1cbn1cblxuLy8g7JuQ6rKp7JeQ7IScIOyYqCBmcmFtZXPripQgcHJvdG90eXBlIO2CpOulvCDrrLTsi5ztlZjqs6Ag7J6Q6riwIOyGjeyEseunjCDsnb3ripTri6RcbmZ1bmN0aW9uIGdldE93bkZyYW1lKGZyYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiwgcm91dGVLZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBPYmplY3QuaGFzT3duKGZyYW1lcywgcm91dGVLZXkpID8gZnJhbWVzW3JvdXRlS2V5XSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVFcnJvcihjYXVzZTogdW5rbm93bik6IHN0cmluZyB7XG4gIHJldHVybiBjYXVzZSBpbnN0YW5jZW9mIEVycm9yID8gY2F1c2UubmFtZSA6IHJ1bnRpbWVUeXBlT2YoY2F1c2UpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUEwZkEsU0FBUyxZQUFZLFFBQWdDLFVBQXNDO0NBQ3pGLE9BQU8sT0FBTyxPQUFPLFFBQVEsUUFBUSxJQUFJLE9BQU8sWUFBWTtBQUM5RDtBQUVBLFNBQVMsY0FBYyxPQUF3QjtDQUM3QyxPQUFPLGlCQUFpQixRQUFRLE1BQU0sT0FBTyxjQUFjLEtBQUs7QUFDbEU7OztDQTVmK0Msa0JBQUE7Q0FLK0IsY0FBQTtDQUt2RCxrQkFBQTtDQUdqQixxQkFBcUI7Q0FvQmQsMEJBQWIsTUFBcUM7RUFhaEI7RUFabkIsb0JBQWtELENBQUM7RUFDbkQsdUJBQStCO0VBRS9CLHlCQUEwQixJQUFJLElBQXlCO0VBRXZELGVBQXNDLFFBQVEsUUFBUTtFQUN0RDtFQUNBLFVBQWtCO0VBQ2xCO0VBQ0E7RUFFQSxZQUNFLFNBU0E7R0FUaUIsS0FBQSxVQUFBO0dBVWpCLEtBQUssWUFBWSxLQUFLLFFBQVEsdUJBQXVCLElBQUksaUNBQWlDO0dBQzFGLEtBQUssZUFBZSxLQUFLLFVBQVU7R0FDbkMsS0FBSyx5QkFBeUIsS0FBSyxVQUFVLHFCQUFxQixFQUNoRSxlQUFlLEtBQUsscUJBQXFCLEVBQzNDLENBQUM7RUFDSDtFQUVBLGNBQWMsVUFBa0IsV0FBOEI7R0FDNUQsS0FBSyxPQUFPLElBQUksVUFBVSxTQUFTO0VBQ3JDO0VBRUEsY0FBYyxRQUEwQztHQUN0RCxLQUFLLE9BQU8sTUFBTTtHQUNsQixLQUFLLE1BQU0sU0FBUyxRQUNsQixLQUFLLE9BQU8sSUFBSSxNQUFNLFVBQVUsTUFBTSxTQUFTO0VBRW5EOzs7OztFQU1BLGtCQUF3QixVQUE2QixPQUFlLE1BQTJCO0dBQzdGLElBQUk7SUFDRixJQUFJLFdBQVc7SUFDZixJQUFJLFdBQVc7SUFDZixNQUFNLFVBQVUsYUFBcUM7S0FDbkQsSUFBSSxTQUFTLFdBQVcsZ0JBQ3RCLFdBQVc7S0FFYixJQUFJLFNBQVMsV0FBVyxrQkFDdEIsV0FBVztJQUVmO0lBR0EsTUFBTSxjQUFzQyxDQUFDO0lBQzdDLEtBQUssTUFBTSxDQUFDLFVBQVUsY0FBYyxLQUFLLFFBQVE7S0FDL0MsTUFBTSxXQUFXLHFCQUFxQixXQUFXLE9BQU8sSUFBSTtLQUM1RCxPQUFPLFFBQVE7S0FDZixJQUFJLFNBQVMsV0FBVyxXQUN0QixZQUFZLFlBQVksU0FBUztJQUVyQztJQUdBLE1BQU0sb0NBQW9CLElBQUksSUFBeUM7SUFDdkUsTUFBTSxlQUErQixDQUFDO0lBQ3RDLEtBQUssTUFBTSxjQUFjLEtBQUssUUFBUSxpQkFBaUIsZUFDckQsS0FBSyxRQUFRLHVCQUF1QixRQUFRLENBQzlDLEdBQUc7S0FDRCxJQUFJO0tBQ0osSUFBSSxXQUFXLGFBQWEsVUFBYSxLQUFLLE9BQU8sSUFBSSxXQUFXLFFBQVEsR0FDMUUsUUFBUSxZQUFZLGFBQWEsV0FBVyxRQUFRO1VBQy9DO01BQ0wsSUFBSSxXQUFXLGtCQUFrQixJQUFJLFdBQVcsU0FBUztNQUN6RCxJQUFJLENBQUMsVUFBVTtPQUNiLFdBQVcscUJBQXFCLFdBQVcsV0FBVyxPQUFPLElBQUk7T0FDakUsa0JBQWtCLElBQUksV0FBVyxXQUFXLFFBQVE7T0FDcEQsT0FBTyxRQUFRO01BQ2pCO01BQ0EsUUFBUSxTQUFTLFdBQVcsWUFBWSxTQUFTLFFBQVE7S0FDM0Q7S0FHQSxJQUFJLFVBQVUsUUFDWixhQUFhLEtBQUs7TUFBRTtNQUFZO0tBQU0sQ0FBQztJQUUzQztJQUVBLElBQUksQ0FBQyxVQUNILEtBQUssb0JBQW9CLE9BQU8sY0FBYztTQUN6QyxJQUFJLFVBQ1QsS0FBSyxvQkFBb0IsT0FBTyxnQkFBZ0I7SUFHbEQsS0FBSyxjQUFjLGNBQWMsS0FBSztJQUV0QyxJQUFJLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxXQUFXLEdBQUc7S0FDekMsS0FBSyxtQkFBbUIsVUFBVSxhQUFhLFFBQVEsQ0FBQztLQUN4RCxPQUFPLFFBQVEsUUFBUTtJQUN6QjtJQUlBLE1BQU0sVUFBVSxLQUFLLHFCQUFxQixVQUFVLEtBQUs7SUFDekQsTUFBTSxPQUFPLEtBQUssYUFDZixXQUFXLE9BQU8sQ0FBQyxDQUNuQixNQUFNLGtCQUNMLEtBQUssY0FBYyxVQUFVLE9BQU8sYUFBYSxhQUFhLFFBQVEsYUFBYSxDQUNyRixDQUFDLENBQ0EsT0FBTyxVQUFtQjtLQUN6QixLQUFLLGdCQUFnQixPQUFPLFVBQVUsS0FBSztJQUM3QyxDQUFDO0lBQ0gsS0FBSyxlQUFlO0lBQ3BCLE9BQU87R0FDVCxTQUFTLE9BQU87SUFFZCxLQUFLLGdCQUFnQixPQUFPLFVBQVUsS0FBSztJQUMzQyxPQUFPLFFBQVEsUUFBUTtHQUN6QjtFQUNGO0VBR0EsTUFBTSxpQkFBZ0M7R0FDcEMsTUFBTSxRQUFRLElBQUksQ0FBQyxLQUFLLGNBQWMsS0FBSyxZQUFZLENBQUM7RUFDMUQ7Ozs7RUFLQSxNQUFNLFNBQVMsVUFBd0M7R0FDckQsS0FBSyxVQUFVO0dBQ2YsS0FBSyx1QkFBdUI7R0FFNUIsTUFBTSxjQUFjLE1BQU0sUUFBUSxLQUFLLENBQUMsS0FBSyxjQUFjLFNBQVMsV0FBVyxJQUFJLENBQUMsQ0FBQztHQUNyRixJQUFJLGdCQUFnQixNQUNsQixLQUFLLGFBQWEsTUFBTSxvQkFBb0I7SUFDMUMsS0FBSyxnQkFBZ0IsZUFBZTtHQUN0QyxDQUFDO1FBRUQsS0FBSyxnQkFBZ0IsV0FBVztHQUdsQyxJQUFJO0lBQ0YsTUFBTSxRQUFRLFFBQVEsQ0FBQyxDQUFDLFdBQVcsS0FBSyxRQUFRLFdBQVcsU0FBUyxDQUFDO0dBQ3ZFLFNBQVMsT0FBTztJQUNkLEtBQUssVUFBVSxLQUFLO0tBQ2xCLE1BQU07S0FDTixPQUFPO0tBQ1AsUUFBUSxFQUFFLFdBQVcsY0FBYyxLQUFLLEVBQUU7SUFDNUMsQ0FBQztHQUNIO0VBQ0Y7RUFFQSx1QkFBdUI7R0FDckIsSUFBSSx1QkFBdUI7R0FFM0IsS0FBSyxNQUFNLE9BQU8sS0FBSyxtQkFDckIsd0JBQXdCLEtBQUssSUFBSSxJQUFJLFFBQVEsU0FBUyxJQUFJLFFBQVEsQ0FBQztHQUdyRSxPQUFPO0lBQ0wsbUJBQW1CLEtBQUssa0JBQWtCO0lBQzFDO0dBQ0Y7RUFDRjtFQUdBLFlBQXNEO0dBQ3BELE9BQU8sUUFBUSxRQUFRLENBQUMsQ0FDckIsV0FDQyxLQUFLLFFBQVEsV0FBVyxXQUFXLGFBQWE7SUFDOUMsS0FBSyxzQkFBc0IsUUFBUTtHQUNyQyxDQUFDLENBQ0gsQ0FBQyxDQUNBLE1BQ0UsZ0JBQWdCLGNBQ2hCLFVBQW1CO0lBQ2xCLEtBQUssVUFBVSxLQUFLO0tBQ2xCLE1BQU07S0FDTixPQUFPO0tBQ1AsUUFBUSxFQUFFLFdBQVcsY0FBYyxLQUFLLEVBQUU7SUFDNUMsQ0FBQztHQUVILENBQ0Y7RUFDSjtFQUVBLGdCQUF3QixhQUE0QztHQUNsRSxJQUFJO0lBQ0YsY0FBYztHQUNoQixTQUFTLE9BQU87SUFDZCxLQUFLLFVBQVUsS0FBSztLQUNsQixNQUFNO0tBQ04sT0FBTztLQUNQLFFBQVEsRUFBRSxXQUFXLGNBQWMsS0FBSyxFQUFFO0lBQzVDLENBQUM7R0FDSDtFQUNGO0VBR0EscUJBQ0UsVUFDQSxPQUMrQjtHQUMvQixPQUFPLEtBQUssUUFBUSxpQkFBaUIscUJBQXFCLFFBQVEsQ0FBQyxDQUFDLE9BQU8sVUFBbUI7SUFDNUYsS0FBSyxnQkFBZ0IsT0FBTyxVQUFVLEtBQUs7R0FFN0MsQ0FBQztFQUNIO0VBRUEsTUFBYyxjQUNaLFVBQ0EsT0FDQSxRQUNBLGtCQUNBLGlCQUNlO0dBRWYsTUFBTSxnQkFBZ0IsbUJBQW1CLENBQUM7R0FDMUMsS0FBSyxtQkFBbUIsVUFBVSxrQkFBa0IsY0FBYyxNQUFNO0dBQ3hFLElBQUksY0FBYyxXQUFXLEdBQzNCO0dBR0YsTUFBTSxXQUFxQztJQUN6QyxJQUFJLFdBQVc7SUFDZixjQUFjLEtBQUssUUFBUTtJQUMzQixlQUFlO0lBQ2Y7SUFDQTtJQUNBO0lBQ0EsV0FBVyxLQUFLLElBQUk7R0FDdEI7R0FFQSxNQUFNLG1CQUFtQixZQUFZLElBQUk7R0FDekMsSUFBSTtJQUNGLE1BQU0sUUFBUSxRQUFRLENBQUMsQ0FBQyxXQUFXLEtBQUssUUFBUSxXQUFXLFFBQVEsUUFBUSxDQUFDO0lBQzVFLE1BQU0sYUFBYSxZQUFZLElBQUksSUFBSTtJQUN2QyxLQUFLLFVBQVUsS0FBSztLQUNsQixNQUFNO0tBQ04sT0FBTztLQUNQLFFBQVE7TUFBRTtNQUFPLGlCQUFpQixjQUFjO0tBQU87SUFDekQsQ0FBQztJQUNELEtBQUssVUFBVSxXQUFXO0tBQ3hCLGVBQWU7S0FDZixNQUFNO0tBQ047S0FDQSxRQUFRO0tBQ1IsWUFBWTtNQUNWO01BQ0EsaUJBQWlCLGNBQWM7S0FDakM7SUFDRixDQUFDO0dBQ0gsU0FBUyxPQUFPO0lBQ2QsTUFBTSxhQUFhLFlBQVksSUFBSSxJQUFJO0lBQ3ZDLEtBQUssVUFBVSxLQUFLO0tBQ2xCLE1BQU07S0FDTixPQUFPO0tBQ1AsUUFBUSxFQUFFLE1BQU07SUFDbEIsQ0FBQztJQUNELEtBQUssVUFBVSxXQUFXO0tBQ3hCLGVBQWU7S0FDZixNQUFNO0tBQ047S0FDQSxRQUFRO0tBQ1IsWUFBWSxFQUFFLE1BQU07S0FDcEIsV0FBVyxjQUFjLEtBQUs7SUFDaEMsQ0FBQztHQUNIO0VBQ0Y7RUFHQSxzQkFBOEIsVUFBMEM7R0FDdEUsSUFBSSxLQUFLLFNBQ1A7R0FHRixJQUFJLFNBQVMsaUJBQWlCLEtBQUssUUFBUSxRQUFRO0lBQ2pELEtBQUssVUFBVSxLQUFLO0tBQ2xCLE1BQU07S0FDTixPQUFPO0tBQ1AsUUFBUTtNQUFFLFFBQVE7TUFBYyxPQUFPLFNBQVM7S0FBTTtJQUN4RCxDQUFDO0lBQ0Q7R0FDRjtHQUVBLElBQ0UsU0FBUyxjQUFjLFNBQVMsS0FDaEMsQ0FBQyxTQUFTLGNBQWMsU0FBUyxLQUFLLFFBQVEsTUFBTSxHQUNwRDtJQUNBLEtBQUssVUFBVSxLQUFLO0tBQ2xCLE1BQU07S0FDTixPQUFPO0tBQ1AsUUFBUTtNQUFFLFFBQVE7TUFBa0IsT0FBTyxTQUFTO0tBQU07SUFDNUQsQ0FBQztJQUNEO0dBQ0Y7R0FFQSxNQUFNLFlBQVksWUFBWSxJQUFJO0dBQ2xDLEtBQUssVUFBVSxLQUFLO0lBQ2xCLE1BQU07SUFDTixPQUFPO0lBQ1AsUUFBUTtLQUFFLE9BQU8sU0FBUztLQUFPLGNBQWMsU0FBUztJQUFhO0dBQ3ZFLENBQUM7R0FFRCxNQUFNLGVBQStCLENBQUM7R0FDdEMsS0FBSyxNQUFNLGNBQWMsS0FBSyxRQUFRLGlCQUFpQixlQUNyRCxLQUFLLFFBQVEsdUJBQXVCLFNBQVMsUUFBUSxDQUN2RCxHQUFHO0lBQ0QsTUFBTSxRQUNKLFdBQVcsYUFBYSxTQUNwQixTQUNBLFlBQVksU0FBUyxRQUFRLFdBQVcsUUFBUTtJQUN0RCxJQUFJLFVBQVUsUUFDWixhQUFhLEtBQUs7S0FBRTtLQUFZO0lBQU0sQ0FBQztHQUUzQztHQUNBLEtBQUssY0FBYyxjQUFjLFNBQVMsS0FBSztHQUUvQyxLQUFLLFVBQVUsV0FBVztJQUN4QixlQUFlO0lBQ2YsTUFBTTtJQUNOLFlBQVksWUFBWSxJQUFJLElBQUk7SUFDaEMsUUFBUTtJQUNSLFlBQVk7S0FDVixPQUFPLFNBQVM7S0FDaEIsY0FBYyxTQUFTO0tBQ3ZCLGtCQUFrQixhQUFhO0lBQ2pDO0dBQ0YsQ0FBQztFQUNIO0VBRUEsb0JBQTRCLE9BQWUsUUFBaUQ7R0FDMUYsS0FBSyxVQUFVLEtBQUs7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0tBQUU7S0FBTztJQUFPO0dBQzFCLENBQUM7RUFDSDtFQUVBLGdCQUF3QixPQUFlLFVBQTZCLE9BQXNCO0dBQ3hGLEtBQUssVUFBVSxLQUFLO0lBQ2xCLE1BQU07SUFDTixPQUFPO0lBQ1AsUUFBUTtLQUFFO0tBQU8sY0FBYyxTQUFTO0tBQU0sV0FBVyxjQUFjLEtBQUs7SUFBRTtHQUNoRixDQUFDO0VBQ0g7RUFFQSxtQkFDRSxVQUNBLGtCQUNBLGlCQUNNO0dBQ04sS0FBSyxVQUFVLEtBQUs7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0tBQUU7S0FBa0I7SUFBZ0I7R0FDOUMsQ0FBQztHQUNELEtBQUssVUFBVSxhQUFhO0lBQzFCLE1BQU07SUFDTixNQUFNO0lBQ04sT0FBTyxtQkFBbUI7SUFDMUIsTUFBTTtJQUNOLE1BQU0sRUFBRSxlQUFlLFNBQVMsS0FBSztHQUN2QyxDQUFDO0VBQ0g7RUFFQSxjQUFzQixTQUF5QixPQUFxQjtHQUNsRSxJQUFJLFFBQVEsV0FBVyxHQUNyQjtHQUdGLEtBQUssa0JBQWtCLEtBQUs7SUFDMUI7SUFDQTtJQUNBLFFBQVE7R0FDVixDQUFDO0dBQ0QsS0FBSyxVQUFVLEtBQUs7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0tBQUUsYUFBYSxRQUFRO0tBQVE7SUFBTTtHQUMvQyxDQUFDO0dBQ0QsS0FBSyxvQkFBb0I7RUFDM0I7RUFFQSxzQkFBb0M7R0FDbEMsSUFBSSxLQUFLLHNCQUNQO0dBR0YsS0FBSyx1QkFBdUI7R0FDNUIsbUJBQW1CO0lBQ2pCLEtBQUssdUJBQXVCO0lBQzVCLEtBQUssZ0JBQWdCO0dBQ3ZCLENBQUM7RUFDSDtFQUVBLGtCQUFnQztHQUM5QixNQUFNLFlBQVksWUFBWSxJQUFJO0dBQ2xDLElBQUksWUFBWTtHQUNoQixJQUFJLFNBQTRCO0dBQ2hDLElBQUk7R0FFSixJQUFJO0lBQ0YsT0FBTyxLQUFLLGtCQUFrQixTQUFTLEtBQUssWUFBWSxvQkFBb0I7S0FDMUUsTUFBTSxNQUFNLEtBQUssa0JBQWtCO0tBRW5DLE9BQU8sSUFBSSxTQUFTLElBQUksUUFBUSxVQUFVLFlBQVksb0JBQW9CO01BQ3hFLEtBQUssU0FBUyxJQUFJLFFBQVEsSUFBSSxTQUFTLElBQUksS0FBSztNQUNoRCxJQUFJLFVBQVU7TUFDZCxhQUFhO0tBQ2Y7S0FFQSxJQUFJLElBQUksVUFBVSxJQUFJLFFBQVEsUUFDNUIsS0FBSyxrQkFBa0IsTUFBTTtJQUVqQztHQUNGLFNBQVMsT0FBTztJQUNkLFNBQVM7SUFDVCxZQUFZLGNBQWMsS0FBSztJQUMvQixNQUFNO0dBQ1IsVUFBVTtJQUNSLE1BQU0sYUFBYSxZQUFZLElBQUksSUFBSTtJQUN2QyxLQUFLLFVBQVUsS0FBSztLQUNsQixNQUFNO0tBQ04sT0FBTztLQUNQLFFBQVEsRUFBRSxnQkFBZ0IsVUFBVTtJQUN0QyxDQUFDO0lBQ0QsS0FBSyxVQUFVLFdBQVc7S0FDeEIsZUFBZTtLQUNmLE1BQU07S0FDTjtLQUNBO0tBQ0EsWUFBWSxFQUFFLGdCQUFnQixVQUFVO0tBQ3hDO0lBQ0YsQ0FBQztJQUVELElBQUksS0FBSyxrQkFBa0IsU0FBUyxHQUNsQyxLQUFLLG9CQUFvQjtHQUU3QjtFQUNGO0VBRUEsU0FBaUIsUUFBc0IsT0FBcUI7R0FDMUQsTUFBTSxFQUFFLFlBQVksVUFBVTtHQUM5QixJQUFJO0lBQ0YsSUFBSSxDQUFDLFdBQVcsUUFDZCxXQUFXLFVBQVUsT0FBTyxLQUFLO0dBRXJDLFFBQVE7SUFDTixLQUFLLFVBQVUsS0FBSztLQUNsQixNQUFNO0tBQ04sT0FBTztLQUNQLGNBQWMsV0FBVztLQUN6QixXQUFXLFdBQVc7S0FDdEIsUUFBUSxXQUFXO0tBQ25CLFFBQVEsRUFBRSxNQUFNO0lBQ2xCLENBQUM7SUFDRCxXQUFXLE1BQU0sTUFBTSwwQkFBMEI7R0FDbkQ7RUFDRjtDQUNGIn0=
|
package/dist/stream/ws-frame.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/stream/ws-frame.ts
|
|
3
3
|
/**
|
|
4
4
|
* outEvents 스키마로 payload를 검증하고 `{event, data}` frame 문자열로 인코딩한다.
|
|
5
5
|
* 같은 스키마로 인코딩한 frame은 로컬·원격 수신자 모두에게 같은 바이트로 전달된다.
|
|
@@ -22,7 +22,6 @@ function getEventSchema(outEvents, event) {
|
|
|
22
22
|
return Object.hasOwn(eventSchemas, event) ? eventSchemas[event] : void 0;
|
|
23
23
|
}
|
|
24
24
|
var init_ws_frame = __esmMin((() => {}));
|
|
25
|
-
//#endregion
|
|
26
25
|
init_ws_frame();
|
|
27
26
|
export { encodeWebSocketFrame, init_ws_frame };
|
|
28
27
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_runtime_value, isFunctionValue } from "../utils/runtime-value.js";
|
|
3
|
-
|
|
3
|
+
// src/stream/ws-local-connection-store.ts
|
|
4
4
|
function isTelemetryInspectableConnection(connection) {
|
|
5
5
|
return "getTelemetrySnapshot" in connection && isFunctionValue(connection.getTelemetrySnapshot);
|
|
6
6
|
}
|
|
@@ -50,8 +50,7 @@ var init_ws_local_connection_store = __esmMin((() => {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
}));
|
|
53
|
-
//#endregion
|
|
54
53
|
init_ws_local_connection_store();
|
|
55
54
|
export { WebSocketLocalConnectionStore, init_ws_local_connection_store };
|
|
56
55
|
|
|
57
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtbG9jYWwtY29ubmVjdGlvbi1zdG9yZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWFtL3dzLWxvY2FsLWNvbm5lY3Rpb24tc3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvblZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL3J1bnRpbWUtdmFsdWVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0RnJhbWVDb25uZWN0aW9uIH0gZnJvbSBcIi4vd3MtY29yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3QsXG4gIHR5cGUgVGVsZW1ldHJ5SW5zcGVjdGFibGVDb25uZWN0aW9uLFxufSBmcm9tIFwiLi93cy10ZWxlbWV0cnlcIjtcblxuZXhwb3J0IGNsYXNzIFdlYlNvY2tldExvY2FsQ29ubmVjdGlvblN0b3JlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb24+KCk7XG5cbiAgcmVnaXN0ZXIoY29ubmVjdGlvbjogV2ViU29ja2V0RnJhbWVDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoY29ubmVjdGlvbi5pZCwgY29ubmVjdGlvbik7XG4gIH1cblxuICB1bnJlZ2lzdGVyKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5kZWxldGUoY29ubmVjdGlvbklkKTtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb24oY29ubmVjdGlvbklkOiBzdHJpbmcpOiBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWQpO1xuICB9XG5cbiAgZ2V0Q29ubmVjdGlvbnMoY29ubmVjdGlvbklkczogc3RyaW5nW10pOiBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb25bXSB7XG4gICAgY29uc3QgdGFyZ2V0czogV2ViU29ja2V0RnJhbWVDb25uZWN0aW9uW10gPSBbXTtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb25JZCBvZiBjb25uZWN0aW9uSWRzKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMoY29ubmVjdGlvbklkKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHNlZW4uYWRkKGNvbm5lY3Rpb25JZCk7XG5cbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWQpO1xuICAgICAgaWYgKCFjb25uZWN0aW9uIHx8IGNvbm5lY3Rpb24uY2xvc2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRzLnB1c2goY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldHM7XG4gIH1cblxuICBnZXRUZWxlbWV0cnlTbmFwc2hvdCgpOiBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3Qge1xuICAgIGNvbnN0IHNuYXBzaG90OiBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3QgPSB7XG4gICAgICBwZW5kaW5nSW5ib3VuZE1lc3NhZ2VzOiAwLFxuICAgICAgcGVuZGluZ091dGJvdW5kTWVzc2FnZXM6IDAsXG4gICAgICBzb2NrZXRCdWZmZXJlZEJ5dGVzOiAwLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgaWYgKCFpc1RlbGVtZXRyeUluc3BlY3RhYmxlQ29ubmVjdGlvbihjb25uZWN0aW9uKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29ubmVjdGlvblNuYXBzaG90ID0gY29ubmVjdGlvbi5nZXRUZWxlbWV0cnlTbmFwc2hvdCgpO1xuICAgICAgc25hcHNob3QucGVuZGluZ0luYm91bmRNZXNzYWdlcyArPSBjb25uZWN0aW9uU25hcHNob3QucGVuZGluZ0luYm91bmRNZXNzYWdlcztcbiAgICAgIHNuYXBzaG90LnBlbmRpbmdPdXRib3VuZE1lc3NhZ2VzICs9IGNvbm5lY3Rpb25TbmFwc2hvdC5wZW5kaW5nT3V0Ym91bmRNZXNzYWdlcztcbiAgICAgIHNuYXBzaG90LnNvY2tldEJ1ZmZlcmVkQnl0ZXMgKz0gY29ubmVjdGlvblNuYXBzaG90LnNvY2tldEJ1ZmZlcmVkQnl0ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNuYXBzaG90O1xuICB9XG5cbiAgY2xvc2VBbGwoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gY2xvc2Ug64+E7KSRIHVucmVnaXN0ZXLqsIAgTWFw7J2EIOuwlOq+
|
|
56
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtbG9jYWwtY29ubmVjdGlvbi1zdG9yZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWFtL3dzLWxvY2FsLWNvbm5lY3Rpb24tc3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvblZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL3J1bnRpbWUtdmFsdWVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0RnJhbWVDb25uZWN0aW9uIH0gZnJvbSBcIi4vd3MtY29yZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3QsXG4gIHR5cGUgVGVsZW1ldHJ5SW5zcGVjdGFibGVDb25uZWN0aW9uLFxufSBmcm9tIFwiLi93cy10ZWxlbWV0cnlcIjtcblxuZXhwb3J0IGNsYXNzIFdlYlNvY2tldExvY2FsQ29ubmVjdGlvblN0b3JlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb24+KCk7XG5cbiAgcmVnaXN0ZXIoY29ubmVjdGlvbjogV2ViU29ja2V0RnJhbWVDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoY29ubmVjdGlvbi5pZCwgY29ubmVjdGlvbik7XG4gIH1cblxuICB1bnJlZ2lzdGVyKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5kZWxldGUoY29ubmVjdGlvbklkKTtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb24oY29ubmVjdGlvbklkOiBzdHJpbmcpOiBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWQpO1xuICB9XG5cbiAgZ2V0Q29ubmVjdGlvbnMoY29ubmVjdGlvbklkczogc3RyaW5nW10pOiBXZWJTb2NrZXRGcmFtZUNvbm5lY3Rpb25bXSB7XG4gICAgY29uc3QgdGFyZ2V0czogV2ViU29ja2V0RnJhbWVDb25uZWN0aW9uW10gPSBbXTtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb25JZCBvZiBjb25uZWN0aW9uSWRzKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMoY29ubmVjdGlvbklkKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHNlZW4uYWRkKGNvbm5lY3Rpb25JZCk7XG5cbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWQpO1xuICAgICAgaWYgKCFjb25uZWN0aW9uIHx8IGNvbm5lY3Rpb24uY2xvc2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRzLnB1c2goY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldHM7XG4gIH1cblxuICBnZXRUZWxlbWV0cnlTbmFwc2hvdCgpOiBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3Qge1xuICAgIGNvbnN0IHNuYXBzaG90OiBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3QgPSB7XG4gICAgICBwZW5kaW5nSW5ib3VuZE1lc3NhZ2VzOiAwLFxuICAgICAgcGVuZGluZ091dGJvdW5kTWVzc2FnZXM6IDAsXG4gICAgICBzb2NrZXRCdWZmZXJlZEJ5dGVzOiAwLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgaWYgKCFpc1RlbGVtZXRyeUluc3BlY3RhYmxlQ29ubmVjdGlvbihjb25uZWN0aW9uKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29ubmVjdGlvblNuYXBzaG90ID0gY29ubmVjdGlvbi5nZXRUZWxlbWV0cnlTbmFwc2hvdCgpO1xuICAgICAgc25hcHNob3QucGVuZGluZ0luYm91bmRNZXNzYWdlcyArPSBjb25uZWN0aW9uU25hcHNob3QucGVuZGluZ0luYm91bmRNZXNzYWdlcztcbiAgICAgIHNuYXBzaG90LnBlbmRpbmdPdXRib3VuZE1lc3NhZ2VzICs9IGNvbm5lY3Rpb25TbmFwc2hvdC5wZW5kaW5nT3V0Ym91bmRNZXNzYWdlcztcbiAgICAgIHNuYXBzaG90LnNvY2tldEJ1ZmZlcmVkQnl0ZXMgKz0gY29ubmVjdGlvblNuYXBzaG90LnNvY2tldEJ1ZmZlcmVkQnl0ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNuYXBzaG90O1xuICB9XG5cbiAgY2xvc2VBbGwoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gY2xvc2Ug64+E7KSRIHVucmVnaXN0ZXLqsIAgTWFw7J2EIOuwlOq+uOuvgOuhnCDrs7Xsgqzrs7jsnYQg7Iic7ZqM7ZWc64ukXG4gICAgZm9yIChjb25zdCBjb25uZWN0aW9uIG9mIEFycmF5LmZyb20odGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkpIHtcbiAgICAgIGNvbm5lY3Rpb24uY2xvc2UoY29kZSwgcmVhc29uKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNUZWxlbWV0cnlJbnNwZWN0YWJsZUNvbm5lY3Rpb24oXG4gIGNvbm5lY3Rpb246IFdlYlNvY2tldEZyYW1lQ29ubmVjdGlvbixcbik6IGNvbm5lY3Rpb24gaXMgV2ViU29ja2V0RnJhbWVDb25uZWN0aW9uICYgVGVsZW1ldHJ5SW5zcGVjdGFibGVDb25uZWN0aW9uIHtcbiAgcmV0dXJuIFwiZ2V0VGVsZW1ldHJ5U25hcHNob3RcIiBpbiBjb25uZWN0aW9uICYmIGlzRnVuY3Rpb25WYWx1ZShjb25uZWN0aW9uLmdldFRlbGVtZXRyeVNuYXBzaG90KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBd0VBLFNBQVMsaUNBQ1AsWUFDeUU7Q0FDekUsT0FBTywwQkFBMEIsY0FBYyxnQkFBZ0IsV0FBVyxvQkFBb0I7QUFDaEc7OztDQTVFd0QsbUJBQUE7Q0FPM0MsZ0NBQWIsTUFBMkM7RUFDekMsOEJBQStCLElBQUksSUFBc0M7RUFFekUsU0FBUyxZQUE0QztHQUNuRCxLQUFLLFlBQVksSUFBSSxXQUFXLElBQUksVUFBVTtFQUNoRDtFQUVBLFdBQVcsY0FBNEI7R0FDckMsS0FBSyxZQUFZLE9BQU8sWUFBWTtFQUN0QztFQUVBLGNBQWMsY0FBNEQ7R0FDeEUsT0FBTyxLQUFLLFlBQVksSUFBSSxZQUFZO0VBQzFDO0VBRUEsZUFBZSxlQUFxRDtHQUNsRSxNQUFNLFVBQXNDLENBQUM7R0FDN0MsTUFBTSx1QkFBTyxJQUFJLElBQVk7R0FFN0IsS0FBSyxNQUFNLGdCQUFnQixlQUFlO0lBQ3hDLElBQUksS0FBSyxJQUFJLFlBQVksR0FDdkI7SUFFRixLQUFLLElBQUksWUFBWTtJQUVyQixNQUFNLGFBQWEsS0FBSyxZQUFZLElBQUksWUFBWTtJQUNwRCxJQUFJLENBQUMsY0FBYyxXQUFXLFFBQzVCO0lBR0YsUUFBUSxLQUFLLFVBQVU7R0FDekI7R0FFQSxPQUFPO0VBQ1Q7RUFFQSx1QkFBNkQ7R0FDM0QsTUFBTSxXQUFpRDtJQUNyRCx3QkFBd0I7SUFDeEIseUJBQXlCO0lBQ3pCLHFCQUFxQjtHQUN2QjtHQUVBLEtBQUssTUFBTSxjQUFjLEtBQUssWUFBWSxPQUFPLEdBQUc7SUFDbEQsSUFBSSxDQUFDLGlDQUFpQyxVQUFVLEdBQzlDO0lBR0YsTUFBTSxxQkFBcUIsV0FBVyxxQkFBcUI7SUFDM0QsU0FBUywwQkFBMEIsbUJBQW1CO0lBQ3RELFNBQVMsMkJBQTJCLG1CQUFtQjtJQUN2RCxTQUFTLHVCQUF1QixtQkFBbUI7R0FDckQ7R0FFQSxPQUFPO0VBQ1Q7RUFFQSxTQUFTLE1BQWUsUUFBdUI7R0FFN0MsS0FBSyxNQUFNLGNBQWMsTUFBTSxLQUFLLEtBQUssWUFBWSxPQUFPLENBQUMsR0FDM0QsV0FBVyxNQUFNLE1BQU0sTUFBTTtFQUVqQztDQUNGIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
|
-
|
|
2
|
+
// src/stream/ws-presence-index.ts
|
|
3
3
|
function matchesNamespace(record, namespace) {
|
|
4
4
|
return namespace === void 0 || namespace === "" || record.namespace === namespace;
|
|
5
5
|
}
|
|
@@ -170,7 +170,6 @@ var init_ws_presence_index = __esmMin((() => {
|
|
|
170
170
|
}
|
|
171
171
|
};
|
|
172
172
|
}));
|
|
173
|
-
//#endregion
|
|
174
173
|
init_ws_presence_index();
|
|
175
174
|
export { WebSocketPresenceIndex, init_ws_presence_index };
|
|
176
175
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { WebSocketPresenceIndex, init_ws_presence_index } from "./ws-presence-index.js";
|
|
3
|
-
|
|
3
|
+
// src/stream/ws-presence-store.ts
|
|
4
4
|
var InMemoryWebSocketPresenceStore;
|
|
5
5
|
var init_ws_presence_store = __esmMin((() => {
|
|
6
6
|
init_ws_presence_index();
|
|
@@ -45,8 +45,7 @@ var init_ws_presence_store = __esmMin((() => {
|
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
}));
|
|
48
|
-
//#endregion
|
|
49
48
|
init_ws_presence_store();
|
|
50
49
|
export { InMemoryWebSocketPresenceStore, init_ws_presence_store };
|
|
51
50
|
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtcHJlc2VuY2Utc3RvcmUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1wcmVzZW5jZS1zdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7IHR5cGUgTWF5YmVQcm9taXNlLCB0eXBlIFdlYlNvY2tldFJvb21JZCwgdHlwZSBXZWJTb2NrZXRVc2VySWQgfSBmcm9tIFwiLi93cy1jb3JlXCI7XG5pbXBvcnQgeyBXZWJTb2NrZXRQcmVzZW5jZUluZGV4IH0gZnJvbSBcIi4vd3MtcHJlc2VuY2UtaW5kZXhcIjtcblxuLyoqXG4gKiDshLjshZggcHJlc2VuY2Ugc25hcHNob3QuIGxpdmUg6rCd7LK06rCAIOyVhOuLiOuvgOuhnCDqsJLsnYQg67CU6r+U64+EIHJlZ2lzdHJ564KYIHN0b3JlIOyDge2DnOyXkCDsmIHtlqXsnYQg7KO87KeAIOyViuuKlOuLpC5cbiAqL1xuZXhwb3J0IHR5cGUgV2ViU29ja2V0U2Vzc2lvblByZXNlbmNlID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIHJvb21zOiBTZXQ8V2ViU29ja2V0Um9vbUlkPjtcbiAgY29ubmVjdGVkQXQ6IERhdGU7XG4gIGxhc3RTZWVuQXQ6IERhdGU7XG4gIHVzZXJJZD86IFdlYlNvY2tldFVzZXJJZDtcbn07XG5cbmV4cG9ydCB0eXBlIFdlYlNvY2tldFByZXNlbmNlUmVnaXN0cmF0aW9uID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGNvbm5lY3RlZEF0OiBEYXRlO1xufTtcblxuZXhwb3J0IHR5cGUgV2ViU29ja2V0Um91dGluZ1BsYW4gPSB7XG4gIGxvY2FsU2Vzc2lvbklkczogc3RyaW5nW107XG4gIHJlbW90ZU5vZGVJZHM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiDtgbTrn6zsiqTthLAgcHJlc2VuY2UgcmVwbGljYSDqs4Tslb0uIOqwgSDrhbjrk5zsnZggcmVnaXN0cnnqsIAg7J6Q6riwIOyEuOyFmOydmCBtdXRhdGlvbuydhCDshLjshZjrs4Qg7Zi47LacIOyInOyEnOuMgOuhnCDsoITri6ztlZzri6QuXG4gKiDrqqjrk6Ag66mU7ISc65Oc64qUIOqwkuydtOuCmCBwcm9taXNl66W8IOuwmO2ZmO2VoCDsiJgg7J6I6rOgLCByZWdpc3RyeeuKlCDrj5nquLAgdGhyb3frj4QgcmVqZWN0aW9u7Jy866GcIOuwlOq/lCDsspjrpqztlZzri6QuXG4gKiB1c2VySWTripQg7YOA7J6F6rmM7KeAIOydvOy5mO2VtOyVvCDrp6Tsua3rkJzri6QoMeqzvCBcIjFcIuydgCDri6TrpbTri6QpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNvY2tldFByZXNlbmNlU3RvcmUge1xuICAvLyDshKTsoJXtlZjrqbQgcnVudGltZSBub2RlSWTsmYAg6rCZ7JWE7JW8IO2VnOuLpC4g64uk66W066m0IHJ1bnRpbWUg7IOd7ISx7J20IOyLpO2MqO2VnOuLpFxuICByZWFkb25seSBub2RlSWQ/OiBzdHJpbmc7XG4gIHJlZ2lzdGVyKGlucHV0OiBXZWJTb2NrZXRQcmVzZW5jZVJlZ2lzdHJhdGlvbik6IE1heWJlUHJvbWlzZTx2b2lkPjtcbiAgYWN0aXZhdGUoc2Vzc2lvbklkOiBzdHJpbmcpOiBNYXliZVByb21pc2U8dm9pZD47XG4gIHVucmVnaXN0ZXIoc2Vzc2lvbklkOiBzdHJpbmcpOiBNYXliZVByb21pc2U8dm9pZD47XG4gIHNldFVzZXJJZChzZXNzaW9uSWQ6IHN0cmluZywgdXNlcklkOiBXZWJTb2NrZXRVc2VySWQpOiBNYXliZVByb21pc2U8dm9pZD47XG4gIGNsZWFyVXNlcklkKHNlc3Npb25JZDogc3RyaW5nKTogTWF5YmVQcm9taXNlPHZvaWQ+O1xuICBqb2luKHNlc3Npb25JZDogc3RyaW5nLCByb29tSWQ6IFdlYlNvY2tldFJvb21JZCk6IE1heWJlUHJvbWlzZTx2b2lkPjtcbiAgbGVhdmUoc2Vzc2lvbklkOiBzdHJpbmcsIHJvb21JZDogV2ViU29ja2V0Um9vbUlkKTogTWF5YmVQcm9taXNlPHZvaWQ+O1xuICAvLyBub2RlSWQg6rSA7KCQ7JeQ7IScIGF1ZGllbmNl66W8IOuhnOy7rCDshLjshZggSUTsmYAg7KSR67O1IOyXhuuKlCDsm5Dqsqkg64W465OcIElE66GcIOuCmOuIiOuLpC4g67mE7Zmc7ISxIOyEuOyFmOydgCDsoJzsmbjtlZzri6RcbiAgcmVzb2x2ZVJvdXRlKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgbm9kZUlkOiBzdHJpbmcpOiBNYXliZVByb21pc2U8V2ViU29ja2V0Um91dGluZ1BsYW4+O1xuICAvLyDtgbTrn6zsiqTthLAg7KCE7LK07J2YIO2ZnOyEsSDrsKkg7J247JuQ7IiYXG4gIGdldFJvb21NZW1iZXJDb3VudChyb29tSWQ6IFdlYlNvY2tldFJvb21JZCwgbmFtZXNwYWNlPzogc3RyaW5nKTogTWF5YmVQcm9taXNlPG51bWJlcj47XG4gIHNodXRkb3duPygpOiBNYXliZVByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICog7ZSE66Gc7IS47IqkIOuplOuqqOumrOyXkCBwcmVzZW5jZeulvCDrkZDripQgc3RvcmUuIOuLqOydvCDrhbjrk5zsnZgg6riw67O46rCS7J2066mwLCDqsJnsnYAg7ZSE66Gc7IS47Iqk7J2YIOyXrOufrCBydW50aW1l7J20IOqzteycoO2VmOuptCDtgbTrn6zsiqTthLAgcmVwbGljYeuhnOuPhCDrj5nsnpHtlZzri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbk1lbW9yeVdlYlNvY2tldFByZXNlbmNlU3RvcmUgaW1wbGVtZW50cyBXZWJTb2NrZXRQcmVzZW5jZVN0b3JlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleCA9IG5ldyBXZWJTb2NrZXRQcmVzZW5jZUluZGV4KCk7XG5cbiAgcmVnaXN0ZXIoaW5wdXQ6IFdlYlNvY2tldFByZXNlbmNlUmVnaXN0cmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5pbmRleC5yZWdpc3RlcihpbnB1dCk7XG4gIH1cblxuICBhY3RpdmF0ZShzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXguYWN0aXZhdGUoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXIoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4LnVucmVnaXN0ZXIoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIHNldFVzZXJJZChzZXNzaW9uSWQ6IHN0cmluZywgdXNlcklkOiBXZWJTb2NrZXRVc2VySWQpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4LnNldFVzZXJJZChzZXNzaW9uSWQsIHVzZXJJZCk7XG4gIH1cblxuICBjbGVhclVzZXJJZChzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXguY2xlYXJVc2VySWQoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIGpvaW4oc2Vzc2lvbklkOiBzdHJpbmcsIHJvb21JZDogV2ViU29ja2V0Um9vbUlkKTogdm9pZCB7XG4gICAgdGhpcy5pbmRleC5qb2luKHNlc3Npb25JZCwgcm9vbUlkKTtcbiAgfVxuXG4gIGxlYXZlKHNlc3Npb25JZDogc3RyaW5nLCByb29tSWQ6IFdlYlNvY2tldFJvb21JZCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXgubGVhdmUoc2Vzc2lvbklkLCByb29tSWQpO1xuICB9XG5cbiAgcmVzb2x2ZVJvdXRlKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgbm9kZUlkOiBzdHJpbmcpOiBXZWJTb2NrZXRSb3V0aW5nUGxhbiB7XG4gICAgY29uc3QgbG9jYWxTZXNzaW9uSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHJlbW90ZU5vZGVJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3Qgc2Vzc2lvbiBvZiB0aGlzLmluZGV4LnF1ZXJ5QXVkaWVuY2UoYXVkaWVuY2UpKSB7XG4gICAgICBpZiAoc2Vzc2lvbi5ub2RlSWQgPT09IG5vZGVJZCkge1xuICAgICAgICBsb2NhbFNlc3Npb25JZHMucHVzaChzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdGVOb2RlSWRzLmFkZChzZXNzaW9uLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbG9jYWxTZXNzaW9uSWRzLCByZW1vdGVOb2RlSWRzOiBbLi4ucmVtb3RlTm9kZUlkc10gfTtcbiAgfVxuXG4gIGdldFJvb21NZW1iZXJDb3VudChyb29tSWQ6IFdlYlNvY2tldFJvb21JZCwgbmFtZXNwYWNlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbmRleC5nZXRSb29tTWVtYmVyQ291bnQocm9vbUlkLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgLy8g67O17IKs67O47J2EIOuwmO2ZmO2VmOuvgOuhnCDtmLjstpzsnpDqsIAg6rCS7J2EIOuwlOq/
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtcHJlc2VuY2Utc3RvcmUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1wcmVzZW5jZS1zdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7IHR5cGUgTWF5YmVQcm9taXNlLCB0eXBlIFdlYlNvY2tldFJvb21JZCwgdHlwZSBXZWJTb2NrZXRVc2VySWQgfSBmcm9tIFwiLi93cy1jb3JlXCI7XG5pbXBvcnQgeyBXZWJTb2NrZXRQcmVzZW5jZUluZGV4IH0gZnJvbSBcIi4vd3MtcHJlc2VuY2UtaW5kZXhcIjtcblxuLyoqXG4gKiDshLjshZggcHJlc2VuY2Ugc25hcHNob3QuIGxpdmUg6rCd7LK06rCAIOyVhOuLiOuvgOuhnCDqsJLsnYQg67CU6r+U64+EIHJlZ2lzdHJ564KYIHN0b3JlIOyDge2DnOyXkCDsmIHtlqXsnYQg7KO87KeAIOyViuuKlOuLpC5cbiAqL1xuZXhwb3J0IHR5cGUgV2ViU29ja2V0U2Vzc2lvblByZXNlbmNlID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIHJvb21zOiBTZXQ8V2ViU29ja2V0Um9vbUlkPjtcbiAgY29ubmVjdGVkQXQ6IERhdGU7XG4gIGxhc3RTZWVuQXQ6IERhdGU7XG4gIHVzZXJJZD86IFdlYlNvY2tldFVzZXJJZDtcbn07XG5cbmV4cG9ydCB0eXBlIFdlYlNvY2tldFByZXNlbmNlUmVnaXN0cmF0aW9uID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIG5hbWVzcGFjZTogc3RyaW5nO1xuICBhY3RpdmU6IGJvb2xlYW47XG4gIGNvbm5lY3RlZEF0OiBEYXRlO1xufTtcblxuZXhwb3J0IHR5cGUgV2ViU29ja2V0Um91dGluZ1BsYW4gPSB7XG4gIGxvY2FsU2Vzc2lvbklkczogc3RyaW5nW107XG4gIHJlbW90ZU5vZGVJZHM6IHN0cmluZ1tdO1xufTtcblxuLyoqXG4gKiDtgbTrn6zsiqTthLAgcHJlc2VuY2UgcmVwbGljYSDqs4Tslb0uIOqwgSDrhbjrk5zsnZggcmVnaXN0cnnqsIAg7J6Q6riwIOyEuOyFmOydmCBtdXRhdGlvbuydhCDshLjshZjrs4Qg7Zi47LacIOyInOyEnOuMgOuhnCDsoITri6ztlZzri6QuXG4gKiDrqqjrk6Ag66mU7ISc65Oc64qUIOqwkuydtOuCmCBwcm9taXNl66W8IOuwmO2ZmO2VoCDsiJgg7J6I6rOgLCByZWdpc3RyeeuKlCDrj5nquLAgdGhyb3frj4QgcmVqZWN0aW9u7Jy866GcIOuwlOq/lCDsspjrpqztlZzri6QuXG4gKiB1c2VySWTripQg7YOA7J6F6rmM7KeAIOydvOy5mO2VtOyVvCDrp6Tsua3rkJzri6QoMeqzvCBcIjFcIuydgCDri6TrpbTri6QpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdlYlNvY2tldFByZXNlbmNlU3RvcmUge1xuICAvLyDshKTsoJXtlZjrqbQgcnVudGltZSBub2RlSWTsmYAg6rCZ7JWE7JW8IO2VnOuLpC4g64uk66W066m0IHJ1bnRpbWUg7IOd7ISx7J20IOyLpO2MqO2VnOuLpFxuICByZWFkb25seSBub2RlSWQ/OiBzdHJpbmc7XG4gIHJlZ2lzdGVyKGlucHV0OiBXZWJTb2NrZXRQcmVzZW5jZVJlZ2lzdHJhdGlvbik6IE1heWJlUHJvbWlzZTx2b2lkPjtcbiAgYWN0aXZhdGUoc2Vzc2lvbklkOiBzdHJpbmcpOiBNYXliZVByb21pc2U8dm9pZD47XG4gIHVucmVnaXN0ZXIoc2Vzc2lvbklkOiBzdHJpbmcpOiBNYXliZVByb21pc2U8dm9pZD47XG4gIHNldFVzZXJJZChzZXNzaW9uSWQ6IHN0cmluZywgdXNlcklkOiBXZWJTb2NrZXRVc2VySWQpOiBNYXliZVByb21pc2U8dm9pZD47XG4gIGNsZWFyVXNlcklkKHNlc3Npb25JZDogc3RyaW5nKTogTWF5YmVQcm9taXNlPHZvaWQ+O1xuICBqb2luKHNlc3Npb25JZDogc3RyaW5nLCByb29tSWQ6IFdlYlNvY2tldFJvb21JZCk6IE1heWJlUHJvbWlzZTx2b2lkPjtcbiAgbGVhdmUoc2Vzc2lvbklkOiBzdHJpbmcsIHJvb21JZDogV2ViU29ja2V0Um9vbUlkKTogTWF5YmVQcm9taXNlPHZvaWQ+O1xuICAvLyBub2RlSWQg6rSA7KCQ7JeQ7IScIGF1ZGllbmNl66W8IOuhnOy7rCDshLjshZggSUTsmYAg7KSR67O1IOyXhuuKlCDsm5Dqsqkg64W465OcIElE66GcIOuCmOuIiOuLpC4g67mE7Zmc7ISxIOyEuOyFmOydgCDsoJzsmbjtlZzri6RcbiAgcmVzb2x2ZVJvdXRlKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgbm9kZUlkOiBzdHJpbmcpOiBNYXliZVByb21pc2U8V2ViU29ja2V0Um91dGluZ1BsYW4+O1xuICAvLyDtgbTrn6zsiqTthLAg7KCE7LK07J2YIO2ZnOyEsSDrsKkg7J247JuQ7IiYXG4gIGdldFJvb21NZW1iZXJDb3VudChyb29tSWQ6IFdlYlNvY2tldFJvb21JZCwgbmFtZXNwYWNlPzogc3RyaW5nKTogTWF5YmVQcm9taXNlPG51bWJlcj47XG4gIHNodXRkb3duPygpOiBNYXliZVByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICog7ZSE66Gc7IS47IqkIOuplOuqqOumrOyXkCBwcmVzZW5jZeulvCDrkZDripQgc3RvcmUuIOuLqOydvCDrhbjrk5zsnZgg6riw67O46rCS7J2066mwLCDqsJnsnYAg7ZSE66Gc7IS47Iqk7J2YIOyXrOufrCBydW50aW1l7J20IOqzteycoO2VmOuptCDtgbTrn6zsiqTthLAgcmVwbGljYeuhnOuPhCDrj5nsnpHtlZzri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbk1lbW9yeVdlYlNvY2tldFByZXNlbmNlU3RvcmUgaW1wbGVtZW50cyBXZWJTb2NrZXRQcmVzZW5jZVN0b3JlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleCA9IG5ldyBXZWJTb2NrZXRQcmVzZW5jZUluZGV4KCk7XG5cbiAgcmVnaXN0ZXIoaW5wdXQ6IFdlYlNvY2tldFByZXNlbmNlUmVnaXN0cmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5pbmRleC5yZWdpc3RlcihpbnB1dCk7XG4gIH1cblxuICBhY3RpdmF0ZShzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXguYWN0aXZhdGUoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXIoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4LnVucmVnaXN0ZXIoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIHNldFVzZXJJZChzZXNzaW9uSWQ6IHN0cmluZywgdXNlcklkOiBXZWJTb2NrZXRVc2VySWQpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4LnNldFVzZXJJZChzZXNzaW9uSWQsIHVzZXJJZCk7XG4gIH1cblxuICBjbGVhclVzZXJJZChzZXNzaW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXguY2xlYXJVc2VySWQoc2Vzc2lvbklkKTtcbiAgfVxuXG4gIGpvaW4oc2Vzc2lvbklkOiBzdHJpbmcsIHJvb21JZDogV2ViU29ja2V0Um9vbUlkKTogdm9pZCB7XG4gICAgdGhpcy5pbmRleC5qb2luKHNlc3Npb25JZCwgcm9vbUlkKTtcbiAgfVxuXG4gIGxlYXZlKHNlc3Npb25JZDogc3RyaW5nLCByb29tSWQ6IFdlYlNvY2tldFJvb21JZCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXgubGVhdmUoc2Vzc2lvbklkLCByb29tSWQpO1xuICB9XG5cbiAgcmVzb2x2ZVJvdXRlKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgbm9kZUlkOiBzdHJpbmcpOiBXZWJTb2NrZXRSb3V0aW5nUGxhbiB7XG4gICAgY29uc3QgbG9jYWxTZXNzaW9uSWRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHJlbW90ZU5vZGVJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3Qgc2Vzc2lvbiBvZiB0aGlzLmluZGV4LnF1ZXJ5QXVkaWVuY2UoYXVkaWVuY2UpKSB7XG4gICAgICBpZiAoc2Vzc2lvbi5ub2RlSWQgPT09IG5vZGVJZCkge1xuICAgICAgICBsb2NhbFNlc3Npb25JZHMucHVzaChzZXNzaW9uLnNlc3Npb25JZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZW1vdGVOb2RlSWRzLmFkZChzZXNzaW9uLm5vZGVJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbG9jYWxTZXNzaW9uSWRzLCByZW1vdGVOb2RlSWRzOiBbLi4ucmVtb3RlTm9kZUlkc10gfTtcbiAgfVxuXG4gIGdldFJvb21NZW1iZXJDb3VudChyb29tSWQ6IFdlYlNvY2tldFJvb21JZCwgbmFtZXNwYWNlPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbmRleC5nZXRSb29tTWVtYmVyQ291bnQocm9vbUlkLCBuYW1lc3BhY2UpO1xuICB9XG5cbiAgLy8g67O17IKs67O47J2EIOuwmO2ZmO2VmOuvgOuhnCDtmLjstpzsnpDqsIAg6rCS7J2EIOuwlOq/lOuPhCBzdG9yZSDsg4Htg5zripQg6re464yA66Gc64ukXG4gIGdldENvbm5lY3Rpb24oc2Vzc2lvbklkOiBzdHJpbmcpOiBXZWJTb2NrZXRTZXNzaW9uUHJlc2VuY2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmluZGV4LmdldENvbm5lY3Rpb24oc2Vzc2lvbklkKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztDQUU0RCx1QkFBQTtDQXNEL0MsaUNBQWIsTUFBOEU7RUFDNUUsUUFBeUIsSUFBSSx1QkFBdUI7RUFFcEQsU0FBUyxPQUE0QztHQUNuRCxLQUFLLE1BQU0sU0FBUyxLQUFLO0VBQzNCO0VBRUEsU0FBUyxXQUF5QjtHQUNoQyxLQUFLLE1BQU0sU0FBUyxTQUFTO0VBQy9CO0VBRUEsV0FBVyxXQUF5QjtHQUNsQyxLQUFLLE1BQU0sV0FBVyxTQUFTO0VBQ2pDO0VBRUEsVUFBVSxXQUFtQixRQUErQjtHQUMxRCxLQUFLLE1BQU0sVUFBVSxXQUFXLE1BQU07RUFDeEM7RUFFQSxZQUFZLFdBQXlCO0dBQ25DLEtBQUssTUFBTSxZQUFZLFNBQVM7RUFDbEM7RUFFQSxLQUFLLFdBQW1CLFFBQStCO0dBQ3JELEtBQUssTUFBTSxLQUFLLFdBQVcsTUFBTTtFQUNuQztFQUVBLE1BQU0sV0FBbUIsUUFBK0I7R0FDdEQsS0FBSyxNQUFNLE1BQU0sV0FBVyxNQUFNO0VBQ3BDO0VBRUEsYUFBYSxVQUE2QixRQUFzQztHQUM5RSxNQUFNLGtCQUE0QixDQUFDO0dBQ25DLE1BQU0sZ0NBQWdCLElBQUksSUFBWTtHQUV0QyxLQUFLLE1BQU0sV0FBVyxLQUFLLE1BQU0sY0FBYyxRQUFRLEdBQ3JELElBQUksUUFBUSxXQUFXLFFBQ3JCLGdCQUFnQixLQUFLLFFBQVEsU0FBUztRQUV0QyxjQUFjLElBQUksUUFBUSxNQUFNO0dBSXBDLE9BQU87SUFBRTtJQUFpQixlQUFlLENBQUMsR0FBRyxhQUFhO0dBQUU7RUFDOUQ7RUFFQSxtQkFBbUIsUUFBeUIsV0FBNEI7R0FDdEUsT0FBTyxLQUFLLE1BQU0sbUJBQW1CLFFBQVEsU0FBUztFQUN4RDtFQUdBLGNBQWMsV0FBeUQ7R0FDckUsT0FBTyxLQUFLLE1BQU0sY0FBYyxTQUFTO0VBQzNDO0NBQ0YifQ==
|