@cartanova/qgrid-cli 2.10.10 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/dist/_virtual/_rolldown/runtime.js +1 -10
- package/bundle/dist/application/monit/log-buffer.js +12 -6
- package/bundle/dist/application/monit/monit.frame.js +11 -3
- package/bundle/dist/application/monit/monit.types.js +1 -1
- package/bundle/dist/application/qgrid/conv-routing.js +9 -6
- package/bundle/dist/application/qgrid/expired-token-reminder.js +2 -2
- package/bundle/dist/application/qgrid/oauth.js +31 -4
- package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -1
- package/bundle/dist/application/qgrid/qgrid-response-format.js +21 -19
- package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +40 -33
- package/bundle/dist/application/qgrid/qgrid.dispatcher.js +128 -93
- package/bundle/dist/application/qgrid/qgrid.frame.js +930 -49
- package/bundle/dist/application/qgrid/qgrid.types.js +212 -5
- package/bundle/dist/application/qgrid/schema-prompt.js +75 -48
- package/bundle/dist/application/qgrid/slack-user-map.js +1 -1
- package/bundle/dist/application/qgrid/token-death.js +1 -1
- package/bundle/dist/application/qgrid/token-subscriber.js +83 -30
- package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -1
- package/bundle/dist/application/qgrid/token-window-keepalive.js +8 -6
- package/bundle/dist/application/qgrid/tool-emulation-schema.js +13 -13
- package/bundle/dist/application/qgrid/tool-emulation.js +19 -15
- package/bundle/dist/application/request-log/json-schema-type-text.js +29 -12
- package/bundle/dist/application/request-log/request-log.model.js +83 -70
- package/bundle/dist/application/request-log/request-log.types.js +1 -1
- package/bundle/dist/application/request-log/zod-code-format.js +1 -1
- package/bundle/dist/application/request-log-step/request-log-step.model.js +1 -1
- package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -1
- package/bundle/dist/application/setting/setting.constant.js +1 -1
- package/bundle/dist/application/setting/setting.model.js +2 -2
- package/bundle/dist/application/setting/setting.store.js +2 -2
- package/bundle/dist/application/setting/setting.types.js +1 -1
- package/bundle/dist/application/sonamu.generated.js +32 -16
- package/bundle/dist/application/sonamu.generated.sso.js +1 -1
- package/bundle/dist/application/token/token.model.js +26 -9
- package/bundle/dist/application/token/token.types.js +20 -3
- package/bundle/dist/i18n/en.js +15 -1
- package/bundle/dist/i18n/ko.js +15 -1
- package/bundle/dist/i18n/sd.generated.js +1 -1
- package/bundle/dist/migrations/20260807133553_manual__backfill_request_log_cost.js +8 -6
- package/bundle/dist/server-bootstrap.js +4 -2
- package/bundle/dist/server-error-handler.js +1 -1
- package/bundle/dist/sonamu.config.js +37 -8
- package/bundle/dist/startup-migrations.js +17 -7
- package/bundle/dist/testing/global.js +1 -1
- package/bundle/dist/testing/schema-bench.js +0 -0
- package/bundle/dist/testing/test-database-name.js +1 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +1 -1
- package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +11 -5
- package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +4 -4
- package/bundle/dist/utils/providers/anthropic/anthropic-thinking.js +1 -1
- package/bundle/dist/utils/providers/anthropic/claude-session.js +20 -19
- package/bundle/dist/utils/providers/anthropic/fence-strip.js +1 -1
- package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +49 -23
- package/bundle/dist/utils/providers/common/credentials.js +5 -1
- package/bundle/dist/utils/providers/common/effort.js +3 -3
- package/bundle/dist/utils/providers/common/model-cost.js +69 -14
- package/bundle/dist/utils/providers/common/provider-types.js +29 -1
- package/bundle/dist/utils/providers/common/schema-validation.js +78 -40
- package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -1
- package/bundle/dist/utils/providers/common/strictifier.js +62 -43
- package/bundle/dist/utils/providers/common/thinking.js +3 -2
- package/bundle/dist/utils/providers/common/ttft.js +1 -1
- package/bundle/dist/utils/providers/grok/grok-backend-protocol.js +427 -0
- package/bundle/dist/utils/providers/grok/grok-constants.js +55 -0
- package/bundle/dist/utils/providers/grok/grok-direct-client.js +196 -0
- package/bundle/dist/utils/providers/grok/grok-dispatcher.js +1313 -0
- package/bundle/dist/utils/providers/grok/grok-headers.js +118 -0
- package/bundle/dist/utils/providers/grok/grok-media-client.js +420 -0
- package/bundle/dist/utils/providers/grok/grok-models.js +114 -0
- package/bundle/dist/utils/providers/grok/grok-oauth.js +455 -0
- package/bundle/dist/utils/providers/grok/grok-quota.js +119 -0
- package/bundle/dist/utils/providers/grok/grok-refresh.js +192 -0
- package/bundle/dist/utils/providers/grok/grok-types.js +186 -0
- package/bundle/dist/utils/providers/grok/grok-voice-client.js +199 -0
- package/bundle/dist/utils/providers/grok/index.js +11 -0
- package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +111 -83
- package/bundle/dist/utils/providers/openai/openai-callback-relay.js +3 -2
- package/bundle/dist/utils/providers/openai/openai-constants.js +1 -1
- package/bundle/dist/utils/providers/openai/openai-direct-client.js +23 -7
- package/bundle/dist/utils/providers/openai/openai-dispatcher.js +143 -106
- package/bundle/dist/utils/providers/openai/openai-image-generation.js +48 -33
- package/bundle/dist/utils/providers/openai/openai-oauth.js +28 -13
- package/bundle/dist/utils/providers/openai/openai-quota.js +38 -27
- package/bundle/dist/utils/providers/openai/openai-refresh.js +17 -9
- package/bundle/dist/utils/providers/openai/openai-sse.js +1 -1
- package/bundle/dist/utils/providers/openai/openai-transport-config.js +1 -1
- package/bundle/dist/utils/quiet-hours.js +1 -1
- package/bundle/dist/utils/slack-notify.js +14 -8
- package/bundle/dist/utils/subset-loaders.js +4 -5
- package/bundle/src/application/monit/log-buffer.ts +23 -9
- package/bundle/src/application/monit/monit.frame.ts +22 -5
- package/bundle/src/application/monit/monit.types.ts +6 -0
- package/bundle/src/application/qgrid/conv-routing.test.ts +76 -4
- package/bundle/src/application/qgrid/conv-routing.ts +35 -9
- package/bundle/src/application/qgrid/expired-token-reminder.ts +9 -1
- package/bundle/src/application/qgrid/oauth.ts +51 -15
- package/bundle/src/application/qgrid/qgrid-image-generation.ts +9 -0
- package/bundle/src/application/qgrid/qgrid-response-format.ts +50 -25
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +19 -0
- package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +84 -40
- package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +97 -0
- package/bundle/src/application/qgrid/qgrid.dispatcher.ts +274 -126
- package/bundle/src/application/qgrid/qgrid.frame.test.ts +1013 -3
- package/bundle/src/application/qgrid/qgrid.frame.ts +1415 -60
- package/bundle/src/application/qgrid/qgrid.types.ts +335 -0
- package/bundle/src/application/qgrid/schema-prompt.ts +105 -41
- package/bundle/src/application/qgrid/slack-user-map.ts +5 -0
- package/bundle/src/application/qgrid/token-death.ts +4 -0
- package/bundle/src/application/qgrid/token-subscriber.test.ts +21 -19
- package/bundle/src/application/qgrid/token-subscriber.ts +186 -53
- package/bundle/src/application/qgrid/token-trigger-setup.ts +2 -0
- package/bundle/src/application/qgrid/token-window-keepalive.ts +49 -6
- package/bundle/src/application/qgrid/tool-emulation-schema.ts +33 -29
- package/bundle/src/application/qgrid/tool-emulation.ts +52 -27
- package/bundle/src/application/request-log/json-schema-type-text.test.ts +5 -5
- package/bundle/src/application/request-log/json-schema-type-text.ts +81 -26
- package/bundle/src/application/request-log/request-log.model.test.ts +111 -4
- package/bundle/src/application/request-log/request-log.model.ts +277 -146
- package/bundle/src/application/request-log/request-log.types.ts +6 -0
- package/bundle/src/application/request-log/zod-code-format.ts +11 -0
- package/bundle/src/application/request-log-step/request-log-step.model.ts +1 -0
- package/bundle/src/application/request-log-step/request-log-step.types.ts +2 -0
- package/bundle/src/application/setting/setting.constant.ts +9 -0
- package/bundle/src/application/setting/setting.model.ts +12 -2
- package/bundle/src/application/setting/setting.store.ts +5 -1
- package/bundle/src/application/setting/setting.types.ts +8 -0
- package/bundle/src/application/sonamu.generated.http +133 -0
- package/bundle/src/application/sonamu.generated.sso.ts +2 -0
- package/bundle/src/application/sonamu.generated.ts +15 -0
- package/bundle/src/application/token/token.identity.test.ts +20 -0
- package/bundle/src/application/token/token.model.ts +66 -7
- package/bundle/src/application/token/token.types.ts +24 -1
- package/bundle/src/i18n/en.ts +19 -0
- package/bundle/src/i18n/ko.ts +21 -0
- package/bundle/src/i18n/sd.generated.ts +23 -2
- package/bundle/src/migrations/20260807133553_manual__backfill_request_log_cost.ts +16 -8
- package/bundle/src/server-bootstrap.ts +4 -2
- package/bundle/src/server-error-handler.ts +1 -0
- package/bundle/src/sonamu.config.ts +69 -7
- package/bundle/src/startup-migrations.ts +27 -9
- package/bundle/src/testing/global.ts +20 -0
- package/bundle/src/testing/schema-bench.ts +105 -30
- package/bundle/src/testing/test-database-name.ts +2 -0
- package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +8 -0
- package/bundle/src/utils/providers/anthropic/anthropic-dispatcher.ts +41 -6
- package/bundle/src/utils/providers/anthropic/anthropic-quota.ts +7 -3
- package/bundle/src/utils/providers/anthropic/anthropic-thinking.ts +6 -0
- package/bundle/src/utils/providers/anthropic/claude-session.ts +58 -24
- package/bundle/src/utils/providers/anthropic/fence-strip.ts +11 -0
- package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +110 -45
- package/bundle/src/utils/providers/common/credentials.ts +8 -0
- package/bundle/src/utils/providers/common/effort.ts +9 -2
- package/bundle/src/utils/providers/common/model-cost.test.ts +48 -1
- package/bundle/src/utils/providers/common/model-cost.ts +259 -158
- package/bundle/src/utils/providers/common/provider-dispatcher.ts +98 -2
- package/bundle/src/utils/providers/common/provider-types.ts +46 -3
- package/bundle/src/utils/providers/common/schema-validation.test.ts +5 -1
- package/bundle/src/utils/providers/common/schema-validation.ts +124 -56
- package/bundle/src/utils/providers/common/smooth-weighted-round-robin.ts +4 -0
- package/bundle/src/utils/providers/common/strictifier.ts +185 -59
- package/bundle/src/utils/providers/common/thinking.ts +2 -2
- package/bundle/src/utils/providers/common/ttft.ts +4 -2
- package/bundle/src/utils/providers/grok/__fixtures__/golden-responses-1.0.60.json +164 -0
- package/bundle/src/utils/providers/grok/grok-backend-protocol.test.ts +325 -0
- package/bundle/src/utils/providers/grok/grok-backend-protocol.ts +721 -0
- package/bundle/src/utils/providers/grok/grok-constants.ts +105 -0
- package/bundle/src/utils/providers/grok/grok-direct-client.test.ts +179 -0
- package/bundle/src/utils/providers/grok/grok-direct-client.ts +313 -0
- package/bundle/src/utils/providers/grok/grok-dispatcher.test.ts +1395 -0
- package/bundle/src/utils/providers/grok/grok-dispatcher.ts +2105 -0
- package/bundle/src/utils/providers/grok/grok-headers.test.ts +149 -0
- package/bundle/src/utils/providers/grok/grok-headers.ts +199 -0
- package/bundle/src/utils/providers/grok/grok-media-client.test.ts +446 -0
- package/bundle/src/utils/providers/grok/grok-media-client.ts +703 -0
- package/bundle/src/utils/providers/grok/grok-models.test.ts +96 -0
- package/bundle/src/utils/providers/grok/grok-models.ts +161 -0
- package/bundle/src/utils/providers/grok/grok-oauth.test.ts +406 -0
- package/bundle/src/utils/providers/grok/grok-oauth.ts +771 -0
- package/bundle/src/utils/providers/grok/grok-quota.test.ts +142 -0
- package/bundle/src/utils/providers/grok/grok-quota.ts +198 -0
- package/bundle/src/utils/providers/grok/grok-refresh.test.ts +239 -0
- package/bundle/src/utils/providers/grok/grok-refresh.ts +325 -0
- package/bundle/src/utils/providers/grok/grok-types.test.ts +252 -0
- package/bundle/src/utils/providers/grok/grok-types.ts +374 -0
- package/bundle/src/utils/providers/grok/grok-voice-client.test.ts +321 -0
- package/bundle/src/utils/providers/grok/grok-voice-client.ts +284 -0
- package/bundle/src/utils/providers/grok/index.ts +20 -0
- package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +221 -137
- package/bundle/src/utils/providers/openai/openai-callback-relay.ts +12 -1
- package/bundle/src/utils/providers/openai/openai-constants.ts +2 -0
- package/bundle/src/utils/providers/openai/openai-direct-client.ts +111 -21
- package/bundle/src/utils/providers/openai/openai-dispatcher.ts +322 -169
- package/bundle/src/utils/providers/openai/openai-image-generation.ts +116 -36
- package/bundle/src/utils/providers/openai/openai-oauth.ts +48 -20
- package/bundle/src/utils/providers/openai/openai-quota.ts +77 -46
- package/bundle/src/utils/providers/openai/openai-refresh.ts +42 -18
- package/bundle/src/utils/providers/openai/openai-sse.ts +27 -3
- package/bundle/src/utils/providers/openai/openai-transport-config.ts +2 -0
- package/bundle/src/utils/quiet-hours.ts +12 -1
- package/bundle/src/utils/slack-notify.ts +44 -13
- package/bundle/src/utils/subset-loaders.ts +7 -7
- package/bundle/web-dist/client/assets/clsx-5XM_pHvN.js +1 -0
- package/bundle/web-dist/client/assets/index-BA7uQ-6c.js +31 -0
- package/bundle/web-dist/client/assets/index-Be2qCZmI.css +1 -0
- package/bundle/web-dist/client/assets/logs-C47OJGEI.js +1 -0
- package/bundle/web-dist/client/assets/monit-BS9no0dU.js +4 -0
- package/bundle/web-dist/client/assets/plus-sdACTfH0.js +1 -0
- package/bundle/web-dist/client/assets/refresh-cw-CY8o_1cT.js +1 -0
- package/bundle/web-dist/client/assets/request-model-BRtFuZvj.js +1 -0
- package/bundle/web-dist/client/assets/routes-kqgkUxE8.js +5 -0
- package/bundle/web-dist/client/assets/{services.generated-NP-ValHd.js → services.generated-CefiDXEv.js} +5 -5
- package/bundle/web-dist/client/assets/settings-DNDvFGSw.js +1 -0
- package/bundle/web-dist/client/assets/show-u8Np69q3.js +2 -0
- package/bundle/web-dist/client/assets/tokens-QvP410NW.js +1 -0
- package/bundle/web-dist/client/assets/total-cost-MnfKU8IN.js +1 -0
- package/bundle/web-dist/client/assets/use-oauth-login-flow-Bzdh28Ws.js +1 -0
- package/bundle/web-dist/client/assets/use-update-token-mutation-CfJKaxmR.js +1 -0
- package/bundle/web-dist/client/assets/vendor-react-CUFFrVN9.js +244 -0
- package/bundle/web-dist/client/assets/vendor-tanstack-Bf_jag9G.js +1 -0
- package/bundle/web-dist/client/index.html +6 -6
- package/bundle/web-dist/server/assets/clsx-D_N5PN_2.js +16 -0
- package/bundle/web-dist/server/assets/{lazyRouteComponent-CgBdabgd.js → lazyRouteComponent-D8iTIHyn.js} +129 -2
- package/bundle/web-dist/server/assets/logs-B3OTd9hy.js +825 -0
- package/bundle/web-dist/server/assets/{monit-ZPt66W5M.js → monit-B2hqorPe.js} +385 -126
- package/bundle/web-dist/server/assets/plus-DwG7h9kq.js +28 -0
- package/bundle/web-dist/server/assets/{react-dom-Ds75e4Jl.js → react-dom-BIYQzBqG.js} +2 -129
- package/bundle/web-dist/server/assets/refresh-cw-mMBkwOq0.js +44 -0
- package/bundle/web-dist/server/assets/{request-model-DjGldb-h.js → request-model-I6OdODSH.js} +15 -6
- package/bundle/web-dist/server/assets/{routes-Ct-k7nBA.js → routes-B95YlUv2.js} +760 -213
- package/bundle/web-dist/server/assets/{services.generated-BA4AcAf5.js → services.generated-DQATJ6qf.js} +12820 -12194
- package/bundle/web-dist/server/assets/settings-C3gbGk0m.js +830 -0
- package/bundle/web-dist/server/assets/{show-LSFIzvO2.js → show-Bxaj3rhH.js} +1350 -418
- package/bundle/web-dist/server/assets/tokens-CZjH3cB7.js +1038 -0
- package/bundle/web-dist/server/assets/total-cost-fTE9Xy82.js +18 -0
- package/bundle/web-dist/server/assets/use-oauth-login-flow-CKDHgc3U.js +2379 -0
- package/bundle/web-dist/server/assets/{use-update-token-mutation-pkArIzCP.js → use-update-token-mutation-BEbgOzaa.js} +1 -1
- package/bundle/web-dist/server/entry-server.generated.js +4295 -22810
- package/dist/cli.js +9 -9
- package/package.json +4 -11
- package/postinstall.mjs +12 -0
- package/skills/qgrid/SKILL.md +1 -0
- package/skills/qgrid/references/cli-env-and-server-boot.md +4 -1
- package/skills/qgrid/references/decision-rationale.md +23 -0
- package/skills/qgrid/references/grok-runtime.md +89 -0
- package/skills/qgrid/references/provider-runtime-differences.md +30 -29
- package/skills/qgrid/references/repo-map.md +10 -0
- package/skills/qgrid/references/token-auth-quota-lifecycle.md +56 -3
- package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -406
- package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +0 -1507
- package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +0 -887
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2756
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +0 -8
- package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +0 -922
- package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +0 -386
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -121
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +0 -51
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +0 -1317
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +0 -561
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +0 -40
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +0 -272
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +0 -27
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +0 -77
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +0 -381
- package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +0 -51
- package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +0 -2986
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +0 -109
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +0 -10
- package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +0 -10
- package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1126
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
- package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -432
- package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +0 -517
- package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +0 -101
- package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_5b35fc1fb85d2af4d105e0d74f940f50/node_modules/vite/dist/node/module-runner.js +0 -1265
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +0 -9
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +0 -41
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +0 -19
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +0 -202
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +0 -46
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +0 -119
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +0 -3044
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +0 -59
- package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/index.js +0 -28
- package/bundle/dist/testing/setup-mocks.js +0 -16
- package/bundle/src/testing/setup-mocks.ts +0 -44
- package/bundle/web-dist/client/assets/index-Bw2s88Ot.css +0 -1
- package/bundle/web-dist/client/assets/index-DZwzUfI-.js +0 -106
- package/bundle/web-dist/client/assets/logs-Cog79DU5.js +0 -1
- package/bundle/web-dist/client/assets/monit-2auznBys.js +0 -1
- package/bundle/web-dist/client/assets/plus-B62CuqT8.js +0 -1
- package/bundle/web-dist/client/assets/refresh-cw-NNcU0Cmq.js +0 -1
- package/bundle/web-dist/client/assets/request-model-CojtinqK.js +0 -1
- package/bundle/web-dist/client/assets/routes-B0lTeLK-.js +0 -5
- package/bundle/web-dist/client/assets/settings-D8ZxZGSJ.js +0 -1
- package/bundle/web-dist/client/assets/show-CFSERlnM.js +0 -2
- package/bundle/web-dist/client/assets/tokens-CZXUyI7O.js +0 -1
- package/bundle/web-dist/client/assets/use-oauth-login-flow-hboOs3wG.js +0 -1
- package/bundle/web-dist/client/assets/use-update-token-mutation-BQHS0byG.js +0 -1
- package/bundle/web-dist/client/assets/vendor-react-DH4kUfK2.js +0 -9
- package/bundle/web-dist/client/assets/vendor-tanstack-DJRQAbrY.js +0 -1
- package/bundle/web-dist/server/assets/logs-BMyR98rU.js +0 -509
- package/bundle/web-dist/server/assets/plus-BZ9I0VgC.js +0 -19
- package/bundle/web-dist/server/assets/refresh-cw-CztCFis-.js +0 -23
- package/bundle/web-dist/server/assets/settings-CBUZ47Xx.js +0 -461
- package/bundle/web-dist/server/assets/tokens-DxrBW512.js +0 -448
- package/bundle/web-dist/server/assets/use-oauth-login-flow-Gn8flMK5.js +0 -178
- package/dist/cli.d.ts +0 -10
- /package/bundle/web-dist/client/assets/{cost-DH2jZbrw.js → cost-DB3HbU7T.js} +0 -0
- /package/bundle/web-dist/client/assets/{preload-helper-ca-nBW7U.js → preload-helper-DWTEM3RW.js} +0 -0
- /package/bundle/web-dist/server/assets/{cost-eEHeTRT5.js → cost-BC9yzyA9.js} +0 -0
|
@@ -6,15 +6,6 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
8
|
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
|
|
9
|
-
var __exportAll = (all, no_symbols) => {
|
|
10
|
-
let target = {};
|
|
11
|
-
for (var name in all) __defProp(target, name, {
|
|
12
|
-
get: all[name],
|
|
13
|
-
enumerable: true
|
|
14
|
-
});
|
|
15
|
-
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
16
|
-
return target;
|
|
17
|
-
};
|
|
18
9
|
var __copyProps = (to, from, except, desc) => {
|
|
19
10
|
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
20
11
|
key = keys[i];
|
|
@@ -30,4 +21,4 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
30
21
|
enumerable: true
|
|
31
22
|
}) : target, mod));
|
|
32
23
|
//#endregion
|
|
33
|
-
export { __commonJSMin,
|
|
24
|
+
export { __commonJSMin, __toESM };
|
|
@@ -1,17 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
//#region src/application/monit/log-buffer.ts
|
|
3
|
+
/**
|
|
4
|
+
* 재시작하면 초기화되는 Monit 로그 버퍼.
|
|
5
|
+
* timestamp/processStartedAt은 web의 dateReviver 변환을 피하고 동등성 비교를 유지하도록 epoch ms를 쓴다.
|
|
6
|
+
*/
|
|
2
7
|
const DEFAULT_CAPACITY = 2e3;
|
|
3
8
|
const DEFAULT_MAX_TEXT_LENGTH = 4e3;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
function renderValue(value) {
|
|
8
|
-
if (typeof value === "string") return value;
|
|
9
|
+
const renderedLogValue = z.unknown().transform((value) => {
|
|
10
|
+
const text = z.string().safeParse(value);
|
|
11
|
+
if (text.success) return text.data;
|
|
9
12
|
if (value instanceof Error) return value.message;
|
|
10
13
|
try {
|
|
11
14
|
return JSON.stringify(value) ?? String(value);
|
|
12
15
|
} catch {
|
|
13
16
|
return String(value);
|
|
14
17
|
}
|
|
18
|
+
});
|
|
19
|
+
function flattenMessage(message) {
|
|
20
|
+
return message.map((part, index) => index % 2 === 0 ? z.string().safeParse(part).data ?? "" : renderedLogValue.parse(part)).join("");
|
|
15
21
|
}
|
|
16
22
|
var MonitLogBuffer = class {
|
|
17
23
|
capacity;
|
|
@@ -70,4 +76,4 @@ const monitLogSink = (record) => {
|
|
|
70
76
|
//#endregion
|
|
71
77
|
export { MonitLogBuffer, monitLogBuffer, monitLogSink };
|
|
72
78
|
|
|
73
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWJ1ZmZlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9uaXQvbG9nLWJ1ZmZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIExvZ1JlY29yZCwgdHlwZSBTaW5rIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbi8qKlxuICog7J6s7Iuc7J6R7ZWY66m0IOy0iOq4sO2ZlOuQmOuKlCBNb25pdCDroZzqt7gg67KE7Y28LlxuICogdGltZXN0YW1wL3Byb2Nlc3NTdGFydGVkQXTsnYAgd2Vi7J2YIGRhdGVSZXZpdmVyIOuzgO2ZmOydhCDtlLztlZjqs6Ag64+Z65Ox7ISxIOu5hOq1kOulvCDsnKDsp4DtlZjrj4TroZ0gZXBvY2ggbXPrpbwg7JO064ukLlxuICovXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5jb25zdCBERUZBVUxUX0NBUEFDSVRZID0gMl8wMDA7XG5jb25zdCBERUZBVUxUX01BWF9URVhUX0xFTkdUSCA9IDRfMDAwO1xuXG4vLyDtkZzsi5wg7KCE7JqpIHdpcmUg66CI7L2U65OcLiBwcm9wZXJ0aWVzL+ybkOuzuCDqsJLsnYAg67KE7Y287JeQIOyLo+yngCDslYrripTri6QoYWxsb3dsaXN0KS5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRMb2dFbnRyeSB7XG4gIHNlcTogbnVtYmVyO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgbGV2ZWw6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZ1tdO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRMb2dDaHVuayB7XG4gIGVudHJpZXM6IE1vbml0TG9nRW50cnlbXTtcbiAgbmV4dEN1cnNvcjogbnVtYmVyO1xuICAvLyDtmLjstpzsnpDsnZgg7Luk7ISc6rCAIGV2aWN0aW9uIOyXkCDrsIDroKQg7Jyg7Iuk65CcIOudvOyduCDsiJguIDAg7J2066m0IOqzteuwsSDsl4bsnYwuXG4gIGRyb3BwZWQ6IG51bWJlcjtcbn1cblxuLy8gSW50ZXJwb2xhdGVkIGxvZyB2YWx1ZXMgYXJlIGFyYml0cmFyeTsgdGhpcyBkZWNvZGVzIG9uZSBpbnRvIGl0cyBjb25zb2xlIHRleHQuXG5jb25zdCByZW5kZXJlZExvZ1ZhbHVlID0gei51bmtub3duKCkudHJhbnNmb3JtKCh2YWx1ZSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRleHQgPSB6LnN0cmluZygpLnNhZmVQYXJzZSh2YWx1ZSk7XG5cbiAgaWYgKHRleHQuc3VjY2VzcykgcmV0dXJuIHRleHQuZGF0YTtcblxuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBFcnJvcikgcmV0dXJuIHZhbHVlLm1lc3NhZ2U7XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpID8/IFN0cmluZyh2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG59KTtcblxuLy8gbG9ndGFwZSBtZXNzYWdlIOuwsOyXtOydgCDtmYDsiJgg6ri47J20IOKAlCDsp53siJgg7J24642x7Iqk6rCAIO2FnO2UjOumvyDthY3siqTtirgo66y47J6Q7Je0KSwg7ZmA7IiY6rCAIOuztOqwhCDqsJIuXG5mdW5jdGlvbiBmbGF0dGVuTWVzc2FnZShtZXNzYWdlOiByZWFkb25seSB1bmtub3duW10pOiBzdHJpbmcge1xuICByZXR1cm4gbWVzc2FnZVxuICAgIC5tYXAoKHBhcnQsIGluZGV4KSA9PlxuICAgICAgaW5kZXggJSAyID09PSAwID8gKHouc3RyaW5nKCkuc2FmZVBhcnNlKHBhcnQpLmRhdGEgPz8gXCJcIikgOiByZW5kZXJlZExvZ1ZhbHVlLnBhcnNlKHBhcnQpLFxuICAgIClcbiAgICAuam9pbihcIlwiKTtcbn1cblxuZXhwb3J0IGNsYXNzIE1vbml0TG9nQnVmZmVyIHtcbiAgcmVhZG9ubHkgcHJvY2Vzc1N0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gIGVudHJpZXM6IE1vbml0TG9nRW50cnlbXSA9IFtdO1xuICBuZXh0U2VxID0gMTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBjYXBhY2l0eSA9IERFRkFVTFRfQ0FQQUNJVFksXG4gICAgcmVhZG9ubHkgbWF4VGV4dExlbmd0aCA9IERFRkFVTFRfTUFYX1RFWFRfTEVOR1RILFxuICApIHt9XG5cbiAgcHVzaChyZWNvcmQ6IExvZ1JlY29yZCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBsZXQgdGV4dCA9IGZsYXR0ZW5NZXNzYWdlKHJlY29yZC5tZXNzYWdlKTtcblxuICAgICAgaWYgKHRleHQubGVuZ3RoID4gdGhpcy5tYXhUZXh0TGVuZ3RoKSB7XG4gICAgICAgIHRleHQgPSBgJHt0ZXh0LnNsaWNlKDAsIHRoaXMubWF4VGV4dExlbmd0aCl94oCmYDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbnRyaWVzLnB1c2goe1xuICAgICAgICBzZXE6IHRoaXMubmV4dFNlcSsrLFxuICAgICAgICB0aW1lc3RhbXA6IHJlY29yZC50aW1lc3RhbXAsXG4gICAgICAgIGxldmVsOiByZWNvcmQubGV2ZWwsXG4gICAgICAgIGNhdGVnb3J5OiBbLi4ucmVjb3JkLmNhdGVnb3J5XSxcbiAgICAgICAgdGV4dCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5lbnRyaWVzLmxlbmd0aCA+IHRoaXMuY2FwYWNpdHkpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZSgwLCB0aGlzLmVudHJpZXMubGVuZ3RoIC0gdGhpcy5jYXBhY2l0eSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDroZzqt7gg7Lqh7LKYIOyLpO2MqOuKlCDsobDsmqntnogg66y07IucIOKAlCDroZzquYUg6rK966Gc66W8IOygiOuMgCDrsKntlbTtlZjsp4Ag7JWK64qU64ukLlxuICAgIH1cbiAgfVxuXG4gIC8vIGN1cnNvciDrr7jsp4DsoJXsnbTrqbQg7LWc6re8IOyXlO2KuOumrOu2gO2EsCDrsJjtmZjtlZzri6QuXG4gIGFmdGVyKGN1cnNvcjogbnVtYmVyIHwgdW5kZWZpbmVkLCBsaW1pdDogbnVtYmVyKTogTW9uaXRMb2dDaHVuayB7XG4gICAgY29uc3QgbGF0ZXN0U2VxID0gdGhpcy5uZXh0U2VxIC0gMTtcbiAgICBjb25zdCBvbGRlc3RTZXEgPSB0aGlzLmVudHJpZXNbMF0/LnNlcSA/PyB0aGlzLm5leHRTZXE7XG5cbiAgICBpZiAoY3Vyc29yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSB0aGlzLmVudHJpZXMuc2xpY2UoLWxpbWl0KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgbmV4dEN1cnNvcjogZW50cmllcy5hdCgtMSk/LnNlcSA/PyBsYXRlc3RTZXEsXG4gICAgICAgIGRyb3BwZWQ6IDAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIOydtOyghCDtlITroZzshLjsiqTsnZgg7Luk7IScIOuTsSDrr7jrnpgg7Luk7ISc64qUIOuwqeyWtOyggeycvOuhnCDtmITsnqwgdGFpbCDroZwg7J6s64+Z6riw7ZmU7ZWc64ukLlxuICAgIGlmIChjdXJzb3IgPiBsYXRlc3RTZXEpIHtcbiAgICAgIHJldHVybiB7IGVudHJpZXM6IFtdLCBuZXh0Q3Vyc29yOiBsYXRlc3RTZXEsIGRyb3BwZWQ6IDAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wcGVkID0gTWF0aC5tYXgob2xkZXN0U2VxIC0gY3Vyc29yIC0gMSwgMCk7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IHRoaXMuZW50cmllcy5maW5kSW5kZXgoKGVudHJ5KSA9PiBlbnRyeS5zZXEgPiBjdXJzb3IpO1xuICAgIGNvbnN0IGVudHJpZXMgPSBzdGFydEluZGV4ID09PSAtMSA/IFtdIDogdGhpcy5lbnRyaWVzLnNsaWNlKHN0YXJ0SW5kZXgsIHN0YXJ0SW5kZXggKyBsaW1pdCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZW50cmllcyxcbiAgICAgIG5leHRDdXJzb3I6IGVudHJpZXMuYXQoLTEpPy5zZXEgPz8gY3Vyc29yICsgZHJvcHBlZCxcbiAgICAgIGRyb3BwZWQsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgbW9uaXRMb2dCdWZmZXIgPSBuZXcgTW9uaXRMb2dCdWZmZXIoKTtcblxuZXhwb3J0IGNvbnN0IG1vbml0TG9nU2luazogU2luayA9IChyZWNvcmQpID0+IHtcbiAgbW9uaXRMb2dCdWZmZXIucHVzaChyZWNvcmQpO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBT0EsTUFBTSxtQkFBbUI7QUFDekIsTUFBTSwwQkFBMEI7QUFtQmhDLE1BQU0sbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUMsV0FBVyxVQUFrQjtDQUNoRSxNQUFNLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxVQUFVLEtBQUs7Q0FFdkMsSUFBSSxLQUFLLFNBQVMsT0FBTyxLQUFLO0NBRTlCLElBQUksaUJBQWlCLE9BQU8sT0FBTyxNQUFNO0NBRXpDLElBQUk7RUFDRixPQUFPLEtBQUssVUFBVSxLQUFLLEtBQUssT0FBTyxLQUFLO0NBQzlDLFFBQVE7RUFDTixPQUFPLE9BQU8sS0FBSztDQUNyQjtBQUNGLENBQUM7QUFHRCxTQUFTLGVBQWUsU0FBcUM7Q0FDM0QsT0FBTyxRQUNKLEtBQUssTUFBTSxVQUNWLFFBQVEsTUFBTSxJQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxRQUFRLEtBQU0saUJBQWlCLE1BQU0sSUFBSSxDQUN6RixDQUFDLENBQ0EsS0FBSyxFQUFFO0FBQ1o7QUFFQSxJQUFhLGlCQUFiLE1BQTRCO0NBTWY7Q0FDQTtDQU5YLG1CQUE0QixLQUFLLElBQUk7Q0FDckMsVUFBMkIsQ0FBQztDQUM1QixVQUFVO0NBRVYsWUFDRSxXQUFvQixrQkFDcEIsZ0JBQXlCLHlCQUN6QjtFQUZTLEtBQUEsV0FBQTtFQUNBLEtBQUEsZ0JBQUE7Q0FDUjtDQUVILEtBQUssUUFBeUI7RUFDNUIsSUFBSTtHQUNGLElBQUksT0FBTyxlQUFlLE9BQU8sT0FBTztHQUV4QyxJQUFJLEtBQUssU0FBUyxLQUFLLGVBQ3JCLE9BQU8sR0FBRyxLQUFLLE1BQU0sR0FBRyxLQUFLLGFBQWEsRUFBRTtHQUc5QyxLQUFLLFFBQVEsS0FBSztJQUNoQixLQUFLLEtBQUs7SUFDVixXQUFXLE9BQU87SUFDbEIsT0FBTyxPQUFPO0lBQ2QsVUFBVSxDQUFDLEdBQUcsT0FBTyxRQUFRO0lBQzdCO0dBQ0YsQ0FBQztHQUVELElBQUksS0FBSyxRQUFRLFNBQVMsS0FBSyxVQUM3QixLQUFLLFFBQVEsT0FBTyxHQUFHLEtBQUssUUFBUSxTQUFTLEtBQUssUUFBUTtFQUU5RCxRQUFRLENBRVI7Q0FDRjtDQUdBLE1BQU0sUUFBNEIsT0FBOEI7RUFDOUQsTUFBTSxZQUFZLEtBQUssVUFBVTtFQUNqQyxNQUFNLFlBQVksS0FBSyxRQUFRLEVBQUUsRUFBRSxPQUFPLEtBQUs7RUFFL0MsSUFBSSxXQUFXLFFBQVc7R0FDeEIsTUFBTSxVQUFVLEtBQUssUUFBUSxNQUFNLENBQUMsS0FBSztHQUV6QyxPQUFPO0lBQ0w7SUFDQSxZQUFZLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPO0lBQ25DLFNBQVM7R0FDWDtFQUNGO0VBR0EsSUFBSSxTQUFTLFdBQ1gsT0FBTztHQUFFLFNBQVMsQ0FBQztHQUFHLFlBQVk7R0FBVyxTQUFTO0VBQUU7RUFHMUQsTUFBTSxVQUFVLEtBQUssSUFBSSxZQUFZLFNBQVMsR0FBRyxDQUFDO0VBQ2xELE1BQU0sYUFBYSxLQUFLLFFBQVEsV0FBVyxVQUFVLE1BQU0sTUFBTSxNQUFNO0VBQ3ZFLE1BQU0sVUFBVSxlQUFlLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxNQUFNLFlBQVksYUFBYSxLQUFLO0VBRTFGLE9BQU87R0FDTDtHQUNBLFlBQVksUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sU0FBUztHQUM1QztFQUNGO0NBQ0Y7QUFDRjtBQUVBLE1BQWEsaUJBQWlCLElBQUksZUFBZTtBQUVqRCxNQUFhLGdCQUFzQixXQUFXO0NBQzVDLGVBQWUsS0FBSyxNQUFNO0FBQzVCIn0=
|
|
@@ -4,6 +4,7 @@ import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.140.0/hel
|
|
|
4
4
|
import __decorate from "../../_virtual/_@oxc-project_runtime@0.140.0/helpers/esm/decorate.js";
|
|
5
5
|
import { QgridDispatcher } from "../qgrid/qgrid.dispatcher.js";
|
|
6
6
|
import { RequestLogModel } from "../request-log/request-log.model.js";
|
|
7
|
+
import { z } from "zod";
|
|
7
8
|
import { BaseFrameClass, DB, api } from "sonamu";
|
|
8
9
|
//#region src/application/monit/monit.frame.ts
|
|
9
10
|
const RESPONSE_ENTRY_LIMIT = 1e3;
|
|
@@ -76,10 +77,17 @@ function currentVitals() {
|
|
|
76
77
|
anthropicInFlight: anthropic?.inFlight ?? 0
|
|
77
78
|
};
|
|
78
79
|
}
|
|
80
|
+
const dbConnectionInfoSchema = z.looseObject({
|
|
81
|
+
host: z.string().optional(),
|
|
82
|
+
database: z.string().optional()
|
|
83
|
+
});
|
|
79
84
|
function activeDbConnection() {
|
|
80
85
|
try {
|
|
81
|
-
const connection = DB.getDBConfig("w").connection;
|
|
82
|
-
if (
|
|
86
|
+
const connection = dbConnectionInfoSchema.safeParse(DB.getDBConfig("w").connection);
|
|
87
|
+
if (connection.success) return {
|
|
88
|
+
host: connection.data.host,
|
|
89
|
+
database: connection.data.database
|
|
90
|
+
};
|
|
83
91
|
} catch {}
|
|
84
92
|
return {
|
|
85
93
|
host: process.env.SONAMU_DB_HOST,
|
|
@@ -90,4 +98,4 @@ const MonitFrame = new MonitFrameClass();
|
|
|
90
98
|
//#endregion
|
|
91
99
|
export { MonitFrame };
|
|
92
100
|
|
|
93
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXQuZnJhbWUuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vbml0L21vbml0LmZyYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwaSwgQmFzZUZyYW1lQ2xhc3MsIERCIH0gZnJvbSBcInNvbmFtdVwiO1xuLy8g7J296riwIOyghOyaqSDrqqjri4jthLDrp4EgQVBJLiDsobDtmowg7J6Q7LK064qUIHJlcXVlc3QgbG9n7JeQIOuCqOq4sOyngCDslYrripTri6QuXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyByZXNvbHZlT3BlbkFJVHJhbnNwb3J0S2luZCB9IGZyb20gXCIuLi8uLi91dGlscy9wcm92aWRlcnMvb3BlbmFpL29wZW5haS10cmFuc3BvcnQtY29uZmlnXCI7XG5pbXBvcnQgeyBRZ3JpZERpc3BhdGNoZXIgfSBmcm9tIFwiLi4vcWdyaWQvcWdyaWQuZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgUmVxdWVzdExvZ01vZGVsIH0gZnJvbSBcIi4uL3JlcXVlc3QtbG9nL3JlcXVlc3QtbG9nLm1vZGVsXCI7XG5pbXBvcnQgeyBtb25pdExvZ0J1ZmZlciB9IGZyb20gXCIuL2xvZy1idWZmZXJcIjtcbmltcG9ydCB7XG4gIHR5cGUgTW9uaXRMb2dDaHVuayxcbiAgdHlwZSBNb25pdFNlcnZlckluZm8sXG4gIHR5cGUgTW9uaXRTdGF0cyxcbiAgdHlwZSBNb25pdFZpdGFscyxcbn0gZnJvbSBcIi4vbW9uaXQudHlwZXNcIjtcblxuLy8g7J2R64u164u5IOyXlO2KuOumrCDsg4HtlZwg4oCUIO2PtOungSDtgbTrnbzsnbTslrjtirjripQg64uk7J2MIO2PtOyXkOyEnCDsnbTslrTshJwg65Sw65287J6h64qU64ukLlxuY29uc3QgUkVTUE9OU0VfRU5UUllfTElNSVQgPSAxXzAwMDtcblxuY2xhc3MgTW9uaXRGcmFtZUNsYXNzIGV4dGVuZHMgQmFzZUZyYW1lQ2xhc3Mge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIk1vbml0XCIpO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgbW9uaXRMb2dzKGN1cnNvcj86IG51bWJlcik6IFByb21pc2U8TW9uaXRMb2dDaHVuaz4ge1xuICAgIHJldHVybiB7XG4gICAgICBwcm9jZXNzU3RhcnRlZEF0OiBtb25pdExvZ0J1ZmZlci5wcm9jZXNzU3RhcnRlZEF0LFxuICAgICAgLi4ubW9uaXRMb2dCdWZmZXIuYWZ0ZXIoY3Vyc29yLCBSRVNQT05TRV9FTlRSWV9MSU1JVCksXG4gICAgICB2aXRhbHM6IGN1cnJlbnRWaXRhbHMoKSxcbiAgICB9O1xuICB9XG5cbiAgLy8g7ZSE66Gc7IS47IqkIOygleyggSDsoJXrs7Qg4oCUIO2PtOungSDrtojtlYTsmpQsIO2OmOydtOyngOuLuSAx7ZqMIOyhsO2ajC5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwidGFuc3RhY2stcXVlcnlcIl0gfSlcbiAgYXN5bmMgbW9uaXRJbmZvKCk6IFByb21pc2U8TW9uaXRTZXJ2ZXJJbmZvPiB7XG4gICAgY29uc3QgdHJhbnNwb3J0ID0gcmVzb2x2ZU9wZW5BSVRyYW5zcG9ydEtpbmQoKTtcbiAgICBjb25zdCBob3N0ID0gcHJvY2Vzcy5lbnYuSE9TVCA/PyBcImxvY2FsaG9zdFwiO1xuICAgIGNvbnN0IHBvcnQgPSBwcm9jZXNzLmVudi5QT1JUID8/IFwiNDQ5MDBcIjtcbiAgICBjb25zdCBjb25uID0gYWN0aXZlRGJDb25uZWN0aW9uKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2VydmVyVXJsOiBgaHR0cDovLyR7aG9zdH06JHtwb3J0fWAsXG4gICAgICBkYkhvc3Q6IGNvbm4uaG9zdCA/PyBcImxvY2FsaG9zdFwiLFxuICAgICAgZGJOYW1lOiBjb25uLmRhdGFiYXNlID8/IFwicWdyaWRcIixcbiAgICAgIG9wZW5haTogeyB0cmFuc3BvcnQgfSxcbiAgICB9O1xuICB9XG5cbiAgLy8gRELrpbwg7KGw7ZqM7ZWY66+A66GcIOuplOuqqOumrCDquLDrsJggdml0YWxz67O064ukIOuKkOumsCDso7zquLDroZwg7Y+066eB7ZWc64ukLlxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJ0YW5zdGFjay1xdWVyeVwiXSB9KVxuICBhc3luYyBtb25pdFN0YXRzKCk6IFByb21pc2U8TW9uaXRTdGF0cz4ge1xuICAgIGNvbnN0IHdpbmRvd01pbnV0ZXMgPSA2MDtcbiAgICBjb25zdCBzaW5jZSA9IG5ldyBEYXRlKERhdGUubm93KCkgLSB3aW5kb3dNaW51dGVzICogNjBfMDAwKTtcblxuICAgIHJldHVybiB7IHdpbmRvd01pbnV0ZXMsIHByb3ZpZGVyczogYXdhaXQgUmVxdWVzdExvZ01vZGVsLnByb3ZpZGVyU3RhdHNTaW5jZShzaW5jZSkgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjdXJyZW50Vml0YWxzKCk6IE1vbml0Vml0YWxzIHtcbiAgY29uc3QgYW50aHJvcGljID0gUWdyaWREaXNwYXRjaGVyLmFudGhyb3BpY0Rpc3BhdGNoZXI7XG5cbiAgcmV0dXJuIHtcbiAgICBvcGVuYWlJbkZsaWdodDogUWdyaWREaXNwYXRjaGVyLm9wZW5haURpc3BhdGNoZXI/LmluRmxpZ2h0ID8/IDAsXG4gICAgb3BlbmFpUXVvdGFCeVRva2VuOiBRZ3JpZERpc3BhdGNoZXIub3BlbmFpRGlzcGF0Y2hlcj8uZ2V0UXVvdGFTbmFwc2hvdCgpID8/IFtdLFxuICAgIGFudGhyb3BpY1Rva2VuQ291bnQ6IGFudGhyb3BpYz8udG9rZW5Qb29sLnNpemUgPz8gMCxcbiAgICBhbnRocm9waWNUb2tlbk5hbWVzOiBhbnRocm9waWNcbiAgICAgID8gWy4uLmFudGhyb3BpYy50b2tlblBvb2wudmFsdWVzKCldLm1hcCgodG9rZW4pID0+IHRva2VuLm5hbWUpLnRvU29ydGVkKClcbiAgICAgIDogW10sXG4gICAgYW50aHJvcGljSW5GbGlnaHQ6IGFudGhyb3BpYz8uaW5GbGlnaHQgPz8gMCxcbiAgfTtcbn1cblxuLy8g7Iuk7KCcIO2ZnOyEsSBrbmV4IOyXsOqysOyXkOyEnCDsnb3ripTri6Qg4oCUIGRldiDshJzrsoTsnZgg7Ya17ZWpIO2FjOyKpO2KuCDrn6zrhIjqsIAgcHJvY2Vzcy5lbnYuU09OQU1VX0RCX05BTUUg7J2EXG4vLyDthYzsiqTtirggREIg7J2066aE7Jy866GcIOuNruyWtOyTsOuvgOuhnCBlbnYg64qUIOyLoOuisO2VoCDsiJgg7JeG64ukLiBEQiDrr7jstIjquLDtmZQo67aA7YyFIOyghCkg7Iuc7JeQ66eMIGVudiDtj7TrsLEuXG5pbnRlcmZhY2UgRGJDb25uZWN0aW9uSW5mbyB7XG4gIGhvc3Q/OiBzdHJpbmc7XG4gIGRhdGFiYXNlPzogc3RyaW5nO1xufVxuXG4vLyBrbmV4IGFjY2VwdHMgYSBjb25uZWN0aW9uIHN0cmluZywgb2JqZWN0LCBvciBmYWN0b3J5OyBvbmx5IHRoZSBvYmplY3QgZm9ybSBjYXJyaWVzIHRoZXNlIGZpZWxkcy5cbmNvbnN0IGRiQ29ubmVjdGlvbkluZm9TY2hlbWEgPSB6Lmxvb3NlT2JqZWN0KHtcbiAgaG9zdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBkYXRhYmFzZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSk7XG5cbmZ1bmN0aW9uIGFjdGl2ZURiQ29ubmVjdGlvbigpOiBEYkNvbm5lY3Rpb25JbmZvIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gZGJDb25uZWN0aW9uSW5mb1NjaGVtYS5zYWZlUGFyc2UoREIuZ2V0REJDb25maWcoXCJ3XCIpLmNvbm5lY3Rpb24pO1xuXG4gICAgaWYgKGNvbm5lY3Rpb24uc3VjY2Vzcykge1xuICAgICAgcmV0dXJuIHsgaG9zdDogY29ubmVjdGlvbi5kYXRhLmhvc3QsIGRhdGFiYXNlOiBjb25uZWN0aW9uLmRhdGEuZGF0YWJhc2UgfTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIERCIGNvbmZpZyDrr7jstIjquLDtmZQg4oCUIGVudiDtj7TrsLHsnLzroZwg7KeE7ZaJXG4gIH1cblxuICByZXR1cm4geyBob3N0OiBwcm9jZXNzLmVudi5TT05BTVVfREJfSE9TVCwgZGF0YWJhc2U6IHByb2Nlc3MuZW52LlNPTkFNVV9EQl9OQU1FIH07XG59XG5cbmV4cG9ydCBjb25zdCBNb25pdEZyYW1lID0gbmV3IE1vbml0RnJhbWVDbGFzcygpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFnQkEsTUFBTSx1QkFBdUI7QUFFN0IsSUFBTSxrQkFBTixjQUE4QixlQUFlO0NBQzNDLGNBQWM7RUFDWixNQUFNLE9BQU87Q0FDZjtDQUVBLE1BQ00sVUFBVSxRQUF5QztFQUN2RCxPQUFPO0dBQ0wsa0JBQWtCLGVBQWU7R0FDakMsR0FBRyxlQUFlLE1BQU0sUUFBUSxvQkFBb0I7R0FDcEQsUUFBUSxjQUFjO0VBQ3hCO0NBQ0Y7Q0FHQSxNQUNNLFlBQXNDO0VBQzFDLE1BQU0sWUFBWSwyQkFBMkI7RUFDN0MsTUFBTSxPQUFPLFFBQVEsSUFBSSxRQUFRO0VBQ2pDLE1BQU0sT0FBTyxRQUFRLElBQUksUUFBUTtFQUNqQyxNQUFNLE9BQU8sbUJBQW1CO0VBRWhDLE9BQU87R0FDTCxXQUFXLFVBQVUsS0FBSyxHQUFHO0dBQzdCLFFBQVEsS0FBSyxRQUFRO0dBQ3JCLFFBQVEsS0FBSyxZQUFZO0dBQ3pCLFFBQVEsRUFBRSxVQUFVO0VBQ3RCO0NBQ0Y7Q0FHQSxNQUNNLGFBQWtDO0VBQ3RDLE1BQU0sZ0JBQWdCO0VBQ3RCLE1BQU0sd0JBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLGdCQUFnQixHQUFNO0VBRTFELE9BQU87R0FBRTtHQUFlLFdBQVcsTUFBTSxnQkFBZ0IsbUJBQW1CLEtBQUs7RUFBRTtDQUNyRjtBQUNGOztDQWpDRyxJQUFJO0VBQUUsWUFBWTtFQUFPLFNBQVMsQ0FBQyxTQUFTLGdCQUFnQjtDQUFFLENBQUM7Ozs7OztDQVUvRCxJQUFJO0VBQUUsWUFBWTtFQUFPLFNBQVMsQ0FBQyxTQUFTLGdCQUFnQjtDQUFFLENBQUM7Ozs7OztDQWdCL0QsSUFBSTtFQUFFLFlBQVk7RUFBTyxTQUFTLENBQUMsU0FBUyxnQkFBZ0I7Q0FBRSxDQUFDOzs7OztBQVNsRSxTQUFTLGdCQUE2QjtDQUNwQyxNQUFNLFlBQVksZ0JBQWdCO0NBRWxDLE9BQU87RUFDTCxnQkFBZ0IsZ0JBQWdCLGtCQUFrQixZQUFZO0VBQzlELG9CQUFvQixnQkFBZ0Isa0JBQWtCLGlCQUFpQixLQUFLLENBQUM7RUFDN0UscUJBQXFCLFdBQVcsVUFBVSxRQUFRO0VBQ2xELHFCQUFxQixZQUNqQixDQUFDLEdBQUcsVUFBVSxVQUFVLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVLE1BQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxJQUN0RSxDQUFDO0VBQ0wsbUJBQW1CLFdBQVcsWUFBWTtDQUM1QztBQUNGO0FBVUEsTUFBTSx5QkFBeUIsRUFBRSxZQUFZO0NBQzNDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzFCLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0FBQ2hDLENBQUM7QUFFRCxTQUFTLHFCQUF1QztDQUM5QyxJQUFJO0VBQ0YsTUFBTSxhQUFhLHVCQUF1QixVQUFVLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxVQUFVO0VBRWxGLElBQUksV0FBVyxTQUNiLE9BQU87R0FBRSxNQUFNLFdBQVcsS0FBSztHQUFNLFVBQVUsV0FBVyxLQUFLO0VBQVM7Q0FFNUUsUUFBUSxDQUVSO0NBRUEsT0FBTztFQUFFLE1BQU0sUUFBUSxJQUFJO0VBQWdCLFVBQVUsUUFBUSxJQUFJO0NBQWU7QUFDbEY7QUFFQSxNQUFhLGFBQWEsSUFBSSxnQkFBZ0IifQ==
|
|
@@ -47,4 +47,4 @@ const MonitStats = z.object({
|
|
|
47
47
|
//#endregion
|
|
48
48
|
export { MonitLogChunk, MonitLogEntry, MonitProviderStats, MonitServerInfo, MonitStats, MonitVitals };
|
|
49
49
|
|
|
50
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXQudHlwZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vbml0L21vbml0LnR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbi8vIOKUgOKUgOKUgCBNb25pdCAo7ZSE66Gc7IS47IqkIOuhnOq3uCDqtIDsuKEpIOKUgOKUgOKUgFxuLy9cbi8vIHRpbWVzdGFtcC9wcm9jZXNzU3RhcnRlZEF0IOydgCBlcG9jaCBtcyDsiKvsnpDri6QuIHdlYiDsoITsl60gZGF0ZVJldml2ZXIg6rCAIElTTyDrrLjsnpDsl7TsnYRcbi8vIERhdGUg66GcIOuzgO2ZmO2VmOuvgOuhnCwg7Iir7J6Q66eM7J20IOyerOyLnOyekSDqsJDsp4AocHJvY2Vzc1N0YXJ0ZWRBdCDrj5nrk7HshLEp7JmAIOy7pOyEnCDruYTqtZDrpbwg67O07KG07ZWc64ukLlxuLy8g7J20IO2MjOydvOydgCB3ZWIg7Jy866GcIOq3uOuMgOuhnCBzeW5jIOuQmOuvgOuhnCDshJzrsoQg7KCE7JqpIGltcG9ydCDrpbwg65GQ7KeAIOyViuuKlOuLpC5cblxuZXhwb3J0IGNvbnN0IE1vbml0TG9nRW50cnkgPSB6Lm9iamVjdCh7XG4gIHNlcTogei5udW1iZXIoKSxcbiAgdGltZXN0YW1wOiB6Lm51bWJlcigpLFxuICBsZXZlbDogei5zdHJpbmcoKSxcbiAgY2F0ZWdvcnk6IHouYXJyYXkoei5zdHJpbmcoKSksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcblxuZXhwb3J0IHR5cGUgTW9uaXRMb2dFbnRyeSA9IHouaW5mZXI8dHlwZW9mIE1vbml0TG9nRW50cnk+O1xuXG4vLyDtj7Trp4Hsl5Ag7Y647Iq57ZWY64qUIOudvOydtOu4jCDsubTsmrTtirgg4oCUIOq5iuydgCDthqDtgbAg7KeE64uo7J2AIGF1ZGl0IOuMgOyLnOuztOuTnCjrs4Trj4Qp7J2YIOuqq+ydtOqzoCxcbi8vIOyXrOq4sOuKlCBcIuyngOq4iCDsmpTssq3snbQg66qHIOqwnCDrgpjqsIAg7J6I6rOgIOy/vO2EsOqwgCDslrzrp4jrgpgg7LC864KYXCLrp4wg6rCA67ON6rKMIOuLte2VnOuLpC5cbmV4cG9ydCBjb25zdCBNb25pdFZpdGFscyA9IHoub2JqZWN0KHtcbiAgLy8g7KeA6riIIOuCmOqwgCDsnojripQg64+Z7IucIOyalOyyrSDsiJgg4oCUIOyDge2VnCDsl4bsnYwoQW50aHJvcGljIOqzvCDrj5nsnbztlZwgc3RhdGVsZXNzIOyLpO2WiSDrqqjrjbgpLlxuICAvLyDthqDtgbDrs4Qg7Iir7J6Q64qUIOuFuOy2nO2VmOyngCDslYrripTri6Q6IEFudGhyb3BpYyDsuanqs7wg64+Z7J287ZWY6rKMIOydtOumhCDrgpjsl7TsnbQg6riw67O47J206rOgLFxuICAvLyDthqDtgbAg64uo7JyE66GcIOydmOuvuCDsnojripQg7IOB7YOc64qUIOy/vO2EsCDsiqTrg4Xsg7fsnbQg66eh64qU64ukLlxuICBvcGVuYWlJbkZsaWdodDogei5udW1iZXIoKSxcbiAgLy8g7Yag7YGw67OEIOy/vO2EsCDsiqTrg4Xsg7cg4oCUIGRpc3BhdGNoZXIg7J2YIDYw7LSIIHJhdGUtbGltaXRzIOy6kOyLnOyXkOyEnOunjCDsnb3ripTri6Qo67mE7Iug7ISg7J2066m0IG51bGwpLlxuICAvLyB0aHJlc2hvbGQg66+47ISk7KCVIO2GoO2BsOydgCDsv7zthLAg7YyQ7KCV7J2EIOuPjOyngCDslYrslYQgdXNlZFBlcmNlbnQg6rCAIOqzhOyGjSBudWxsIOydvCDsiJgg7J6I64ukLlxuICBvcGVuYWlRdW90YUJ5VG9rZW46IHouYXJyYXkoXG4gICAgei5vYmplY3Qoe1xuICAgICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICAgIHVzZWRQZXJjZW50OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gICAgICB0aHJlc2hvbGQ6IHoubnVtYmVyKCkubnVsbGFibGUoKSxcbiAgICAgIGJsb2NrZWQ6IHouYm9vbGVhbigpLFxuICAgICAgLy8gbXMgZXBvY2gg4oCUIGRpc3BhdGNoZXIg6rCAIHdoYW0g7J2YIHVuaXgg7LSI66W8IOygleq3nO2ZlO2VtOyEnCDrgrTroKTspIDri6RcbiAgICAgIHJlc2V0c0F0OiB6Lm51bWJlcigpLm51bGxhYmxlKCksXG4gICAgfSksXG4gICksXG4gIGFudGhyb3BpY1Rva2VuQ291bnQ6IHoubnVtYmVyKCksXG4gIC8vIGZyZXNoLXNwYXduIOydtOudvCDsg4Hso7wg7ZSE66Gc7IS47Iqk6rCAIOyXhuuLpCDigJQg7ZKA7JeQIOyWtOuWpCDthqDtgbDsnbQg7J6I64qU7KeA66eMIOuztOyXrOykgOuLpFxuICBhbnRocm9waWNUb2tlbk5hbWVzOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAvLyDsp4DquIgg7Iuk7ZaJIOykkeyduCBDbGF1ZGUgQ29kZSDtlITroZzshLjsiqQg7IiYXG4gIGFudGhyb3BpY0luRmxpZ2h0OiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCB0eXBlIE1vbml0Vml0YWxzID0gei5pbmZlcjx0eXBlb2YgTW9uaXRWaXRhbHM+O1xuXG5leHBvcnQgY29uc3QgTW9uaXRMb2dDaHVuayA9IHoub2JqZWN0KHtcbiAgcHJvY2Vzc1N0YXJ0ZWRBdDogei5udW1iZXIoKSxcbiAgZW50cmllczogei5hcnJheShNb25pdExvZ0VudHJ5KSxcbiAgbmV4dEN1cnNvcjogei5udW1iZXIoKSxcbiAgLy8g7Zi47Lac7J6Q7J2YIOy7pOyEnOqwgCBidWZmZXIgZXZpY3Rpb24g7JeQIOuwgOugpCDsnKDsi6TrkJwg65287J24IOyImFxuICBkcm9wcGVkOiB6Lm51bWJlcigpLFxuICB2aXRhbHM6IE1vbml0Vml0YWxzLFxufSk7XG5cbmV4cG9ydCB0eXBlIE1vbml0TG9nQ2h1bmsgPSB6LmluZmVyPHR5cGVvZiBNb25pdExvZ0NodW5rPjtcblxuLy8g7ZSE66Gc7IS47IqkIOuLqOychCDsoJXsoIEg7ZmY6rK9IOygleuztCDigJQg7Ja064qQIOyEnOuyhC9EQiDrpbwg67O06rOgIOyeiOuKlOyngCDtlZzriIjsl5Ag7ZmV7J247ZWY64qUIOyaqeuPhC5cbi8vIOu5hOuwgOqwkihEQiDruYTrsIDrsojtmLgsIO2GoO2BsCnsnYAg7KCI64yAIOyLo+yngCDslYrripTri6QuXG5leHBvcnQgY29uc3QgTW9uaXRTZXJ2ZXJJbmZvID0gei5vYmplY3Qoe1xuICBzZXJ2ZXJVcmw6IHouc3RyaW5nKCksXG4gIGRiSG9zdDogei5zdHJpbmcoKSxcbiAgZGJOYW1lOiB6LnN0cmluZygpLFxuICAvLyBwZXJtaXQv7YGQIOygnOqxsCDtm4Qg64Ko7J2AIOygleyggSDshKTsoJXsnYAg7KCE7IahIOuwqeyLneu/kOydtOuLpC4g64+Z7Iuc7ISxIOyDge2VnOydgCDsl4bri6QuXG4gIG9wZW5haTogei5vYmplY3Qoe1xuICAgIHRyYW5zcG9ydDogei5zdHJpbmcoKSxcbiAgfSksXG59KTtcblxuZXhwb3J0IHR5cGUgTW9uaXRTZXJ2ZXJJbmZvID0gei5pbmZlcjx0eXBlb2YgTW9uaXRTZXJ2ZXJJbmZvPjtcblxuLy8g7LWc6re8IDHsi5zqsIQgcHJvdmlkZXIg67OEIOyalOyyrSDthrXqs4Qg4oCUIHJlcXVlc3RfbG9ncyDrpbwg7KeR6rOE7ZWc64ukLiB2aXRhbHMg7JmAIOuLrOumrCBEQiDrpbxcbi8vIO2DgOuvgOuhnCDrs4Trj4QgZW5kcG9pbnQg66GcIOu2hOumrO2VtCDrjZQg64qQ7Iqo7ZWcIOyjvOq4sOuhnCDtj7Trp4HtlZzri6QuXG5leHBvcnQgY29uc3QgTW9uaXRQcm92aWRlclN0YXRzID0gei5vYmplY3Qoe1xuICBwcm92aWRlcjogei5zdHJpbmcoKSwgLy8gXCJvcGVuYWlcIiB8IFwiYW50aHJvcGljXCIgfCBcInVua25vd25cIlxuICByZXF1ZXN0czogei5udW1iZXIoKSxcbiAgZXJyb3JzOiB6Lm51bWJlcigpLFxuICBpbnB1dFRva2Vuczogei5udW1iZXIoKSxcbiAgY2FjaGVSZWFkVG9rZW5zOiB6Lm51bWJlcigpLFxufSk7XG5cbmV4cG9ydCB0eXBlIE1vbml0UHJvdmlkZXJTdGF0cyA9IHouaW5mZXI8dHlwZW9mIE1vbml0UHJvdmlkZXJTdGF0cz47XG5cbmV4cG9ydCBjb25zdCBNb25pdFN0YXRzID0gei5vYmplY3Qoe1xuICB3aW5kb3dNaW51dGVzOiB6Lm51bWJlcigpLFxuICBwcm92aWRlcnM6IHouYXJyYXkoTW9uaXRQcm92aWRlclN0YXRzKSxcbn0pO1xuXG5leHBvcnQgdHlwZSBNb25pdFN0YXRzID0gei5pbmZlcjx0eXBlb2YgTW9uaXRTdGF0cz47XG4iXSwibWFwcGluZ3MiOiI7O0FBUUEsTUFBYSxnQkFBZ0IsRUFBRSxPQUFPO0NBQ3BDLEtBQUssRUFBRSxPQUFPO0NBQ2QsV0FBVyxFQUFFLE9BQU87Q0FDcEIsT0FBTyxFQUFFLE9BQU87Q0FDaEIsVUFBVSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7Q0FDNUIsTUFBTSxFQUFFLE9BQU87QUFDakIsQ0FBQztBQU1ELE1BQWEsY0FBYyxFQUFFLE9BQU87Q0FJbEMsZ0JBQWdCLEVBQUUsT0FBTztDQUd6QixvQkFBb0IsRUFBRSxNQUNwQixFQUFFLE9BQU87RUFDUCxNQUFNLEVBQUUsT0FBTztFQUNmLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0VBQ2pDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0VBQy9CLFNBQVMsRUFBRSxRQUFRO0VBRW5CLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ2hDLENBQUMsQ0FDSDtDQUNBLHFCQUFxQixFQUFFLE9BQU87Q0FFOUIscUJBQXFCLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztDQUV2QyxtQkFBbUIsRUFBRSxPQUFPO0FBQzlCLENBQUM7QUFJRCxNQUFhLGdCQUFnQixFQUFFLE9BQU87Q0FDcEMsa0JBQWtCLEVBQUUsT0FBTztDQUMzQixTQUFTLEVBQUUsTUFBTSxhQUFhO0NBQzlCLFlBQVksRUFBRSxPQUFPO0NBRXJCLFNBQVMsRUFBRSxPQUFPO0NBQ2xCLFFBQVE7QUFDVixDQUFDO0FBTUQsTUFBYSxrQkFBa0IsRUFBRSxPQUFPO0NBQ3RDLFdBQVcsRUFBRSxPQUFPO0NBQ3BCLFFBQVEsRUFBRSxPQUFPO0NBQ2pCLFFBQVEsRUFBRSxPQUFPO0NBRWpCLFFBQVEsRUFBRSxPQUFPLEVBQ2YsV0FBVyxFQUFFLE9BQU8sRUFDdEIsQ0FBQztBQUNILENBQUM7QUFNRCxNQUFhLHFCQUFxQixFQUFFLE9BQU87Q0FDekMsVUFBVSxFQUFFLE9BQU87Q0FDbkIsVUFBVSxFQUFFLE9BQU87Q0FDbkIsUUFBUSxFQUFFLE9BQU87Q0FDakIsYUFBYSxFQUFFLE9BQU87Q0FDdEIsaUJBQWlCLEVBQUUsT0FBTztBQUM1QixDQUFDO0FBSUQsTUFBYSxhQUFhLEVBQUUsT0FBTztDQUNqQyxlQUFlLEVBQUUsT0FBTztDQUN4QixXQUFXLEVBQUUsTUFBTSxrQkFBa0I7QUFDdkMsQ0FBQyJ9
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import { jsonValueSchema } from "../../utils/providers/common/provider-types.js";
|
|
2
|
+
import { z } from "zod";
|
|
1
3
|
import { createHash } from "node:crypto";
|
|
2
4
|
//#region src/application/qgrid/conv-routing.ts
|
|
3
5
|
/**
|
|
4
6
|
* conv-routing — 대화 연속성(cache affinity) 좌표 검증/구성.
|
|
5
7
|
*
|
|
6
8
|
* 모든 turn은 현재 input과 전체 history를 전달한다.
|
|
7
|
-
* OpenAI의 epoch=-1 좌표는 system/model hash와 opaque affinity를 검증한 뒤
|
|
9
|
+
* Direct provider(OpenAI, Grok)의 epoch=-1 좌표는 system/model hash와 opaque affinity를 검증한 뒤
|
|
8
10
|
* token 선택과 prompt-cache 힌트로만 사용한다.
|
|
9
11
|
*/
|
|
10
12
|
function systemHash(system, modelNamespace) {
|
|
@@ -18,11 +20,12 @@ function toolResultsToText(toolResults) {
|
|
|
18
20
|
}).join("\n")}\n\nNow continue answering the user's request using these results.`;
|
|
19
21
|
}
|
|
20
22
|
function decideConvRouting(input, options = {}) {
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
+
const directProvider = options.directProvider;
|
|
24
|
+
const sysHash = systemHash(input.system, directProvider === void 0 ? void 0 : options.modelNamespace ?? input.model ?? directProvider);
|
|
25
|
+
const history = input.history ? z.array(jsonValueSchema).parse(JSON.parse(input.history)) : void 0;
|
|
23
26
|
const coord = input.runContext?.threadCoord;
|
|
24
|
-
const directCoordEligible =
|
|
25
|
-
const cacheKey =
|
|
27
|
+
const directCoordEligible = directProvider !== void 0 && coord?.epoch === -1 && coord.systemHash === sysHash && input.cacheAffinityKey !== void 0 && coord.threadId === input.cacheAffinityKey;
|
|
28
|
+
const cacheKey = directProvider === void 0 ? void 0 : input.cacheAffinityKey;
|
|
26
29
|
return {
|
|
27
30
|
coldInput: buildDeltaInput(input),
|
|
28
31
|
coldHistory: history,
|
|
@@ -80,4 +83,4 @@ function issueConvContext(threadCoord, decision, preferredTokenId = threadCoord.
|
|
|
80
83
|
//#endregion
|
|
81
84
|
export { decideConvRouting, issueConvContext, systemHash };
|
|
82
85
|
|
|
83
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udi1yb3V0aW5nLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9jb252LXJvdXRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBjb252LXJvdXRpbmcg4oCUIOuMgO2ZlCDsl7Dsho3shLEoY2FjaGUgYWZmaW5pdHkpIOyijO2RnCDqsoDspp0v6rWs7ISxLlxuICpcbiAqIOuqqOuToCB0dXJu7J2AIO2YhOyerCBpbnB1dOqzvCDsoITssrQgaGlzdG9yeeulvCDsoITri6ztlZzri6QuXG4gKiBPcGVuQUnsnZggZXBvY2g9LTEg7KKM7ZGc64qUIHN5c3RlbS9tb2RlbCBoYXNo7JmAIG9wYXF1ZSBhZmZpbml0eeulvCDqsoDspp3tlZwg65KkXG4gKiB0b2tlbiDshKDtg53qs7wgcHJvbXB0LWNhY2hlIO2ejO2KuOuhnOunjCDsgqzsmqntlZzri6QuXG4gKi9cbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuaW1wb3J0IHsgdHlwZSBSZXVzZVRocmVhZENvb3JkIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3Byb3ZpZGVycy9jb21tb24vcHJvdmlkZXItZGlzcGF0Y2hlclwiO1xuaW1wb3J0IHsgdHlwZSBKc29uVmFsdWUsIHR5cGUgVXNlcklucHV0IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3Byb3ZpZGVycy9jb21tb24vcHJvdmlkZXItdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgUWdyaWRUaHJlYWRDb29yZCwgdHlwZSBRdWVyeUlucHV0LCB0eXBlIFFncmlkVG9vbFJlc3VsdElucHV0IH0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHN5c3RlbUhhc2goc3lzdGVtPzogc3RyaW5nLCBtb2RlbE5hbWVzcGFjZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBjcmVhdGVIYXNoKFwic2hhMjU2XCIpXG4gICAgLnVwZGF0ZShtb2RlbE5hbWVzcGFjZSA9PT0gdW5kZWZpbmVkID8gKHN5c3RlbSA/PyBcIlwiKSA6IGAke21vZGVsTmFtZXNwYWNlfVxcMCR7c3lzdGVtID8/IFwiXCJ9YClcbiAgICAuZGlnZXN0KFwiaGV4XCIpXG4gICAgLnNsaWNlKDAsIDE2KTtcbn1cblxuLy8gdG9vbCDqsrDqs7zrpbwg64uk7J2MIHR1cm4g7J2YIGlucHV0IHRleHQg66GcIOuzgO2ZmCAocHJvdmlkZXIg7J6F66Cl7J2AIFVzZXJJbnB1dCDrp4wg67Cb7J2MKS5cbmZ1bmN0aW9uIHRvb2xSZXN1bHRzVG9UZXh0KHRvb2xSZXN1bHRzOiBRZ3JpZFRvb2xSZXN1bHRJbnB1dFtdKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSB0b29sUmVzdWx0cy5tYXAoKHRyKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRyLnRvb2xOYW1lID8gYCAoJHt0ci50b29sTmFtZX0pYCA6IFwiXCI7XG4gICAgY29uc3QgZXJyTWFyayA9IHRyLmlzRXJyb3IgPyBcIiBbZXJyb3JdXCIgOiBcIlwiO1xuICAgIHJldHVybiBgVG9vbCByZXN1bHQgZm9yIGNhbGwgJHt0ci50b29sQ2FsbElkfSR7bmFtZX0ke2Vyck1hcmt9OiAke3RyLm91dHB1dH1gO1xuICB9KTtcbiAgcmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuXFxuTm93IGNvbnRpbnVlIGFuc3dlcmluZyB0aGUgdXNlcidzIHJlcXVlc3QgdXNpbmcgdGhlc2UgcmVzdWx0cy5gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZEZWNpc2lvbiB7XG4gIC8vIOunpCB0dXJu7J2YIO2YhOyerCB1c2VyL3Rvb2wgaW5wdXQuXG4gIGNvbGRJbnB1dDogQXJyYXk8VXNlcklucHV0PjtcbiAgLy8g66ekIHR1cm7sl5Ag64uk7IucIOyghOuLrO2VoCDsoITssrQgaGlzdG9yeS5cbiAgY29sZEhpc3Rvcnk/OiBBcnJheTxKc29uVmFsdWU+O1xuICAvLyDsnbQg7JqU7LKtIOyLnOygkOydmCBzeXN0ZW0g7ZW07IucICjsnZHri7Xsl5DshJwgdGhyZWFkIOyijO2RnCDrsJzquIkg7IucIOyCrOyaqSkuXG4gIHN5c3RlbUhhc2g6IHN0cmluZztcbiAgLy8gRGlyZWN0LXByb3ZpZGVyIGNhY2hlIGFmZmluaXR5LiBQcmVzZW5jZSBtYXJrcyB0aGUgZXBvY2g9LTEgY29vcmRpbmF0ZSBzZW1hbnRpY3MuXG4gIHByb21wdENhY2hlS2V5Pzogc3RyaW5nO1xuICBwcmVmZXJyZWRUb2tlbklkPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZSb3V0aW5nT3B0aW9ucyB7XG4gIGRpcmVjdE9wZW5BST86IGJvb2xlYW47XG4gIG1vZGVsTmFtZXNwYWNlPzogc3RyaW5nO1xufVxuXG4vLyDsnoXroKXqs7wg7KCE7LK0IGhpc3Rvcnnrpbwg6rWs7ISx7ZWY6rOgLCDqsoDspp3rkJwgT3BlbkFJIGNhY2hlIGFmZmluaXR566eMIOu2gOqwgO2VnOuLpC5cbmV4cG9ydCBmdW5jdGlvbiBkZWNpZGVDb252Um91dGluZyhcbiAgaW5wdXQ6IFF1ZXJ5SW5wdXQsXG4gIG9wdGlvbnM6IENvbnZSb3V0aW5nT3B0aW9ucyA9IHt9LFxuKTogQ29udkRlY2lzaW9uIHtcbiAgY29uc3Qgc3lzSGFzaCA9IHN5c3RlbUhhc2goXG4gICAgaW5wdXQuc3lzdGVtLFxuICAgIG9wdGlvbnMuZGlyZWN0T3BlbkFJID8gKG9wdGlvbnMubW9kZWxOYW1lc3BhY2UgPz8gaW5wdXQubW9kZWwgPz8gXCJvcGVuYWlcIikgOiB1bmRlZmluZWQsXG4gICk7XG4gIGNvbnN0IGhpc3Rvcnk6IEFycmF5PEpzb25WYWx1ZT4gfCB1bmRlZmluZWQgPSBpbnB1dC5oaXN0b3J5XG4gICAgPyAoSlNPTi5wYXJzZShpbnB1dC5oaXN0b3J5KSBhcyBBcnJheTxKc29uVmFsdWU+KVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGNvb3JkID0gaW5wdXQucnVuQ29udGV4dD8udGhyZWFkQ29vcmQ7XG5cbiAgLy8g7J6s7IKs7JqpIOyekOqyqTog7KKM7ZGcIOyhtOyerCArIHN5c3RlbSDrj5nsnbwuIHNlc3Npb25LZXkg6rKp66asICsgc3lzdGVtSGFzaCDroZwg64yA7ZmUIOuPmeydvOyEseydtFxuICAvLyDrs7TsnqXrkJjqs6AsIOqzte2GtSBwcmVmaXgg64qUIOuwseyXlOuTnOqwgCBwcm9tcHRfY2FjaGVfa2V5IOqzoOygleycvOuhnCDslYzslYTshJwg7LqQ7Iuc7ZWc64ukLlxuICBjb25zdCBkaXJlY3RDb29yZEVsaWdpYmxlID1cbiAgICBvcHRpb25zLmRpcmVjdE9wZW5BSSA9PT0gdHJ1ZSAmJlxuICAgIGNvb3JkPy5lcG9jaCA9PT0gLTEgJiZcbiAgICBjb29yZC5zeXN0ZW1IYXNoID09PSBzeXNIYXNoICYmXG4gICAgaW5wdXQuY2FjaGVBZmZpbml0eUtleSAhPT0gdW5kZWZpbmVkICYmXG4gICAgY29vcmQudGhyZWFkSWQgPT09IGlucHV0LmNhY2hlQWZmaW5pdHlLZXk7XG4gIC8vIGFmZmluaXR5IOulvCDsmpTssq3tlZjsp4Ag7JWK7J2AIG9uZS1zaG90IOyalOyyreyXkCDsnoTsnZgg7YKk66W8IOu2meydtOuptCB0cmFuc3BvcnQg6rCAIOq3uCDshozsvJPsnYRcbiAgLy8gYWZmaW5pdHkg7IaM7LyT7Jy866GcIOyYpOyduO2VtCDsnqzsgqzsmqnrkJjsp4Ag7JWK7J2EIOyXsOqysOydhCDqs4Tsho0g67aZ65Ok7Ja0IOuRlOuLpCDihpIg7YKk66W8IOu5hOybjCDrkZTri6QuXG4gIGNvbnN0IGNhY2hlS2V5ID0gb3B0aW9ucy5kaXJlY3RPcGVuQUkgPyBpbnB1dC5jYWNoZUFmZmluaXR5S2V5IDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgLy8gdG9vbCBmb2xsb3ctdXDrj4Qg7Iuk7ZaJIHVzZXIg7KSE7JeQIOqysOqzvOulvCDsgqzsmqntlbQg6rOE7IaNIOuLte2VmOudvOuKlCDslYjrgrTrpbwg64u064qU64ukLlxuICAgIGNvbGRJbnB1dDogYnVpbGREZWx0YUlucHV0KGlucHV0KSxcbiAgICBjb2xkSGlzdG9yeTogaGlzdG9yeSxcbiAgICBzeXN0ZW1IYXNoOiBzeXNIYXNoLFxuICAgIHByb21wdENhY2hlS2V5OiBjYWNoZUtleSxcbiAgICBwcmVmZXJyZWRUb2tlbklkOiBkaXJlY3RDb29yZEVsaWdpYmxlID8gY29vcmQud29ya2VySWQgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8vIO2bhOyGjSB0dXJuIOydmCBpbnB1dDogdG9vbCDqsrDqs7zqsIAg7J6I7Jy866m0IOq3uOqxuCB0ZXh0IOuhnCwg7JeG7Jy866m0IOuniOyngOuniSB1c2VyKHByb21wdCkuXG5mdW5jdGlvbiBidWlsZERlbHRhSW5wdXQoaW5wdXQ6IFF1ZXJ5SW5wdXQpOiBBcnJheTxVc2VySW5wdXQ+IHtcbiAgaWYgKGlucHV0LnRvb2xSZXN1bHRzICYmIGlucHV0LnRvb2xSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IHRvb2xSZXN1bHRzVG9UZXh0KGlucHV0LnRvb2xSZXN1bHRzKSwgdGV4dF9lbGVtZW50czogW10gfV07XG4gIH1cbiAgaWYgKGlucHV0LmlucHV0ICYmIGlucHV0LmlucHV0Lmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBoYXNUZXh0ID0gaW5wdXQuaW5wdXQuc29tZSgocGFydCkgPT4gcGFydC50eXBlID09PSBcInRleHRcIik7XG4gICAgY29uc3QgcGFydHM6IEFycmF5PFVzZXJJbnB1dD4gPSBpbnB1dC5pbnB1dC5tYXAoKHBhcnQpID0+IHtcbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09IFwidGV4dFwiKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBwYXJ0LnRleHQsIHRleHRfZWxlbWVudHM6IHBhcnQudGV4dF9lbGVtZW50cyB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgdHlwZTogXCJpbWFnZVwiLCB1cmw6IHBhcnQudXJsIH07XG4gICAgfSk7XG4gICAgaWYgKCFoYXNUZXh0ICYmIGlucHV0LnByb21wdC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGlucHV0LnByb21wdCwgdGV4dF9lbGVtZW50czogW10gfSwgLi4ucGFydHNdO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHM7XG4gIH1cbiAgcmV0dXJuIFt7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiBpbnB1dC5wcm9tcHQsIHRleHRfZWxlbWVudHM6IFtdIH1dO1xufVxuXG4vLyDsnZHri7UgdGhyZWFkQ29vcmQgKyDsmpTssq0g7Iuc7KCQIOygleuztOuhnCDri6TsnYwgdGhyZWFkIOyijO2RnOulvCDrsJzquIntlZzri6QuXG5leHBvcnQgZnVuY3Rpb24gaXNzdWVDb252Q29udGV4dChcbiAgdGhyZWFkQ29vcmQ6IFJldXNlVGhyZWFkQ29vcmQsXG4gIGRlY2lzaW9uOiBDb252RGVjaXNpb24sXG4gIHByZWZlcnJlZFRva2VuSWQgPSB0aHJlYWRDb29yZC53b3JrZXJJZCxcbik6IFFncmlkVGhyZWFkQ29vcmQge1xuICBpZiAoZGVjaXNpb24ucHJvbXB0Q2FjaGVLZXkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgd29ya2VySWQ6IHByZWZlcnJlZFRva2VuSWQsXG4gICAgICB0aHJlYWRJZDogZGVjaXNpb24ucHJvbXB0Q2FjaGVLZXksXG4gICAgICBlcG9jaDogLTEsXG4gICAgICBzeXN0ZW1IYXNoOiBkZWNpc2lvbi5zeXN0ZW1IYXNoLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3b3JrZXJJZDogdGhyZWFkQ29vcmQud29ya2VySWQsXG4gICAgdGhyZWFkSWQ6IHRocmVhZENvb3JkLnRocmVhZElkLFxuICAgIGVwb2NoOiB0aHJlYWRDb29yZC5lcG9jaCxcbiAgICBzeXN0ZW1IYXNoOiBkZWNpc2lvbi5zeXN0ZW1IYXNoLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFhQSxTQUFnQixXQUFXLFFBQWlCLGdCQUFpQztDQUMzRSxPQUFPLFdBQVcsUUFBUSxDQUFDLENBQ3hCLE9B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
|
|
86
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udi1yb3V0aW5nLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9jb252LXJvdXRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuXG4vKipcbiAqIGNvbnYtcm91dGluZyDigJQg64yA7ZmUIOyXsOyGjeyEsShjYWNoZSBhZmZpbml0eSkg7KKM7ZGcIOqygOymnS/qtazshLEuXG4gKlxuICog66qo65OgIHR1cm7snYAg7ZiE7J6sIGlucHV06rO8IOyghOyytCBoaXN0b3J566W8IOyghOuLrO2VnOuLpC5cbiAqIERpcmVjdCBwcm92aWRlcihPcGVuQUksIEdyb2sp7J2YIGVwb2NoPS0xIOyijO2RnOuKlCBzeXN0ZW0vbW9kZWwgaGFzaOyZgCBvcGFxdWUgYWZmaW5pdHnrpbwg6rKA7Kad7ZWcIOuSpFxuICogdG9rZW4g7ISg7YOd6rO8IHByb21wdC1jYWNoZSDtnoztirjroZzrp4wg7IKs7Jqp7ZWc64ukLlxuICovXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyB0eXBlIFJldXNlVGhyZWFkQ29vcmQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9wcm92aWRlci1kaXNwYXRjaGVyXCI7XG5pbXBvcnQge1xuICBqc29uVmFsdWVTY2hlbWEsXG4gIHR5cGUgSnNvblZhbHVlLFxuICB0eXBlIFByb3ZpZGVySWQsXG4gIHR5cGUgVXNlcklucHV0LFxufSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9wcm92aWRlci10eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBRZ3JpZFRocmVhZENvb3JkLCB0eXBlIFF1ZXJ5SW5wdXQsIHR5cGUgUWdyaWRUb29sUmVzdWx0SW5wdXQgfSBmcm9tIFwiLi9xZ3JpZC50eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gc3lzdGVtSGFzaChzeXN0ZW0/OiBzdHJpbmcsIG1vZGVsTmFtZXNwYWNlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goXCJzaGEyNTZcIilcbiAgICAudXBkYXRlKG1vZGVsTmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyAoc3lzdGVtID8/IFwiXCIpIDogYCR7bW9kZWxOYW1lc3BhY2V9XFwwJHtzeXN0ZW0gPz8gXCJcIn1gKVxuICAgIC5kaWdlc3QoXCJoZXhcIilcbiAgICAuc2xpY2UoMCwgMTYpO1xufVxuXG4vLyB0b29sIOqysOqzvOulvCDri6TsnYwgdHVybiDsnZggaW5wdXQgdGV4dCDroZwg67OA7ZmYIChwcm92aWRlciDsnoXroKXsnYAgVXNlcklucHV0IOunjCDrsJvsnYwpLlxuZnVuY3Rpb24gdG9vbFJlc3VsdHNUb1RleHQodG9vbFJlc3VsdHM6IFFncmlkVG9vbFJlc3VsdElucHV0W10pOiBzdHJpbmcge1xuICBjb25zdCBsaW5lcyA9IHRvb2xSZXN1bHRzLm1hcCgodHIpID0+IHtcbiAgICBjb25zdCBuYW1lID0gdHIudG9vbE5hbWUgPyBgICgke3RyLnRvb2xOYW1lfSlgIDogXCJcIjtcbiAgICBjb25zdCBlcnJNYXJrID0gdHIuaXNFcnJvciA/IFwiIFtlcnJvcl1cIiA6IFwiXCI7XG5cbiAgICByZXR1cm4gYFRvb2wgcmVzdWx0IGZvciBjYWxsICR7dHIudG9vbENhbGxJZH0ke25hbWV9JHtlcnJNYXJrfTogJHt0ci5vdXRwdXR9YDtcbiAgfSk7XG5cbiAgcmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuXFxuTm93IGNvbnRpbnVlIGFuc3dlcmluZyB0aGUgdXNlcidzIHJlcXVlc3QgdXNpbmcgdGhlc2UgcmVzdWx0cy5gO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZEZWNpc2lvbiB7XG4gIC8vIOunpCB0dXJu7J2YIO2YhOyerCB1c2VyL3Rvb2wgaW5wdXQuXG4gIGNvbGRJbnB1dDogQXJyYXk8VXNlcklucHV0PjtcbiAgLy8g66ekIHR1cm7sl5Ag64uk7IucIOyghOuLrO2VoCDsoITssrQgaGlzdG9yeS5cbiAgY29sZEhpc3Rvcnk/OiBBcnJheTxKc29uVmFsdWU+O1xuICAvLyDsnbQg7JqU7LKtIOyLnOygkOydmCBzeXN0ZW0g7ZW07IucICjsnZHri7Xsl5DshJwgdGhyZWFkIOyijO2RnCDrsJzquIkg7IucIOyCrOyaqSkuXG4gIHN5c3RlbUhhc2g6IHN0cmluZztcbiAgLy8gRGlyZWN0LXByb3ZpZGVyIGNhY2hlIGFmZmluaXR5LiBQcmVzZW5jZSBtYXJrcyB0aGUgZXBvY2g9LTEgY29vcmRpbmF0ZSBzZW1hbnRpY3MuXG4gIHByb21wdENhY2hlS2V5Pzogc3RyaW5nO1xuICBwcmVmZXJyZWRUb2tlbklkPzogbnVtYmVyO1xufVxuXG4vLyBIVFRQUyBkaXJlY3QgdHJhbnNwb3J0IOuhnCBwcm9tcHRfY2FjaGVfa2V5IGFmZmluaXR5IOulvCDsk7DripQgcHJvdmlkZXIuXG5leHBvcnQgdHlwZSBEaXJlY3RQcm92aWRlcklkID0gRXh0cmFjdDxQcm92aWRlcklkLCBcIm9wZW5haVwiIHwgXCJncm9rXCI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZSb3V0aW5nT3B0aW9ucyB7XG4gIGRpcmVjdFByb3ZpZGVyPzogRGlyZWN0UHJvdmlkZXJJZDtcbiAgLy8g67O07Ya1IGA8cHJvdmlkZXI+Lzxtb2RlbD5gLiDqsJnsnYAgc3lzdGVtIOydtOudvOuPhCBwcm92aWRlci9tb2RlbCDsnbQg64uk66W066m0IOyijO2RnOulvCDqs7XsnKDtlZjsp4Ag7JWK64qU64ukLlxuICBtb2RlbE5hbWVzcGFjZT86IHN0cmluZztcbn1cblxuLy8g7J6F66Cl6rO8IOyghOyytCBoaXN0b3J566W8IOq1rOyEse2VmOqzoCwg6rKA7Kad65CcIGRpcmVjdC1wcm92aWRlciBjYWNoZSBhZmZpbml0eeunjCDrtoDqsIDtlZzri6QuXG5leHBvcnQgZnVuY3Rpb24gZGVjaWRlQ29udlJvdXRpbmcoXG4gIGlucHV0OiBRdWVyeUlucHV0LFxuICBvcHRpb25zOiBDb252Um91dGluZ09wdGlvbnMgPSB7fSxcbik6IENvbnZEZWNpc2lvbiB7XG4gIGNvbnN0IGRpcmVjdFByb3ZpZGVyID0gb3B0aW9ucy5kaXJlY3RQcm92aWRlcjtcblxuICBjb25zdCBzeXNIYXNoID0gc3lzdGVtSGFzaChcbiAgICBpbnB1dC5zeXN0ZW0sXG4gICAgZGlyZWN0UHJvdmlkZXIgPT09IHVuZGVmaW5lZFxuICAgICAgPyB1bmRlZmluZWRcbiAgICAgIDogKG9wdGlvbnMubW9kZWxOYW1lc3BhY2UgPz8gaW5wdXQubW9kZWwgPz8gZGlyZWN0UHJvdmlkZXIpLFxuICApO1xuXG4gIGNvbnN0IGhpc3Rvcnk6IEFycmF5PEpzb25WYWx1ZT4gfCB1bmRlZmluZWQgPSBpbnB1dC5oaXN0b3J5XG4gICAgPyB6LmFycmF5KGpzb25WYWx1ZVNjaGVtYSkucGFyc2UoSlNPTi5wYXJzZShpbnB1dC5oaXN0b3J5KSlcbiAgICA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBjb29yZCA9IGlucHV0LnJ1bkNvbnRleHQ/LnRocmVhZENvb3JkO1xuXG4gIC8vIOyerOyCrOyaqSDsnpDqsqk6IOyijO2RnCDsobTsnqwgKyBzeXN0ZW0g64+Z7J28LiBzZXNzaW9uS2V5IOqyqeumrCArIHN5c3RlbUhhc2gg66GcIOuMgO2ZlCDrj5nsnbzshLHsnbRcbiAgLy8g67O07J6l65CY6rOgLCDqs7XthrUgcHJlZml4IOuKlCDrsLHsl5Trk5zqsIAgcHJvbXB0X2NhY2hlX2tleSDqs6DsoJXsnLzroZwg7JWM7JWE7IScIOy6kOyLnO2VnOuLpC5cbiAgY29uc3QgZGlyZWN0Q29vcmRFbGlnaWJsZSA9XG4gICAgZGlyZWN0UHJvdmlkZXIgIT09IHVuZGVmaW5lZCAmJlxuICAgIGNvb3JkPy5lcG9jaCA9PT0gLTEgJiZcbiAgICBjb29yZC5zeXN0ZW1IYXNoID09PSBzeXNIYXNoICYmXG4gICAgaW5wdXQuY2FjaGVBZmZpbml0eUtleSAhPT0gdW5kZWZpbmVkICYmXG4gICAgY29vcmQudGhyZWFkSWQgPT09IGlucHV0LmNhY2hlQWZmaW5pdHlLZXk7XG5cbiAgLy8gYWZmaW5pdHkg66W8IOyalOyyre2VmOyngCDslYrsnYAgb25lLXNob3Qg7JqU7LKt7JeQIOyehOydmCDtgqTrpbwg67aZ7J2066m0IHRyYW5zcG9ydCDqsIAg6re4IOyGjOy8k+ydhFxuICAvLyBhZmZpbml0eSDshozsvJPsnLzroZwg7Jik7J247ZW0IOyerOyCrOyaqeuQmOyngCDslYrsnYQg7Jew6rKw7J2EIOqzhOyGjSDrtpnrk6TslrQg65GU64ukIOKGkiDtgqTrpbwg67mE7JuMIOuRlOuLpC5cbiAgY29uc3QgY2FjaGVLZXkgPSBkaXJlY3RQcm92aWRlciA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogaW5wdXQuY2FjaGVBZmZpbml0eUtleTtcblxuICByZXR1cm4ge1xuICAgIC8vIHRvb2wgZm9sbG93LXVw64+EIOyLpO2WiSB1c2VyIOykhOyXkCDqsrDqs7zrpbwg7IKs7Jqp7ZW0IOqzhOyGjSDri7XtlZjrnbzripQg7JWI64K066W8IOuLtOuKlOuLpC5cbiAgICBjb2xkSW5wdXQ6IGJ1aWxkRGVsdGFJbnB1dChpbnB1dCksXG4gICAgY29sZEhpc3Rvcnk6IGhpc3RvcnksXG4gICAgc3lzdGVtSGFzaDogc3lzSGFzaCxcbiAgICBwcm9tcHRDYWNoZUtleTogY2FjaGVLZXksXG4gICAgcHJlZmVycmVkVG9rZW5JZDogZGlyZWN0Q29vcmRFbGlnaWJsZSA/IGNvb3JkLndvcmtlcklkIDogdW5kZWZpbmVkLFxuICB9O1xufVxuXG4vLyDtm4Tsho0gdHVybiDsnZggaW5wdXQ6IHRvb2wg6rKw6rO86rCAIOyeiOycvOuptCDqt7jqsbggdGV4dCDroZwsIOyXhuycvOuptCDrp4jsp4Drp4kgdXNlcihwcm9tcHQpLlxuZnVuY3Rpb24gYnVpbGREZWx0YUlucHV0KGlucHV0OiBRdWVyeUlucHV0KTogQXJyYXk8VXNlcklucHV0PiB7XG4gIGlmIChpbnB1dC50b29sUmVzdWx0cyAmJiBpbnB1dC50b29sUmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIFt7IHR5cGU6IFwidGV4dFwiLCB0ZXh0OiB0b29sUmVzdWx0c1RvVGV4dChpbnB1dC50b29sUmVzdWx0cyksIHRleHRfZWxlbWVudHM6IFtdIH1dO1xuICB9XG5cbiAgaWYgKGlucHV0LmlucHV0ICYmIGlucHV0LmlucHV0Lmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBoYXNUZXh0ID0gaW5wdXQuaW5wdXQuc29tZSgocGFydCkgPT4gcGFydC50eXBlID09PSBcInRleHRcIik7XG5cbiAgICBjb25zdCBwYXJ0czogQXJyYXk8VXNlcklucHV0PiA9IGlucHV0LmlucHV0Lm1hcCgocGFydCkgPT4ge1xuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IHBhcnQudGV4dCwgdGV4dF9lbGVtZW50czogcGFydC50ZXh0X2VsZW1lbnRzIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IHR5cGU6IFwiaW1hZ2VcIiwgdXJsOiBwYXJ0LnVybCB9O1xuICAgIH0pO1xuXG4gICAgaWYgKCFoYXNUZXh0ICYmIGlucHV0LnByb21wdC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IGlucHV0LnByb21wdCwgdGV4dF9lbGVtZW50czogW10gfSwgLi4ucGFydHNdO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuXG4gIHJldHVybiBbeyB0eXBlOiBcInRleHRcIiwgdGV4dDogaW5wdXQucHJvbXB0LCB0ZXh0X2VsZW1lbnRzOiBbXSB9XTtcbn1cblxuLy8g7J2R64u1IHRocmVhZENvb3JkICsg7JqU7LKtIOyLnOygkCDsoJXrs7TroZwg64uk7J2MIHRocmVhZCDsooztkZzrpbwg67Cc6riJ7ZWc64ukLlxuZXhwb3J0IGZ1bmN0aW9uIGlzc3VlQ29udkNvbnRleHQoXG4gIHRocmVhZENvb3JkOiBSZXVzZVRocmVhZENvb3JkLFxuICBkZWNpc2lvbjogQ29udkRlY2lzaW9uLFxuICBwcmVmZXJyZWRUb2tlbklkID0gdGhyZWFkQ29vcmQud29ya2VySWQsXG4pOiBRZ3JpZFRocmVhZENvb3JkIHtcbiAgaWYgKGRlY2lzaW9uLnByb21wdENhY2hlS2V5KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdvcmtlcklkOiBwcmVmZXJyZWRUb2tlbklkLFxuICAgICAgdGhyZWFkSWQ6IGRlY2lzaW9uLnByb21wdENhY2hlS2V5LFxuICAgICAgZXBvY2g6IC0xLFxuICAgICAgc3lzdGVtSGFzaDogZGVjaXNpb24uc3lzdGVtSGFzaCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3b3JrZXJJZDogdGhyZWFkQ29vcmQud29ya2VySWQsXG4gICAgdGhyZWFkSWQ6IHRocmVhZENvb3JkLnRocmVhZElkLFxuICAgIGVwb2NoOiB0aHJlYWRDb29yZC5lcG9jaCxcbiAgICBzeXN0ZW1IYXNoOiBkZWNpc2lvbi5zeXN0ZW1IYXNoLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQW9CQSxTQUFnQixXQUFXLFFBQWlCLGdCQUFpQztDQUMzRSxPQUFPLFdBQVcsUUFBUSxDQUFDLENBQ3hCLE9BQU8sbUJBQW1CLFNBQWEsVUFBVSxLQUFNLEdBQUcsZUFBZSxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQzVGLE9BQU8sS0FBSyxDQUFDLENBQ2IsTUFBTSxHQUFHLEVBQUU7QUFDaEI7QUFHQSxTQUFTLGtCQUFrQixhQUE2QztDQVF0RSxPQUFPLEdBUE8sWUFBWSxLQUFLLE9BQU87RUFDcEMsTUFBTSxPQUFPLEdBQUcsV0FBVyxLQUFLLEdBQUcsU0FBUyxLQUFLO0VBQ2pELE1BQU0sVUFBVSxHQUFHLFVBQVUsYUFBYTtFQUUxQyxPQUFPLHdCQUF3QixHQUFHLGFBQWEsT0FBTyxRQUFRLElBQUksR0FBRztDQUN2RSxDQUVVLENBQUEsQ0FBTSxLQUFLLElBQUksRUFBRTtBQUM3QjtBQXdCQSxTQUFnQixrQkFDZCxPQUNBLFVBQThCLENBQUMsR0FDakI7Q0FDZCxNQUFNLGlCQUFpQixRQUFRO0NBRS9CLE1BQU0sVUFBVSxXQUNkLE1BQU0sUUFDTixtQkFBbUIsU0FDZixTQUNDLFFBQVEsa0JBQWtCLE1BQU0sU0FBUyxjQUNoRDtDQUVBLE1BQU0sVUFBd0MsTUFBTSxVQUNoRCxFQUFFLE1BQU0sZUFBZSxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sTUFBTSxPQUFPLENBQUMsSUFDeEQ7Q0FFSixNQUFNLFFBQVEsTUFBTSxZQUFZO0NBSWhDLE1BQU0sc0JBQ0osbUJBQW1CLFVBQ25CLE9BQU8sVUFBVSxNQUNqQixNQUFNLGVBQWUsV0FDckIsTUFBTSxxQkFBcUIsVUFDM0IsTUFBTSxhQUFhLE1BQU07Q0FJM0IsTUFBTSxXQUFXLG1CQUFtQixTQUFZLFNBQVksTUFBTTtDQUVsRSxPQUFPO0VBRUwsV0FBVyxnQkFBZ0IsS0FBSztFQUNoQyxhQUFhO0VBQ2IsWUFBWTtFQUNaLGdCQUFnQjtFQUNoQixrQkFBa0Isc0JBQXNCLE1BQU0sV0FBVztDQUMzRDtBQUNGO0FBR0EsU0FBUyxnQkFBZ0IsT0FBcUM7Q0FDNUQsSUFBSSxNQUFNLGVBQWUsTUFBTSxZQUFZLFNBQVMsR0FDbEQsT0FBTyxDQUFDO0VBQUUsTUFBTTtFQUFRLE1BQU0sa0JBQWtCLE1BQU0sV0FBVztFQUFHLGVBQWUsQ0FBQztDQUFFLENBQUM7Q0FHekYsSUFBSSxNQUFNLFNBQVMsTUFBTSxNQUFNLFNBQVMsR0FBRztFQUN6QyxNQUFNLFVBQVUsTUFBTSxNQUFNLE1BQU0sU0FBUyxLQUFLLFNBQVMsTUFBTTtFQUUvRCxNQUFNLFFBQTBCLE1BQU0sTUFBTSxLQUFLLFNBQVM7R0FDeEQsSUFBSSxLQUFLLFNBQVMsUUFDaEIsT0FBTztJQUFFLE1BQU07SUFBUSxNQUFNLEtBQUs7SUFBTSxlQUFlLEtBQUs7R0FBYztHQUc1RSxPQUFPO0lBQUUsTUFBTTtJQUFTLEtBQUssS0FBSztHQUFJO0VBQ3hDLENBQUM7RUFFRCxJQUFJLENBQUMsV0FBVyxNQUFNLE9BQU8sU0FBUyxHQUNwQyxPQUFPLENBQUM7R0FBRSxNQUFNO0dBQVEsTUFBTSxNQUFNO0dBQVEsZUFBZSxDQUFDO0VBQUUsR0FBRyxHQUFHLEtBQUs7RUFHM0UsT0FBTztDQUNUO0NBRUEsT0FBTyxDQUFDO0VBQUUsTUFBTTtFQUFRLE1BQU0sTUFBTTtFQUFRLGVBQWUsQ0FBQztDQUFFLENBQUM7QUFDakU7QUFHQSxTQUFnQixpQkFDZCxhQUNBLFVBQ0EsbUJBQW1CLFlBQVksVUFDYjtDQUNsQixJQUFJLFNBQVMsZ0JBQ1gsT0FBTztFQUNMLFVBQVU7RUFDVixVQUFVLFNBQVM7RUFDbkIsT0FBTztFQUNQLFlBQVksU0FBUztDQUN2QjtDQUdGLE9BQU87RUFDTCxVQUFVLFlBQVk7RUFDdEIsVUFBVSxZQUFZO0VBQ3RCLE9BQU8sWUFBWTtFQUNuQixZQUFZLFNBQVM7Q0FDdkI7QUFDRiJ9
|
|
@@ -71,7 +71,7 @@ function scheduleExpiredTokenReminder(runNow, deps) {
|
|
|
71
71
|
const minutes = Number(deps.readSetting("slack.expiryReminderMinutes", "SLACK_EXPIRY_REMINDER_INTERVAL_MINUTES") ?? 0);
|
|
72
72
|
if (!Number.isFinite(minutes) || minutes <= 0) return;
|
|
73
73
|
logger.info(`expired token reminder every ${minutes}m (${deps.getSlackUserMap().size} user mappings)`);
|
|
74
|
-
const run = () => sendReminder(deps, "scheduled").catch((e) => logger.warn(`reminder failed: ${e.message}`));
|
|
74
|
+
const run = () => sendReminder(deps, "scheduled").catch((e) => logger.warn(`reminder failed: ${e instanceof Error ? e.message : String(e)}`));
|
|
75
75
|
if (runNow) run();
|
|
76
76
|
timer = setInterval(run, minutes * MINUTE_MS);
|
|
77
77
|
}
|
|
@@ -96,4 +96,4 @@ function stopExpiredTokenReminder() {
|
|
|
96
96
|
//#endregion
|
|
97
97
|
export { buildReminderContext, rescheduleExpiredTokenReminder, sendExpiredTokenReminderNow, startExpiredTokenReminder, stopExpiredTokenReminder };
|
|
98
98
|
|
|
99
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwaXJlZC10b2tlbi1yZW1pbmRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvZXhwaXJlZC10b2tlbi1yZW1pbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOyEuOyFmCDrp4zro4wg7JWM66a8IOuwmOuztS5cbiAqXG4gKiDrp4zro4wg7Iic6rCE7J2YIOyVjOumvChgdG9rZW4tZGVhdGgudHNgKeydgCDqt7jrlYwg7LGE64SQ7J2EIOuztOyngCDslYrsnLzrqbQg64aT7Lmc64ukLiDsnqzroZzqt7jsnbjsnYAg7IKs656M7J20XG4gKiDtlbTslbwg7ZWY64qUIOydvOydtOudvCDrhpPsuZjrqbQg7Yag7YGw7J20IOqzhOyGjSDruaDsp4Qg7LGE66GcIOuCqOuKlOuLpC4g6re4656Y7IScIOyVhOyngSDsnqzroZzqt7jsnbjrkJjsp4Ag7JWK7J2AXG4gKiDthqDtgbDsnYQg6rCZ7J2AIOusuOq1rOuhnCDri6Tsi5wg7JWM66aw64ukIOKAlCDsgqzqsbTsnbQg7ZWY64KY7J2066+A66GcIOyVjOumvOuPhCDtlZwg7KKF66WY64ukLlxuICpcbiAqIOyXrOufrCDthqDtgbDsnbQg66eM66OM64+8IOyeiOycvOuptCDtlZwg66mU7Iuc7KeA7JeQIOuqqOydgOuLpC4g7Yag7YGw66eI64ukIOuplOyLnOyngOulvCDrs7TrgrTrqbQg7LGE64SQ7J20IOyLnOuBhOufrOybjFxuICog7KCV7J6RIOydve2eiOyngCDslYrripTri6QuXG4gKlxuICog7J6s66Gc6re47J247J20IO2VhOyalO2VnCDthqDtgbDsnbQg7JeG7Jy866m0IOuztOuCtOyngCDslYrripTri6Qg4oCUIFwi7J207IOBIOyXhuydjFwi7J2EIOyjvOq4sOyggeycvOuhnCDslYzrpqzrqbRcbiAqIOyxhOuEkOydtCDrrLTrjozsp4Tri6QuXG4gKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5cbmltcG9ydCB7IG5vdGlmeVNsYWNrLCBTTEFDS19DT0xPUiB9IGZyb20gXCIuLi8uLi91dGlscy9zbGFjay1ub3RpZnlcIjtcbmltcG9ydCB7IGdldFNldHRpbmcgfSBmcm9tIFwiLi4vc2V0dGluZy9zZXR0aW5nLnN0b3JlXCI7XG5pbXBvcnQgeyBUb2tlbk1vZGVsIH0gZnJvbSBcIi4uL3Rva2VuL3Rva2VuLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRTbGFja1VzZXJNYXAsIG1lbnRpb25Gb3IgfSBmcm9tIFwiLi9zbGFjay11c2VyLW1hcFwiO1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJleHBpcmVkLXJlbWluZGVyXCJdKTtcblxuY29uc3QgTUlOVVRFX01TID0gNjBfMDAwO1xuXG5leHBvcnQgdHlwZSBFeHBpcmVkVG9rZW5SZW1pbmRlckRlcHMgPSB7XG4gIGZpbmRSZWF1dGhSZXF1aXJlZDogKCkgPT4gUHJvbWlzZTx7IG5hbWU6IHN0cmluZyB8IG51bGw7IHByb3ZpZGVyOiBzdHJpbmcgfVtdPjtcbiAgZ2V0U2xhY2tVc2VyTWFwOiAoKSA9PiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkU2V0dGluZzogdHlwZW9mIGdldFNldHRpbmc7XG4gIHNlbmRTbGFjazogdHlwZW9mIG5vdGlmeVNsYWNrO1xufTtcblxuY29uc3QgZGVmYXVsdERlcHM6IEV4cGlyZWRUb2tlblJlbWluZGVyRGVwcyA9IHtcbiAgZmluZFJlYXV0aFJlcXVpcmVkOiAoKSA9PiBUb2tlbk1vZGVsLmZpbmRSZWF1dGhSZXF1aXJlZChcIkFcIiksXG4gIGdldFNsYWNrVXNlck1hcCxcbiAgcmVhZFNldHRpbmc6IGdldFNldHRpbmcsXG4gIHNlbmRTbGFjazogbm90aWZ5U2xhY2ssXG59O1xuXG4vKipcbiAqIDHqsbTsnbTrqbQg7KCc66qpKHN1YmplY3Qp7JeQIO2GoO2BsOuqheydtCDsnbTrr7gg7J6I7Jy866+A66GcIOuzuOusuOyXkOyEnOuKlCDruoDri6Qg4oCUIOqwmeydgCDsnbTrpoTsnYQg65GQIOuyiCDsk7DrqbRcbiAqIOydveuKlCDsgqzrnozsnbQg64uk66W4IOygleuztOyduCDspIQg7JWM6rOgIO2VnCDrsogg642UIOuzuOuLpC4g7Jes65+sIOqxtOydtOuptCDsoJzrqqnsnbQg6rG07IiY6528IOuzuOusuOyXkCDrgqjquLTri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJlbWluZGVyQ29udGV4dChcbiAgdG9rZW5zOiB7IG5hbWU6IHN0cmluZyB8IG51bGw7IHByb3ZpZGVyOiBzdHJpbmcgfVtdLFxuICB1c2VyTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+LFxuKTogc3RyaW5nIHtcbiAgY29uc3Qgc2hvd0xhYmVsID0gdG9rZW5zLmxlbmd0aCA+
|
|
99
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwaXJlZC10b2tlbi1yZW1pbmRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvZXhwaXJlZC10b2tlbi1yZW1pbmRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIOyEuOyFmCDrp4zro4wg7JWM66a8IOuwmOuztS5cbiAqXG4gKiDrp4zro4wg7Iic6rCE7J2YIOyVjOumvChgdG9rZW4tZGVhdGgudHNgKeydgCDqt7jrlYwg7LGE64SQ7J2EIOuztOyngCDslYrsnLzrqbQg64aT7Lmc64ukLiDsnqzroZzqt7jsnbjsnYAg7IKs656M7J20XG4gKiDtlbTslbwg7ZWY64qUIOydvOydtOudvCDrhpPsuZjrqbQg7Yag7YGw7J20IOqzhOyGjSDruaDsp4Qg7LGE66GcIOuCqOuKlOuLpC4g6re4656Y7IScIOyVhOyngSDsnqzroZzqt7jsnbjrkJjsp4Ag7JWK7J2AXG4gKiDthqDtgbDsnYQg6rCZ7J2AIOusuOq1rOuhnCDri6Tsi5wg7JWM66aw64ukIOKAlCDsgqzqsbTsnbQg7ZWY64KY7J2066+A66GcIOyVjOumvOuPhCDtlZwg7KKF66WY64ukLlxuICpcbiAqIOyXrOufrCDthqDtgbDsnbQg66eM66OM64+8IOyeiOycvOuptCDtlZwg66mU7Iuc7KeA7JeQIOuqqOydgOuLpC4g7Yag7YGw66eI64ukIOuplOyLnOyngOulvCDrs7TrgrTrqbQg7LGE64SQ7J20IOyLnOuBhOufrOybjFxuICog7KCV7J6RIOydve2eiOyngCDslYrripTri6QuXG4gKlxuICog7J6s66Gc6re47J247J20IO2VhOyalO2VnCDthqDtgbDsnbQg7JeG7Jy866m0IOuztOuCtOyngCDslYrripTri6Qg4oCUIFwi7J207IOBIOyXhuydjFwi7J2EIOyjvOq4sOyggeycvOuhnCDslYzrpqzrqbRcbiAqIOyxhOuEkOydtCDrrLTrjozsp4Tri6QuXG4gKi9cbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5cbmltcG9ydCB7IG5vdGlmeVNsYWNrLCBTTEFDS19DT0xPUiB9IGZyb20gXCIuLi8uLi91dGlscy9zbGFjay1ub3RpZnlcIjtcbmltcG9ydCB7IGdldFNldHRpbmcgfSBmcm9tIFwiLi4vc2V0dGluZy9zZXR0aW5nLnN0b3JlXCI7XG5pbXBvcnQgeyBUb2tlbk1vZGVsIH0gZnJvbSBcIi4uL3Rva2VuL3Rva2VuLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRTbGFja1VzZXJNYXAsIG1lbnRpb25Gb3IgfSBmcm9tIFwiLi9zbGFjay11c2VyLW1hcFwiO1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJleHBpcmVkLXJlbWluZGVyXCJdKTtcblxuY29uc3QgTUlOVVRFX01TID0gNjBfMDAwO1xuXG5leHBvcnQgdHlwZSBFeHBpcmVkVG9rZW5SZW1pbmRlckRlcHMgPSB7XG4gIGZpbmRSZWF1dGhSZXF1aXJlZDogKCkgPT4gUHJvbWlzZTx7IG5hbWU6IHN0cmluZyB8IG51bGw7IHByb3ZpZGVyOiBzdHJpbmcgfVtdPjtcbiAgZ2V0U2xhY2tVc2VyTWFwOiAoKSA9PiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkU2V0dGluZzogdHlwZW9mIGdldFNldHRpbmc7XG4gIHNlbmRTbGFjazogdHlwZW9mIG5vdGlmeVNsYWNrO1xufTtcblxuY29uc3QgZGVmYXVsdERlcHM6IEV4cGlyZWRUb2tlblJlbWluZGVyRGVwcyA9IHtcbiAgZmluZFJlYXV0aFJlcXVpcmVkOiAoKSA9PiBUb2tlbk1vZGVsLmZpbmRSZWF1dGhSZXF1aXJlZChcIkFcIiksXG4gIGdldFNsYWNrVXNlck1hcCxcbiAgcmVhZFNldHRpbmc6IGdldFNldHRpbmcsXG4gIHNlbmRTbGFjazogbm90aWZ5U2xhY2ssXG59O1xuXG4vKipcbiAqIDHqsbTsnbTrqbQg7KCc66qpKHN1YmplY3Qp7JeQIO2GoO2BsOuqheydtCDsnbTrr7gg7J6I7Jy866+A66GcIOuzuOusuOyXkOyEnOuKlCDruoDri6Qg4oCUIOqwmeydgCDsnbTrpoTsnYQg65GQIOuyiCDsk7DrqbRcbiAqIOydveuKlCDsgqzrnozsnbQg64uk66W4IOygleuztOyduCDspIQg7JWM6rOgIO2VnCDrsogg642UIOuzuOuLpC4g7Jes65+sIOqxtOydtOuptCDsoJzrqqnsnbQg6rG07IiY6528IOuzuOusuOyXkCDrgqjquLTri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJlbWluZGVyQ29udGV4dChcbiAgdG9rZW5zOiB7IG5hbWU6IHN0cmluZyB8IG51bGw7IHByb3ZpZGVyOiBzdHJpbmcgfVtdLFxuICB1c2VyTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+LFxuKTogc3RyaW5nIHtcbiAgY29uc3Qgc2hvd0xhYmVsID0gdG9rZW5zLmxlbmd0aCA+IDE7XG5cbiAgY29uc3QgbGluZXMgPSB0b2tlbnMubWFwKCh0b2tlbikgPT4ge1xuICAgIGNvbnN0IG1lbnRpb24gPSBtZW50aW9uRm9yKHRva2VuLm5hbWUsIHVzZXJNYXApO1xuICAgIGNvbnN0IGxhYmVsID0gdG9rZW4ubmFtZSA/PyBcInVubmFtZWRcIjtcblxuICAgIGlmICghc2hvd0xhYmVsKSByZXR1cm4gbWVudGlvbjtcblxuICAgIHJldHVybiBtZW50aW9uID8gYCR7bWVudGlvbn0gJHtsYWJlbH1gIDogbGFiZWw7XG4gIH0pO1xuXG4gIHJldHVybiBbLi4ubGluZXMsIFwi7J6s66Gc6re47J247J20IO2VhOyalO2VqeuLiOuLpFwiXS5maWx0ZXIoQm9vbGVhbikuam9pbihcIlxcblwiKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VuZFJlbWluZGVyKFxuICBkZXBzOiBFeHBpcmVkVG9rZW5SZW1pbmRlckRlcHMsXG4gIG1vZGU6IFwic2NoZWR1bGVkXCIgfCBcIm1hbnVhbFwiLFxuKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgZXhwaXJlZCA9IGF3YWl0IGRlcHMuZmluZFJlYXV0aFJlcXVpcmVkKCk7XG5cbiAgaWYgKGV4cGlyZWQubGVuZ3RoID09PSAwKSByZXR1cm4gMDtcblxuICBjb25zdCB1c2VyTWFwID0gZGVwcy5nZXRTbGFja1VzZXJNYXAoKTtcblxuICBhd2FpdCBkZXBzLnNlbmRTbGFjayh7XG4gICAgLy8g66eM66OMIOyInOqwhCDslYzrprzqs7wg6rCZ7J2AIOygnOuqqeydhCDsk7Tri6QuIOqwmeydgCDsgqzqsbTsnbTrr4DroZwg64uk66W4IOydtOumhOydhCDrtpnsnbTrqbQg67OE6rCcIOusuOygnOuhnCDsnb3tnozri6QuXG4gICAgdGl0bGU6IFwi7IS47IWYIOunjOujjFwiLFxuICAgIHN1YmplY3Q6IGV4cGlyZWQubGVuZ3RoID4gMSA/IGAke2V4cGlyZWQubGVuZ3RofeqxtGAgOiAoZXhwaXJlZFswXSEubmFtZSA/PyBcInVubmFtZWRcIiksXG4gICAgY29udGV4dDogYnVpbGRSZW1pbmRlckNvbnRleHQoZXhwaXJlZCwgdXNlck1hcCksXG4gICAgY29sb3I6IFNMQUNLX0NPTE9SLmJhZCxcbiAgICB1cmdlbnQ6IG1vZGUgPT09IFwibWFudWFsXCIsXG4gICAgdGhyb3dPbkZhaWx1cmU6IG1vZGUgPT09IFwibWFudWFsXCIsXG4gIH0pO1xuXG4gIHJldHVybiBleHBpcmVkLmxlbmd0aDtcbn1cblxuLyoqXG4gKiDtmZTrqbTsnZggXCLsp4DquIgg67O064K06riwXCIuIOyCrOuejOydtCDsp4HsoJEg64iE66W4IOqyg+ydtOuvgOuhnCDsobDsmqkg7Iuc6rCEwrfrp4jsiqTthLAg7Iqk7JyE7LmY66W8IO2GteqzvOyLnO2CqOuLpCDigJRcbiAqIOuIjOuggOuKlOuNsCDslYTrrLQg7J2864+EIOyViCDsnbzslrTrgpjrqbQg67KE7Yq87J20IOqzoOyepSDrgpwg6rKD7Jy866GcIOydve2ejOuLpC5cbiAqXG4gKiDrs7Trgrgg6rG07IiY66W8IOuPjOugpOykmCDtmLjstpzrtoDqsIAgXCLrs7Trgrwg64yA7IOBIOyXhuydjFwi6rO8IFwi67O064OEXCLsnYQg6rWs67aE7ZW0IOuztOyXrOykgOuLpC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRFeHBpcmVkVG9rZW5SZW1pbmRlck5vdyhcbiAgZGVwczogRXhwaXJlZFRva2VuUmVtaW5kZXJEZXBzID0gZGVmYXVsdERlcHMsXG4pOiBQcm9taXNlPG51bWJlcj4ge1xuICByZXR1cm4gc2VuZFJlbWluZGVyKGRlcHMsIFwibWFudWFsXCIpO1xufVxuXG5sZXQgdGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBzY2hlZHVsZUV4cGlyZWRUb2tlblJlbWluZGVyKHJ1bk5vdzogYm9vbGVhbiwgZGVwczogRXhwaXJlZFRva2VuUmVtaW5kZXJEZXBzKTogdm9pZCB7XG4gIHN0b3BFeHBpcmVkVG9rZW5SZW1pbmRlcigpO1xuXG4gIC8vIOyjvOq4sCDqsJLqs7wg67OE6rCc7J24IOyKpOychOy5mOuLpC4g6rq864+EIOyjvOq4sOuKlCDrgqjslYQg7J6I7Ja0IOuLpOyLnCDsvKQg65WMIOqzoOultOuNmCDqsJLsnbQg6re464yA66Gc64ukLlxuICBpZiAoZGVwcy5yZWFkU2V0dGluZyhcInNsYWNrLnJlbWluZGVyc0VuYWJsZWRcIiwgXCJTTEFDS19SRU1JTkRFUlNfRU5BQkxFRFwiKSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgbG9nZ2VyLmluZm8oXCJleHBpcmVkIHRva2VuIHJlbWluZGVyIGRpc2FibGVkXCIpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgbWludXRlcyA9IE51bWJlcihcbiAgICBkZXBzLnJlYWRTZXR0aW5nKFwic2xhY2suZXhwaXJ5UmVtaW5kZXJNaW51dGVzXCIsIFwiU0xBQ0tfRVhQSVJZX1JFTUlOREVSX0lOVEVSVkFMX01JTlVURVNcIikgPz8gMCxcbiAgKTtcblxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShtaW51dGVzKSB8fCBtaW51dGVzIDw9IDApIHJldHVybjtcblxuICBsb2dnZXIuaW5mbyhcbiAgICBgZXhwaXJlZCB0b2tlbiByZW1pbmRlciBldmVyeSAke21pbnV0ZXN9bSAoJHtkZXBzLmdldFNsYWNrVXNlck1hcCgpLnNpemV9IHVzZXIgbWFwcGluZ3MpYCxcbiAgKTtcblxuICBjb25zdCBydW4gPSAoKSA9PlxuICAgIHNlbmRSZW1pbmRlcihkZXBzLCBcInNjaGVkdWxlZFwiKS5jYXRjaCgoZSkgPT5cbiAgICAgIGxvZ2dlci53YXJuKGByZW1pbmRlciBmYWlsZWQ6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpfWApLFxuICAgICk7XG5cbiAgaWYgKHJ1bk5vdykgdm9pZCBydW4oKTtcbiAgdGltZXIgPSBzZXRJbnRlcnZhbChydW4sIG1pbnV0ZXMgKiBNSU5VVEVfTVMpO1xufVxuXG4vKipcbiAqIGBTTEFDS19FWFBJUllfUkVNSU5ERVJfSU5URVJWQUxfTUlOVVRFU2Ag6rCAIOyWkeyImOydvCDrlYzrp4wg7Lyc7KeE64ukLiDrr7jshKTsoJXCtzAg7J2066m0IOu5hO2ZnOyEsS5cbiAqXG4gKiDsnbjsiqTthLTsiqTqsIAg7Jes65+sIOqwnOuptCDqsIHsnpAg67O064K464ukLiDrp4zro4wg7Iic6rCEIOyVjOumvOqzvCDri6zrpqwg7IOB7YOcIOuzgO2ZlOqwgCDsl4bslrQgREIg66GcIOyWteygnO2VoCDsiJhcbiAqIOyXhuqzoCwg7ZWY66OoIOuqhyDqsbQg7IiY7KSA7J206528IOykkeuzteydhCDqsJDsiJjtlZjripQg7Y647J20IOyeoOq4iCDsnqXsuZjrpbwg65GQ64qUIOqyg+uztOuLpCDrgqvri6QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydEV4cGlyZWRUb2tlblJlbWluZGVyKGRlcHM6IEV4cGlyZWRUb2tlblJlbWluZGVyRGVwcyA9IGRlZmF1bHREZXBzKTogdm9pZCB7XG4gIC8vIOq4sOuPmSDsp4Htm4Tsl5Drj4Qg7ZWcIOuyiCDrs7Trgrjri6QuIOyerOq4sOuPmeydgCDrsLDtj6zrgpgg7J6l7JWgIOuzteq1rCDrlYwg7J287Ja064KY64qU642wLCDqt7gg7Iuc7KCQ7JeQIOydtOuvuFxuICAvLyDrp4zro4zrkJwg7Yag7YGw7J20IOyeiOycvOuptCDssqsg7KO86riw6rCAIOuPjCDrlYzquYzsp4Ag7KGw7Jqp7ZWcIOqyg+ydtCDsnbTsg4HtlZjri6QuXG4gIHNjaGVkdWxlRXhwaXJlZFRva2VuUmVtaW5kZXIodHJ1ZSwgZGVwcyk7XG59XG5cbi8qKiDshKTsoJUg67OA6rK9IOyLnCDquLDsobQg7YOA7J2066i466eMIOyDiCDso7zquLDroZwg6rWQ7LK07ZWc64ukLiDsoIDsnqUg7J6Q7LK06rCAIOyVjOumvOydhCDrs7TrgrTsp4DripQg7JWK64qU64ukLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2NoZWR1bGVFeHBpcmVkVG9rZW5SZW1pbmRlcihkZXBzOiBFeHBpcmVkVG9rZW5SZW1pbmRlckRlcHMgPSBkZWZhdWx0RGVwcyk6IHZvaWQge1xuICBzY2hlZHVsZUV4cGlyZWRUb2tlblJlbWluZGVyKGZhbHNlLCBkZXBzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0b3BFeHBpcmVkVG9rZW5SZW1pbmRlcigpOiB2b2lkIHtcbiAgaWYgKCF0aW1lcikgcmV0dXJuO1xuICBjbGVhckludGVydmFsKHRpbWVyKTtcbiAgdGltZXIgPSBudWxsO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLE1BQU0sU0FBUyxVQUFVLENBQUMsU0FBUyxrQkFBa0IsQ0FBQztBQUV0RCxNQUFNLFlBQVk7QUFTbEIsTUFBTSxjQUF3QztDQUM1QywwQkFBMEIsV0FBVyxtQkFBbUIsR0FBRztDQUMzRDtDQUNBLGFBQWE7Q0FDYixXQUFXO0FBQ2I7Ozs7O0FBTUEsU0FBZ0IscUJBQ2QsUUFDQSxTQUNRO0NBQ1IsTUFBTSxZQUFZLE9BQU8sU0FBUztDQVdsQyxPQUFPLENBQUMsR0FUTSxPQUFPLEtBQUssVUFBVTtFQUNsQyxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sT0FBTztFQUM5QyxNQUFNLFFBQVEsTUFBTSxRQUFRO0VBRTVCLElBQUksQ0FBQyxXQUFXLE9BQU87RUFFdkIsT0FBTyxVQUFVLEdBQUcsUUFBUSxHQUFHLFVBQVU7Q0FDM0MsQ0FFVyxHQUFPLGFBQWEsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFDLENBQUMsS0FBSyxJQUFJO0FBQzVEO0FBRUEsZUFBZSxhQUNiLE1BQ0EsTUFDaUI7Q0FDakIsTUFBTSxVQUFVLE1BQU0sS0FBSyxtQkFBbUI7Q0FFOUMsSUFBSSxRQUFRLFdBQVcsR0FBRyxPQUFPO0NBRWpDLE1BQU0sVUFBVSxLQUFLLGdCQUFnQjtDQUVyQyxNQUFNLEtBQUssVUFBVTtFQUVuQixPQUFPO0VBQ1AsU0FBUyxRQUFRLFNBQVMsSUFBSSxHQUFHLFFBQVEsT0FBTyxLQUFNLFFBQVEsRUFBRSxDQUFFLFFBQVE7RUFDMUUsU0FBUyxxQkFBcUIsU0FBUyxPQUFPO0VBQzlDLE9BQU8sWUFBWTtFQUNuQixRQUFRLFNBQVM7RUFDakIsZ0JBQWdCLFNBQVM7Q0FDM0IsQ0FBQztDQUVELE9BQU8sUUFBUTtBQUNqQjs7Ozs7OztBQVFBLFNBQWdCLDRCQUNkLE9BQWlDLGFBQ2hCO0NBQ2pCLE9BQU8sYUFBYSxNQUFNLFFBQVE7QUFDcEM7QUFFQSxJQUFJLFFBQStDO0FBRW5ELFNBQVMsNkJBQTZCLFFBQWlCLE1BQXNDO0NBQzNGLHlCQUF5QjtDQUd6QixJQUFJLEtBQUssWUFBWSwwQkFBMEIseUJBQXlCLE1BQU0sU0FBUztFQUNyRixPQUFPLEtBQUssaUNBQWlDO0VBRTdDO0NBQ0Y7Q0FFQSxNQUFNLFVBQVUsT0FDZCxLQUFLLFlBQVksK0JBQStCLHdDQUF3QyxLQUFLLENBQy9GO0NBRUEsSUFBSSxDQUFDLE9BQU8sU0FBUyxPQUFPLEtBQUssV0FBVyxHQUFHO0NBRS9DLE9BQU8sS0FDTCxnQ0FBZ0MsUUFBUSxLQUFLLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLGdCQUMzRTtDQUVBLE1BQU0sWUFDSixhQUFhLE1BQU0sV0FBVyxDQUFDLENBQUMsT0FBTyxNQUNyQyxPQUFPLEtBQUssb0JBQW9CLGFBQWEsUUFBUSxFQUFFLFVBQVUsT0FBTyxDQUFDLEdBQUcsQ0FDOUU7Q0FFRixJQUFJLFFBQVEsQUFBSyxJQUFJO0NBQ3JCLFFBQVEsWUFBWSxLQUFLLFVBQVUsU0FBUztBQUM5Qzs7Ozs7OztBQVFBLFNBQWdCLDBCQUEwQixPQUFpQyxhQUFtQjtDQUc1Riw2QkFBNkIsTUFBTSxJQUFJO0FBQ3pDOztBQUdBLFNBQWdCLCtCQUErQixPQUFpQyxhQUFtQjtDQUNqRyw2QkFBNkIsT0FBTyxJQUFJO0FBQzFDO0FBRUEsU0FBZ0IsMkJBQWlDO0NBQy9DLElBQUksQ0FBQyxPQUFPO0NBQ1osY0FBYyxLQUFLO0NBQ25CLFFBQVE7QUFDViJ9
|
|
@@ -1,9 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { getLogger } from "@logtape/logtape";
|
|
2
3
|
import { createHash, randomBytes } from "node:crypto";
|
|
3
4
|
//#region src/application/qgrid/oauth.ts
|
|
4
5
|
/**
|
|
5
6
|
* OAuth 유틸 — Claude Code 소스의 OAuth 플로우 그대로 재현
|
|
6
7
|
*/
|
|
8
|
+
const usageWindowSchema = z.object({
|
|
9
|
+
utilization: z.number().nullable(),
|
|
10
|
+
resets_at: z.string().nullable()
|
|
11
|
+
}).nullable().optional();
|
|
12
|
+
const anthropicUsageRawSchema = z.looseObject({
|
|
13
|
+
error: z.string().optional(),
|
|
14
|
+
five_hour: usageWindowSchema,
|
|
15
|
+
seven_day: usageWindowSchema,
|
|
16
|
+
seven_day_overage_included: usageWindowSchema
|
|
17
|
+
});
|
|
18
|
+
const tokenExchangeResponseSchema = z.object({
|
|
19
|
+
access_token: z.string(),
|
|
20
|
+
refresh_token: z.string(),
|
|
21
|
+
expires_in: z.number(),
|
|
22
|
+
scope: z.string(),
|
|
23
|
+
account: z.object({
|
|
24
|
+
uuid: z.string(),
|
|
25
|
+
email_address: z.string()
|
|
26
|
+
}).optional()
|
|
27
|
+
});
|
|
28
|
+
const tokenRefreshResponseSchema = z.object({
|
|
29
|
+
access_token: z.string(),
|
|
30
|
+
refresh_token: z.string().optional(),
|
|
31
|
+
expires_in: z.number(),
|
|
32
|
+
scope: z.string()
|
|
33
|
+
});
|
|
7
34
|
const logger = getLogger(["qgrid", "oauth"]);
|
|
8
35
|
const CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
|
|
9
36
|
const AUTHORIZE_URL = "https://claude.com/cai/oauth/authorize";
|
|
@@ -64,7 +91,7 @@ async function exchangeCodeForTokens(code, codeVerifier, state, redirectUri) {
|
|
|
64
91
|
const text = await res.text();
|
|
65
92
|
throw new Error(`Token exchange failed (${res.status}): ${text}`);
|
|
66
93
|
}
|
|
67
|
-
const data = await res.json();
|
|
94
|
+
const data = tokenExchangeResponseSchema.parse(await res.json());
|
|
68
95
|
return {
|
|
69
96
|
accessToken: data.access_token,
|
|
70
97
|
refreshToken: data.refresh_token,
|
|
@@ -107,7 +134,7 @@ async function refreshAccessToken(refreshToken) {
|
|
|
107
134
|
const text = await res.text();
|
|
108
135
|
throw new RefreshFailedError(res.status, text);
|
|
109
136
|
}
|
|
110
|
-
const data = await res.json();
|
|
137
|
+
const data = tokenRefreshResponseSchema.parse(await res.json());
|
|
111
138
|
return {
|
|
112
139
|
accessToken: data.access_token,
|
|
113
140
|
refreshToken: data.refresh_token ?? refreshToken,
|
|
@@ -151,7 +178,7 @@ async function fetchUsageWithMeta(accessToken) {
|
|
|
151
178
|
return entry;
|
|
152
179
|
}
|
|
153
180
|
const entry = {
|
|
154
|
-
data: await res.json(),
|
|
181
|
+
data: anthropicUsageRawSchema.parse(await res.json()),
|
|
155
182
|
cachedAt: Date.now()
|
|
156
183
|
};
|
|
157
184
|
usageCache[cacheKey] = entry;
|
|
@@ -160,4 +187,4 @@ async function fetchUsageWithMeta(accessToken) {
|
|
|
160
187
|
//#endregion
|
|
161
188
|
export { CONSOLE_CALLBACK_URL, RefreshFailedError, buildAuthUrl, exchangeCodeForTokens, fetchUsage, fetchUsageWithMeta, generatePKCE, invalidateAnthropicQuotaUsage, refreshAccessToken };
|
|
162
189
|
|
|
163
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL29hdXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT0F1dGgg7Jyg7Yu4IOKAlCBDbGF1ZGUgQ29kZSDshozsiqTsnZggT0F1dGgg7ZSM66Gc7JqwIOq3uOuMgOuhnCDsnqztmIRcbiAqL1xuaW1wb3J0IHsgY3JlYXRlSGFzaCwgcmFuZG9tQnl0ZXMgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcblxuZXhwb3J0IHR5cGUgQW50aHJvcGljVXNhZ2VSYXcgPSB7XG4gIGVycm9yPzogc3RyaW5nO1xuICBmaXZlX2hvdXI/OiB7IHV0aWxpemF0aW9uOiBudW1iZXIgfCBudWxsOyByZXNldHNfYXQ6IHN0cmluZyB8IG51bGwgfSB8IG51bGw7XG4gIHNldmVuX2RheT86IHsgdXRpbGl6YXRpb246IG51bWJlciB8IG51bGw7IHJlc2V0c19hdDogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbDtcbiAgc2V2ZW5fZGF5X292ZXJhZ2VfaW5jbHVkZWQ/OiB7IHV0aWxpemF0aW9uOiBudW1iZXIgfCBudWxsOyByZXNldHNfYXQ6IHN0cmluZyB8IG51bGwgfSB8IG51bGw7XG59O1xuZXhwb3J0IHR5cGUgQW50aHJvcGljVXNhZ2VXaXRoTWV0YSA9IHtcbiAgZGF0YTogQW50aHJvcGljVXNhZ2VSYXc7XG4gIGNhY2hlZEF0OiBudW1iZXI7XG59O1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wicWdyaWRcIiwgXCJvYXV0aFwiXSk7XG5cbmNvbnN0IENMSUVOVF9JRCA9IFwiOWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVlXCI7XG5jb25zdCBBVVRIT1JJWkVfVVJMID0gXCJodHRwczovL2NsYXVkZS5jb20vY2FpL29hdXRoL2F1dGhvcml6ZVwiO1xuY29uc3QgVE9LRU5fVVJMID0gXCJodHRwczovL3BsYXRmb3JtLmNsYXVkZS5jb20vdjEvb2F1dGgvdG9rZW5cIjtcbi8vIGNsaWVudCDtl4jsmqkg66qp66Gd7JeQIOyeiOuKlCDsvZjshpQg7L2c67CxLiDsnbjspp0g7ZuEIOy9mOyGlCDtjpjsnbTsp4DqsIAgYGNvZGUjc3RhdGVg66W8IO2RnOyLnO2VmOqzoFxuLy8g7IKs7Jqp7J6Q6rCAIOu2meyXrOuEo+uKlCDsvZTrk5wg7ZSM66Gc7JqwKENsYXVkZSBDb2RlIENMSeyZgCDrj5nsnbwp7JeQIOyCrOyaqe2VnOuLpC5cbmV4cG9ydCBjb25zdCBDT05TT0xFX0NBTExCQUNLX1VSTCA9IFwiaHR0cHM6Ly9jb25zb2xlLmFudGhyb3BpYy5jb20vb2F1dGgvY29kZS9jYWxsYmFja1wiO1xuXG4vLyBsb2dpbiDsi5wg7IKs7JqpIChhdXRob3JpemUgVVJMKVxuY29uc3QgQUxMX1NDT1BFUyA9IFtcbiAgXCJvcmc6Y3JlYXRlX2FwaV9rZXlcIixcbiAgXCJ1c2VyOnByb2ZpbGVcIixcbiAgXCJ1c2VyOmluZmVyZW5jZVwiLFxuICBcInVzZXI6c2Vzc2lvbnM6Y2xhdWRlX2NvZGVcIixcbiAgXCJ1c2VyOm1jcF9zZXJ2ZXJzXCIsXG4gIFwidXNlcjpmaWxlX3VwbG9hZFwiLFxuXTtcblxuLy8gcmVmcmVzaCDsi5wg7IKs7JqpIChvcmc6Y3JlYXRlX2FwaV9rZXkg7KCc7Jm4KVxuY29uc3QgUkVGUkVTSF9TQ09QRVMgPSBbXG4gIFwidXNlcjpwcm9maWxlXCIsXG4gIFwidXNlcjppbmZlcmVuY2VcIixcbiAgXCJ1c2VyOnNlc3Npb25zOmNsYXVkZV9jb2RlXCIsXG4gIFwidXNlcjptY3Bfc2VydmVyc1wiLFxuICBcInVzZXI6ZmlsZV91cGxvYWRcIixcbl07XG5cbmZ1bmN0aW9uIGJhc2U2NFVSTEVuY29kZShidWZmZXI6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcoXCJiYXNlNjRcIikucmVwbGFjZSgvXFwrL2csIFwiLVwiKS5yZXBsYWNlKC9cXC8vZywgXCJfXCIpLnJlcGxhY2UoLz0vZywgXCJcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBLQ0UoKTogeyBjb2RlVmVyaWZpZXI6IHN0cmluZzsgY29kZUNoYWxsZW5nZTogc3RyaW5nOyBzdGF0ZTogc3RyaW5nIH0ge1xuICBjb25zdCBjb2RlVmVyaWZpZXIgPSBiYXNlNjRVUkxFbmNvZGUocmFuZG9tQnl0ZXMoMzIpKTtcbiAgY29uc3QgY29kZUNoYWxsZW5nZSA9IGJhc2U2NFVSTEVuY29kZShjcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShjb2RlVmVyaWZpZXIpLmRpZ2VzdCgpKTtcbiAgY29uc3Qgc3RhdGUgPSBiYXNlNjRVUkxFbmNvZGUocmFuZG9tQnl0ZXMoMzIpKTtcbiAgcmV0dXJuIHsgY29kZVZlcmlmaWVyLCBjb2RlQ2hhbGxlbmdlLCBzdGF0ZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRBdXRoVXJsKGNvZGVDaGFsbGVuZ2U6IHN0cmluZywgc3RhdGU6IHN0cmluZywgcmVkaXJlY3RVcmk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoQVVUSE9SSVpFX1VSTCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwiY29kZVwiLCBcInRydWVcIik7XG4gIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwiY2xpZW50X2lkXCIsIENMSUVOVF9JRCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwicmVzcG9uc2VfdHlwZVwiLCBcImNvZGVcIik7XG4gIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwicmVkaXJlY3RfdXJpXCIsIHJlZGlyZWN0VXJpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJzY29wZVwiLCBBTExfU0NPUEVTLmpvaW4oXCIgXCIpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJjb2RlX2NoYWxsZW5nZVwiLCBjb2RlQ2hhbGxlbmdlKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJjb2RlX2NoYWxsZW5nZV9tZXRob2RcIiwgXCJTMjU2XCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcInN0YXRlXCIsIHN0YXRlKTtcbiAgcmV0dXJuIHVybC50b1N0cmluZygpO1xufVxuXG5leHBvcnQgdHlwZSBPQXV0aFRva2VucyA9IHtcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICBzY29wZTogc3RyaW5nO1xuICBhY2NvdW50VXVpZD86IHN0cmluZztcbiAgZW1haWxBZGRyZXNzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4Y2hhbmdlQ29kZUZvclRva2VucyhcbiAgY29kZTogc3RyaW5nLFxuICBjb2RlVmVyaWZpZXI6IHN0cmluZyxcbiAgc3RhdGU6IHN0cmluZyxcbiAgcmVkaXJlY3RVcmk6IHN0cmluZyxcbik6IFByb21pc2U8T0F1dGhUb2tlbnM+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goVE9LRU5fVVJMLCB7XG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZ3JhbnRfdHlwZTogXCJhdXRob3JpemF0aW9uX2NvZGVcIixcbiAgICAgIGNvZGUsXG4gICAgICByZWRpcmVjdF91cmk6IHJlZGlyZWN0VXJpLFxuICAgICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgICBjb2RlX3ZlcmlmaWVyOiBjb2RlVmVyaWZpZXIsXG4gICAgICBzdGF0ZSxcbiAgICB9KSxcbiAgfSk7XG4gIGlmICghcmVzLm9rKSB7XG4gICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiBleGNoYW5nZSBmYWlsZWQgKCR7cmVzLnN0YXR1c30pOiAke3RleHR9YCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gKGF3YWl0IHJlcy5qc29uKCkpIGFzIHtcbiAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgZXhwaXJlc19pbjogbnVtYmVyO1xuICAgIHNjb3BlOiBzdHJpbmc7XG4gICAgYWNjb3VudD86IHsgdXVpZDogc3RyaW5nOyBlbWFpbF9hZGRyZXNzOiBzdHJpbmcgfTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFjY2Vzc1Rva2VuOiBkYXRhLmFjY2Vzc190b2tlbixcbiAgICByZWZyZXNoVG9rZW46IGRhdGEucmVmcmVzaF90b2tlbixcbiAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyBkYXRhLmV4cGlyZXNfaW4gKiAxMDAwLFxuICAgIHNjb3BlOiBkYXRhLnNjb3BlLFxuICAgIGFjY291bnRVdWlkOiBkYXRhLmFjY291bnQ/LnV1aWQsXG4gICAgZW1haWxBZGRyZXNzOiBkYXRhLmFjY291bnQ/LmVtYWlsX2FkZHJlc3MsXG4gIH07XG59XG5cbi8qKlxuICogcmVmcmVzaCDsi6TtjKjrpbwgc3RhdHVzIOyZgCDtlajqu5gg7KCE64us7ZWc64ukLiDtmLjstpzrtoDqsIAg66y47J6Q7Je0IOuplOyLnOyngOulvCDtjIzsi7HtlZjsp4Ag7JWK6rOgXG4gKiDsmIHqtawg7Iuk7YyoKDQwMC80MDEp66W8IO2MkOuzhO2VoCDsiJgg7J6I7Ja07JW8IO2VmOq4sCDrlYzrrLjsnbTri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWZyZXNoRmFpbGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIG92ZXJyaWRlIHJlYWRvbmx5IG5hbWUgPSBcIlJlZnJlc2hGYWlsZWRFcnJvclwiO1xuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBzdGF0dXM6IG51bWJlcixcbiAgICByZWFkb25seSBib2R5OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKGBUb2tlbiByZWZyZXNoIGZhaWxlZCAoJHtzdGF0dXN9KTogJHtib2R5fWApO1xuICB9XG5cbiAgLyoqIOyerOuhnOq3uOyduCDsmbgg67O16rWsIOu2iOqwgO2VnCDsnbjspp0g7Iuk7Yyo7J247KeALiDsnbzsi5wg7Jik66WYKDV4eMK364Sk7Yq47JuM7YGsKeuKlCDsoJzsmbjrkJzri6QuICovXG4gIGlzQXV0aERlYWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSA0MDAgfHwgdGhpcy5zdGF0dXMgPT09IDQwMTtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEFjY2Vzc1Rva2VuKHJlZnJlc2hUb2tlbjogc3RyaW5nKTogUHJvbWlzZTxPQXV0aFRva2Vucz4ge1xuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChUT0tFTl9VUkwsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBncmFudF90eXBlOiBcInJlZnJlc2hfdG9rZW5cIixcbiAgICAgIHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbixcbiAgICAgIGNsaWVudF9pZDogQ0xJRU5UX0lELFxuICAgICAgc2NvcGU6IFJFRlJFU0hfU0NPUEVTLmpvaW4oXCIgXCIpLFxuICAgIH0pLFxuICB9KTtcbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKTtcbiAgICB0aHJvdyBuZXcgUmVmcmVzaEZhaWxlZEVycm9yKHJlcy5zdGF0dXMsIHRleHQpO1xuICB9XG4gIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzLmpzb24oKSkgYXMge1xuICAgIGFjY2Vzc190b2tlbjogc3RyaW5nO1xuICAgIHJlZnJlc2hfdG9rZW46IHN0cmluZztcbiAgICBleHBpcmVzX2luOiBudW1iZXI7XG4gICAgc2NvcGU6IHN0cmluZztcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFjY2Vzc1Rva2VuOiBkYXRhLmFjY2Vzc190b2tlbixcbiAgICByZWZyZXNoVG9rZW46IGRhdGEucmVmcmVzaF90b2tlbiA/PyByZWZyZXNoVG9rZW4sXG4gICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgZGF0YS5leHBpcmVzX2luICogMTAwMCxcbiAgICBzY29wZTogZGF0YS5zY29wZSxcbiAgfTtcbn1cblxuY29uc3QgdXNhZ2VDYWNoZTogUmVjb3JkPHN0cmluZywgQW50aHJvcGljVXNhZ2VXaXRoTWV0YT4gPSB7fTtcbmNvbnN0IFVTQUdFX0FQSV9DQUNIRV9UVEwgPSA2MF8wMDA7IC8vIDHrtoRcblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVBbnRocm9waWNRdW90YVVzYWdlKGFjY2Vzc1Rva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgZGVsZXRlIHVzYWdlQ2FjaGVbYWNjZXNzVG9rZW4uc2xpY2UoLTEwKV07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFVzYWdlKGFjY2Vzc1Rva2VuOiBzdHJpbmcpOiBQcm9taXNlPEFudGhyb3BpY1VzYWdlUmF3PiB7XG4gIHJldHVybiAoYXdhaXQgZmV0Y2hVc2FnZVdpdGhNZXRhKGFjY2Vzc1Rva2VuKSkuZGF0YTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoVXNhZ2VXaXRoTWV0YShhY2Nlc3NUb2tlbjogc3RyaW5nKTogUHJvbWlzZTxBbnRocm9waWNVc2FnZVdpdGhNZXRhPiB7XG4gIGNvbnN0IGNhY2hlS2V5ID0gYWNjZXNzVG9rZW4uc2xpY2UoLTEwKTtcbiAgY29uc3QgY2FjaGVkID0gdXNhZ2VDYWNoZVtjYWNoZUtleV07XG4gIGlmIChjYWNoZWQgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC5jYWNoZWRBdCA8IFVTQUdFX0FQSV9DQUNIRV9UVEwpIHtcbiAgICByZXR1cm4gY2FjaGVkO1xuICB9XG5cbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goXCJodHRwczovL2FwaS5hbnRocm9waWMuY29tL2FwaS9vYXV0aC91c2FnZVwiLCB7XG4gICAgaGVhZGVyczoge1xuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FjY2Vzc1Rva2VufWAsXG4gICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIFwiYW50aHJvcGljLWJldGFcIjogXCJvYXV0aC0yMDI1LTA0LTIwXCIsXG4gICAgfSxcbiAgICBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQoNTAwMCksXG4gIH0pO1xuICBpZiAoIXJlcy5vaykge1xuICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuXG4gICAgLy8g7YyM7IuxIOyLnOuPhO2VtOyEnCDsl5Drn6wg66mU7Iuc7KeAIOy2lOy2nFxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSBgRXJyb3IgJHtyZXMuc3RhdHVzfWA7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodGV4dCk7XG4gICAgICBlcnJvck1lc3NhZ2UgPSBwYXJzZWQuZXJyb3I/Lm1lc3NhZ2UgPz8gZXJyb3JNZXNzYWdlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8g7YyM7IuxIOyViCDrkJjrqbQg6riw67O4IOuplOyLnOyngFxuICAgIH1cblxuICAgIGxvZ2dlci53YXJuKGAke3Jlcy5zdGF0dXN9OiAke2Vycm9yTWVzc2FnZX1gKTtcblxuICAgIC8vIOydtOyghCDshLHqs7Ug7LqQ7IucIOyeiOycvOuptCDsnKDsp4BcbiAgICBpZiAoY2FjaGVkPy5kYXRhICYmICFjYWNoZWQuZGF0YS5lcnJvcikgcmV0dXJuIGNhY2hlZDtcblxuICAgIC8vIOyLpO2MqOuPhCDsupDsi5wgKOuwmOuztSDtmLjstpwg67Cp7KeAKVxuICAgIGNvbnN0IGVycm9yUmVzdWx0ID0geyBlcnJvcjogZXJyb3JNZXNzYWdlIH07XG4gICAgY29uc3QgZW50cnkgPSB7IGRhdGE6IGVycm9yUmVzdWx0LCBjYWNoZWRBdDogRGF0ZS5ub3coKSB9O1xuICAgIHVzYWdlQ2FjaGVbY2FjaGVLZXldID0gZW50cnk7XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IChhd2FpdCByZXMuanNvbigpKSBhcyBBbnRocm9waWNVc2FnZVJhdztcbiAgLy8gY2FjaGUgaW52YWxpZGF0ZVxuICBjb25zdCBlbnRyeSA9IHsgZGF0YSwgY2FjaGVkQXQ6IERhdGUubm93KCkgfTtcbiAgdXNhZ2VDYWNoZVtjYWNoZUtleV0gPSBlbnRyeTtcbiAgcmV0dXJuIGVudHJ5O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFrQkEsTUFBTSxTQUFTLFVBQVUsQ0FBQyxTQUFTLE9BQU8sQ0FBQztBQUUzQyxNQUFNLFlBQVk7QUFDbEIsTUFBTSxnQkFBZ0I7QUFDdEIsTUFBTSxZQUFZO0FBR2xCLE1BQWEsdUJBQXVCO0FBR3BDLE1BQU0sYUFBYTtDQUNqQjtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDRjtBQUdBLE1BQU0saUJBQWlCO0NBQ3JCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDRjtBQUVBLFNBQVMsZ0JBQWdCLFFBQXdCO0NBQy9DLE9BQU8sT0FBTyxTQUFTLFFBQVEsQ0FBQyxDQUFDLFFBQVEsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLE9BQU8sR0FBRyxDQUFDLENBQUMsUUFBUSxNQUFNLEVBQUU7QUFDM0Y7QUFFQSxTQUFnQixlQUErRTtDQUM3RixNQUFNLGVBQWUsZ0JBQWdCLFlBQVksRUFBRSxDQUFDO0NBR3BELE9BQU87RUFBRTtFQUFjLGVBRkQsZ0JBQWdCLFdBQVcsUUFBUSxDQUFDLENBQUMsT0FBTyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBRWhFO0VBQWUsT0FEeEIsZ0JBQWdCLFlBQVksRUFBRSxDQUNOO0NBQU07QUFDOUM7QUFFQSxTQUFnQixhQUFhLGVBQXVCLE9BQWUsYUFBNkI7Q0FDOUYsTUFBTSxNQUFNLElBQUksSUFBSSxhQUFhO0NBQ2pDLElBQUksYUFBYSxPQUFPLFFBQVEsTUFBTTtD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
|
|
190
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3FncmlkL29hdXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT0F1dGgg7Jyg7Yu4IOKAlCBDbGF1ZGUgQ29kZSDshozsiqTsnZggT0F1dGgg7ZSM66Gc7JqwIOq3uOuMgOuhnCDsnqztmIRcbiAqL1xuaW1wb3J0IHsgY3JlYXRlSGFzaCwgcmFuZG9tQnl0ZXMgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmV4cG9ydCB0eXBlIEFudGhyb3BpY1VzYWdlUmF3ID0ge1xuICBlcnJvcj86IHN0cmluZztcbiAgZml2ZV9ob3VyPzogeyB1dGlsaXphdGlvbjogbnVtYmVyIHwgbnVsbDsgcmVzZXRzX2F0OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsO1xuICBzZXZlbl9kYXk/OiB7IHV0aWxpemF0aW9uOiBudW1iZXIgfCBudWxsOyByZXNldHNfYXQ6IHN0cmluZyB8IG51bGwgfSB8IG51bGw7XG4gIHNldmVuX2RheV9vdmVyYWdlX2luY2x1ZGVkPzogeyB1dGlsaXphdGlvbjogbnVtYmVyIHwgbnVsbDsgcmVzZXRzX2F0OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsO1xufTtcblxuY29uc3QgdXNhZ2VXaW5kb3dTY2hlbWEgPSB6XG4gIC5vYmplY3QoeyB1dGlsaXphdGlvbjogei5udW1iZXIoKS5udWxsYWJsZSgpLCByZXNldHNfYXQ6IHouc3RyaW5nKCkubnVsbGFibGUoKSB9KVxuICAubnVsbGFibGUoKVxuICAub3B0aW9uYWwoKTtcblxuY29uc3QgYW50aHJvcGljVXNhZ2VSYXdTY2hlbWE6IHouWm9kVHlwZTxBbnRocm9waWNVc2FnZVJhdz4gPSB6Lmxvb3NlT2JqZWN0KHtcbiAgZXJyb3I6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZml2ZV9ob3VyOiB1c2FnZVdpbmRvd1NjaGVtYSxcbiAgc2V2ZW5fZGF5OiB1c2FnZVdpbmRvd1NjaGVtYSxcbiAgc2V2ZW5fZGF5X292ZXJhZ2VfaW5jbHVkZWQ6IHVzYWdlV2luZG93U2NoZW1hLFxufSk7XG5cbmNvbnN0IHRva2VuRXhjaGFuZ2VSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjZXNzX3Rva2VuOiB6LnN0cmluZygpLFxuICByZWZyZXNoX3Rva2VuOiB6LnN0cmluZygpLFxuICBleHBpcmVzX2luOiB6Lm51bWJlcigpLFxuICBzY29wZTogei5zdHJpbmcoKSxcbiAgYWNjb3VudDogei5vYmplY3QoeyB1dWlkOiB6LnN0cmluZygpLCBlbWFpbF9hZGRyZXNzOiB6LnN0cmluZygpIH0pLm9wdGlvbmFsKCksXG59KTtcblxuLy8gQSByZWZyZXNoIHJlc3BvbnNlIG1heSBvbWl0IHJlZnJlc2hfdG9rZW47IHRoZSBjYWxsZXIgdGhlbiBrZWVwcyB0aGUgY3VycmVudCBvbmUuXG5jb25zdCB0b2tlblJlZnJlc2hSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYWNjZXNzX3Rva2VuOiB6LnN0cmluZygpLFxuICByZWZyZXNoX3Rva2VuOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGV4cGlyZXNfaW46IHoubnVtYmVyKCksXG4gIHNjb3BlOiB6LnN0cmluZygpLFxufSk7XG5cbmV4cG9ydCB0eXBlIEFudGhyb3BpY1VzYWdlV2l0aE1ldGEgPSB7XG4gIGRhdGE6IEFudGhyb3BpY1VzYWdlUmF3O1xuICBjYWNoZWRBdDogbnVtYmVyO1xufTtcblxuY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcInFncmlkXCIsIFwib2F1dGhcIl0pO1xuXG5jb25zdCBDTElFTlRfSUQgPSBcIjlkMWMyNTBhLWU2MWItNDRkOS04OGVkLTU5NDRkMTk2MmY1ZVwiO1xuY29uc3QgQVVUSE9SSVpFX1VSTCA9IFwiaHR0cHM6Ly9jbGF1ZGUuY29tL2NhaS9vYXV0aC9hdXRob3JpemVcIjtcbmNvbnN0IFRPS0VOX1VSTCA9IFwiaHR0cHM6Ly9wbGF0Zm9ybS5jbGF1ZGUuY29tL3YxL29hdXRoL3Rva2VuXCI7XG5cbi8vIGNsaWVudCDtl4jsmqkg66qp66Gd7JeQIOyeiOuKlCDsvZjshpQg7L2c67CxLiDsnbjspp0g7ZuEIOy9mOyGlCDtjpjsnbTsp4DqsIAgYGNvZGUjc3RhdGVg66W8IO2RnOyLnO2VmOqzoFxuLy8g7IKs7Jqp7J6Q6rCAIOu2meyXrOuEo+uKlCDsvZTrk5wg7ZSM66Gc7JqwKENsYXVkZSBDb2RlIENMSeyZgCDrj5nsnbwp7JeQIOyCrOyaqe2VnOuLpC5cbmV4cG9ydCBjb25zdCBDT05TT0xFX0NBTExCQUNLX1VSTCA9IFwiaHR0cHM6Ly9jb25zb2xlLmFudGhyb3BpYy5jb20vb2F1dGgvY29kZS9jYWxsYmFja1wiO1xuXG4vLyBsb2dpbiDsi5wg7IKs7JqpIChhdXRob3JpemUgVVJMKVxuY29uc3QgQUxMX1NDT1BFUyA9IFtcbiAgXCJvcmc6Y3JlYXRlX2FwaV9rZXlcIixcbiAgXCJ1c2VyOnByb2ZpbGVcIixcbiAgXCJ1c2VyOmluZmVyZW5jZVwiLFxuICBcInVzZXI6c2Vzc2lvbnM6Y2xhdWRlX2NvZGVcIixcbiAgXCJ1c2VyOm1jcF9zZXJ2ZXJzXCIsXG4gIFwidXNlcjpmaWxlX3VwbG9hZFwiLFxuXTtcblxuLy8gcmVmcmVzaCDsi5wg7IKs7JqpIChvcmc6Y3JlYXRlX2FwaV9rZXkg7KCc7Jm4KVxuY29uc3QgUkVGUkVTSF9TQ09QRVMgPSBbXG4gIFwidXNlcjpwcm9maWxlXCIsXG4gIFwidXNlcjppbmZlcmVuY2VcIixcbiAgXCJ1c2VyOnNlc3Npb25zOmNsYXVkZV9jb2RlXCIsXG4gIFwidXNlcjptY3Bfc2VydmVyc1wiLFxuICBcInVzZXI6ZmlsZV91cGxvYWRcIixcbl07XG5cbmZ1bmN0aW9uIGJhc2U2NFVSTEVuY29kZShidWZmZXI6IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBidWZmZXIudG9TdHJpbmcoXCJiYXNlNjRcIikucmVwbGFjZSgvXFwrL2csIFwiLVwiKS5yZXBsYWNlKC9cXC8vZywgXCJfXCIpLnJlcGxhY2UoLz0vZywgXCJcIik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUEtDRUNoYWxsZW5nZSB7XG4gIGNvZGVWZXJpZmllcjogc3RyaW5nO1xuICBjb2RlQ2hhbGxlbmdlOiBzdHJpbmc7XG4gIHN0YXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVBLQ0UoKTogUEtDRUNoYWxsZW5nZSB7XG4gIGNvbnN0IGNvZGVWZXJpZmllciA9IGJhc2U2NFVSTEVuY29kZShyYW5kb21CeXRlcygzMikpO1xuICBjb25zdCBjb2RlQ2hhbGxlbmdlID0gYmFzZTY0VVJMRW5jb2RlKGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKGNvZGVWZXJpZmllcikuZGlnZXN0KCkpO1xuICBjb25zdCBzdGF0ZSA9IGJhc2U2NFVSTEVuY29kZShyYW5kb21CeXRlcygzMikpO1xuXG4gIHJldHVybiB7IGNvZGVWZXJpZmllciwgY29kZUNoYWxsZW5nZSwgc3RhdGUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQXV0aFVybChjb2RlQ2hhbGxlbmdlOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcsIHJlZGlyZWN0VXJpOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKEFVVEhPUklaRV9VUkwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcImNvZGVcIiwgXCJ0cnVlXCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcImNsaWVudF9pZFwiLCBDTElFTlRfSUQpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcInJlc3BvbnNlX3R5cGVcIiwgXCJjb2RlXCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLmFwcGVuZChcInJlZGlyZWN0X3VyaVwiLCByZWRpcmVjdFVyaSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwic2NvcGVcIiwgQUxMX1NDT1BFUy5qb2luKFwiIFwiKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwiY29kZV9jaGFsbGVuZ2VcIiwgY29kZUNoYWxsZW5nZSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKFwiY29kZV9jaGFsbGVuZ2VfbWV0aG9kXCIsIFwiUzI1NlwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5hcHBlbmQoXCJzdGF0ZVwiLCBzdGF0ZSk7XG5cbiAgcmV0dXJuIHVybC50b1N0cmluZygpO1xufVxuXG5leHBvcnQgdHlwZSBPQXV0aFRva2VucyA9IHtcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICBzY29wZTogc3RyaW5nO1xuICBhY2NvdW50VXVpZD86IHN0cmluZztcbiAgZW1haWxBZGRyZXNzPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4Y2hhbmdlQ29kZUZvclRva2VucyhcbiAgY29kZTogc3RyaW5nLFxuICBjb2RlVmVyaWZpZXI6IHN0cmluZyxcbiAgc3RhdGU6IHN0cmluZyxcbiAgcmVkaXJlY3RVcmk6IHN0cmluZyxcbik6IFByb21pc2U8T0F1dGhUb2tlbnM+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goVE9LRU5fVVJMLCB7XG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZ3JhbnRfdHlwZTogXCJhdXRob3JpemF0aW9uX2NvZGVcIixcbiAgICAgIGNvZGUsXG4gICAgICByZWRpcmVjdF91cmk6IHJlZGlyZWN0VXJpLFxuICAgICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgICBjb2RlX3ZlcmlmaWVyOiBjb2RlVmVyaWZpZXIsXG4gICAgICBzdGF0ZSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRva2VuIGV4Y2hhbmdlIGZhaWxlZCAoJHtyZXMuc3RhdHVzfSk6ICR7dGV4dH1gKTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSB0b2tlbkV4Y2hhbmdlUmVzcG9uc2VTY2hlbWEucGFyc2UoYXdhaXQgcmVzLmpzb24oKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhY2Nlc3NUb2tlbjogZGF0YS5hY2Nlc3NfdG9rZW4sXG4gICAgcmVmcmVzaFRva2VuOiBkYXRhLnJlZnJlc2hfdG9rZW4sXG4gICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgZGF0YS5leHBpcmVzX2luICogMTAwMCxcbiAgICBzY29wZTogZGF0YS5zY29wZSxcbiAgICBhY2NvdW50VXVpZDogZGF0YS5hY2NvdW50Py51dWlkLFxuICAgIGVtYWlsQWRkcmVzczogZGF0YS5hY2NvdW50Py5lbWFpbF9hZGRyZXNzLFxuICB9O1xufVxuXG4vKipcbiAqIHJlZnJlc2gg7Iuk7Yyo66W8IHN0YXR1cyDsmYAg7ZWo6ruYIOyghOuLrO2VnOuLpC4g7Zi47Lac67aA6rCAIOusuOyekOyXtCDrqZTsi5zsp4Drpbwg7YyM7Iux7ZWY7KeAIOyViuqzoFxuICog7JiB6rWsIOyLpO2MqCg0MDAvNDAxKeulvCDtjJDrs4TtlaAg7IiYIOyeiOyWtOyVvCDtlZjquLAg65WM66y47J2064ukLlxuICovXG5leHBvcnQgY2xhc3MgUmVmcmVzaEZhaWxlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBvdmVycmlkZSByZWFkb25seSBuYW1lID0gXCJSZWZyZXNoRmFpbGVkRXJyb3JcIjtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgc3RhdHVzOiBudW1iZXIsXG4gICAgcmVhZG9ubHkgYm9keTogc3RyaW5nLFxuICApIHtcbiAgICBzdXBlcihgVG9rZW4gcmVmcmVzaCBmYWlsZWQgKCR7c3RhdHVzfSk6ICR7Ym9keX1gKTtcbiAgfVxuXG4gIC8qKiDsnqzroZzqt7jsnbgg7Jm4IOuzteq1rCDrtojqsIDtlZwg7J247KadIOyLpO2MqOyduOyngC4g7J287IucIOyYpOulmCg1eHjCt+uEpO2KuOybjO2BrCnripQg7KCc7Jm465Cc64ukLiAqL1xuICBpc0F1dGhEZWFkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gNDAwIHx8IHRoaXMuc3RhdHVzID09PSA0MDE7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlZnJlc2hBY2Nlc3NUb2tlbihyZWZyZXNoVG9rZW46IHN0cmluZyk6IFByb21pc2U8T0F1dGhUb2tlbnM+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goVE9LRU5fVVJMLCB7XG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZ3JhbnRfdHlwZTogXCJyZWZyZXNoX3Rva2VuXCIsXG4gICAgICByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4sXG4gICAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICAgIHNjb3BlOiBSRUZSRVNIX1NDT1BFUy5qb2luKFwiIFwiKSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKTtcbiAgICB0aHJvdyBuZXcgUmVmcmVzaEZhaWxlZEVycm9yKHJlcy5zdGF0dXMsIHRleHQpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IHRva2VuUmVmcmVzaFJlc3BvbnNlU2NoZW1hLnBhcnNlKGF3YWl0IHJlcy5qc29uKCkpO1xuXG4gIHJldHVybiB7XG4gICAgYWNjZXNzVG9rZW46IGRhdGEuYWNjZXNzX3Rva2VuLFxuICAgIHJlZnJlc2hUb2tlbjogZGF0YS5yZWZyZXNoX3Rva2VuID8/IHJlZnJlc2hUb2tlbixcbiAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyBkYXRhLmV4cGlyZXNfaW4gKiAxMDAwLFxuICAgIHNjb3BlOiBkYXRhLnNjb3BlLFxuICB9O1xufVxuXG5jb25zdCB1c2FnZUNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBBbnRocm9waWNVc2FnZVdpdGhNZXRhPiA9IHt9O1xuY29uc3QgVVNBR0VfQVBJX0NBQ0hFX1RUTCA9IDYwXzAwMDsgLy8gMeu2hFxuXG5leHBvcnQgZnVuY3Rpb24gaW52YWxpZGF0ZUFudGhyb3BpY1F1b3RhVXNhZ2UoYWNjZXNzVG9rZW46IHN0cmluZyk6IHZvaWQge1xuICBkZWxldGUgdXNhZ2VDYWNoZVthY2Nlc3NUb2tlbi5zbGljZSgtMTApXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoVXNhZ2UoYWNjZXNzVG9rZW46IHN0cmluZyk6IFByb21pc2U8QW50aHJvcGljVXNhZ2VSYXc+IHtcbiAgcmV0dXJuIChhd2FpdCBmZXRjaFVzYWdlV2l0aE1ldGEoYWNjZXNzVG9rZW4pKS5kYXRhO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hVc2FnZVdpdGhNZXRhKGFjY2Vzc1Rva2VuOiBzdHJpbmcpOiBQcm9taXNlPEFudGhyb3BpY1VzYWdlV2l0aE1ldGE+IHtcbiAgY29uc3QgY2FjaGVLZXkgPSBhY2Nlc3NUb2tlbi5zbGljZSgtMTApO1xuICBjb25zdCBjYWNoZWQgPSB1c2FnZUNhY2hlW2NhY2hlS2V5XTtcblxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuY2FjaGVkQXQgPCBVU0FHRV9BUElfQ0FDSEVfVFRMKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuXG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuYW50aHJvcGljLmNvbS9hcGkvb2F1dGgvdXNhZ2VcIiwge1xuICAgIGhlYWRlcnM6IHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gLFxuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICBcImFudGhyb3BpYy1iZXRhXCI6IFwib2F1dGgtMjAyNS0wNC0yMFwiLFxuICAgIH0sXG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbC50aW1lb3V0KDUwMDApLFxuICB9KTtcblxuICBpZiAoIXJlcy5vaykge1xuICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuXG4gICAgLy8g7YyM7IuxIOyLnOuPhO2VtOyEnCDsl5Drn6wg66mU7Iuc7KeAIOy2lOy2nFxuICAgIGxldCBlcnJvck1lc3NhZ2UgPSBgRXJyb3IgJHtyZXMuc3RhdHVzfWA7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgIGVycm9yTWVzc2FnZSA9IHBhcnNlZC5lcnJvcj8ubWVzc2FnZSA/PyBlcnJvck1lc3NhZ2U7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDtjIzsi7Eg7JWIIOuQmOuptCDquLDrs7gg66mU7Iuc7KeAXG4gICAgfVxuXG4gICAgbG9nZ2VyLndhcm4oYCR7cmVzLnN0YXR1c306ICR7ZXJyb3JNZXNzYWdlfWApO1xuXG4gICAgLy8g7J207KCEIOyEseqztSDsupDsi5wg7J6I7Jy866m0IOycoOyngFxuICAgIGlmIChjYWNoZWQ/LmRhdGEgJiYgIWNhY2hlZC5kYXRhLmVycm9yKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgLy8g7Iuk7Yyo64+EIOy6kOyLnCAo67CY67O1IO2YuOy2nCDrsKnsp4ApXG4gICAgY29uc3QgZXJyb3JSZXN1bHQgPSB7IGVycm9yOiBlcnJvck1lc3NhZ2UgfTtcbiAgICBjb25zdCBlbnRyeSA9IHsgZGF0YTogZXJyb3JSZXN1bHQsIGNhY2hlZEF0OiBEYXRlLm5vdygpIH07XG4gICAgdXNhZ2VDYWNoZVtjYWNoZUtleV0gPSBlbnRyeTtcblxuICAgIHJldHVybiBlbnRyeTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhbnRocm9waWNVc2FnZVJhd1NjaGVtYS5wYXJzZShhd2FpdCByZXMuanNvbigpKTtcbiAgLy8gY2FjaGUgaW52YWxpZGF0ZVxuICBjb25zdCBlbnRyeSA9IHsgZGF0YSwgY2FjaGVkQXQ6IERhdGUubm93KCkgfTtcbiAgdXNhZ2VDYWNoZVtjYWNoZUtleV0gPSBlbnRyeTtcblxuICByZXR1cm4gZW50cnk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFlQSxNQUFNLG9CQUFvQixFQUN2QixPQUFPO0NBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVM7Q0FBRyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUztBQUFFLENBQUMsQ0FBQyxDQUNoRixTQUFTLENBQUMsQ0FDVixTQUFTO0FBRVosTUFBTSwwQkFBd0QsRUFBRSxZQUFZO0NBQzFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQzNCLFdBQVc7Q0FDWCxXQUFXO0NBQ1gsNEJBQTRCO0FBQzlCLENBQUM7QUFFRCxNQUFNLDhCQUE4QixFQUFFLE9BQU87Q0FDM0MsY0FBYyxFQUFFLE9BQU87Q0FDdkIsZUFBZSxFQUFFLE9BQU87Q0FDeEIsWUFBWSxFQUFFLE9BQU87Q0FDckIsT0FBTyxFQUFFLE9BQU87Q0FDaEIsU0FBUyxFQUFFLE9BQU87RUFBRSxNQUFNLEVBQUUsT0FBTztFQUFHLGVBQWUsRUFBRSxPQUFPO0NBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUM5RSxDQUFDO0FBR0QsTUFBTSw2QkFBNkIsRUFBRSxPQUFPO0NBQzFDLGNBQWMsRUFBRSxPQUFPO0NBQ3ZCLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTO0NBQ25DLFlBQVksRUFBRSxPQUFPO0NBQ3JCLE9BQU8sRUFBRSxPQUFPO0FBQ2xCLENBQUM7QUFPRCxNQUFNLFNBQVMsVUFBVSxDQUFDLFNBQVMsT0FBTyxDQUFDO0FBRTNDLE1BQU0sWUFBWTtBQUNsQixNQUFNLGdCQUFnQjtBQUN0QixNQUFNLFlBQVk7QUFJbEIsTUFBYSx1QkFBdUI7QUFHcEMsTUFBTSxhQUFhO0NBQ2pCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGO0FBR0EsTUFBTSxpQkFBaUI7Q0FDckI7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNGO0FBRUEsU0FBUyxnQkFBZ0IsUUFBd0I7Q0FDL0MsT0FBTyxPQUFPLFNBQVMsUUFBUSxDQUFDLENBQUMsUUFBUSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLE1BQU0sRUFBRTtBQUMzRjtBQVFBLFNBQWdCLGVBQThCO0NBQzVDLE1BQU0sZUFBZSxnQkFBZ0IsWUFBWSxFQUFFLENBQUM7Q0FJcEQsT0FBTztFQUFFO0VBQWMsZUFIRCxnQkFBZ0IsV0FBVyxRQUFRLENBQUMsQ0FBQyxPQUFPLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FHaEU7RUFBZSxPQUZ4QixnQkFBZ0IsWUFBWSxFQUFFLENBRU47Q0FBTTtBQUM5QztBQUVBLFNBQWdCLGFBQWEsZUFBdUIsT0FBZSxhQUE2QjtDQUM5RixNQUFNLE1BQU0sSUFBSSxJQUFJLGFBQWE7Q0FDakMsSUFBSSxhQUFhLE9BQU8sUUFBUSxNQUFNO0NBQ3RDLElBQUksYUFBYSxPQUFPLGFBQWEsU0FBUztDQUM5QyxJQUFJLGFBQWEsT0FBTyxpQkFBaUIsTUFBTTtDQUMvQyxJQUFJLGFBQWEsT0FBTyxnQkFBZ0IsV0FBVztDQUNuRCxJQUFJLGFBQWEsT0FBTyxTQUFTLFdBQVcsS0FBSyxHQUFHLENBQUM7Q0FDckQsSUFBSSxhQUFhLE9BQU8sa0JBQWtCLGFBQWE7Q0FDdkQsSUFBSSxhQUFhLE9BQU8seUJBQXlCLE1BQU07Q0FDdkQsSUFBSSxhQUFhLE9BQU8sU0FBUyxLQUFLO0NBRXRDLE9BQU8sSUFBSSxTQUFTO0FBQ3RCO0FBV0EsZUFBc0Isc0JBQ3BCLE1BQ0EsY0FDQSxPQUNBLGFBQ3NCO0NBQ3RCLE1BQU0sTUFBTSxNQUFNLE1BQU0sV0FBVztFQUNqQyxRQUFRO0VBQ1IsU0FBUyxFQUFFLGdCQUFnQixtQkFBbUI7RUFDOUMsTUFBTSxLQUFLLFVBQVU7R0FDbkIsWUFBWTtHQUNaO0dBQ0EsY0FBYztHQUNkLFdBQVc7R0FDWCxlQUFlO0dBQ2Y7RUFDRixDQUFDO0NBQ0gsQ0FBQztDQUVELElBQUksQ0FBQyxJQUFJLElBQUk7RUFDWCxNQUFNLE9BQU8sTUFBTSxJQUFJLEtBQUs7RUFDNUIsTUFBTSxJQUFJLE1BQU0sMEJBQTBCLElBQUksT0FBTyxLQUFLLE1BQU07Q0FDbEU7Q0FFQSxNQUFNLE9BQU8sNEJBQTRCLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQztDQUUvRCxPQUFPO0VBQ0wsYUFBYSxLQUFLO0VBQ2xCLGNBQWMsS0FBSztFQUNuQixXQUFXLEtBQUssSUFBSSxJQUFJLEtBQUssYUFBYTtFQUMxQyxPQUFPLEtBQUs7RUFDWixhQUFhLEtBQUssU0FBUztFQUMzQixjQUFjLEtBQUssU0FBUztDQUM5QjtBQUNGOzs7OztBQU1BLElBQWEscUJBQWIsY0FBd0MsTUFBTTtDQUdqQztDQUNBO0NBSFgsT0FBeUI7Q0FDekIsWUFDRSxRQUNBLE1BQ0E7RUFDQSxNQUFNLHlCQUF5QixPQUFPLEtBQUssTUFBTTtFQUh4QyxLQUFBLFNBQUE7RUFDQSxLQUFBLE9BQUE7Q0FHWDs7Q0FHQSxhQUFzQjtFQUNwQixPQUFPLEtBQUssV0FBVyxPQUFPLEtBQUssV0FBVztDQUNoRDtBQUNGO0FBRUEsZUFBc0IsbUJBQW1CLGNBQTRDO0NBQ25GLE1BQU0sTUFBTSxNQUFNLE1BQU0sV0FBVztFQUNqQyxRQUFRO0VBQ1IsU0FBUyxFQUFFLGdCQUFnQixtQkFBbUI7RUFDOUMsTUFBTSxLQUFLLFVBQVU7R0FDbkIsWUFBWTtHQUNaLGVBQWU7R0FDZixXQUFXO0dBQ1gsT0FBTyxlQUFlLEtBQUssR0FBRztFQUNoQyxDQUFDO0NBQ0gsQ0FBQztDQUVELElBQUksQ0FBQyxJQUFJLElBQUk7RUFDWCxNQUFNLE9BQU8sTUFBTSxJQUFJLEtBQUs7RUFDNUIsTUFBTSxJQUFJLG1CQUFtQixJQUFJLFFBQVEsSUFBSTtDQUMvQztDQUVBLE1BQU0sT0FBTywyQkFBMkIsTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDO0NBRTlELE9BQU87RUFDTCxhQUFhLEtBQUs7RUFDbEIsY0FBYyxLQUFLLGlCQUFpQjtFQUNwQyxXQUFXLEtBQUssSUFBSSxJQUFJLEtBQUssYUFBYTtFQUMxQyxPQUFPLEtBQUs7Q0FDZDtBQUNGO0FBRUEsTUFBTSxhQUFxRCxDQUFDO0FBQzVELE1BQU0sc0JBQXNCO0FBRTVCLFNBQWdCLDhCQUE4QixhQUEyQjtDQUN2RSxPQUFPLFdBQVcsWUFBWSxNQUFNLEdBQUc7QUFDekM7QUFFQSxlQUFzQixXQUFXLGFBQWlEO0NBQ2hGLFFBQVEsTUFBTSxtQkFBbUIsV0FBVyxFQUFBLENBQUc7QUFDakQ7QUFFQSxlQUFzQixtQkFBbUIsYUFBc0Q7Q0FDN0YsTUFBTSxXQUFXLFlBQVksTUFBTSxHQUFHO0NBQ3RDLE1BQU0sU0FBUyxXQUFXO0NBRTFCLElBQUksVUFBVSxLQUFLLElBQUksSUFBSSxPQUFPLFdBQVcscUJBQzNDLE9BQU87Q0FHVCxNQUFNLE1BQU0sTUFBTSxNQUFNLDZDQUE2QztFQUNuRSxTQUFTO0dBQ1AsZUFBZSxVQUFVO0dBQ3pCLGdCQUFnQjtHQUNoQixrQkFBa0I7RUFDcEI7RUFDQSxRQUFRLFlBQVksUUFBUSxHQUFJO0NBQ2xDLENBQUM7Q0FFRCxJQUFJLENBQUMsSUFBSSxJQUFJO0VBQ1gsTUFBTSxPQUFPLE1BQU0sSUFBSSxLQUFLO0VBRzVCLElBQUksZUFBZSxTQUFTLElBQUk7RUFFaEMsSUFBSTtHQUVGLGVBRGUsS0FBSyxNQUFNLElBQ1gsQ0FBQSxDQUFPLE9BQU8sV0FBVztFQUMxQyxRQUFRLENBRVI7RUFFQSxPQUFPLEtBQUssR0FBRyxJQUFJLE9BQU8sSUFBSSxjQUFjO0VBRzVDLElBQUksUUFBUSxRQUFRLENBQUMsT0FBTyxLQUFLLE9BQU8sT0FBTztFQUkvQyxNQUFNLFFBQVE7R0FBRSxNQUFNLEVBREEsT0FBTyxhQUNQO0dBQWEsVUFBVSxLQUFLLElBQUk7RUFBRTtFQUN4RCxXQUFXLFlBQVk7RUFFdkIsT0FBTztDQUNUO0NBSUEsTUFBTSxRQUFRO0VBQUUsTUFGSCx3QkFBd0IsTUFBTSxNQUFNLElBQUksS0FBSyxDQUUxQztFQUFNLFVBQVUsS0FBSyxJQUFJO0NBQUU7Q0FDM0MsV0FBVyxZQUFZO0NBRXZCLE9BQU87QUFDVCJ9
|
|
@@ -47,4 +47,4 @@ function estimateImageGenerationCostMicroUsd(result, options) {
|
|
|
47
47
|
//#endregion
|
|
48
48
|
export { CODEX_IMAGE_GENERATION_MODEL, DEFAULT_IMAGE_GENERATION_QUALITY, DEFAULT_IMAGE_GENERATION_SIZE, estimateImageGenerationCostMicroUsd, imageGenerationCostMethod, resolveImageGenerationOptions };
|
|
49
49
|
|
|
50
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtaW1hZ2UtZ2VuZXJhdGlvbi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvcWdyaWQtaW1hZ2UtZ2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIEltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG4gIHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSxcbiAgdHlwZSBRdWVyeU91dHB1dCxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IENPREVYX0lNQUdFX0dFTkVSQVRJT05fTU9ERUwgPSBcImdwdC1pbWFnZS0yXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JTUFHRV9HRU5FUkFUSU9OX1FVQUxJVFk6IEltYWdlR2VuZXJhdGlvblF1YWxpdHkgPSBcIm1lZGl1bVwiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU1BR0VfR0VORVJBVElPTl9TSVpFID0gXCIxNTM2eDEwMjRcIjtcblxudHlwZSBQcmljZWRJbWFnZVNpemUgPSBcIjEwMjR4MTAyNFwiIHwgXCIxMDI0eDE1MzZcIiB8IFwiMTUzNngxMDI0XCI7XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHtcbiAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eTtcbiAgc2l6ZTogUHJpY2VkSW1hZ2VTaXplO1xufTtcblxuLy8gT3BlbkFJIGdwdC1pbWFnZS0yIGltYWdlIG91dHB1dCBjb3N0IGVzdGltYXRlcyBieSBxdWFsaXR5L3NpemU6XG4vLyBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9ndWlkZXMvaW1hZ2UtZ2VuZXJhdGlvbiNjYWxjdWxhdGluZy1jb3N0c1xuY29uc3QgSU1BR0VfT1VUUFVUX0NPU1RfTUlDUk9fVVNEOiBSZWNvcmQ8XG4gIEltYWdlR2VuZXJhdGlvblF1YWxpdHksXG4gIFJlY29yZDxQcmljZWRJbWFnZVNpemUsIG51bWJlcj5cbj4gPSB7XG4gIGxvdzoge1xuICAgIFwiMTAyNHgxMDI0XCI6IDZfMDAwLFxuICAgIFwiMTAyNHgxNTM2XCI6IDVfMDAwLFxuICAgIFwiMTUzNngxMDI0XCI6IDVfMDAwLFxuICB9LFxuICBtZWRpdW06IHtcbiAgICBcIjEwMjR4MTAyNFwiOiA1M18wMDAsXG4gICAgXCIxMDI0eDE1MzZcIjogNDFfMDAwLFxuICAgIFwiMTUzNngxMDI0XCI6IDQxXzAwMCxcbiAgfSxcbiAgaGlnaDoge1xuICAgIFwiMTAyNHgxMDI0XCI6IDIxMV8wMDAsXG4gICAgXCIxMDI0eDE1MzZcIjogMTY1XzAwMCxcbiAgICBcIjE1MzZ4MTAyNFwiOiAxNjVfMDAwLFxuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbWFnZUdlbmVyYXRpb25PcHRpb25zKFxuICBvcHRpb25zOiBJbWFnZUdlbmVyYXRpb25PcHRpb25zIHwgdW5kZWZpbmVkLFxuKTogUmVzb2x2ZWRJbWFnZUdlbmVyYXRpb25PcHRpb25zIHtcbiAgY29uc3Qgc2l6ZSA9IG9wdGlvbnM/
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtaW1hZ2UtZ2VuZXJhdGlvbi5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vcWdyaWQvcWdyaWQtaW1hZ2UtZ2VuZXJhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIEltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG4gIHR5cGUgSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eSxcbiAgdHlwZSBRdWVyeU91dHB1dCxcbn0gZnJvbSBcIi4vcWdyaWQudHlwZXNcIjtcblxuZXhwb3J0IGNvbnN0IENPREVYX0lNQUdFX0dFTkVSQVRJT05fTU9ERUwgPSBcImdwdC1pbWFnZS0yXCI7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JTUFHRV9HRU5FUkFUSU9OX1FVQUxJVFk6IEltYWdlR2VuZXJhdGlvblF1YWxpdHkgPSBcIm1lZGl1bVwiO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU1BR0VfR0VORVJBVElPTl9TSVpFID0gXCIxNTM2eDEwMjRcIjtcblxudHlwZSBQcmljZWRJbWFnZVNpemUgPSBcIjEwMjR4MTAyNFwiIHwgXCIxMDI0eDE1MzZcIiB8IFwiMTUzNngxMDI0XCI7XG5cbmV4cG9ydCB0eXBlIFJlc29sdmVkSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyA9IHtcbiAgcXVhbGl0eTogSW1hZ2VHZW5lcmF0aW9uUXVhbGl0eTtcbiAgc2l6ZTogUHJpY2VkSW1hZ2VTaXplO1xufTtcblxuLy8gT3BlbkFJIGdwdC1pbWFnZS0yIGltYWdlIG91dHB1dCBjb3N0IGVzdGltYXRlcyBieSBxdWFsaXR5L3NpemU6XG4vLyBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9ndWlkZXMvaW1hZ2UtZ2VuZXJhdGlvbiNjYWxjdWxhdGluZy1jb3N0c1xuY29uc3QgSU1BR0VfT1VUUFVUX0NPU1RfTUlDUk9fVVNEOiBSZWNvcmQ8XG4gIEltYWdlR2VuZXJhdGlvblF1YWxpdHksXG4gIFJlY29yZDxQcmljZWRJbWFnZVNpemUsIG51bWJlcj5cbj4gPSB7XG4gIGxvdzoge1xuICAgIFwiMTAyNHgxMDI0XCI6IDZfMDAwLFxuICAgIFwiMTAyNHgxNTM2XCI6IDVfMDAwLFxuICAgIFwiMTUzNngxMDI0XCI6IDVfMDAwLFxuICB9LFxuICBtZWRpdW06IHtcbiAgICBcIjEwMjR4MTAyNFwiOiA1M18wMDAsXG4gICAgXCIxMDI0eDE1MzZcIjogNDFfMDAwLFxuICAgIFwiMTUzNngxMDI0XCI6IDQxXzAwMCxcbiAgfSxcbiAgaGlnaDoge1xuICAgIFwiMTAyNHgxMDI0XCI6IDIxMV8wMDAsXG4gICAgXCIxMDI0eDE1MzZcIjogMTY1XzAwMCxcbiAgICBcIjE1MzZ4MTAyNFwiOiAxNjVfMDAwLFxuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVJbWFnZUdlbmVyYXRpb25PcHRpb25zKFxuICBvcHRpb25zOiBJbWFnZUdlbmVyYXRpb25PcHRpb25zIHwgdW5kZWZpbmVkLFxuKTogUmVzb2x2ZWRJbWFnZUdlbmVyYXRpb25PcHRpb25zIHtcbiAgY29uc3Qgc2l6ZSA9IG9wdGlvbnM/LnNpemU7XG5cbiAgcmV0dXJuIHtcbiAgICBxdWFsaXR5OiBvcHRpb25zPy5xdWFsaXR5ID8/IERFRkFVTFRfSU1BR0VfR0VORVJBVElPTl9RVUFMSVRZLFxuICAgIC8vIFVua25vd24vY3VzdG9tIHNpemVzIHVzZSB0aGUgZGVmYXVsdCBwcmljZSwgd2l0aG91dCBjaGFuZ2luZyBvdXRwdXQgaGludHMuXG4gICAgc2l6ZTpcbiAgICAgIHNpemUgPT09IFwiMTAyNHgxMDI0XCIgfHwgc2l6ZSA9PT0gXCIxMDI0eDE1MzZcIiB8fCBzaXplID09PSBcIjE1MzZ4MTAyNFwiXG4gICAgICAgID8gc2l6ZVxuICAgICAgICA6IERFRkFVTFRfSU1BR0VfR0VORVJBVElPTl9TSVpFLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW1hZ2VHZW5lcmF0aW9uQ29zdE1ldGhvZChcbiAgb3B0aW9uczogSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyB8IHVuZGVmaW5lZCxcbiAgcmVzdWx0PzogUXVlcnlPdXRwdXQsXG4pOiBzdHJpbmcge1xuICBpZiAoXG4gICAgcmVzdWx0Py5jb250ZW50LnNvbWUoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gXCJpbWFnZVwiICYmIGl0ZW0uZ2VuZXJhdGlvbj8udXNhZ2UgIT09IHVuZGVmaW5lZClcbiAgKSB7XG4gICAgcmV0dXJuIFwiZXN0aW1hdGVkOmdwdC1pbWFnZS0yOnJlcG9ydGVkLXVzYWdlOnB1YmxpYy1wcmljZXM6Y29uc2VydmF0aXZlXCI7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVJbWFnZUdlbmVyYXRpb25PcHRpb25zKG9wdGlvbnMpO1xuXG4gIHJldHVybiBgYXNzdW1lZDoke0NPREVYX0lNQUdFX0dFTkVSQVRJT05fTU9ERUx9OiR7cmVzb2x2ZWQucXVhbGl0eX06JHtyZXNvbHZlZC5zaXplfTpwbmdgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXN0aW1hdGVJbWFnZUdlbmVyYXRpb25Db3N0TWljcm9Vc2QoXG4gIHJlc3VsdDogUXVlcnlPdXRwdXQsXG4gIG9wdGlvbnM6IEltYWdlR2VuZXJhdGlvbk9wdGlvbnMgfCB1bmRlZmluZWQsXG4pOiBudW1iZXIgfCBudWxsIHtcbiAgY29uc3QgaW1hZ2VzID0gcmVzdWx0LmNvbnRlbnQuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09IFwiaW1hZ2VcIik7XG4gIGNvbnN0IGltYWdlQ291bnQgPSBpbWFnZXMubGVuZ3RoO1xuXG4gIGlmIChpbWFnZUNvdW50ID09PSAwKSByZXR1cm4gbnVsbDtcbiAgY29uc3QgdXNhZ2UgPSBpbWFnZXMuZmluZCgoaW1hZ2UpID0+IGltYWdlLmdlbmVyYXRpb24/LnVzYWdlKT8uZ2VuZXJhdGlvbj8udXNhZ2U7XG5cbiAgaWYgKHVzYWdlKSB7XG4gICAgLy8gUmVzcG9uc2UtbGV2ZWwgaW1hZ2UgdXNhZ2UgaXMgY2FycmllZCBieSBpdHMgZmlyc3QgaW1hZ2Ugb25seS5cbiAgICAvLyBEbyBub3QgbXVsdGlwbHkgaXQgYnkgb3V0cHV0IGNvdW50IG9yIHByaWNlIGl0IGFzIHRoZSByZXF1ZXN0ZWQgdGV4dCBkcml2ZXIuXG4gICAgLy8gUHVibGljIEdQVCBJbWFnZSAyIHJhdGVzIHZlcmlmaWVkIDIwMjYtMDktMDg6IHRleHQgaW5wdXQgJDUvTSwgaW1hZ2UgaW5wdXRcbiAgICAvLyAkOC9NLCBvdXRwdXQgJDMwL00uIEFtb3VudHMgYmVsb3cgYXJlIG1pY3JvVVNELCBzbyBubyAvMU0gY29udmVyc2lvbi5cbiAgICAvLyBodHRwczovL2RldmVsb3BlcnMub3BlbmFpLmNvbS9hcGkvZG9jcy9wcmljaW5nI2ltYWdlLWdlbmVyYXRpb25cbiAgICAvLyBVc2UgYSBjb25zaXN0ZW50IHJlcG9ydGVkIHNwbGl0OyB1bmtub3duIGlucHV0IGlzIGNvbnNlcnZhdGl2ZWx5IHByaWNlZCBhc1xuICAgIC8vIGltYWdlcy4gQ2FjaGUgZGlzY291bnRzIGFuZCBwcml2YXRlIHN1YnNjcmlwdGlvbiBiaWxsaW5nIHJlbWFpbiB1bmtub3duLlxuICAgIGNvbnN0IGRldGFpbHMgPSB1c2FnZS5pbnB1dF90b2tlbnNfZGV0YWlscztcblxuICAgIGNvbnN0IHRleHRUb2tlbnMgPVxuICAgICAgZGV0YWlscyAmJiBkZXRhaWxzLnRleHRfdG9rZW5zICsgZGV0YWlscy5pbWFnZV90b2tlbnMgPD0gdXNhZ2UuaW5wdXRfdG9rZW5zXG4gICAgICAgID8gZGV0YWlscy50ZXh0X3Rva2Vuc1xuICAgICAgICA6IDA7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgIHRleHRUb2tlbnMgKiA1ICsgKHVzYWdlLmlucHV0X3Rva2VucyAtIHRleHRUb2tlbnMpICogOCArIHVzYWdlLm91dHB1dF90b2tlbnMgKiAzMCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgdW5pdENvc3QgPSBJTUFHRV9PVVRQVVRfQ09TVF9NSUNST19VU0RbcmVzb2x2ZWQucXVhbGl0eV1bcmVzb2x2ZWQuc2l6ZV07XG5cbiAgcmV0dXJuIGltYWdlQ291bnQgKiB1bml0Q29zdDtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQU1BLE1BQWEsK0JBQStCO0FBQzVDLE1BQWEsbUNBQTJEO0FBQ3hFLE1BQWEsZ0NBQWdDO0FBVzdDLE1BQU0sOEJBR0Y7Q0FDRixLQUFLO0VBQ0gsYUFBYTtFQUNiLGFBQWE7RUFDYixhQUFhO0NBQ2Y7Q0FDQSxRQUFRO0VBQ04sYUFBYTtFQUNiLGFBQWE7RUFDYixhQUFhO0NBQ2Y7Q0FDQSxNQUFNO0VBQ0osYUFBYTtFQUNiLGFBQWE7RUFDYixhQUFhO0NBQ2Y7QUFDRjtBQUVBLFNBQWdCLDhCQUNkLFNBQ2dDO0NBQ2hDLE1BQU0sT0FBTyxTQUFTO0NBRXRCLE9BQU87RUFDTCxTQUFTLFNBQVMsV0FBQTtFQUVsQixNQUNFLFNBQVMsZUFBZSxTQUFTLGVBQWUsU0FBUyxjQUNyRCxPQUNBO0NBQ1I7QUFDRjtBQUVBLFNBQWdCLDBCQUNkLFNBQ0EsUUFDUTtDQUNSLElBQ0UsUUFBUSxRQUFRLE1BQU0sU0FBUyxLQUFLLFNBQVMsV0FBVyxLQUFLLFlBQVksVUFBVSxNQUFTLEdBRTVGLE9BQU87Q0FHVCxNQUFNLFdBQVcsOEJBQThCLE9BQU87Q0FFdEQsT0FBTyxXQUFXLDZCQUE2QixHQUFHLFNBQVMsUUFBUSxHQUFHLFNBQVMsS0FBSztBQUN0RjtBQUVBLFNBQWdCLG9DQUNkLFFBQ0EsU0FDZTtDQUNmLE1BQU0sU0FBUyxPQUFPLFFBQVEsUUFBUSxTQUFTLEtBQUssU0FBUyxPQUFPO0NBQ3BFLE1BQU0sYUFBYSxPQUFPO0NBRTFCLElBQUksZUFBZSxHQUFHLE9BQU87Q0FDN0IsTUFBTSxRQUFRLE9BQU8sTUFBTSxVQUFVLE1BQU0sWUFBWSxLQUFLLENBQUMsRUFBRSxZQUFZO0NBRTNFLElBQUksT0FBTztFQVFULE1BQU0sVUFBVSxNQUFNO0VBRXRCLE1BQU0sYUFDSixXQUFXLFFBQVEsY0FBYyxRQUFRLGdCQUFnQixNQUFNLGVBQzNELFFBQVEsY0FDUjtFQUVOLE9BQU8sS0FBSyxNQUNWLGFBQWEsS0FBSyxNQUFNLGVBQWUsY0FBYyxJQUFJLE1BQU0sZ0JBQWdCLEVBQ2pGO0NBQ0Y7Q0FFQSxNQUFNLFdBQVcsOEJBQThCLE9BQU87Q0FHdEQsT0FBTyxhQUZVLDRCQUE0QixTQUFTLFFBQVEsQ0FBQyxTQUFTO0FBRzFFIn0=
|
|
@@ -24,21 +24,22 @@ function formatImagePartForLog(image) {
|
|
|
24
24
|
function imageGenerationToolArgs(args, options = {}) {
|
|
25
25
|
const resolved = resolveImageGenerationOptions(args.imageGenerationOptions);
|
|
26
26
|
const inputImages = options.includeInputImages === false ? [] : extractInputImagesForToolArgs(args);
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
27
|
+
const toolArgs = {};
|
|
28
|
+
toolArgs.prompt = args.prompt;
|
|
29
|
+
if (inputImages.length > 0) toolArgs.inputImages = inputImages;
|
|
30
|
+
toolArgs.driverModel = args.model ?? null;
|
|
31
|
+
const tool = {};
|
|
32
|
+
Object.assign(tool, CODEX_IMAGE_GENERATION_TOOL_CONFIG);
|
|
33
|
+
if (args.imageGenerationOptions?.outputFormat) tool.outputFormat = args.imageGenerationOptions.outputFormat;
|
|
34
|
+
toolArgs.tool = tool;
|
|
35
|
+
if (args.imageGenerationOptions) toolArgs.requestedOptions = args.imageGenerationOptions;
|
|
36
|
+
if (options.generation) toolArgs.observedGeneration = options.generation;
|
|
37
|
+
else toolArgs.pricingAssumption = {
|
|
38
|
+
model: CODEX_IMAGE_GENERATION_MODEL,
|
|
39
|
+
quality: resolved.quality,
|
|
40
|
+
size: resolved.size
|
|
41
|
+
};
|
|
42
|
+
return JSON.stringify(toolArgs);
|
|
42
43
|
}
|
|
43
44
|
function buildImageGenerationToolSteps(args, images, stepIndex) {
|
|
44
45
|
if (images.length === 0) return [];
|
|
@@ -64,11 +65,12 @@ function extractInputImagesForToolArgs(args) {
|
|
|
64
65
|
data: dataUrl.data,
|
|
65
66
|
byteSize: base64ByteSize(dataUrl.data)
|
|
66
67
|
};
|
|
67
|
-
|
|
68
|
+
const logged = {
|
|
68
69
|
mediaType: dataUrl.mediaType,
|
|
69
|
-
url: `[data-url ${image.url.length} chars]
|
|
70
|
-
...dataUrl.isBase64 ? { byteSize: base64ByteSize(dataUrl.data) } : {}
|
|
70
|
+
url: `[data-url ${image.url.length} chars]`
|
|
71
71
|
};
|
|
72
|
+
if (dataUrl.isBase64) logged.byteSize = base64ByteSize(dataUrl.data);
|
|
73
|
+
return logged;
|
|
72
74
|
});
|
|
73
75
|
}
|
|
74
76
|
function parseDataUrl(value) {
|
|
@@ -89,4 +91,4 @@ function base64ByteSize(value) {
|
|
|
89
91
|
//#endregion
|
|
90
92
|
export { CODEX_IMAGE_GENERATION_TOOL_CONFIG, buildImageGenerationToolSteps, extractInputImagesForToolArgs, formatImagePartForLog, formatResponseForLog, getImageParts, imageGenerationToolArgs };
|
|
91
93
|
|
|
92
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcmVzcG9uc2UtZm9ybWF0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9xZ3JpZC1yZXNwb25zZS1mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09ERVhfSU1BR0VfR0VORVJBVElPTl9NT0RFTCxcbiAgcmVzb2x2ZUltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG59IGZyb20gXCIuL3FncmlkLWltYWdlLWdlbmVyYXRpb25cIjtcbmltcG9ydCB7XG4gIHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEsXG4gIHR5cGUgUWdyaWRDb250ZW50LFxuICB0eXBlIFF1ZXJ5SW5wdXQsXG4gIHR5cGUgUXVlcnlPdXRwdXQsXG59IGZyb20gXCIuL3FncmlkLnR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBDT0RFWF9JTUFHRV9HRU5FUkFUSU9OX1RPT0xfQ09ORklHID0ge1xuICB0eXBlOiBcImltYWdlX2dlbmVyYXRpb25cIixcbiAgb3V0cHV0Rm9ybWF0OiBcInBuZ1wiLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gZXNjYXBlSHRtbEF0dHJpYnV0ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxuICAgIC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlRm9yTG9nKHJlc3VsdDogUXVlcnlPdXRwdXQpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzdWx0LmNvbnRlbnRcbiAgICAuZmxhdE1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJ0ZXh0XCIpIHJldHVybiBbaXRlbS50ZXh0XTtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09IFwiaW1hZ2VcIikgcmV0dXJuIFtmb3JtYXRJbWFnZVBhcnRGb3JMb2coaXRlbSldO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH0pXG4gICAgLmZpbHRlcigocGFydCkgPT4gcGFydC5sZW5ndGggPiAwKVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1hZ2VQYXJ0cyhyZXN1bHQ6IFF1ZXJ5T3V0cHV0KTogRXh0cmFjdDxRZ3JpZENvbnRlbnQsIHsgdHlwZTogXCJpbWFnZVwiIH0+W10ge1xuICByZXR1cm4gcmVzdWx0LmNvbnRlbnQuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09IFwiaW1hZ2VcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRJbWFnZVBhcnRGb3JMb2coaW1hZ2U6IEV4dHJhY3Q8UWdyaWRDb250ZW50LCB7IHR5cGU6IFwiaW1hZ2VcIiB9Pik6IHN0cmluZyB7XG4gIGNvbnN0IGFsdCA9IGVzY2FwZUh0bWxBdHRyaWJ1dGUoaW1hZ2UucmV2aXNlZFByb21wdCA/PyBcImdlbmVyYXRlZCBpbWFnZVwiKTtcbiAgcmV0dXJuIGA8aW1nIHNyYz1cImRhdGE6JHtpbWFnZS5tZWRpYVR5cGUgPz8gXCJpbWFnZS9wbmdcIn07YmFzZTY0LCR7aW1hZ2UuZGF0YX1cIiBhbHQ9XCIke2FsdH1cIiAvPmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUdlbmVyYXRpb25Ub29sQXJncyhcbiAgYXJnczogUXVlcnlJbnB1dCxcbiAgb3B0aW9uczogeyBpbmNsdWRlSW5wdXRJbWFnZXM/OiBib29sZWFuOyBnZW5lcmF0aW9uPzogSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgfSA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyhhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMpO1xuICBjb25zdCBpbnB1dEltYWdlcyA9XG4gICAgb3B0aW9ucy5pbmNsdWRlSW5wdXRJbWFnZXMgPT09IGZhbHNlID8gW10gOiBleHRyYWN0SW5wdXRJbWFnZXNGb3JUb29sQXJncyhhcmdzKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICBwcm9tcHQ6IGFyZ3MucHJvbXB0LFxuICAgIC4uLihpbnB1dEltYWdlcy5sZW5ndGggPiAwID8geyBpbnB1dEltYWdlcyB9IDoge30pLFxuICAgIGRyaXZlck1vZGVsOiBhcmdzLm1vZGVsID8/IG51bGwsXG4gICAgdG9vbDoge1xuICAgICAgLi4uQ09ERVhfSU1BR0VfR0VORVJBVElPTl9UT09MX0NPTkZJRyxcbiAgICAgIC4uLihhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnM/Lm91dHB1dEZvcm1hdFxuICAgICAgICA/IHsgb3V0cHV0Rm9ybWF0OiBhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMub3V0cHV0Rm9ybWF0IH1cbiAgICAgICAgOiB7fSksXG4gICAgfSxcbiAgICAuLi4oYXJncy5pbWFnZUdlbmVyYXRpb25PcHRpb25zID8geyByZXF1ZXN0ZWRPcHRpb25zOiBhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMgfSA6IHt9KSxcbiAgICAuLi4ob3B0aW9ucy5nZW5lcmF0aW9uXG4gICAgICA/IHsgb2JzZXJ2ZWRHZW5lcmF0aW9uOiBvcHRpb25zLmdlbmVyYXRpb24gfVxuICAgICAgOiB7XG4gICAgICAgICAgcHJpY2luZ0Fzc3VtcHRpb246IHtcbiAgICAgICAgICAgIG1vZGVsOiBDT0RFWF9JTUFHRV9HRU5FUkFUSU9OX01PREVMLFxuICAgICAgICAgICAgcXVhbGl0eTogcmVzb2x2ZWQucXVhbGl0eSxcbiAgICAgICAgICAgIHNpemU6IHJlc29sdmVkLnNpemUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJbWFnZUdlbmVyYXRpb25Ub29sU3RlcHMoXG4gIGFyZ3M6IFF1ZXJ5SW5wdXQsXG4gIGltYWdlczogRXh0cmFjdDxRZ3JpZENvbnRlbnQsIHsgdHlwZTogXCJpbWFnZVwiIH0+W10sXG4gIHN0ZXBJbmRleDogbnVtYmVyLFxuKTogQXJyYXk8e1xuICBzdGVwX2luZGV4OiBudW1iZXI7XG4gIHR5cGU6IFwidG9vbF9jYWxsXCI7XG4gIHRvb2xfY2FsbF9pbmRleDogbnVtYmVyO1xuICB0b29sX2NhbGxfaWQ6IHN0cmluZztcbiAgdG9vbF9uYW1lOiBcImltYWdlX2dlbmVyYXRpb25cIjtcbiAgdG9vbF9hcmdzOiBzdHJpbmc7XG4gIHRvb2xfcmVzdWx0OiBzdHJpbmc7XG59PiB7XG4gIGlmIChpbWFnZXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIGltYWdlcy5tYXAoKGltYWdlLCBpbmRleCkgPT4gKHtcbiAgICBzdGVwX2luZGV4OiBzdGVwSW5kZXgsXG4gICAgdHlwZTogXCJ0b29sX2NhbGxcIixcbiAgICB0b29sX2NhbGxfaW5kZXg6IGluZGV4LFxuICAgIHRvb2xfY2FsbF9pZDogYGltYWdlX2dlbmVyYXRpb246JHtzdGVwSW5kZXh9OiR7aW5kZXh9YCxcbiAgICB0b29sX25hbWU6IFwiaW1hZ2VfZ2VuZXJhdGlvblwiLFxuICAgIHRvb2xfYXJnczogaW1hZ2VHZW5lcmF0aW9uVG9vbEFyZ3MoYXJncywge1xuICAgICAgaW5jbHVkZUlucHV0SW1hZ2VzOiBpbmRleCA9PT0gMCxcbiAgICAgIGdlbmVyYXRpb246IGltYWdlLmdlbmVyYXRpb24sXG4gICAgfSksXG4gICAgdG9vbF9yZXN1bHQ6IGZvcm1hdEltYWdlUGFydEZvckxvZyhpbWFnZSksXG4gIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbnB1dEltYWdlc0ZvclRvb2xBcmdzKGFyZ3M6IFF1ZXJ5SW5wdXQpOiBBcnJheTx7XG4gIG1lZGlhVHlwZT86IHN0cmluZztcbiAgZGF0YT86IHN0cmluZztcbiAgdXJsPzogc3RyaW5nO1xuICBieXRlU2l6ZT86IG51bWJlcjtcbn0+IHtcbiAgY29uc3QgaW1hZ2VzID0gYXJncy5pbnB1dD8uZmlsdGVyKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09IFwiaW1hZ2VcIikgPz8gW107XG4gIHJldHVybiBpbWFnZXMubWFwKChpbWFnZSkgPT4ge1xuICAgIGNvbnN0IGRhdGFVcmwgPSBwYXJzZURhdGFVcmwoaW1hZ2UudXJsKTtcbiAgICBpZiAoIWRhdGFVcmwpIHJldHVybiB7IHVybDogaW1hZ2UudXJsIH07XG4gICAgaWYgKGRhdGFVcmwuaXNCYXNlNjQgJiYgZGF0YVVybC5tZWRpYVR5cGUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKFwiaW1hZ2UvXCIpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZWRpYVR5cGU6IGRhdGFVcmwubWVkaWFUeXBlLFxuICAgICAgICBkYXRhOiBkYXRhVXJsLmRhdGEsXG4gICAgICAgIGJ5dGVTaXplOiBiYXNlNjRCeXRlU2l6ZShkYXRhVXJsLmRhdGEpLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lZGlhVHlwZTogZGF0YVVybC5tZWRpYVR5cGUsXG4gICAgICB1cmw6IGBbZGF0YS11cmwgJHtpbWFnZS51cmwubGVuZ3RofSBjaGFyc11gLFxuICAgICAgLi4uKGRhdGFVcmwuaXNCYXNlNjQgPyB7IGJ5dGVTaXplOiBiYXNlNjRCeXRlU2l6ZShkYXRhVXJsLmRhdGEpIH0gOiB7fSksXG4gICAgfTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGF0YVVybChcbiAgdmFsdWU6IHN0cmluZyxcbik6IHsgbWVkaWFUeXBlOiBzdHJpbmc7IGRhdGE6IHN0cmluZzsgaXNCYXNlNjQ6IGJvb2xlYW4gfSB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IC9eZGF0YTooW147LF0rKSgoPzo7W14sXSopKiksKC4qKSQvaXMuZXhlYyh2YWx1ZSk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICBjb25zdCBwYXJhbXMgPSBtYXRjaFsyXSEudG9Mb3dlckNhc2UoKS5zcGxpdChcIjtcIikuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4geyBtZWRpYVR5cGU6IG1hdGNoWzFdISwgZGF0YTogbWF0Y2hbM10hLCBpc0Jhc2U2NDogcGFyYW1zLmluY2x1ZGVzKFwiYmFzZTY0XCIpIH07XG59XG5cbmZ1bmN0aW9uIGJhc2U2NEJ5dGVTaXplKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBub3JtYWxpemVkID0gL1xccy8udGVzdCh2YWx1ZSkgPyB2YWx1ZS5yZXBsYWNlKC9cXHMvZywgXCJcIikgOiB2YWx1ZTtcbiAgY29uc3QgcGFkZGluZyA9IG5vcm1hbGl6ZWQuZW5kc1dpdGgoXCI9PVwiKSA/IDIgOiBub3JtYWxpemVkLmVuZHNXaXRoKFwiPVwiKSA/IDEgOiAwO1xuICByZXR1cm4gTWF0aC5tYXgoTWF0aC5mbG9vcigobm9ybWFsaXplZC5sZW5ndGggKiAzKSAvIDQpIC0gcGFkZGluZywgMCk7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBV0EsTUFBYSxxQ0FBcUM7Q0FDaEQsTUFBTTtDQUNOLGNBQWM7QUFDaEI7QUFFQSxTQUFTLG9CQUFvQixPQUF1QjtDQUNsRCxPQUFPLE1BQ0osUUFBUSxNQUFNLE9BQU8sQ0FBQyxDQUN0QixRQUFRLE1BQU0sUUFBUSxDQUFDLENBQ3ZCLFFBQVEsTUFBTSxNQUFNLENBQUMsQ0FDckIsUUFBUSxNQUFNLE1BQU07QUFDekI7QUFFQSxTQUFnQixxQkFBcUIsUUFBNkI7Q0FDaEUsT0FBTyxPQUFPLFFBQ1gsU0FBUyxTQUFTO0VBQ2pCLElBQUksS0FBSyxTQUFTLFFBQVEsT0FBTyxDQUFDLEtBQUssSUFBSTtFQUMzQyxJQUFJLEtBQUssU0FBUyxTQUFTLE9BQU8sQ0FBQyxzQkFBc0IsSUFBSSxDQUFDO0VBQzlELE9BQU8sQ0FBQztDQUNWLENBQUMsQ0FBQyxDQUNELFFBQVEsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQ2pDLEtBQUssSUFBSTtBQUNkO0FBRUEsU0FBZ0IsY0FBYyxRQUFpRTtDQUM3RixPQUFPLE9BQU8sUUFBUSxRQUFRLFNBQVMsS0FBSyxT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
|
|
94
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWdyaWQtcmVzcG9uc2UtZm9ybWF0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9xZ3JpZC9xZ3JpZC1yZXNwb25zZS1mb3JtYXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBKc29uVmFsdWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvcHJvdmlkZXJzL2NvbW1vbi9wcm92aWRlci10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ09ERVhfSU1BR0VfR0VORVJBVElPTl9NT0RFTCxcbiAgcmVzb2x2ZUltYWdlR2VuZXJhdGlvbk9wdGlvbnMsXG59IGZyb20gXCIuL3FncmlkLWltYWdlLWdlbmVyYXRpb25cIjtcbmltcG9ydCB7XG4gIHR5cGUgSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEsXG4gIHR5cGUgUWdyaWRDb250ZW50LFxuICB0eXBlIFF1ZXJ5SW5wdXQsXG4gIHR5cGUgUXVlcnlPdXRwdXQsXG59IGZyb20gXCIuL3FncmlkLnR5cGVzXCI7XG5cbmV4cG9ydCBjb25zdCBDT0RFWF9JTUFHRV9HRU5FUkFUSU9OX1RPT0xfQ09ORklHID0ge1xuICB0eXBlOiBcImltYWdlX2dlbmVyYXRpb25cIixcbiAgb3V0cHV0Rm9ybWF0OiBcInBuZ1wiLFxufSBhcyBjb25zdDtcblxuZnVuY3Rpb24gZXNjYXBlSHRtbEF0dHJpYnV0ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKC9cIi9nLCBcIiZxdW90O1wiKVxuICAgIC5yZXBsYWNlKC88L2csIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKC8+L2csIFwiJmd0O1wiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlRm9yTG9nKHJlc3VsdDogUXVlcnlPdXRwdXQpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzdWx0LmNvbnRlbnRcbiAgICAuZmxhdE1hcCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJ0ZXh0XCIpIHJldHVybiBbaXRlbS50ZXh0XTtcblxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gXCJpbWFnZVwiKSByZXR1cm4gW2Zvcm1hdEltYWdlUGFydEZvckxvZyhpdGVtKV07XG5cbiAgICAgIHJldHVybiBbXTtcbiAgICB9KVxuICAgIC5maWx0ZXIoKHBhcnQpID0+IHBhcnQubGVuZ3RoID4gMClcbiAgICAuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlUGFydHMocmVzdWx0OiBRdWVyeU91dHB1dCk6IEV4dHJhY3Q8UWdyaWRDb250ZW50LCB7IHR5cGU6IFwiaW1hZ2VcIiB9PltdIHtcbiAgcmV0dXJuIHJlc3VsdC5jb250ZW50LmZpbHRlcigoaXRlbSkgPT4gaXRlbS50eXBlID09PSBcImltYWdlXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0SW1hZ2VQYXJ0Rm9yTG9nKGltYWdlOiBFeHRyYWN0PFFncmlkQ29udGVudCwgeyB0eXBlOiBcImltYWdlXCIgfT4pOiBzdHJpbmcge1xuICBjb25zdCBhbHQgPSBlc2NhcGVIdG1sQXR0cmlidXRlKGltYWdlLnJldmlzZWRQcm9tcHQgPz8gXCJnZW5lcmF0ZWQgaW1hZ2VcIik7XG5cbiAgcmV0dXJuIGA8aW1nIHNyYz1cImRhdGE6JHtpbWFnZS5tZWRpYVR5cGUgPz8gXCJpbWFnZS9wbmdcIn07YmFzZTY0LCR7aW1hZ2UuZGF0YX1cIiBhbHQ9XCIke2FsdH1cIiAvPmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUdlbmVyYXRpb25Ub29sQXJncyhcbiAgYXJnczogUXVlcnlJbnB1dCxcbiAgb3B0aW9uczogeyBpbmNsdWRlSW5wdXRJbWFnZXM/OiBib29sZWFuOyBnZW5lcmF0aW9uPzogSW1hZ2VHZW5lcmF0aW9uTWV0YWRhdGEgfSA9IHt9LFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlSW1hZ2VHZW5lcmF0aW9uT3B0aW9ucyhhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMpO1xuXG4gIGNvbnN0IGlucHV0SW1hZ2VzID1cbiAgICBvcHRpb25zLmluY2x1ZGVJbnB1dEltYWdlcyA9PT0gZmFsc2UgPyBbXSA6IGV4dHJhY3RJbnB1dEltYWdlc0ZvclRvb2xBcmdzKGFyZ3MpO1xuXG4gIC8vIEtleXMgYXJlIGFzc2lnbmVkIGluIHRoZWlyIHNlcmlhbGl6ZWQgb3JkZXI7IHJlcXVlc3QgbG9ncyBzdG9yZSB0aGlzIEpTT04gdGV4dC5cbiAgY29uc3QgdG9vbEFyZ3M6IFJlY29yZDxzdHJpbmcsIEpzb25WYWx1ZT4gPSB7fTtcbiAgdG9vbEFyZ3MucHJvbXB0ID0gYXJncy5wcm9tcHQ7XG5cbiAgaWYgKGlucHV0SW1hZ2VzLmxlbmd0aCA+IDApIHRvb2xBcmdzLmlucHV0SW1hZ2VzID0gaW5wdXRJbWFnZXM7XG4gIHRvb2xBcmdzLmRyaXZlck1vZGVsID0gYXJncy5tb2RlbCA/PyBudWxsO1xuICBjb25zdCB0b29sOiBSZWNvcmQ8c3RyaW5nLCBKc29uVmFsdWU+ID0ge307XG4gIE9iamVjdC5hc3NpZ24odG9vbCwgQ09ERVhfSU1BR0VfR0VORVJBVElPTl9UT09MX0NPTkZJRyk7XG5cbiAgaWYgKGFyZ3MuaW1hZ2VHZW5lcmF0aW9uT3B0aW9ucz8ub3V0cHV0Rm9ybWF0KSB7XG4gICAgdG9vbC5vdXRwdXRGb3JtYXQgPSBhcmdzLmltYWdlR2VuZXJhdGlvbk9wdGlvbnMub3V0cHV0Rm9ybWF0O1xuICB9XG5cbiAgdG9vbEFyZ3MudG9vbCA9IHRvb2w7XG5cbiAgaWYgKGFyZ3MuaW1hZ2VHZW5lcmF0aW9uT3B0aW9ucykgdG9vbEFyZ3MucmVxdWVzdGVkT3B0aW9ucyA9IGFyZ3MuaW1hZ2VHZW5lcmF0aW9uT3B0aW9ucztcblxuICBpZiAob3B0aW9ucy5nZW5lcmF0aW9uKSB7XG4gICAgdG9vbEFyZ3Mub2JzZXJ2ZWRHZW5lcmF0aW9uID0gb3B0aW9ucy5nZW5lcmF0aW9uO1xuICB9IGVsc2Uge1xuICAgIHRvb2xBcmdzLnByaWNpbmdBc3N1bXB0aW9uID0ge1xuICAgICAgbW9kZWw6IENPREVYX0lNQUdFX0dFTkVSQVRJT05fTU9ERUwsXG4gICAgICBxdWFsaXR5OiByZXNvbHZlZC5xdWFsaXR5LFxuICAgICAgc2l6ZTogcmVzb2x2ZWQuc2l6ZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRvb2xBcmdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSW1hZ2VHZW5lcmF0aW9uVG9vbFN0ZXBzKFxuICBhcmdzOiBRdWVyeUlucHV0LFxuICBpbWFnZXM6IEV4dHJhY3Q8UWdyaWRDb250ZW50LCB7IHR5cGU6IFwiaW1hZ2VcIiB9PltdLFxuICBzdGVwSW5kZXg6IG51bWJlcixcbik6IEFycmF5PHtcbiAgc3RlcF9pbmRleDogbnVtYmVyO1xuICB0eXBlOiBcInRvb2xfY2FsbFwiO1xuICB0b29sX2NhbGxfaW5kZXg6IG51bWJlcjtcbiAgdG9vbF9jYWxsX2lkOiBzdHJpbmc7XG4gIHRvb2xfbmFtZTogXCJpbWFnZV9nZW5lcmF0aW9uXCI7XG4gIHRvb2xfYXJnczogc3RyaW5nO1xuICB0b29sX3Jlc3VsdDogc3RyaW5nO1xufT4ge1xuICBpZiAoaW1hZ2VzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gIHJldHVybiBpbWFnZXMubWFwKChpbWFnZSwgaW5kZXgpID0+ICh7XG4gICAgc3RlcF9pbmRleDogc3RlcEluZGV4LFxuICAgIHR5cGU6IFwidG9vbF9jYWxsXCIsXG4gICAgdG9vbF9jYWxsX2luZGV4OiBpbmRleCxcbiAgICB0b29sX2NhbGxfaWQ6IGBpbWFnZV9nZW5lcmF0aW9uOiR7c3RlcEluZGV4fToke2luZGV4fWAsXG4gICAgdG9vbF9uYW1lOiBcImltYWdlX2dlbmVyYXRpb25cIixcbiAgICB0b29sX2FyZ3M6IGltYWdlR2VuZXJhdGlvblRvb2xBcmdzKGFyZ3MsIHtcbiAgICAgIGluY2x1ZGVJbnB1dEltYWdlczogaW5kZXggPT09IDAsXG4gICAgICBnZW5lcmF0aW9uOiBpbWFnZS5nZW5lcmF0aW9uLFxuICAgIH0pLFxuICAgIHRvb2xfcmVzdWx0OiBmb3JtYXRJbWFnZVBhcnRGb3JMb2coaW1hZ2UpLFxuICB9KSk7XG59XG5cbnR5cGUgTG9nZ2VkSW5wdXRJbWFnZSA9IHtcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICBkYXRhPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIGJ5dGVTaXplPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbnB1dEltYWdlc0ZvclRvb2xBcmdzKGFyZ3M6IFF1ZXJ5SW5wdXQpOiBMb2dnZWRJbnB1dEltYWdlW10ge1xuICBjb25zdCBpbWFnZXMgPSBhcmdzLmlucHV0Py5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0udHlwZSA9PT0gXCJpbWFnZVwiKSA/PyBbXTtcblxuICByZXR1cm4gaW1hZ2VzLm1hcCgoaW1hZ2UpID0+IHtcbiAgICBjb25zdCBkYXRhVXJsID0gcGFyc2VEYXRhVXJsKGltYWdlLnVybCk7XG5cbiAgICBpZiAoIWRhdGFVcmwpIHJldHVybiB7IHVybDogaW1hZ2UudXJsIH07XG5cbiAgICBpZiAoZGF0YVVybC5pc0Jhc2U2NCAmJiBkYXRhVXJsLm1lZGlhVHlwZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoXCJpbWFnZS9cIikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lZGlhVHlwZTogZGF0YVVybC5tZWRpYVR5cGUsXG4gICAgICAgIGRhdGE6IGRhdGFVcmwuZGF0YSxcbiAgICAgICAgYnl0ZVNpemU6IGJhc2U2NEJ5dGVTaXplKGRhdGFVcmwuZGF0YSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlZDogTG9nZ2VkSW5wdXRJbWFnZSA9IHtcbiAgICAgIG1lZGlhVHlwZTogZGF0YVVybC5tZWRpYVR5cGUsXG4gICAgICB1cmw6IGBbZGF0YS11cmwgJHtpbWFnZS51cmwubGVuZ3RofSBjaGFyc11gLFxuICAgIH07XG5cbiAgICBpZiAoZGF0YVVybC5pc0Jhc2U2NCkgbG9nZ2VkLmJ5dGVTaXplID0gYmFzZTY0Qnl0ZVNpemUoZGF0YVVybC5kYXRhKTtcblxuICAgIHJldHVybiBsb2dnZWQ7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXJzZURhdGFVcmwoXG4gIHZhbHVlOiBzdHJpbmcsXG4pOiB7IG1lZGlhVHlwZTogc3RyaW5nOyBkYXRhOiBzdHJpbmc7IGlzQmFzZTY0OiBib29sZWFuIH0gfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSAvXmRhdGE6KFteOyxdKykoKD86O1teLF0qKSopLCguKikkL2lzLmV4ZWModmFsdWUpO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICBjb25zdCBwYXJhbXMgPSBtYXRjaFsyXSEudG9Mb3dlckNhc2UoKS5zcGxpdChcIjtcIikuZmlsdGVyKEJvb2xlYW4pO1xuXG4gIHJldHVybiB7IG1lZGlhVHlwZTogbWF0Y2hbMV0hLCBkYXRhOiBtYXRjaFszXSEsIGlzQmFzZTY0OiBwYXJhbXMuaW5jbHVkZXMoXCJiYXNlNjRcIikgfTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0Qnl0ZVNpemUodmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSAvXFxzLy50ZXN0KHZhbHVlKSA/IHZhbHVlLnJlcGxhY2UoL1xccy9nLCBcIlwiKSA6IHZhbHVlO1xuICBjb25zdCBwYWRkaW5nID0gbm9ybWFsaXplZC5lbmRzV2l0aChcIj09XCIpID8gMiA6IG5vcm1hbGl6ZWQuZW5kc1dpdGgoXCI9XCIpID8gMSA6IDA7XG5cbiAgcmV0dXJuIE1hdGgubWF4KE1hdGguZmxvb3IoKG5vcm1hbGl6ZWQubGVuZ3RoICogMykgLyA0KSAtIHBhZGRpbmcsIDApO1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQVlBLE1BQWEscUNBQXFDO0NBQ2hELE1BQU07Q0FDTixjQUFjO0FBQ2hCO0FBRUEsU0FBUyxvQkFBb0IsT0FBdUI7Q0FDbEQsT0FBTyxNQUNKLFFBQVEsTUFB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
|