@usherlabs/cex-broker 0.2.49 → 0.2.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/cex-canonical-orderbook-export.js +7747 -883
- package/dist/commands/cex-canonical-orderbook-export.js.map +41 -10
- package/dist/commands/cli.js +127 -34
- package/dist/commands/market-data-vendor-backfill.js +8284 -6391
- package/dist/commands/market-data-vendor-backfill.js.map +16 -15
- package/dist/helpers/canonical-orderbook-export/parquet-projection.d.ts +19 -0
- package/dist/helpers/market-data-archive/canonical-orderbook.d.ts +1 -1
- package/dist/helpers/market-data-preparation/conformance-fixtures.d.ts +114 -2
- package/dist/helpers/market-data-preparation/contracts.d.ts +1298 -18
- package/dist/helpers/market-data-preparation/required-clock-qualification.d.ts +43 -0
- package/dist/helpers/market-data-preparation/source-tape-dependencies.d.ts +19 -0
- package/dist/helpers/market-data-preparation/source-tape-operation.d.ts +109 -0
- package/dist/helpers/market-data-source-forensics.d.ts +400 -0
- package/dist/helpers/market-data-vendor-backfill/conformance-fixtures.d.ts +3 -5
- package/dist/helpers/market-data-vendor-backfill/contracts.d.ts +21 -56
- package/dist/helpers/market-data-vendor-backfill/core.d.ts +1 -0
- package/dist/helpers/market-data-vendor-backfill/cryptohftdata.d.ts +45 -5
- package/dist/helpers/market-data-vendor-backfill/manifests.d.ts +31 -1083
- package/dist/helpers/market-data-vendor-backfill/promotion.d.ts +1 -0
- package/dist/helpers/source-tape-sandbox.d.ts +82 -0
- package/dist/helpers/source-tape.d.ts +165 -0
- package/dist/helpers/trace-context.d.ts +8 -0
- package/dist/index.js +128 -35
- package/dist/index.js.map +7 -6
- package/dist/market-data-preparation/fixtures/{conformance-v2.json → conformance-v3.json} +257 -60
- package/dist/market-data-preparation/policies/capability-policy.json +15 -4
- package/dist/market-data-preparation/policies/resource-policy.json +3 -3
- package/dist/market-data-preparation/policies/source-tape-capability-v1.json +35 -0
- package/dist/market-data-preparation/schema-manifest.json +30 -10
- package/dist/market-data-preparation/schemas/canonical-orderbook-export-request-v1.schema.json +5 -1
- package/dist/market-data-preparation/schemas/{canonical-orderbook-export-result-v1.schema.json → canonical-orderbook-export-result-v2.schema.json} +20 -6
- package/dist/market-data-preparation/schemas/order-book-depth-summary-parquet-projection-v1.schema.json +256 -0
- package/dist/market-data-preparation/schemas/order-book-levels-parquet-projection-v1.schema.json +220 -0
- package/dist/market-data-preparation/schemas/{preparation-product-pin-v1.schema.json → preparation-product-pin-v2.schema.json} +59 -9
- package/dist/market-data-preparation/schemas/promotion-receipt-v1.schema.json +5 -1
- package/dist/market-data-preparation/schemas/source-forensics-ledger-v1.schema.json +463 -0
- package/dist/market-data-preparation/schemas/source-qualification-record-v1.schema.json +394 -0
- package/dist/market-data-preparation.d.ts +7 -0
- package/dist/market-data-preparation.js +35443 -25203
- package/dist/market-data-preparation.js.map +118 -78
- package/dist/market-data-vendor-backfill.d.ts +8 -5
- package/dist/market-data-vendor-backfill.js +19444 -15553
- package/dist/market-data-vendor-backfill.js.map +65 -60
- package/package.json +1 -5
- package/dist/market-data-preparation/policies/capability-policy-v1.json +0 -28
- package/dist/market-data-vendor-backfill/fixtures/conformance-v1.json +0 -448
- package/dist/market-data-vendor-backfill/policies/capability-policy-v2.json +0 -28
- package/dist/market-data-vendor-backfill/policies/capability-policy.json +0 -28
- package/dist/market-data-vendor-backfill/policies/resource-policy.json +0 -16
- package/dist/market-data-vendor-backfill/schema-manifest.json +0 -31
- package/dist/market-data-vendor-backfill/schemas/archive-selection.schema.json +0 -224
- package/dist/market-data-vendor-backfill/schemas/promotion-receipt.schema.json +0 -171
- package/dist/market-data-vendor-backfill/schemas/request.schema.json +0 -166
- package/dist/market-data-vendor-backfill/schemas/required-clock.schema.json +0 -47
- package/dist/market-data-vendor-backfill/schemas/result.schema.json +0 -198
|
@@ -1,54 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js", "../node_modules/@opentelemetry/api/build/src/platform/node/index.js", "../node_modules/@opentelemetry/api/build/src/platform/index.js", "../node_modules/@opentelemetry/api/build/src/version.js", "../node_modules/@opentelemetry/api/build/src/internal/semver.js", "../node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../node_modules/@opentelemetry/api/build/src/diag/types.js", "../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../node_modules/@opentelemetry/api/build/src/api/diag.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../node_modules/@opentelemetry/api/build/src/context/context.js", "../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../node_modules/@opentelemetry/api/build/src/api/context.js", "../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../node_modules/@opentelemetry/api/build/src/trace/status.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../node_modules/@opentelemetry/api/build/src/context-api.js", "../node_modules/@opentelemetry/api/build/src/diag-api.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../node_modules/@opentelemetry/api/build/src/api/metrics.js", "../node_modules/@opentelemetry/api/build/src/metrics-api.js", "../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../node_modules/@opentelemetry/api/build/src/api/propagation.js", "../node_modules/@opentelemetry/api/build/src/propagation-api.js", "../node_modules/@opentelemetry/api/build/src/api/trace.js", "../node_modules/@opentelemetry/api/build/src/trace-api.js", "../node_modules/@opentelemetry/api/build/src/index.js", "../node_modules/ajv/dist/compile/codegen/code.js", "../node_modules/ajv/dist/compile/codegen/scope.js", "../node_modules/ajv/dist/compile/codegen/index.js", "../node_modules/ajv/dist/compile/util.js", "../node_modules/ajv/dist/compile/names.js", "../node_modules/ajv/dist/compile/errors.js", "../node_modules/ajv/dist/compile/validate/boolSchema.js", "../node_modules/ajv/dist/compile/rules.js", "../node_modules/ajv/dist/compile/validate/applicability.js", "../node_modules/ajv/dist/compile/validate/dataType.js", "../node_modules/ajv/dist/compile/validate/defaults.js", "../node_modules/ajv/dist/vocabularies/code.js", "../node_modules/ajv/dist/compile/validate/keyword.js", "../node_modules/ajv/dist/compile/validate/subschema.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/json-schema-traverse/index.js", "../node_modules/ajv/dist/compile/resolve.js", "../node_modules/ajv/dist/compile/validate/index.js", "../node_modules/ajv/dist/runtime/validation_error.js", "../node_modules/ajv/dist/compile/ref_error.js", "../node_modules/ajv/dist/compile/index.js", "../node_modules/fast-uri/lib/utils.js", "../node_modules/fast-uri/lib/schemes.js", "../node_modules/fast-uri/index.js", "../node_modules/ajv/dist/runtime/uri.js", "../node_modules/ajv/dist/core.js", "../node_modules/ajv/dist/vocabularies/core/id.js", "../node_modules/ajv/dist/vocabularies/core/ref.js", "../node_modules/ajv/dist/vocabularies/core/index.js", "../node_modules/ajv/dist/vocabularies/validation/limitNumber.js", "../node_modules/ajv/dist/vocabularies/validation/multipleOf.js", "../node_modules/ajv/dist/runtime/ucs2length.js", "../node_modules/ajv/dist/vocabularies/validation/limitLength.js", "../node_modules/ajv/dist/vocabularies/validation/pattern.js", "../node_modules/ajv/dist/vocabularies/validation/limitProperties.js", "../node_modules/ajv/dist/vocabularies/validation/required.js", "../node_modules/ajv/dist/vocabularies/validation/limitItems.js", "../node_modules/ajv/dist/runtime/equal.js", "../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js", "../node_modules/ajv/dist/vocabularies/validation/const.js", "../node_modules/ajv/dist/vocabularies/validation/enum.js", "../node_modules/ajv/dist/vocabularies/validation/index.js", "../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js", "../node_modules/ajv/dist/vocabularies/applicator/items.js", "../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js", "../node_modules/ajv/dist/vocabularies/applicator/items2020.js", "../node_modules/ajv/dist/vocabularies/applicator/contains.js", "../node_modules/ajv/dist/vocabularies/applicator/dependencies.js", "../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js", "../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js", "../node_modules/ajv/dist/vocabularies/applicator/properties.js", "../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js", "../node_modules/ajv/dist/vocabularies/applicator/not.js", "../node_modules/ajv/dist/vocabularies/applicator/anyOf.js", "../node_modules/ajv/dist/vocabularies/applicator/oneOf.js", "../node_modules/ajv/dist/vocabularies/applicator/allOf.js", "../node_modules/ajv/dist/vocabularies/applicator/if.js", "../node_modules/ajv/dist/vocabularies/applicator/thenElse.js", "../node_modules/ajv/dist/vocabularies/applicator/index.js", "../node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js", "../node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js", "../node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js", "../node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js", "../node_modules/ajv/dist/vocabularies/dynamic/index.js", "../node_modules/ajv/dist/vocabularies/validation/dependentRequired.js", "../node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js", "../node_modules/ajv/dist/vocabularies/validation/limitContains.js", "../node_modules/ajv/dist/vocabularies/next.js", "../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js", "../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js", "../node_modules/ajv/dist/vocabularies/unevaluated/index.js", "../node_modules/ajv/dist/vocabularies/format/format.js", "../node_modules/ajv/dist/vocabularies/format/index.js", "../node_modules/ajv/dist/vocabularies/metadata.js", "../node_modules/ajv/dist/vocabularies/draft2020.js", "../node_modules/ajv/dist/vocabularies/discriminator/types.js", "../node_modules/ajv/dist/vocabularies/discriminator/index.js", "../node_modules/ajv/dist/refs/json-schema-2020-12/index.js", "../node_modules/ajv/dist/2020.js", "../src/helpers/market-data-archive/capture-contract.ts", "../node_modules/@loglayer/plugin-opentelemetry/dist/index.mjs", "../node_modules/@loglayer/shared/dist/index.js", "../node_modules/@loglayer/transport/dist/index.js", "../node_modules/@loglayer/transport-tslog/dist/index.js", "../node_modules/@loglayer/plugin/dist/index.js", "../node_modules/@loglayer/context-manager/dist/index.js", "../node_modules/@loglayer/log-level-manager/dist/index.js", "../node_modules/loglayer/dist/index.js", "../node_modules/non-error/index.js", "../node_modules/serialize-error/error-constructors.js", "../node_modules/serialize-error/index.js", "../node_modules/tslog/dist/esm/prettyLogStyles.js", "../node_modules/tslog/dist/esm/formatTemplate.js", "../node_modules/tslog/dist/esm/formatNumberAddZeros.js", "../node_modules/tslog/dist/esm/urlToObj.js", "../node_modules/tslog/dist/esm/runtime/nodejs/index.js", "../node_modules/tslog/dist/esm/BaseLogger.js", "../node_modules/tslog/dist/esm/index.js", "../src/helpers/logger.ts", "../src/helpers/market-data-vendor-backfill/contracts.ts", "../src/helpers/market-data-vendor-backfill/identity.ts", "../node_modules/canonicalize/lib/canonicalize.js", "../src/helpers/market-data-vendor-backfill/manifests.ts", "../src/helpers/market-data-vendor-backfill/promotion.ts", "../src/helpers/market-data-vendor-backfill/selection.ts", "../src/helpers/market-data-vendor-backfill/semantic-verification.ts", "../src/helpers/market-data-vendor-backfill/archive-reader.ts", "../src/helpers/market-data-vendor-backfill/batching.ts", "../src/helpers/market-data-vendor-backfill/conformance-fixtures.ts", "../src/helpers/market-data-vendor-backfill/cryptohftdata.ts", "../node_modules/fzstd/esm/index.mjs", "../node_modules/hyparquet/src/constants.js", "../node_modules/hyparquet/src/wkb.js", "../node_modules/hyparquet/src/convert.js", "../node_modules/hyparquet/src/schema.js", "../node_modules/hyparquet/src/thrift.js", "../node_modules/hyparquet/src/geoparquet.js", "../node_modules/hyparquet/src/metadata.js", "../node_modules/hyparquet/src/indexes.js", "../node_modules/hyparquet/src/xxhash.js", "../node_modules/hyparquet/src/bloom.js", "../node_modules/hyparquet/src/utils.js", "../node_modules/hyparquet/src/filter.js", "../node_modules/hyparquet/src/plan.js", "../node_modules/hyparquet/src/variant.js", "../node_modules/hyparquet/src/assemble.js", "../node_modules/hyparquet/src/delta.js", "../node_modules/hyparquet/src/encoding.js", "../node_modules/hyparquet/src/plain.js", "../node_modules/hyparquet/src/snappy.js", "../node_modules/hyparquet/src/datapage.js", "../node_modules/hyparquet/src/column.js", "../node_modules/hyparquet/src/rowgroup.js", "../node_modules/hyparquet/src/read.js", "../src/helpers/market-data-archive/canonical-orderbook.ts", "../src/helpers/market-data-vendor-backfill/qualification.ts", "../src/helpers/market-data-vendor-backfill/core.ts", "../src/helpers/market-data-vendor-backfill/forwarder-client.ts"],
|
|
3
|
+
"sources": ["../node_modules/ajv/dist/compile/codegen/code.js", "../node_modules/ajv/dist/compile/codegen/scope.js", "../node_modules/ajv/dist/compile/codegen/index.js", "../node_modules/ajv/dist/compile/util.js", "../node_modules/ajv/dist/compile/names.js", "../node_modules/ajv/dist/compile/errors.js", "../node_modules/ajv/dist/compile/validate/boolSchema.js", "../node_modules/ajv/dist/compile/rules.js", "../node_modules/ajv/dist/compile/validate/applicability.js", "../node_modules/ajv/dist/compile/validate/dataType.js", "../node_modules/ajv/dist/compile/validate/defaults.js", "../node_modules/ajv/dist/vocabularies/code.js", "../node_modules/ajv/dist/compile/validate/keyword.js", "../node_modules/ajv/dist/compile/validate/subschema.js", "../node_modules/fast-deep-equal/index.js", "../node_modules/json-schema-traverse/index.js", "../node_modules/ajv/dist/compile/resolve.js", "../node_modules/ajv/dist/compile/validate/index.js", "../node_modules/ajv/dist/runtime/validation_error.js", "../node_modules/ajv/dist/compile/ref_error.js", "../node_modules/ajv/dist/compile/index.js", "../node_modules/fast-uri/lib/utils.js", "../node_modules/fast-uri/lib/schemes.js", "../node_modules/fast-uri/index.js", "../node_modules/ajv/dist/runtime/uri.js", "../node_modules/ajv/dist/core.js", "../node_modules/ajv/dist/vocabularies/core/id.js", "../node_modules/ajv/dist/vocabularies/core/ref.js", "../node_modules/ajv/dist/vocabularies/core/index.js", "../node_modules/ajv/dist/vocabularies/validation/limitNumber.js", "../node_modules/ajv/dist/vocabularies/validation/multipleOf.js", "../node_modules/ajv/dist/runtime/ucs2length.js", "../node_modules/ajv/dist/vocabularies/validation/limitLength.js", "../node_modules/ajv/dist/vocabularies/validation/pattern.js", "../node_modules/ajv/dist/vocabularies/validation/limitProperties.js", "../node_modules/ajv/dist/vocabularies/validation/required.js", "../node_modules/ajv/dist/vocabularies/validation/limitItems.js", "../node_modules/ajv/dist/runtime/equal.js", "../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js", "../node_modules/ajv/dist/vocabularies/validation/const.js", "../node_modules/ajv/dist/vocabularies/validation/enum.js", "../node_modules/ajv/dist/vocabularies/validation/index.js", "../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js", "../node_modules/ajv/dist/vocabularies/applicator/items.js", "../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js", "../node_modules/ajv/dist/vocabularies/applicator/items2020.js", "../node_modules/ajv/dist/vocabularies/applicator/contains.js", "../node_modules/ajv/dist/vocabularies/applicator/dependencies.js", "../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js", "../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js", "../node_modules/ajv/dist/vocabularies/applicator/properties.js", "../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js", "../node_modules/ajv/dist/vocabularies/applicator/not.js", "../node_modules/ajv/dist/vocabularies/applicator/anyOf.js", "../node_modules/ajv/dist/vocabularies/applicator/oneOf.js", "../node_modules/ajv/dist/vocabularies/applicator/allOf.js", "../node_modules/ajv/dist/vocabularies/applicator/if.js", "../node_modules/ajv/dist/vocabularies/applicator/thenElse.js", "../node_modules/ajv/dist/vocabularies/applicator/index.js", "../node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js", "../node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js", "../node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js", "../node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js", "../node_modules/ajv/dist/vocabularies/dynamic/index.js", "../node_modules/ajv/dist/vocabularies/validation/dependentRequired.js", "../node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js", "../node_modules/ajv/dist/vocabularies/validation/limitContains.js", "../node_modules/ajv/dist/vocabularies/next.js", "../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js", "../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js", "../node_modules/ajv/dist/vocabularies/unevaluated/index.js", "../node_modules/ajv/dist/vocabularies/format/format.js", "../node_modules/ajv/dist/vocabularies/format/index.js", "../node_modules/ajv/dist/vocabularies/metadata.js", "../node_modules/ajv/dist/vocabularies/draft2020.js", "../node_modules/ajv/dist/vocabularies/discriminator/types.js", "../node_modules/ajv/dist/vocabularies/discriminator/index.js", "../node_modules/ajv/dist/refs/json-schema-2020-12/index.js", "../node_modules/ajv/dist/2020.js", "../node_modules/@opentelemetry/api/build/src/platform/node/globalThis.js", "../node_modules/@opentelemetry/api/build/src/platform/node/index.js", "../node_modules/@opentelemetry/api/build/src/platform/index.js", "../node_modules/@opentelemetry/api/build/src/version.js", "../node_modules/@opentelemetry/api/build/src/internal/semver.js", "../node_modules/@opentelemetry/api/build/src/internal/global-utils.js", "../node_modules/@opentelemetry/api/build/src/diag/ComponentLogger.js", "../node_modules/@opentelemetry/api/build/src/diag/types.js", "../node_modules/@opentelemetry/api/build/src/diag/internal/logLevelLogger.js", "../node_modules/@opentelemetry/api/build/src/api/diag.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/baggage-impl.js", "../node_modules/@opentelemetry/api/build/src/baggage/internal/symbol.js", "../node_modules/@opentelemetry/api/build/src/baggage/utils.js", "../node_modules/@opentelemetry/api/build/src/context/context.js", "../node_modules/@opentelemetry/api/build/src/diag/consoleLogger.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeter.js", "../node_modules/@opentelemetry/api/build/src/metrics/Metric.js", "../node_modules/@opentelemetry/api/build/src/propagation/TextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/context/NoopContextManager.js", "../node_modules/@opentelemetry/api/build/src/api/context.js", "../node_modules/@opentelemetry/api/build/src/trace/trace_flags.js", "../node_modules/@opentelemetry/api/build/src/trace/invalid-span-constants.js", "../node_modules/@opentelemetry/api/build/src/trace/NonRecordingSpan.js", "../node_modules/@opentelemetry/api/build/src/trace/context-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/spancontext-utils.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracer.js", "../node_modules/@opentelemetry/api/build/src/trace/NoopTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/ProxyTracerProvider.js", "../node_modules/@opentelemetry/api/build/src/trace/SamplingResult.js", "../node_modules/@opentelemetry/api/build/src/trace/span_kind.js", "../node_modules/@opentelemetry/api/build/src/trace/status.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-validators.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js", "../node_modules/@opentelemetry/api/build/src/trace/internal/utils.js", "../node_modules/@opentelemetry/api/build/src/context-api.js", "../node_modules/@opentelemetry/api/build/src/diag-api.js", "../node_modules/@opentelemetry/api/build/src/metrics/NoopMeterProvider.js", "../node_modules/@opentelemetry/api/build/src/api/metrics.js", "../node_modules/@opentelemetry/api/build/src/metrics-api.js", "../node_modules/@opentelemetry/api/build/src/propagation/NoopTextMapPropagator.js", "../node_modules/@opentelemetry/api/build/src/baggage/context-helpers.js", "../node_modules/@opentelemetry/api/build/src/api/propagation.js", "../node_modules/@opentelemetry/api/build/src/propagation-api.js", "../node_modules/@opentelemetry/api/build/src/api/trace.js", "../node_modules/@opentelemetry/api/build/src/trace-api.js", "../node_modules/@opentelemetry/api/build/src/index.js", "../src/helpers/market-data-vendor-backfill/contracts.ts", "../src/helpers/market-data-archive/capture-contract.ts", "../node_modules/@loglayer/plugin-opentelemetry/dist/index.mjs", "../node_modules/@loglayer/shared/dist/index.js", "../node_modules/@loglayer/transport/dist/index.js", "../node_modules/@loglayer/transport-tslog/dist/index.js", "../node_modules/@loglayer/plugin/dist/index.js", "../node_modules/@loglayer/context-manager/dist/index.js", "../node_modules/@loglayer/log-level-manager/dist/index.js", "../node_modules/loglayer/dist/index.js", "../node_modules/non-error/index.js", "../node_modules/serialize-error/error-constructors.js", "../node_modules/serialize-error/index.js", "../node_modules/tslog/dist/esm/prettyLogStyles.js", "../node_modules/tslog/dist/esm/formatTemplate.js", "../node_modules/tslog/dist/esm/formatNumberAddZeros.js", "../node_modules/tslog/dist/esm/urlToObj.js", "../node_modules/tslog/dist/esm/runtime/nodejs/index.js", "../node_modules/tslog/dist/esm/BaseLogger.js", "../node_modules/tslog/dist/esm/index.js", "../src/helpers/logger.ts", "../src/helpers/market-data-vendor-backfill/identity.ts", "../node_modules/canonicalize/lib/canonicalize.js", "../src/helpers/market-data-vendor-backfill/manifests.ts", "../src/helpers/market-data-archive/canonical-orderbook.ts", "../src/helpers/market-data-vendor-backfill/batching.ts", "../src/helpers/market-data-vendor-backfill/cryptohftdata.ts", "../node_modules/fzstd/esm/index.mjs", "../node_modules/hyparquet/src/constants.js", "../node_modules/hyparquet/src/wkb.js", "../node_modules/hyparquet/src/convert.js", "../node_modules/hyparquet/src/schema.js", "../node_modules/hyparquet/src/thrift.js", "../node_modules/hyparquet/src/geoparquet.js", "../node_modules/hyparquet/src/metadata.js", "../node_modules/hyparquet/src/indexes.js", "../node_modules/hyparquet/src/xxhash.js", "../node_modules/hyparquet/src/bloom.js", "../node_modules/hyparquet/src/utils.js", "../node_modules/hyparquet/src/filter.js", "../node_modules/hyparquet/src/plan.js", "../node_modules/hyparquet/src/variant.js", "../node_modules/hyparquet/src/assemble.js", "../node_modules/hyparquet/src/delta.js", "../node_modules/hyparquet/src/encoding.js", "../node_modules/hyparquet/src/plain.js", "../node_modules/hyparquet/src/snappy.js", "../node_modules/hyparquet/src/datapage.js", "../node_modules/hyparquet/src/column.js", "../node_modules/hyparquet/src/rowgroup.js", "../node_modules/hyparquet/src/read.js", "../src/helpers/market-data-vendor-backfill/semantic-verification.ts", "../src/helpers/source-tape.ts", "../src/helpers/market-data-vendor-backfill/promotion.ts", "../src/helpers/market-data-vendor-backfill/conformance-fixtures.ts", "../src/helpers/market-data-preparation/contracts.ts", "../src/helpers/market-data-preparation/conformance-fixtures.ts", "../src/helpers/market-data-source-forensics.ts", "../src/helpers/market-data-preparation/file-job.ts", "../src/helpers/market-data-vendor-backfill/selection.ts", "../src/helpers/market-data-vendor-backfill/archive-reader.ts", "../src/helpers/market-data-vendor-backfill/qualification.ts", "../src/helpers/market-data-vendor-backfill/core.ts", "../src/helpers/market-data-vendor-backfill/forwarder-client.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map",
|
|
6
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./globalThis\"), exports);\n//# sourceMappingURL=index.js.map",
|
|
7
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./node\"), exports);\n//# sourceMappingURL=index.js.map",
|
|
8
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.9.0';\n//# sourceMappingURL=version.js.map",
|
|
9
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCompatible = exports._makeCompatibilityCheck = void 0;\nconst version_1 = require(\"../version\");\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nfunction _makeCompatibilityCheck(ownVersion) {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\nexports._makeCompatibilityCheck = _makeCompatibilityCheck;\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);\n//# sourceMappingURL=semver.js.map",
|
|
10
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;\nconst platform_1 = require(\"../platform\");\nconst version_1 = require(\"../version\");\nconst semver_1 = require(\"./semver\");\nconst major = version_1.VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`opentelemetry.js.api.${major}`);\nconst _global = platform_1._globalThis;\nfunction registerGlobal(type, instance, diag, allowOverride = false) {\n var _a;\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: version_1.VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== version_1.VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${version_1.VERSION}`);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(`@opentelemetry/api: Registered a global for ${type} v${version_1.VERSION}.`);\n return true;\n}\nexports.registerGlobal = registerGlobal;\nfunction getGlobal(type) {\n var _a, _b;\n const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !(0, semver_1.isCompatible)(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexports.getGlobal = getGlobal;\nfunction unregisterGlobal(type, diag) {\n diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${version_1.VERSION}.`);\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\nexports.unregisterGlobal = unregisterGlobal;\n//# sourceMappingURL=global-utils.js.map",
|
|
11
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagComponentLogger = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nclass DiagComponentLogger {\n constructor(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n debug(...args) {\n return logProxy('debug', this._namespace, args);\n }\n error(...args) {\n return logProxy('error', this._namespace, args);\n }\n info(...args) {\n return logProxy('info', this._namespace, args);\n }\n warn(...args) {\n return logProxy('warn', this._namespace, args);\n }\n verbose(...args) {\n return logProxy('verbose', this._namespace, args);\n }\n}\nexports.DiagComponentLogger = DiagComponentLogger;\nfunction logProxy(funcName, namespace, args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n args.unshift(namespace);\n return logger[funcName](...args);\n}\n//# sourceMappingURL=ComponentLogger.js.map",
|
|
12
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagLogLevel = void 0;\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nvar DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map",
|
|
13
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLogLevelDiagLogger = void 0;\nconst types_1 = require(\"../types\");\nfunction createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < types_1.DiagLogLevel.NONE) {\n maxLevel = types_1.DiagLogLevel.NONE;\n }\n else if (maxLevel > types_1.DiagLogLevel.ALL) {\n maxLevel = types_1.DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n const theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', types_1.DiagLogLevel.ERROR),\n warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),\n info: _filterFunc('info', types_1.DiagLogLevel.INFO),\n debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),\n };\n}\nexports.createLogLevelDiagLogger = createLogLevelDiagLogger;\n//# sourceMappingURL=logLevelLogger.js.map",
|
|
14
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagAPI = void 0;\nconst ComponentLogger_1 = require(\"../diag/ComponentLogger\");\nconst logLevelLogger_1 = require(\"../diag/internal/logLevelLogger\");\nconst types_1 = require(\"../diag/types\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nclass DiagAPI {\n /**\n * Private internal constructor\n * @private\n */\n constructor() {\n function _logProxy(funcName) {\n return function (...args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName](...args);\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n // DiagAPI specific functions\n const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => {\n var _a, _b, _c;\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n const oldLogger = (0, global_utils_1.getGlobal)('diag');\n const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '<failed to generate stacktrace>';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(`Current logger will overwrite one already registered from ${stack}`);\n }\n return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = () => {\n (0, global_utils_1.unregisterGlobal)(API_NAME, self);\n };\n self.createComponentLogger = (options) => {\n return new ComponentLogger_1.DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n /** Get the singleton instance of the DiagAPI API */\n static instance() {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n }\n}\nexports.DiagAPI = DiagAPI;\n//# sourceMappingURL=diag.js.map",
|
|
15
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaggageImpl = void 0;\nclass BaggageImpl {\n constructor(entries) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n getEntry(key) {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n return Object.assign({}, entry);\n }\n getAllEntries() {\n return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n }\n setEntry(key, entry) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n removeEntry(key) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n removeEntries(...keys) {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n clear() {\n return new BaggageImpl();\n }\n}\nexports.BaggageImpl = BaggageImpl;\n//# sourceMappingURL=baggage-impl.js.map",
|
|
16
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataSymbol = void 0;\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n//# sourceMappingURL=symbol.js.map",
|
|
17
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataFromString = exports.createBaggage = void 0;\nconst diag_1 = require(\"../api/diag\");\nconst baggage_impl_1 = require(\"./internal/baggage-impl\");\nconst symbol_1 = require(\"./internal/symbol\");\nconst diag = diag_1.DiagAPI.instance();\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nfunction createBaggage(entries = {}) {\n return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));\n}\nexports.createBaggage = createBaggage;\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n */\nfunction baggageEntryMetadataFromString(str) {\n if (typeof str !== 'string') {\n diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`);\n str = '';\n }\n return {\n __TYPE__: symbol_1.baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\nexports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;\n//# sourceMappingURL=utils.js.map",
|
|
18
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ROOT_CONTEXT = exports.createContextKey = void 0;\n/** Get a key to uniquely identify a context value */\nfunction createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nexports.createContextKey = createContextKey;\nclass BaseContext {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext) {\n // for minification\n const self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = (key) => self._currentContext.get(key);\n self.setValue = (key, value) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = (key) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n}\n/** The root context is used as the default parent context when there is no active context */\nexports.ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map",
|
|
19
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagConsoleLogger = void 0;\nconst consoleMap = [\n { n: 'error', c: 'error' },\n { n: 'warn', c: 'warn' },\n { n: 'info', c: 'info' },\n { n: 'debug', c: 'debug' },\n { n: 'verbose', c: 'trace' },\n];\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n */\nclass DiagConsoleLogger {\n constructor() {\n function _consoleFunc(funcName) {\n return function (...args) {\n if (console) {\n // Some environments only expose the console when the F12 developer console is open\n // eslint-disable-next-line no-console\n let theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // Not all environments support all functions\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n // One last final check\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n }\n };\n }\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n}\nexports.DiagConsoleLogger = DiagConsoleLogger;\n//# sourceMappingURL=consoleLogger.js.map",
|
|
20
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoopMeter = exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = exports.NOOP_OBSERVABLE_GAUGE_METRIC = exports.NOOP_OBSERVABLE_COUNTER_METRIC = exports.NOOP_UP_DOWN_COUNTER_METRIC = exports.NOOP_HISTOGRAM_METRIC = exports.NOOP_GAUGE_METRIC = exports.NOOP_COUNTER_METRIC = exports.NOOP_METER = exports.NoopObservableUpDownCounterMetric = exports.NoopObservableGaugeMetric = exports.NoopObservableCounterMetric = exports.NoopObservableMetric = exports.NoopHistogramMetric = exports.NoopGaugeMetric = exports.NoopUpDownCounterMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nclass NoopMeter {\n constructor() { }\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name, _options) {\n return exports.NOOP_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name, _options) {\n return exports.NOOP_HISTOGRAM_METRIC;\n }\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name, _options) {\n return exports.NOOP_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name, _options) {\n return exports.NOOP_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(_name, _options) {\n return exports.NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(_callback, _observables) { }\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback) { }\n}\nexports.NoopMeter = NoopMeter;\nclass NoopMetric {\n}\nexports.NoopMetric = NoopMetric;\nclass NoopCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopCounterMetric = NoopCounterMetric;\nclass NoopUpDownCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopUpDownCounterMetric = NoopUpDownCounterMetric;\nclass NoopGaugeMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopGaugeMetric = NoopGaugeMetric;\nclass NoopHistogramMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopHistogramMetric = NoopHistogramMetric;\nclass NoopObservableMetric {\n addCallback(_callback) { }\n removeCallback(_callback) { }\n}\nexports.NoopObservableMetric = NoopObservableMetric;\nclass NoopObservableCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableCounterMetric = NoopObservableCounterMetric;\nclass NoopObservableGaugeMetric extends NoopObservableMetric {\n}\nexports.NoopObservableGaugeMetric = NoopObservableGaugeMetric;\nclass NoopObservableUpDownCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric;\nexports.NOOP_METER = new NoopMeter();\n// Synchronous instruments\nexports.NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexports.NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexports.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexports.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n// Asynchronous instruments\nexports.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexports.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric();\n/**\n * Create a no-op Meter\n */\nfunction createNoopMeter() {\n return exports.NOOP_METER;\n}\nexports.createNoopMeter = createNoopMeter;\n//# sourceMappingURL=NoopMeter.js.map",
|
|
21
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueType = void 0;\n/** The Type of value. It describes how the data is reported. */\nvar ValueType;\n(function (ValueType) {\n ValueType[ValueType[\"INT\"] = 0] = \"INT\";\n ValueType[ValueType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n})(ValueType = exports.ValueType || (exports.ValueType = {}));\n//# sourceMappingURL=Metric.js.map",
|
|
22
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;\nexports.defaultTextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\nexports.defaultTextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n carrier[key] = value;\n },\n};\n//# sourceMappingURL=TextMapPropagator.js.map",
|
|
23
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopContextManager = void 0;\nconst context_1 = require(\"./context\");\nclass NoopContextManager {\n active() {\n return context_1.ROOT_CONTEXT;\n }\n with(_context, fn, thisArg, ...args) {\n return fn.call(thisArg, ...args);\n }\n bind(_context, target) {\n return target;\n }\n enable() {\n return this;\n }\n disable() {\n return this;\n }\n}\nexports.NoopContextManager = NoopContextManager;\n//# sourceMappingURL=NoopContextManager.js.map",
|
|
24
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextAPI = void 0;\nconst NoopContextManager_1 = require(\"../context/NoopContextManager\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nclass ContextAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Context API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n }\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n setGlobalContextManager(contextManager) {\n return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance());\n }\n /**\n * Get the currently active context\n */\n active() {\n return this._getContextManager().active();\n }\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with(context, fn, thisArg, ...args) {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n bind(context, target) {\n return this._getContextManager().bind(context, target);\n }\n _getContextManager() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n /** Disable and remove the global context manager */\n disable() {\n this._getContextManager().disable();\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.ContextAPI = ContextAPI;\n//# sourceMappingURL=context.js.map",
|
|
25
|
-
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceFlags = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map",
|
|
26
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;\nconst trace_flags_1 = require(\"./trace_flags\");\nexports.INVALID_SPANID = '0000000000000000';\nexports.INVALID_TRACEID = '00000000000000000000000000000000';\nexports.INVALID_SPAN_CONTEXT = {\n traceId: exports.INVALID_TRACEID,\n spanId: exports.INVALID_SPANID,\n traceFlags: trace_flags_1.TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map",
|
|
27
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonRecordingSpan = void 0;\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nclass NonRecordingSpan {\n constructor(_spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT) {\n this._spanContext = _spanContext;\n }\n // Returns a SpanContext.\n spanContext() {\n return this._spanContext;\n }\n // By default does nothing\n setAttribute(_key, _value) {\n return this;\n }\n // By default does nothing\n setAttributes(_attributes) {\n return this;\n }\n // By default does nothing\n addEvent(_name, _attributes) {\n return this;\n }\n addLink(_link) {\n return this;\n }\n addLinks(_links) {\n return this;\n }\n // By default does nothing\n setStatus(_status) {\n return this;\n }\n // By default does nothing\n updateName(_name) {\n return this;\n }\n // By default does nothing\n end(_endTime) { }\n // isRecording always returns false for NonRecordingSpan.\n isRecording() {\n return false;\n }\n // By default does nothing\n recordException(_exception, _time) { }\n}\nexports.NonRecordingSpan = NonRecordingSpan;\n//# sourceMappingURL=NonRecordingSpan.js.map",
|
|
28
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getActiveSpan = exports.getSpan = void 0;\nconst context_1 = require(\"../context/context\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst context_2 = require(\"../api/context\");\n/**\n * span key\n */\nconst SPAN_KEY = (0, context_1.createContextKey)('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nfunction getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\nexports.getSpan = getSpan;\n/**\n * Gets the span from the current context, if one exists.\n */\nfunction getActiveSpan() {\n return getSpan(context_2.ContextAPI.getInstance().active());\n}\nexports.getActiveSpan = getActiveSpan;\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nfunction setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\nexports.setSpan = setSpan;\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nfunction deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\nexports.deleteSpan = deleteSpan;\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nfunction setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));\n}\nexports.setSpanContext = setSpanContext;\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nfunction getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\nexports.getSpanContext = getSpanContext;\n//# sourceMappingURL=context-utils.js.map",
|
|
29
|
-
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nfunction isValidTraceId(traceId) {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== invalid_span_constants_1.INVALID_TRACEID;\n}\nexports.isValidTraceId = isValidTraceId;\nfunction isValidSpanId(spanId) {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== invalid_span_constants_1.INVALID_SPANID;\n}\nexports.isValidSpanId = isValidSpanId;\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nfunction isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\nexports.isSpanContextValid = isSpanContextValid;\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nfunction wrapSpanContext(spanContext) {\n return new NonRecordingSpan_1.NonRecordingSpan(spanContext);\n}\nexports.wrapSpanContext = wrapSpanContext;\n//# sourceMappingURL=spancontext-utils.js.map",
|
|
30
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracer = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst spancontext_utils_1 = require(\"./spancontext-utils\");\nconst contextApi = context_1.ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nclass NoopTracer {\n // startSpan starts a noop span.\n startSpan(name, options, context = contextApi.active()) {\n const root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n const parentFromContext = context && (0, context_utils_1.getSpanContext)(context);\n if (isSpanContext(parentFromContext) &&\n (0, spancontext_utils_1.isSpanContextValid)(parentFromContext)) {\n return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = (0, context_utils_1.setSpan)(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\nexports.NoopTracer = NoopTracer;\nfunction isSpanContext(spanContext) {\n return (typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map",
|
|
31
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracer = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\nconst NOOP_TRACER = new NoopTracer_1.NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nclass ProxyTracer {\n constructor(_provider, name, version, options) {\n this._provider = _provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n startSpan(name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n }\n startActiveSpan(_name, _options, _context, _fn) {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n }\n}\nexports.ProxyTracer = ProxyTracer;\n//# sourceMappingURL=ProxyTracer.js.map",
|
|
32
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracerProvider = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nclass NoopTracerProvider {\n getTracer(_name, _version, _options) {\n return new NoopTracer_1.NoopTracer();\n }\n}\nexports.NoopTracerProvider = NoopTracerProvider;\n//# sourceMappingURL=NoopTracerProvider.js.map",
|
|
33
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracerProvider = void 0;\nconst ProxyTracer_1 = require(\"./ProxyTracer\");\nconst NoopTracerProvider_1 = require(\"./NoopTracerProvider\");\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nclass ProxyTracerProvider {\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version, options));\n }\n getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n }\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate) {\n this._delegate = delegate;\n }\n getDelegateTracer(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n }\n}\nexports.ProxyTracerProvider = ProxyTracerProvider;\n//# sourceMappingURL=ProxyTracerProvider.js.map",
|
|
34
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=SamplingResult.js.map",
|
|
35
|
-
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanKind = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar SpanKind;\n(function (SpanKind) {\n /** Default value. Indicates that the span is used internally. */\n SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));\n//# sourceMappingURL=span_kind.js.map",
|
|
36
|
-
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanStatusCode = void 0;\n/**\n * An enumeration of status codes.\n */\nvar SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map",
|
|
37
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=tracestate-validators.js.map",
|
|
38
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceStateImpl = void 0;\nconst tracestate_validators_1 = require(\"./tracestate-validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceStateImpl {\n constructor(rawTraceState) {\n this._internalState = new Map();\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, tracestate_validators_1.validateKey)(key) && (0, tracestate_validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceStateImpl = TraceStateImpl;\n//# sourceMappingURL=tracestate-impl.js.map",
|
|
39
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTraceState = void 0;\nconst tracestate_impl_1 = require(\"./tracestate-impl\");\nfunction createTraceState(rawTraceState) {\n return new tracestate_impl_1.TraceStateImpl(rawTraceState);\n}\nexports.createTraceState = createTraceState;\n//# sourceMappingURL=utils.js.map",
|
|
40
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.context = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_1 = require(\"./api/context\");\n/** Entrypoint for context API */\nexports.context = context_1.ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map",
|
|
41
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diag = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst diag_1 = require(\"./api/diag\");\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexports.diag = diag_1.DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map",
|
|
42
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;\nconst NoopMeter_1 = require(\"./NoopMeter\");\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nclass NoopMeterProvider {\n getMeter(_name, _version, _options) {\n return NoopMeter_1.NOOP_METER;\n }\n}\nexports.NoopMeterProvider = NoopMeterProvider;\nexports.NOOP_METER_PROVIDER = new NoopMeterProvider();\n//# sourceMappingURL=NoopMeterProvider.js.map",
|
|
43
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsAPI = void 0;\nconst NoopMeterProvider_1 = require(\"../metrics/NoopMeterProvider\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'metrics';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nclass MetricsAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Metrics API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n setGlobalMeterProvider(provider) {\n return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance());\n }\n /**\n * Returns the global meter provider.\n */\n getMeterProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER;\n }\n /**\n * Returns a meter from the global meter provider.\n */\n getMeter(name, version, options) {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n /** Remove the global meter provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.MetricsAPI = MetricsAPI;\n//# sourceMappingURL=metrics.js.map",
|
|
44
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metrics = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst metrics_1 = require(\"./api/metrics\");\n/** Entrypoint for metrics API */\nexports.metrics = metrics_1.MetricsAPI.getInstance();\n//# sourceMappingURL=metrics-api.js.map",
|
|
45
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTextMapPropagator = void 0;\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nclass NoopTextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context, _carrier) { }\n /** Noop extract function does nothing and returns the input context */\n extract(context, _carrier) {\n return context;\n }\n fields() {\n return [];\n }\n}\nexports.NoopTextMapPropagator = NoopTextMapPropagator;\n//# sourceMappingURL=NoopTextMapPropagator.js.map",
|
|
46
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_2 = require(\"../context/context\");\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key');\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getBaggage(context) {\n return context.getValue(BAGGAGE_KEY) || undefined;\n}\nexports.getBaggage = getBaggage;\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getActiveBaggage() {\n return getBaggage(context_1.ContextAPI.getInstance().active());\n}\nexports.getActiveBaggage = getActiveBaggage;\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nfunction setBaggage(context, baggage) {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\nexports.setBaggage = setBaggage;\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nfunction deleteBaggage(context) {\n return context.deleteValue(BAGGAGE_KEY);\n}\nexports.deleteBaggage = deleteBaggage;\n//# sourceMappingURL=context-helpers.js.map",
|
|
47
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PropagationAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopTextMapPropagator_1 = require(\"../propagation/NoopTextMapPropagator\");\nconst TextMapPropagator_1 = require(\"../propagation/TextMapPropagator\");\nconst context_helpers_1 = require(\"../baggage/context-helpers\");\nconst utils_1 = require(\"../baggage/utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nclass PropagationAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this.createBaggage = utils_1.createBaggage;\n this.getBaggage = context_helpers_1.getBaggage;\n this.getActiveBaggage = context_helpers_1.getActiveBaggage;\n this.setBaggage = context_helpers_1.setBaggage;\n this.deleteBaggage = context_helpers_1.deleteBaggage;\n }\n /** Get the singleton instance of the Propagator API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n return this._instance;\n }\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n setGlobalPropagator(propagator) {\n return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance());\n }\n /**\n * Inject context into a carrier to be propagated inter-process\n *\n * @param context Context carrying tracing data to inject\n * @param carrier carrier to inject context into\n * @param setter Function used to set values on the carrier\n */\n inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\n /**\n * Extract context from a carrier\n *\n * @param context Context which the newly created context will inherit from\n * @param carrier Carrier to extract context from\n * @param getter Function used to extract keys from a carrier\n */\n extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields() {\n return this._getGlobalPropagator().fields();\n }\n /** Remove the global propagator */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n _getGlobalPropagator() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\nexports.PropagationAPI = PropagationAPI;\n//# sourceMappingURL=propagation.js.map",
|
|
48
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propagation = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst propagation_1 = require(\"./api/propagation\");\n/** Entrypoint for propagation API */\nexports.propagation = propagation_1.PropagationAPI.getInstance();\n//# sourceMappingURL=propagation-api.js.map",
|
|
49
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nclass TraceAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n this.deleteSpan = context_utils_1.deleteSpan;\n this.getSpan = context_utils_1.getSpan;\n this.getActiveSpan = context_utils_1.getActiveSpan;\n this.getSpanContext = context_utils_1.getSpanContext;\n this.setSpan = context_utils_1.setSpan;\n this.setSpanContext = context_utils_1.setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n setGlobalTracerProvider(provider) {\n const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n /**\n * Returns the global tracer provider.\n */\n getTracerProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n }\n /**\n * Returns a tracer from the global tracer provider.\n */\n getTracer(name, version) {\n return this.getTracerProvider().getTracer(name, version);\n }\n /** Remove the global tracer provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map",
|
|
50
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/** Entrypoint for trace API */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map",
|
|
51
|
-
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n context: context_api_1.context,\n diag: diag_api_1.diag,\n metrics: metrics_api_1.metrics,\n propagation: propagation_api_1.propagation,\n trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map",
|
|
52
5
|
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map",
|
|
53
6
|
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map",
|
|
54
7
|
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map",
|
|
@@ -128,6 +81,54 @@
|
|
|
128
81
|
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst types_1 = require(\"../discriminator/types\");\nconst compile_1 = require(\"../../compile\");\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._) `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n};\nconst def = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt) {\n const { gen, data, schema, parentSchema, it } = cxt;\n const { oneOf } = parentSchema;\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\");\n }\n const tagName = schema.propertyName;\n if (typeof tagName != \"string\")\n throw new Error(\"discriminator: requires propertyName\");\n if (schema.mapping)\n throw new Error(\"discriminator: mapping is not supported\");\n if (!oneOf)\n throw new Error(\"discriminator: requires oneOf keyword\");\n const valid = gen.let(\"valid\", false);\n const tag = gen.const(\"tag\", (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(tagName)}`);\n gen.if((0, codegen_1._) `typeof ${tag} == \"string\"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));\n cxt.ok(valid);\n function validateMapping() {\n const mapping = getMapping();\n gen.if(false);\n for (const tagValue in mapping) {\n gen.elseIf((0, codegen_1._) `${tag} === ${tagValue}`);\n gen.assign(valid, applyTagSchema(mapping[tagValue]));\n }\n gen.else();\n cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });\n gen.endIf();\n }\n function applyTagSchema(schemaProp) {\n const _valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({ keyword: \"oneOf\", schemaProp }, _valid);\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n return _valid;\n }\n function getMapping() {\n var _a;\n const oneOfMapping = {};\n const topRequired = hasRequired(parentSchema);\n let tagRequired = true;\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i];\n if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) {\n const ref = sch.$ref;\n sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref);\n if (sch instanceof compile_1.SchemaEnv)\n sch = sch.schema;\n if (sch === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref);\n }\n const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];\n if (typeof propSch != \"object\") {\n throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`);\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch));\n addMappings(propSch, i);\n }\n if (!tagRequired)\n throw new Error(`discriminator: \"${tagName}\" must be required`);\n return oneOfMapping;\n function hasRequired({ required }) {\n return Array.isArray(required) && required.includes(tagName);\n }\n function addMappings(sch, i) {\n if (sch.const) {\n addMapping(sch.const, i);\n }\n else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i);\n }\n }\n else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`);\n }\n }\n function addMapping(tagValue, i) {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`);\n }\n oneOfMapping[tagValue] = i;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=index.js.map",
|
|
129
82
|
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst metaSchema = require(\"./schema.json\");\nconst applicator = require(\"./meta/applicator.json\");\nconst unevaluated = require(\"./meta/unevaluated.json\");\nconst content = require(\"./meta/content.json\");\nconst core = require(\"./meta/core.json\");\nconst format = require(\"./meta/format-annotation.json\");\nconst metadata = require(\"./meta/meta-data.json\");\nconst validation = require(\"./meta/validation.json\");\nconst META_SUPPORT_DATA = [\"/properties\"];\nfunction addMetaSchema2020($data) {\n ;\n [\n metaSchema,\n applicator,\n unevaluated,\n content,\n core,\n with$data(this, format),\n metadata,\n with$data(this, validation),\n ].forEach((sch) => this.addMetaSchema(sch, undefined, false));\n return this;\n function with$data(ajv, sch) {\n return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch;\n }\n}\nexports.default = addMetaSchema2020;\n//# sourceMappingURL=index.js.map",
|
|
130
83
|
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv2020 = void 0;\nconst core_1 = require(\"./core\");\nconst draft2020_1 = require(\"./vocabularies/draft2020\");\nconst discriminator_1 = require(\"./vocabularies/discriminator\");\nconst json_schema_2020_12_1 = require(\"./refs/json-schema-2020-12\");\nconst META_SCHEMA_ID = \"https://json-schema.org/draft/2020-12/schema\";\nclass Ajv2020 extends core_1.default {\n constructor(opts = {}) {\n super({\n ...opts,\n dynamicRef: true,\n next: true,\n unevaluated: true,\n });\n }\n _addVocabularies() {\n super._addVocabularies();\n draft2020_1.default.forEach((v) => this.addVocabulary(v));\n if (this.opts.discriminator)\n this.addKeyword(discriminator_1.default);\n }\n _addDefaultMetaSchema() {\n super._addDefaultMetaSchema();\n const { $data, meta } = this.opts;\n if (!meta)\n return;\n json_schema_2020_12_1.default.call(this, $data);\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID;\n }\n defaultMeta() {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));\n }\n}\nexports.Ajv2020 = Ajv2020;\nmodule.exports = exports = Ajv2020;\nmodule.exports.Ajv2020 = Ajv2020;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Ajv2020;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nvar validation_error_1 = require(\"./runtime/validation_error\");\nObject.defineProperty(exports, \"ValidationError\", { enumerable: true, get: function () { return validation_error_1.default; } });\nvar ref_error_1 = require(\"./compile/ref_error\");\nObject.defineProperty(exports, \"MissingRefError\", { enumerable: true, get: function () { return ref_error_1.default; } });\n//# sourceMappingURL=2020.js.map",
|
|
84
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._globalThis = void 0;\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexports._globalThis = typeof globalThis === 'object' ? globalThis : global;\n//# sourceMappingURL=globalThis.js.map",
|
|
85
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./globalThis\"), exports);\n//# sourceMappingURL=index.js.map",
|
|
86
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./node\"), exports);\n//# sourceMappingURL=index.js.map",
|
|
87
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VERSION = void 0;\n// this is autogenerated file, see scripts/version-update.js\nexports.VERSION = '1.9.0';\n//# sourceMappingURL=version.js.map",
|
|
88
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCompatible = exports._makeCompatibilityCheck = void 0;\nconst version_1 = require(\"../version\");\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nfunction _makeCompatibilityCheck(ownVersion) {\n const acceptedVersions = new Set([ownVersion]);\n const rejectedVersions = new Set();\n const myVersionMatch = ownVersion.match(re);\n if (!myVersionMatch) {\n // we cannot guarantee compatibility so we always return noop\n return () => false;\n }\n const ownVersionParsed = {\n major: +myVersionMatch[1],\n minor: +myVersionMatch[2],\n patch: +myVersionMatch[3],\n prerelease: myVersionMatch[4],\n };\n // if ownVersion has a prerelease tag, versions must match exactly\n if (ownVersionParsed.prerelease != null) {\n return function isExactmatch(globalVersion) {\n return globalVersion === ownVersion;\n };\n }\n function _reject(v) {\n rejectedVersions.add(v);\n return false;\n }\n function _accept(v) {\n acceptedVersions.add(v);\n return true;\n }\n return function isCompatible(globalVersion) {\n if (acceptedVersions.has(globalVersion)) {\n return true;\n }\n if (rejectedVersions.has(globalVersion)) {\n return false;\n }\n const globalVersionMatch = globalVersion.match(re);\n if (!globalVersionMatch) {\n // cannot parse other version\n // we cannot guarantee compatibility so we always noop\n return _reject(globalVersion);\n }\n const globalVersionParsed = {\n major: +globalVersionMatch[1],\n minor: +globalVersionMatch[2],\n patch: +globalVersionMatch[3],\n prerelease: globalVersionMatch[4],\n };\n // if globalVersion has a prerelease tag, versions must match exactly\n if (globalVersionParsed.prerelease != null) {\n return _reject(globalVersion);\n }\n // major versions must match\n if (ownVersionParsed.major !== globalVersionParsed.major) {\n return _reject(globalVersion);\n }\n if (ownVersionParsed.major === 0) {\n if (ownVersionParsed.minor === globalVersionParsed.minor &&\n ownVersionParsed.patch <= globalVersionParsed.patch) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n }\n if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n return _accept(globalVersion);\n }\n return _reject(globalVersion);\n };\n}\nexports._makeCompatibilityCheck = _makeCompatibilityCheck;\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n * - 1.x package cannot use global 2.x package\n * - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n * - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n * - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexports.isCompatible = _makeCompatibilityCheck(version_1.VERSION);\n//# sourceMappingURL=semver.js.map",
|
|
89
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unregisterGlobal = exports.getGlobal = exports.registerGlobal = void 0;\nconst platform_1 = require(\"../platform\");\nconst version_1 = require(\"../version\");\nconst semver_1 = require(\"./semver\");\nconst major = version_1.VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(`opentelemetry.js.api.${major}`);\nconst _global = platform_1._globalThis;\nfunction registerGlobal(type, instance, diag, allowOverride = false) {\n var _a;\n const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) !== null && _a !== void 0 ? _a : {\n version: version_1.VERSION,\n });\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(`@opentelemetry/api: Attempted duplicate registration of API: ${type}`);\n diag.error(err.stack || err.message);\n return false;\n }\n if (api.version !== version_1.VERSION) {\n // All registered APIs must be of the same version exactly\n const err = new Error(`@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${version_1.VERSION}`);\n diag.error(err.stack || err.message);\n return false;\n }\n api[type] = instance;\n diag.debug(`@opentelemetry/api: Registered a global for ${type} v${version_1.VERSION}.`);\n return true;\n}\nexports.registerGlobal = registerGlobal;\nfunction getGlobal(type) {\n var _a, _b;\n const globalVersion = (_a = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _a === void 0 ? void 0 : _a.version;\n if (!globalVersion || !(0, semver_1.isCompatible)(globalVersion)) {\n return;\n }\n return (_b = _global[GLOBAL_OPENTELEMETRY_API_KEY]) === null || _b === void 0 ? void 0 : _b[type];\n}\nexports.getGlobal = getGlobal;\nfunction unregisterGlobal(type, diag) {\n diag.debug(`@opentelemetry/api: Unregistering a global for ${type} v${version_1.VERSION}.`);\n const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n if (api) {\n delete api[type];\n }\n}\nexports.unregisterGlobal = unregisterGlobal;\n//# sourceMappingURL=global-utils.js.map",
|
|
90
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagComponentLogger = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nclass DiagComponentLogger {\n constructor(props) {\n this._namespace = props.namespace || 'DiagComponentLogger';\n }\n debug(...args) {\n return logProxy('debug', this._namespace, args);\n }\n error(...args) {\n return logProxy('error', this._namespace, args);\n }\n info(...args) {\n return logProxy('info', this._namespace, args);\n }\n warn(...args) {\n return logProxy('warn', this._namespace, args);\n }\n verbose(...args) {\n return logProxy('verbose', this._namespace, args);\n }\n}\nexports.DiagComponentLogger = DiagComponentLogger;\nfunction logProxy(funcName, namespace, args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger) {\n return;\n }\n args.unshift(namespace);\n return logger[funcName](...args);\n}\n//# sourceMappingURL=ComponentLogger.js.map",
|
|
91
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagLogLevel = void 0;\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nvar DiagLogLevel;\n(function (DiagLogLevel) {\n /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n DiagLogLevel[DiagLogLevel[\"NONE\"] = 0] = \"NONE\";\n /** Identifies an error scenario */\n DiagLogLevel[DiagLogLevel[\"ERROR\"] = 30] = \"ERROR\";\n /** Identifies a warning scenario */\n DiagLogLevel[DiagLogLevel[\"WARN\"] = 50] = \"WARN\";\n /** General informational log message */\n DiagLogLevel[DiagLogLevel[\"INFO\"] = 60] = \"INFO\";\n /** General debug log message */\n DiagLogLevel[DiagLogLevel[\"DEBUG\"] = 70] = \"DEBUG\";\n /**\n * Detailed trace level logging should only be used for development, should only be set\n * in a development environment.\n */\n DiagLogLevel[DiagLogLevel[\"VERBOSE\"] = 80] = \"VERBOSE\";\n /** Used to set the logging level to include all logging */\n DiagLogLevel[DiagLogLevel[\"ALL\"] = 9999] = \"ALL\";\n})(DiagLogLevel = exports.DiagLogLevel || (exports.DiagLogLevel = {}));\n//# sourceMappingURL=types.js.map",
|
|
92
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLogLevelDiagLogger = void 0;\nconst types_1 = require(\"../types\");\nfunction createLogLevelDiagLogger(maxLevel, logger) {\n if (maxLevel < types_1.DiagLogLevel.NONE) {\n maxLevel = types_1.DiagLogLevel.NONE;\n }\n else if (maxLevel > types_1.DiagLogLevel.ALL) {\n maxLevel = types_1.DiagLogLevel.ALL;\n }\n // In case the logger is null or undefined\n logger = logger || {};\n function _filterFunc(funcName, theLevel) {\n const theFunc = logger[funcName];\n if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n return theFunc.bind(logger);\n }\n return function () { };\n }\n return {\n error: _filterFunc('error', types_1.DiagLogLevel.ERROR),\n warn: _filterFunc('warn', types_1.DiagLogLevel.WARN),\n info: _filterFunc('info', types_1.DiagLogLevel.INFO),\n debug: _filterFunc('debug', types_1.DiagLogLevel.DEBUG),\n verbose: _filterFunc('verbose', types_1.DiagLogLevel.VERBOSE),\n };\n}\nexports.createLogLevelDiagLogger = createLogLevelDiagLogger;\n//# sourceMappingURL=logLevelLogger.js.map",
|
|
93
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagAPI = void 0;\nconst ComponentLogger_1 = require(\"../diag/ComponentLogger\");\nconst logLevelLogger_1 = require(\"../diag/internal/logLevelLogger\");\nconst types_1 = require(\"../diag/types\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst API_NAME = 'diag';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nclass DiagAPI {\n /**\n * Private internal constructor\n * @private\n */\n constructor() {\n function _logProxy(funcName) {\n return function (...args) {\n const logger = (0, global_utils_1.getGlobal)('diag');\n // shortcut if logger not set\n if (!logger)\n return;\n return logger[funcName](...args);\n };\n }\n // Using self local variable for minification purposes as 'this' cannot be minified\n const self = this;\n // DiagAPI specific functions\n const setLogger = (logger, optionsOrLogLevel = { logLevel: types_1.DiagLogLevel.INFO }) => {\n var _a, _b, _c;\n if (logger === self) {\n // There isn't much we can do here.\n // Logging to the console might break the user application.\n // Try to log to self. If a logger was previously registered it will receive the log.\n const err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');\n self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);\n return false;\n }\n if (typeof optionsOrLogLevel === 'number') {\n optionsOrLogLevel = {\n logLevel: optionsOrLogLevel,\n };\n }\n const oldLogger = (0, global_utils_1.getGlobal)('diag');\n const newLogger = (0, logLevelLogger_1.createLogLevelDiagLogger)((_b = optionsOrLogLevel.logLevel) !== null && _b !== void 0 ? _b : types_1.DiagLogLevel.INFO, logger);\n // There already is an logger registered. We'll let it know before overwriting it.\n if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n const stack = (_c = new Error().stack) !== null && _c !== void 0 ? _c : '<failed to generate stacktrace>';\n oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n newLogger.warn(`Current logger will overwrite one already registered from ${stack}`);\n }\n return (0, global_utils_1.registerGlobal)('diag', newLogger, self, true);\n };\n self.setLogger = setLogger;\n self.disable = () => {\n (0, global_utils_1.unregisterGlobal)(API_NAME, self);\n };\n self.createComponentLogger = (options) => {\n return new ComponentLogger_1.DiagComponentLogger(options);\n };\n self.verbose = _logProxy('verbose');\n self.debug = _logProxy('debug');\n self.info = _logProxy('info');\n self.warn = _logProxy('warn');\n self.error = _logProxy('error');\n }\n /** Get the singleton instance of the DiagAPI API */\n static instance() {\n if (!this._instance) {\n this._instance = new DiagAPI();\n }\n return this._instance;\n }\n}\nexports.DiagAPI = DiagAPI;\n//# sourceMappingURL=diag.js.map",
|
|
94
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BaggageImpl = void 0;\nclass BaggageImpl {\n constructor(entries) {\n this._entries = entries ? new Map(entries) : new Map();\n }\n getEntry(key) {\n const entry = this._entries.get(key);\n if (!entry) {\n return undefined;\n }\n return Object.assign({}, entry);\n }\n getAllEntries() {\n return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n }\n setEntry(key, entry) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.set(key, entry);\n return newBaggage;\n }\n removeEntry(key) {\n const newBaggage = new BaggageImpl(this._entries);\n newBaggage._entries.delete(key);\n return newBaggage;\n }\n removeEntries(...keys) {\n const newBaggage = new BaggageImpl(this._entries);\n for (const key of keys) {\n newBaggage._entries.delete(key);\n }\n return newBaggage;\n }\n clear() {\n return new BaggageImpl();\n }\n}\nexports.BaggageImpl = BaggageImpl;\n//# sourceMappingURL=baggage-impl.js.map",
|
|
95
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataSymbol = void 0;\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexports.baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n//# sourceMappingURL=symbol.js.map",
|
|
96
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.baggageEntryMetadataFromString = exports.createBaggage = void 0;\nconst diag_1 = require(\"../api/diag\");\nconst baggage_impl_1 = require(\"./internal/baggage-impl\");\nconst symbol_1 = require(\"./internal/symbol\");\nconst diag = diag_1.DiagAPI.instance();\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nfunction createBaggage(entries = {}) {\n return new baggage_impl_1.BaggageImpl(new Map(Object.entries(entries)));\n}\nexports.createBaggage = createBaggage;\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n */\nfunction baggageEntryMetadataFromString(str) {\n if (typeof str !== 'string') {\n diag.error(`Cannot create baggage metadata from unknown type: ${typeof str}`);\n str = '';\n }\n return {\n __TYPE__: symbol_1.baggageEntryMetadataSymbol,\n toString() {\n return str;\n },\n };\n}\nexports.baggageEntryMetadataFromString = baggageEntryMetadataFromString;\n//# sourceMappingURL=utils.js.map",
|
|
97
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ROOT_CONTEXT = exports.createContextKey = void 0;\n/** Get a key to uniquely identify a context value */\nfunction createContextKey(description) {\n // The specification states that for the same input, multiple calls should\n // return different keys. Due to the nature of the JS dependency management\n // system, this creates problems where multiple versions of some package\n // could hold different keys for the same property.\n //\n // Therefore, we use Symbol.for which returns the same key for the same input.\n return Symbol.for(description);\n}\nexports.createContextKey = createContextKey;\nclass BaseContext {\n /**\n * Construct a new context which inherits values from an optional parent context.\n *\n * @param parentContext a context from which to inherit values\n */\n constructor(parentContext) {\n // for minification\n const self = this;\n self._currentContext = parentContext ? new Map(parentContext) : new Map();\n self.getValue = (key) => self._currentContext.get(key);\n self.setValue = (key, value) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.set(key, value);\n return context;\n };\n self.deleteValue = (key) => {\n const context = new BaseContext(self._currentContext);\n context._currentContext.delete(key);\n return context;\n };\n }\n}\n/** The root context is used as the default parent context when there is no active context */\nexports.ROOT_CONTEXT = new BaseContext();\n//# sourceMappingURL=context.js.map",
|
|
98
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiagConsoleLogger = void 0;\nconst consoleMap = [\n { n: 'error', c: 'error' },\n { n: 'warn', c: 'warn' },\n { n: 'info', c: 'info' },\n { n: 'debug', c: 'debug' },\n { n: 'verbose', c: 'trace' },\n];\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n */\nclass DiagConsoleLogger {\n constructor() {\n function _consoleFunc(funcName) {\n return function (...args) {\n if (console) {\n // Some environments only expose the console when the F12 developer console is open\n // eslint-disable-next-line no-console\n let theFunc = console[funcName];\n if (typeof theFunc !== 'function') {\n // Not all environments support all functions\n // eslint-disable-next-line no-console\n theFunc = console.log;\n }\n // One last final check\n if (typeof theFunc === 'function') {\n return theFunc.apply(console, args);\n }\n }\n };\n }\n for (let i = 0; i < consoleMap.length; i++) {\n this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n }\n }\n}\nexports.DiagConsoleLogger = DiagConsoleLogger;\n//# sourceMappingURL=consoleLogger.js.map",
|
|
99
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoopMeter = exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = exports.NOOP_OBSERVABLE_GAUGE_METRIC = exports.NOOP_OBSERVABLE_COUNTER_METRIC = exports.NOOP_UP_DOWN_COUNTER_METRIC = exports.NOOP_HISTOGRAM_METRIC = exports.NOOP_GAUGE_METRIC = exports.NOOP_COUNTER_METRIC = exports.NOOP_METER = exports.NoopObservableUpDownCounterMetric = exports.NoopObservableGaugeMetric = exports.NoopObservableCounterMetric = exports.NoopObservableMetric = exports.NoopHistogramMetric = exports.NoopGaugeMetric = exports.NoopUpDownCounterMetric = exports.NoopCounterMetric = exports.NoopMetric = exports.NoopMeter = void 0;\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nclass NoopMeter {\n constructor() { }\n /**\n * @see {@link Meter.createGauge}\n */\n createGauge(_name, _options) {\n return exports.NOOP_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createHistogram}\n */\n createHistogram(_name, _options) {\n return exports.NOOP_HISTOGRAM_METRIC;\n }\n /**\n * @see {@link Meter.createCounter}\n */\n createCounter(_name, _options) {\n return exports.NOOP_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createUpDownCounter}\n */\n createUpDownCounter(_name, _options) {\n return exports.NOOP_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableGauge}\n */\n createObservableGauge(_name, _options) {\n return exports.NOOP_OBSERVABLE_GAUGE_METRIC;\n }\n /**\n * @see {@link Meter.createObservableCounter}\n */\n createObservableCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.createObservableUpDownCounter}\n */\n createObservableUpDownCounter(_name, _options) {\n return exports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n }\n /**\n * @see {@link Meter.addBatchObservableCallback}\n */\n addBatchObservableCallback(_callback, _observables) { }\n /**\n * @see {@link Meter.removeBatchObservableCallback}\n */\n removeBatchObservableCallback(_callback) { }\n}\nexports.NoopMeter = NoopMeter;\nclass NoopMetric {\n}\nexports.NoopMetric = NoopMetric;\nclass NoopCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopCounterMetric = NoopCounterMetric;\nclass NoopUpDownCounterMetric extends NoopMetric {\n add(_value, _attributes) { }\n}\nexports.NoopUpDownCounterMetric = NoopUpDownCounterMetric;\nclass NoopGaugeMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopGaugeMetric = NoopGaugeMetric;\nclass NoopHistogramMetric extends NoopMetric {\n record(_value, _attributes) { }\n}\nexports.NoopHistogramMetric = NoopHistogramMetric;\nclass NoopObservableMetric {\n addCallback(_callback) { }\n removeCallback(_callback) { }\n}\nexports.NoopObservableMetric = NoopObservableMetric;\nclass NoopObservableCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableCounterMetric = NoopObservableCounterMetric;\nclass NoopObservableGaugeMetric extends NoopObservableMetric {\n}\nexports.NoopObservableGaugeMetric = NoopObservableGaugeMetric;\nclass NoopObservableUpDownCounterMetric extends NoopObservableMetric {\n}\nexports.NoopObservableUpDownCounterMetric = NoopObservableUpDownCounterMetric;\nexports.NOOP_METER = new NoopMeter();\n// Synchronous instruments\nexports.NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexports.NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexports.NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexports.NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n// Asynchronous instruments\nexports.NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexports.NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexports.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC = new NoopObservableUpDownCounterMetric();\n/**\n * Create a no-op Meter\n */\nfunction createNoopMeter() {\n return exports.NOOP_METER;\n}\nexports.createNoopMeter = createNoopMeter;\n//# sourceMappingURL=NoopMeter.js.map",
|
|
100
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueType = void 0;\n/** The Type of value. It describes how the data is reported. */\nvar ValueType;\n(function (ValueType) {\n ValueType[ValueType[\"INT\"] = 0] = \"INT\";\n ValueType[ValueType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n})(ValueType = exports.ValueType || (exports.ValueType = {}));\n//# sourceMappingURL=Metric.js.map",
|
|
101
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultTextMapSetter = exports.defaultTextMapGetter = void 0;\nexports.defaultTextMapGetter = {\n get(carrier, key) {\n if (carrier == null) {\n return undefined;\n }\n return carrier[key];\n },\n keys(carrier) {\n if (carrier == null) {\n return [];\n }\n return Object.keys(carrier);\n },\n};\nexports.defaultTextMapSetter = {\n set(carrier, key, value) {\n if (carrier == null) {\n return;\n }\n carrier[key] = value;\n },\n};\n//# sourceMappingURL=TextMapPropagator.js.map",
|
|
102
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopContextManager = void 0;\nconst context_1 = require(\"./context\");\nclass NoopContextManager {\n active() {\n return context_1.ROOT_CONTEXT;\n }\n with(_context, fn, thisArg, ...args) {\n return fn.call(thisArg, ...args);\n }\n bind(_context, target) {\n return target;\n }\n enable() {\n return this;\n }\n disable() {\n return this;\n }\n}\nexports.NoopContextManager = NoopContextManager;\n//# sourceMappingURL=NoopContextManager.js.map",
|
|
103
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextAPI = void 0;\nconst NoopContextManager_1 = require(\"../context/NoopContextManager\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager_1.NoopContextManager();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nclass ContextAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Context API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new ContextAPI();\n }\n return this._instance;\n }\n /**\n * Set the current context manager.\n *\n * @returns true if the context manager was successfully registered, else false\n */\n setGlobalContextManager(contextManager) {\n return (0, global_utils_1.registerGlobal)(API_NAME, contextManager, diag_1.DiagAPI.instance());\n }\n /**\n * Get the currently active context\n */\n active() {\n return this._getContextManager().active();\n }\n /**\n * Execute a function with an active context\n *\n * @param context context to be active during function execution\n * @param fn function to execute in a context\n * @param thisArg optional receiver to be used for calling fn\n * @param args optional arguments forwarded to fn\n */\n with(context, fn, thisArg, ...args) {\n return this._getContextManager().with(context, fn, thisArg, ...args);\n }\n /**\n * Bind a context to a target function or event emitter\n *\n * @param context context to bind to the event emitter or function. Defaults to the currently active context\n * @param target function or event emitter to bind\n */\n bind(context, target) {\n return this._getContextManager().bind(context, target);\n }\n _getContextManager() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_CONTEXT_MANAGER;\n }\n /** Disable and remove the global context manager */\n disable() {\n this._getContextManager().disable();\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.ContextAPI = ContextAPI;\n//# sourceMappingURL=context.js.map",
|
|
104
|
+
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceFlags = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar TraceFlags;\n(function (TraceFlags) {\n /** Represents no flag set. */\n TraceFlags[TraceFlags[\"NONE\"] = 0] = \"NONE\";\n /** Bit to represent whether trace is sampled in trace flags. */\n TraceFlags[TraceFlags[\"SAMPLED\"] = 1] = \"SAMPLED\";\n})(TraceFlags = exports.TraceFlags || (exports.TraceFlags = {}));\n//# sourceMappingURL=trace_flags.js.map",
|
|
105
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = void 0;\nconst trace_flags_1 = require(\"./trace_flags\");\nexports.INVALID_SPANID = '0000000000000000';\nexports.INVALID_TRACEID = '00000000000000000000000000000000';\nexports.INVALID_SPAN_CONTEXT = {\n traceId: exports.INVALID_TRACEID,\n spanId: exports.INVALID_SPANID,\n traceFlags: trace_flags_1.TraceFlags.NONE,\n};\n//# sourceMappingURL=invalid-span-constants.js.map",
|
|
106
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NonRecordingSpan = void 0;\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nclass NonRecordingSpan {\n constructor(_spanContext = invalid_span_constants_1.INVALID_SPAN_CONTEXT) {\n this._spanContext = _spanContext;\n }\n // Returns a SpanContext.\n spanContext() {\n return this._spanContext;\n }\n // By default does nothing\n setAttribute(_key, _value) {\n return this;\n }\n // By default does nothing\n setAttributes(_attributes) {\n return this;\n }\n // By default does nothing\n addEvent(_name, _attributes) {\n return this;\n }\n addLink(_link) {\n return this;\n }\n addLinks(_links) {\n return this;\n }\n // By default does nothing\n setStatus(_status) {\n return this;\n }\n // By default does nothing\n updateName(_name) {\n return this;\n }\n // By default does nothing\n end(_endTime) { }\n // isRecording always returns false for NonRecordingSpan.\n isRecording() {\n return false;\n }\n // By default does nothing\n recordException(_exception, _time) { }\n}\nexports.NonRecordingSpan = NonRecordingSpan;\n//# sourceMappingURL=NonRecordingSpan.js.map",
|
|
107
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSpanContext = exports.setSpanContext = exports.deleteSpan = exports.setSpan = exports.getActiveSpan = exports.getSpan = void 0;\nconst context_1 = require(\"../context/context\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst context_2 = require(\"../api/context\");\n/**\n * span key\n */\nconst SPAN_KEY = (0, context_1.createContextKey)('OpenTelemetry Context Key SPAN');\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nfunction getSpan(context) {\n return context.getValue(SPAN_KEY) || undefined;\n}\nexports.getSpan = getSpan;\n/**\n * Gets the span from the current context, if one exists.\n */\nfunction getActiveSpan() {\n return getSpan(context_2.ContextAPI.getInstance().active());\n}\nexports.getActiveSpan = getActiveSpan;\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nfunction setSpan(context, span) {\n return context.setValue(SPAN_KEY, span);\n}\nexports.setSpan = setSpan;\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nfunction deleteSpan(context) {\n return context.deleteValue(SPAN_KEY);\n}\nexports.deleteSpan = deleteSpan;\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nfunction setSpanContext(context, spanContext) {\n return setSpan(context, new NonRecordingSpan_1.NonRecordingSpan(spanContext));\n}\nexports.setSpanContext = setSpanContext;\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nfunction getSpanContext(context) {\n var _a;\n return (_a = getSpan(context)) === null || _a === void 0 ? void 0 : _a.spanContext();\n}\nexports.getSpanContext = getSpanContext;\n//# sourceMappingURL=context-utils.js.map",
|
|
108
|
+
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapSpanContext = exports.isSpanContextValid = exports.isValidSpanId = exports.isValidTraceId = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst invalid_span_constants_1 = require(\"./invalid-span-constants\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\nfunction isValidTraceId(traceId) {\n return VALID_TRACEID_REGEX.test(traceId) && traceId !== invalid_span_constants_1.INVALID_TRACEID;\n}\nexports.isValidTraceId = isValidTraceId;\nfunction isValidSpanId(spanId) {\n return VALID_SPANID_REGEX.test(spanId) && spanId !== invalid_span_constants_1.INVALID_SPANID;\n}\nexports.isValidSpanId = isValidSpanId;\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nfunction isSpanContextValid(spanContext) {\n return (isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId));\n}\nexports.isSpanContextValid = isSpanContextValid;\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nfunction wrapSpanContext(spanContext) {\n return new NonRecordingSpan_1.NonRecordingSpan(spanContext);\n}\nexports.wrapSpanContext = wrapSpanContext;\n//# sourceMappingURL=spancontext-utils.js.map",
|
|
109
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracer = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst NonRecordingSpan_1 = require(\"./NonRecordingSpan\");\nconst spancontext_utils_1 = require(\"./spancontext-utils\");\nconst contextApi = context_1.ContextAPI.getInstance();\n/**\n * No-op implementations of {@link Tracer}.\n */\nclass NoopTracer {\n // startSpan starts a noop span.\n startSpan(name, options, context = contextApi.active()) {\n const root = Boolean(options === null || options === void 0 ? void 0 : options.root);\n if (root) {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n const parentFromContext = context && (0, context_utils_1.getSpanContext)(context);\n if (isSpanContext(parentFromContext) &&\n (0, spancontext_utils_1.isSpanContextValid)(parentFromContext)) {\n return new NonRecordingSpan_1.NonRecordingSpan(parentFromContext);\n }\n else {\n return new NonRecordingSpan_1.NonRecordingSpan();\n }\n }\n startActiveSpan(name, arg2, arg3, arg4) {\n let opts;\n let ctx;\n let fn;\n if (arguments.length < 2) {\n return;\n }\n else if (arguments.length === 2) {\n fn = arg2;\n }\n else if (arguments.length === 3) {\n opts = arg2;\n fn = arg3;\n }\n else {\n opts = arg2;\n ctx = arg3;\n fn = arg4;\n }\n const parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();\n const span = this.startSpan(name, opts, parentContext);\n const contextWithSpanSet = (0, context_utils_1.setSpan)(parentContext, span);\n return contextApi.with(contextWithSpanSet, fn, undefined, span);\n }\n}\nexports.NoopTracer = NoopTracer;\nfunction isSpanContext(spanContext) {\n return (typeof spanContext === 'object' &&\n typeof spanContext['spanId'] === 'string' &&\n typeof spanContext['traceId'] === 'string' &&\n typeof spanContext['traceFlags'] === 'number');\n}\n//# sourceMappingURL=NoopTracer.js.map",
|
|
110
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracer = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\nconst NOOP_TRACER = new NoopTracer_1.NoopTracer();\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nclass ProxyTracer {\n constructor(_provider, name, version, options) {\n this._provider = _provider;\n this.name = name;\n this.version = version;\n this.options = options;\n }\n startSpan(name, options, context) {\n return this._getTracer().startSpan(name, options, context);\n }\n startActiveSpan(_name, _options, _context, _fn) {\n const tracer = this._getTracer();\n return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n }\n /**\n * Try to get a tracer from the proxy tracer provider.\n * If the proxy tracer provider has no delegate, return a noop tracer.\n */\n _getTracer() {\n if (this._delegate) {\n return this._delegate;\n }\n const tracer = this._provider.getDelegateTracer(this.name, this.version, this.options);\n if (!tracer) {\n return NOOP_TRACER;\n }\n this._delegate = tracer;\n return this._delegate;\n }\n}\nexports.ProxyTracer = ProxyTracer;\n//# sourceMappingURL=ProxyTracer.js.map",
|
|
111
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTracerProvider = void 0;\nconst NoopTracer_1 = require(\"./NoopTracer\");\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nclass NoopTracerProvider {\n getTracer(_name, _version, _options) {\n return new NoopTracer_1.NoopTracer();\n }\n}\nexports.NoopTracerProvider = NoopTracerProvider;\n//# sourceMappingURL=NoopTracerProvider.js.map",
|
|
112
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProxyTracerProvider = void 0;\nconst ProxyTracer_1 = require(\"./ProxyTracer\");\nconst NoopTracerProvider_1 = require(\"./NoopTracerProvider\");\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider_1.NoopTracerProvider();\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n * When a delegate is set, traces are provided from the delegate.\n * When a delegate is set after tracers have already been provided,\n * all tracers already provided will use the provided delegate implementation.\n */\nclass ProxyTracerProvider {\n /**\n * Get a {@link ProxyTracer}\n */\n getTracer(name, version, options) {\n var _a;\n return ((_a = this.getDelegateTracer(name, version, options)) !== null && _a !== void 0 ? _a : new ProxyTracer_1.ProxyTracer(this, name, version, options));\n }\n getDelegate() {\n var _a;\n return (_a = this._delegate) !== null && _a !== void 0 ? _a : NOOP_TRACER_PROVIDER;\n }\n /**\n * Set the delegate tracer provider\n */\n setDelegate(delegate) {\n this._delegate = delegate;\n }\n getDelegateTracer(name, version, options) {\n var _a;\n return (_a = this._delegate) === null || _a === void 0 ? void 0 : _a.getTracer(name, version, options);\n }\n}\nexports.ProxyTracerProvider = ProxyTracerProvider;\n//# sourceMappingURL=ProxyTracerProvider.js.map",
|
|
113
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SamplingDecision = void 0;\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nvar SamplingDecision;\n(function (SamplingDecision) {\n /**\n * `Span.isRecording() === false`, span will not be recorded and all events\n * and attributes will be dropped.\n */\n SamplingDecision[SamplingDecision[\"NOT_RECORD\"] = 0] = \"NOT_RECORD\";\n /**\n * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n * MUST NOT be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD\"] = 1] = \"RECORD\";\n /**\n * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n * MUST be set.\n */\n SamplingDecision[SamplingDecision[\"RECORD_AND_SAMPLED\"] = 2] = \"RECORD_AND_SAMPLED\";\n})(SamplingDecision = exports.SamplingDecision || (exports.SamplingDecision = {}));\n//# sourceMappingURL=SamplingResult.js.map",
|
|
114
|
+
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanKind = void 0;\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar SpanKind;\n(function (SpanKind) {\n /** Default value. Indicates that the span is used internally. */\n SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n /**\n * Indicates that the span covers server-side handling of an RPC or other\n * remote request.\n */\n SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n /**\n * Indicates that the span covers the client-side wrapper around an RPC or\n * other remote request.\n */\n SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n /**\n * Indicates that the span describes producer sending a message to a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n /**\n * Indicates that the span describes consumer receiving a message from a\n * broker. Unlike client and server, there is no direct critical path latency\n * relationship between producer and consumer spans.\n */\n SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind = exports.SpanKind || (exports.SpanKind = {}));\n//# sourceMappingURL=span_kind.js.map",
|
|
115
|
+
"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SpanStatusCode = void 0;\n/**\n * An enumeration of status codes.\n */\nvar SpanStatusCode;\n(function (SpanStatusCode) {\n /**\n * The default status.\n */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /**\n * The operation has been validated by an Application developer or\n * Operator to have completed successfully.\n */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /**\n * The operation contains an error.\n */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode = exports.SpanStatusCode || (exports.SpanStatusCode = {}));\n//# sourceMappingURL=status.js.map",
|
|
116
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateValue = exports.validateKey = void 0;\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nfunction validateKey(key) {\n return VALID_KEY_REGEX.test(key);\n}\nexports.validateKey = validateKey;\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nfunction validateValue(value) {\n return (VALID_VALUE_BASE_REGEX.test(value) &&\n !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value));\n}\nexports.validateValue = validateValue;\n//# sourceMappingURL=tracestate-validators.js.map",
|
|
117
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceStateImpl = void 0;\nconst tracestate_validators_1 = require(\"./tracestate-validators\");\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nclass TraceStateImpl {\n constructor(rawTraceState) {\n this._internalState = new Map();\n if (rawTraceState)\n this._parse(rawTraceState);\n }\n set(key, value) {\n // TODO: Benchmark the different approaches(map vs list) and\n // use the faster one.\n const traceState = this._clone();\n if (traceState._internalState.has(key)) {\n traceState._internalState.delete(key);\n }\n traceState._internalState.set(key, value);\n return traceState;\n }\n unset(key) {\n const traceState = this._clone();\n traceState._internalState.delete(key);\n return traceState;\n }\n get(key) {\n return this._internalState.get(key);\n }\n serialize() {\n return this._keys()\n .reduce((agg, key) => {\n agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n return agg;\n }, [])\n .join(LIST_MEMBERS_SEPARATOR);\n }\n _parse(rawTraceState) {\n if (rawTraceState.length > MAX_TRACE_STATE_LEN)\n return;\n this._internalState = rawTraceState\n .split(LIST_MEMBERS_SEPARATOR)\n .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n .reduce((agg, part) => {\n const listMember = part.trim(); // Optional Whitespace (OWS) handling\n const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n if (i !== -1) {\n const key = listMember.slice(0, i);\n const value = listMember.slice(i + 1, part.length);\n if ((0, tracestate_validators_1.validateKey)(key) && (0, tracestate_validators_1.validateValue)(value)) {\n agg.set(key, value);\n }\n else {\n // TODO: Consider to add warning log\n }\n }\n return agg;\n }, new Map());\n // Because of the reverse() requirement, trunc must be done after map is created\n if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n this._internalState = new Map(Array.from(this._internalState.entries())\n .reverse() // Use reverse same as original tracestate parse chain\n .slice(0, MAX_TRACE_STATE_ITEMS));\n }\n }\n _keys() {\n return Array.from(this._internalState.keys()).reverse();\n }\n _clone() {\n const traceState = new TraceStateImpl();\n traceState._internalState = new Map(this._internalState);\n return traceState;\n }\n}\nexports.TraceStateImpl = TraceStateImpl;\n//# sourceMappingURL=tracestate-impl.js.map",
|
|
118
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTraceState = void 0;\nconst tracestate_impl_1 = require(\"./tracestate-impl\");\nfunction createTraceState(rawTraceState) {\n return new tracestate_impl_1.TraceStateImpl(rawTraceState);\n}\nexports.createTraceState = createTraceState;\n//# sourceMappingURL=utils.js.map",
|
|
119
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.context = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_1 = require(\"./api/context\");\n/** Entrypoint for context API */\nexports.context = context_1.ContextAPI.getInstance();\n//# sourceMappingURL=context-api.js.map",
|
|
120
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diag = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst diag_1 = require(\"./api/diag\");\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexports.diag = diag_1.DiagAPI.instance();\n//# sourceMappingURL=diag-api.js.map",
|
|
121
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NOOP_METER_PROVIDER = exports.NoopMeterProvider = void 0;\nconst NoopMeter_1 = require(\"./NoopMeter\");\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nclass NoopMeterProvider {\n getMeter(_name, _version, _options) {\n return NoopMeter_1.NOOP_METER;\n }\n}\nexports.NoopMeterProvider = NoopMeterProvider;\nexports.NOOP_METER_PROVIDER = new NoopMeterProvider();\n//# sourceMappingURL=NoopMeterProvider.js.map",
|
|
122
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetricsAPI = void 0;\nconst NoopMeterProvider_1 = require(\"../metrics/NoopMeterProvider\");\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'metrics';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nclass MetricsAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() { }\n /** Get the singleton instance of the Metrics API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new MetricsAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global meter provider.\n * Returns true if the meter provider was successfully registered, else false.\n */\n setGlobalMeterProvider(provider) {\n return (0, global_utils_1.registerGlobal)(API_NAME, provider, diag_1.DiagAPI.instance());\n }\n /**\n * Returns the global meter provider.\n */\n getMeterProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NoopMeterProvider_1.NOOP_METER_PROVIDER;\n }\n /**\n * Returns a meter from the global meter provider.\n */\n getMeter(name, version, options) {\n return this.getMeterProvider().getMeter(name, version, options);\n }\n /** Remove the global meter provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n}\nexports.MetricsAPI = MetricsAPI;\n//# sourceMappingURL=metrics.js.map",
|
|
123
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.metrics = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst metrics_1 = require(\"./api/metrics\");\n/** Entrypoint for metrics API */\nexports.metrics = metrics_1.MetricsAPI.getInstance();\n//# sourceMappingURL=metrics-api.js.map",
|
|
124
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NoopTextMapPropagator = void 0;\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nclass NoopTextMapPropagator {\n /** Noop inject function does nothing */\n inject(_context, _carrier) { }\n /** Noop extract function does nothing and returns the input context */\n extract(context, _carrier) {\n return context;\n }\n fields() {\n return [];\n }\n}\nexports.NoopTextMapPropagator = NoopTextMapPropagator;\n//# sourceMappingURL=NoopTextMapPropagator.js.map",
|
|
125
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deleteBaggage = exports.setBaggage = exports.getActiveBaggage = exports.getBaggage = void 0;\nconst context_1 = require(\"../api/context\");\nconst context_2 = require(\"../context/context\");\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = (0, context_2.createContextKey)('OpenTelemetry Baggage Key');\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getBaggage(context) {\n return context.getValue(BAGGAGE_KEY) || undefined;\n}\nexports.getBaggage = getBaggage;\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nfunction getActiveBaggage() {\n return getBaggage(context_1.ContextAPI.getInstance().active());\n}\nexports.getActiveBaggage = getActiveBaggage;\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nfunction setBaggage(context, baggage) {\n return context.setValue(BAGGAGE_KEY, baggage);\n}\nexports.setBaggage = setBaggage;\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nfunction deleteBaggage(context) {\n return context.deleteValue(BAGGAGE_KEY);\n}\nexports.deleteBaggage = deleteBaggage;\n//# sourceMappingURL=context-helpers.js.map",
|
|
126
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PropagationAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst NoopTextMapPropagator_1 = require(\"../propagation/NoopTextMapPropagator\");\nconst TextMapPropagator_1 = require(\"../propagation/TextMapPropagator\");\nconst context_helpers_1 = require(\"../baggage/context-helpers\");\nconst utils_1 = require(\"../baggage/utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator_1.NoopTextMapPropagator();\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nclass PropagationAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this.createBaggage = utils_1.createBaggage;\n this.getBaggage = context_helpers_1.getBaggage;\n this.getActiveBaggage = context_helpers_1.getActiveBaggage;\n this.setBaggage = context_helpers_1.setBaggage;\n this.deleteBaggage = context_helpers_1.deleteBaggage;\n }\n /** Get the singleton instance of the Propagator API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new PropagationAPI();\n }\n return this._instance;\n }\n /**\n * Set the current propagator.\n *\n * @returns true if the propagator was successfully registered, else false\n */\n setGlobalPropagator(propagator) {\n return (0, global_utils_1.registerGlobal)(API_NAME, propagator, diag_1.DiagAPI.instance());\n }\n /**\n * Inject context into a carrier to be propagated inter-process\n *\n * @param context Context carrying tracing data to inject\n * @param carrier carrier to inject context into\n * @param setter Function used to set values on the carrier\n */\n inject(context, carrier, setter = TextMapPropagator_1.defaultTextMapSetter) {\n return this._getGlobalPropagator().inject(context, carrier, setter);\n }\n /**\n * Extract context from a carrier\n *\n * @param context Context which the newly created context will inherit from\n * @param carrier Carrier to extract context from\n * @param getter Function used to extract keys from a carrier\n */\n extract(context, carrier, getter = TextMapPropagator_1.defaultTextMapGetter) {\n return this._getGlobalPropagator().extract(context, carrier, getter);\n }\n /**\n * Return a list of all fields which may be used by the propagator.\n */\n fields() {\n return this._getGlobalPropagator().fields();\n }\n /** Remove the global propagator */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n }\n _getGlobalPropagator() {\n return (0, global_utils_1.getGlobal)(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n }\n}\nexports.PropagationAPI = PropagationAPI;\n//# sourceMappingURL=propagation.js.map",
|
|
127
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propagation = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst propagation_1 = require(\"./api/propagation\");\n/** Entrypoint for propagation API */\nexports.propagation = propagation_1.PropagationAPI.getInstance();\n//# sourceMappingURL=propagation-api.js.map",
|
|
128
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TraceAPI = void 0;\nconst global_utils_1 = require(\"../internal/global-utils\");\nconst ProxyTracerProvider_1 = require(\"../trace/ProxyTracerProvider\");\nconst spancontext_utils_1 = require(\"../trace/spancontext-utils\");\nconst context_utils_1 = require(\"../trace/context-utils\");\nconst diag_1 = require(\"./diag\");\nconst API_NAME = 'trace';\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nclass TraceAPI {\n /** Empty private constructor prevents end users from constructing a new instance of the API */\n constructor() {\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n this.wrapSpanContext = spancontext_utils_1.wrapSpanContext;\n this.isSpanContextValid = spancontext_utils_1.isSpanContextValid;\n this.deleteSpan = context_utils_1.deleteSpan;\n this.getSpan = context_utils_1.getSpan;\n this.getActiveSpan = context_utils_1.getActiveSpan;\n this.getSpanContext = context_utils_1.getSpanContext;\n this.setSpan = context_utils_1.setSpan;\n this.setSpanContext = context_utils_1.setSpanContext;\n }\n /** Get the singleton instance of the Trace API */\n static getInstance() {\n if (!this._instance) {\n this._instance = new TraceAPI();\n }\n return this._instance;\n }\n /**\n * Set the current global tracer.\n *\n * @returns true if the tracer provider was successfully registered, else false\n */\n setGlobalTracerProvider(provider) {\n const success = (0, global_utils_1.registerGlobal)(API_NAME, this._proxyTracerProvider, diag_1.DiagAPI.instance());\n if (success) {\n this._proxyTracerProvider.setDelegate(provider);\n }\n return success;\n }\n /**\n * Returns the global tracer provider.\n */\n getTracerProvider() {\n return (0, global_utils_1.getGlobal)(API_NAME) || this._proxyTracerProvider;\n }\n /**\n * Returns a tracer from the global tracer provider.\n */\n getTracer(name, version) {\n return this.getTracerProvider().getTracer(name, version);\n }\n /** Remove the global tracer provider */\n disable() {\n (0, global_utils_1.unregisterGlobal)(API_NAME, diag_1.DiagAPI.instance());\n this._proxyTracerProvider = new ProxyTracerProvider_1.ProxyTracerProvider();\n }\n}\nexports.TraceAPI = TraceAPI;\n//# sourceMappingURL=trace.js.map",
|
|
129
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = void 0;\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst trace_1 = require(\"./api/trace\");\n/** Entrypoint for trace API */\nexports.trace = trace_1.TraceAPI.getInstance();\n//# sourceMappingURL=trace-api.js.map",
|
|
130
|
+
"\"use strict\";\n/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trace = exports.propagation = exports.metrics = exports.diag = exports.context = exports.INVALID_SPAN_CONTEXT = exports.INVALID_TRACEID = exports.INVALID_SPANID = exports.isValidSpanId = exports.isValidTraceId = exports.isSpanContextValid = exports.createTraceState = exports.TraceFlags = exports.SpanStatusCode = exports.SpanKind = exports.SamplingDecision = exports.ProxyTracerProvider = exports.ProxyTracer = exports.defaultTextMapSetter = exports.defaultTextMapGetter = exports.ValueType = exports.createNoopMeter = exports.DiagLogLevel = exports.DiagConsoleLogger = exports.ROOT_CONTEXT = exports.createContextKey = exports.baggageEntryMetadataFromString = void 0;\nvar utils_1 = require(\"./baggage/utils\");\nObject.defineProperty(exports, \"baggageEntryMetadataFromString\", { enumerable: true, get: function () { return utils_1.baggageEntryMetadataFromString; } });\n// Context APIs\nvar context_1 = require(\"./context/context\");\nObject.defineProperty(exports, \"createContextKey\", { enumerable: true, get: function () { return context_1.createContextKey; } });\nObject.defineProperty(exports, \"ROOT_CONTEXT\", { enumerable: true, get: function () { return context_1.ROOT_CONTEXT; } });\n// Diag APIs\nvar consoleLogger_1 = require(\"./diag/consoleLogger\");\nObject.defineProperty(exports, \"DiagConsoleLogger\", { enumerable: true, get: function () { return consoleLogger_1.DiagConsoleLogger; } });\nvar types_1 = require(\"./diag/types\");\nObject.defineProperty(exports, \"DiagLogLevel\", { enumerable: true, get: function () { return types_1.DiagLogLevel; } });\n// Metrics APIs\nvar NoopMeter_1 = require(\"./metrics/NoopMeter\");\nObject.defineProperty(exports, \"createNoopMeter\", { enumerable: true, get: function () { return NoopMeter_1.createNoopMeter; } });\nvar Metric_1 = require(\"./metrics/Metric\");\nObject.defineProperty(exports, \"ValueType\", { enumerable: true, get: function () { return Metric_1.ValueType; } });\n// Propagation APIs\nvar TextMapPropagator_1 = require(\"./propagation/TextMapPropagator\");\nObject.defineProperty(exports, \"defaultTextMapGetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapGetter; } });\nObject.defineProperty(exports, \"defaultTextMapSetter\", { enumerable: true, get: function () { return TextMapPropagator_1.defaultTextMapSetter; } });\nvar ProxyTracer_1 = require(\"./trace/ProxyTracer\");\nObject.defineProperty(exports, \"ProxyTracer\", { enumerable: true, get: function () { return ProxyTracer_1.ProxyTracer; } });\nvar ProxyTracerProvider_1 = require(\"./trace/ProxyTracerProvider\");\nObject.defineProperty(exports, \"ProxyTracerProvider\", { enumerable: true, get: function () { return ProxyTracerProvider_1.ProxyTracerProvider; } });\nvar SamplingResult_1 = require(\"./trace/SamplingResult\");\nObject.defineProperty(exports, \"SamplingDecision\", { enumerable: true, get: function () { return SamplingResult_1.SamplingDecision; } });\nvar span_kind_1 = require(\"./trace/span_kind\");\nObject.defineProperty(exports, \"SpanKind\", { enumerable: true, get: function () { return span_kind_1.SpanKind; } });\nvar status_1 = require(\"./trace/status\");\nObject.defineProperty(exports, \"SpanStatusCode\", { enumerable: true, get: function () { return status_1.SpanStatusCode; } });\nvar trace_flags_1 = require(\"./trace/trace_flags\");\nObject.defineProperty(exports, \"TraceFlags\", { enumerable: true, get: function () { return trace_flags_1.TraceFlags; } });\nvar utils_2 = require(\"./trace/internal/utils\");\nObject.defineProperty(exports, \"createTraceState\", { enumerable: true, get: function () { return utils_2.createTraceState; } });\nvar spancontext_utils_1 = require(\"./trace/spancontext-utils\");\nObject.defineProperty(exports, \"isSpanContextValid\", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } });\nObject.defineProperty(exports, \"isValidTraceId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidTraceId; } });\nObject.defineProperty(exports, \"isValidSpanId\", { enumerable: true, get: function () { return spancontext_utils_1.isValidSpanId; } });\nvar invalid_span_constants_1 = require(\"./trace/invalid-span-constants\");\nObject.defineProperty(exports, \"INVALID_SPANID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPANID; } });\nObject.defineProperty(exports, \"INVALID_TRACEID\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_TRACEID; } });\nObject.defineProperty(exports, \"INVALID_SPAN_CONTEXT\", { enumerable: true, get: function () { return invalid_span_constants_1.INVALID_SPAN_CONTEXT; } });\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nconst context_api_1 = require(\"./context-api\");\nObject.defineProperty(exports, \"context\", { enumerable: true, get: function () { return context_api_1.context; } });\nconst diag_api_1 = require(\"./diag-api\");\nObject.defineProperty(exports, \"diag\", { enumerable: true, get: function () { return diag_api_1.diag; } });\nconst metrics_api_1 = require(\"./metrics-api\");\nObject.defineProperty(exports, \"metrics\", { enumerable: true, get: function () { return metrics_api_1.metrics; } });\nconst propagation_api_1 = require(\"./propagation-api\");\nObject.defineProperty(exports, \"propagation\", { enumerable: true, get: function () { return propagation_api_1.propagation; } });\nconst trace_api_1 = require(\"./trace-api\");\nObject.defineProperty(exports, \"trace\", { enumerable: true, get: function () { return trace_api_1.trace; } });\n// Default export.\nexports.default = {\n context: context_api_1.context,\n diag: diag_api_1.diag,\n metrics: metrics_api_1.metrics,\n propagation: propagation_api_1.propagation,\n trace: trace_api_1.trace,\n};\n//# sourceMappingURL=index.js.map",
|
|
131
|
+
"import Ajv2020, {\n\ttype ErrorObject,\n\ttype ValidateFunction,\n} from \"ajv/dist/2020.js\";\nimport { z } from \"zod\";\nimport { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport { assertDocumentSha256, documentSha256, jcsSha256 } from \"./identity\";\nimport { CAPABILITY_POLICY, RESOURCE_POLICY } from \"./manifests\";\nimport archiveSelectionSchemaJson from \"./schemas/archive-selection.schema.json\" with {\n\ttype: \"json\",\n};\nimport promotionReceiptSchemaJson from \"./schemas/promotion-receipt.schema.json\" with {\n\ttype: \"json\",\n};\nimport requestSchemaJson from \"./schemas/request.schema.json\" with {\n\ttype: \"json\",\n};\nimport requiredClockSchemaJson from \"./schemas/required-clock.schema.json\" with {\n\ttype: \"json\",\n};\n\nexport const BACKFILL_REQUEST_SCHEMA_ID = requestSchemaJson.$id;\nexport const REQUIRED_CLOCK_SCHEMA_ID = requiredClockSchemaJson.$id;\nexport const ARCHIVE_SELECTION_SCHEMA_ID = archiveSelectionSchemaJson.$id;\nexport const PROMOTION_RECEIPT_SCHEMA_ID = promotionReceiptSchemaJson.$id;\n\nexport type FixedUtcTimestamp = string;\nexport type Sha256Hex = string;\nexport type LowercaseUuid = string;\n\nexport type CanonicalScopeWire = {\n\texchange: string;\n\ttrading_pair: string;\n\tmarket_type: \"spot\" | \"swap\" | \"future\";\n\tfeed: \"ORDERBOOK\";\n};\n\nexport type CoveragePolicyWire = {\n\tpolicy_id: \"prior-asof-strict/v1\";\n\tmax_asof_lag_ms: number;\n\tfuture_rows: \"reject\";\n\tmissing_required_event: \"fail\";\n};\n\nexport type RequiredClockWire = {\n\tschema_id: typeof REQUIRED_CLOCK_SCHEMA_ID;\n\tclock_id: LowercaseUuid;\n\tclock_sha256: Sha256Hex;\n\tcreated_at: FixedUtcTimestamp;\n\ttargets: Array<{ target_id: LowercaseUuid; target_at: FixedUtcTimestamp }>;\n};\n\nexport type ArchiveSelectionWire = {\n\tschema_id: typeof ARCHIVE_SELECTION_SCHEMA_ID;\n\tselection_sha256: Sha256Hex;\n\tscope: CanonicalScopeWire;\n\trequired_clock: {\n\t\tclock_id: LowercaseUuid;\n\t\tclock_sha256: Sha256Hex;\n\t\tevent_count: number;\n\t};\n\tcoverage_policy: CoveragePolicyWire;\n\tsource_policy: \"authoritative_window\" | \"fill_gaps\";\n\tcoverage_class: \"complete\" | \"partial\" | \"missing\";\n\trequested_intervals: Array<{\n\t\tstart_at: FixedUtcTimestamp;\n\t\tend_at: FixedUtcTimestamp;\n\t}>;\n\tselected_intervals: Array<{\n\t\tstart_at: FixedUtcTimestamp;\n\t\tend_at: FixedUtcTimestamp;\n\t\tcapture_bundle_id: Sha256Hex;\n\t\tcapture_origin: \"production_capture\" | \"vendor_historical_backfill\";\n\t}>;\n\tprecedence: Array<\"archive\" | \"vendor\">;\n\tbundles: Array<{\n\t\tcapture_bundle_id: Sha256Hex;\n\t\tcapture_origin: \"production_capture\" | \"vendor_historical_backfill\";\n\t\tinterval: { start_at: FixedUtcTimestamp; end_at: FixedUtcTimestamp };\n\t\tqualification: null | {\n\t\t\tqualification_event_id: LowercaseUuid;\n\t\t\tstate: \"qualified\";\n\t\t\treceipt_id: Sha256Hex;\n\t\t\tpromotion_identity_sha256: Sha256Hex;\n\t\t};\n\t}>;\n\tsupport_anchors: Array<{\n\t\tcapture_bundle_id: Sha256Hex;\n\t\traw_capture_id: Sha256Hex;\n\t\tsnapshot_id: Sha256Hex;\n\t\tsource_time: FixedUtcTimestamp;\n\t\tnormalized_summary_checksum: Sha256Hex;\n\t\tmetadata_ref: {\n\t\t\tcapture_origin: \"production_capture\" | \"vendor_historical_backfill\";\n\t\t\tqualification_event_id: LowercaseUuid | null;\n\t\t\treceipt_id: Sha256Hex | null;\n\t\t};\n\t}>;\n\treceipt_ids: Sha256Hex[];\n\tqualification_event_ids: LowercaseUuid[];\n\tresolved_at: FixedUtcTimestamp;\n};\n\nexport type BackfillRequestWire = {\n\tschema_id: typeof BACKFILL_REQUEST_SCHEMA_ID;\n\trequest_id: LowercaseUuid;\n\tattempt_id: LowercaseUuid;\n\tidempotency_key: Sha256Hex;\n\tscope: CanonicalScopeWire;\n\twindow: { start_at: FixedUtcTimestamp; end_at: FixedUtcTimestamp };\n\tdepth: number;\n\tconstruction_mode: \"sampled_top_n_snapshot\" | \"exact_l2_reconstruction\";\n\tsource_policy: \"authoritative_window\" | \"fill_gaps\";\n\ttarget: { environment: string; cluster: string };\n\tcoverage_policy: CoveragePolicyWire;\n\trequired_clock: {\n\t\tschema_id: typeof REQUIRED_CLOCK_SCHEMA_ID;\n\t\tclock_id: LowercaseUuid;\n\t\tfile_name: string;\n\t\tclock_sha256: Sha256Hex;\n\t\tevent_count: number;\n\t};\n\tinitial_selection: ArchiveSelectionWire;\n\texpected_canonical_schema: {\n\t\tschema_id: string;\n\t\tschema_sha256: Sha256Hex;\n\t};\n\tproduct_pins: {\n\t\tcapability_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tresource_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t};\n\tproduction_authorization_id: LowercaseUuid;\n};\n\nexport type PromotionReceiptWire = {\n\tschema_id: typeof PROMOTION_RECEIPT_SCHEMA_ID;\n\treceipt_id: Sha256Hex;\n\tpromotion_identity_sha256: Sha256Hex;\n\tverified_at: FixedUtcTimestamp;\n\trequest_id: LowercaseUuid;\n\tidempotency_key: Sha256Hex;\n\tsource: \"external_backfill\";\n\tcapture_origin: \"vendor_historical_backfill\";\n\tsource_mode: \"vendor_historical_backfill_v1\";\n\tprovider: string;\n\tadapter_version: string;\n\teffective_policies: {\n\t\tcapability_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tresource_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tadapter_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tacquisition_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t};\n\tcapture_bundle_id: Sha256Hex;\n\tscope: CanonicalScopeWire;\n\twindow: { start_at: FixedUtcTimestamp; end_at: FixedUtcTimestamp };\n\tdepth: number;\n\tconstruction_mode:\n\t\t| \"sampled_top_n_snapshot\"\n\t\t| \"exact_l2_reconstruction\"\n\t\t| \"policy_neutral_top_n_state_change_tape/v1\";\n\tcanonical_schema: { schema_id: string; schema_sha256: Sha256Hex };\n\tcoverage_policy: CoveragePolicyWire;\n\tselection_sha256: Sha256Hex;\n\tvendor_semantic_digest: Sha256Hex;\n\tcanonical_semantic_digest: Sha256Hex;\n\tprefix_digest: Sha256Hex;\n\tsuffix_digest: Sha256Hex;\n\tseam_verified: true;\n\tcoverage_verified: true;\n\tdataset_objects: Array<{\n\t\tidentity: string;\n\t\tchecksum: Sha256Hex;\n\t\tbytes: number;\n\t\trows: number;\n\t}>;\n};\n\nexport const FINAL_BACKFILL_STATUSES = [\n\t\"request_invalid\",\n\t\"archive_preflight_failed\",\n\t\"already_covered\",\n\t\"promoted\",\n\t\"capability_unsupported\",\n\t\"credentials_missing\",\n\t\"vendor_fetch_failed\",\n\t\"archive_ingest_failed\",\n\t\"promotion_verification_failed\",\n] as const;\n\nexport type FinalBackfillStatus = (typeof FINAL_BACKFILL_STATUSES)[number];\n\nexport type BackfillOutcomeWire = {\n\tstatus: FinalBackfillStatus;\n\treason_code: string;\n\treason_subcode: string | null;\n\trequest_id: LowercaseUuid | null;\n\tidempotency_key: Sha256Hex | null;\n\ttarget: { environment: string; cluster: string } | null;\n\tselection: ArchiveSelectionWire | null;\n\treceipt: PromotionReceiptWire | null;\n\tdiagnostics: Record<string, string | number | boolean>;\n};\n\ntype Codec<T> = {\n\tdecode(value: unknown): T;\n\tis(value: unknown): value is T;\n};\n\nexport class BackfillRequestValidationError extends Error {\n\tconstructor(\n\t\treadonly reasonSubcode: string,\n\t\tmessage: string,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"BackfillRequestValidationError\";\n\t}\n}\n\nfunction describeAjvErrors(errors: ErrorObject[] | null | undefined): string {\n\treturn (errors ?? [])\n\t\t.map(\n\t\t\t(error) =>\n\t\t\t\t`${error.instancePath || \"/\"} ${error.message ?? \"is invalid\"}`,\n\t\t)\n\t\t.join(\"; \");\n}\n\nfunction codec<T>(\n\tvalidate: ValidateFunction,\n\tsemantic?: (document: T) => void,\n): Codec<T> {\n\treturn {\n\t\tdecode(value: unknown): T {\n\t\t\tif (!validate(value)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`JSON Schema validation failed: ${describeAjvErrors(validate.errors)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tsemantic?.(value as T);\n\t\t\treturn value as T;\n\t\t},\n\t\tis(value: unknown): value is T {\n\t\t\tif (!validate(value)) return false;\n\t\t\ttry {\n\t\t\t\tsemantic?.(value as T);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t};\n}\n\nfunction fixedTimestampMs(value: string, field: string): number {\n\tconst parsed = Date.parse(value);\n\tif (\n\t\t!Number.isSafeInteger(parsed) ||\n\t\tnew Date(parsed).toISOString() !== value\n\t) {\n\t\tthrow new Error(`${field} is not a fixed UTC RFC3339 timestamp`);\n\t}\n\treturn parsed;\n}\n\nfunction assertIncreasingInterval(\n\tinterval: { start_at: string; end_at: string },\n\tfield: string,\n): void {\n\tif (\n\t\tfixedTimestampMs(interval.end_at, `${field}.end_at`) <=\n\t\tfixedTimestampMs(interval.start_at, `${field}.start_at`)\n\t) {\n\t\tthrow new Error(`${field} must be an increasing half-open interval`);\n\t}\n}\n\nconst ajv = new Ajv2020({ allErrors: true, strict: true });\najv.addSchema(archiveSelectionSchemaJson);\najv.addSchema(promotionReceiptSchemaJson);\nconst validateRequiredClock = ajv.compile(requiredClockSchemaJson);\nconst validateArchiveSelection = ajv.getSchema(ARCHIVE_SELECTION_SCHEMA_ID);\nconst validatePromotionReceipt = ajv.getSchema(PROMOTION_RECEIPT_SCHEMA_ID);\nconst validateBackfillRequest = ajv.compile(requestSchemaJson);\nif (!validateArchiveSelection || !validatePromotionReceipt) {\n\tthrow new Error(\"Backfill referenced schemas were not registered\");\n}\n\nexport const requiredClockCodec = codec<RequiredClockWire>(\n\tvalidateRequiredClock,\n\t(clock) => {\n\t\tassertDocumentSha256(clock, \"clock_sha256\");\n\t\tlet previous = -1;\n\t\tconst targetIds = new Set<string>();\n\t\tfor (const [index, target] of clock.targets.entries()) {\n\t\t\tconst at = fixedTimestampMs(\n\t\t\t\ttarget.target_at,\n\t\t\t\t`targets[${index}].target_at`,\n\t\t\t);\n\t\t\tif (at <= previous)\n\t\t\t\tthrow new Error(\"required clock targets must be strictly increasing\");\n\t\t\tif (targetIds.has(target.target_id))\n\t\t\t\tthrow new Error(\"required clock target IDs must be unique\");\n\t\t\ttargetIds.add(target.target_id);\n\t\t\tprevious = at;\n\t\t}\n\t},\n);\n\nexport const archiveSelectionCodec = codec<ArchiveSelectionWire>(\n\tvalidateArchiveSelection,\n\t(selection) => {\n\t\tassertDocumentSha256(selection, \"selection_sha256\");\n\t\tselection.requested_intervals.forEach((interval, index) => {\n\t\t\tassertIncreasingInterval(interval, `requested_intervals[${index}]`);\n\t\t});\n\t\tselection.selected_intervals.forEach((interval, index) => {\n\t\t\tassertIncreasingInterval(interval, `selected_intervals[${index}]`);\n\t\t});\n\t\tselection.bundles.forEach((bundle, index) => {\n\t\t\tassertIncreasingInterval(bundle.interval, `bundles[${index}].interval`);\n\t\t});\n\t\tif (\n\t\t\tselection.coverage_class === \"missing\" &&\n\t\t\tselection.selected_intervals.length !== 0\n\t\t) {\n\t\t\tthrow new Error(\"missing selection cannot contain selected intervals\");\n\t\t}\n\t},\n);\n\nfunction promotionSemanticFields(\n\treceipt: PromotionReceiptWire,\n): Record<string, unknown> {\n\treturn Object.fromEntries(\n\t\tObject.entries(receipt).filter(\n\t\t\t([key]) =>\n\t\t\t\tkey !== \"receipt_id\" &&\n\t\t\t\tkey !== \"promotion_identity_sha256\" &&\n\t\t\t\tkey !== \"verified_at\",\n\t\t),\n\t);\n}\n\nexport function promotionIdentitySha256(\n\treceipt: Omit<\n\t\tPromotionReceiptWire,\n\t\t\"receipt_id\" | \"promotion_identity_sha256\"\n\t> &\n\t\tPartial<\n\t\t\tPick<PromotionReceiptWire, \"receipt_id\" | \"promotion_identity_sha256\">\n\t\t>,\n): string {\n\treturn jcsSha256(promotionSemanticFields(receipt as PromotionReceiptWire));\n}\n\nexport const promotionReceiptCodec = codec<PromotionReceiptWire>(\n\tvalidatePromotionReceipt,\n\t(receipt) => {\n\t\tassertIncreasingInterval(receipt.window, \"window\");\n\t\tif (\n\t\t\tpromotionIdentitySha256(receipt) !== receipt.promotion_identity_sha256\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"promotion_identity_sha256 does not match semantic receipt content\",\n\t\t\t);\n\t\t}\n\t\tassertDocumentSha256(receipt, \"receipt_id\");\n\t},\n);\n\nfunction wireIdempotencyBusinessFields(\n\trequest: Omit<BackfillRequestWire, \"idempotency_key\"> & {\n\t\tidempotency_key?: string;\n\t},\n) {\n\treturn {\n\t\tscope: request.scope,\n\t\twindow: request.window,\n\t\tdepth: request.depth,\n\t\tconstruction_mode: request.construction_mode,\n\t\trequired_clock_sha256: request.required_clock.clock_sha256,\n\t\tcoverage_policy: request.coverage_policy,\n\t\tsource_policy: request.source_policy,\n\t\texpected_canonical_schema: request.expected_canonical_schema,\n\t\ttarget: request.target,\n\t};\n}\n\nexport const backfillRequestCodec = {\n\tdecode(value: unknown): { wire: BackfillRequestWire } {\n\t\tif (!validateBackfillRequest(value)) {\n\t\t\tthrow new Error(\n\t\t\t\t`JSON Schema validation failed: ${describeAjvErrors(validateBackfillRequest.errors)}`,\n\t\t\t);\n\t\t}\n\t\tconst request = value as BackfillRequestWire;\n\t\tarchiveSelectionCodec.decode(request.initial_selection);\n\t\tassertIncreasingInterval(request.window, \"window\");\n\t\tif (request.idempotency_key !== createBackfillIdempotencyKey(request)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"idempotency_key does not match canonical business fields\",\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\trequest.product_pins.capability_policy.policy_id !==\n\t\t\t\tCAPABILITY_POLICY.policy_id ||\n\t\t\trequest.product_pins.capability_policy.policy_sha256 !==\n\t\t\t\tCAPABILITY_POLICY.policy_sha256 ||\n\t\t\trequest.product_pins.resource_policy.policy_id !==\n\t\t\t\tRESOURCE_POLICY.policy_id ||\n\t\t\trequest.product_pins.resource_policy.policy_sha256 !==\n\t\t\t\tRESOURCE_POLICY.policy_sha256\n\t\t) {\n\t\t\tthrow new BackfillRequestValidationError(\n\t\t\t\t\"current_policy_tuple_required\",\n\t\t\t\t\"request policy pins must match the exact capability-v3/resource-v2 tuple\",\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\trequest.required_clock.clock_id !==\n\t\t\t\trequest.initial_selection.required_clock.clock_id ||\n\t\t\trequest.required_clock.clock_sha256 !==\n\t\t\t\trequest.initial_selection.required_clock.clock_sha256 ||\n\t\t\trequest.required_clock.event_count !==\n\t\t\t\trequest.initial_selection.required_clock.event_count\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"initial selection required clock reference does not match request\",\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tjcsSha256(request.scope) !== jcsSha256(request.initial_selection.scope)\n\t\t) {\n\t\t\tthrow new Error(\"initial selection scope does not match request\");\n\t\t}\n\t\tif (\n\t\t\tjcsSha256(request.coverage_policy) !==\n\t\t\tjcsSha256(request.initial_selection.coverage_policy)\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"initial selection coverage policy does not match request\",\n\t\t\t);\n\t\t}\n\t\tif (request.source_policy !== request.initial_selection.source_policy) {\n\t\t\tthrow new Error(\"initial selection source policy does not match request\");\n\t\t}\n\t\treturn { wire: request };\n\t},\n\tis(value: unknown): value is BackfillRequestWire {\n\t\ttry {\n\t\t\tthis.decode(value);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n};\n\nexport function finalizeRequiredClock(\n\tclock: Omit<RequiredClockWire, \"clock_sha256\">,\n): RequiredClockWire {\n\treturn requiredClockCodec.decode({\n\t\t...clock,\n\t\tclock_sha256: documentSha256(clock, \"clock_sha256\"),\n\t});\n}\n\nexport function finalizeArchiveSelection(\n\tselection: Omit<ArchiveSelectionWire, \"selection_sha256\">,\n): ArchiveSelectionWire {\n\treturn archiveSelectionCodec.decode({\n\t\t...selection,\n\t\tselection_sha256: documentSha256(selection, \"selection_sha256\"),\n\t});\n}\n\nexport const BACKFILL_REQUEST_SCHEMA_VERSION =\n\t\"market-data-vendor-backfill-request/v1\" as const;\nexport const BACKFILL_PROMOTION_SCHEMA_VERSION =\n\t\"market-data-vendor-backfill-promotion-receipt/v1\" as const;\nexport const EXTERNAL_BACKFILL_SOURCE = \"external_backfill\" as const;\nexport const HISTORICAL_VENDOR_SOURCE_MODE =\n\t\"vendor_historical_backfill_v1\" as const;\nexport const VENDOR_DATASET_RAW_CAPTURE_SCOPE =\n\t\"vendor_normalized_dataset_file\" as const;\n\nconst nonEmpty = z.string().trim().min(1);\nconst sha256 = z.string().regex(/^[a-f0-9]{64}$/);\nconst timestampMs = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);\n\nexport const backfillRequestSchema = z\n\t.object({\n\t\tschemaVersion: z.literal(BACKFILL_REQUEST_SCHEMA_VERSION),\n\t\trequestId: nonEmpty,\n\t\tidempotencyKey: sha256,\n\t\tproviderPolicy: z\n\t\t\t.object({\n\t\t\t\tprovider: z.literal(\"cryptohftdata\"),\n\t\t\t\tallowedAdapterVersions: z.array(nonEmpty).min(1).max(16),\n\t\t\t})\n\t\t\t.strict(),\n\t\tscope: z\n\t\t\t.object({\n\t\t\t\texchange: nonEmpty,\n\t\t\t\ttradingPair: nonEmpty,\n\t\t\t\tsourceSymbol: nonEmpty,\n\t\t\t\tmarketType: z.enum([\"spot\", \"swap\", \"future\"]),\n\t\t\t\tfeed: z.literal(\"ORDERBOOK\"),\n\t\t\t})\n\t\t\t.strict(),\n\t\twindow: z\n\t\t\t.object({ startTimeMs: timestampMs, endTimeMs: timestampMs })\n\t\t\t.strict()\n\t\t\t.refine(({ startTimeMs, endTimeMs }) => endTimeMs > startTimeMs, {\n\t\t\t\tmessage: \"endTimeMs must be greater than startTimeMs\",\n\t\t\t}),\n\t\tdepth: z.number().int().min(1).max(500),\n\t\tconstructionMode: z.enum([\n\t\t\t\"sampled_top_n_snapshot\",\n\t\t\t\"exact_l2_reconstruction\",\n\t\t]),\n\t\trequiredClockTargetsMs: z.array(timestampMs).min(1).max(100_000),\n\t\tmaxPriorAsOfLagMs: z.number().int().nonnegative().max(86_400_000),\n\t\tsourcePolicy: z.enum([\"authoritative_window\", \"fill_gaps\"]),\n\t\tbudgets: z\n\t\t\t.object({\n\t\t\t\tmaxFiles: z.number().int().min(1).max(10_000),\n\t\t\t\tmaxBytes: z\n\t\t\t\t\t.number()\n\t\t\t\t\t.int()\n\t\t\t\t\t.min(1)\n\t\t\t\t\t.max(100 * 1024 * 1024 * 1024),\n\t\t\t\tmaxRows: z.number().int().min(1).max(1_000_000_000),\n\t\t\t\tmaxDurationMs: z\n\t\t\t\t\t.number()\n\t\t\t\t\t.int()\n\t\t\t\t\t.min(1)\n\t\t\t\t\t.max(24 * 60 * 60 * 1_000),\n\t\t\t\tmaxBoundaryLookbackMs: z\n\t\t\t\t\t.number()\n\t\t\t\t\t.int()\n\t\t\t\t\t.nonnegative()\n\t\t\t\t\t.max(7 * 24 * 60 * 60 * 1_000),\n\t\t\t})\n\t\t\t.strict(),\n\t\texpectedProduct: z\n\t\t\t.object({\n\t\t\t\tpackageName: z.literal(\"@usherlabs/cex-broker\"),\n\t\t\t\tpackageVersion: nonEmpty.optional(),\n\t\t\t\tcanonicalSchemaVersion: nonEmpty,\n\t\t\t\tchecksumAlgorithm: z.literal(\"sha256-canonical-json-v1\"),\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict()\n\t.superRefine((request, context) => {\n\t\tconst targets = request.requiredClockTargetsMs;\n\t\tfor (let index = 0; index < targets.length; index += 1) {\n\t\t\tconst target = targets[index] as number;\n\t\t\tif (\n\t\t\t\ttarget < request.window.startTimeMs ||\n\t\t\t\ttarget >= request.window.endTimeMs\n\t\t\t) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\tpath: [\"requiredClockTargetsMs\", index],\n\t\t\t\t\tmessage: \"clock target must be inside the half-open request window\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (index > 0 && target <= (targets[index - 1] as number)) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\tpath: [\"requiredClockTargetsMs\", index],\n\t\t\t\t\tmessage: \"clock targets must be strictly increasing\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\ntype ProvisionalBackfillDomainRequest = z.infer<typeof backfillRequestSchema>;\n\nexport type MarketDataVendorBackfillRequest = Omit<\n\tProvisionalBackfillDomainRequest,\n\t\"constructionMode\"\n> & {\n\tconstructionMode:\n\t\t| ProvisionalBackfillDomainRequest[\"constructionMode\"]\n\t\t| \"policy_neutral_top_n_state_change_tape/v1\";\n\tattemptId?: string;\n\ttarget?: { environment: string; cluster: string };\n\tcoveragePolicy?: CoveragePolicyWire;\n\trequiredClock?: RequiredClockWire;\n\tinitialSelection?: ArchiveSelectionWire;\n\texpectedCanonicalSchema?: BackfillRequestWire[\"expected_canonical_schema\"];\n\tproductPins?: BackfillRequestWire[\"product_pins\"];\n\tproductionAuthorizationId?: string;\n\twire?: BackfillRequestWire;\n};\n\nexport function decodeBackfillRunDocuments(input: {\n\trequest: unknown;\n\trequiredClock: unknown;\n}): MarketDataVendorBackfillRequest {\n\tconst { wire } = backfillRequestCodec.decode(input.request);\n\tconst requiredClock = requiredClockCodec.decode(input.requiredClock);\n\tif (\n\t\trequiredClock.clock_id !== wire.required_clock.clock_id ||\n\t\trequiredClock.clock_sha256 !== wire.required_clock.clock_sha256 ||\n\t\trequiredClock.targets.length !== wire.required_clock.event_count\n\t) {\n\t\tthrow new Error(\"required clock sidecar does not match request reference\");\n\t}\n\tconst startTimeMs = fixedTimestampMs(wire.window.start_at, \"window.start_at\");\n\tconst endTimeMs = fixedTimestampMs(wire.window.end_at, \"window.end_at\");\n\tconst requiredClockTargetsMs = requiredClock.targets.map((target, index) => {\n\t\tconst targetTimeMs = fixedTimestampMs(\n\t\t\ttarget.target_at,\n\t\t\t`required_clock.targets[${index}].target_at`,\n\t\t);\n\t\tif (targetTimeMs < startTimeMs || targetTimeMs >= endTimeMs) {\n\t\t\tthrow new Error(\"required clock target is outside request window\");\n\t\t}\n\t\treturn targetTimeMs;\n\t});\n\tconst capabilityProfile = CAPABILITY_POLICY.profiles.find(\n\t\t(profile) =>\n\t\t\tprofile.exchange === wire.scope.exchange &&\n\t\t\tprofile.market_type === wire.scope.market_type &&\n\t\t\tprofile.feed === wire.scope.feed &&\n\t\t\tprofile.canonical_trading_pair === wire.scope.trading_pair,\n\t);\n\treturn {\n\t\tschemaVersion: BACKFILL_REQUEST_SCHEMA_VERSION,\n\t\trequestId: wire.request_id,\n\t\tidempotencyKey: wire.idempotency_key,\n\t\tproviderPolicy: {\n\t\t\tprovider: \"cryptohftdata\",\n\t\t\tallowedAdapterVersions: [\n\t\t\t\tCAPABILITY_POLICY.adapter_policy.adapter_version,\n\t\t\t],\n\t\t},\n\t\tscope: {\n\t\t\texchange: wire.scope.exchange,\n\t\t\ttradingPair: wire.scope.trading_pair,\n\t\t\tsourceSymbol:\n\t\t\t\tcapabilityProfile?.resolved_symbol ?? wire.scope.trading_pair,\n\t\t\tmarketType: wire.scope.market_type,\n\t\t\tfeed: wire.scope.feed,\n\t\t},\n\t\twindow: { startTimeMs, endTimeMs },\n\t\tdepth: wire.depth,\n\t\tconstructionMode: wire.construction_mode,\n\t\trequiredClockTargetsMs,\n\t\tmaxPriorAsOfLagMs: wire.coverage_policy.max_asof_lag_ms,\n\t\tsourcePolicy: wire.source_policy,\n\t\tbudgets: {\n\t\t\tmaxFiles: RESOURCE_POLICY.limits.max_files,\n\t\t\tmaxBytes: RESOURCE_POLICY.limits.max_bytes,\n\t\t\tmaxRows: RESOURCE_POLICY.limits.max_rows,\n\t\t\tmaxDurationMs: RESOURCE_POLICY.limits.max_duration_ms,\n\t\t\tmaxBoundaryLookbackMs: Math.min(\n\t\t\t\tRESOURCE_POLICY.limits.max_boundary_lookback_ms,\n\t\t\t\tCAPABILITY_POLICY.acquisition_policy.initialization_lookback_ms,\n\t\t\t),\n\t\t},\n\t\texpectedProduct: {\n\t\t\tpackageName: \"@usherlabs/cex-broker\",\n\t\t\tcanonicalSchemaVersion: \"1.0.0\",\n\t\t\tchecksumAlgorithm: \"sha256-canonical-json-v1\",\n\t\t},\n\t\tattemptId: wire.attempt_id,\n\t\ttarget: wire.target,\n\t\tcoveragePolicy: wire.coverage_policy,\n\t\trequiredClock,\n\t\tinitialSelection: wire.initial_selection,\n\t\texpectedCanonicalSchema: wire.expected_canonical_schema,\n\t\tproductPins: wire.product_pins,\n\t\tproductionAuthorizationId: wire.production_authorization_id,\n\t\twire,\n\t};\n}\n\ntype IdempotencyBusinessFields = Omit<\n\tMarketDataVendorBackfillRequest,\n\t\"requestId\" | \"idempotencyKey\"\n>;\n\nexport function backfillBusinessFields(\n\trequest: Omit<MarketDataVendorBackfillRequest, \"idempotencyKey\"> & {\n\t\tidempotencyKey?: string;\n\t},\n): IdempotencyBusinessFields {\n\tconst {\n\t\trequestId: _requestId,\n\t\tidempotencyKey: _idempotencyKey,\n\t\t...business\n\t} = request;\n\treturn business;\n}\n\nexport function createBackfillIdempotencyKey(\n\trequest: Omit<MarketDataVendorBackfillRequest, \"idempotencyKey\"> & {\n\t\tidempotencyKey?: string;\n\t},\n): string;\nexport function createBackfillIdempotencyKey(\n\trequest: Omit<BackfillRequestWire, \"idempotency_key\"> & {\n\t\tidempotency_key?: string;\n\t},\n): string;\nexport function createBackfillIdempotencyKey(\n\trequest: Record<string, unknown>,\n): string;\nexport function createBackfillIdempotencyKey(request: unknown): string {\n\tif (!request || typeof request !== \"object\") {\n\t\tthrow new TypeError(\"backfill request must be an object\");\n\t}\n\tif (\"schema_id\" in request) {\n\t\treturn jcsSha256(\n\t\t\twireIdempotencyBusinessFields(\n\t\t\t\trequest as Omit<BackfillRequestWire, \"idempotency_key\"> & {\n\t\t\t\t\tidempotency_key?: string;\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t}\n\treturn sha256Canonical(\n\t\tbackfillBusinessFields(\n\t\t\trequest as Omit<MarketDataVendorBackfillRequest, \"idempotencyKey\"> & {\n\t\t\t\tidempotencyKey?: string;\n\t\t\t},\n\t\t),\n\t);\n}\n\nexport function parseBackfillRequest(\n\tvalue: unknown,\n): MarketDataVendorBackfillRequest {\n\tconst request = backfillRequestSchema.parse(value);\n\tif (createBackfillIdempotencyKey(request) !== request.idempotencyKey) {\n\t\tthrow new Error(\"idempotencyKey does not match canonical business fields\");\n\t}\n\treturn request;\n}\n\nexport const BACKFILL_STATUSES = [\n\t\"already_covered\",\n\t\"promoted\",\n\t\"capability_unsupported\",\n\t\"credentials_missing\",\n\t\"vendor_fetch_failed\",\n\t\"archive_ingest_failed\",\n\t\"promotion_verification_failed\",\n\t\"post_backfill_coverage_insufficient\",\n] as const;\n\nexport type BackfillStatus = (typeof BACKFILL_STATUSES)[number];\n\nexport type ProviderCapability = {\n\tprovider: \"cryptohftdata\";\n\tadapterVersion: string;\n\tproviderExchangeId: string;\n\tresolvedSymbol: string;\n};\n\nexport type ProviderObjectEvidence = {\n\tidentity: string;\n\tchecksum: string;\n\tbytes: number;\n\trows: number;\n};\n\nconst providerObjectEvidenceSchema = z\n\t.object({\n\t\tidentity: nonEmpty,\n\t\tchecksum: sha256,\n\t\tbytes: z.number().int().nonnegative(),\n\t\trows: z.number().int().nonnegative(),\n\t})\n\t.strict();\n\nexport type BackfillArchiveRow = {\n\ttable:\n\t\t| \"market_data.cex_order_book_levels\"\n\t\t| \"market_data.cex_order_book_depth_summary\"\n\t\t| \"market_data.cex_order_book_capture_promotions\"\n\t\t| \"market_data.cex_order_book_capture_qualifications\"\n\t\t| \"market_data.cex_order_book_archive_selections\";\n\trow: Record<string, unknown>;\n};\n\nexport type ForwarderBatch = {\n\tsource: typeof EXTERNAL_BACKFILL_SOURCE;\n\tdeployment_id: string;\n\tbatch_id: string;\n\trows: BackfillArchiveRow[];\n};\n\nexport type PromotionReceipt = {\n\tschemaVersion: typeof BACKFILL_PROMOTION_SCHEMA_VERSION;\n\treceiptId: string;\n\trequestId: string;\n\tidempotencyKey: string;\n\tstatus: \"passing\";\n\tsource: typeof EXTERNAL_BACKFILL_SOURCE;\n\tprovider: \"cryptohftdata\";\n\tadapterVersion: string;\n\tcaptureBundleId: string;\n\texchange: string;\n\ttradingPair: string;\n\tmarketType: \"spot\" | \"swap\" | \"future\";\n\tfeed: \"ORDERBOOK\";\n\tstartTimeMs: number;\n\tendTimeMs: number;\n\tdepth: number;\n\tconstructionMode:\n\t\t| \"sampled_top_n_snapshot\"\n\t\t| \"exact_l2_reconstruction\"\n\t\t| \"policy_neutral_top_n_state_change_tape/v1\";\n\tcanonicalSchemaVersion: string;\n\tchecksumAlgorithm: \"sha256-canonical-json-v1\";\n\tvendorSemanticDigest: string;\n\tcanonicalSemanticDigest: string;\n\tprefixDigest: string;\n\tsuffixDigest: string;\n\tseamVerified: true;\n\tcoverageVerified: true;\n\tdatasetObjects: ProviderObjectEvidence[];\n\tverificationTimeMs: number;\n};\n\nexport const promotionReceiptSchema: z.ZodType<PromotionReceipt> = z\n\t.object({\n\t\tschemaVersion: z.literal(BACKFILL_PROMOTION_SCHEMA_VERSION),\n\t\treceiptId: sha256,\n\t\trequestId: nonEmpty,\n\t\tidempotencyKey: sha256,\n\t\tstatus: z.literal(\"passing\"),\n\t\tsource: z.literal(EXTERNAL_BACKFILL_SOURCE),\n\t\tprovider: z.literal(\"cryptohftdata\"),\n\t\tadapterVersion: nonEmpty,\n\t\tcaptureBundleId: sha256,\n\t\texchange: nonEmpty,\n\t\ttradingPair: nonEmpty,\n\t\tmarketType: z.enum([\"spot\", \"swap\", \"future\"]),\n\t\tfeed: z.literal(\"ORDERBOOK\"),\n\t\tstartTimeMs: timestampMs,\n\t\tendTimeMs: timestampMs,\n\t\tdepth: z.number().int().min(1).max(500),\n\t\tconstructionMode: z.enum([\n\t\t\t\"sampled_top_n_snapshot\",\n\t\t\t\"exact_l2_reconstruction\",\n\t\t\t\"policy_neutral_top_n_state_change_tape/v1\",\n\t\t]),\n\t\tcanonicalSchemaVersion: nonEmpty,\n\t\tchecksumAlgorithm: z.literal(\"sha256-canonical-json-v1\"),\n\t\tvendorSemanticDigest: sha256,\n\t\tcanonicalSemanticDigest: sha256,\n\t\tprefixDigest: sha256,\n\t\tsuffixDigest: sha256,\n\t\tseamVerified: z.literal(true),\n\t\tcoverageVerified: z.literal(true),\n\t\tdatasetObjects: z.array(providerObjectEvidenceSchema).min(1).max(10_000),\n\t\tverificationTimeMs: timestampMs,\n\t})\n\t.strict()\n\t.refine(({ endTimeMs, startTimeMs }) => endTimeMs > startTimeMs, {\n\t\tmessage: \"promotion window must be increasing\",\n\t});\n",
|
|
131
132
|
"import { createHash } from \"node:crypto\";\nimport { redactStreamPayload } from \"../broker-execution-archive/redact\";\nimport type {\n\tMarketCaptureContext,\n\tRawCapture,\n\tRawCaptureScope,\n} from \"./types\";\n\nexport const MARKET_CAPTURE_SCHEMA_VERSION = \"1.0.0\" as const;\nexport const CHECKSUM_ALGORITHM = \"sha256-canonical-json-v1\" as const;\n\nexport const ARCHIVE_SOURCES = [\"broker_read\", \"broker_write\"] as const;\nexport const MARKET_ARCHIVE_SOURCES = [\n\t...ARCHIVE_SOURCES,\n\t\"external_backfill\",\n] as const;\nexport const CAPTURE_FEEDS = [\n\t\"ORDERBOOK\",\n\t\"TICKER\",\n\t\"TRADES\",\n\t\"OHLCV\",\n] as const;\nexport const SOURCE_MODES = [\n\t\"broker_live_stream_v1\",\n\t\"broker_live_sampling_v1\",\n\t\"broker_current_snapshot_v1\",\n\t\"broker_bootstrap_fetch_v1\",\n\t\"external_ccxt_fallback_v1\",\n\t\"external_hummingbot_fallback_v1\",\n\t\"legacy_migration_v1\",\n\t\"historical_vendor_orderbook_v1\",\n\t\"vendor_historical_backfill_v1\",\n] as const;\nexport const CONSTRUCTION_MODES = [\n\t\"sampled_top_n_snapshot\",\n\t\"exact_l2_reconstruction\",\n] as const;\nexport const GAP_POLICIES = [\n\t\"record_gap\",\n\t\"ohlcv_catch_up\",\n\t\"fail_fast\",\n] as const;\nexport const RAW_CAPTURE_SCOPES = [\n\t\"ccxt_normalized_object\",\n\t\"broker_visible_payload\",\n\t\"exchange_wire_frame\",\n\t\"vendor_normalized_dataset_file\",\n] as const;\n\nexport type CaptureFeed = (typeof CAPTURE_FEEDS)[number];\nexport type SourceMode = (typeof SOURCE_MODES)[number];\nexport type ConstructionMode = (typeof CONSTRUCTION_MODES)[number];\nexport type GapPolicy = (typeof GAP_POLICIES)[number];\n\nconst CHECKSUM_FIELDS = new Set([\n\t\"normalized_row_checksum\",\n\t\"raw_checksum\",\n\t\"checksum\",\n]);\n\n/**\n * Renders a finite JavaScript number as a plain decimal. Exponent expansion and\n * negative-zero normalization are part of checksum algorithm v1 and are mirrored\n * by the Python fixture verifier.\n */\nexport function canonicalDecimal(value: number): string {\n\tif (!Number.isFinite(value)) {\n\t\tthrow new Error(\"Canonical numbers must be finite\");\n\t}\n\tif (Object.is(value, -0)) {\n\t\treturn \"0\";\n\t}\n\tconst rendered = String(value).toLowerCase();\n\tif (!rendered.includes(\"e\")) {\n\t\treturn rendered;\n\t}\n\tconst [coefficient = \"0\", exponentText = \"0\"] = rendered.split(\"e\");\n\tconst exponent = Number.parseInt(exponentText, 10);\n\tconst negative = coefficient.startsWith(\"-\");\n\tconst unsigned = negative ? coefficient.slice(1) : coefficient;\n\tconst [integer = \"0\", fraction = \"\"] = unsigned.split(\".\");\n\tconst digits = `${integer}${fraction}`;\n\tconst decimalIndex = integer.length + exponent;\n\tlet result: string;\n\tif (decimalIndex <= 0) {\n\t\tresult = `0.${\"0\".repeat(-decimalIndex)}${digits}`;\n\t} else if (decimalIndex >= digits.length) {\n\t\tresult = `${digits}${\"0\".repeat(decimalIndex - digits.length)}`;\n\t} else {\n\t\tresult = `${digits.slice(0, decimalIndex)}.${digits.slice(decimalIndex)}`;\n\t}\n\treturn negative ? `-${result}` : result;\n}\n\ntype CanonicalSink = (chunk: string) => void;\n\nfunction writeCanonical(\n\tvalue: unknown,\n\tstack: Set<object>,\n\tsink: CanonicalSink,\n\tomitChecksums: boolean,\n): void {\n\tif (value === null) {\n\t\tsink(\"null\");\n\t\treturn;\n\t}\n\tif (typeof value === \"string\") {\n\t\tsink(JSON.stringify(value));\n\t\treturn;\n\t}\n\tif (typeof value === \"boolean\") {\n\t\tsink(value ? \"true\" : \"false\");\n\t\treturn;\n\t}\n\tif (typeof value === \"number\") {\n\t\tsink(canonicalDecimal(value));\n\t\treturn;\n\t}\n\tif (typeof value === \"bigint\") {\n\t\tsink(value.toString(10));\n\t\treturn;\n\t}\n\tif (value instanceof Date) {\n\t\tif (Number.isNaN(value.getTime())) {\n\t\t\tthrow new Error(\"Canonical timestamps must be valid\");\n\t\t}\n\t\tsink(value.getTime().toString(10));\n\t\treturn;\n\t}\n\tif (Array.isArray(value)) {\n\t\tif (stack.has(value)) throw new Error(\"Canonical values must be acyclic\");\n\t\tstack.add(value);\n\t\tsink(\"[\");\n\t\tfor (let index = 0; index < value.length; index += 1) {\n\t\t\tif (index > 0) sink(\",\");\n\t\t\tconst entry = value[index];\n\t\t\tif (entry === undefined) sink(\"null\");\n\t\t\telse writeCanonical(entry, stack, sink, omitChecksums);\n\t\t}\n\t\tsink(\"]\");\n\t\tstack.delete(value);\n\t\treturn;\n\t}\n\tif (typeof value === \"object\") {\n\t\tif (stack.has(value)) throw new Error(\"Canonical values must be acyclic\");\n\t\tstack.add(value);\n\t\tconst entries = Object.entries(value as Record<string, unknown>)\n\t\t\t.filter(\n\t\t\t\t([key, entry]) =>\n\t\t\t\t\tentry !== undefined && (!omitChecksums || !CHECKSUM_FIELDS.has(key)),\n\t\t\t)\n\t\t\t.sort(([left], [right]) => left.localeCompare(right));\n\t\tsink(\"{\");\n\t\tfor (let index = 0; index < entries.length; index += 1) {\n\t\t\tif (index > 0) sink(\",\");\n\t\t\tconst [key, entry] = entries[index] as [string, unknown];\n\t\t\tsink(JSON.stringify(key));\n\t\t\tsink(\":\");\n\t\t\twriteCanonical(entry, stack, sink, omitChecksums);\n\t\t}\n\t\tsink(\"}\");\n\t\tstack.delete(value);\n\t\treturn;\n\t}\n\tthrow new Error(`Unsupported canonical value type: ${typeof value}`);\n}\n\nexport function canonicalSerialize(value: unknown): string {\n\tconst chunks: string[] = [];\n\twriteCanonical(value, new Set(), (chunk) => chunks.push(chunk), false);\n\treturn chunks.join(\"\");\n}\n\nexport function sha256Canonical(value: unknown): string {\n\tconst hash = createHash(\"sha256\");\n\tlet pending = \"\";\n\twriteCanonical(\n\t\tvalue,\n\t\tnew Set(),\n\t\t(chunk) => {\n\t\t\tpending += chunk;\n\t\t\tif (pending.length >= 64 * 1024) {\n\t\t\t\thash.update(pending);\n\t\t\t\tpending = \"\";\n\t\t\t}\n\t\t},\n\t\ttrue,\n\t);\n\tif (pending) hash.update(pending);\n\treturn hash.digest(\"hex\");\n}\n\nexport function normalizeTimestampMs(value: unknown, field: string): number {\n\tlet timestamp: number;\n\tif (value instanceof Date) {\n\t\ttimestamp = value.getTime();\n\t} else if (typeof value === \"number\") {\n\t\ttimestamp = value;\n\t} else if (typeof value === \"string\" && /^\\d+$/.test(value.trim())) {\n\t\ttimestamp = Number(value.trim());\n\t} else if (typeof value === \"string\") {\n\t\ttimestamp = Date.parse(value);\n\t} else {\n\t\ttimestamp = Number.NaN;\n\t}\n\tif (!Number.isSafeInteger(timestamp) || timestamp < 0) {\n\t\tthrow new Error(`${field} must be a non-negative millisecond timestamp`);\n\t}\n\treturn timestamp;\n}\n\nfunction assertCaptureContext(context: MarketCaptureContext): void {\n\tif (!(MARKET_ARCHIVE_SOURCES as readonly string[]).includes(context.source)) {\n\t\tthrow new Error(`Unsupported archive source: ${context.source}`);\n\t}\n\tif (!(CAPTURE_FEEDS as readonly string[]).includes(context.feed)) {\n\t\tthrow new Error(`Unsupported capture feed: ${context.feed}`);\n\t}\n\tif (!(SOURCE_MODES as readonly string[]).includes(context.sourceMode)) {\n\t\tthrow new Error(`Unsupported source mode: ${context.sourceMode}`);\n\t}\n\tfor (const [field, value] of [\n\t\t[\"deployment_id\", context.deploymentId],\n\t\t[\"capture_bundle_id\", context.captureBundleId],\n\t\t[\"exchange\", context.exchange],\n\t\t[\"symbol\", context.symbol],\n\t\t[\"provider\", context.provider],\n\t] as const) {\n\t\tif (!value.trim()) throw new Error(`${field} must not be empty`);\n\t}\n}\n\nexport function createRawCapture(\n\tcontext: MarketCaptureContext,\n\tinput: {\n\t\tpayload: unknown;\n\t\teventTimeMs: unknown;\n\t\treceivedTimeMs: unknown;\n\t\tscope: RawCaptureScope;\n\t},\n): RawCapture {\n\tassertCaptureContext(context);\n\tif (!(RAW_CAPTURE_SCOPES as readonly string[]).includes(input.scope)) {\n\t\tthrow new Error(`Unsupported raw capture scope: ${input.scope}`);\n\t}\n\tconst eventTimeMs = normalizeTimestampMs(input.eventTimeMs, \"event_time_ms\");\n\tconst receivedTimeMs = normalizeTimestampMs(\n\t\tinput.receivedTimeMs,\n\t\t\"received_time_ms\",\n\t);\n\tconst redactedPayload = redactStreamPayload(input.payload);\n\tconst rawChecksum = sha256Canonical(redactedPayload);\n\tconst rawCaptureId = sha256Canonical({\n\t\tcapture_bundle_id: context.captureBundleId,\n\t\texchange: context.exchange.trim().toLowerCase(),\n\t\tfeed: context.feed,\n\t\traw_capture_scope: input.scope,\n\t\traw_payload_sha256: rawChecksum,\n\t\tschema_version: context.schemaVersion,\n\t\tsource_mode: context.sourceMode,\n\t\tsource_symbol: context.symbol.trim(),\n\t\tsource_time_ms: eventTimeMs,\n\t});\n\treturn {\n\t\trawCaptureId,\n\t\trawCaptureScope: input.scope,\n\t\trawChecksum,\n\t\tredactedPayload,\n\t\teventTimeMs,\n\t\treceivedTimeMs,\n\t\tchecksumAlgorithm: context.checksumAlgorithm,\n\t};\n}\n\nexport function captureCoreFields(\n\tcontext: MarketCaptureContext,\n\trawCapture: RawCapture,\n): Record<string, unknown> {\n\tassertCaptureContext(context);\n\treturn {\n\t\tsource: context.source,\n\t\tdeployment_id: context.deploymentId,\n\t\tcapture_bundle_id: context.captureBundleId,\n\t\texchange: context.exchange.trim().toLowerCase(),\n\t\tsymbol: context.symbol.trim(),\n\t\ttrading_pair:\n\t\t\tcontext.tradingPair?.trim() || context.symbol.trim().replace(\"/\", \"-\"),\n\t\tsource_symbol: context.sourceSymbol?.trim() || context.symbol.trim(),\n\t\tasset_type: context.assetType,\n\t\tfeed: context.feed,\n\t\tprovider: context.provider,\n\t\tsource_mode: context.sourceMode,\n\t\tsource_time_ms: rawCapture.eventTimeMs,\n\t\treceived_time_ms: rawCapture.receivedTimeMs,\n\t\traw_capture_id: rawCapture.rawCaptureId,\n\t\traw_capture_scope: rawCapture.rawCaptureScope,\n\t\tschema_version: context.schemaVersion,\n\t\tchecksum_algorithm: context.checksumAlgorithm,\n\t\traw_checksum: rawCapture.rawChecksum,\n\t\tprovenance_complete: context.provenanceComplete ? 1 : 0,\n\t};\n}\n",
|
|
132
133
|
"import { context, isSpanContextValid, trace } from \"@opentelemetry/api\";\n\n//#region src/index.ts\nfunction openTelemetryPlugin(config = {}) {\n\tconst traceIdField = config.traceIdFieldName || \"trace_id\";\n\tconst spanIdField = config.spanIdFieldName || \"span_id\";\n\tconst traceFlagsField = config.traceFlagsFieldName || \"trace_flags\";\n\tconst addTraceContext = (data) => {\n\t\tconst span = trace.getSpan(context.active());\n\t\tif (span) {\n\t\t\tconst spanContext = span.spanContext();\n\t\t\tif (isSpanContextValid(spanContext)) {\n\t\t\t\tconst fields = {\n\t\t\t\t\t[traceIdField]: spanContext.traceId,\n\t\t\t\t\t[spanIdField]: spanContext.spanId,\n\t\t\t\t\t[traceFlagsField]: `0${spanContext.traceFlags.toString(16)}`\n\t\t\t\t};\n\t\t\t\tif (config.traceFieldName) {\n\t\t\t\t\tconst traceData = { [config.traceFieldName]: fields };\n\t\t\t\t\tif (data) return {\n\t\t\t\t\t\t...data,\n\t\t\t\t\t\t...traceData\n\t\t\t\t\t};\n\t\t\t\t\treturn traceData;\n\t\t\t\t}\n\t\t\t\tif (data) return {\n\t\t\t\t\t...data,\n\t\t\t\t\t...fields\n\t\t\t\t};\n\t\t\t\treturn fields;\n\t\t\t}\n\t\t}\n\t\treturn data || {};\n\t};\n\treturn {\n\t\tid: config.id,\n\t\tdisabled: config.disabled,\n\t\tonBeforeDataOut: ({ data }) => addTraceContext(data)\n\t};\n}\n\n//#endregion\nexport { openTelemetryPlugin };\n//# sourceMappingURL=index.mjs.map",
|
|
133
134
|
"//#region src/common.types.ts\nlet LogLevel = /* @__PURE__ */ function(LogLevel) {\n\tLogLevel[\"info\"] = \"info\";\n\tLogLevel[\"warn\"] = \"warn\";\n\tLogLevel[\"error\"] = \"error\";\n\tLogLevel[\"debug\"] = \"debug\";\n\tLogLevel[\"trace\"] = \"trace\";\n\tLogLevel[\"fatal\"] = \"fatal\";\n\treturn LogLevel;\n}({});\n/**\n* Mapping of log levels to their numeric values.\n*/\nconst LogLevelPriority = {\n\t[LogLevel.trace]: 10,\n\t[LogLevel.debug]: 20,\n\t[LogLevel.info]: 30,\n\t[LogLevel.warn]: 40,\n\t[LogLevel.error]: 50,\n\t[LogLevel.fatal]: 60\n};\n/**\n* Mapping of numeric values to their log level names.\n*/\nconst LogLevelPriorityToNames = {\n\t10: LogLevel.trace,\n\t20: LogLevel.debug,\n\t30: LogLevel.info,\n\t40: LogLevel.warn,\n\t50: LogLevel.error,\n\t60: LogLevel.fatal\n};\n\n//#endregion\n//#region src/lazy.ts\n/**\n* Symbol used to identify lazy values in context and metadata.\n* Can be used to check if a value is a lazy wrapper: `LAZY_SYMBOL in value`.\n*\n* @see {@link https://loglayer.dev/logging-api/lazy-evaluation | Lazy Evaluation Docs}\n*/\nconst LAZY_SYMBOL = Symbol.for(\"loglayer.lazy\");\n/**\n* String constant used as a replacement value when a lazy callback fails during evaluation.\n* Exported so users can programmatically detect lazy evaluation failures in their log output.\n*\n* @see {@link https://loglayer.dev/logging-api/lazy-evaluation#error-handling | Lazy Evaluation Error Handling Docs}\n*/\nconst LAZY_EVAL_ERROR = \"[LazyEvalError]\";\n/**\n* Wraps a callback function to defer its evaluation until log time.\n*\n* The callback will only be invoked if the log level is enabled,\n* avoiding unnecessary computation for disabled log levels.\n*\n* Can be used in both `withContext()` and `withMetadata()` at the root level.\n*\n* When the callback returns a `Promise` (i.e., is an async function), the\n* log method will return `Promise<void>` so TypeScript can track that the\n* operation is asynchronous.\n*\n* Adapted from [LogTape's lazy evaluation](https://logtape.org/manual/lazy).\n*\n* @example\n* ```typescript\n* import { LogLayer, lazy } from \"loglayer\";\n*\n* const log = new LogLayer({ ... });\n*\n* // Dynamic context - evaluated on each log call\n* log.withContext({\n* memoryUsage: lazy(() => process.memoryUsage().heapUsed),\n* });\n*\n* // Dynamic metadata - evaluated only if debug is enabled\n* log.withMetadata({\n* data: lazy(() => JSON.stringify(largeObject)),\n* }).debug(\"Processing complete\");\n* ```\n*\n* @see {@link https://loglayer.dev/logging-api/lazy-evaluation | Lazy Evaluation Docs}\n*/\nfunction lazy(fn) {\n\treturn { [LAZY_SYMBOL]: fn };\n}\n/**\n* Checks if a value is a lazy value created by {@link lazy}.\n* @internal\n*/\nfunction isLazy(value) {\n\treturn value != null && typeof value === \"object\" && LAZY_SYMBOL in value;\n}\n/**\n* Counts the number of lazy values in a record.\n* @internal\n*/\nfunction countLazyValues(obj) {\n\tlet count = 0;\n\tfor (const key of Object.keys(obj)) if (isLazy(obj[key])) count++;\n\treturn count;\n}\n/**\n* Resolves any lazy values in a record at the root level.\n* Returns the original object if no lazy values are found (optimization).\n* If a lazy callback throws, the value is replaced with LAZY_EVAL_ERROR\n* and the error is collected in the result.\n* @internal\n*/\nfunction resolveLazyValues(obj) {\n\tlet hasLazy = false;\n\tfor (const key of Object.keys(obj)) if (isLazy(obj[key])) {\n\t\thasLazy = true;\n\t\tbreak;\n\t}\n\tif (!hasLazy) return {\n\t\tresolved: obj,\n\t\terrors: null\n\t};\n\tconst result = {};\n\tlet errors = null;\n\tfor (const key of Object.keys(obj)) {\n\t\tconst value = obj[key];\n\t\tif (isLazy(value)) try {\n\t\t\tresult[key] = value[LAZY_SYMBOL]();\n\t\t} catch (e) {\n\t\t\tresult[key] = LAZY_EVAL_ERROR;\n\t\t\tif (!errors) errors = [];\n\t\t\terrors.push({\n\t\t\t\tkey,\n\t\t\t\terror: e\n\t\t\t});\n\t\t}\n\t\telse result[key] = value;\n\t}\n\treturn {\n\t\tresolved: result,\n\t\terrors\n\t};\n}\n/**\n* Checks if any values in a record are Promises.\n* @internal\n*/\nfunction hasPromiseValues(obj) {\n\tfor (const key of Object.keys(obj)) if (obj[key] instanceof Promise) return true;\n\treturn false;\n}\n/**\n* Replaces any Promise values in a record with LAZY_EVAL_ERROR.\n* Used to strip async lazy values from context where only sync lazy is supported.\n* Returns the keys that were replaced.\n* @internal\n*/\nfunction replacePromiseValues(obj) {\n\tlet asyncKeys = null;\n\tconst result = {};\n\tfor (const key of Object.keys(obj)) if (obj[key] instanceof Promise) {\n\t\tresult[key] = LAZY_EVAL_ERROR;\n\t\tif (!asyncKeys) asyncKeys = [];\n\t\tasyncKeys.push(key);\n\t} else result[key] = obj[key];\n\tif (!asyncKeys) return {\n\t\tresolved: obj,\n\t\tasyncKeys: null\n\t};\n\treturn {\n\t\tresolved: result,\n\t\tasyncKeys\n\t};\n}\n/**\n* Resolves any Promise values in a record using Promise.allSettled.\n* If a Promise rejects, the value is replaced with LAZY_EVAL_ERROR\n* and the error is collected in the result.\n* @internal\n*/\nasync function resolvePromiseValues(obj) {\n\tconst keys = Object.keys(obj);\n\tconst settled = await Promise.allSettled(keys.map((key) => Promise.resolve(obj[key])));\n\tconst result = {};\n\tlet errors = null;\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst s = settled[i];\n\t\tif (s.status === \"fulfilled\") result[keys[i]] = s.value;\n\t\telse {\n\t\t\tresult[keys[i]] = LAZY_EVAL_ERROR;\n\t\t\tif (!errors) errors = [];\n\t\t\terrors.push({\n\t\t\t\tkey: keys[i],\n\t\t\t\terror: s.reason\n\t\t\t});\n\t\t}\n\t}\n\treturn {\n\t\tresolved: result,\n\t\terrors\n\t};\n}\n\n//#endregion\nexport { LAZY_EVAL_ERROR, LAZY_SYMBOL, LogLevel, LogLevelPriority, LogLevelPriorityToNames, countLazyValues, hasPromiseValues, isLazy, lazy, replacePromiseValues, resolveLazyValues, resolvePromiseValues };",
|
|
@@ -148,17 +149,12 @@
|
|
|
148
149
|
"import { formatTemplate } from \"./formatTemplate.js\";\nimport { formatNumberAddZeros } from \"./formatNumberAddZeros.js\";\nimport { urlToObject } from \"./urlToObj.js\";\nimport Runtime from \"./runtime/nodejs/index.js\";\nexport * from \"./interfaces.js\";\nexport { Runtime };\nexport class BaseLogger {\n constructor(settings, logObj, stackDepthLevel = 4) {\n this.logObj = logObj;\n this.stackDepthLevel = stackDepthLevel;\n this.runtime = Runtime;\n this.settings = {\n type: settings?.type ?? \"pretty\",\n name: settings?.name,\n parentNames: settings?.parentNames,\n minLevel: settings?.minLevel ?? 0,\n argumentsArrayName: settings?.argumentsArrayName,\n hideLogPositionForProduction: settings?.hideLogPositionForProduction ?? false,\n prettyLogTemplate: settings?.prettyLogTemplate ??\n \"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\\t{{logLevelName}}\\t{{filePathWithLine}}{{nameWithDelimiterPrefix}}\\t\",\n prettyErrorTemplate: settings?.prettyErrorTemplate ?? \"\\n{{errorName}} {{errorMessage}}\\nerror stack:\\n{{errorStack}}\",\n prettyErrorStackTemplate: settings?.prettyErrorStackTemplate ?? \" • {{fileName}}\\t{{method}}\\n\\t{{filePathWithLine}}\",\n prettyErrorParentNamesSeparator: settings?.prettyErrorParentNamesSeparator ?? \":\",\n prettyErrorLoggerNameDelimiter: settings?.prettyErrorLoggerNameDelimiter ?? \"\\t\",\n stylePrettyLogs: settings?.stylePrettyLogs ?? true,\n prettyLogTimeZone: settings?.prettyLogTimeZone ?? \"UTC\",\n prettyLogStyles: settings?.prettyLogStyles ?? {\n logLevelName: {\n \"*\": [\"bold\", \"black\", \"bgWhiteBright\", \"dim\"],\n SILLY: [\"bold\", \"white\"],\n TRACE: [\"bold\", \"whiteBright\"],\n DEBUG: [\"bold\", \"green\"],\n INFO: [\"bold\", \"blue\"],\n WARN: [\"bold\", \"yellow\"],\n ERROR: [\"bold\", \"red\"],\n FATAL: [\"bold\", \"redBright\"],\n },\n dateIsoStr: \"white\",\n filePathWithLine: \"white\",\n name: [\"white\", \"bold\"],\n nameWithDelimiterPrefix: [\"white\", \"bold\"],\n nameWithDelimiterSuffix: [\"white\", \"bold\"],\n errorName: [\"bold\", \"bgRedBright\", \"whiteBright\"],\n fileName: [\"yellow\"],\n fileNameWithLine: \"white\",\n },\n prettyInspectOptions: settings?.prettyInspectOptions ?? {\n colors: true,\n compact: false,\n depth: Infinity,\n },\n metaProperty: settings?.metaProperty ?? \"_meta\",\n maskPlaceholder: settings?.maskPlaceholder ?? \"[***]\",\n maskValuesOfKeys: settings?.maskValuesOfKeys ?? [\"password\"],\n maskValuesOfKeysCaseInsensitive: settings?.maskValuesOfKeysCaseInsensitive ?? false,\n maskValuesRegEx: settings?.maskValuesRegEx,\n prefix: [...(settings?.prefix ?? [])],\n attachedTransports: [...(settings?.attachedTransports ?? [])],\n overwrite: {\n mask: settings?.overwrite?.mask,\n toLogObj: settings?.overwrite?.toLogObj,\n addMeta: settings?.overwrite?.addMeta,\n addPlaceholders: settings?.overwrite?.addPlaceholders,\n formatMeta: settings?.overwrite?.formatMeta,\n formatLogObj: settings?.overwrite?.formatLogObj,\n transportFormatted: settings?.overwrite?.transportFormatted,\n transportJSON: settings?.overwrite?.transportJSON,\n },\n };\n }\n log(logLevelId, logLevelName, ...args) {\n if (logLevelId < this.settings.minLevel) {\n return;\n }\n const logArgs = [...this.settings.prefix, ...args];\n const maskedArgs = this.settings.overwrite?.mask != null\n ? this.settings.overwrite?.mask(logArgs)\n : this.settings.maskValuesOfKeys != null && this.settings.maskValuesOfKeys.length > 0\n ? this._mask(logArgs)\n : logArgs;\n const thisLogObj = this.logObj != null ? this._recursiveCloneAndExecuteFunctions(this.logObj) : undefined;\n const logObj = this.settings.overwrite?.toLogObj != null ? this.settings.overwrite?.toLogObj(maskedArgs, thisLogObj) : this._toLogObj(maskedArgs, thisLogObj);\n const logObjWithMeta = this.settings.overwrite?.addMeta != null\n ? this.settings.overwrite?.addMeta(logObj, logLevelId, logLevelName)\n : this._addMetaToLogObj(logObj, logLevelId, logLevelName);\n let logMetaMarkup;\n let logArgsAndErrorsMarkup = undefined;\n if (this.settings.overwrite?.formatMeta != null) {\n logMetaMarkup = this.settings.overwrite?.formatMeta(logObjWithMeta?.[this.settings.metaProperty]);\n }\n if (this.settings.overwrite?.formatLogObj != null) {\n logArgsAndErrorsMarkup = this.settings.overwrite?.formatLogObj(maskedArgs, this.settings);\n }\n if (this.settings.type === \"pretty\") {\n logMetaMarkup = logMetaMarkup ?? this._prettyFormatLogObjMeta(logObjWithMeta?.[this.settings.metaProperty]);\n logArgsAndErrorsMarkup = logArgsAndErrorsMarkup ?? this.runtime.prettyFormatLogObj(maskedArgs, this.settings);\n }\n if (logMetaMarkup != null && logArgsAndErrorsMarkup != null) {\n this.settings.overwrite?.transportFormatted != null\n ? this.settings.overwrite?.transportFormatted(logMetaMarkup, logArgsAndErrorsMarkup.args, logArgsAndErrorsMarkup.errors, this.settings)\n : this.runtime.transportFormatted(logMetaMarkup, logArgsAndErrorsMarkup.args, logArgsAndErrorsMarkup.errors, this.settings);\n }\n else {\n this.settings.overwrite?.transportJSON != null\n ? this.settings.overwrite?.transportJSON(logObjWithMeta)\n : this.settings.type !== \"hidden\"\n ? this.runtime.transportJSON(logObjWithMeta)\n : undefined;\n }\n if (this.settings.attachedTransports != null && this.settings.attachedTransports.length > 0) {\n this.settings.attachedTransports.forEach((transportLogger) => {\n transportLogger(logObjWithMeta);\n });\n }\n return logObjWithMeta;\n }\n attachTransport(transportLogger) {\n this.settings.attachedTransports.push(transportLogger);\n }\n getSubLogger(settings, logObj) {\n const subLoggerSettings = {\n ...this.settings,\n ...settings,\n parentNames: this.settings?.parentNames != null && this.settings?.name != null\n ? [...this.settings.parentNames, this.settings.name]\n : this.settings?.name != null\n ? [this.settings.name]\n : undefined,\n prefix: [...this.settings.prefix, ...(settings?.prefix ?? [])],\n };\n const subLogger = new this.constructor(subLoggerSettings, logObj ?? this.logObj, this.stackDepthLevel);\n return subLogger;\n }\n _mask(args) {\n const maskValuesOfKeys = this.settings.maskValuesOfKeysCaseInsensitive !== true ? this.settings.maskValuesOfKeys : this.settings.maskValuesOfKeys.map((key) => key.toLowerCase());\n return args?.map((arg) => {\n return this._recursiveCloneAndMaskValuesOfKeys(arg, maskValuesOfKeys);\n });\n }\n _recursiveCloneAndMaskValuesOfKeys(source, keys, seen = []) {\n if (seen.includes(source)) {\n return { ...source };\n }\n if (typeof source === \"object\" && source !== null) {\n seen.push(source);\n }\n if (this.runtime.isError(source) || this.runtime.isBuffer(source)) {\n return source;\n }\n else if (source instanceof Map) {\n return new Map(source);\n }\n else if (source instanceof Set) {\n return new Set(source);\n }\n else if (Array.isArray(source)) {\n return source.map((item) => this._recursiveCloneAndMaskValuesOfKeys(item, keys, seen));\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof URL) {\n return urlToObject(source);\n }\n else if (source !== null && typeof source === \"object\") {\n const baseObject = this.runtime.isError(source) ? this._cloneError(source) : Object.create(Object.getPrototypeOf(source));\n return Object.getOwnPropertyNames(source).reduce((o, prop) => {\n o[prop] = keys.includes(this.settings?.maskValuesOfKeysCaseInsensitive !== true ? prop : prop.toLowerCase())\n ? this.settings.maskPlaceholder\n : (() => {\n try {\n return this._recursiveCloneAndMaskValuesOfKeys(source[prop], keys, seen);\n }\n catch (e) {\n return null;\n }\n })();\n return o;\n }, baseObject);\n }\n else {\n if (typeof source === \"string\") {\n let modifiedSource = source;\n for (const regEx of this.settings?.maskValuesRegEx || []) {\n modifiedSource = modifiedSource.replace(regEx, this.settings?.maskPlaceholder || \"\");\n }\n return modifiedSource;\n }\n return source;\n }\n }\n _recursiveCloneAndExecuteFunctions(source, seen = []) {\n if (this.isObjectOrArray(source) && seen.includes(source)) {\n return this.shallowCopy(source);\n }\n if (this.isObjectOrArray(source)) {\n seen.push(source);\n }\n if (Array.isArray(source)) {\n return source.map((item) => this._recursiveCloneAndExecuteFunctions(item, seen));\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (this.isObject(source)) {\n return Object.getOwnPropertyNames(source).reduce((o, prop) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, prop);\n if (descriptor) {\n Object.defineProperty(o, prop, descriptor);\n const value = source[prop];\n o[prop] = typeof value === \"function\" ? value() : this._recursiveCloneAndExecuteFunctions(value, seen);\n }\n return o;\n }, Object.create(Object.getPrototypeOf(source)));\n }\n else {\n return source;\n }\n }\n isObjectOrArray(value) {\n return typeof value === \"object\" && value !== null;\n }\n isObject(value) {\n return typeof value === \"object\" && !Array.isArray(value) && value !== null;\n }\n shallowCopy(source) {\n if (Array.isArray(source)) {\n return [...source];\n }\n else {\n return { ...source };\n }\n }\n _toLogObj(args, clonedLogObj = {}) {\n args = args?.map((arg) => (this.runtime.isError(arg) ? this._toErrorObject(arg) : arg));\n if (this.settings.argumentsArrayName == null) {\n if (args.length === 1 && !Array.isArray(args[0]) && this.runtime.isBuffer(args[0]) !== true && !(args[0] instanceof Date)) {\n clonedLogObj = typeof args[0] === \"object\" && args[0] != null ? { ...args[0], ...clonedLogObj } : { 0: args[0], ...clonedLogObj };\n }\n else {\n clonedLogObj = { ...clonedLogObj, ...args };\n }\n }\n else {\n clonedLogObj = {\n ...clonedLogObj,\n [this.settings.argumentsArrayName]: args,\n };\n }\n return clonedLogObj;\n }\n _cloneError(error) {\n const cloned = new error.constructor();\n Object.getOwnPropertyNames(error).forEach((key) => {\n cloned[key] = error[key];\n });\n return cloned;\n }\n _toErrorObject(error) {\n return {\n nativeError: error,\n name: error.name ?? \"Error\",\n message: error.message,\n stack: this.runtime.getErrorTrace(error),\n };\n }\n _addMetaToLogObj(logObj, logLevelId, logLevelName) {\n return {\n ...logObj,\n [this.settings.metaProperty]: this.runtime.getMeta(logLevelId, logLevelName, this.stackDepthLevel, this.settings.hideLogPositionForProduction, this.settings.name, this.settings.parentNames),\n };\n }\n _prettyFormatLogObjMeta(logObjMeta) {\n if (logObjMeta == null) {\n return \"\";\n }\n let template = this.settings.prettyLogTemplate;\n const placeholderValues = {};\n if (template.includes(\"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\")) {\n template = template.replace(\"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\", \"{{dateIsoStr}}\");\n }\n else {\n if (this.settings.prettyLogTimeZone === \"UTC\") {\n placeholderValues[\"yyyy\"] = logObjMeta?.date?.getUTCFullYear() ?? \"----\";\n placeholderValues[\"mm\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMonth(), 2, 1);\n placeholderValues[\"dd\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCDate(), 2);\n placeholderValues[\"hh\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCHours(), 2);\n placeholderValues[\"MM\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMinutes(), 2);\n placeholderValues[\"ss\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCSeconds(), 2);\n placeholderValues[\"ms\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMilliseconds(), 3);\n }\n else {\n placeholderValues[\"yyyy\"] = logObjMeta?.date?.getFullYear() ?? \"----\";\n placeholderValues[\"mm\"] = formatNumberAddZeros(logObjMeta?.date?.getMonth(), 2, 1);\n placeholderValues[\"dd\"] = formatNumberAddZeros(logObjMeta?.date?.getDate(), 2);\n placeholderValues[\"hh\"] = formatNumberAddZeros(logObjMeta?.date?.getHours(), 2);\n placeholderValues[\"MM\"] = formatNumberAddZeros(logObjMeta?.date?.getMinutes(), 2);\n placeholderValues[\"ss\"] = formatNumberAddZeros(logObjMeta?.date?.getSeconds(), 2);\n placeholderValues[\"ms\"] = formatNumberAddZeros(logObjMeta?.date?.getMilliseconds(), 3);\n }\n }\n const dateInSettingsTimeZone = this.settings.prettyLogTimeZone === \"UTC\" ? logObjMeta?.date : new Date(logObjMeta?.date?.getTime() - logObjMeta?.date?.getTimezoneOffset() * 60000);\n placeholderValues[\"rawIsoStr\"] = dateInSettingsTimeZone?.toISOString();\n placeholderValues[\"dateIsoStr\"] = dateInSettingsTimeZone?.toISOString().replace(\"T\", \" \").replace(\"Z\", \"\");\n placeholderValues[\"logLevelName\"] = logObjMeta?.logLevelName;\n placeholderValues[\"fileNameWithLine\"] = logObjMeta?.path?.fileNameWithLine ?? \"\";\n placeholderValues[\"filePathWithLine\"] = logObjMeta?.path?.filePathWithLine ?? \"\";\n placeholderValues[\"fullFilePath\"] = logObjMeta?.path?.fullFilePath ?? \"\";\n let parentNamesString = this.settings.parentNames?.join(this.settings.prettyErrorParentNamesSeparator);\n parentNamesString = parentNamesString != null && logObjMeta?.name != null ? parentNamesString + this.settings.prettyErrorParentNamesSeparator : undefined;\n placeholderValues[\"name\"] = logObjMeta?.name != null || parentNamesString != null ? (parentNamesString ?? \"\") + logObjMeta?.name ?? \"\" : \"\";\n placeholderValues[\"nameWithDelimiterPrefix\"] =\n placeholderValues[\"name\"].length > 0 ? this.settings.prettyErrorLoggerNameDelimiter + placeholderValues[\"name\"] : \"\";\n placeholderValues[\"nameWithDelimiterSuffix\"] =\n placeholderValues[\"name\"].length > 0 ? placeholderValues[\"name\"] + this.settings.prettyErrorLoggerNameDelimiter : \"\";\n if (this.settings.overwrite?.addPlaceholders != null) {\n this.settings.overwrite?.addPlaceholders(logObjMeta, placeholderValues);\n }\n return formatTemplate(this.settings, template, placeholderValues);\n }\n}\n",
|
|
149
150
|
"import { BaseLogger } from \"./BaseLogger.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./BaseLogger.js\";\nexport class Logger extends BaseLogger {\n constructor(settings, logObj) {\n const isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n const isBrowserBlinkEngine = isBrowser ? window.chrome !== undefined && window.CSS !== undefined && window.CSS.supports(\"color\", \"green\") : false;\n const isSafari = isBrowser ? /^((?!chrome|android).)*safari/i.test(navigator.userAgent) : false;\n settings = settings || {};\n settings.stylePrettyLogs = settings.stylePrettyLogs && isBrowser && !isBrowserBlinkEngine ? false : settings.stylePrettyLogs;\n super(settings, logObj, isSafari ? 4 : 5);\n }\n log(logLevelId, logLevelName, ...args) {\n return super.log(logLevelId, logLevelName, ...args);\n }\n silly(...args) {\n return super.log(0, \"SILLY\", ...args);\n }\n trace(...args) {\n return super.log(1, \"TRACE\", ...args);\n }\n debug(...args) {\n return super.log(2, \"DEBUG\", ...args);\n }\n info(...args) {\n return super.log(3, \"INFO\", ...args);\n }\n warn(...args) {\n return super.log(4, \"WARN\", ...args);\n }\n error(...args) {\n return super.log(5, \"ERROR\", ...args);\n }\n fatal(...args) {\n return super.log(6, \"FATAL\", ...args);\n }\n getSubLogger(settings, logObj) {\n return super.getSubLogger(settings, logObj);\n }\n}\n",
|
|
150
151
|
"import { openTelemetryPlugin } from \"@loglayer/plugin-opentelemetry\";\nimport { OpenTelemetryTransport } from \"@loglayer/transport-opentelemetry\";\nimport { TsLogTransport } from \"@loglayer/transport-tslog\";\nimport { LogLayer } from \"loglayer\";\nimport { serializeError } from \"serialize-error\";\nimport { Logger } from \"tslog\";\n\nconst tslogLogger = new Logger({\n\ttype: process.env.NODE_ENV === \"production\" ? \"json\" : \"pretty\",\n\tstylePrettyLogs: process.env.NODE_ENV !== \"production\",\n\tminLevel: process.env.LOG_LEVEL === \"debug\" ? 0 : 3,\n});\n\nconst baseLogger = new LogLayer({\n\ttransport: [new TsLogTransport({ id: \"tslog\", logger: tslogLogger })],\n\tplugins: [openTelemetryPlugin()],\n\terrorSerializer: serializeError,\n});\n\nconst OTEL_TRANSPORT_ID = \"otel\";\n\nexport function attachOtelLogTransport(): void {\n\tbaseLogger.addTransport(\n\t\tnew OpenTelemetryTransport({\n\t\t\tid: OTEL_TRANSPORT_ID,\n\t\t\tenabled: process.env.NODE_ENV !== \"test\",\n\t\t}),\n\t);\n}\n\nexport function detachOtelLogTransport(): void {\n\tbaseLogger.removeTransport(OTEL_TRANSPORT_ID);\n}\n\nif (process.env.LOG_LEVEL !== \"debug\") {\n\tbaseLogger.setLevel(\"info\");\n}\n\n// Preserve broad call-site compatibility during migration from tslog to LogLayer.\nconst log = baseLogger as unknown as {\n\ttrace: (...args: unknown[]) => void;\n\tdebug: (...args: unknown[]) => void;\n\tinfo: (...args: unknown[]) => void;\n\twarn: (...args: unknown[]) => void;\n\terror: (...args: unknown[]) => void;\n\tfatal: (...args: unknown[]) => void;\n\twithMetadata: LogLayer[\"withMetadata\"];\n};\n\nexport { log };\n",
|
|
151
|
-
"import Ajv2020, {\n\ttype ErrorObject,\n\ttype ValidateFunction,\n} from \"ajv/dist/2020.js\";\nimport { z } from \"zod\";\nimport { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport { assertDocumentSha256, documentSha256, jcsSha256 } from \"./identity\";\nimport {\n\tCAPABILITY_POLICY,\n\tLEGACY_CAPABILITY_POLICY,\n\tRESOURCE_POLICY,\n} from \"./manifests\";\nimport archiveSelectionSchemaJson from \"./schemas/archive-selection.schema.json\" with {\n\ttype: \"json\",\n};\nimport promotionReceiptSchemaJson from \"./schemas/promotion-receipt.schema.json\" with {\n\ttype: \"json\",\n};\nimport requestSchemaJson from \"./schemas/request.schema.json\" with {\n\ttype: \"json\",\n};\nimport requiredClockSchemaJson from \"./schemas/required-clock.schema.json\" with {\n\ttype: \"json\",\n};\nimport resultSchemaJson from \"./schemas/result.schema.json\" with {\n\ttype: \"json\",\n};\n\nexport const BACKFILL_REQUEST_SCHEMA_ID = requestSchemaJson.$id;\nexport const REQUIRED_CLOCK_SCHEMA_ID = requiredClockSchemaJson.$id;\nexport const ARCHIVE_SELECTION_SCHEMA_ID = archiveSelectionSchemaJson.$id;\nexport const PROMOTION_RECEIPT_SCHEMA_ID = promotionReceiptSchemaJson.$id;\nexport const BACKFILL_RESULT_SCHEMA_ID = resultSchemaJson.$id;\n\nexport type FixedUtcTimestamp = string;\nexport type Sha256Hex = string;\nexport type LowercaseUuid = string;\n\nexport type CanonicalScopeWire = {\n\texchange: string;\n\ttrading_pair: string;\n\tmarket_type: \"spot\" | \"swap\" | \"future\";\n\tfeed: \"ORDERBOOK\";\n};\n\nexport type CoveragePolicyWire = {\n\tpolicy_id: \"prior-asof-strict/v1\";\n\tmax_asof_lag_ms: number;\n\tfuture_rows: \"reject\";\n\tmissing_required_event: \"fail\";\n};\n\nexport type RequiredClockWire = {\n\tschema_id: typeof REQUIRED_CLOCK_SCHEMA_ID;\n\tclock_id: LowercaseUuid;\n\tclock_sha256: Sha256Hex;\n\tcreated_at: FixedUtcTimestamp;\n\ttargets: Array<{ target_id: LowercaseUuid; target_at: FixedUtcTimestamp }>;\n};\n\nexport type ArchiveSelectionWire = {\n\tschema_id: typeof ARCHIVE_SELECTION_SCHEMA_ID;\n\tselection_sha256: Sha256Hex;\n\tscope: CanonicalScopeWire;\n\trequired_clock: {\n\t\tclock_id: LowercaseUuid;\n\t\tclock_sha256: Sha256Hex;\n\t\tevent_count: number;\n\t};\n\tcoverage_policy: CoveragePolicyWire;\n\tsource_policy: \"authoritative_window\" | \"fill_gaps\";\n\tcoverage_class: \"complete\" | \"partial\" | \"missing\";\n\trequested_intervals: Array<{\n\t\tstart_at: FixedUtcTimestamp;\n\t\tend_at: FixedUtcTimestamp;\n\t}>;\n\tselected_intervals: Array<{\n\t\tstart_at: FixedUtcTimestamp;\n\t\tend_at: FixedUtcTimestamp;\n\t\tcapture_bundle_id: Sha256Hex;\n\t\tcapture_origin: \"production_capture\" | \"vendor_historical_backfill\";\n\t}>;\n\tprecedence: Array<\"archive\" | \"vendor\">;\n\tbundles: Array<{\n\t\tcapture_bundle_id: Sha256Hex;\n\t\tcapture_origin: \"production_capture\" | \"vendor_historical_backfill\";\n\t\tinterval: { start_at: FixedUtcTimestamp; end_at: FixedUtcTimestamp };\n\t\tqualification: null | {\n\t\t\tqualification_event_id: LowercaseUuid;\n\t\t\tstate: \"qualified\";\n\t\t\treceipt_id: Sha256Hex;\n\t\t\tpromotion_identity_sha256: Sha256Hex;\n\t\t};\n\t}>;\n\tsupport_anchors: Array<{\n\t\tcapture_bundle_id: Sha256Hex;\n\t\traw_capture_id: Sha256Hex;\n\t\tsnapshot_id: Sha256Hex;\n\t\tsource_time: FixedUtcTimestamp;\n\t\tnormalized_summary_checksum: Sha256Hex;\n\t\tmetadata_ref: {\n\t\t\tcapture_origin: \"production_capture\" | \"vendor_historical_backfill\";\n\t\t\tqualification_event_id: LowercaseUuid | null;\n\t\t\treceipt_id: Sha256Hex | null;\n\t\t};\n\t}>;\n\treceipt_ids: Sha256Hex[];\n\tqualification_event_ids: LowercaseUuid[];\n\tresolved_at: FixedUtcTimestamp;\n};\n\nexport type BackfillRequestWire = {\n\tschema_id: typeof BACKFILL_REQUEST_SCHEMA_ID;\n\trequest_id: LowercaseUuid;\n\tattempt_id: LowercaseUuid;\n\tidempotency_key: Sha256Hex;\n\tscope: CanonicalScopeWire;\n\twindow: { start_at: FixedUtcTimestamp; end_at: FixedUtcTimestamp };\n\tdepth: number;\n\tconstruction_mode: \"sampled_top_n_snapshot\" | \"exact_l2_reconstruction\";\n\tsource_policy: \"authoritative_window\" | \"fill_gaps\";\n\ttarget: { environment: string; cluster: string };\n\tcoverage_policy: CoveragePolicyWire;\n\trequired_clock: {\n\t\tschema_id: typeof REQUIRED_CLOCK_SCHEMA_ID;\n\t\tclock_id: LowercaseUuid;\n\t\tfile_name: string;\n\t\tclock_sha256: Sha256Hex;\n\t\tevent_count: number;\n\t};\n\tinitial_selection: ArchiveSelectionWire;\n\texpected_canonical_schema: {\n\t\tschema_id: string;\n\t\tschema_sha256: Sha256Hex;\n\t};\n\tproduct_pins: {\n\t\tcapability_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tresource_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t};\n\tproduction_authorization_id: LowercaseUuid;\n};\n\nexport type PromotionReceiptWire = {\n\tschema_id: typeof PROMOTION_RECEIPT_SCHEMA_ID;\n\treceipt_id: Sha256Hex;\n\tpromotion_identity_sha256: Sha256Hex;\n\tverified_at: FixedUtcTimestamp;\n\trequest_id: LowercaseUuid;\n\tidempotency_key: Sha256Hex;\n\tsource: \"external_backfill\";\n\tcapture_origin: \"vendor_historical_backfill\";\n\tsource_mode: \"vendor_historical_backfill_v1\";\n\tprovider: string;\n\tadapter_version: string;\n\teffective_policies: {\n\t\tcapability_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tresource_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tadapter_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t\tacquisition_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\t};\n\tcapture_bundle_id: Sha256Hex;\n\tscope: CanonicalScopeWire;\n\twindow: { start_at: FixedUtcTimestamp; end_at: FixedUtcTimestamp };\n\tdepth: number;\n\tconstruction_mode: \"sampled_top_n_snapshot\" | \"exact_l2_reconstruction\";\n\tcanonical_schema: { schema_id: string; schema_sha256: Sha256Hex };\n\tcoverage_policy: CoveragePolicyWire;\n\tselection_sha256: Sha256Hex;\n\tvendor_semantic_digest: Sha256Hex;\n\tcanonical_semantic_digest: Sha256Hex;\n\tprefix_digest: Sha256Hex;\n\tsuffix_digest: Sha256Hex;\n\tseam_verified: true;\n\tcoverage_verified: true;\n\tdataset_objects: Array<{\n\t\tidentity: string;\n\t\tchecksum: Sha256Hex;\n\t\tbytes: number;\n\t\trows: number;\n\t}>;\n};\n\nexport const FINAL_BACKFILL_STATUSES = [\n\t\"request_invalid\",\n\t\"archive_preflight_failed\",\n\t\"already_covered\",\n\t\"promoted\",\n\t\"capability_unsupported\",\n\t\"credentials_missing\",\n\t\"vendor_fetch_failed\",\n\t\"archive_ingest_failed\",\n\t\"promotion_verification_failed\",\n] as const;\n\nexport type FinalBackfillStatus = (typeof FINAL_BACKFILL_STATUSES)[number];\n\nexport type BackfillJobResultWire = {\n\tschema_id: typeof BACKFILL_RESULT_SCHEMA_ID;\n\tresult_sha256: Sha256Hex;\n\tjob_id: LowercaseUuid;\n\trequest_file_sha256: Sha256Hex | null;\n\texecutable_sha256: Sha256Hex;\n\tschema_manifest_sha256: Sha256Hex;\n\tcex_package: {\n\t\tname: \"@usherlabs/cex-broker\";\n\t\tversion: string;\n\t\tpackage_sha256: Sha256Hex;\n\t};\n\tcapability_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\tresource_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\tbuild: { fiet_tee_commit: string; created_at: FixedUtcTimestamp };\n\tstarted_at: FixedUtcTimestamp;\n\tcompleted_at: FixedUtcTimestamp;\n\toutcome: {\n\t\tstatus: FinalBackfillStatus;\n\t\treason_code: string;\n\t\treason_subcode: string | null;\n\t\trequest_id: LowercaseUuid | null;\n\t\tidempotency_key: Sha256Hex | null;\n\t\ttarget: { environment: string; cluster: string } | null;\n\t\tselection: ArchiveSelectionWire | null;\n\t\treceipt: PromotionReceiptWire | null;\n\t\tdiagnostics: Record<string, string | number | boolean>;\n\t};\n};\n\ntype Codec<T> = {\n\tdecode(value: unknown): T;\n\tis(value: unknown): value is T;\n};\n\nfunction describeAjvErrors(errors: ErrorObject[] | null | undefined): string {\n\treturn (errors ?? [])\n\t\t.map(\n\t\t\t(error) =>\n\t\t\t\t`${error.instancePath || \"/\"} ${error.message ?? \"is invalid\"}`,\n\t\t)\n\t\t.join(\"; \");\n}\n\nfunction codec<T>(\n\tvalidate: ValidateFunction,\n\tsemantic?: (document: T) => void,\n): Codec<T> {\n\treturn {\n\t\tdecode(value: unknown): T {\n\t\t\tif (!validate(value)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`JSON Schema validation failed: ${describeAjvErrors(validate.errors)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tsemantic?.(value as T);\n\t\t\treturn value as T;\n\t\t},\n\t\tis(value: unknown): value is T {\n\t\t\tif (!validate(value)) return false;\n\t\t\ttry {\n\t\t\t\tsemantic?.(value as T);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t};\n}\n\nfunction fixedTimestampMs(value: string, field: string): number {\n\tconst parsed = Date.parse(value);\n\tif (\n\t\t!Number.isSafeInteger(parsed) ||\n\t\tnew Date(parsed).toISOString() !== value\n\t) {\n\t\tthrow new Error(`${field} is not a fixed UTC RFC3339 timestamp`);\n\t}\n\treturn parsed;\n}\n\nfunction assertIncreasingInterval(\n\tinterval: { start_at: string; end_at: string },\n\tfield: string,\n): void {\n\tif (\n\t\tfixedTimestampMs(interval.end_at, `${field}.end_at`) <=\n\t\tfixedTimestampMs(interval.start_at, `${field}.start_at`)\n\t) {\n\t\tthrow new Error(`${field} must be an increasing half-open interval`);\n\t}\n}\n\nconst ajv = new Ajv2020({ allErrors: true, strict: true });\najv.addSchema(archiveSelectionSchemaJson);\najv.addSchema(promotionReceiptSchemaJson);\nconst validateRequiredClock = ajv.compile(requiredClockSchemaJson);\nconst validateArchiveSelection = ajv.getSchema(ARCHIVE_SELECTION_SCHEMA_ID);\nconst validatePromotionReceipt = ajv.getSchema(PROMOTION_RECEIPT_SCHEMA_ID);\nconst validateBackfillRequest = ajv.compile(requestSchemaJson);\nconst validateBackfillResult = ajv.compile(resultSchemaJson);\nif (!validateArchiveSelection || !validatePromotionReceipt) {\n\tthrow new Error(\"Backfill referenced schemas were not registered\");\n}\n\nexport const requiredClockCodec = codec<RequiredClockWire>(\n\tvalidateRequiredClock,\n\t(clock) => {\n\t\tassertDocumentSha256(clock, \"clock_sha256\");\n\t\tlet previous = -1;\n\t\tconst targetIds = new Set<string>();\n\t\tfor (const [index, target] of clock.targets.entries()) {\n\t\t\tconst at = fixedTimestampMs(\n\t\t\t\ttarget.target_at,\n\t\t\t\t`targets[${index}].target_at`,\n\t\t\t);\n\t\t\tif (at <= previous)\n\t\t\t\tthrow new Error(\"required clock targets must be strictly increasing\");\n\t\t\tif (targetIds.has(target.target_id))\n\t\t\t\tthrow new Error(\"required clock target IDs must be unique\");\n\t\t\ttargetIds.add(target.target_id);\n\t\t\tprevious = at;\n\t\t}\n\t},\n);\n\nexport const archiveSelectionCodec = codec<ArchiveSelectionWire>(\n\tvalidateArchiveSelection,\n\t(selection) => {\n\t\tassertDocumentSha256(selection, \"selection_sha256\");\n\t\tselection.requested_intervals.forEach((interval, index) => {\n\t\t\tassertIncreasingInterval(interval, `requested_intervals[${index}]`);\n\t\t});\n\t\tselection.selected_intervals.forEach((interval, index) => {\n\t\t\tassertIncreasingInterval(interval, `selected_intervals[${index}]`);\n\t\t});\n\t\tselection.bundles.forEach((bundle, index) => {\n\t\t\tassertIncreasingInterval(bundle.interval, `bundles[${index}].interval`);\n\t\t});\n\t\tif (\n\t\t\tselection.coverage_class === \"missing\" &&\n\t\t\tselection.selected_intervals.length !== 0\n\t\t) {\n\t\t\tthrow new Error(\"missing selection cannot contain selected intervals\");\n\t\t}\n\t},\n);\n\nfunction promotionSemanticFields(\n\treceipt: PromotionReceiptWire,\n): Record<string, unknown> {\n\treturn Object.fromEntries(\n\t\tObject.entries(receipt).filter(\n\t\t\t([key]) =>\n\t\t\t\tkey !== \"receipt_id\" &&\n\t\t\t\tkey !== \"promotion_identity_sha256\" &&\n\t\t\t\tkey !== \"verified_at\",\n\t\t),\n\t);\n}\n\nexport function promotionIdentitySha256(\n\treceipt: Omit<\n\t\tPromotionReceiptWire,\n\t\t\"receipt_id\" | \"promotion_identity_sha256\"\n\t> &\n\t\tPartial<\n\t\t\tPick<PromotionReceiptWire, \"receipt_id\" | \"promotion_identity_sha256\">\n\t\t>,\n): string {\n\treturn jcsSha256(promotionSemanticFields(receipt as PromotionReceiptWire));\n}\n\nexport const promotionReceiptCodec = codec<PromotionReceiptWire>(\n\tvalidatePromotionReceipt,\n\t(receipt) => {\n\t\tassertIncreasingInterval(receipt.window, \"window\");\n\t\tif (\n\t\t\tpromotionIdentitySha256(receipt) !== receipt.promotion_identity_sha256\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"promotion_identity_sha256 does not match semantic receipt content\",\n\t\t\t);\n\t\t}\n\t\tassertDocumentSha256(receipt, \"receipt_id\");\n\t},\n);\n\nexport const backfillResultCodec = codec<BackfillJobResultWire>(\n\tvalidateBackfillResult,\n\t(result) => {\n\t\tassertDocumentSha256(result, \"result_sha256\");\n\t\tconst startedAt = fixedTimestampMs(result.started_at, \"started_at\");\n\t\tconst completedAt = fixedTimestampMs(result.completed_at, \"completed_at\");\n\t\tif (completedAt < startedAt)\n\t\t\tthrow new Error(\"completed_at precedes started_at\");\n\t\tif (result.outcome.selection)\n\t\t\tarchiveSelectionCodec.decode(result.outcome.selection);\n\t\tif (result.outcome.receipt)\n\t\t\tpromotionReceiptCodec.decode(result.outcome.receipt);\n\t\tif (\n\t\t\tresult.outcome.status === \"promoted\" &&\n\t\t\t(!result.outcome.selection || !result.outcome.receipt)\n\t\t) {\n\t\t\tthrow new Error(\"promoted outcome requires selection and receipt\");\n\t\t}\n\t\tif (\n\t\t\tresult.outcome.status === \"already_covered\" &&\n\t\t\t!result.outcome.selection\n\t\t) {\n\t\t\tthrow new Error(\"already_covered outcome requires selection\");\n\t\t}\n\t},\n);\n\nfunction wireIdempotencyBusinessFields(\n\trequest: Omit<BackfillRequestWire, \"idempotency_key\"> & {\n\t\tidempotency_key?: string;\n\t},\n) {\n\treturn {\n\t\tscope: request.scope,\n\t\twindow: request.window,\n\t\tdepth: request.depth,\n\t\tconstruction_mode: request.construction_mode,\n\t\trequired_clock_sha256: request.required_clock.clock_sha256,\n\t\tcoverage_policy: request.coverage_policy,\n\t\tsource_policy: request.source_policy,\n\t\texpected_canonical_schema: request.expected_canonical_schema,\n\t\ttarget: request.target,\n\t};\n}\n\nexport const backfillRequestCodec = {\n\tdecode(value: unknown): { wire: BackfillRequestWire } {\n\t\tif (!validateBackfillRequest(value)) {\n\t\t\tthrow new Error(\n\t\t\t\t`JSON Schema validation failed: ${describeAjvErrors(validateBackfillRequest.errors)}`,\n\t\t\t);\n\t\t}\n\t\tconst request = value as BackfillRequestWire;\n\t\tarchiveSelectionCodec.decode(request.initial_selection);\n\t\tassertIncreasingInterval(request.window, \"window\");\n\t\tif (request.idempotency_key !== createBackfillIdempotencyKey(request)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"idempotency_key does not match canonical business fields\",\n\t\t\t);\n\t\t}\n\t\tconst capabilityPolicyMatches = [\n\t\t\tCAPABILITY_POLICY,\n\t\t\tLEGACY_CAPABILITY_POLICY,\n\t\t].some(\n\t\t\t(policy) =>\n\t\t\t\trequest.product_pins.capability_policy.policy_id === policy.policy_id &&\n\t\t\t\trequest.product_pins.capability_policy.policy_sha256 ===\n\t\t\t\t\tpolicy.policy_sha256,\n\t\t);\n\t\tif (\n\t\t\t!capabilityPolicyMatches ||\n\t\t\trequest.product_pins.resource_policy.policy_id !==\n\t\t\t\tRESOURCE_POLICY.policy_id ||\n\t\t\trequest.product_pins.resource_policy.policy_sha256 !==\n\t\t\t\tRESOURCE_POLICY.policy_sha256\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"request policy pins do not match the effective package policies\",\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\trequest.required_clock.clock_id !==\n\t\t\t\trequest.initial_selection.required_clock.clock_id ||\n\t\t\trequest.required_clock.clock_sha256 !==\n\t\t\t\trequest.initial_selection.required_clock.clock_sha256 ||\n\t\t\trequest.required_clock.event_count !==\n\t\t\t\trequest.initial_selection.required_clock.event_count\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"initial selection required clock reference does not match request\",\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tjcsSha256(request.scope) !== jcsSha256(request.initial_selection.scope)\n\t\t) {\n\t\t\tthrow new Error(\"initial selection scope does not match request\");\n\t\t}\n\t\tif (\n\t\t\tjcsSha256(request.coverage_policy) !==\n\t\t\tjcsSha256(request.initial_selection.coverage_policy)\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"initial selection coverage policy does not match request\",\n\t\t\t);\n\t\t}\n\t\tif (request.source_policy !== request.initial_selection.source_policy) {\n\t\t\tthrow new Error(\"initial selection source policy does not match request\");\n\t\t}\n\t\treturn { wire: request };\n\t},\n\tis(value: unknown): value is BackfillRequestWire {\n\t\ttry {\n\t\t\tthis.decode(value);\n\t\t\treturn true;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t},\n};\n\nexport function finalizeRequiredClock(\n\tclock: Omit<RequiredClockWire, \"clock_sha256\">,\n): RequiredClockWire {\n\treturn requiredClockCodec.decode({\n\t\t...clock,\n\t\tclock_sha256: documentSha256(clock, \"clock_sha256\"),\n\t});\n}\n\nexport function finalizeArchiveSelection(\n\tselection: Omit<ArchiveSelectionWire, \"selection_sha256\">,\n): ArchiveSelectionWire {\n\treturn archiveSelectionCodec.decode({\n\t\t...selection,\n\t\tselection_sha256: documentSha256(selection, \"selection_sha256\"),\n\t});\n}\n\nexport function finalizeBackfillResult(\n\tresult: Omit<BackfillJobResultWire, \"result_sha256\"> &\n\t\tPartial<Pick<BackfillJobResultWire, \"result_sha256\">>,\n): BackfillJobResultWire {\n\tconst { result_sha256: _resultSha256, ...content } = result;\n\treturn backfillResultCodec.decode({\n\t\t...content,\n\t\tresult_sha256: documentSha256(content, \"result_sha256\"),\n\t});\n}\n\nexport const BACKFILL_REQUEST_SCHEMA_VERSION =\n\t\"market-data-vendor-backfill-request/v1\" as const;\nexport const BACKFILL_RESULT_SCHEMA_VERSION =\n\t\"market-data-vendor-backfill-result/v1\" as const;\nexport const BACKFILL_PROMOTION_SCHEMA_VERSION =\n\t\"market-data-vendor-backfill-promotion-receipt/v1\" as const;\nexport const EXTERNAL_BACKFILL_SOURCE = \"external_backfill\" as const;\nexport const HISTORICAL_VENDOR_SOURCE_MODE =\n\t\"vendor_historical_backfill_v1\" as const;\nexport const VENDOR_DATASET_RAW_CAPTURE_SCOPE =\n\t\"vendor_normalized_dataset_file\" as const;\n\nconst nonEmpty = z.string().trim().min(1);\nconst sha256 = z.string().regex(/^[a-f0-9]{64}$/);\nconst timestampMs = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);\n\nexport const backfillRequestSchema = z\n\t.object({\n\t\tschemaVersion: z.literal(BACKFILL_REQUEST_SCHEMA_VERSION),\n\t\trequestId: nonEmpty,\n\t\tidempotencyKey: sha256,\n\t\tproviderPolicy: z\n\t\t\t.object({\n\t\t\t\tprovider: z.literal(\"cryptohftdata\"),\n\t\t\t\tallowedAdapterVersions: z.array(nonEmpty).min(1).max(16),\n\t\t\t})\n\t\t\t.strict(),\n\t\tscope: z\n\t\t\t.object({\n\t\t\t\texchange: nonEmpty,\n\t\t\t\ttradingPair: nonEmpty,\n\t\t\t\tsourceSymbol: nonEmpty,\n\t\t\t\tmarketType: z.enum([\"spot\", \"swap\", \"future\"]),\n\t\t\t\tfeed: z.literal(\"ORDERBOOK\"),\n\t\t\t})\n\t\t\t.strict(),\n\t\twindow: z\n\t\t\t.object({ startTimeMs: timestampMs, endTimeMs: timestampMs })\n\t\t\t.strict()\n\t\t\t.refine(({ startTimeMs, endTimeMs }) => endTimeMs > startTimeMs, {\n\t\t\t\tmessage: \"endTimeMs must be greater than startTimeMs\",\n\t\t\t}),\n\t\tdepth: z.number().int().min(1).max(500),\n\t\tconstructionMode: z.enum([\n\t\t\t\"sampled_top_n_snapshot\",\n\t\t\t\"exact_l2_reconstruction\",\n\t\t]),\n\t\trequiredClockTargetsMs: z.array(timestampMs).min(1).max(100_000),\n\t\tmaxPriorAsOfLagMs: z.number().int().nonnegative().max(86_400_000),\n\t\tsourcePolicy: z.enum([\"authoritative_window\", \"fill_gaps\"]),\n\t\tbudgets: z\n\t\t\t.object({\n\t\t\t\tmaxFiles: z.number().int().min(1).max(10_000),\n\t\t\t\tmaxBytes: z\n\t\t\t\t\t.number()\n\t\t\t\t\t.int()\n\t\t\t\t\t.min(1)\n\t\t\t\t\t.max(100 * 1024 * 1024 * 1024),\n\t\t\t\tmaxRows: z.number().int().min(1).max(1_000_000_000),\n\t\t\t\tmaxDurationMs: z\n\t\t\t\t\t.number()\n\t\t\t\t\t.int()\n\t\t\t\t\t.min(1)\n\t\t\t\t\t.max(24 * 60 * 60 * 1_000),\n\t\t\t\tmaxBoundaryLookbackMs: z\n\t\t\t\t\t.number()\n\t\t\t\t\t.int()\n\t\t\t\t\t.nonnegative()\n\t\t\t\t\t.max(7 * 24 * 60 * 60 * 1_000),\n\t\t\t})\n\t\t\t.strict(),\n\t\texpectedProduct: z\n\t\t\t.object({\n\t\t\t\tpackageName: z.literal(\"@usherlabs/cex-broker\"),\n\t\t\t\tpackageVersion: nonEmpty.optional(),\n\t\t\t\tcanonicalSchemaVersion: nonEmpty,\n\t\t\t\tchecksumAlgorithm: z.literal(\"sha256-canonical-json-v1\"),\n\t\t\t})\n\t\t\t.strict(),\n\t})\n\t.strict()\n\t.superRefine((request, context) => {\n\t\tconst targets = request.requiredClockTargetsMs;\n\t\tfor (let index = 0; index < targets.length; index += 1) {\n\t\t\tconst target = targets[index] as number;\n\t\t\tif (\n\t\t\t\ttarget < request.window.startTimeMs ||\n\t\t\t\ttarget >= request.window.endTimeMs\n\t\t\t) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\tpath: [\"requiredClockTargetsMs\", index],\n\t\t\t\t\tmessage: \"clock target must be inside the half-open request window\",\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (index > 0 && target <= (targets[index - 1] as number)) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\tpath: [\"requiredClockTargetsMs\", index],\n\t\t\t\t\tmessage: \"clock targets must be strictly increasing\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\ntype ProvisionalBackfillDomainRequest = z.infer<typeof backfillRequestSchema>;\n\nexport type MarketDataVendorBackfillRequest =\n\tProvisionalBackfillDomainRequest & {\n\t\tattemptId?: string;\n\t\ttarget?: { environment: string; cluster: string };\n\t\tcoveragePolicy?: CoveragePolicyWire;\n\t\trequiredClock?: RequiredClockWire;\n\t\tinitialSelection?: ArchiveSelectionWire;\n\t\texpectedCanonicalSchema?: BackfillRequestWire[\"expected_canonical_schema\"];\n\t\tproductPins?: BackfillRequestWire[\"product_pins\"];\n\t\tproductionAuthorizationId?: string;\n\t\twire?: BackfillRequestWire;\n\t};\n\nexport function decodeBackfillRunDocuments(input: {\n\trequest: unknown;\n\trequiredClock: unknown;\n}): MarketDataVendorBackfillRequest {\n\tconst { wire } = backfillRequestCodec.decode(input.request);\n\tconst requiredClock = requiredClockCodec.decode(input.requiredClock);\n\tif (\n\t\trequiredClock.clock_id !== wire.required_clock.clock_id ||\n\t\trequiredClock.clock_sha256 !== wire.required_clock.clock_sha256 ||\n\t\trequiredClock.targets.length !== wire.required_clock.event_count\n\t) {\n\t\tthrow new Error(\"required clock sidecar does not match request reference\");\n\t}\n\tconst startTimeMs = fixedTimestampMs(wire.window.start_at, \"window.start_at\");\n\tconst endTimeMs = fixedTimestampMs(wire.window.end_at, \"window.end_at\");\n\tconst requiredClockTargetsMs = requiredClock.targets.map((target, index) => {\n\t\tconst targetTimeMs = fixedTimestampMs(\n\t\t\ttarget.target_at,\n\t\t\t`required_clock.targets[${index}].target_at`,\n\t\t);\n\t\tif (targetTimeMs < startTimeMs || targetTimeMs >= endTimeMs) {\n\t\t\tthrow new Error(\"required clock target is outside request window\");\n\t\t}\n\t\treturn targetTimeMs;\n\t});\n\tconst capabilityProfile = CAPABILITY_POLICY.profiles.find(\n\t\t(profile) =>\n\t\t\tprofile.exchange === wire.scope.exchange &&\n\t\t\tprofile.market_type === wire.scope.market_type &&\n\t\t\tprofile.feed === wire.scope.feed &&\n\t\t\tprofile.canonical_trading_pair === wire.scope.trading_pair,\n\t);\n\treturn {\n\t\tschemaVersion: BACKFILL_REQUEST_SCHEMA_VERSION,\n\t\trequestId: wire.request_id,\n\t\tidempotencyKey: wire.idempotency_key,\n\t\tproviderPolicy: {\n\t\t\tprovider: \"cryptohftdata\",\n\t\t\tallowedAdapterVersions: [\n\t\t\t\tCAPABILITY_POLICY.adapter_policy.adapter_version,\n\t\t\t],\n\t\t},\n\t\tscope: {\n\t\t\texchange: wire.scope.exchange,\n\t\t\ttradingPair: wire.scope.trading_pair,\n\t\t\tsourceSymbol:\n\t\t\t\tcapabilityProfile?.resolved_symbol ?? wire.scope.trading_pair,\n\t\t\tmarketType: wire.scope.market_type,\n\t\t\tfeed: wire.scope.feed,\n\t\t},\n\t\twindow: { startTimeMs, endTimeMs },\n\t\tdepth: wire.depth,\n\t\tconstructionMode: wire.construction_mode,\n\t\trequiredClockTargetsMs,\n\t\tmaxPriorAsOfLagMs: wire.coverage_policy.max_asof_lag_ms,\n\t\tsourcePolicy: wire.source_policy,\n\t\tbudgets: {\n\t\t\tmaxFiles: RESOURCE_POLICY.limits.max_files,\n\t\t\tmaxBytes: RESOURCE_POLICY.limits.max_bytes,\n\t\t\tmaxRows: RESOURCE_POLICY.limits.max_rows,\n\t\t\tmaxDurationMs: RESOURCE_POLICY.limits.max_duration_ms,\n\t\t\tmaxBoundaryLookbackMs: Math.min(\n\t\t\t\tRESOURCE_POLICY.limits.max_boundary_lookback_ms,\n\t\t\t\tCAPABILITY_POLICY.acquisition_policy.initialization_lookback_ms,\n\t\t\t),\n\t\t},\n\t\texpectedProduct: {\n\t\t\tpackageName: \"@usherlabs/cex-broker\",\n\t\t\tcanonicalSchemaVersion: \"1.0.0\",\n\t\t\tchecksumAlgorithm: \"sha256-canonical-json-v1\",\n\t\t},\n\t\tattemptId: wire.attempt_id,\n\t\ttarget: wire.target,\n\t\tcoveragePolicy: wire.coverage_policy,\n\t\trequiredClock,\n\t\tinitialSelection: wire.initial_selection,\n\t\texpectedCanonicalSchema: wire.expected_canonical_schema,\n\t\tproductPins: wire.product_pins,\n\t\tproductionAuthorizationId: wire.production_authorization_id,\n\t\twire,\n\t};\n}\n\ntype IdempotencyBusinessFields = Omit<\n\tMarketDataVendorBackfillRequest,\n\t\"requestId\" | \"idempotencyKey\"\n>;\n\nexport function backfillBusinessFields(\n\trequest: Omit<MarketDataVendorBackfillRequest, \"idempotencyKey\"> & {\n\t\tidempotencyKey?: string;\n\t},\n): IdempotencyBusinessFields {\n\tconst {\n\t\trequestId: _requestId,\n\t\tidempotencyKey: _idempotencyKey,\n\t\t...business\n\t} = request;\n\treturn business;\n}\n\nexport function createBackfillIdempotencyKey(\n\trequest: Omit<MarketDataVendorBackfillRequest, \"idempotencyKey\"> & {\n\t\tidempotencyKey?: string;\n\t},\n): string;\nexport function createBackfillIdempotencyKey(\n\trequest: Omit<BackfillRequestWire, \"idempotency_key\"> & {\n\t\tidempotency_key?: string;\n\t},\n): string;\nexport function createBackfillIdempotencyKey(\n\trequest: Record<string, unknown>,\n): string;\nexport function createBackfillIdempotencyKey(request: unknown): string {\n\tif (!request || typeof request !== \"object\") {\n\t\tthrow new TypeError(\"backfill request must be an object\");\n\t}\n\tif (\"schema_id\" in request) {\n\t\treturn jcsSha256(\n\t\t\twireIdempotencyBusinessFields(\n\t\t\t\trequest as Omit<BackfillRequestWire, \"idempotency_key\"> & {\n\t\t\t\t\tidempotency_key?: string;\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t}\n\treturn sha256Canonical(\n\t\tbackfillBusinessFields(\n\t\t\trequest as Omit<MarketDataVendorBackfillRequest, \"idempotencyKey\"> & {\n\t\t\t\tidempotencyKey?: string;\n\t\t\t},\n\t\t),\n\t);\n}\n\nexport function parseBackfillRequest(\n\tvalue: unknown,\n): MarketDataVendorBackfillRequest {\n\tconst request = backfillRequestSchema.parse(value);\n\tif (createBackfillIdempotencyKey(request) !== request.idempotencyKey) {\n\t\tthrow new Error(\"idempotencyKey does not match canonical business fields\");\n\t}\n\treturn request;\n}\n\nexport const BACKFILL_STATUSES = [\n\t\"already_covered\",\n\t\"promoted\",\n\t\"capability_unsupported\",\n\t\"credentials_missing\",\n\t\"vendor_fetch_failed\",\n\t\"archive_ingest_failed\",\n\t\"promotion_verification_failed\",\n\t\"post_backfill_coverage_insufficient\",\n] as const;\n\nexport type BackfillStatus = (typeof BACKFILL_STATUSES)[number];\n\nexport type ProviderCapability = {\n\tprovider: \"cryptohftdata\";\n\tadapterVersion: string;\n\tproviderExchangeId: string;\n\tresolvedSymbol: string;\n};\n\nexport type ProviderObjectEvidence = {\n\tidentity: string;\n\tchecksum: string;\n\tbytes: number;\n\trows: number;\n};\n\nconst providerObjectEvidenceSchema = z\n\t.object({\n\t\tidentity: nonEmpty,\n\t\tchecksum: sha256,\n\t\tbytes: z.number().int().nonnegative(),\n\t\trows: z.number().int().nonnegative(),\n\t})\n\t.strict();\n\nexport type BackfillArchiveRow = {\n\ttable:\n\t\t| \"market_data.cex_order_book_levels\"\n\t\t| \"market_data.cex_order_book_depth_summary\"\n\t\t| \"market_data.cex_order_book_capture_promotions\"\n\t\t| \"market_data.cex_order_book_capture_qualifications\"\n\t\t| \"market_data.cex_order_book_archive_selections\";\n\trow: Record<string, unknown>;\n};\n\nexport type ForwarderBatch = {\n\tsource: typeof EXTERNAL_BACKFILL_SOURCE;\n\tdeployment_id: string;\n\tbatch_id: string;\n\trows: BackfillArchiveRow[];\n};\n\nexport type PromotionReceipt = {\n\tschemaVersion: typeof BACKFILL_PROMOTION_SCHEMA_VERSION;\n\treceiptId: string;\n\trequestId: string;\n\tidempotencyKey: string;\n\tstatus: \"passing\";\n\tsource: typeof EXTERNAL_BACKFILL_SOURCE;\n\tprovider: \"cryptohftdata\";\n\tadapterVersion: string;\n\tcaptureBundleId: string;\n\texchange: string;\n\ttradingPair: string;\n\tmarketType: \"spot\" | \"swap\" | \"future\";\n\tfeed: \"ORDERBOOK\";\n\tstartTimeMs: number;\n\tendTimeMs: number;\n\tdepth: number;\n\tconstructionMode: \"sampled_top_n_snapshot\" | \"exact_l2_reconstruction\";\n\tcanonicalSchemaVersion: string;\n\tchecksumAlgorithm: \"sha256-canonical-json-v1\";\n\tvendorSemanticDigest: string;\n\tcanonicalSemanticDigest: string;\n\tprefixDigest: string;\n\tsuffixDigest: string;\n\tseamVerified: true;\n\tcoverageVerified: true;\n\tdatasetObjects: ProviderObjectEvidence[];\n\tverificationTimeMs: number;\n};\n\nexport const promotionReceiptSchema: z.ZodType<PromotionReceipt> = z\n\t.object({\n\t\tschemaVersion: z.literal(BACKFILL_PROMOTION_SCHEMA_VERSION),\n\t\treceiptId: sha256,\n\t\trequestId: nonEmpty,\n\t\tidempotencyKey: sha256,\n\t\tstatus: z.literal(\"passing\"),\n\t\tsource: z.literal(EXTERNAL_BACKFILL_SOURCE),\n\t\tprovider: z.literal(\"cryptohftdata\"),\n\t\tadapterVersion: nonEmpty,\n\t\tcaptureBundleId: sha256,\n\t\texchange: nonEmpty,\n\t\ttradingPair: nonEmpty,\n\t\tmarketType: z.enum([\"spot\", \"swap\", \"future\"]),\n\t\tfeed: z.literal(\"ORDERBOOK\"),\n\t\tstartTimeMs: timestampMs,\n\t\tendTimeMs: timestampMs,\n\t\tdepth: z.number().int().min(1).max(500),\n\t\tconstructionMode: z.enum([\n\t\t\t\"sampled_top_n_snapshot\",\n\t\t\t\"exact_l2_reconstruction\",\n\t\t]),\n\t\tcanonicalSchemaVersion: nonEmpty,\n\t\tchecksumAlgorithm: z.literal(\"sha256-canonical-json-v1\"),\n\t\tvendorSemanticDigest: sha256,\n\t\tcanonicalSemanticDigest: sha256,\n\t\tprefixDigest: sha256,\n\t\tsuffixDigest: sha256,\n\t\tseamVerified: z.literal(true),\n\t\tcoverageVerified: z.literal(true),\n\t\tdatasetObjects: z.array(providerObjectEvidenceSchema).min(1).max(10_000),\n\t\tverificationTimeMs: timestampMs,\n\t})\n\t.strict()\n\t.refine(({ endTimeMs, startTimeMs }) => endTimeMs > startTimeMs, {\n\t\tmessage: \"promotion window must be increasing\",\n\t});\n\nexport type BackfillResult = {\n\tschemaVersion: typeof BACKFILL_RESULT_SCHEMA_VERSION;\n\trequestId: string;\n\tidempotencyKey?: string;\n\tstatus: BackfillStatus;\n\treasonCode: string;\n\treceipt?: PromotionReceipt;\n\tdiagnostics?: Record<string, string | number | boolean>;\n};\n",
|
|
152
152
|
"import { createHash } from \"node:crypto\";\nimport canonicalize from \"canonicalize\";\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue =\n\t| JsonPrimitive\n\t| JsonValue[]\n\t| { [key: string]: JsonValue };\n\nexport function jcsCanonicalize(value: unknown): string {\n\tconst rendered = canonicalize(value);\n\tif (rendered === undefined) {\n\t\tthrow new TypeError(\"Value is not representable as RFC 8785 JSON\");\n\t}\n\treturn rendered;\n}\n\nexport function jcsSha256(value: unknown): string {\n\treturn createHash(\"sha256\")\n\t\t.update(jcsCanonicalize(value), \"utf8\")\n\t\t.digest(\"hex\");\n}\n\nexport function withoutOwnDigest<T extends Record<string, unknown>>(\n\tdocument: T,\n\tdigestField: keyof T | string,\n): Omit<T, keyof T> & Record<string, unknown> {\n\treturn Object.fromEntries(\n\t\tObject.entries(document).filter(([key]) => key !== digestField),\n\t) as Omit<T, keyof T> & Record<string, unknown>;\n}\n\n/** Hashes a wire document while excluding only its own top-level digest field. */\nexport function documentSha256<T extends Record<string, unknown>>(\n\tdocument: T,\n\tdigestField: keyof T | string,\n): string {\n\treturn jcsSha256(withoutOwnDigest(document, digestField));\n}\n\nexport function assertDocumentSha256<T extends Record<string, unknown>>(\n\tdocument: T,\n\tdigestField: keyof T | string,\n): void {\n\tconst supplied = document[String(digestField)];\n\tif (\n\t\ttypeof supplied !== \"string\" ||\n\t\tsupplied !== documentSha256(document, digestField)\n\t) {\n\t\tthrow new Error(\n\t\t\t`${String(digestField)} does not match RFC 8785 document content`,\n\t\t);\n\t}\n}\n",
|
|
153
153
|
"function hasLoneSurrogate (value) {\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n\n if (code >= 0xD800 && code <= 0xDBFF) {\n if (i === value.length - 1) {\n return true;\n }\n const next = value.charCodeAt(i + 1);\n if (!(next >= 0xDC00 && next <= 0xDFFF)) {\n return true;\n }\n i++;\n } else if (code >= 0xDC00 && code <= 0xDFFF) {\n return true;\n }\n }\n\n return false;\n}\n\nexport default function canonicalize (object, seen = new Set()) {\n if (typeof object === 'number' && isNaN(object)) {\n throw new Error('NaN is not allowed');\n }\n\n if (typeof object === 'number' && !isFinite(object)) {\n throw new Error('Infinity is not allowed');\n }\n\n if (typeof object === 'string' && hasLoneSurrogate(object)) {\n throw new Error('Lone surrogate is not allowed');\n }\n\n if (object === null || typeof object !== 'object') {\n return JSON.stringify(object);\n }\n\n if (typeof object.toJSON === 'function') {\n if (seen.has(object)) {\n throw new Error('Circular reference detected');\n }\n seen.add(object);\n const result = canonicalize(object.toJSON(), seen);\n seen.delete(object);\n return result;\n }\n\n if (seen.has(object)) {\n throw new Error('Circular reference detected');\n }\n seen.add(object);\n\n let result;\n if (Array.isArray(object)) {\n const values = object.map((cv) => {\n const value = cv === undefined || typeof cv === 'symbol' ? null : cv;\n return canonicalize(value, seen);\n });\n result = `[${values.join(',')}]`;\n } else {\n const parts = [];\n for (const key of Object.keys(object).sort()) {\n if (object[key] === undefined || typeof object[key] === 'symbol') {\n continue;\n }\n parts.push(`${canonicalize(key)}:${canonicalize(object[key], seen)}`);\n }\n result = `{${parts.join(',')}}`;\n }\n\n seen.delete(object);\n return result;\n}\n",
|
|
154
|
-
"import { documentSha256, jcsSha256 } from \"./identity\";\nimport
|
|
155
|
-
"import {
|
|
156
|
-
"import {\n\tARCHIVE_SELECTION_SCHEMA_ID,\n\ttype ArchiveSelectionWire,\n\tarchiveSelectionCodec,\n\ttype BackfillArchiveRow,\n\ttype BackfillRequestWire,\n\tbackfillRequestCodec,\n\tfinalizeArchiveSelection,\n\ttype MarketDataVendorBackfillRequest,\n} from \"./contracts\";\nimport { jcsCanonicalize, jcsSha256 } from \"./identity\";\n\nexport type ArchiveQualificationEvidence = {\n\tqualificationEventId: string;\n\tstate: \"qualified\" | \"quarantined\" | \"revoked\";\n\treceiptId: string;\n\tpromotionIdentitySha256: string;\n};\n\nexport type ArchiveSupportAnchorEvidence = {\n\tcaptureBundleId: string;\n\trawCaptureId: string;\n\tsnapshotId: string;\n\tsourceTimeMs: number;\n\tnormalizedSummaryChecksum: string;\n};\n\nexport type ArchiveBundleEvidence = {\n\tcaptureBundleId: string;\n\tcaptureOrigin: \"production_capture\" | \"vendor_historical_backfill\";\n\tstartTimeMs: number;\n\tendTimeMs: number;\n\tqualification: ArchiveQualificationEvidence | null;\n\tsupportAnchors: ArchiveSupportAnchorEvidence[];\n};\n\nfunction fixedTimestamp(timestampMs: number, field: string): string {\n\tif (!Number.isSafeInteger(timestampMs) || timestampMs < 0) {\n\t\tthrow new Error(`${field} must be a non-negative safe integer`);\n\t}\n\treturn new Date(timestampMs).toISOString();\n}\n\nfunction assertStoredSelectionMatchesRequest(\n\trequest: MarketDataVendorBackfillRequest,\n\tselection: ArchiveSelectionWire,\n): void {\n\tif (!request.requiredClock || !request.coveragePolicy) {\n\t\tthrow new Error(\"decoded request is missing final-v1 selection context\");\n\t}\n\tconst expectedScope = {\n\t\texchange: request.scope.exchange,\n\t\ttrading_pair: request.scope.tradingPair,\n\t\tmarket_type: request.scope.marketType,\n\t\tfeed: request.scope.feed,\n\t};\n\tif (\n\t\tjcsSha256(selection.scope) !== jcsSha256(expectedScope) ||\n\t\tselection.required_clock.clock_id !== request.requiredClock.clock_id ||\n\t\tselection.required_clock.clock_sha256 !==\n\t\t\trequest.requiredClock.clock_sha256 ||\n\t\tselection.required_clock.event_count !==\n\t\t\trequest.requiredClock.targets.length ||\n\t\tjcsSha256(selection.coverage_policy) !==\n\t\t\tjcsSha256(request.coveragePolicy) ||\n\t\tselection.source_policy !== request.sourcePolicy\n\t) {\n\t\tthrow new Error(\"stored archive selection conflicts with request content\");\n\t}\n}\n\nfunction eligibleBundles(\n\trequest: MarketDataVendorBackfillRequest,\n\tbundles: readonly ArchiveBundleEvidence[],\n): ArchiveBundleEvidence[] {\n\tconst qualifiedVendorBundles = bundles.filter(\n\t\t(bundle) =>\n\t\t\tbundle.captureOrigin === \"vendor_historical_backfill\" &&\n\t\t\tbundle.qualification?.state === \"qualified\",\n\t);\n\tconst productionBundles = bundles.filter(\n\t\t(bundle) => bundle.captureOrigin === \"production_capture\",\n\t);\n\tif (request.sourcePolicy === \"authoritative_window\") {\n\t\tconst vendorSupport = chooseSupport(request, qualifiedVendorBundles);\n\t\treturn vendorSupport.length === request.requiredClockTargetsMs.length\n\t\t\t? qualifiedVendorBundles\n\t\t\t: productionBundles;\n\t}\n\treturn [...productionBundles, ...qualifiedVendorBundles];\n}\n\nfunction originPriority(\n\trequest: MarketDataVendorBackfillRequest,\n\torigin: ArchiveBundleEvidence[\"captureOrigin\"],\n): number {\n\tif (request.sourcePolicy === \"fill_gaps\") {\n\t\treturn origin === \"production_capture\" ? 0 : 1;\n\t}\n\treturn 0;\n}\n\nfunction chooseSupport(\n\trequest: MarketDataVendorBackfillRequest,\n\tbundles: readonly ArchiveBundleEvidence[],\n): Array<{\n\tbundle: ArchiveBundleEvidence;\n\tanchor: ArchiveSupportAnchorEvidence;\n}> {\n\treturn request.requiredClockTargetsMs.flatMap((targetTimeMs) => {\n\t\tconst candidates = bundles.flatMap((bundle) =>\n\t\t\tbundle.supportAnchors\n\t\t\t\t.filter(\n\t\t\t\t\t(anchor) =>\n\t\t\t\t\t\tanchor.captureBundleId === bundle.captureBundleId &&\n\t\t\t\t\t\tanchor.sourceTimeMs <= targetTimeMs &&\n\t\t\t\t\t\ttargetTimeMs - anchor.sourceTimeMs <= request.maxPriorAsOfLagMs,\n\t\t\t\t)\n\t\t\t\t.map((anchor) => ({ bundle, anchor })),\n\t\t);\n\t\tcandidates.sort((left, right) => {\n\t\t\tconst origin =\n\t\t\t\toriginPriority(request, left.bundle.captureOrigin) -\n\t\t\t\toriginPriority(request, right.bundle.captureOrigin);\n\t\t\tif (origin !== 0) return origin;\n\t\t\tif (left.anchor.sourceTimeMs !== right.anchor.sourceTimeMs) {\n\t\t\t\treturn right.anchor.sourceTimeMs - left.anchor.sourceTimeMs;\n\t\t\t}\n\t\t\treturn left.bundle.captureBundleId.localeCompare(\n\t\t\t\tright.bundle.captureBundleId,\n\t\t\t);\n\t\t});\n\t\treturn candidates[0] ? [candidates[0]] : [];\n\t});\n}\n\nexport function resolveArchiveSelection(input: {\n\trequest: MarketDataVendorBackfillRequest;\n\tbundles: readonly ArchiveBundleEvidence[];\n\tresolvedAtMs: number;\n\tstoredSelection?: unknown;\n}): ArchiveSelectionWire {\n\tif (input.storedSelection !== undefined) {\n\t\tconst stored = archiveSelectionCodec.decode(input.storedSelection);\n\t\tassertStoredSelectionMatchesRequest(input.request, stored);\n\t\treturn stored;\n\t}\n\tconst { request } = input;\n\tif (!request.requiredClock || !request.coveragePolicy) {\n\t\tthrow new Error(\"decoded request is missing final-v1 selection context\");\n\t}\n\tconst eligible = eligibleBundles(request, input.bundles);\n\tconst chosenSupport = chooseSupport(request, eligible);\n\tconst selectedBundleIds = new Set(\n\t\tchosenSupport.map(({ bundle }) => bundle.captureBundleId),\n\t);\n\tconst selectedBundles = eligible\n\t\t.filter((bundle) => selectedBundleIds.has(bundle.captureBundleId))\n\t\t.sort((left, right) => {\n\t\t\tconst origin =\n\t\t\t\toriginPriority(request, left.captureOrigin) -\n\t\t\t\toriginPriority(request, right.captureOrigin);\n\t\t\treturn (\n\t\t\t\torigin || left.captureBundleId.localeCompare(right.captureBundleId)\n\t\t\t);\n\t\t});\n\tconst supportByIdentity = new Map<string, (typeof chosenSupport)[number]>();\n\tfor (const support of chosenSupport) {\n\t\tconst identity = `${support.bundle.captureBundleId}:${support.anchor.rawCaptureId}:${support.anchor.snapshotId}:${support.anchor.sourceTimeMs}`;\n\t\tsupportByIdentity.set(identity, support);\n\t}\n\tconst supportAnchors = [...supportByIdentity.values()]\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\tleft.anchor.sourceTimeMs - right.anchor.sourceTimeMs ||\n\t\t\t\tleft.bundle.captureBundleId.localeCompare(right.bundle.captureBundleId),\n\t\t)\n\t\t.map(({ bundle, anchor }) => ({\n\t\t\tcapture_bundle_id: bundle.captureBundleId,\n\t\t\traw_capture_id: anchor.rawCaptureId,\n\t\t\tsnapshot_id: anchor.snapshotId,\n\t\t\tsource_time: fixedTimestamp(anchor.sourceTimeMs, \"support anchor time\"),\n\t\t\tnormalized_summary_checksum: anchor.normalizedSummaryChecksum,\n\t\t\tmetadata_ref: {\n\t\t\t\tcapture_origin: bundle.captureOrigin,\n\t\t\t\tqualification_event_id:\n\t\t\t\t\tbundle.qualification?.qualificationEventId ?? null,\n\t\t\t\treceipt_id: bundle.qualification?.receiptId ?? null,\n\t\t\t},\n\t\t}));\n\tconst coverageClass =\n\t\tchosenSupport.length === request.requiredClockTargetsMs.length\n\t\t\t? \"complete\"\n\t\t\t: eligible.length === 0\n\t\t\t\t? \"missing\"\n\t\t\t\t: \"partial\";\n\tconst requestStart = request.window.startTimeMs;\n\tconst requestEnd = request.window.endTimeMs;\n\treturn finalizeArchiveSelection({\n\t\tschema_id: ARCHIVE_SELECTION_SCHEMA_ID,\n\t\tscope: {\n\t\t\texchange: request.scope.exchange,\n\t\t\ttrading_pair: request.scope.tradingPair,\n\t\t\tmarket_type: request.scope.marketType,\n\t\t\tfeed: request.scope.feed,\n\t\t},\n\t\trequired_clock: {\n\t\t\tclock_id: request.requiredClock.clock_id,\n\t\t\tclock_sha256: request.requiredClock.clock_sha256,\n\t\t\tevent_count: request.requiredClock.targets.length,\n\t\t},\n\t\tcoverage_policy: request.coveragePolicy,\n\t\tsource_policy: request.sourcePolicy,\n\t\tcoverage_class: coverageClass,\n\t\trequested_intervals: [\n\t\t\t{\n\t\t\t\tstart_at: fixedTimestamp(requestStart, \"window start\"),\n\t\t\t\tend_at: fixedTimestamp(requestEnd, \"window end\"),\n\t\t\t},\n\t\t],\n\t\tselected_intervals: selectedBundles.map((bundle) => ({\n\t\t\tstart_at: fixedTimestamp(\n\t\t\t\tMath.max(requestStart, bundle.startTimeMs),\n\t\t\t\t\"selected interval start\",\n\t\t\t),\n\t\t\tend_at: fixedTimestamp(\n\t\t\t\tMath.min(requestEnd, bundle.endTimeMs),\n\t\t\t\t\"selected interval end\",\n\t\t\t),\n\t\t\tcapture_bundle_id: bundle.captureBundleId,\n\t\t\tcapture_origin: bundle.captureOrigin,\n\t\t})),\n\t\tprecedence:\n\t\t\trequest.sourcePolicy === \"fill_gaps\" ? [\"archive\", \"vendor\"] : [\"vendor\"],\n\t\tbundles: selectedBundles.map((bundle) => ({\n\t\t\tcapture_bundle_id: bundle.captureBundleId,\n\t\t\tcapture_origin: bundle.captureOrigin,\n\t\t\tinterval: {\n\t\t\t\tstart_at: fixedTimestamp(bundle.startTimeMs, \"bundle interval start\"),\n\t\t\t\tend_at: fixedTimestamp(bundle.endTimeMs, \"bundle interval end\"),\n\t\t\t},\n\t\t\tqualification: bundle.qualification\n\t\t\t\t? {\n\t\t\t\t\t\tqualification_event_id: bundle.qualification.qualificationEventId,\n\t\t\t\t\t\tstate: \"qualified\" as const,\n\t\t\t\t\t\treceipt_id: bundle.qualification.receiptId,\n\t\t\t\t\t\tpromotion_identity_sha256:\n\t\t\t\t\t\t\tbundle.qualification.promotionIdentitySha256,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t})),\n\t\tsupport_anchors: supportAnchors,\n\t\treceipt_ids: [\n\t\t\t...new Set(\n\t\t\t\tselectedBundles.flatMap((bundle) =>\n\t\t\t\t\tbundle.qualification ? [bundle.qualification.receiptId] : [],\n\t\t\t\t),\n\t\t\t),\n\t\t].sort(),\n\t\tqualification_event_ids: [\n\t\t\t...new Set(\n\t\t\t\tselectedBundles.flatMap((bundle) =>\n\t\t\t\t\tbundle.qualification\n\t\t\t\t\t\t? [bundle.qualification.qualificationEventId]\n\t\t\t\t\t\t: [],\n\t\t\t\t),\n\t\t\t),\n\t\t].sort(),\n\t\tresolved_at: fixedTimestamp(input.resolvedAtMs, \"resolved_at\"),\n\t});\n}\n\nexport function archiveSelectionToArchiveRow(\n\trequest: BackfillRequestWire,\n\tselectionInput: ArchiveSelectionWire,\n): BackfillArchiveRow {\n\tconst selection = archiveSelectionCodec.decode(selectionInput);\n\tif (\n\t\tselection.required_clock.clock_sha256 !==\n\t\t\trequest.required_clock.clock_sha256 ||\n\t\tselection.source_policy !== request.source_policy ||\n\t\tjcsSha256(selection.scope) !== jcsSha256(request.scope) ||\n\t\tjcsSha256(selection.coverage_policy) !== jcsSha256(request.coverage_policy)\n\t) {\n\t\tthrow new Error(\"archive selection does not match request\");\n\t}\n\treturn {\n\t\ttable: \"market_data.cex_order_book_archive_selections\",\n\t\trow: {\n\t\t\tsource: \"external_backfill\",\n\t\t\tdeployment_id: \"market-data-vendor-backfill\",\n\t\t\trequest_id: request.request_id,\n\t\t\tidempotency_key: request.idempotency_key,\n\t\t\tselection_sha256: selection.selection_sha256,\n\t\t\tcoverage_class: selection.coverage_class,\n\t\t\treceipt_ids: selection.receipt_ids,\n\t\t\trequest_json: jcsCanonicalize(request),\n\t\t\tselection_json: jcsCanonicalize(selection),\n\t\t\tresolved_at_ms: Date.parse(selection.resolved_at),\n\t\t},\n\t};\n}\n\nexport function archiveSelectionFromArchiveRow(\n\trow: Record<string, unknown>,\n): ArchiveSelectionWire {\n\tlet parsed: unknown;\n\tlet parsedRequest: unknown;\n\ttry {\n\t\tparsed = JSON.parse(String(row.selection_json));\n\t\tparsedRequest = JSON.parse(String(row.request_json));\n\t} catch {\n\t\tthrow new Error(\"archive selection or request JSON is invalid\");\n\t}\n\tconst selection = archiveSelectionCodec.decode(parsed);\n\tconst request = backfillRequestCodec.decode(parsedRequest).wire;\n\tarchiveSelectionToArchiveRow(request, selection);\n\tif (\n\t\trow.source !== \"external_backfill\" ||\n\t\trow.deployment_id !== \"market-data-vendor-backfill\" ||\n\t\trow.request_id !== request.request_id ||\n\t\trow.idempotency_key !== request.idempotency_key ||\n\t\trow.selection_sha256 !== selection.selection_sha256 ||\n\t\trow.coverage_class !== selection.coverage_class ||\n\t\tjcsCanonicalize(row.receipt_ids) !==\n\t\t\tjcsCanonicalize(selection.receipt_ids) ||\n\t\trow.resolved_at_ms !== Date.parse(selection.resolved_at)\n\t) {\n\t\tthrow new Error(\"archive selection row does not match selection JSON\");\n\t}\n\treturn selection;\n}\n",
|
|
157
|
-
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport type {\n\tBackfillArchiveRow,\n\tMarketDataVendorBackfillRequest,\n} from \"./contracts\";\n\nconst LOGICAL_KEYS = {\n\t\"market_data.cex_order_book_levels\": [\n\t\t\"capture_bundle_id\",\n\t\t\"exchange\",\n\t\t\"trading_pair\",\n\t\t\"raw_capture_id\",\n\t\t\"snapshot_id\",\n\t\t\"schema_version\",\n\t\t\"side\",\n\t\t\"level_index\",\n\t],\n\t\"market_data.cex_order_book_depth_summary\": [\n\t\t\"capture_bundle_id\",\n\t\t\"exchange\",\n\t\t\"trading_pair\",\n\t\t\"raw_capture_id\",\n\t\t\"snapshot_id\",\n\t\t\"schema_version\",\n\t],\n} as const;\n\nfunction logicalIdentity(row: BackfillArchiveRow): {\n\tkey: string;\n\tchecksum: string;\n} {\n\tif (\n\t\trow.table !== \"market_data.cex_order_book_levels\" &&\n\t\trow.table !== \"market_data.cex_order_book_depth_summary\"\n\t) {\n\t\tthrow new Error(\n\t\t\t\"archive evidence rows are not candidate semantic evidence\",\n\t\t);\n\t}\n\tconst keys = LOGICAL_KEYS[row.table];\n\tconst checksum = row.row.normalized_row_checksum;\n\tif (typeof checksum !== \"string\" || !/^[a-f0-9]{64}$/.test(checksum)) {\n\t\tthrow new Error(\"candidate normalized checksum is invalid\");\n\t}\n\tconst values = keys.map((key) => row.row[key]);\n\tif (\n\t\tvalues.some(\n\t\t\t(value) =>\n\t\t\t\ttypeof value !== \"string\" &&\n\t\t\t\ttypeof value !== \"number\" &&\n\t\t\t\tvalue !== null,\n\t\t)\n\t) {\n\t\tthrow new Error(\"candidate logical identity is incomplete\");\n\t}\n\treturn {\n\t\tkey: `${row.table}\\u0000${JSON.stringify(values)}`,\n\t\tchecksum,\n\t};\n}\n\nexport function semanticDigest(rows: readonly BackfillArchiveRow[]): string {\n\tconst identities = rows\n\t\t.map(logicalIdentity)\n\t\t.sort((left, right) =>\n\t\t\tleft.key === right.key\n\t\t\t\t? left.checksum.localeCompare(right.checksum)\n\t\t\t\t: left.key.localeCompare(right.key),\n\t\t);\n\treturn sha256Canonical(identities);\n}\n\nfunction exactCandidateMatch(\n\texpected: readonly BackfillArchiveRow[],\n\tactual: readonly BackfillArchiveRow[],\n): boolean {\n\tif (expected.length !== actual.length) return false;\n\tconst expectedIdentities = expected\n\t\t.map(logicalIdentity)\n\t\t.map(({ key, checksum }) => `${key}\\u0000${checksum}`)\n\t\t.sort();\n\tconst actualIdentities = actual\n\t\t.map(logicalIdentity)\n\t\t.map(({ key, checksum }) => `${key}\\u0000${checksum}`)\n\t\t.sort();\n\treturn expectedIdentities.every(\n\t\t(identity, index) => identity === actualIdentities[index],\n\t);\n}\n\nfunction requestedShapeMatches(\n\trequest: MarketDataVendorBackfillRequest,\n\trows: readonly BackfillArchiveRow[],\n): boolean {\n\treturn rows.every(\n\t\t({ row }) =>\n\t\t\trow.depth_limit === request.depth &&\n\t\t\trow.construction_mode === request.constructionMode &&\n\t\t\trow.schema_version === request.expectedProduct.canonicalSchemaVersion,\n\t);\n}\n\nfunction requiredClockCoverage(\n\trequest: MarketDataVendorBackfillRequest,\n\trows: readonly BackfillArchiveRow[],\n\tcoverageSourceTimesMs?: readonly number[],\n): boolean {\n\tconst summaryTimes = (\n\t\tcoverageSourceTimesMs ??\n\t\trows\n\t\t\t.filter(\n\t\t\t\t({ table }) => table === \"market_data.cex_order_book_depth_summary\",\n\t\t\t)\n\t\t\t.map(({ row }) => row.source_time_ms)\n\t)\n\t\t.map((value) => {\n\t\t\tif (\n\t\t\t\ttypeof value !== \"number\" &&\n\t\t\t\t(typeof value !== \"string\" || !/^\\d+$/.test(value))\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst parsed = Number(value);\n\t\t\treturn Number.isSafeInteger(parsed) && parsed >= 0 ? parsed : undefined;\n\t\t})\n\t\t.filter((value): value is number => value !== undefined)\n\t\t.sort((left, right) => left - right);\n\treturn request.requiredClockTargetsMs.every((target) => {\n\t\tlet prior: number | undefined;\n\t\tfor (const sourceTime of summaryTimes) {\n\t\t\tif (sourceTime > target) break;\n\t\t\tprior = sourceTime;\n\t\t}\n\t\treturn (\n\t\t\tprior !== undefined &&\n\t\t\ttarget - prior >= 0 &&\n\t\t\ttarget - prior <= request.maxPriorAsOfLagMs\n\t\t);\n\t});\n}\n\nexport type SemanticPromotionEvidence = {\n\trequest: MarketDataVendorBackfillRequest;\n\tnormalizedRows: readonly BackfillArchiveRow[];\n\tcandidateRows: readonly BackfillArchiveRow[];\n\tconflictCount: number;\n\tprefixDigestBefore: string;\n\tprefixDigestAfter: string;\n\tsuffixDigestBefore: string;\n\tsuffixDigestAfter: string;\n\tseamVerified: boolean;\n\texporterCompatible: boolean;\n\tcoverageSourceTimesMs?: readonly number[];\n};\n\nexport type SemanticPromotionResult = {\n\tpassed: boolean;\n\treasonCode: string;\n\tcanonicalSemanticDigest: string;\n\tprefixDigest: string;\n\tsuffixDigest: string;\n\tseamVerified: boolean;\n\tcoverageVerified: boolean;\n};\n\nexport function verifySemanticPromotion(\n\tevidence: SemanticPromotionEvidence,\n): SemanticPromotionResult {\n\tconst canonicalSemanticDigest = semanticDigest(evidence.candidateRows);\n\tconst base = {\n\t\tcanonicalSemanticDigest,\n\t\tprefixDigest: evidence.prefixDigestAfter,\n\t\tsuffixDigest: evidence.suffixDigestAfter,\n\t\tseamVerified: evidence.seamVerified,\n\t};\n\tif (!exactCandidateMatch(evidence.normalizedRows, evidence.candidateRows)) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"candidate_semantic_mismatch\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (evidence.conflictCount !== 0) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"candidate_checksum_conflict\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (\n\t\tevidence.prefixDigestBefore !== evidence.prefixDigestAfter ||\n\t\tevidence.suffixDigestBefore !== evidence.suffixDigestAfter\n\t) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"qualified_timeline_changed\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (!evidence.seamVerified) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"timeline_seam_invalid\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (!requestedShapeMatches(evidence.request, evidence.candidateRows)) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"candidate_shape_mismatch\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (!evidence.exporterCompatible) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"canonical_export_incompatible\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tconst coverageVerified = requiredClockCoverage(\n\t\tevidence.request,\n\t\tevidence.candidateRows,\n\t\tevidence.coverageSourceTimesMs,\n\t);\n\tif (!coverageVerified) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"required_clock_coverage_insufficient\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\treturn {\n\t\t...base,\n\t\tpassed: true,\n\t\treasonCode: \"semantic_promotion_verified\",\n\t\tcoverageVerified: true,\n\t};\n}\n",
|
|
158
|
-
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport type {\n\tBackfillArchiveRow,\n\tMarketDataVendorBackfillRequest,\n\tPromotionReceiptWire,\n} from \"./contracts\";\nimport { archiveSelectionCodec } from \"./contracts\";\nimport type {\n\tArchivePreflightResolution,\n\tCandidateVerification,\n\tNormalizedBackfill,\n\tQualifiedCoverage,\n} from \"./core\";\nimport { jcsCanonicalize } from \"./identity\";\nimport { promotionReceiptFromArchiveRow } from \"./promotion\";\nimport {\n\ttype ArchiveBundleEvidence,\n\tresolveArchiveSelection,\n} from \"./selection\";\nimport { verifySemanticPromotion } from \"./semantic-verification\";\n\nexport type ArchiveQueryValue = string | number | readonly string[];\nexport type ArchiveQueryClient = {\n\tquery(\n\t\tsql: string,\n\t\tparameters?: Readonly<Record<string, ArchiveQueryValue>>,\n\t): Promise<Record<string, unknown>[]>;\n};\n\nexport type QualifiedArchiveReaderOptions = { nowMs?: () => number };\n\nconst QUALIFIED_SUMMARY =\n\t\"market_data.cex_order_book_depth_summary_replay_qualified\";\nconst QUALIFIED_LEVELS = \"market_data.cex_order_book_levels_replay_qualified\";\nconst CANDIDATE_SUMMARY = \"market_data.cex_order_book_depth_summary_canonical\";\nconst CANDIDATE_LEVELS = \"market_data.cex_order_book_levels_canonical\";\n\nclass ArchiveReaderError extends Error {\n\tconstructor(readonly reason: string) {\n\t\tsuper(reason);\n\t\tthis.name = \"ArchiveReaderError\";\n\t}\n}\n\nasync function archiveQuery(\n\tclient: ArchiveQueryClient,\n\treason: string,\n\tsql: string,\n\tparameters?: Readonly<Record<string, ArchiveQueryValue>>,\n): Promise<Record<string, unknown>[]> {\n\ttry {\n\t\treturn await client.query(sql, parameters);\n\t} catch {\n\t\tthrow new ArchiveReaderError(reason);\n\t}\n}\n\nfunction queryParameters(request: MarketDataVendorBackfillRequest) {\n\treturn {\n\t\texchange: request.scope.exchange,\n\t\ttrading_pair: request.scope.tradingPair,\n\t\tstart_time_ms: request.window.startTimeMs,\n\t\tend_time_ms: request.window.endTimeMs,\n\t\tdepth_limit: request.depth,\n\t\tconstruction_mode: request.constructionMode,\n\t\tschema_version: request.expectedProduct.canonicalSchemaVersion,\n\t};\n}\n\nfunction scopeFilter(alias = \"\") {\n\tconst prefix = alias ? `${alias}.` : \"\";\n\treturn `\n${prefix}exchange = {exchange:String}\nAND ${prefix}trading_pair = {trading_pair:String}\nAND ${prefix}depth_limit = {depth_limit:UInt16}\nAND ${prefix}construction_mode = {construction_mode:String}\nAND ${prefix}schema_version = {schema_version:String}`;\n}\n\nfunction numberField(row: Record<string, unknown>, field: string): number {\n\tconst value = row[field];\n\tconst parsed = typeof value === \"number\" ? value : Number(value);\n\tif (!Number.isSafeInteger(parsed) || parsed < 0) {\n\t\tthrow new Error(`Archive field ${field} is not a safe unsigned integer`);\n\t}\n\treturn parsed;\n}\n\nfunction uint64Field(\n\trow: Record<string, unknown>,\n\tfield: string,\n): bigint | undefined {\n\tconst value = row[field];\n\tif (value === null || value === undefined) return undefined;\n\tif (typeof value === \"number\") {\n\t\treturn Number.isSafeInteger(value) && value >= 0\n\t\t\t? BigInt(value)\n\t\t\t: undefined;\n\t}\n\tif (typeof value !== \"string\" || !/^\\d+$/.test(value)) return undefined;\n\tconst parsed = BigInt(value);\n\treturn parsed <= 18_446_744_073_709_551_615n ? parsed : undefined;\n}\n\nfunction timelineDigest(rows: readonly Record<string, unknown>[]): string {\n\treturn sha256Canonical(\n\t\trows\n\t\t\t.map((row) => ({\n\t\t\t\ttable: String(row.table ?? \"summary\"),\n\t\t\t\tsnapshot_id: String(row.snapshot_id ?? \"\"),\n\t\t\t\tsource_time_ms: numberField(row, \"source_time_ms\"),\n\t\t\t\tnormalized_row_checksum: String(row.normalized_row_checksum ?? \"\"),\n\t\t\t}))\n\t\t\t.sort((left, right) =>\n\t\t\t\tleft.source_time_ms === right.source_time_ms\n\t\t\t\t\t? left.normalized_row_checksum.localeCompare(\n\t\t\t\t\t\t\tright.normalized_row_checksum,\n\t\t\t\t\t\t)\n\t\t\t\t\t: left.source_time_ms - right.source_time_ms,\n\t\t\t),\n\t);\n}\n\nfunction clocksCovered(\n\trequest: MarketDataVendorBackfillRequest,\n\trows: readonly Record<string, unknown>[],\n): boolean {\n\tconst times = rows\n\t\t.map((row) => numberField(row, \"source_time_ms\"))\n\t\t.sort((left, right) => left - right);\n\treturn request.requiredClockTargetsMs.every((target) => {\n\t\tlet prior: number | undefined;\n\t\tfor (const sourceTime of times) {\n\t\t\tif (sourceTime > target) break;\n\t\t\tprior = sourceTime;\n\t\t}\n\t\treturn prior !== undefined && target - prior <= request.maxPriorAsOfLagMs;\n\t});\n}\n\nfunction candidateRows(\n\ttable:\n\t\t| \"market_data.cex_order_book_levels\"\n\t\t| \"market_data.cex_order_book_depth_summary\",\n\trows: Record<string, unknown>[],\n): BackfillArchiveRow[] {\n\treturn rows.map((row) => ({ table, row }));\n}\n\nexport class QualifiedOrderBookArchiveReader {\n\tconstructor(\n\t\tprivate readonly client: ArchiveQueryClient,\n\t\tprivate readonly options?: QualifiedArchiveReaderOptions,\n\t) {}\n\n\tasync resolveSelection(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t): Promise<ArchivePreflightResolution> {\n\t\tconst identityRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_cluster_identity_query_failed\",\n\t\t\t`SELECT environment, cluster\n\t\t\t FROM market_data.cex_archive_cluster_identity FINAL\n\t\t\t WHERE singleton_key = 'archive'\n\t\t\t LIMIT 2`,\n\t\t);\n\t\tif (identityRows.length !== 1) {\n\t\t\tthrow new Error(\n\t\t\t\t\"archive cluster identity singleton is missing or conflicting\",\n\t\t\t);\n\t\t}\n\t\tconst readerIdentity = {\n\t\t\tenvironment: String(identityRows[0]?.environment ?? \"\"),\n\t\t\tcluster: String(identityRows[0]?.cluster ?? \"\"),\n\t\t};\n\t\tconst conflictRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_selection_conflict_query_failed\",\n\t\t\t`SELECT count() AS conflicts\n\t\t\t FROM\n\t\t\t (\n\t\t\t SELECT conflict.capture_bundle_id, conflict.snapshot_id\n\t\t\t FROM market_data.cex_order_book_levels_conflicts AS conflict\n\t\t\t INNER JOIN\n\t\t\t (\n\t\t\t SELECT DISTINCT capture_bundle_id, snapshot_id\n\t\t\t FROM market_data.cex_order_book_depth_summary\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ) AS selected USING (capture_bundle_id, snapshot_id)\n\t\t\t UNION ALL\n\t\t\t SELECT conflict.capture_bundle_id, conflict.snapshot_id\n\t\t\t FROM market_data.cex_order_book_depth_summary_conflicts AS conflict\n\t\t\t INNER JOIN\n\t\t\t (\n\t\t\t SELECT DISTINCT capture_bundle_id, snapshot_id\n\t\t\t FROM market_data.cex_order_book_depth_summary\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ) AS selected USING (capture_bundle_id, snapshot_id)\n\t\t\t )`,\n\t\t\tqueryParameters(request),\n\t\t);\n\t\tif (\n\t\t\tconflictRows.length !== 1 ||\n\t\t\t!Number.isSafeInteger(Number(conflictRows[0]?.conflicts)) ||\n\t\t\tNumber(conflictRows[0]?.conflicts) < 0\n\t\t) {\n\t\t\tthrow new ArchiveReaderError(\"archive_selection_conflict_query_invalid\");\n\t\t}\n\t\tif (Number(conflictRows[0]?.conflicts) > 0) {\n\t\t\tthrow new ArchiveReaderError(\"archive_selection_checksum_conflict\");\n\t\t}\n\t\tconst storedRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_stored_selection_query_failed\",\n\t\t\t`SELECT selection_sha256, selection_json\n\t\t\t FROM market_data.cex_order_book_archive_selections\n\t\t\t WHERE idempotency_key = {idempotency_key:String}\n\t\t\t ORDER BY resolved_at_ms, selection_sha256`,\n\t\t\t{ idempotency_key: request.idempotencyKey },\n\t\t);\n\t\tif (storedRows.length > 0) {\n\t\t\tconst selections = storedRows.map((row) => {\n\t\t\t\tlet parsed: unknown;\n\t\t\t\ttry {\n\t\t\t\t\tparsed = JSON.parse(String(row.selection_json));\n\t\t\t\t} catch {\n\t\t\t\t\tthrow new Error(\"stored archive selection JSON is invalid\");\n\t\t\t\t}\n\t\t\t\tconst selection = archiveSelectionCodec.decode(parsed);\n\t\t\t\tif (selection.selection_sha256 !== row.selection_sha256) {\n\t\t\t\t\tthrow new Error(\"stored archive selection row identity mismatch\");\n\t\t\t\t}\n\t\t\t\treturn selection;\n\t\t\t});\n\t\t\tconst canonical = new Set(selections.map(jcsCanonicalize));\n\t\t\tif (canonical.size !== 1) {\n\t\t\t\tthrow new Error(\"stored archive selection content conflicts\");\n\t\t\t}\n\t\t\tconst selection = resolveArchiveSelection({\n\t\t\t\trequest,\n\t\t\t\tbundles: [],\n\t\t\t\tresolvedAtMs: this.options?.nowMs?.() ?? Date.now(),\n\t\t\t\tstoredSelection: selections[0],\n\t\t\t});\n\t\t\tconst receipts = await this.readReceipts(selection.receipt_ids);\n\t\t\treturn {\n\t\t\t\tselection,\n\t\t\t\treceipts,\n\t\t\t\treaderIdentity,\n\t\t\t};\n\t\t}\n\n\t\tconst parameters = {\n\t\t\t...queryParameters(request),\n\t\t\tcoverage_start_ms: Math.max(\n\t\t\t\t0,\n\t\t\t\trequest.window.startTimeMs - request.maxPriorAsOfLagMs,\n\t\t\t),\n\t\t};\n\t\tconst summaries = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_qualified_summary_query_failed\",\n\t\t\t`SELECT capture_bundle_id, raw_capture_id, snapshot_id,\n\t\t\t source_time_ms, normalized_row_checksum, source\n\t\t\t FROM ${QUALIFIED_SUMMARY}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {coverage_start_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ORDER BY source_time_ms, capture_bundle_id, snapshot_id`,\n\t\t\tparameters,\n\t\t);\n\t\tconst bundleIds = [\n\t\t\t...new Set(summaries.map((row) => String(row.capture_bundle_id))),\n\t\t].filter(Boolean);\n\t\tconst qualificationRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_qualification_query_failed\",\n\t\t\t`SELECT capture_bundle_id, qualification_event_id, state, receipt_id,\n\t\t\t promotion_identity_sha256, window_start_ms, window_end_ms\n\t\t\t FROM market_data.cex_order_book_capture_qualifications\n\t\t\t WHERE capture_bundle_id IN {capture_bundle_ids:Array(String)}\n\t\t\t ORDER BY event_at_ms DESC\n\t\t\t LIMIT 1 BY capture_bundle_id`,\n\t\t\t{ capture_bundle_ids: bundleIds },\n\t\t);\n\t\tconst qualificationByBundle = new Map(\n\t\t\tqualificationRows.map((row) => [String(row.capture_bundle_id), row]),\n\t\t);\n\t\tconst receiptIds = qualificationRows\n\t\t\t.map((row) => String(row.receipt_id ?? \"\"))\n\t\t\t.filter(Boolean);\n\t\tconst receipts = await this.readReceipts(receiptIds);\n\t\tconst receiptIdsSet = new Set(\n\t\t\treceipts.map((receipt) => receipt.receipt_id),\n\t\t);\n\t\tconst grouped = new Map<string, ArchiveBundleEvidence>();\n\t\tfor (const row of summaries) {\n\t\t\tconst captureBundleId = String(row.capture_bundle_id);\n\t\t\tconst captureOrigin =\n\t\t\t\tString(row.source) === \"external_backfill\"\n\t\t\t\t\t? \"vendor_historical_backfill\"\n\t\t\t\t\t: \"production_capture\";\n\t\t\tconst qualificationRow = qualificationByBundle.get(captureBundleId);\n\t\t\tconst receiptId = String(qualificationRow?.receipt_id ?? \"\");\n\t\t\tconst qualification =\n\t\t\t\tcaptureOrigin === \"vendor_historical_backfill\" && qualificationRow\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tqualificationEventId: String(\n\t\t\t\t\t\t\t\tqualificationRow.qualification_event_id,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tstate: String(qualificationRow.state) as\n\t\t\t\t\t\t\t\t| \"qualified\"\n\t\t\t\t\t\t\t\t| \"quarantined\"\n\t\t\t\t\t\t\t\t| \"revoked\",\n\t\t\t\t\t\t\treceiptId,\n\t\t\t\t\t\t\tpromotionIdentitySha256: String(\n\t\t\t\t\t\t\t\tqualificationRow.promotion_identity_sha256,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: null;\n\t\t\tif (\n\t\t\t\tcaptureOrigin === \"vendor_historical_backfill\" &&\n\t\t\t\t(!qualification || !receiptIdsSet.has(receiptId))\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sourceTimeMs = numberField(row, \"source_time_ms\");\n\t\t\tconst startTimeMs = qualificationRow\n\t\t\t\t? numberField(qualificationRow, \"window_start_ms\")\n\t\t\t\t: sourceTimeMs;\n\t\t\tconst endTimeMs = qualificationRow\n\t\t\t\t? numberField(qualificationRow, \"window_end_ms\")\n\t\t\t\t: sourceTimeMs + 1;\n\t\t\tconst existing = grouped.get(captureBundleId) ?? {\n\t\t\t\tcaptureBundleId,\n\t\t\t\tcaptureOrigin,\n\t\t\t\tstartTimeMs,\n\t\t\t\tendTimeMs,\n\t\t\t\tqualification,\n\t\t\t\tsupportAnchors: [],\n\t\t\t};\n\t\t\texisting.startTimeMs = Math.min(existing.startTimeMs, startTimeMs);\n\t\t\texisting.endTimeMs = Math.max(existing.endTimeMs, endTimeMs);\n\t\t\texisting.supportAnchors.push({\n\t\t\t\tcaptureBundleId,\n\t\t\t\trawCaptureId: String(row.raw_capture_id),\n\t\t\t\tsnapshotId: String(row.snapshot_id),\n\t\t\t\tsourceTimeMs,\n\t\t\t\tnormalizedSummaryChecksum: String(row.normalized_row_checksum),\n\t\t\t});\n\t\t\tgrouped.set(captureBundleId, existing);\n\t\t}\n\t\tconst [prefix, suffix] = await Promise.all([\n\t\t\tthis.boundaryRows(request, \"prefix\"),\n\t\t\tthis.boundaryRows(request, \"suffix\"),\n\t\t]);\n\t\tconst selection = resolveArchiveSelection({\n\t\t\trequest,\n\t\t\tbundles: [...grouped.values()],\n\t\t\tresolvedAtMs: this.options?.nowMs?.() ?? Date.now(),\n\t\t});\n\t\treturn {\n\t\t\tselection,\n\t\t\treceipts,\n\t\t\treaderIdentity,\n\t\t\tverificationBaseline: {\n\t\t\t\tprefixDigest: timelineDigest(prefix),\n\t\t\t\tsuffixDigest: timelineDigest(suffix),\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async readReceipts(\n\t\treceiptIds: readonly string[],\n\t): Promise<PromotionReceiptWire[]> {\n\t\tif (receiptIds.length === 0) return [];\n\t\tconst rows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_receipt_query_failed\",\n\t\t\t`SELECT receipt_id, promotion_identity_sha256, receipt_json\n\t\t\t FROM market_data.cex_order_book_capture_promotions\n\t\t\t WHERE receipt_id IN {receipt_ids:Array(String)}\n\t\t\t ORDER BY receipt_id`,\n\t\t\t{ receipt_ids: [...new Set(receiptIds)].sort() },\n\t\t);\n\t\tlet receipts: Array<PromotionReceiptWire | object>;\n\t\ttry {\n\t\t\treceipts = rows.map((row) => promotionReceiptFromArchiveRow(row));\n\t\t} catch {\n\t\t\tthrow new ArchiveReaderError(\"archive_receipt_invalid\");\n\t\t}\n\t\tif (receipts.some((receipt) => !(\"schema_id\" in receipt))) {\n\t\t\tthrow new Error(\n\t\t\t\t\"provisional promotion receipt cannot qualify final-v1 data\",\n\t\t\t);\n\t\t}\n\t\treturn receipts as PromotionReceiptWire[];\n\t}\n\n\tasync coverage(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t): Promise<QualifiedCoverage> {\n\t\tconst parameters = queryParameters(request);\n\t\tconst summaries = await this.client.query(\n\t\t\t`SELECT snapshot_id, source_time_ms, normalized_row_checksum\n\t\t\t FROM ${QUALIFIED_SUMMARY}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {coverage_start_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ORDER BY source_time_ms, snapshot_id`,\n\t\t\t{\n\t\t\t\t...parameters,\n\t\t\t\tcoverage_start_ms: Math.max(\n\t\t\t\t\t0,\n\t\t\t\t\trequest.window.startTimeMs - request.maxPriorAsOfLagMs,\n\t\t\t\t),\n\t\t\t},\n\t\t);\n\t\tconst [prefix, suffix] = await Promise.all([\n\t\t\tthis.boundaryRows(request, \"prefix\"),\n\t\t\tthis.boundaryRows(request, \"suffix\"),\n\t\t]);\n\t\treturn {\n\t\t\tcomplete: clocksCovered(request, summaries),\n\t\t\tcoverageDigest: timelineDigest(summaries),\n\t\t\tprefixDigest: timelineDigest(prefix),\n\t\t\tsuffixDigest: timelineDigest(suffix),\n\t\t};\n\t}\n\n\tprivate boundaryRows(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tside: \"prefix\" | \"suffix\",\n\t): Promise<Record<string, unknown>[]> {\n\t\tconst boundary =\n\t\t\tside === \"prefix\" ? request.window.startTimeMs : request.window.endTimeMs;\n\t\tconst span = Math.max(\n\t\t\trequest.maxPriorAsOfLagMs,\n\t\t\trequest.budgets.maxBoundaryLookbackMs,\n\t\t);\n\t\tconst boundaryStart =\n\t\t\tside === \"prefix\" ? Math.max(0, boundary - span) : boundary;\n\t\tconst boundaryEnd =\n\t\t\tside === \"prefix\"\n\t\t\t\t? boundary\n\t\t\t\t: Math.min(Number.MAX_SAFE_INTEGER, boundary + span);\n\t\treturn archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_boundary_query_failed\",\n\t\t\t`SELECT 'level' AS table, snapshot_id, source_time_ms, sequence,\n\t\t\t normalized_row_checksum\n\t\t\t FROM ${QUALIFIED_LEVELS}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {boundary_start_ms:UInt64}\n\t\t\t AND source_time_ms < {boundary_end_ms:UInt64}\n\t\t\t UNION ALL\n\t\t\t SELECT 'summary' AS table, snapshot_id, source_time_ms, sequence,\n\t\t\t normalized_row_checksum\n\t\t\t FROM ${QUALIFIED_SUMMARY}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {boundary_start_ms:UInt64}\n\t\t\t AND source_time_ms < {boundary_end_ms:UInt64}\n\t\t\t ORDER BY source_time_ms, table, snapshot_id, normalized_row_checksum`,\n\t\t\t{\n\t\t\t\t...queryParameters(request),\n\t\t\t\tboundary_start_ms: boundaryStart,\n\t\t\t\tboundary_end_ms: boundaryEnd,\n\t\t\t},\n\t\t);\n\t}\n\n\tasync verifyCandidate(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tnormalized: NormalizedBackfill,\n\t\tcaptureBundleId: string,\n\t\tbaseline: ArchivePreflightResolution,\n\t): Promise<CandidateVerification> {\n\t\tif (!baseline.verificationBaseline) {\n\t\t\tthrow new Error(\"qualified verification baseline is missing\");\n\t\t}\n\t\tconst parameters = {\n\t\t\t...queryParameters(request),\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t};\n\t\tconst [levels, summaries, conflicts, prefix, suffix] = await Promise.all([\n\t\t\tthis.client.query(\n\t\t\t\t`SELECT * FROM ${CANDIDATE_LEVELS}\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t AND ${scopeFilter()}\n\t\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t\t AND source_time_ms < {end_time_ms:UInt64}`,\n\t\t\t\tparameters,\n\t\t\t),\n\t\t\tthis.client.query(\n\t\t\t\t`SELECT * FROM ${CANDIDATE_SUMMARY}\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t AND ${scopeFilter()}\n\t\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t\t AND source_time_ms < {end_time_ms:UInt64}`,\n\t\t\t\tparameters,\n\t\t\t),\n\t\t\tthis.client.query(\n\t\t\t\t`SELECT count() AS conflicts FROM\n\t\t\t\t (\n\t\t\t\t SELECT snapshot_id FROM market_data.cex_order_book_levels_conflicts\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t UNION ALL\n\t\t\t\t SELECT snapshot_id FROM market_data.cex_order_book_depth_summary_conflicts\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t )`,\n\t\t\t\tparameters,\n\t\t\t),\n\t\t\tthis.boundaryRows(request, \"prefix\"),\n\t\t\tthis.boundaryRows(request, \"suffix\"),\n\t\t]);\n\t\tconst queriedRows = [\n\t\t\t...candidateRows(\"market_data.cex_order_book_levels\", levels),\n\t\t\t...candidateRows(\"market_data.cex_order_book_depth_summary\", summaries),\n\t\t];\n\t\tconst semantic = verifySemanticPromotion({\n\t\t\trequest,\n\t\t\tnormalizedRows: normalized.rows,\n\t\t\tcandidateRows: queriedRows,\n\t\t\tconflictCount: Number(conflicts[0]?.conflicts ?? 0),\n\t\t\tprefixDigestBefore: baseline.verificationBaseline.prefixDigest,\n\t\t\tprefixDigestAfter: timelineDigest(prefix),\n\t\t\tsuffixDigestBefore: baseline.verificationBaseline.suffixDigest,\n\t\t\tsuffixDigestAfter: timelineDigest(suffix),\n\t\t\tseamVerified: this.seamIsOrdered(queriedRows),\n\t\t\texporterCompatible: queriedRows.every(\n\t\t\t\t({ row }) =>\n\t\t\t\t\ttypeof row.capture_bundle_id === \"string\" &&\n\t\t\t\t\ttypeof row.normalized_row_checksum === \"string\",\n\t\t\t),\n\t\t\t...(request.sourcePolicy === \"fill_gaps\"\n\t\t\t\t? {\n\t\t\t\t\t\tcoverageSourceTimesMs: [\n\t\t\t\t\t\t\t...baseline.selection.support_anchors.map((anchor) =>\n\t\t\t\t\t\t\t\tDate.parse(anchor.source_time),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...summaries.map((row) => numberField(row, \"source_time_ms\")),\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t});\n\t\treturn { ...semantic, captureBundleId };\n\t}\n\n\tprivate seamIsOrdered(rows: readonly BackfillArchiveRow[]): boolean {\n\t\tconst summaries = rows\n\t\t\t.filter(({ table }) => table.endsWith(\"depth_summary\"))\n\t\t\t.map(({ row }) => ({\n\t\t\t\ttime: numberField(row, \"source_time_ms\"),\n\t\t\t\tsequence: uint64Field(row, \"sequence\"),\n\t\t\t}))\n\t\t\t.sort((left, right) => left.time - right.time);\n\t\tfor (let index = 1; index < summaries.length; index += 1) {\n\t\t\tconst previous = summaries[index - 1];\n\t\t\tconst current = summaries[index];\n\t\t\tif (!previous || !current || current.time < previous.time) return false;\n\t\t\tif (\n\t\t\t\tprevious.sequence !== undefined &&\n\t\t\t\tcurrent.sequence !== undefined &&\n\t\t\t\tcurrent.sequence < previous.sequence\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn summaries.length > 0;\n\t}\n}\n\nexport function createClickHouseArchiveQueryClient(input: {\n\turl: string;\n\tusername?: string;\n\tpassword?: string;\n\tfetch?: typeof fetch;\n}): ArchiveQueryClient {\n\tconst request = input.fetch ?? fetch;\n\tconst parameterValue = (value: ArchiveQueryValue): string => {\n\t\tif (!Array.isArray(value)) return String(value);\n\t\treturn `[${value\n\t\t\t.map((entry) => {\n\t\t\t\tconst jsonString = JSON.stringify(entry);\n\t\t\t\treturn `'${jsonString.slice(1, -1).replaceAll(\"'\", \"\\\\'\")}'`;\n\t\t\t})\n\t\t\t.join(\",\")}]`;\n\t};\n\treturn {\n\t\tasync query(sql, parameters = {}) {\n\t\t\tconst endpoint = new URL(input.url);\n\t\t\tconst embeddedUsername = decodeURIComponent(endpoint.username);\n\t\t\tconst embeddedPassword = decodeURIComponent(endpoint.password);\n\t\t\tendpoint.username = \"\";\n\t\t\tendpoint.password = \"\";\n\t\t\tendpoint.searchParams.set(\"database\", \"market_data\");\n\t\t\tfor (const [key, value] of Object.entries(parameters)) {\n\t\t\t\tendpoint.searchParams.set(`param_${key}`, parameterValue(value));\n\t\t\t}\n\t\t\tconst response = await request(endpoint, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-ClickHouse-User\": input.username || embeddedUsername || \"default\",\n\t\t\t\t\t\"X-ClickHouse-Key\": input.password ?? embeddedPassword,\n\t\t\t\t},\n\t\t\t\tbody: `${sql.trim()}\\nFORMAT JSONEachRow`,\n\t\t\t});\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(`qualified_archive_query_failed:${response.status}`);\n\t\t\t}\n\t\t\tconst text = (await response.text()).trim();\n\t\t\treturn text\n\t\t\t\t? text\n\t\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t\t.map((line) => JSON.parse(line) as Record<string, unknown>)\n\t\t\t\t: [];\n\t\t},\n\t};\n}\n",
|
|
154
|
+
"import { documentSha256, jcsSha256 } from \"./identity\";\nimport capabilityPolicyDocument from \"./policies/capability-policy-v3.json\" with {\n\ttype: \"json\",\n};\nimport resourcePolicyDocument from \"./policies/resource-policy-v2.json\" with {\n\ttype: \"json\",\n};\n\nexport const CAPABILITY_POLICY_ID =\n\t\"market-data-vendor-backfill-capabilities/v3\" as const;\nexport const RESOURCE_POLICY_ID =\n\t\"market-data-vendor-backfill-resources/v2\" as const;\nexport const ADAPTER_POLICY_ID = \"cryptohftdata-orderbook-adapter/v1\" as const;\nexport const ACQUISITION_POLICY_ID =\n\t\"cryptohftdata-hourly-acquisition/v2\" as const;\n\nconst {\n\tpolicy_sha256: declaredCapabilityPolicySha256,\n\t...capabilityPolicyContent\n} = capabilityPolicyDocument;\nif (\n\tcapabilityPolicyContent.policy_id !== CAPABILITY_POLICY_ID ||\n\tjcsSha256(capabilityPolicyContent) !== declaredCapabilityPolicySha256\n) {\n\tthrow new Error(\"current capability policy asset identity is invalid\");\n}\n\nexport const CAPABILITY_POLICY = Object.freeze({\n\t...capabilityPolicyContent,\n\tpolicy_id: CAPABILITY_POLICY_ID,\n\tpolicy_sha256: declaredCapabilityPolicySha256,\n});\n\nconst {\n\tpolicy_sha256: declaredResourcePolicySha256,\n\t...resourcePolicyContent\n} = resourcePolicyDocument;\nif (\n\tresourcePolicyContent.policy_id !== RESOURCE_POLICY_ID ||\n\tjcsSha256(resourcePolicyContent) !== declaredResourcePolicySha256\n) {\n\tthrow new Error(\"current resource policy asset identity is invalid\");\n}\n\nexport const RESOURCE_POLICY = Object.freeze({\n\t...resourcePolicyContent,\n\tpolicy_id: RESOURCE_POLICY_ID,\n\tpolicy_sha256: declaredResourcePolicySha256,\n});\n\nexport const EFFECTIVE_ADAPTER_POLICY_PIN = Object.freeze({\n\tpolicy_id: ADAPTER_POLICY_ID,\n\tpolicy_sha256: jcsSha256(capabilityPolicyContent.adapter_policy),\n});\n\nexport const EFFECTIVE_ACQUISITION_POLICY_PIN = Object.freeze({\n\tpolicy_id: ACQUISITION_POLICY_ID,\n\tpolicy_sha256: jcsSha256(capabilityPolicyContent.acquisition_policy),\n});\n\nexport type PolicyPin = {\n\tpolicy_id: string;\n\tpolicy_sha256: string;\n};\n\nexport function assertPolicyDocumentIdentity(\n\tpolicy: Record<string, unknown> & { policy_sha256: string },\n): void {\n\tif (documentSha256(policy, \"policy_sha256\") !== policy.policy_sha256) {\n\t\tthrow new Error(\"policy_sha256 does not match RFC 8785 policy content\");\n\t}\n}\n",
|
|
155
|
+
"import type { BrokerArchiveRow } from \"../broker-execution-archive/types\";\nimport type {\n\tNormalizedOrderBookSnapshot,\n\tOrderBookConstructionMode,\n} from \"../order-book\";\nimport {\n\tcaptureCoreFields,\n\tnormalizeTimestampMs,\n\tsha256Canonical,\n} from \"./capture-contract\";\nimport type { MarketCaptureContext, RawCapture } from \"./types\";\n\nexport class OrderBookValidationError extends Error {\n\treadonly reason: string;\n\n\tconstructor(reason: string) {\n\t\tsuper(`Invalid order-book evidence: ${reason}`);\n\t\tthis.name = \"OrderBookValidationError\";\n\t\tthis.reason = reason;\n\t}\n}\n\ntype ValidLevel = { price: number; amount: number };\n\nexport type CanonicalOrderBookRows = {\n\tsnapshotId: string;\n\tlevels: BrokerArchiveRow[];\n\tsummary: BrokerArchiveRow;\n};\n\nfunction parseSequence(\n\tvalue: NormalizedOrderBookSnapshot[\"sequence\"],\n): number | string | undefined {\n\tif (value === undefined) return undefined;\n\tif (typeof value === \"number\") {\n\t\tif (Number.isSafeInteger(value) && value >= 0) return value;\n\t\tthrow new OrderBookValidationError(\n\t\t\t\"sequence must be a non-negative integer\",\n\t\t);\n\t}\n\tif (typeof value !== \"string\" || !/^\\d+$/.test(value)) {\n\t\tthrow new OrderBookValidationError(\n\t\t\t\"sequence must be a non-negative integer\",\n\t\t);\n\t}\n\tconst parsed = BigInt(value);\n\tif (parsed > 18_446_744_073_709_551_615n) {\n\t\tthrow new OrderBookValidationError(\"sequence exceeds UInt64\");\n\t}\n\treturn parsed.toString(10);\n}\n\nfunction validateSide(\n\tside: \"bid\" | \"ask\",\n\tlevels: number[][],\n\tdepthLimit: number,\n): ValidLevel[] {\n\tif (levels.length === 0) {\n\t\tthrow new OrderBookValidationError(`${side} side is missing`);\n\t}\n\tconst retained = levels.slice(0, depthLimit);\n\tfor (let index = 0; index < retained.length; index += 1) {\n\t\tconst entry = retained[index];\n\t\tconst price = entry?.[0];\n\t\tconst amount = entry?.[1];\n\t\tif (\n\t\t\t!Array.isArray(entry) ||\n\t\t\tentry.length < 2 ||\n\t\t\tprice === undefined ||\n\t\t\tamount === undefined ||\n\t\t\t!Number.isFinite(price) ||\n\t\t\t!Number.isFinite(amount) ||\n\t\t\tprice <= 0 ||\n\t\t\tamount <= 0\n\t\t) {\n\t\t\tthrow new OrderBookValidationError(\n\t\t\t\t`${side} level ${index} has a non-positive or non-finite price/amount`,\n\t\t\t);\n\t\t}\n\t\tif (index > 0) {\n\t\t\tconst previous = retained[index - 1]?.[0];\n\t\t\tif (\n\t\t\t\tprevious === undefined ||\n\t\t\t\t(side === \"bid\" ? price >= previous : price <= previous)\n\t\t\t) {\n\t\t\t\tthrow new OrderBookValidationError(\n\t\t\t\t\t`${side} levels are not strictly ${side === \"bid\" ? \"descending\" : \"ascending\"}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\treturn retained.map(([price, amount]) => ({\n\t\tprice: price as number,\n\t\tamount: amount as number,\n\t}));\n}\n\nfunction normalizedBands(input: readonly number[] | undefined): number[] {\n\tconst bands = input ?? [10, 25, 50, 100];\n\tfor (const band of bands) {\n\t\tif (!Number.isFinite(band) || band <= 0 || !Number.isInteger(band)) {\n\t\t\tthrow new OrderBookValidationError(\n\t\t\t\t\"measurement bands must be positive integer basis points\",\n\t\t\t);\n\t\t}\n\t}\n\treturn [...new Set(bands)].sort((left, right) => left - right);\n}\n\nfunction checksumRow(row: Record<string, unknown>): Record<string, unknown> {\n\treturn { ...row, normalized_row_checksum: sha256Canonical(row) };\n}\n\nfunction commonEvidenceFields(\n\tcontext: MarketCaptureContext,\n\trawCapture: RawCapture,\n\tinput: {\n\t\tsnapshotId: string;\n\t\tsequence?: number | string;\n\t\tdepthLimit: number;\n\t\teventTimeMs: number;\n\t\treceivedTimeMs: number;\n\t\tconstructionMode:\n\t\t\t| OrderBookConstructionMode\n\t\t\t| \"policy_neutral_top_n_state_change_tape/v1\";\n\t},\n): Record<string, unknown> {\n\treturn {\n\t\t...captureCoreFields(context, rawCapture),\n\t\tsource_time_ms: input.eventTimeMs,\n\t\treceived_time_ms: input.receivedTimeMs,\n\t\tsnapshot_id: input.snapshotId,\n\t\tconstruction_mode: input.constructionMode,\n\t\tgap_policy: \"record_gap\",\n\t\tdepth_limit: input.depthLimit,\n\t\tsequence: input.sequence,\n\t\texact_l2_reconstruction_complete: 0,\n\t};\n}\n\nexport function buildCanonicalOrderBookRows(input: {\n\tcontext: MarketCaptureContext;\n\tsnapshot: NormalizedOrderBookSnapshot;\n\trawCapture: RawCapture;\n\tdepthLimit: number;\n\tmeasurementBandsBps?: readonly number[];\n\tconstructionMode?:\n\t\t| OrderBookConstructionMode\n\t\t| \"policy_neutral_top_n_state_change_tape/v1\";\n}): CanonicalOrderBookRows {\n\tif (\n\t\t!Number.isSafeInteger(input.depthLimit) ||\n\t\tinput.depthLimit <= 0 ||\n\t\tinput.depthLimit > 500\n\t) {\n\t\tthrow new OrderBookValidationError(\n\t\t\t\"depth limit must be an integer between 1 and 500\",\n\t\t);\n\t}\n\tif (input.context.feed !== \"ORDERBOOK\") {\n\t\tthrow new OrderBookValidationError(\"capture context feed is not ORDERBOOK\");\n\t}\n\tif (input.constructionMode === \"exact_l2_reconstruction\") {\n\t\tthrow new OrderBookValidationError(\n\t\t\t\"exact L2 requires a complete continuity proof and is unsupported\",\n\t\t);\n\t}\n\n\tlet eventTimeMs: number;\n\tlet receivedTimeMs: number;\n\ttry {\n\t\teventTimeMs = normalizeTimestampMs(\n\t\t\tinput.snapshot.timestamp,\n\t\t\t\"source_time_ms\",\n\t\t);\n\t\treceivedTimeMs = normalizeTimestampMs(\n\t\t\tinput.snapshot.receivedTimestamp,\n\t\t\t\"received_time_ms\",\n\t\t);\n\t} catch (error) {\n\t\tthrow new OrderBookValidationError(\n\t\t\terror instanceof Error ? error.message : \"invalid timestamp\",\n\t\t);\n\t}\n\tif (receivedTimeMs < eventTimeMs) {\n\t\tthrow new OrderBookValidationError(\n\t\t\t\"received timestamp precedes source timestamp\",\n\t\t);\n\t}\n\n\tconst bids = validateSide(\"bid\", input.snapshot.bids, input.depthLimit);\n\tconst asks = validateSide(\"ask\", input.snapshot.asks, input.depthLimit);\n\tconst bestBid = bids[0] as ValidLevel;\n\tconst bestAsk = asks[0] as ValidLevel;\n\tif (bestBid.price >= bestAsk.price) {\n\t\tthrow new OrderBookValidationError(\"book is crossed or locked\");\n\t}\n\tconst sequence = parseSequence(input.snapshot.sequence);\n\tconst midPrice = (bestBid.price + bestAsk.price) / 2;\n\tconst spread = bestAsk.price - bestBid.price;\n\tconst spreadBps = (spread / midPrice) * 10_000;\n\tconst snapshotId = sha256Canonical({\n\t\texchange: input.context.exchange.trim().toLowerCase(),\n\t\ttrading_pair: input.context.symbol.trim().replace(\"/\", \"-\"),\n\t\tsource_time_ms: eventTimeMs,\n\t\tsequence,\n\t\tdepth_limit: input.depthLimit,\n\t\tbids,\n\t\tasks,\n\t\tschema_version: input.context.schemaVersion,\n\t});\n\tconst common = commonEvidenceFields(input.context, input.rawCapture, {\n\t\tsnapshotId,\n\t\tsequence,\n\t\tdepthLimit: input.depthLimit,\n\t\teventTimeMs,\n\t\treceivedTimeMs,\n\t\tconstructionMode: input.constructionMode ?? \"sampled_top_n_snapshot\",\n\t});\n\n\tconst levels: BrokerArchiveRow[] = (\n\t\t[\n\t\t\t[\"bid\", bids],\n\t\t\t[\"ask\", asks],\n\t\t] as const\n\t).flatMap(([side, sideLevels]) =>\n\t\tsideLevels.map(({ price, amount }, levelIndex) => {\n\t\t\tconst row = checksumRow({\n\t\t\t\t...common,\n\t\t\t\tside,\n\t\t\t\tlevel_index: levelIndex,\n\t\t\t\tprice,\n\t\t\t\tamount,\n\t\t\t\tnotional: price * amount,\n\t\t\t\tmid_price: midPrice,\n\t\t\t\tspread_from_mid_bps: Math.abs((price - midPrice) / midPrice) * 10_000,\n\t\t\t});\n\t\t\treturn { table: \"market_data.cex_order_book_levels\", row };\n\t\t}),\n\t);\n\n\tconst bands = normalizedBands(input.measurementBandsBps);\n\tconst bidDepth = bands.map((band) => {\n\t\tconst minimumPrice = bestBid.price * (1 - band / 10_000);\n\t\treturn bids\n\t\t\t.filter(({ price }) => price >= minimumPrice)\n\t\t\t.reduce((sum, { amount }) => sum + amount, 0);\n\t});\n\tconst askDepth = bands.map((band) => {\n\t\tconst maximumPrice = bestAsk.price * (1 + band / 10_000);\n\t\treturn asks\n\t\t\t.filter(({ price }) => price <= maximumPrice)\n\t\t\t.reduce((sum, { amount }) => sum + amount, 0);\n\t});\n\tconst summaryRow = checksumRow({\n\t\t...common,\n\t\tbest_bid: bestBid.price,\n\t\tbest_ask: bestAsk.price,\n\t\tbest_bid_amount: bestBid.amount,\n\t\tbest_ask_amount: bestAsk.amount,\n\t\tmid_price: midPrice,\n\t\tspread,\n\t\tspread_bps: spreadBps,\n\t\tstaleness_ms: receivedTimeMs - eventTimeMs,\n\t\tbid_level_count: bids.length,\n\t\task_level_count: asks.length,\n\t\tmeasurement_bands_bps: bands,\n\t\tbid_depth_by_band: bidDepth,\n\t\task_depth_by_band: askDepth,\n\t});\n\n\treturn {\n\t\tsnapshotId,\n\t\tlevels,\n\t\tsummary: {\n\t\t\ttable: \"market_data.cex_order_book_depth_summary\",\n\t\t\trow: summaryRow,\n\t\t},\n\t};\n}\n",
|
|
159
156
|
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport {\n\ttype BackfillArchiveRow,\n\tEXTERNAL_BACKFILL_SOURCE,\n\ttype ForwarderBatch,\n} from \"./contracts\";\n\nexport const BACKFILL_MAX_BATCH_ROWS = 1_000;\nexport const BACKFILL_MAX_BATCH_BYTES = 5 * 1024 * 1024;\n\nfunction serializedBytes(value: unknown): number {\n\treturn new TextEncoder().encode(JSON.stringify(value)).byteLength;\n}\n\nexport function buildForwarderBatches(input: {\n\tcaptureBundleId: string;\n\tdeploymentId: string;\n\trows: readonly BackfillArchiveRow[];\n\tmaxRows?: number;\n\tmaxBytes?: number;\n}): ForwarderBatch[] {\n\tconst maxRows = input.maxRows ?? BACKFILL_MAX_BATCH_ROWS;\n\tconst maxBytes = input.maxBytes ?? BACKFILL_MAX_BATCH_BYTES;\n\tconst tables = new Map<string, BackfillArchiveRow[]>();\n\tfor (const row of input.rows) {\n\t\tconst group = tables.get(row.table) ?? [];\n\t\tgroup.push(row);\n\t\ttables.set(row.table, group);\n\t}\n\tconst batches: ForwarderBatch[] = [];\n\tfor (const table of [...tables.keys()].sort()) {\n\t\tconst rows = tables.get(table) as BackfillArchiveRow[];\n\t\tlet chunk: BackfillArchiveRow[] = [];\n\t\tlet chunkBytes = 0;\n\t\tlet ordinal = 0;\n\t\tconst flush = () => {\n\t\t\tif (chunk.length === 0) return;\n\t\t\tconst batchId = sha256Canonical({\n\t\t\t\tcapture_bundle_id: input.captureBundleId,\n\t\t\t\ttable,\n\t\t\t\tchunk_ordinal: ordinal,\n\t\t\t\trows: chunk,\n\t\t\t});\n\t\t\tbatches.push({\n\t\t\t\tsource: EXTERNAL_BACKFILL_SOURCE,\n\t\t\t\tdeployment_id: input.deploymentId,\n\t\t\t\tbatch_id: batchId,\n\t\t\t\trows: chunk,\n\t\t\t});\n\t\t\tordinal += 1;\n\t\t\tchunk = [];\n\t\t\tchunkBytes = 0;\n\t\t};\n\t\tfor (const row of rows) {\n\t\t\tconst bytes = serializedBytes(row);\n\t\t\tif (bytes > maxBytes) {\n\t\t\t\tthrow new Error(`archive_row_exceeds_byte_budget:${table}`);\n\t\t\t}\n\t\t\tif (chunk.length >= maxRows || chunkBytes + bytes > maxBytes) flush();\n\t\t\tchunk.push(row);\n\t\t\tchunkBytes += bytes;\n\t\t}\n\t\tflush();\n\t}\n\treturn batches;\n}\n",
|
|
160
|
-
"import {\n\tARCHIVE_SELECTION_SCHEMA_ID,\n\tBACKFILL_REQUEST_SCHEMA_ID,\n\tBACKFILL_RESULT_SCHEMA_ID,\n\tcreateBackfillIdempotencyKey,\n\tfinalizeArchiveSelection,\n\tfinalizeBackfillResult,\n\tfinalizeRequiredClock,\n\tPROMOTION_RECEIPT_SCHEMA_ID,\n\tREQUIRED_CLOCK_SCHEMA_ID,\n} from \"./contracts\";\nimport { jcsSha256 } from \"./identity\";\nimport {\n\tEFFECTIVE_ACQUISITION_POLICY_PIN,\n\tEFFECTIVE_ADAPTER_POLICY_PIN,\n\tLEGACY_CAPABILITY_POLICY,\n\tRESOURCE_POLICY,\n\tSCHEMA_MANIFEST,\n} from \"./manifests\";\nimport { finalizePromotionReceipt } from \"./promotion\";\n\nconst requestId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f100\";\nconst attemptId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f101\";\nconst clockId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f102\";\nconst authorizationId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f103\";\nconst qualificationEventId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f104\";\nconst targetId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f105\";\nconst captureBundleId = \"d\".repeat(64);\nconst scope = {\n\texchange: \"okx\",\n\ttrading_pair: \"ARB-USDT\",\n\tmarket_type: \"spot\" as const,\n\tfeed: \"ORDERBOOK\" as const,\n};\nconst window = {\n\tstart_at: \"2026-08-18T09:27:15.000Z\",\n\tend_at: \"2026-08-18T09:27:17.000Z\",\n};\nconst coveragePolicy = {\n\tpolicy_id: \"prior-asof-strict/v1\" as const,\n\tmax_asof_lag_ms: 5_000,\n\tfuture_rows: \"reject\" as const,\n\tmissing_required_event: \"fail\" as const,\n};\n\nconst requiredClock = finalizeRequiredClock({\n\tschema_id: REQUIRED_CLOCK_SCHEMA_ID,\n\tclock_id: clockId,\n\tcreated_at: \"2026-08-20T12:00:00.000Z\",\n\ttargets: [{ target_id: targetId, target_at: \"2026-08-18T09:27:16.000Z\" }],\n});\n\nconst initialSelection = finalizeArchiveSelection({\n\tschema_id: ARCHIVE_SELECTION_SCHEMA_ID,\n\tscope,\n\trequired_clock: {\n\t\tclock_id: requiredClock.clock_id,\n\t\tclock_sha256: requiredClock.clock_sha256,\n\t\tevent_count: requiredClock.targets.length,\n\t},\n\tcoverage_policy: coveragePolicy,\n\tsource_policy: \"authoritative_window\",\n\tcoverage_class: \"missing\",\n\trequested_intervals: [window],\n\tselected_intervals: [],\n\tprecedence: [\"vendor\"],\n\tbundles: [],\n\tsupport_anchors: [],\n\treceipt_ids: [],\n\tqualification_event_ids: [],\n\tresolved_at: \"2026-08-20T12:00:00.000Z\",\n});\n\nconst requestContent = {\n\tschema_id: BACKFILL_REQUEST_SCHEMA_ID,\n\trequest_id: requestId,\n\tattempt_id: attemptId,\n\tscope,\n\twindow,\n\tdepth: 20,\n\tconstruction_mode: \"sampled_top_n_snapshot\" as const,\n\tsource_policy: \"authoritative_window\" as const,\n\ttarget: { environment: \"production\", cluster: \"cex-archive-primary\" },\n\tcoverage_policy: coveragePolicy,\n\trequired_clock: {\n\t\tschema_id: REQUIRED_CLOCK_SCHEMA_ID,\n\t\tclock_id: requiredClock.clock_id,\n\t\tfile_name: \"required-clock.json\",\n\t\tclock_sha256: requiredClock.clock_sha256,\n\t\tevent_count: requiredClock.targets.length,\n\t},\n\tinitial_selection: initialSelection,\n\texpected_canonical_schema: {\n\t\tschema_id: \"cex-order-book-canonical/v1\",\n\t\tschema_sha256: \"a\".repeat(64),\n\t},\n\tproduct_pins: {\n\t\tcapability_policy: {\n\t\t\tpolicy_id: LEGACY_CAPABILITY_POLICY.policy_id,\n\t\t\tpolicy_sha256: LEGACY_CAPABILITY_POLICY.policy_sha256,\n\t\t},\n\t\tresource_policy: {\n\t\t\tpolicy_id: RESOURCE_POLICY.policy_id,\n\t\t\tpolicy_sha256: RESOURCE_POLICY.policy_sha256,\n\t\t},\n\t},\n\tproduction_authorization_id: authorizationId,\n};\n\nconst request = {\n\t...requestContent,\n\tidempotency_key: createBackfillIdempotencyKey(requestContent),\n};\n\nconst promotionReceipt = finalizePromotionReceipt({\n\tschema_id: PROMOTION_RECEIPT_SCHEMA_ID,\n\tverified_at: \"2026-08-20T12:00:02.000Z\",\n\trequest_id: request.request_id,\n\tidempotency_key: request.idempotency_key,\n\tsource: \"external_backfill\",\n\tcapture_origin: \"vendor_historical_backfill\",\n\tsource_mode: \"vendor_historical_backfill_v1\",\n\tprovider: \"cryptohftdata\",\n\tadapter_version: \"cryptohftdata-orderbook/v2\",\n\teffective_policies: {\n\t\tcapability_policy: request.product_pins.capability_policy,\n\t\tresource_policy: request.product_pins.resource_policy,\n\t\tadapter_policy: EFFECTIVE_ADAPTER_POLICY_PIN,\n\t\tacquisition_policy: EFFECTIVE_ACQUISITION_POLICY_PIN,\n\t},\n\tcapture_bundle_id: captureBundleId,\n\tscope,\n\twindow,\n\tdepth: request.depth,\n\tconstruction_mode: request.construction_mode,\n\tcanonical_schema: request.expected_canonical_schema,\n\tcoverage_policy: coveragePolicy,\n\tselection_sha256: initialSelection.selection_sha256,\n\tvendor_semantic_digest: \"e\".repeat(64),\n\tcanonical_semantic_digest: \"f\".repeat(64),\n\tprefix_digest: \"1\".repeat(64),\n\tsuffix_digest: \"2\".repeat(64),\n\tseam_verified: true,\n\tcoverage_verified: true,\n\tdataset_objects: [\n\t\t{\n\t\t\tidentity: \"okx/spot/orderbook/hour/arb-usdt/2026-08-18t09\",\n\t\t\tchecksum: \"3\".repeat(64),\n\t\t\tbytes: 1_000,\n\t\t\trows: 50,\n\t\t},\n\t],\n});\n\nconst resolvedSelection = finalizeArchiveSelection({\n\tschema_id: ARCHIVE_SELECTION_SCHEMA_ID,\n\tscope,\n\trequired_clock: initialSelection.required_clock,\n\tcoverage_policy: coveragePolicy,\n\tsource_policy: \"authoritative_window\",\n\tcoverage_class: \"complete\",\n\trequested_intervals: [window],\n\tselected_intervals: [\n\t\t{\n\t\t\t...window,\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\t},\n\t],\n\tprecedence: [\"vendor\"],\n\tbundles: [\n\t\t{\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\t\tinterval: window,\n\t\t\tqualification: {\n\t\t\t\tqualification_event_id: qualificationEventId,\n\t\t\t\tstate: \"qualified\",\n\t\t\t\treceipt_id: promotionReceipt.receipt_id,\n\t\t\t\tpromotion_identity_sha256: promotionReceipt.promotion_identity_sha256,\n\t\t\t},\n\t\t},\n\t],\n\tsupport_anchors: [\n\t\t{\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\traw_capture_id: \"4\".repeat(64),\n\t\t\tsnapshot_id: \"5\".repeat(64),\n\t\t\tsource_time: \"2026-08-18T09:27:15.308Z\",\n\t\t\tnormalized_summary_checksum: \"6\".repeat(64),\n\t\t\tmetadata_ref: {\n\t\t\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\t\t\tqualification_event_id: qualificationEventId,\n\t\t\t\treceipt_id: promotionReceipt.receipt_id,\n\t\t\t},\n\t\t},\n\t],\n\treceipt_ids: [promotionReceipt.receipt_id],\n\tqualification_event_ids: [qualificationEventId],\n\tresolved_at: \"2026-08-20T12:00:02.000Z\",\n});\n\nconst result = finalizeBackfillResult({\n\tschema_id: BACKFILL_RESULT_SCHEMA_ID,\n\tjob_id: \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f120\",\n\trequest_file_sha256: \"7\".repeat(64),\n\texecutable_sha256: \"8\".repeat(64),\n\tschema_manifest_sha256: SCHEMA_MANIFEST.manifest_sha256,\n\tcex_package: {\n\t\tname: \"@usherlabs/cex-broker\",\n\t\tversion: \"0.2.46\",\n\t\tpackage_sha256: \"9\".repeat(64),\n\t},\n\tcapability_policy: request.product_pins.capability_policy,\n\tresource_policy: request.product_pins.resource_policy,\n\tbuild: {\n\t\tfiet_tee_commit: \"a\".repeat(40),\n\t\tcreated_at: \"2026-08-20T12:00:00.000Z\",\n\t},\n\tstarted_at: \"2026-08-20T12:00:01.000Z\",\n\tcompleted_at: \"2026-08-20T12:00:03.000Z\",\n\toutcome: {\n\t\tstatus: \"promoted\",\n\t\treason_code: \"promotion_qualified\",\n\t\treason_subcode: null,\n\t\trequest_id: request.request_id,\n\t\tidempotency_key: request.idempotency_key,\n\t\ttarget: request.target,\n\t\tselection: resolvedSelection,\n\t\treceipt: promotionReceipt,\n\t\tdiagnostics: { promoted_rows: 50 },\n\t},\n});\n\nconst jcsEdgeVector = {\n\tliterals: [null, true, false],\n\tnumbers: [Number(\"333333333.33333329\"), 1e30, 4.5, 0.002],\n\tstring: '€$\\u000f\\nA\\'B\"\\\\\"/',\n};\n\nexport const CONFORMANCE_FIXTURES = Object.freeze({\n\tfixture_id: \"market-data-vendor-backfill-conformance/v1\",\n\tdocuments: {\n\t\trequired_clock: requiredClock,\n\t\tarchive_selection: resolvedSelection,\n\t\trequest,\n\t\tpromotion_receipt: promotionReceipt,\n\t\tresult,\n\t},\n\tidentities: {\n\t\tidempotency_key: request.idempotency_key,\n\t\tclock_sha256: requiredClock.clock_sha256,\n\t\tinitial_selection_sha256: initialSelection.selection_sha256,\n\t\tselection_sha256: resolvedSelection.selection_sha256,\n\t\tpromotion_identity_sha256: promotionReceipt.promotion_identity_sha256,\n\t\treceipt_id: promotionReceipt.receipt_id,\n\t\tresult_sha256: result.result_sha256,\n\t\tcapability_policy_sha256: LEGACY_CAPABILITY_POLICY.policy_sha256,\n\t\tresource_policy_sha256: RESOURCE_POLICY.policy_sha256,\n\t},\n\tjcs_edge_vector: jcsEdgeVector,\n\thashes: { jcs_edge_vector_sha256: jcsSha256(jcsEdgeVector) },\n});\n",
|
|
161
|
-
"import { createHash } from \"node:crypto\";\nimport { decompress } from \"fzstd\";\nimport { parquetReadObjects } from \"hyparquet\";\nimport { buildCanonicalOrderBookRows } from \"../market-data-archive/canonical-orderbook\";\nimport {\n\tCHECKSUM_ALGORITHM,\n\tMARKET_CAPTURE_SCHEMA_VERSION,\n\tsha256Canonical,\n} from \"../market-data-archive/capture-contract\";\nimport type {\n\tMarketCaptureContext,\n\tRawCapture,\n} from \"../market-data-archive/types\";\nimport {\n\ttype BackfillArchiveRow,\n\tEXTERNAL_BACKFILL_SOURCE,\n\tHISTORICAL_VENDOR_SOURCE_MODE,\n\ttype MarketDataVendorBackfillRequest,\n\ttype ProviderCapability,\n\ttype ProviderObjectEvidence,\n\tVENDOR_DATASET_RAW_CAPTURE_SCOPE,\n} from \"./contracts\";\nimport type { NormalizedBackfill, ProviderDataset } from \"./core\";\nimport { semanticDigest } from \"./semantic-verification\";\n\nexport const CRYPTOHFTDATA_ADAPTER_VERSION =\n\t\"cryptohftdata-orderbook/v2\" as const;\nexport const CRYPTOHFTDATA_API_URL = \"https://api.cryptohftdata.com\" as const;\nconst CRYPTOHFTDATA_HISTORY_START_MS = Date.UTC(2025, 5, 28);\nconst HOUR_MS = 60 * 60 * 1_000;\n\nexport type CryptoHftDataCapabilityProfile = Readonly<{\n\tprofileId: string;\n\texchange: string;\n\ttradingPair: string;\n\tsourceSymbol: string;\n\tmarketType: \"spot\" | \"swap\" | \"future\";\n\tproviderExchangeId: string;\n\thistoryStartMs: number;\n\tmaxDepth: number;\n\teventTimeUnit: \"milliseconds\";\n\treceivedTimeUnit: \"nanoseconds\";\n\tsnapshotGrouping:\n\t\t| \"event_time_last_update_id_object\"\n\t\t| \"event_time_final_update_id_object\";\n\tsequenceSemantics: \"binance_u_U_pu\" | \"okx_seq_id_prev_seq_id\";\n\tconstructionModes: readonly [\"sampled_top_n_snapshot\"];\n\tsourcePolicies: readonly (\"authoritative_window\" | \"fill_gaps\")[];\n}>;\n\n// This profile is exported for explicit enablement by a conformance-tested\n// consumer. The adapter's default registry is deliberately empty: possession\n// of a provider credential must never advertise an unverified data profile.\nexport const CRYPTOHFTDATA_BINANCE_SPOT_BTCUSDT_PROFILE: CryptoHftDataCapabilityProfile =\n\tObject.freeze({\n\t\tprofileId: \"cryptohftdata/binance_spot/BTCUSDT/v1\",\n\t\texchange: \"binance\",\n\t\ttradingPair: \"BTC-USDT\",\n\t\tsourceSymbol: \"BTCUSDT\",\n\t\tmarketType: \"spot\",\n\t\tproviderExchangeId: \"binance_spot\",\n\t\thistoryStartMs: CRYPTOHFTDATA_HISTORY_START_MS,\n\t\tmaxDepth: 500,\n\t\teventTimeUnit: \"milliseconds\",\n\t\treceivedTimeUnit: \"nanoseconds\",\n\t\tsnapshotGrouping: \"event_time_last_update_id_object\",\n\t\tsequenceSemantics: \"binance_u_U_pu\",\n\t\tconstructionModes: [\"sampled_top_n_snapshot\"] as const,\n\t\tsourcePolicies: [\"authoritative_window\"] as const,\n\t});\n\n// This profile is pinned to a live-proven object containing a complete OKX\n// snapshot followed by a contiguous seqId/prevSeqId update chain.\nexport const CRYPTOHFTDATA_OKX_SPOT_ARBUSDT_PROFILE: CryptoHftDataCapabilityProfile =\n\tObject.freeze({\n\t\tprofileId: \"cryptohftdata/okx_spot/ARB-USDT/v1\",\n\t\texchange: \"okx\",\n\t\ttradingPair: \"ARB-USDT\",\n\t\tsourceSymbol: \"ARB-USDT\",\n\t\tmarketType: \"spot\",\n\t\tproviderExchangeId: \"okx_spot\",\n\t\thistoryStartMs: CRYPTOHFTDATA_HISTORY_START_MS,\n\t\tmaxDepth: 400,\n\t\teventTimeUnit: \"milliseconds\",\n\t\treceivedTimeUnit: \"nanoseconds\",\n\t\tsnapshotGrouping: \"event_time_final_update_id_object\",\n\t\tsequenceSemantics: \"okx_seq_id_prev_seq_id\",\n\t\tconstructionModes: [\"sampled_top_n_snapshot\"] as const,\n\t\tsourcePolicies: [\"authoritative_window\", \"fill_gaps\"] as const,\n\t});\n\nexport class CryptoHftDataError extends Error {\n\tconstructor(readonly reason: string) {\n\t\tsuper(`CryptoHFTData backfill failed: ${reason}`);\n\t\tthis.name = \"CryptoHftDataError\";\n\t}\n}\n\nexport type CryptoHftDataOrderBookRow = {\n\treceived_time: string | number | bigint;\n\tevent_time: string | number | bigint;\n\ttransaction_time?: string | number | bigint | null;\n\tsymbol: string;\n\tevent_type: \"snapshot\" | \"update\";\n\tfirst_update_id?: string | number | bigint | null;\n\tfinal_update_id?: string | number | bigint | null;\n\tprev_final_update_id?: string | number | bigint | null;\n\tlast_update_id?: string | number | bigint | null;\n\tside: \"bid\" | \"ask\";\n\tprice: string;\n\tquantity: string;\n\torder_count?: string | number | bigint | null;\n\tdataset_object_identity: string;\n\tdataset_object_checksum: string;\n};\n\nexport type ReconstructedCryptoHftBook = {\n\ttargetTimeMs: number;\n\tsourceTimeMs: number;\n\treceivedTimeMs: number;\n\tsequence: string;\n\tbids: number[][];\n\tasks: number[][];\n\tdatasetObjectIdentity: string;\n\tdatasetObjectChecksum: string;\n};\n\nexport function cryptoHftDataCapabilityFor(\n\trequest: MarketDataVendorBackfillRequest,\n\tprofiles: readonly CryptoHftDataCapabilityProfile[] = [],\n): ProviderCapability | undefined {\n\tif (\n\t\trequest.providerPolicy.provider !== \"cryptohftdata\" ||\n\t\trequest.scope.feed !== \"ORDERBOOK\" ||\n\t\trequest.scope.exchange.trim().toLowerCase() === \"mexc\"\n\t) {\n\t\treturn undefined;\n\t}\n\tconst profile = profiles.find(\n\t\t(candidate) =>\n\t\t\tcandidate.exchange === request.scope.exchange.trim().toLowerCase() &&\n\t\t\tcandidate.tradingPair === request.scope.tradingPair &&\n\t\t\tcandidate.sourceSymbol === request.scope.sourceSymbol &&\n\t\t\tcandidate.marketType === request.scope.marketType &&\n\t\t\tcandidate.constructionModes.includes(request.constructionMode as never) &&\n\t\t\tcandidate.sourcePolicies.includes(request.sourcePolicy as never) &&\n\t\t\trequest.window.startTimeMs >= candidate.historyStartMs &&\n\t\t\trequest.depth <= candidate.maxDepth,\n\t);\n\tif (!profile) return undefined;\n\treturn {\n\t\tprovider: \"cryptohftdata\",\n\t\tadapterVersion: CRYPTOHFTDATA_ADAPTER_VERSION,\n\t\tproviderExchangeId: profile.providerExchangeId,\n\t\tresolvedSymbol: profile.sourceSymbol,\n\t};\n}\n\nfunction utcHourPath(hourMs: number): { date: string; hour: string } {\n\tconst date = new Date(hourMs);\n\treturn {\n\t\tdate: `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, \"0\")}-${String(date.getUTCDate()).padStart(2, \"0\")}`,\n\t\thour: String(date.getUTCHours()).padStart(2, \"0\"),\n\t};\n}\n\nexport function enumerateCryptoHftDataObjects(\n\trequest: MarketDataVendorBackfillRequest,\n\tproviderExchangeId: string,\n\tresolvedSymbol: string,\n): string[] {\n\tif (request.sourcePolicy === \"fill_gaps\") {\n\t\tconst hours = new Set<number>();\n\t\tfor (const targetTimeMs of request.requiredClockTargetsMs) {\n\t\t\tconst firstHour =\n\t\t\t\tMath.floor(\n\t\t\t\t\tMath.max(0, targetTimeMs - request.budgets.maxBoundaryLookbackMs) /\n\t\t\t\t\t\tHOUR_MS,\n\t\t\t\t) * HOUR_MS;\n\t\t\tconst lastHour = Math.floor(targetTimeMs / HOUR_MS) * HOUR_MS;\n\t\t\tfor (let hourMs = firstHour; hourMs <= lastHour; hourMs += HOUR_MS) {\n\t\t\t\thours.add(hourMs);\n\t\t\t}\n\t\t}\n\t\treturn [...hours]\n\t\t\t.sort((left, right) => left - right)\n\t\t\t.map((hourMs) => {\n\t\t\t\tconst utc = utcHourPath(hourMs);\n\t\t\t\treturn `${providerExchangeId}/${utc.date}/${utc.hour}/${resolvedSymbol}_orderbook.parquet.zst`;\n\t\t\t});\n\t}\n\tconst firstHour =\n\t\tMath.floor(\n\t\t\t(request.window.startTimeMs - request.budgets.maxBoundaryLookbackMs) /\n\t\t\t\tHOUR_MS,\n\t\t) * HOUR_MS;\n\tconst objects: string[] = [];\n\tfor (\n\t\tlet hourMs = Math.max(0, firstHour);\n\t\thourMs < request.window.endTimeMs;\n\t\thourMs += HOUR_MS\n\t) {\n\t\tconst utc = utcHourPath(hourMs);\n\t\tobjects.push(\n\t\t\t`${providerExchangeId}/${utc.date}/${utc.hour}/${resolvedSymbol}_orderbook.parquet.zst`,\n\t\t);\n\t}\n\treturn objects;\n}\n\nfunction initialArchiveCoversTarget(\n\trequest: MarketDataVendorBackfillRequest,\n\ttargetTimeMs: number,\n): boolean {\n\treturn (request.initialSelection?.support_anchors ?? []).some((anchor) => {\n\t\tconst sourceTimeMs = Date.parse(anchor.source_time);\n\t\treturn (\n\t\t\tNumber.isSafeInteger(sourceTimeMs) &&\n\t\t\tsourceTimeMs <= targetTimeMs &&\n\t\t\ttargetTimeMs - sourceTimeMs <= request.maxPriorAsOfLagMs\n\t\t);\n\t});\n}\n\nexport function providerAcquisitionRequest(\n\trequest: MarketDataVendorBackfillRequest,\n): MarketDataVendorBackfillRequest {\n\tif (request.sourcePolicy !== \"fill_gaps\") return request;\n\tconst requiredClockTargetsMs = request.requiredClockTargetsMs.filter(\n\t\t(targetTimeMs) => !initialArchiveCoversTarget(request, targetTimeMs),\n\t);\n\tif (requiredClockTargetsMs.length === 0) {\n\t\tthrow new CryptoHftDataError(\"fill_gaps_has_no_uncovered_clock_targets\");\n\t}\n\treturn { ...request, requiredClockTargetsMs };\n}\n\nfunction unsignedString(\n\tvalue: string | number | bigint | null | undefined,\n\tfield: string,\n\trequired = false,\n): string | undefined {\n\tif (value === null || value === undefined) {\n\t\tif (required) throw new CryptoHftDataError(`schema_${field}_missing`);\n\t\treturn undefined;\n\t}\n\tconst rendered = String(value);\n\tif (!/^\\d+$/.test(rendered)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\tconst parsed = BigInt(rendered);\n\tif (parsed > 18_446_744_073_709_551_615n) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_exceeds_uint64`);\n\t}\n\treturn parsed.toString(10);\n}\n\nfunction timestampMs(\n\tvalue: string | number | bigint,\n\tfield: \"received_time\" | \"event_time\",\n): number {\n\tconst rendered = String(value);\n\tif (!/^\\d+$/.test(rendered)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\tconst raw = BigInt(rendered);\n\tconst milliseconds = field === \"received_time\" ? raw / 1_000_000n : raw;\n\tif (milliseconds > BigInt(Number.MAX_SAFE_INTEGER)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_unsafe`);\n\t}\n\treturn Number(milliseconds);\n}\n\nfunction decimal(value: string, field: string, allowZero: boolean): number {\n\tif (!/^(?:0|[1-9]\\d*)(?:\\.\\d+)?$/.test(value)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || (allowZero ? parsed < 0 : parsed <= 0)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\treturn parsed;\n}\n\nfunction validatedRow(\n\trequest: MarketDataVendorBackfillRequest,\n\trow: CryptoHftDataOrderBookRow,\n): CryptoHftDataOrderBookRow & {\n\teventTimeMs: number;\n\treceivedTimeMs: number;\n} {\n\tif (row.symbol !== request.scope.sourceSymbol) {\n\t\tthrow new CryptoHftDataError(\"schema_symbol_mismatch\");\n\t}\n\tif (row.event_type !== \"snapshot\" && row.event_type !== \"update\") {\n\t\tthrow new CryptoHftDataError(\"schema_event_type_invalid\");\n\t}\n\tif (row.side !== \"bid\" && row.side !== \"ask\") {\n\t\tthrow new CryptoHftDataError(\"schema_side_invalid\");\n\t}\n\tdecimal(row.price, \"price\", false);\n\tdecimal(row.quantity, \"quantity\", true);\n\tif (!/^[a-f0-9]{64}$/.test(row.dataset_object_checksum)) {\n\t\tthrow new CryptoHftDataError(\"schema_object_checksum_invalid\");\n\t}\n\tconst eventTimeMs = timestampMs(row.event_time, \"event_time\");\n\tconst receivedTimeMs = timestampMs(row.received_time, \"received_time\");\n\tif (receivedTimeMs < eventTimeMs) {\n\t\tthrow new CryptoHftDataError(\"received_time_precedes_event_time\");\n\t}\n\treturn { ...row, eventTimeMs, receivedTimeMs };\n}\n\nfunction groupKey(\n\trow: ReturnType<typeof validatedRow>,\n\tprofile: CryptoHftDataCapabilityProfile,\n): string {\n\tconst sequence =\n\t\trow.event_type === \"snapshot\"\n\t\t\t? profile.snapshotGrouping === \"event_time_final_update_id_object\"\n\t\t\t\t? unsignedString(row.final_update_id, \"final_update_id\", true)\n\t\t\t\t: unsignedString(row.last_update_id, \"last_update_id\", true)\n\t\t\t: unsignedString(row.final_update_id, \"final_update_id\", true);\n\treturn [\n\t\trow.event_type,\n\t\trow.eventTimeMs,\n\t\tsequence,\n\t\trow.dataset_object_identity,\n\t].join(\"\\u0000\");\n}\n\nfunction absent(value: string | number | bigint | null | undefined): boolean {\n\treturn value === null || value === undefined;\n}\n\nfunction snapshotSequence(\n\trow: ReturnType<typeof validatedRow>,\n\tprofile: CryptoHftDataCapabilityProfile,\n): string {\n\tif (profile.sequenceSemantics === \"okx_seq_id_prev_seq_id\") {\n\t\tif (String(row.last_update_id) !== \"-1\") {\n\t\t\tthrow new CryptoHftDataError(\"schema_last_update_id_snapshot_sentinel\");\n\t\t}\n\t\tif (!absent(row.first_update_id) || !absent(row.prev_final_update_id)) {\n\t\t\tthrow new CryptoHftDataError(\"ambiguous_snapshot_group\");\n\t\t}\n\t\treturn unsignedString(\n\t\t\trow.final_update_id,\n\t\t\t\"final_update_id\",\n\t\t\ttrue,\n\t\t) as string;\n\t}\n\treturn unsignedString(row.last_update_id, \"last_update_id\", true) as string;\n}\n\ntype BookState = {\n\tbids: Map<string, number>;\n\tasks: Map<string, number>;\n\tsequence: string;\n\tsourceTimeMs: number;\n\treceivedTimeMs: number;\n\tdatasetObjectIdentity: string;\n\tdatasetObjectChecksum: string;\n};\n\nfunction sortedSide(\n\tlevels: ReadonlyMap<string, number>,\n\tside: \"bid\" | \"ask\",\n): number[][] {\n\treturn [...levels.entries()]\n\t\t.map(([price, quantity]) => [Number(price), quantity])\n\t\t.sort((left, right) =>\n\t\t\tside === \"bid\"\n\t\t\t\t? (right[0] as number) - (left[0] as number)\n\t\t\t\t: (left[0] as number) - (right[0] as number),\n\t\t);\n}\n\nfunction applyRows(\n\tstate: BookState,\n\trows: ReturnType<typeof validatedRow>[],\n): void {\n\tfor (const row of rows) {\n\t\tconst levels = row.side === \"bid\" ? state.bids : state.asks;\n\t\tconst quantity = decimal(row.quantity, \"quantity\", true);\n\t\tif (quantity === 0) levels.delete(row.price);\n\t\telse levels.set(row.price, quantity);\n\t}\n}\n\nexport function reconstructCryptoHftDataOrderBooks(\n\trequest: MarketDataVendorBackfillRequest,\n\tinputRows: readonly CryptoHftDataOrderBookRow[],\n\tprofile: CryptoHftDataCapabilityProfile = CRYPTOHFTDATA_BINANCE_SPOT_BTCUSDT_PROFILE,\n): ReconstructedCryptoHftBook[] {\n\tconst rows = inputRows\n\t\t.map((row, index) => ({\n\t\t\t...validatedRow(request, row),\n\t\t\toriginalIndex: index,\n\t\t}))\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\tleft.eventTimeMs - right.eventTimeMs ||\n\t\t\t\tleft.originalIndex - right.originalIndex,\n\t\t);\n\tconst groups: Array<ReturnType<typeof validatedRow>[]> = [];\n\tfor (const row of rows) {\n\t\tconst current = groups.at(-1);\n\t\tif (\n\t\t\t!current ||\n\t\t\tgroupKey(current[0] as ReturnType<typeof validatedRow>, profile) !==\n\t\t\t\tgroupKey(row, profile)\n\t\t) {\n\t\t\tgroups.push([row]);\n\t\t} else {\n\t\t\tcurrent.push(row);\n\t\t}\n\t}\n\n\tconst earliestTargetTimeMs = Math.min(...request.requiredClockTargetsMs);\n\tconst latestTargetTimeMs = Math.max(...request.requiredClockTargetsMs);\n\tconst anchorIndex = groups.findIndex((group) => {\n\t\tconst first = group[0] as ReturnType<typeof validatedRow>;\n\t\treturn (\n\t\t\tfirst.event_type === \"snapshot\" &&\n\t\t\tfirst.eventTimeMs <= earliestTargetTimeMs\n\t\t);\n\t});\n\tif (anchorIndex < 0) {\n\t\tthrow new CryptoHftDataError(\"update_before_snapshot\");\n\t}\n\n\tlet state: BookState | undefined;\n\tlet previousFinalUpdateId: bigint | undefined;\n\tconst states: BookState[] = [];\n\tfor (const group of groups.slice(anchorIndex)) {\n\t\tconst first = group[0] as ReturnType<typeof validatedRow>;\n\t\tif (first.eventTimeMs > latestTargetTimeMs) break;\n\t\tif (first.event_type === \"snapshot\") {\n\t\t\tconst sequence = snapshotSequence(first, profile);\n\t\t\tfor (const row of group) {\n\t\t\t\tif (snapshotSequence(row, profile) !== sequence) {\n\t\t\t\t\tthrow new CryptoHftDataError(\"ambiguous_snapshot_group\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\tprofile.sequenceSemantics === \"binance_u_U_pu\" &&\n\t\t\t\tpreviousFinalUpdateId !== undefined &&\n\t\t\t\tBigInt(sequence) < previousFinalUpdateId\n\t\t\t) {\n\t\t\t\tthrow new CryptoHftDataError(\"snapshot_sequence_regression\");\n\t\t\t}\n\t\t\tstate = {\n\t\t\t\tbids: new Map(),\n\t\t\t\tasks: new Map(),\n\t\t\t\tsequence,\n\t\t\t\tsourceTimeMs: first.eventTimeMs,\n\t\t\t\treceivedTimeMs: Math.max(\n\t\t\t\t\t...group.map(({ receivedTimeMs }) => receivedTimeMs),\n\t\t\t\t),\n\t\t\t\tdatasetObjectIdentity: first.dataset_object_identity,\n\t\t\t\tdatasetObjectChecksum: first.dataset_object_checksum,\n\t\t\t};\n\t\t\tapplyRows(state, group);\n\t\t\tpreviousFinalUpdateId = BigInt(sequence);\n\t\t} else {\n\t\t\tif (!state || previousFinalUpdateId === undefined) {\n\t\t\t\tthrow new CryptoHftDataError(\"update_before_snapshot\");\n\t\t\t}\n\t\t\tconst finalUpdate = BigInt(\n\t\t\t\tunsignedString(\n\t\t\t\t\tfirst.final_update_id,\n\t\t\t\t\t\"final_update_id\",\n\t\t\t\t\ttrue,\n\t\t\t\t) as string,\n\t\t\t);\n\t\t\tif (profile.sequenceSemantics === \"okx_seq_id_prev_seq_id\") {\n\t\t\t\tif (\n\t\t\t\t\t!absent(first.first_update_id) ||\n\t\t\t\t\t!absent(first.prev_final_update_id)\n\t\t\t\t) {\n\t\t\t\t\tthrow new CryptoHftDataError(\"ambiguous_update_group\");\n\t\t\t\t}\n\t\t\t\tconst previous = unsignedString(\n\t\t\t\t\tfirst.last_update_id,\n\t\t\t\t\t\"last_update_id\",\n\t\t\t\t\ttrue,\n\t\t\t\t) as string;\n\t\t\t\tfor (const row of group) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!absent(row.first_update_id) ||\n\t\t\t\t\t\t!absent(row.prev_final_update_id) ||\n\t\t\t\t\t\tunsignedString(row.final_update_id, \"final_update_id\", true) !==\n\t\t\t\t\t\t\tfinalUpdate.toString() ||\n\t\t\t\t\t\tunsignedString(row.last_update_id, \"last_update_id\", true) !==\n\t\t\t\t\t\t\tprevious\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new CryptoHftDataError(\"ambiguous_update_group\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (BigInt(previous) !== previousFinalUpdateId) {\n\t\t\t\t\tthrow new CryptoHftDataError(\"update_chain_gap\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst firstUpdate = BigInt(\n\t\t\t\t\tunsignedString(\n\t\t\t\t\t\tfirst.first_update_id,\n\t\t\t\t\t\t\"first_update_id\",\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t) as string,\n\t\t\t\t);\n\t\t\t\tconst previous = unsignedString(\n\t\t\t\t\tfirst.prev_final_update_id,\n\t\t\t\t\t\"prev_final_update_id\",\n\t\t\t\t);\n\t\t\t\tfor (const row of group) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tunsignedString(row.first_update_id, \"first_update_id\", true) !==\n\t\t\t\t\t\t\tfirstUpdate.toString() ||\n\t\t\t\t\t\tunsignedString(row.final_update_id, \"final_update_id\", true) !==\n\t\t\t\t\t\t\tfinalUpdate.toString() ||\n\t\t\t\t\t\tunsignedString(row.prev_final_update_id, \"prev_final_update_id\") !==\n\t\t\t\t\t\t\tprevious\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new CryptoHftDataError(\"ambiguous_update_group\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst expected = previousFinalUpdateId + 1n;\n\t\t\t\tif (\n\t\t\t\t\tfirstUpdate > expected ||\n\t\t\t\t\tfinalUpdate < expected ||\n\t\t\t\t\t(previous !== undefined && BigInt(previous) !== previousFinalUpdateId)\n\t\t\t\t) {\n\t\t\t\t\tthrow new CryptoHftDataError(\"update_chain_gap\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tapplyRows(state, group);\n\t\t\tstate.sequence = finalUpdate.toString();\n\t\t\tstate.sourceTimeMs = first.eventTimeMs;\n\t\t\tstate.receivedTimeMs = Math.max(\n\t\t\t\t...group.map(({ receivedTimeMs }) => receivedTimeMs),\n\t\t\t);\n\t\t\tstate.datasetObjectIdentity = first.dataset_object_identity;\n\t\t\tstate.datasetObjectChecksum = first.dataset_object_checksum;\n\t\t\tpreviousFinalUpdateId = finalUpdate;\n\t\t}\n\t\tif (state) {\n\t\t\tstates.push({\n\t\t\t\t...state,\n\t\t\t\tbids: new Map(state.bids),\n\t\t\t\tasks: new Map(state.asks),\n\t\t\t});\n\t\t}\n\t}\n\n\tconst samples: ReconstructedCryptoHftBook[] = [];\n\tfor (const targetTimeMs of request.requiredClockTargetsMs) {\n\t\tlet prior: BookState | undefined;\n\t\tfor (const candidate of states) {\n\t\t\tif (candidate.sourceTimeMs > targetTimeMs) break;\n\t\t\tprior = candidate;\n\t\t}\n\t\tif (\n\t\t\t!prior ||\n\t\t\ttargetTimeMs - prior.sourceTimeMs > request.maxPriorAsOfLagMs\n\t\t) {\n\t\t\tthrow new CryptoHftDataError(\"required_clock_coverage_insufficient\");\n\t\t}\n\t\tconst bids = sortedSide(prior.bids, \"bid\").slice(0, request.depth);\n\t\tconst asks = sortedSide(prior.asks, \"ask\").slice(0, request.depth);\n\t\tif (bids.length === 0 || asks.length === 0) {\n\t\t\tthrow new CryptoHftDataError(\"book_side_missing\");\n\t\t}\n\t\tif ((bids[0]?.[0] as number) >= (asks[0]?.[0] as number)) {\n\t\t\tthrow new CryptoHftDataError(\"book_crossed_or_locked\");\n\t\t}\n\t\tsamples.push({\n\t\t\ttargetTimeMs,\n\t\t\tsourceTimeMs: prior.sourceTimeMs,\n\t\t\treceivedTimeMs: prior.receivedTimeMs,\n\t\t\tsequence: prior.sequence,\n\t\t\tbids,\n\t\t\tasks,\n\t\t\tdatasetObjectIdentity: prior.datasetObjectIdentity,\n\t\t\tdatasetObjectChecksum: prior.datasetObjectChecksum,\n\t\t});\n\t}\n\treturn samples;\n}\n\nfunction sha256Bytes(bytes: Uint8Array): string {\n\treturn createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\nexport async function decodeCryptoHftParquetZstd(\n\tbytes: Uint8Array,\n): Promise<Record<string, unknown>[]> {\n\tconst parquet = decompress(bytes);\n\tconst buffer = parquet.buffer.slice(\n\t\tparquet.byteOffset,\n\t\tparquet.byteOffset + parquet.byteLength,\n\t) as ArrayBuffer;\n\treturn parquetReadObjects({ file: buffer });\n}\n\ntype CryptoHftDataAdapterOptions = {\n\tbaseUrl?: string;\n\tfetch?: typeof fetch;\n\tnowMs?: () => number;\n\tdecode?: (bytes: Uint8Array) => Promise<Record<string, unknown>[]>;\n\tprofiles?: readonly CryptoHftDataCapabilityProfile[];\n};\n\nfunction parsedDatasetRow(\n\tvalue: Record<string, unknown>,\n\tobject: ProviderObjectEvidence,\n): CryptoHftDataOrderBookRow {\n\treturn {\n\t\treceived_time: value.received_time as string | number | bigint,\n\t\tevent_time: value.event_time as string | number | bigint,\n\t\ttransaction_time: value.transaction_time as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tsymbol: value.symbol as string,\n\t\tevent_type: value.event_type as \"snapshot\" | \"update\",\n\t\tfirst_update_id: value.first_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tfinal_update_id: value.final_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tprev_final_update_id: value.prev_final_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tlast_update_id: value.last_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tside: value.side as \"bid\" | \"ask\",\n\t\tprice: value.price as string,\n\t\tquantity: value.quantity as string,\n\t\torder_count: value.order_count as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tdataset_object_identity: object.identity,\n\t\tdataset_object_checksum: object.checksum,\n\t};\n}\n\nasync function readBoundedObject(\n\tresponse: Response,\n\tremainingBytes: number,\n): Promise<Uint8Array> {\n\tif (!response.body) return new Uint8Array();\n\tconst reader = response.body.getReader();\n\tconst chunks: Uint8Array[] = [];\n\tlet total = 0;\n\twhile (true) {\n\t\tconst { done, value } = await reader.read();\n\t\tif (done) break;\n\t\ttotal += value.byteLength;\n\t\tif (total > remainingBytes) {\n\t\t\tawait reader.cancel();\n\t\t\tthrow new CryptoHftDataError(\"budget_max_bytes_exceeded\");\n\t\t}\n\t\tchunks.push(value);\n\t}\n\tconst bytes = new Uint8Array(total);\n\tlet offset = 0;\n\tfor (const chunk of chunks) {\n\t\tbytes.set(chunk, offset);\n\t\toffset += chunk.byteLength;\n\t}\n\treturn bytes;\n}\n\nexport class CryptoHftDataAdapter {\n\tprivate readonly baseUrl: string;\n\tprivate readonly request: typeof fetch;\n\tprivate readonly nowMs: () => number;\n\tprivate readonly decode: (\n\t\tbytes: Uint8Array,\n\t) => Promise<Record<string, unknown>[]>;\n\tprivate readonly profiles: readonly CryptoHftDataCapabilityProfile[];\n\n\tconstructor(options: CryptoHftDataAdapterOptions = {}) {\n\t\tthis.baseUrl = options.baseUrl ?? CRYPTOHFTDATA_API_URL;\n\t\tthis.request = options.fetch ?? fetch;\n\t\tthis.nowMs = options.nowMs ?? Date.now;\n\t\tthis.decode = options.decode ?? decodeCryptoHftParquetZstd;\n\t\tthis.profiles = options.profiles ?? [];\n\t}\n\n\tcapabilityFor(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t): ProviderCapability | undefined {\n\t\treturn cryptoHftDataCapabilityFor(request, this.profiles);\n\t}\n\n\tasync discoverSymbols(providerExchangeId: string): Promise<string[]> {\n\t\tif (!/^[a-z0-9_]+$/.test(providerExchangeId)) {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_exchange_invalid\");\n\t\t}\n\t\tconst endpoint = new URL(\"/symbols\", this.baseUrl);\n\t\tendpoint.searchParams.set(\"exchange\", providerExchangeId);\n\t\tendpoint.searchParams.set(\"data_type\", \"orderbook\");\n\t\tlet response: Response;\n\t\ttry {\n\t\t\tresponse = await this.request(endpoint);\n\t\t} catch {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_failed\");\n\t\t}\n\t\tif (!response.ok) {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_failed\");\n\t\t}\n\t\tlet body: unknown;\n\t\ttry {\n\t\t\tbody = await response.json();\n\t\t} catch {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_response_invalid\");\n\t\t}\n\t\tconst record = body as Record<string, unknown>;\n\t\tif (\n\t\t\t!body ||\n\t\t\ttypeof body !== \"object\" ||\n\t\t\tArray.isArray(body) ||\n\t\t\tString(record.exchange).toLowerCase() !== providerExchangeId ||\n\t\t\tString(record.data_type).toLowerCase() !== \"orderbook\" ||\n\t\t\t!Array.isArray(record.symbols) ||\n\t\t\t!record.symbols.every(\n\t\t\t\t(symbol) => typeof symbol === \"string\" && /^[A-Z0-9_-]+$/.test(symbol),\n\t\t\t)\n\t\t) {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_response_invalid\");\n\t\t}\n\t\treturn [...new Set(record.symbols as string[])].sort();\n\t}\n\n\tasync acquire(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tcapability: ProviderCapability,\n\t\tcredential: unknown,\n\t): Promise<ProviderDataset<CryptoHftDataOrderBookRow>> {\n\t\tconst apiKey =\n\t\t\tcredential && typeof credential === \"object\"\n\t\t\t\t? (credential as { apiKey?: unknown }).apiKey\n\t\t\t\t: undefined;\n\t\tif (typeof apiKey !== \"string\" || apiKey.length === 0) {\n\t\t\tthrow new CryptoHftDataError(\"credentials_invalid\");\n\t\t}\n\t\tconst paths = enumerateCryptoHftDataObjects(\n\t\t\trequest,\n\t\t\tcapability.providerExchangeId,\n\t\t\tcapability.resolvedSymbol,\n\t\t);\n\t\tif (paths.length > request.budgets.maxFiles) {\n\t\t\tthrow new CryptoHftDataError(\"budget_max_files_exceeded\");\n\t\t}\n\t\tconst started = this.nowMs();\n\t\tconst tokenResponse = await this.request(`${this.baseUrl}/jwt-token`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"content-type\": \"application/json\", \"X-API-Key\": apiKey },\n\t\t});\n\t\tif (!tokenResponse.ok) throw new CryptoHftDataError(\"jwt_issuance_failed\");\n\t\tconst tokenBody = (await tokenResponse.json()) as { jwt_token?: unknown };\n\t\tif (typeof tokenBody.jwt_token !== \"string\" || !tokenBody.jwt_token) {\n\t\t\tthrow new CryptoHftDataError(\"jwt_response_invalid\");\n\t\t}\n\n\t\tlet totalBytes = 0;\n\t\tlet totalRows = 0;\n\t\tconst objects: ProviderObjectEvidence[] = [];\n\t\tconst rows: CryptoHftDataOrderBookRow[] = [];\n\t\tfor (const path of paths) {\n\t\t\tif (this.nowMs() - started > request.budgets.maxDurationMs) {\n\t\t\t\tthrow new CryptoHftDataError(\"budget_max_duration_exceeded\");\n\t\t\t}\n\t\t\tconst endpoint = new URL(\"/download\", this.baseUrl);\n\t\t\tendpoint.searchParams.set(\"file\", path);\n\t\t\tconst response = await this.request(endpoint, {\n\t\t\t\theaders: { Authorization: `Bearer ${tokenBody.jwt_token}` },\n\t\t\t});\n\t\t\tif (!response.ok) throw new CryptoHftDataError(\"object_download_failed\");\n\t\t\tconst declaredBytes = Number(response.headers.get(\"content-length\"));\n\t\t\tif (\n\t\t\t\tNumber.isFinite(declaredBytes) &&\n\t\t\t\ttotalBytes + declaredBytes > request.budgets.maxBytes\n\t\t\t) {\n\t\t\t\tthrow new CryptoHftDataError(\"budget_max_bytes_exceeded\");\n\t\t\t}\n\t\t\tconst bytes = await readBoundedObject(\n\t\t\t\tresponse,\n\t\t\t\trequest.budgets.maxBytes - totalBytes,\n\t\t\t);\n\t\t\ttotalBytes += bytes.byteLength;\n\t\t\tif (totalBytes > request.budgets.maxBytes) {\n\t\t\t\tthrow new CryptoHftDataError(\"budget_max_bytes_exceeded\");\n\t\t\t}\n\t\t\tconst decoded = await this.decode(bytes);\n\t\t\ttotalRows += decoded.length;\n\t\t\tif (totalRows > request.budgets.maxRows) {\n\t\t\t\tthrow new CryptoHftDataError(\"budget_max_rows_exceeded\");\n\t\t\t}\n\t\t\tconst object = {\n\t\t\t\tidentity: path,\n\t\t\t\tchecksum: sha256Bytes(bytes),\n\t\t\t\tbytes: bytes.byteLength,\n\t\t\t\trows: decoded.length,\n\t\t\t};\n\t\t\tobjects.push(object);\n\t\t\tfor (const decodedRow of decoded) {\n\t\t\t\tconst parsed = parsedDatasetRow(decodedRow, object);\n\t\t\t\tvalidatedRow(request, parsed);\n\t\t\t\trows.push(parsed);\n\t\t\t}\n\t\t}\n\t\tif (this.nowMs() - started > request.budgets.maxDurationMs) {\n\t\t\tthrow new CryptoHftDataError(\"budget_max_duration_exceeded\");\n\t\t}\n\t\treturn {\n\t\t\tobjects,\n\t\t\trows,\n\t\t\tvendorSemanticDigest: sha256Canonical(rows),\n\t\t};\n\t}\n\n\tasync normalize(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tcapability: ProviderCapability,\n\t\tdataset: ProviderDataset,\n\t\tcaptureBundleId: string,\n\t): Promise<NormalizedBackfill> {\n\t\tconst profile = this.profiles.find(\n\t\t\t(candidate) =>\n\t\t\t\tcandidate.exchange === request.scope.exchange.trim().toLowerCase() &&\n\t\t\t\tcandidate.tradingPair === request.scope.tradingPair &&\n\t\t\t\tcandidate.sourceSymbol === request.scope.sourceSymbol &&\n\t\t\t\tcandidate.marketType === request.scope.marketType &&\n\t\t\t\tcandidate.providerExchangeId === capability.providerExchangeId,\n\t\t);\n\t\tif (!profile) {\n\t\t\tthrow new CryptoHftDataError(\"profile_semantics_unavailable\");\n\t\t}\n\t\tconst samples = reconstructCryptoHftDataOrderBooks(\n\t\t\trequest,\n\t\t\tdataset.rows as CryptoHftDataOrderBookRow[],\n\t\t\tprofile,\n\t\t);\n\t\tconst context: MarketCaptureContext = {\n\t\t\tsource: EXTERNAL_BACKFILL_SOURCE,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\tcaptureBundleId,\n\t\t\texchange: request.scope.exchange,\n\t\t\tsymbol: request.scope.tradingPair,\n\t\t\ttradingPair: request.scope.tradingPair,\n\t\t\tsourceSymbol: request.scope.sourceSymbol,\n\t\t\tassetType: request.scope.marketType,\n\t\t\tfeed: \"ORDERBOOK\",\n\t\t\tprovider: \"cryptohftdata\",\n\t\t\tsourceMode: HISTORICAL_VENDOR_SOURCE_MODE,\n\t\t\tschemaVersion: MARKET_CAPTURE_SCHEMA_VERSION,\n\t\t\tchecksumAlgorithm: CHECKSUM_ALGORITHM,\n\t\t\tprovenanceComplete: true,\n\t\t};\n\t\tconst rows = samples.flatMap((sample) => {\n\t\t\tconst rawCapture: RawCapture = {\n\t\t\t\trawCaptureId: sha256Canonical({\n\t\t\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\t\t\tdataset_object_identity: sample.datasetObjectIdentity,\n\t\t\t\t\tdataset_object_checksum: sample.datasetObjectChecksum,\n\t\t\t\t\tsource_time_ms: sample.sourceTimeMs,\n\t\t\t\t\ttarget_time_ms: sample.targetTimeMs,\n\t\t\t\t}),\n\t\t\t\trawCaptureScope: VENDOR_DATASET_RAW_CAPTURE_SCOPE,\n\t\t\t\trawChecksum: sample.datasetObjectChecksum,\n\t\t\t\tredactedPayload: {\n\t\t\t\t\tdataset_object_identity: sample.datasetObjectIdentity,\n\t\t\t\t\tdataset_object_checksum: sample.datasetObjectChecksum,\n\t\t\t\t},\n\t\t\t\teventTimeMs: sample.sourceTimeMs,\n\t\t\t\treceivedTimeMs: sample.receivedTimeMs,\n\t\t\t\tchecksumAlgorithm: CHECKSUM_ALGORITHM,\n\t\t\t};\n\t\t\tconst canonical = buildCanonicalOrderBookRows({\n\t\t\t\tcontext,\n\t\t\t\trawCapture,\n\t\t\t\tdepthLimit: request.depth,\n\t\t\t\tconstructionMode: request.constructionMode,\n\t\t\t\tsnapshot: {\n\t\t\t\t\tbids: sample.bids,\n\t\t\t\t\tasks: sample.asks,\n\t\t\t\t\ttimestamp: sample.sourceTimeMs,\n\t\t\t\t\treceivedTimestamp: sample.receivedTimeMs,\n\t\t\t\t\texchange: request.scope.exchange,\n\t\t\t\t\tsymbol: request.scope.tradingPair,\n\t\t\t\t\tdepthLimit: request.depth,\n\t\t\t\t\tsequence: sample.sequence,\n\t\t\t\t},\n\t\t\t});\n\t\t\treturn [...canonical.levels, canonical.summary];\n\t\t}) as BackfillArchiveRow[];\n\t\treturn {\n\t\t\tcaptureBundleId,\n\t\t\tobjects: dataset.objects,\n\t\t\trows,\n\t\t\tvendorSemanticDigest: dataset.vendorSemanticDigest,\n\t\t\tcanonicalSemanticDigest: semanticDigest(rows),\n\t\t};\n\t}\n}\n",
|
|
157
|
+
"import { createHash } from \"node:crypto\";\nimport { decompress } from \"fzstd\";\nimport { parquetReadObjects } from \"hyparquet\";\nimport {\n\tbuildCanonicalOrderBookRows,\n\tOrderBookValidationError,\n} from \"../market-data-archive/canonical-orderbook\";\nimport {\n\tCHECKSUM_ALGORITHM,\n\tcanonicalSerialize,\n\tMARKET_CAPTURE_SCHEMA_VERSION,\n\tsha256Canonical,\n} from \"../market-data-archive/capture-contract\";\nimport type {\n\tMarketCaptureContext,\n\tRawCapture,\n} from \"../market-data-archive/types\";\nimport type {\n\tReconstructionObservation,\n\tReconstructionObservationSink,\n\tSourceObjectEvidence,\n} from \"../market-data-source-forensics\";\nimport {\n\ttype BackfillArchiveRow,\n\tEXTERNAL_BACKFILL_SOURCE,\n\tHISTORICAL_VENDOR_SOURCE_MODE,\n\ttype MarketDataVendorBackfillRequest,\n\ttype ProviderCapability,\n\ttype ProviderObjectEvidence,\n\tVENDOR_DATASET_RAW_CAPTURE_SCOPE,\n} from \"./contracts\";\nimport type { NormalizedBackfill, ProviderDataset } from \"./core\";\nimport { semanticDigest } from \"./semantic-verification\";\n\nexport const CRYPTOHFTDATA_ADAPTER_VERSION =\n\t\"cryptohftdata-orderbook/v2\" as const;\nexport const CRYPTOHFTDATA_API_URL = \"https://api.cryptohftdata.com\" as const;\nexport const DIAGNOSTIC_LAG_THRESHOLDS_MS = [\n\t1_000, 2_000, 5_000, 10_000, 30_000, 60_000,\n] as const;\nexport const SOURCE_TAPE_MAX_STATES_PER_YIELD = 4 as const;\nexport const SOURCE_TAPE_MAX_BATCH_BYTES = 5_242_880 as const;\nexport const SOURCE_TAPE_MAX_IN_FLIGHT = 1 as const;\nexport const BACKFILL_CLOCK_DIAGNOSTIC_KEYS = [\n\t\"target_time_ms\",\n\t\"source_time_ms\",\n\t\"asof_lag_ms\",\n\t\"max_prior_asof_lag_ms\",\n\t\"missing_target_count\",\n\t\"covered_target_count\",\n\t\"first_missing_target_time_ms\",\n\t\"last_missing_target_time_ms\",\n\t\"max_observed_asof_lag_ms\",\n\t\"missing_target_dates_utc\",\n\t\"total_target_count\",\n\t\"unanchored_target_count\",\n\t\"future_state_target_count\",\n\t...DIAGNOSTIC_LAG_THRESHOLDS_MS.map(\n\t\t(threshold) => `covered_target_count_lag_${threshold}_ms` as const,\n\t),\n] as const;\nexport const BACKFILL_SEQUENCE_DIAGNOSTIC_KEYS = [\n\t\"event_time_ms\",\n\t\"expected_previous_sequence\",\n\t\"observed_previous_sequence\",\n\t\"observed_final_sequence\",\n\t\"sequence_gap_count\",\n\t\"first_sequence_gap_event_time_ms\",\n\t\"last_sequence_gap_event_time_ms\",\n] as const;\nconst CRYPTOHFTDATA_HISTORY_START_MS = Date.UTC(2025, 5, 28);\nconst HOUR_MS = 60 * 60 * 1_000;\n\nexport type CryptoHftDataCapabilityProfile = Readonly<{\n\tprofileId: string;\n\texchange: string;\n\ttradingPair: string;\n\tsourceSymbol: string;\n\tmarketType: \"spot\" | \"swap\" | \"future\";\n\tproviderExchangeId: string;\n\thistoryStartMs: number;\n\tmaxDepth: number;\n\teventTimeUnit: \"milliseconds\";\n\treceivedTimeUnit: \"nanoseconds\";\n\tsnapshotGrouping:\n\t\t| \"event_time_last_update_id_object\"\n\t\t| \"event_time_final_update_id_object\";\n\tsequenceSemantics: \"binance_u_U_pu\" | \"okx_seq_id_prev_seq_id\";\n\tconstructionModes: readonly [\"sampled_top_n_snapshot\"];\n\tsourcePolicies: readonly (\"authoritative_window\" | \"fill_gaps\")[];\n}>;\n\n// This profile is exported for explicit enablement by a conformance-tested\n// consumer. The adapter's default registry is deliberately empty: possession\n// of a provider credential must never advertise an unverified data profile.\nexport const CRYPTOHFTDATA_BINANCE_SPOT_BTCUSDT_PROFILE: CryptoHftDataCapabilityProfile =\n\tObject.freeze({\n\t\tprofileId: \"cryptohftdata/binance_spot/BTCUSDT/v1\",\n\t\texchange: \"binance\",\n\t\ttradingPair: \"BTC-USDT\",\n\t\tsourceSymbol: \"BTCUSDT\",\n\t\tmarketType: \"spot\",\n\t\tproviderExchangeId: \"binance_spot\",\n\t\thistoryStartMs: CRYPTOHFTDATA_HISTORY_START_MS,\n\t\tmaxDepth: 500,\n\t\teventTimeUnit: \"milliseconds\",\n\t\treceivedTimeUnit: \"nanoseconds\",\n\t\tsnapshotGrouping: \"event_time_last_update_id_object\",\n\t\tsequenceSemantics: \"binance_u_U_pu\",\n\t\tconstructionModes: [\"sampled_top_n_snapshot\"] as const,\n\t\tsourcePolicies: [\"authoritative_window\"] as const,\n\t});\n\n// This profile is pinned to a live-proven object containing a complete OKX\n// snapshot followed by a contiguous seqId/prevSeqId update chain.\nexport const CRYPTOHFTDATA_OKX_SPOT_ARBUSDT_PROFILE: CryptoHftDataCapabilityProfile =\n\tObject.freeze({\n\t\tprofileId: \"cryptohftdata/okx_spot/ARB-USDT/v1\",\n\t\texchange: \"okx\",\n\t\ttradingPair: \"ARB-USDT\",\n\t\tsourceSymbol: \"ARB-USDT\",\n\t\tmarketType: \"spot\",\n\t\tproviderExchangeId: \"okx_spot\",\n\t\thistoryStartMs: CRYPTOHFTDATA_HISTORY_START_MS,\n\t\tmaxDepth: 400,\n\t\teventTimeUnit: \"milliseconds\",\n\t\treceivedTimeUnit: \"nanoseconds\",\n\t\tsnapshotGrouping: \"event_time_final_update_id_object\",\n\t\tsequenceSemantics: \"okx_seq_id_prev_seq_id\",\n\t\tconstructionModes: [\"sampled_top_n_snapshot\"] as const,\n\t\tsourcePolicies: [\"authoritative_window\", \"fill_gaps\"] as const,\n\t});\n\n// This profile uses the same live-proven OKX sequence and timestamp semantics\n// as ARB-USDT. Provider discovery and conformance evidence pin ARB-USDC as a\n// distinct source symbol; venue identity must never imply quote substitution.\nexport const CRYPTOHFTDATA_OKX_SPOT_ARBUSDC_PROFILE: CryptoHftDataCapabilityProfile =\n\tObject.freeze({\n\t\tprofileId: \"cryptohftdata/okx_spot/ARB-USDC/v1\",\n\t\texchange: \"okx\",\n\t\ttradingPair: \"ARB-USDC\",\n\t\tsourceSymbol: \"ARB-USDC\",\n\t\tmarketType: \"spot\",\n\t\tproviderExchangeId: \"okx_spot\",\n\t\thistoryStartMs: CRYPTOHFTDATA_HISTORY_START_MS,\n\t\tmaxDepth: 400,\n\t\teventTimeUnit: \"milliseconds\",\n\t\treceivedTimeUnit: \"nanoseconds\",\n\t\tsnapshotGrouping: \"event_time_final_update_id_object\",\n\t\tsequenceSemantics: \"okx_seq_id_prev_seq_id\",\n\t\tconstructionModes: [\"sampled_top_n_snapshot\"] as const,\n\t\tsourcePolicies: [\"authoritative_window\", \"fill_gaps\"] as const,\n\t});\n\nexport class CryptoHftDataError extends Error {\n\tconstructor(\n\t\treadonly reason: string,\n\t\treadonly diagnostics: Readonly<\n\t\t\tRecord<string, string | number | boolean>\n\t\t> = {},\n\t) {\n\t\tsuper(`CryptoHFTData backfill failed: ${reason}`);\n\t\tthis.name = \"CryptoHftDataError\";\n\t}\n}\n\nfunction providerObjectFailure(\n\terror: unknown,\n\treason: string,\n\tdatasetObjectIdentity: string,\n\tfailurePhase: string,\n): CryptoHftDataError {\n\treturn new CryptoHftDataError(\n\t\terror instanceof CryptoHftDataError ? error.reason : reason,\n\t\t{\n\t\t\t...(error instanceof CryptoHftDataError ? error.diagnostics : {}),\n\t\t\tdataset_object_identity: datasetObjectIdentity,\n\t\t\tfailure_phase: failurePhase,\n\t\t},\n\t);\n}\n\nconst PROVIDER_OBJECT_MAX_ATTEMPTS = 3;\nconst RETRYABLE_PROVIDER_OBJECT_FAILURES = new Set([\n\t\"provider_object_request_failed\",\n\t\"object_download_failed\",\n\t\"provider_object_read_failed\",\n\t\"provider_object_decode_failed\",\n\t\"provider_object_validation_failed\",\n]);\n\nfunction quarantinedProviderObjectFailure(\n\terror: CryptoHftDataError,\n\tattemptCount: number,\n\tchecksum?: string,\n): CryptoHftDataError {\n\treturn new CryptoHftDataError(error.reason, {\n\t\t...error.diagnostics,\n\t\t...(checksum ? { dataset_object_checksum: checksum } : {}),\n\t\tattempt_count: attemptCount,\n\t\tquarantined: true,\n\t});\n}\n\nexport type CryptoHftDataOrderBookRow = {\n\treceived_time: string | number | bigint;\n\tevent_time: string | number | bigint;\n\ttransaction_time?: string | number | bigint | null;\n\tsymbol: string;\n\tevent_type: \"snapshot\" | \"update\";\n\tfirst_update_id?: string | number | bigint | null;\n\tfinal_update_id?: string | number | bigint | null;\n\tprev_final_update_id?: string | number | bigint | null;\n\tlast_update_id?: string | number | bigint | null;\n\tside: \"bid\" | \"ask\";\n\tprice: string;\n\tquantity: string;\n\torder_count?: string | number | bigint | null;\n\tdataset_object_identity: string;\n\tdataset_object_checksum: string;\n};\n\nexport type ReconstructedCryptoHftBook = {\n\ttargetTimeMs: number;\n\tsourceTimeMs: number;\n\treceivedTimeMs: number;\n\tsequence: string;\n\tbids: number[][];\n\tasks: number[][];\n\tdatasetObjectIdentity: string;\n\tdatasetObjectChecksum: string;\n};\n\nexport type PolicyNeutralCryptoHftBookState = ReconstructedCryptoHftBook & {\n\ttapeState: \"initialization\" | \"change\";\n};\n\nexport type PolicyNeutralTapeSink = {\n\twriteBatch(states: readonly PolicyNeutralCryptoHftBookState[]): Promise<void>;\n\tcomplete(input: {\n\t\texpectedObjectIdentities: readonly string[];\n\t\tobservedObjects: readonly ProviderObjectEvidence[];\n\t\tstateCount: number;\n\t}): Promise<void>;\n\tabort(input: { reason: string; retainedStateCount: number }): Promise<void>;\n};\n\nfunction tapeStateBytes(state: PolicyNeutralCryptoHftBookState): number {\n\treturn new TextEncoder().encode(JSON.stringify(state)).byteLength;\n}\n\nasync function writePolicyNeutralTapeStates(\n\tsink: PolicyNeutralTapeSink,\n\tstates: readonly PolicyNeutralCryptoHftBookState[],\n): Promise<number> {\n\tlet written = 0;\n\tlet batch: PolicyNeutralCryptoHftBookState[] = [];\n\tlet batchBytes = 0;\n\tconst flush = async () => {\n\t\tif (batch.length === 0) return;\n\t\tawait sink.writeBatch(batch);\n\t\twritten += batch.length;\n\t\tbatch = [];\n\t\tbatchBytes = 0;\n\t};\n\tfor (const state of states) {\n\t\tconst bytes = tapeStateBytes(state);\n\t\tif (bytes > SOURCE_TAPE_MAX_BATCH_BYTES) {\n\t\t\tthrow new CryptoHftDataError(\"source_tape_state_too_large\");\n\t\t}\n\t\tif (\n\t\t\tbatch.length >= SOURCE_TAPE_MAX_STATES_PER_YIELD ||\n\t\t\tbatchBytes + bytes > SOURCE_TAPE_MAX_BATCH_BYTES\n\t\t) {\n\t\t\tawait flush();\n\t\t}\n\t\tbatch.push(state);\n\t\tbatchBytes += bytes;\n\t}\n\tawait flush();\n\treturn written;\n}\n\nexport function cryptoHftDataCapabilityFor(\n\trequest: MarketDataVendorBackfillRequest,\n\tprofiles: readonly CryptoHftDataCapabilityProfile[] = [],\n): ProviderCapability | undefined {\n\tif (\n\t\trequest.providerPolicy.provider !== \"cryptohftdata\" ||\n\t\trequest.scope.feed !== \"ORDERBOOK\" ||\n\t\trequest.scope.exchange.trim().toLowerCase() === \"mexc\"\n\t) {\n\t\treturn undefined;\n\t}\n\tconst profile = profiles.find(\n\t\t(candidate) =>\n\t\t\tcandidate.exchange === request.scope.exchange.trim().toLowerCase() &&\n\t\t\tcandidate.tradingPair === request.scope.tradingPair &&\n\t\t\tcandidate.sourceSymbol === request.scope.sourceSymbol &&\n\t\t\tcandidate.marketType === request.scope.marketType &&\n\t\t\tcandidate.constructionModes.includes(request.constructionMode as never) &&\n\t\t\tcandidate.sourcePolicies.includes(request.sourcePolicy as never) &&\n\t\t\trequest.window.startTimeMs >= candidate.historyStartMs &&\n\t\t\trequest.depth <= candidate.maxDepth,\n\t);\n\tif (!profile) return undefined;\n\treturn {\n\t\tprovider: \"cryptohftdata\",\n\t\tadapterVersion: CRYPTOHFTDATA_ADAPTER_VERSION,\n\t\tproviderExchangeId: profile.providerExchangeId,\n\t\tresolvedSymbol: profile.sourceSymbol,\n\t};\n}\n\nfunction utcHourPath(hourMs: number): { date: string; hour: string } {\n\tconst date = new Date(hourMs);\n\treturn {\n\t\tdate: `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, \"0\")}-${String(date.getUTCDate()).padStart(2, \"0\")}`,\n\t\thour: String(date.getUTCHours()).padStart(2, \"0\"),\n\t};\n}\n\nexport function enumerateCryptoHftDataObjects(\n\trequest: MarketDataVendorBackfillRequest,\n\tproviderExchangeId: string,\n\tresolvedSymbol: string,\n): string[] {\n\tif (request.sourcePolicy === \"fill_gaps\") {\n\t\tconst hours = new Set<number>();\n\t\tfor (const targetTimeMs of request.requiredClockTargetsMs) {\n\t\t\tconst firstHour =\n\t\t\t\tMath.floor(\n\t\t\t\t\tMath.max(0, targetTimeMs - request.budgets.maxBoundaryLookbackMs) /\n\t\t\t\t\t\tHOUR_MS,\n\t\t\t\t) * HOUR_MS;\n\t\t\tconst lastHour = Math.floor(targetTimeMs / HOUR_MS) * HOUR_MS;\n\t\t\tfor (let hourMs = firstHour; hourMs <= lastHour; hourMs += HOUR_MS) {\n\t\t\t\thours.add(hourMs);\n\t\t\t}\n\t\t}\n\t\treturn [...hours]\n\t\t\t.sort((left, right) => left - right)\n\t\t\t.map((hourMs) => {\n\t\t\t\tconst utc = utcHourPath(hourMs);\n\t\t\t\treturn `${providerExchangeId}/${utc.date}/${utc.hour}/${resolvedSymbol}_orderbook.parquet.zst`;\n\t\t\t});\n\t}\n\treturn enumerateCryptoHftDataWindowObjects(\n\t\trequest,\n\t\tproviderExchangeId,\n\t\tresolvedSymbol,\n\t);\n}\n\nexport function enumerateCryptoHftDataWindowObjects(\n\trequest: MarketDataVendorBackfillRequest,\n\tproviderExchangeId: string,\n\tresolvedSymbol: string,\n): string[] {\n\tconst firstHour =\n\t\tMath.floor(\n\t\t\t(request.window.startTimeMs - request.budgets.maxBoundaryLookbackMs) /\n\t\t\t\tHOUR_MS,\n\t\t) * HOUR_MS;\n\tconst objects: string[] = [];\n\tfor (\n\t\tlet hourMs = Math.max(0, firstHour);\n\t\thourMs < request.window.endTimeMs;\n\t\thourMs += HOUR_MS\n\t) {\n\t\tconst utc = utcHourPath(hourMs);\n\t\tobjects.push(\n\t\t\t`${providerExchangeId}/${utc.date}/${utc.hour}/${resolvedSymbol}_orderbook.parquet.zst`,\n\t\t);\n\t}\n\treturn objects;\n}\n\nfunction initialArchiveCoversTarget(\n\trequest: MarketDataVendorBackfillRequest,\n\ttargetTimeMs: number,\n): boolean {\n\treturn (request.initialSelection?.support_anchors ?? []).some((anchor) => {\n\t\tconst sourceTimeMs = Date.parse(anchor.source_time);\n\t\treturn (\n\t\t\tNumber.isSafeInteger(sourceTimeMs) &&\n\t\t\tsourceTimeMs <= targetTimeMs &&\n\t\t\ttargetTimeMs - sourceTimeMs <= request.maxPriorAsOfLagMs\n\t\t);\n\t});\n}\n\nexport function providerAcquisitionRequest(\n\trequest: MarketDataVendorBackfillRequest,\n): MarketDataVendorBackfillRequest {\n\tif (request.sourcePolicy !== \"fill_gaps\") return request;\n\tconst requiredClockTargetsMs = request.requiredClockTargetsMs.filter(\n\t\t(targetTimeMs) => !initialArchiveCoversTarget(request, targetTimeMs),\n\t);\n\tif (requiredClockTargetsMs.length === 0) {\n\t\tthrow new CryptoHftDataError(\"fill_gaps_has_no_uncovered_clock_targets\");\n\t}\n\treturn { ...request, requiredClockTargetsMs };\n}\n\nfunction unsignedString(\n\tvalue: string | number | bigint | null | undefined,\n\tfield: string,\n\trequired = false,\n): string | undefined {\n\tif (value === null || value === undefined) {\n\t\tif (required) throw new CryptoHftDataError(`schema_${field}_missing`);\n\t\treturn undefined;\n\t}\n\tconst rendered = String(value);\n\tif (!/^\\d+$/.test(rendered)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\tconst parsed = BigInt(rendered);\n\tif (parsed > 18_446_744_073_709_551_615n) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_exceeds_uint64`);\n\t}\n\treturn parsed.toString(10);\n}\n\nfunction timestampMs(\n\tvalue: string | number | bigint,\n\tfield: \"received_time\" | \"event_time\",\n): number {\n\tconst rendered = String(value);\n\tif (!/^\\d+$/.test(rendered)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\tconst raw = BigInt(rendered);\n\tconst milliseconds = field === \"received_time\" ? raw / 1_000_000n : raw;\n\tif (milliseconds > BigInt(Number.MAX_SAFE_INTEGER)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_unsafe`);\n\t}\n\treturn Number(milliseconds);\n}\n\nfunction decimal(value: string, field: string, allowZero: boolean): number {\n\tif (!/^(?:0|[1-9]\\d*)(?:\\.\\d+)?$/.test(value)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || (allowZero ? parsed < 0 : parsed <= 0)) {\n\t\tthrow new CryptoHftDataError(`schema_${field}_invalid`);\n\t}\n\treturn parsed;\n}\n\nfunction validatedRow(\n\trequest: MarketDataVendorBackfillRequest,\n\trow: CryptoHftDataOrderBookRow,\n): CryptoHftDataOrderBookRow & {\n\teventTimeMs: number;\n\treceivedTimeMs: number;\n} {\n\tif (row.symbol !== request.scope.sourceSymbol) {\n\t\tthrow new CryptoHftDataError(\"schema_symbol_mismatch\");\n\t}\n\tif (row.event_type !== \"snapshot\" && row.event_type !== \"update\") {\n\t\tthrow new CryptoHftDataError(\"schema_event_type_invalid\");\n\t}\n\tif (row.side !== \"bid\" && row.side !== \"ask\") {\n\t\tthrow new CryptoHftDataError(\"schema_side_invalid\");\n\t}\n\tdecimal(row.price, \"price\", false);\n\tdecimal(row.quantity, \"quantity\", true);\n\tif (!/^[a-f0-9]{64}$/.test(row.dataset_object_checksum)) {\n\t\tthrow new CryptoHftDataError(\"schema_object_checksum_invalid\");\n\t}\n\tconst eventTimeMs = timestampMs(row.event_time, \"event_time\");\n\tconst receivedTimeMs = timestampMs(row.received_time, \"received_time\");\n\tif (receivedTimeMs < eventTimeMs) {\n\t\tthrow new CryptoHftDataError(\"received_time_precedes_event_time\");\n\t}\n\treturn { ...row, eventTimeMs, receivedTimeMs };\n}\n\nfunction groupKey(\n\trow: ReturnType<typeof validatedRow>,\n\tprofile: CryptoHftDataCapabilityProfile,\n): string {\n\tconst sequence =\n\t\trow.event_type === \"snapshot\"\n\t\t\t? profile.snapshotGrouping === \"event_time_final_update_id_object\"\n\t\t\t\t? unsignedString(row.final_update_id, \"final_update_id\", true)\n\t\t\t\t: unsignedString(row.last_update_id, \"last_update_id\", true)\n\t\t\t: unsignedString(row.final_update_id, \"final_update_id\", true);\n\treturn [\n\t\trow.event_type,\n\t\trow.eventTimeMs,\n\t\tsequence,\n\t\trow.dataset_object_identity,\n\t].join(\"\\u0000\");\n}\n\nfunction absent(value: string | number | bigint | null | undefined): boolean {\n\treturn value === null || value === undefined;\n}\n\nfunction snapshotSequence(\n\trow: ReturnType<typeof validatedRow>,\n\tprofile: CryptoHftDataCapabilityProfile,\n): string {\n\tif (profile.sequenceSemantics === \"okx_seq_id_prev_seq_id\") {\n\t\tif (String(row.last_update_id) !== \"-1\") {\n\t\t\tthrow new CryptoHftDataError(\"schema_last_update_id_snapshot_sentinel\");\n\t\t}\n\t\tif (!absent(row.first_update_id) || !absent(row.prev_final_update_id)) {\n\t\t\tthrow new CryptoHftDataError(\"ambiguous_snapshot_group\");\n\t\t}\n\t\treturn unsignedString(\n\t\t\trow.final_update_id,\n\t\t\t\"final_update_id\",\n\t\t\ttrue,\n\t\t) as string;\n\t}\n\treturn unsignedString(row.last_update_id, \"last_update_id\", true) as string;\n}\n\ntype BookState = {\n\tbids: Map<string, number>;\n\tasks: Map<string, number>;\n\tsequence: string;\n\tsourceTimeMs: number;\n\treceivedTimeMs: number;\n\tdatasetObjectIdentity: string;\n\tdatasetObjectChecksum: string;\n};\n\nfunction sortedSide(\n\tlevels: ReadonlyMap<string, number>,\n\tside: \"bid\" | \"ask\",\n): number[][] {\n\treturn [...levels.entries()]\n\t\t.map(([price, quantity]) => [Number(price), quantity])\n\t\t.sort((left, right) =>\n\t\t\tside === \"bid\"\n\t\t\t\t? (right[0] as number) - (left[0] as number)\n\t\t\t\t: (left[0] as number) - (right[0] as number),\n\t\t);\n}\n\nfunction applyRows(\n\tstate: BookState,\n\trows: ReturnType<typeof validatedRow>[],\n): void {\n\tfor (const row of rows) {\n\t\tconst levels = row.side === \"bid\" ? state.bids : state.asks;\n\t\tconst quantity = decimal(row.quantity, \"quantity\", true);\n\t\tif (quantity === 0) levels.delete(row.price);\n\t\telse levels.set(row.price, quantity);\n\t}\n}\n\nclass StreamingBookReconstructor {\n\tprivate readonly targets: readonly number[];\n\tprivate readonly samples: ReconstructedCryptoHftBook[] = [];\n\tprivate readonly clockObservations: Array<{\n\t\ttargetTimeMs: number;\n\t\tsourceTimeMs?: number;\n\t\tasofLagMs?: number;\n\t}> = [];\n\tprivate readonly missingSamples: Array<{\n\t\ttargetTimeMs: number;\n\t\tsourceTimeMs?: number;\n\t\tasofLagMs?: number;\n\t}> = [];\n\tprivate readonly sequenceGaps: Array<{\n\t\teventTimeMs: number;\n\t\texpectedPreviousSequence: string;\n\t\tobservedPreviousSequence: string;\n\t\tobservedFinalSequence: string;\n\t}> = [];\n\tprivate readonly policyNeutralTape: PolicyNeutralCryptoHftBookState[] = [];\n\tprivate tapeInitializationEmitted = false;\n\tprivate targetIndex = 0;\n\tprivate state: BookState | undefined;\n\tprivate previousFinalUpdateId: bigint | undefined;\n\n\tconstructor(\n\t\tprivate readonly request: MarketDataVendorBackfillRequest,\n\t\tprivate readonly profile: CryptoHftDataCapabilityProfile,\n\t\tprivate readonly observer?: ReconstructionObservationSink,\n\t\tprivate readonly options: { collectPolicyNeutralTape?: boolean } = {},\n\t) {\n\t\tthis.targets = [...request.requiredClockTargetsMs];\n\t}\n\n\tpush(inputRows: readonly CryptoHftDataOrderBookRow[]): void {\n\t\tfor (const group of this.inputGroups(inputRows)) {\n\t\t\tif (!this.processGroup(group)) return;\n\t\t}\n\t}\n\n\tasync pushPolicyNeutralTape(\n\t\tinputRows: readonly CryptoHftDataOrderBookRow[],\n\t\tsink: PolicyNeutralTapeSink,\n\t\tonStatesWritten: (count: number) => void,\n\t): Promise<void> {\n\t\tfor (const group of this.inputGroups(inputRows)) {\n\t\t\tif (!this.processGroup(group)) break;\n\t\t\tif (this.policyNeutralTape.length >= SOURCE_TAPE_MAX_STATES_PER_YIELD) {\n\t\t\t\tconst states = this.drainPolicyNeutralTape();\n\t\t\t\tconst written = await writePolicyNeutralTapeStates(sink, states);\n\t\t\t\tonStatesWritten(written);\n\t\t\t}\n\t\t}\n\t\tconst states = this.drainPolicyNeutralTape();\n\t\tif (states.length > 0) {\n\t\t\tconst written = await writePolicyNeutralTapeStates(sink, states);\n\t\t\tonStatesWritten(written);\n\t\t}\n\t}\n\n\tprivate inputGroups(\n\t\tinputRows: readonly CryptoHftDataOrderBookRow[],\n\t): Array<ReturnType<typeof validatedRow>[]> {\n\t\tconst observedObjects = new Map<string, SourceObjectEvidence>();\n\t\tfor (const row of inputRows) {\n\t\t\tconst existing = observedObjects.get(row.dataset_object_identity);\n\t\t\tobservedObjects.set(row.dataset_object_identity, {\n\t\t\t\tidentity: row.dataset_object_identity,\n\t\t\t\tchecksums: [\n\t\t\t\t\t...new Set([\n\t\t\t\t\t\t...(existing?.checksums ?? []),\n\t\t\t\t\t\trow.dataset_object_checksum,\n\t\t\t\t\t]),\n\t\t\t\t].sort(),\n\t\t\t\tattempt_count: 1,\n\t\t\t\tquarantined: false,\n\t\t\t});\n\t\t}\n\t\tfor (const object of observedObjects.values()) {\n\t\t\tthis.observe({ type: \"provider_object_boundary\", object });\n\t\t\tif (object.checksums.length > 1) {\n\t\t\t\tthis.observe({\n\t\t\t\t\ttype: \"provider_object_checksum_conflict\",\n\t\t\t\t\tobject: { ...object, quarantined: true },\n\t\t\t\t\taffected_target_times_ms: this.targets.slice(this.targetIndex),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst rows = inputRows\n\t\t\t.map((row, index) => ({\n\t\t\t\t...validatedRow(this.request, row),\n\t\t\t\toriginalIndex: index,\n\t\t\t}))\n\t\t\t.sort(\n\t\t\t\t(left, right) =>\n\t\t\t\t\tleft.eventTimeMs - right.eventTimeMs ||\n\t\t\t\t\tleft.originalIndex - right.originalIndex,\n\t\t\t);\n\t\tconst groups: Array<ReturnType<typeof validatedRow>[]> = [];\n\t\tfor (const row of rows) {\n\t\t\tconst current = groups.at(-1);\n\t\t\tif (\n\t\t\t\t!current ||\n\t\t\t\tgroupKey(\n\t\t\t\t\tcurrent[0] as ReturnType<typeof validatedRow>,\n\t\t\t\t\tthis.profile,\n\t\t\t\t) !== groupKey(row, this.profile)\n\t\t\t) {\n\t\t\t\tgroups.push([row]);\n\t\t\t} else {\n\t\t\t\tcurrent.push(row);\n\t\t\t}\n\t\t}\n\t\treturn groups;\n\t}\n\n\tprivate processGroup(group: ReturnType<typeof validatedRow>[]): boolean {\n\t\tconst first = group[0] as ReturnType<typeof validatedRow>;\n\t\tthis.sampleBefore(first.eventTimeMs);\n\t\tif (\n\t\t\tthis.options.collectPolicyNeutralTape &&\n\t\t\tfirst.eventTimeMs >= this.request.window.endTimeMs\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (\n\t\t\tthis.options.collectPolicyNeutralTape &&\n\t\t\t!this.tapeInitializationEmitted &&\n\t\t\tfirst.eventTimeMs >= this.request.window.startTimeMs &&\n\t\t\tthis.state\n\t\t) {\n\t\t\tthis.capturePolicyNeutralState(\"initialization\");\n\t\t}\n\t\tif (\n\t\t\tthis.targetIndex >= this.targets.length &&\n\t\t\t!this.options.collectPolicyNeutralTape\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (first.event_type === \"snapshot\") this.applySnapshot(group);\n\t\telse if (this.state) this.applyUpdate(group);\n\t\tif (\n\t\t\tthis.options.collectPolicyNeutralTape &&\n\t\t\tthis.state &&\n\t\t\tfirst.eventTimeMs >= this.request.window.startTimeMs &&\n\t\t\tfirst.eventTimeMs < this.request.window.endTimeMs\n\t\t) {\n\t\t\tthis.capturePolicyNeutralState(\n\t\t\t\tthis.tapeInitializationEmitted ? \"change\" : \"initialization\",\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\tdrainPolicyNeutralTape(): PolicyNeutralCryptoHftBookState[] {\n\t\treturn this.policyNeutralTape.splice(0, this.policyNeutralTape.length);\n\t}\n\n\tprivate capturePolicyNeutralState(\n\t\ttapeState: PolicyNeutralCryptoHftBookState[\"tapeState\"],\n\t): void {\n\t\tconst state = this.state;\n\t\tif (!state) return;\n\t\tconst bids = sortedSide(state.bids, \"bid\").slice(0, this.request.depth);\n\t\tconst asks = sortedSide(state.asks, \"ask\").slice(0, this.request.depth);\n\t\tif (bids.length === 0 || asks.length === 0) {\n\t\t\tthrow new CryptoHftDataError(\"book_side_missing\");\n\t\t}\n\t\tif ((bids[0]?.[0] as number) >= (asks[0]?.[0] as number)) {\n\t\t\tthrow new CryptoHftDataError(\"book_crossed_or_locked\");\n\t\t}\n\t\tthis.policyNeutralTape.push({\n\t\t\ttapeState,\n\t\t\ttargetTimeMs: state.sourceTimeMs,\n\t\t\tsourceTimeMs: state.sourceTimeMs,\n\t\t\treceivedTimeMs: state.receivedTimeMs,\n\t\t\tsequence: state.sequence,\n\t\t\tbids,\n\t\t\tasks,\n\t\t\tdatasetObjectIdentity: state.datasetObjectIdentity,\n\t\t\tdatasetObjectChecksum: state.datasetObjectChecksum,\n\t\t});\n\t\tthis.tapeInitializationEmitted = true;\n\t}\n\n\tprivate observe(observation: ReconstructionObservation): void {\n\t\ttry {\n\t\t\tthis.observer?.observe(observation);\n\t\t} catch {\n\t\t\t// Qualification evidence must never affect production reconstruction.\n\t\t}\n\t}\n\n\tprivate objectEvidence(state: BookState): SourceObjectEvidence {\n\t\treturn {\n\t\t\tidentity: state.datasetObjectIdentity,\n\t\t\tchecksums: [state.datasetObjectChecksum],\n\t\t\tattempt_count: 1,\n\t\t\tquarantined: false,\n\t\t};\n\t}\n\n\tfinish(): ReconstructedCryptoHftBook[] {\n\t\tthis.sampleBefore(Number.POSITIVE_INFINITY);\n\t\tif (this.missingSamples.length > 0) {\n\t\t\tthrow new CryptoHftDataError(\n\t\t\t\tthis.sequenceGaps.length > 0\n\t\t\t\t\t? \"update_chain_gap\"\n\t\t\t\t\t: this.missingSamples.some((sample) => sample.asofLagMs !== undefined)\n\t\t\t\t\t\t? \"required_clock_coverage_insufficient\"\n\t\t\t\t\t\t: \"update_before_snapshot\",\n\t\t\t\t{\n\t\t\t\t\t...this.sequenceGapDiagnostics(),\n\t\t\t\t\t...this.missingClockDiagnostics(),\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\treturn this.samples;\n\t}\n\n\tfinishPolicyNeutralTape(): PolicyNeutralCryptoHftBookState[] {\n\t\tthis.finish();\n\t\tif (this.sequenceGaps.length > 0) {\n\t\t\tthrow new CryptoHftDataError(\"update_chain_gap\", {\n\t\t\t\t...this.sequenceGapDiagnostics(),\n\t\t\t});\n\t\t}\n\t\tif (!this.tapeInitializationEmitted && this.state) {\n\t\t\tthis.capturePolicyNeutralState(\"initialization\");\n\t\t}\n\t\tif (!this.tapeInitializationEmitted) {\n\t\t\tthrow new CryptoHftDataError(\"update_before_snapshot\");\n\t\t}\n\t\treturn this.policyNeutralTape;\n\t}\n\n\tasync finishPolicyNeutralTapeToSink(\n\t\tsink: PolicyNeutralTapeSink,\n\t\tonStatesWritten: (count: number) => void,\n\t): Promise<void> {\n\t\tthis.finishPolicyNeutralTape();\n\t\tconst states = this.drainPolicyNeutralTape();\n\t\tif (states.length > 0) {\n\t\t\tconst written = await writePolicyNeutralTapeStates(sink, states);\n\t\t\tonStatesWritten(written);\n\t\t}\n\t}\n\n\tprivate missingClockDiagnostics(): Record<string, string | number | boolean> {\n\t\tif (this.missingSamples.length === 0) return {};\n\t\tconst first = this\n\t\t\t.missingSamples[0] as (typeof this.missingSamples)[number];\n\t\tconst last = this.missingSamples.at(\n\t\t\t-1,\n\t\t) as (typeof this.missingSamples)[number];\n\t\tconst observedLags = this.missingSamples.flatMap((sample) =>\n\t\t\tsample.asofLagMs === undefined ? [] : [sample.asofLagMs],\n\t\t);\n\t\tconst missingDates = [\n\t\t\t...new Set(\n\t\t\t\tthis.missingSamples.map((sample) =>\n\t\t\t\t\tnew Date(sample.targetTimeMs).toISOString().slice(0, 10),\n\t\t\t\t),\n\t\t\t),\n\t\t].join(\",\");\n\t\tconst coverageByLag = Object.fromEntries(\n\t\t\tDIAGNOSTIC_LAG_THRESHOLDS_MS.map((threshold) => [\n\t\t\t\t`covered_target_count_lag_${threshold}_ms`,\n\t\t\t\tthis.clockObservations.filter(\n\t\t\t\t\t(observation) =>\n\t\t\t\t\t\tobservation.sourceTimeMs !== undefined &&\n\t\t\t\t\t\tobservation.sourceTimeMs <= observation.targetTimeMs &&\n\t\t\t\t\t\t(observation.asofLagMs as number) <= threshold,\n\t\t\t\t).length,\n\t\t\t]),\n\t\t);\n\t\treturn {\n\t\t\ttarget_time_ms: first.targetTimeMs,\n\t\t\t...(first.sourceTimeMs === undefined\n\t\t\t\t? {}\n\t\t\t\t: { source_time_ms: first.sourceTimeMs }),\n\t\t\t...(first.asofLagMs === undefined\n\t\t\t\t? {}\n\t\t\t\t: { asof_lag_ms: first.asofLagMs }),\n\t\t\tmax_prior_asof_lag_ms: this.request.maxPriorAsOfLagMs,\n\t\t\tmissing_target_count: this.missingSamples.length,\n\t\t\tcovered_target_count: this.samples.length,\n\t\t\tfirst_missing_target_time_ms: first.targetTimeMs,\n\t\t\tlast_missing_target_time_ms: last.targetTimeMs,\n\t\t\t...(observedLags.length === 0\n\t\t\t\t? {}\n\t\t\t\t: { max_observed_asof_lag_ms: Math.max(...observedLags) }),\n\t\t\tmissing_target_dates_utc: missingDates,\n\t\t\ttotal_target_count: this.clockObservations.length,\n\t\t\tunanchored_target_count: this.clockObservations.filter(\n\t\t\t\t(observation) => observation.sourceTimeMs === undefined,\n\t\t\t).length,\n\t\t\tfuture_state_target_count: this.clockObservations.filter(\n\t\t\t\t(observation) =>\n\t\t\t\t\tobservation.sourceTimeMs !== undefined &&\n\t\t\t\t\tobservation.sourceTimeMs > observation.targetTimeMs,\n\t\t\t).length,\n\t\t\t...coverageByLag,\n\t\t};\n\t}\n\n\tprivate sequenceGapDiagnostics(): Record<string, string | number | boolean> {\n\t\tif (this.sequenceGaps.length === 0) return {};\n\t\tconst first = this.sequenceGaps[0] as (typeof this.sequenceGaps)[number];\n\t\tconst last = this.sequenceGaps.at(-1) as (typeof this.sequenceGaps)[number];\n\t\treturn {\n\t\t\tevent_time_ms: first.eventTimeMs,\n\t\t\texpected_previous_sequence: first.expectedPreviousSequence,\n\t\t\tobserved_previous_sequence: first.observedPreviousSequence,\n\t\t\tobserved_final_sequence: first.observedFinalSequence,\n\t\t\tsequence_gap_count: this.sequenceGaps.length,\n\t\t\tfirst_sequence_gap_event_time_ms: first.eventTimeMs,\n\t\t\tlast_sequence_gap_event_time_ms: last.eventTimeMs,\n\t\t};\n\t}\n\n\tprivate sampleBefore(nextEventTimeMs: number): void {\n\t\twhile (\n\t\t\tthis.targetIndex < this.targets.length &&\n\t\t\t(this.targets[this.targetIndex] as number) < nextEventTimeMs\n\t\t) {\n\t\t\tthis.sample(this.targets[this.targetIndex] as number);\n\t\t\tthis.targetIndex += 1;\n\t\t}\n\t}\n\n\tprivate sample(targetTimeMs: number): void {\n\t\tconst state = this.state;\n\t\tthis.clockObservations.push({\n\t\t\ttargetTimeMs,\n\t\t\t...(state\n\t\t\t\t? {\n\t\t\t\t\t\tsourceTimeMs: state.sourceTimeMs,\n\t\t\t\t\t\tasofLagMs: Math.abs(targetTimeMs - state.sourceTimeMs),\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t});\n\t\tif (\n\t\t\t!state ||\n\t\t\tstate.sourceTimeMs > targetTimeMs ||\n\t\t\ttargetTimeMs - state.sourceTimeMs > this.request.maxPriorAsOfLagMs\n\t\t) {\n\t\t\tthis.observe({\n\t\t\t\ttype: \"required_clock_sample\",\n\t\t\t\ttarget_time_ms: targetTimeMs,\n\t\t\t\tsource_time_ms: state?.sourceTimeMs ?? null,\n\t\t\t\tlag_ms: state ? Math.abs(targetTimeMs - state.sourceTimeMs) : null,\n\t\t\t\tstatus: !state\n\t\t\t\t\t? \"unanchored\"\n\t\t\t\t\t: state.sourceTimeMs > targetTimeMs\n\t\t\t\t\t\t? \"future\"\n\t\t\t\t\t\t: \"stale\",\n\t\t\t\tobject: state ? this.objectEvidence(state) : null,\n\t\t\t});\n\t\t\tthis.missingSamples.push({\n\t\t\t\ttargetTimeMs,\n\t\t\t\t...(state\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tsourceTimeMs: state.sourceTimeMs,\n\t\t\t\t\t\t\tasofLagMs: Math.abs(targetTimeMs - state.sourceTimeMs),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.observe({\n\t\t\ttype: \"required_clock_sample\",\n\t\t\ttarget_time_ms: targetTimeMs,\n\t\t\tsource_time_ms: state.sourceTimeMs,\n\t\t\tlag_ms: targetTimeMs - state.sourceTimeMs,\n\t\t\tstatus: \"covered\",\n\t\t\tobject: this.objectEvidence(state),\n\t\t});\n\t\tconst bids = sortedSide(state.bids, \"bid\").slice(0, this.request.depth);\n\t\tconst asks = sortedSide(state.asks, \"ask\").slice(0, this.request.depth);\n\t\tif (bids.length === 0 || asks.length === 0) {\n\t\t\tthrow new CryptoHftDataError(\"book_side_missing\");\n\t\t}\n\t\tif ((bids[0]?.[0] as number) >= (asks[0]?.[0] as number)) {\n\t\t\tthrow new CryptoHftDataError(\"book_crossed_or_locked\");\n\t\t}\n\t\tthis.samples.push({\n\t\t\ttargetTimeMs,\n\t\t\tsourceTimeMs: state.sourceTimeMs,\n\t\t\treceivedTimeMs: state.receivedTimeMs,\n\t\t\tsequence: state.sequence,\n\t\t\tbids,\n\t\t\tasks,\n\t\t\tdatasetObjectIdentity: state.datasetObjectIdentity,\n\t\t\tdatasetObjectChecksum: state.datasetObjectChecksum,\n\t\t});\n\t}\n\n\tprivate applySnapshot(group: ReturnType<typeof validatedRow>[]): void {\n\t\tconst first = group[0] as ReturnType<typeof validatedRow>;\n\t\tconst reanchored = this.state === undefined && this.sequenceGaps.length > 0;\n\t\tconst sequence = snapshotSequence(first, this.profile);\n\t\tif (group.some((row) => snapshotSequence(row, this.profile) !== sequence)) {\n\t\t\tthrow new CryptoHftDataError(\"ambiguous_snapshot_group\");\n\t\t}\n\t\tif (\n\t\t\tthis.profile.sequenceSemantics === \"binance_u_U_pu\" &&\n\t\t\tthis.previousFinalUpdateId !== undefined &&\n\t\t\tBigInt(sequence) < this.previousFinalUpdateId\n\t\t) {\n\t\t\tthrow new CryptoHftDataError(\"snapshot_sequence_regression\");\n\t\t}\n\t\tthis.state = {\n\t\t\tbids: new Map(),\n\t\t\tasks: new Map(),\n\t\t\tsequence,\n\t\t\tsourceTimeMs: first.eventTimeMs,\n\t\t\treceivedTimeMs: Math.max(...group.map((row) => row.receivedTimeMs)),\n\t\t\tdatasetObjectIdentity: first.dataset_object_identity,\n\t\t\tdatasetObjectChecksum: first.dataset_object_checksum,\n\t\t};\n\t\tapplyRows(this.state, group);\n\t\tthis.previousFinalUpdateId = BigInt(sequence);\n\t\tthis.observe({\n\t\t\ttype: reanchored ? \"reanchor\" : \"snapshot_anchor\",\n\t\t\tanchor: {\n\t\t\t\tevent_time_ms: first.eventTimeMs,\n\t\t\t\tsequence,\n\t\t\t\tobject_identity: first.dataset_object_identity,\n\t\t\t\tobject_checksum: first.dataset_object_checksum,\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate applyUpdate(group: ReturnType<typeof validatedRow>[]): void {\n\t\tconst first = group[0] as ReturnType<typeof validatedRow>;\n\t\tconst state = this.state as BookState;\n\t\tconst previousFinalUpdateId = this.previousFinalUpdateId as bigint;\n\t\tconst finalUpdate = BigInt(\n\t\t\tunsignedString(first.final_update_id, \"final_update_id\", true) as string,\n\t\t);\n\t\tif (this.profile.sequenceSemantics === \"okx_seq_id_prev_seq_id\") {\n\t\t\tif (\n\t\t\t\t!absent(first.first_update_id) ||\n\t\t\t\t!absent(first.prev_final_update_id)\n\t\t\t) {\n\t\t\t\tthrow new CryptoHftDataError(\"ambiguous_update_group\");\n\t\t\t}\n\t\t\tconst previous = unsignedString(\n\t\t\t\tfirst.last_update_id,\n\t\t\t\t\"last_update_id\",\n\t\t\t\ttrue,\n\t\t\t) as string;\n\t\t\tif (\n\t\t\t\tgroup.some(\n\t\t\t\t\t(row) =>\n\t\t\t\t\t\t!absent(row.first_update_id) ||\n\t\t\t\t\t\t!absent(row.prev_final_update_id) ||\n\t\t\t\t\t\tunsignedString(row.final_update_id, \"final_update_id\", true) !==\n\t\t\t\t\t\t\tfinalUpdate.toString() ||\n\t\t\t\t\t\tunsignedString(row.last_update_id, \"last_update_id\", true) !==\n\t\t\t\t\t\t\tprevious,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrow new CryptoHftDataError(\"ambiguous_update_group\");\n\t\t\t}\n\t\t\tif (BigInt(previous) !== previousFinalUpdateId) {\n\t\t\t\tthis.observe({\n\t\t\t\t\ttype: \"sequence_discontinuity\",\n\t\t\t\t\tsequence: {\n\t\t\t\t\t\texpected_previous: previousFinalUpdateId.toString(),\n\t\t\t\t\t\tobserved_previous: previous,\n\t\t\t\t\t\tobserved_final: finalUpdate.toString(),\n\t\t\t\t\t\tevent_time_ms: first.eventTimeMs,\n\t\t\t\t\t},\n\t\t\t\t\tobject: {\n\t\t\t\t\t\tidentity: first.dataset_object_identity,\n\t\t\t\t\t\tchecksums: [first.dataset_object_checksum],\n\t\t\t\t\t\tattempt_count: 1,\n\t\t\t\t\t\tquarantined: false,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tthis.observe({\n\t\t\t\t\ttype: \"invalidation\",\n\t\t\t\t\tevent_time_ms: first.eventTimeMs,\n\t\t\t\t\treason: \"update_chain_gap\",\n\t\t\t\t});\n\t\t\t\tthis.sequenceGaps.push({\n\t\t\t\t\teventTimeMs: first.eventTimeMs,\n\t\t\t\t\texpectedPreviousSequence: previousFinalUpdateId.toString(),\n\t\t\t\t\tobservedPreviousSequence: previous,\n\t\t\t\t\tobservedFinalSequence: finalUpdate.toString(),\n\t\t\t\t});\n\t\t\t\tthis.state = undefined;\n\t\t\t\tthis.previousFinalUpdateId = undefined;\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tconst firstUpdate = BigInt(\n\t\t\t\tunsignedString(\n\t\t\t\t\tfirst.first_update_id,\n\t\t\t\t\t\"first_update_id\",\n\t\t\t\t\ttrue,\n\t\t\t\t) as string,\n\t\t\t);\n\t\t\tconst previous = unsignedString(\n\t\t\t\tfirst.prev_final_update_id,\n\t\t\t\t\"prev_final_update_id\",\n\t\t\t);\n\t\t\tif (\n\t\t\t\tgroup.some(\n\t\t\t\t\t(row) =>\n\t\t\t\t\t\tunsignedString(row.first_update_id, \"first_update_id\", true) !==\n\t\t\t\t\t\t\tfirstUpdate.toString() ||\n\t\t\t\t\t\tunsignedString(row.final_update_id, \"final_update_id\", true) !==\n\t\t\t\t\t\t\tfinalUpdate.toString() ||\n\t\t\t\t\t\tunsignedString(row.prev_final_update_id, \"prev_final_update_id\") !==\n\t\t\t\t\t\t\tprevious,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tthrow new CryptoHftDataError(\"ambiguous_update_group\");\n\t\t\t}\n\t\t\tconst expected = previousFinalUpdateId + 1n;\n\t\t\tif (\n\t\t\t\tfirstUpdate > expected ||\n\t\t\t\tfinalUpdate < expected ||\n\t\t\t\t(previous !== undefined && BigInt(previous) !== previousFinalUpdateId)\n\t\t\t) {\n\t\t\t\tthrow new CryptoHftDataError(\"update_chain_gap\");\n\t\t\t}\n\t\t}\n\t\tapplyRows(state, group);\n\t\tstate.sequence = finalUpdate.toString();\n\t\tstate.sourceTimeMs = first.eventTimeMs;\n\t\tstate.receivedTimeMs = Math.max(...group.map((row) => row.receivedTimeMs));\n\t\tstate.datasetObjectIdentity = first.dataset_object_identity;\n\t\tstate.datasetObjectChecksum = first.dataset_object_checksum;\n\t\tthis.previousFinalUpdateId = finalUpdate;\n\t}\n}\n\nexport function reconstructCryptoHftDataOrderBooks(\n\trequest: MarketDataVendorBackfillRequest,\n\tinputRows: readonly CryptoHftDataOrderBookRow[],\n\tprofile: CryptoHftDataCapabilityProfile = CRYPTOHFTDATA_BINANCE_SPOT_BTCUSDT_PROFILE,\n\tobserver?: ReconstructionObservationSink,\n): ReconstructedCryptoHftBook[] {\n\tconst reconstructor = new StreamingBookReconstructor(\n\t\trequest,\n\t\tprofile,\n\t\tobserver,\n\t);\n\treconstructor.push(inputRows);\n\treturn reconstructor.finish();\n}\n\n/**\n * Qualification-only full-window policy-neutral source projection.\n * It uses the production OKX grouping, validation, sequence and mutation path,\n * but continues after the submitted clock is exhausted and emits no Maker\n * policy decisions.\n */\nexport function reconstructCryptoHftDataPolicyNeutralTape(\n\trequest: MarketDataVendorBackfillRequest,\n\tinputRows: readonly CryptoHftDataOrderBookRow[],\n\tprofile: CryptoHftDataCapabilityProfile,\n\tobserver?: ReconstructionObservationSink,\n): PolicyNeutralCryptoHftBookState[] {\n\tif (\n\t\tprofile.sequenceSemantics !== \"okx_seq_id_prev_seq_id\" ||\n\t\trequest.depth !== 100\n\t) {\n\t\tthrow new CryptoHftDataError(\"source_tape_scope_unsupported\");\n\t}\n\tconst reconstructor = new StreamingBookReconstructor(\n\t\trequest,\n\t\tprofile,\n\t\tobserver,\n\t\t{ collectPolicyNeutralTape: true },\n\t);\n\treconstructor.push(inputRows);\n\treturn reconstructor.finishPolicyNeutralTape();\n}\n\nfunction sha256Bytes(bytes: Uint8Array): string {\n\treturn createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\nexport async function decodeCryptoHftParquetZstd(\n\tbytes: Uint8Array,\n): Promise<Record<string, unknown>[]> {\n\tconst parquet = decompress(bytes);\n\tconst buffer = parquet.buffer.slice(\n\t\tparquet.byteOffset,\n\t\tparquet.byteOffset + parquet.byteLength,\n\t) as ArrayBuffer;\n\treturn parquetReadObjects({ file: buffer });\n}\n\nexport type CryptoHftDataAdapterOptions = {\n\tbaseUrl?: string;\n\tfetch?: typeof fetch;\n\tnowMs?: () => number;\n\tdecode?: (bytes: Uint8Array) => Promise<Record<string, unknown>[]>;\n\tprofiles?: readonly CryptoHftDataCapabilityProfile[];\n\tobserver?: ReconstructionObservationSink;\n\tpolicyNeutralTapeSink?: PolicyNeutralTapeSink;\n};\n\nfunction parsedDatasetRow(\n\tvalue: Record<string, unknown>,\n\tobject: ProviderObjectEvidence,\n): CryptoHftDataOrderBookRow {\n\treturn {\n\t\treceived_time: value.received_time as string | number | bigint,\n\t\tevent_time: value.event_time as string | number | bigint,\n\t\ttransaction_time: value.transaction_time as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tsymbol: value.symbol as string,\n\t\tevent_type: value.event_type as \"snapshot\" | \"update\",\n\t\tfirst_update_id: value.first_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tfinal_update_id: value.final_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tprev_final_update_id: value.prev_final_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tlast_update_id: value.last_update_id as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tside: value.side as \"bid\" | \"ask\",\n\t\tprice: value.price as string,\n\t\tquantity: value.quantity as string,\n\t\torder_count: value.order_count as\n\t\t\t| string\n\t\t\t| number\n\t\t\t| bigint\n\t\t\t| null\n\t\t\t| undefined,\n\t\tdataset_object_identity: object.identity,\n\t\tdataset_object_checksum: object.checksum,\n\t};\n}\n\nasync function readBoundedObject(\n\tresponse: Response,\n\tremainingBytes: number,\n): Promise<Uint8Array> {\n\tif (!response.body) return new Uint8Array();\n\tconst reader = response.body.getReader();\n\tconst chunks: Uint8Array[] = [];\n\tlet total = 0;\n\twhile (true) {\n\t\tconst { done, value } = await reader.read();\n\t\tif (done) break;\n\t\ttotal += value.byteLength;\n\t\tif (total > remainingBytes) {\n\t\t\tawait reader.cancel();\n\t\t\tthrow new CryptoHftDataError(\"budget_max_bytes_exceeded\");\n\t\t}\n\t\tchunks.push(value);\n\t}\n\tconst bytes = new Uint8Array(total);\n\tlet offset = 0;\n\tfor (const chunk of chunks) {\n\t\tbytes.set(chunk, offset);\n\t\toffset += chunk.byteLength;\n\t}\n\treturn bytes;\n}\n\nexport class CryptoHftDataAdapter {\n\tprivate readonly baseUrl: string;\n\tprivate readonly request: typeof fetch;\n\tprivate readonly nowMs: () => number;\n\tprivate readonly decode: (\n\t\tbytes: Uint8Array,\n\t) => Promise<Record<string, unknown>[]>;\n\tprivate readonly profiles: readonly CryptoHftDataCapabilityProfile[];\n\tprivate readonly observer?: ReconstructionObservationSink;\n\tprivate readonly collectPolicyNeutralTape: boolean;\n\tprivate readonly policyNeutralTapeSink?: PolicyNeutralTapeSink;\n\n\tconstructor(options: CryptoHftDataAdapterOptions = {}) {\n\t\tthis.baseUrl = options.baseUrl ?? CRYPTOHFTDATA_API_URL;\n\t\tthis.request = options.fetch ?? fetch;\n\t\tthis.nowMs = options.nowMs ?? Date.now;\n\t\tthis.decode = options.decode ?? decodeCryptoHftParquetZstd;\n\t\tthis.profiles = options.profiles ?? [];\n\t\tthis.observer = options.observer;\n\t\tthis.policyNeutralTapeSink = options.policyNeutralTapeSink;\n\t\tthis.collectPolicyNeutralTape = options.policyNeutralTapeSink !== undefined;\n\t}\n\n\tprivate observe(observation: ReconstructionObservation): void {\n\t\ttry {\n\t\t\tthis.observer?.observe(observation);\n\t\t} catch {\n\t\t\t// Evidence collection cannot alter acquisition or reconstruction.\n\t\t}\n\t}\n\n\tcapabilityFor(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t): ProviderCapability | undefined {\n\t\treturn cryptoHftDataCapabilityFor(request, this.profiles);\n\t}\n\n\tprivate findProfile(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tcapability: ProviderCapability,\n\t): CryptoHftDataCapabilityProfile | undefined {\n\t\treturn this.profiles.find(\n\t\t\t(candidate) =>\n\t\t\t\tcandidate.exchange === request.scope.exchange.trim().toLowerCase() &&\n\t\t\t\tcandidate.tradingPair === request.scope.tradingPair &&\n\t\t\t\tcandidate.sourceSymbol === request.scope.sourceSymbol &&\n\t\t\t\tcandidate.marketType === request.scope.marketType &&\n\t\t\t\tcandidate.providerExchangeId === capability.providerExchangeId,\n\t\t);\n\t}\n\n\tprivate profileFor(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tcapability: ProviderCapability,\n\t): CryptoHftDataCapabilityProfile {\n\t\tconst profile = this.findProfile(request, capability);\n\t\tif (!profile) {\n\t\t\tthrow new CryptoHftDataError(\"profile_semantics_unavailable\");\n\t\t}\n\t\treturn profile;\n\t}\n\n\tasync discoverSymbols(providerExchangeId: string): Promise<string[]> {\n\t\tif (!/^[a-z0-9_]+$/.test(providerExchangeId)) {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_exchange_invalid\");\n\t\t}\n\t\tconst endpoint = new URL(\"/symbols\", this.baseUrl);\n\t\tendpoint.searchParams.set(\"exchange\", providerExchangeId);\n\t\tendpoint.searchParams.set(\"data_type\", \"orderbook\");\n\t\tlet response: Response;\n\t\ttry {\n\t\t\tresponse = await this.request(endpoint);\n\t\t} catch {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_failed\");\n\t\t}\n\t\tif (!response.ok) {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_failed\");\n\t\t}\n\t\tlet body: unknown;\n\t\ttry {\n\t\t\tbody = await response.json();\n\t\t} catch {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_response_invalid\");\n\t\t}\n\t\tconst record = body as Record<string, unknown>;\n\t\tif (\n\t\t\t!body ||\n\t\t\ttypeof body !== \"object\" ||\n\t\t\tArray.isArray(body) ||\n\t\t\tString(record.exchange).toLowerCase() !== providerExchangeId ||\n\t\t\tString(record.data_type).toLowerCase() !== \"orderbook\" ||\n\t\t\t!Array.isArray(record.symbols) ||\n\t\t\t!record.symbols.every(\n\t\t\t\t(symbol) => typeof symbol === \"string\" && /^[A-Z0-9_-]+$/.test(symbol),\n\t\t\t)\n\t\t) {\n\t\t\tthrow new CryptoHftDataError(\"symbol_discovery_response_invalid\");\n\t\t}\n\t\treturn [...new Set(record.symbols as string[])].sort();\n\t}\n\n\tasync acquire(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tcapability: ProviderCapability,\n\t\tcredential: unknown,\n\t): Promise<ProviderDataset<CryptoHftDataOrderBookRow>> {\n\t\tlet retainedStateCount = 0;\n\t\ttry {\n\t\t\tconst result = await this.acquireInternal(\n\t\t\t\trequest,\n\t\t\t\tcapability,\n\t\t\t\tcredential,\n\t\t\t\t(count) => {\n\t\t\t\t\tretainedStateCount += count;\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\tif (this.policyNeutralTapeSink) {\n\t\t\t\tconst reason =\n\t\t\t\t\terror instanceof CryptoHftDataError\n\t\t\t\t\t\t? error.reason\n\t\t\t\t\t\t: \"source_tape_acquisition_failed\";\n\t\t\t\tawait this.policyNeutralTapeSink\n\t\t\t\t\t.abort({ reason, retainedStateCount })\n\t\t\t\t\t.catch(() => {});\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async acquireInternal(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tcapability: ProviderCapability,\n\t\tcredential: unknown,\n\t\tonTapeStatesWritten: (count: number) => void,\n\t): Promise<ProviderDataset<CryptoHftDataOrderBookRow>> {\n\t\tconst profile = this.findProfile(request, capability);\n\t\tconst apiKey =\n\t\t\tcredential && typeof credential === \"object\"\n\t\t\t\t? (credential as { apiKey?: unknown }).apiKey\n\t\t\t\t: undefined;\n\t\tif (typeof apiKey !== \"string\" || apiKey.length === 0) {\n\t\t\tthrow new CryptoHftDataError(\"credentials_invalid\");\n\t\t}\n\t\tif (\n\t\t\tthis.collectPolicyNeutralTape &&\n\t\t\t(profile?.sequenceSemantics !== \"okx_seq_id_prev_seq_id\" ||\n\t\t\t\trequest.depth !== 100)\n\t\t) {\n\t\t\tthrow new CryptoHftDataError(\"source_tape_scope_unsupported\");\n\t\t}\n\t\tconst paths = this.policyNeutralTapeSink\n\t\t\t? enumerateCryptoHftDataWindowObjects(\n\t\t\t\t\trequest,\n\t\t\t\t\tcapability.providerExchangeId,\n\t\t\t\t\tcapability.resolvedSymbol,\n\t\t\t\t)\n\t\t\t: enumerateCryptoHftDataObjects(\n\t\t\t\t\trequest,\n\t\t\t\t\tcapability.providerExchangeId,\n\t\t\t\t\tcapability.resolvedSymbol,\n\t\t\t\t);\n\t\tif (paths.length > request.budgets.maxFiles) {\n\t\t\tthrow new CryptoHftDataError(\"budget_max_files_exceeded\");\n\t\t}\n\t\tconst started = this.nowMs();\n\t\tconst tokenResponse = await this.request(`${this.baseUrl}/jwt-token`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"content-type\": \"application/json\", \"X-API-Key\": apiKey },\n\t\t});\n\t\tif (!tokenResponse.ok) throw new CryptoHftDataError(\"jwt_issuance_failed\");\n\t\tconst tokenBody = (await tokenResponse.json()) as { jwt_token?: unknown };\n\t\tif (typeof tokenBody.jwt_token !== \"string\" || !tokenBody.jwt_token) {\n\t\t\tthrow new CryptoHftDataError(\"jwt_response_invalid\");\n\t\t}\n\n\t\tlet totalBytes = 0;\n\t\tlet totalRows = 0;\n\t\tlet emittedTapeStateCount = 0;\n\t\tconst objects: ProviderObjectEvidence[] = [];\n\t\tconst rows: CryptoHftDataOrderBookRow[] = [];\n\t\tconst reconstructor =\n\t\t\tprofile?.sequenceSemantics === \"okx_seq_id_prev_seq_id\"\n\t\t\t\t? new StreamingBookReconstructor(request, profile, this.observer, {\n\t\t\t\t\t\tcollectPolicyNeutralTape: this.collectPolicyNeutralTape,\n\t\t\t\t\t})\n\t\t\t\t: undefined;\n\t\tconst semanticHash = createHash(\"sha256\");\n\t\tlet firstSemanticRow = true;\n\t\tsemanticHash.update(\"[\");\n\t\tfor (const path of paths) {\n\t\t\tconst endpoint = new URL(\"/download\", this.baseUrl);\n\t\t\tendpoint.searchParams.set(\"file\", path);\n\t\t\tlet accepted:\n\t\t\t\t| {\n\t\t\t\t\t\tobject: ProviderObjectEvidence;\n\t\t\t\t\t\tparsedRows: CryptoHftDataOrderBookRow[];\n\t\t\t\t }\n\t\t\t\t| undefined;\n\t\t\tlet observedChecksum: string | undefined;\n\t\t\tfor (\n\t\t\t\tlet attempt = 1;\n\t\t\t\tattempt <= PROVIDER_OBJECT_MAX_ATTEMPTS;\n\t\t\t\tattempt += 1\n\t\t\t) {\n\t\t\t\tif (this.nowMs() - started > request.budgets.maxDurationMs) {\n\t\t\t\t\tthrow new CryptoHftDataError(\"budget_max_duration_exceeded\");\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tlet response: Response;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tresponse = await this.request(endpoint, {\n\t\t\t\t\t\t\theaders: { Authorization: `Bearer ${tokenBody.jwt_token}` },\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow providerObjectFailure(\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\"provider_object_request_failed\",\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\"request\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\tthrow providerObjectFailure(\n\t\t\t\t\t\t\tnew CryptoHftDataError(\"object_download_failed\"),\n\t\t\t\t\t\t\t\"object_download_failed\",\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\"request\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst declaredBytes = Number(response.headers.get(\"content-length\"));\n\t\t\t\t\tif (\n\t\t\t\t\t\tNumber.isFinite(declaredBytes) &&\n\t\t\t\t\t\ttotalBytes + declaredBytes > request.budgets.maxBytes\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new CryptoHftDataError(\"budget_max_bytes_exceeded\");\n\t\t\t\t\t}\n\t\t\t\t\tlet bytes: Uint8Array;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tbytes = await readBoundedObject(\n\t\t\t\t\t\t\tresponse,\n\t\t\t\t\t\t\trequest.budgets.maxBytes - totalBytes,\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow providerObjectFailure(\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\"provider_object_read_failed\",\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\"read\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\ttotalBytes += bytes.byteLength;\n\t\t\t\t\tif (totalBytes > request.budgets.maxBytes) {\n\t\t\t\t\t\tthrow new CryptoHftDataError(\"budget_max_bytes_exceeded\");\n\t\t\t\t\t}\n\t\t\t\t\tconst checksum = sha256Bytes(bytes);\n\t\t\t\t\tif (observedChecksum && observedChecksum !== checksum) {\n\t\t\t\t\t\tthis.observe({\n\t\t\t\t\t\t\ttype: \"provider_object_checksum_conflict\",\n\t\t\t\t\t\t\tobject: {\n\t\t\t\t\t\t\t\tidentity: path,\n\t\t\t\t\t\t\t\tchecksums: [observedChecksum, checksum].sort(),\n\t\t\t\t\t\t\t\tattempt_count: attempt,\n\t\t\t\t\t\t\t\tquarantined: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\taffected_target_times_ms: request.requiredClockTargetsMs,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthrow new CryptoHftDataError(\"provider_object_checksum_conflict\", {\n\t\t\t\t\t\t\tdataset_object_identity: path,\n\t\t\t\t\t\t\tfailure_phase: \"checksum\",\n\t\t\t\t\t\t\tattempt_count: attempt,\n\t\t\t\t\t\t\tquarantined: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tobservedChecksum = checksum;\n\t\t\t\t\tlet decoded: Record<string, unknown>[];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tdecoded = await this.decode(bytes);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow providerObjectFailure(\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\"provider_object_decode_failed\",\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\"decode\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (totalRows + decoded.length > request.budgets.maxRows) {\n\t\t\t\t\t\tthrow new CryptoHftDataError(\"budget_max_rows_exceeded\");\n\t\t\t\t\t}\n\t\t\t\t\tconst object = {\n\t\t\t\t\t\tidentity: path,\n\t\t\t\t\t\tchecksum,\n\t\t\t\t\t\tbytes: bytes.byteLength,\n\t\t\t\t\t\trows: decoded.length,\n\t\t\t\t\t};\n\t\t\t\t\tconst parsedRows: CryptoHftDataOrderBookRow[] = [];\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfor (const decodedRow of decoded) {\n\t\t\t\t\t\t\tconst parsed = parsedDatasetRow(decodedRow, object);\n\t\t\t\t\t\t\tvalidatedRow(request, parsed);\n\t\t\t\t\t\t\tparsedRows.push(parsed);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow providerObjectFailure(\n\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\"provider_object_validation_failed\",\n\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\"validate\",\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\taccepted = { object, parsedRows };\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst failure =\n\t\t\t\t\t\terror instanceof CryptoHftDataError\n\t\t\t\t\t\t\t? error\n\t\t\t\t\t\t\t: providerObjectFailure(\n\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\"provider_object_request_failed\",\n\t\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\t\t\"request\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\t!RETRYABLE_PROVIDER_OBJECT_FAILURES.has(failure.reason) ||\n\t\t\t\t\t\tattempt === PROVIDER_OBJECT_MAX_ATTEMPTS\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow attempt === PROVIDER_OBJECT_MAX_ATTEMPTS &&\n\t\t\t\t\t\t\tRETRYABLE_PROVIDER_OBJECT_FAILURES.has(failure.reason)\n\t\t\t\t\t\t\t? quarantinedProviderObjectFailure(\n\t\t\t\t\t\t\t\t\tfailure,\n\t\t\t\t\t\t\t\t\tattempt,\n\t\t\t\t\t\t\t\t\tobservedChecksum,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t: failure;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!accepted) {\n\t\t\t\tthrow new CryptoHftDataError(\"provider_object_acquisition_incomplete\");\n\t\t\t}\n\t\t\ttotalRows += accepted.object.rows;\n\t\t\tobjects.push(accepted.object);\n\t\t\tfor (const parsed of accepted.parsedRows) {\n\t\t\t\tsemanticHash.update(firstSemanticRow ? \"\" : \",\");\n\t\t\t\tsemanticHash.update(canonicalSerialize(parsed));\n\t\t\t\tfirstSemanticRow = false;\n\t\t\t}\n\t\t\tif (reconstructor && this.policyNeutralTapeSink) {\n\t\t\t\tawait reconstructor.pushPolicyNeutralTape(\n\t\t\t\t\taccepted.parsedRows,\n\t\t\t\t\tthis.policyNeutralTapeSink,\n\t\t\t\t\t(written) => {\n\t\t\t\t\t\temittedTapeStateCount += written;\n\t\t\t\t\t\tonTapeStatesWritten(written);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} else if (reconstructor) {\n\t\t\t\treconstructor.push(accepted.parsedRows);\n\t\t\t} else {\n\t\t\t\trows.push(...accepted.parsedRows);\n\t\t\t}\n\t\t}\n\t\tif (this.nowMs() - started > request.budgets.maxDurationMs) {\n\t\t\tthrow new CryptoHftDataError(\"budget_max_duration_exceeded\");\n\t\t}\n\t\tsemanticHash.update(\"]\");\n\t\tconst reconstructedBooks = reconstructor?.finish();\n\t\tlet policyNeutralTape: PolicyNeutralCryptoHftBookState[] | undefined;\n\t\tif (this.policyNeutralTapeSink && reconstructor) {\n\t\t\tawait reconstructor.finishPolicyNeutralTapeToSink(\n\t\t\t\tthis.policyNeutralTapeSink,\n\t\t\t\t(written) => {\n\t\t\t\t\temittedTapeStateCount += written;\n\t\t\t\t\tonTapeStatesWritten(written);\n\t\t\t\t},\n\t\t\t);\n\t\t} else if (this.collectPolicyNeutralTape) {\n\t\t\tpolicyNeutralTape = reconstructor?.finishPolicyNeutralTape();\n\t\t}\n\t\tif (this.policyNeutralTapeSink) {\n\t\t\tawait this.policyNeutralTapeSink.complete({\n\t\t\t\texpectedObjectIdentities: paths,\n\t\t\t\tobservedObjects: objects,\n\t\t\t\tstateCount: emittedTapeStateCount,\n\t\t\t});\n\t\t}\n\t\treturn {\n\t\t\tobjects,\n\t\t\trows,\n\t\t\treconstructedBooks,\n\t\t\t...(policyNeutralTape && !this.policyNeutralTapeSink\n\t\t\t\t? { policyNeutralTape }\n\t\t\t\t: {}),\n\t\t\tvendorSemanticDigest: semanticHash.digest(\"hex\"),\n\t\t};\n\t}\n\n\tasync normalize(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tcapability: ProviderCapability,\n\t\tdataset: ProviderDataset,\n\t\tcaptureBundleId: string,\n\t): Promise<NormalizedBackfill> {\n\t\tconst profile = this.profileFor(request, capability);\n\t\tconst samples = dataset.reconstructedBooks\n\t\t\t? (dataset.reconstructedBooks as ReconstructedCryptoHftBook[])\n\t\t\t: reconstructCryptoHftDataOrderBooks(\n\t\t\t\t\trequest,\n\t\t\t\t\tdataset.rows as CryptoHftDataOrderBookRow[],\n\t\t\t\t\tprofile,\n\t\t\t\t);\n\t\tconst context: MarketCaptureContext = {\n\t\t\tsource: EXTERNAL_BACKFILL_SOURCE,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\tcaptureBundleId,\n\t\t\texchange: request.scope.exchange,\n\t\t\tsymbol: request.scope.tradingPair,\n\t\t\ttradingPair: request.scope.tradingPair,\n\t\t\tsourceSymbol: request.scope.sourceSymbol,\n\t\t\tassetType: request.scope.marketType,\n\t\t\tfeed: \"ORDERBOOK\",\n\t\t\tprovider: \"cryptohftdata\",\n\t\t\tsourceMode: HISTORICAL_VENDOR_SOURCE_MODE,\n\t\t\tschemaVersion: MARKET_CAPTURE_SCHEMA_VERSION,\n\t\t\tchecksumAlgorithm: CHECKSUM_ALGORITHM,\n\t\t\tprovenanceComplete: true,\n\t\t};\n\t\tconst rows = samples.flatMap((sample) => {\n\t\t\tconst rawCapture: RawCapture = {\n\t\t\t\trawCaptureId: sha256Canonical({\n\t\t\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\t\t\tdataset_object_identity: sample.datasetObjectIdentity,\n\t\t\t\t\tdataset_object_checksum: sample.datasetObjectChecksum,\n\t\t\t\t\tsource_time_ms: sample.sourceTimeMs,\n\t\t\t\t\ttarget_time_ms: sample.targetTimeMs,\n\t\t\t\t}),\n\t\t\t\trawCaptureScope: VENDOR_DATASET_RAW_CAPTURE_SCOPE,\n\t\t\t\trawChecksum: sample.datasetObjectChecksum,\n\t\t\t\tredactedPayload: {\n\t\t\t\t\tdataset_object_identity: sample.datasetObjectIdentity,\n\t\t\t\t\tdataset_object_checksum: sample.datasetObjectChecksum,\n\t\t\t\t},\n\t\t\t\teventTimeMs: sample.sourceTimeMs,\n\t\t\t\treceivedTimeMs: sample.receivedTimeMs,\n\t\t\t\tchecksumAlgorithm: CHECKSUM_ALGORITHM,\n\t\t\t};\n\t\t\tlet canonical: ReturnType<typeof buildCanonicalOrderBookRows>;\n\t\t\ttry {\n\t\t\t\tcanonical = buildCanonicalOrderBookRows({\n\t\t\t\t\tcontext,\n\t\t\t\t\trawCapture,\n\t\t\t\t\tdepthLimit: request.depth,\n\t\t\t\t\tconstructionMode: request.constructionMode,\n\t\t\t\t\tsnapshot: {\n\t\t\t\t\t\tbids: sample.bids,\n\t\t\t\t\t\tasks: sample.asks,\n\t\t\t\t\t\ttimestamp: sample.sourceTimeMs,\n\t\t\t\t\t\treceivedTimestamp: sample.receivedTimeMs,\n\t\t\t\t\t\texchange: request.scope.exchange,\n\t\t\t\t\t\tsymbol: request.scope.tradingPair,\n\t\t\t\t\t\tdepthLimit: request.depth,\n\t\t\t\t\t\tsequence: sample.sequence,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconst diagnostics = {\n\t\t\t\t\ttarget_time_ms: sample.targetTimeMs,\n\t\t\t\t\tsource_time_ms: sample.sourceTimeMs,\n\t\t\t\t\tdataset_object_identity: sample.datasetObjectIdentity,\n\t\t\t\t\tfailure_phase: \"normalize\",\n\t\t\t\t};\n\t\t\t\tif (error instanceof OrderBookValidationError) {\n\t\t\t\t\tthrow new CryptoHftDataError(\"canonical_orderbook_invalid\", {\n\t\t\t\t\t\t...diagnostics,\n\t\t\t\t\t\tvalidation_reason: error.reason,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthrow new CryptoHftDataError(\n\t\t\t\t\t\"canonical_normalization_failed\",\n\t\t\t\t\tdiagnostics,\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn [...canonical.levels, canonical.summary];\n\t\t}) as BackfillArchiveRow[];\n\t\treturn {\n\t\t\tcaptureBundleId,\n\t\t\tobjects: dataset.objects,\n\t\t\trows,\n\t\t\tvendorSemanticDigest: dataset.vendorSemanticDigest,\n\t\t\tcanonicalSemanticDigest: semanticDigest(rows),\n\t\t};\n\t}\n}\n",
|
|
162
158
|
"// Some numerical data is initialized as -1 even when it doesn't need initialization to help the JIT infer types\n// aliases for shorter compressed code (most minifers don't do this)\nvar ab = ArrayBuffer, u8 = Uint8Array, u16 = Uint16Array, i16 = Int16Array, u32 = Uint32Array, i32 = Int32Array;\nvar slc = function (v, s, e) {\n if (u8.prototype.slice)\n return u8.prototype.slice.call(v, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n var n = new u8(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar fill = function (v, n, s, e) {\n if (u8.prototype.fill)\n return u8.prototype.fill.call(v, n, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n for (; s < e; ++s)\n v[s] = n;\n return v;\n};\nvar cpw = function (v, t, s, e) {\n if (u8.prototype.copyWithin)\n return u8.prototype.copyWithin.call(v, t, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n while (s < e) {\n v[t++] = v[s++];\n }\n};\n/**\n * Codes for errors generated within this library\n */\nexport var ZstdErrorCode = {\n InvalidData: 0,\n WindowSizeTooLarge: 1,\n InvalidBlockType: 2,\n FSEAccuracyTooHigh: 3,\n DistanceTooFarBack: 4,\n UnexpectedEOF: 5\n};\n// error codes\nvar ec = [\n 'invalid zstd data',\n 'window size too large (>2046MB)',\n 'invalid block type',\n 'FSE accuracy too high',\n 'match distance too far back',\n 'unexpected EOF'\n];\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\nvar rb = function (d, b, n) {\n var i = 0, o = 0;\n for (; i < n; ++i)\n o |= d[b++] << (i << 3);\n return o;\n};\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read Zstandard frame header\nvar rzfh = function (dat, w) {\n var n3 = dat[0] | (dat[1] << 8) | (dat[2] << 16);\n if (n3 == 0x2FB528 && dat[3] == 253) {\n // Zstandard\n var flg = dat[4];\n // single segment checksum dict flag frame content flag\n var ss = (flg >> 5) & 1, cc = (flg >> 2) & 1, df = flg & 3, fcf = flg >> 6;\n if (flg & 8)\n err(0);\n // byte\n var bt = 6 - ss;\n // dict bytes\n var db = df == 3 ? 4 : df;\n // dictionary id\n var di = rb(dat, bt, db);\n bt += db;\n // frame size bytes\n var fsb = fcf ? (1 << fcf) : ss;\n // frame source size\n var fss = rb(dat, bt, fsb) + ((fcf == 1) && 256);\n // window size\n var ws = fss;\n if (!ss) {\n // window descriptor\n var wb = 1 << (10 + (dat[5] >> 3));\n ws = wb + (wb >> 3) * (dat[5] & 7);\n }\n if (ws > 2145386496)\n err(1);\n var buf = new u8((w == 1 ? (fss || ws) : w ? 0 : ws) + 12);\n buf[0] = 1, buf[4] = 4, buf[8] = 8;\n return {\n b: bt + fsb,\n y: 0,\n l: 0,\n d: di,\n w: (w && w != 1) ? w : buf.subarray(12),\n e: ws,\n o: new i32(buf.buffer, 0, 3),\n u: fss,\n c: cc,\n m: Math.min(131072, ws)\n };\n }\n else if (((n3 >> 4) | (dat[3] << 20)) == 0x184D2A5) {\n // skippable\n return b4(dat, 4) + 8;\n }\n err(0);\n};\n// most significant bit for nonzero\nvar msb = function (val) {\n var bits = 0;\n for (; (1 << bits) <= val; ++bits)\n ;\n return bits - 1;\n};\n// read finite state entropy\nvar rfse = function (dat, bt, mal) {\n // table pos\n var tpos = (bt << 3) + 4;\n // accuracy log\n var al = (dat[bt] & 15) + 5;\n if (al > mal)\n err(3);\n // size\n var sz = 1 << al;\n // probabilities symbols repeat index high threshold\n var probs = sz, sym = -1, re = -1, i = -1, ht = sz;\n // optimization: single allocation is much faster\n var buf = new ab(512 + (sz << 2));\n var freq = new i16(buf, 0, 256);\n // same view as freq\n var dstate = new u16(buf, 0, 256);\n var nstate = new u16(buf, 512, sz);\n var bb1 = 512 + (sz << 1);\n var syms = new u8(buf, bb1, sz);\n var nbits = new u8(buf, bb1 + sz);\n while (sym < 255 && probs > 0) {\n var bits = msb(probs + 1);\n var cbt = tpos >> 3;\n // mask\n var msk = (1 << (bits + 1)) - 1;\n var val = ((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (tpos & 7)) & msk;\n // mask (1 fewer bit)\n var msk1fb = (1 << bits) - 1;\n // max small value\n var msv = msk - probs - 1;\n // small value\n var sval = val & msk1fb;\n if (sval < msv)\n tpos += bits, val = sval;\n else {\n tpos += bits + 1;\n if (val > msk1fb)\n val -= msv;\n }\n freq[++sym] = --val;\n if (val == -1) {\n probs += val;\n syms[--ht] = sym;\n }\n else\n probs -= val;\n if (!val) {\n do {\n // repeat byte\n var rbt = tpos >> 3;\n re = ((dat[rbt] | (dat[rbt + 1] << 8)) >> (tpos & 7)) & 3;\n tpos += 2;\n sym += re;\n } while (re == 3);\n }\n }\n if (sym > 255 || probs)\n err(0);\n var sympos = 0;\n // sym step (coprime with sz - formula from zstd source)\n var sstep = (sz >> 1) + (sz >> 3) + 3;\n // sym mask\n var smask = sz - 1;\n for (var s = 0; s <= sym; ++s) {\n var sf = freq[s];\n if (sf < 1) {\n dstate[s] = -sf;\n continue;\n }\n // This is split into two loops in zstd to avoid branching, but as JS is higher-level that is unnecessary\n for (i = 0; i < sf; ++i) {\n syms[sympos] = s;\n do {\n sympos = (sympos + sstep) & smask;\n } while (sympos >= ht);\n }\n }\n // After spreading symbols, should be zero again\n if (sympos)\n err(0);\n for (i = 0; i < sz; ++i) {\n // next state\n var ns = dstate[syms[i]]++;\n // num bits\n var nb = nbits[i] = al - msb(ns);\n nstate[i] = (ns << nb) - sz;\n }\n return [(tpos + 7) >> 3, {\n b: al,\n s: syms,\n n: nbits,\n t: nstate\n }];\n};\n// read huffman\nvar rhu = function (dat, bt) {\n // index weight count\n var i = 0, wc = -1;\n // buffer header byte\n var buf = new u8(292), hb = dat[bt];\n // huffman weights\n var hw = buf.subarray(0, 256);\n // rank count\n var rc = buf.subarray(256, 268);\n // rank index\n var ri = new u16(buf.buffer, 268);\n // NOTE: at this point bt is 1 less than expected\n if (hb < 128) {\n // end byte, fse decode table\n var _a = rfse(dat, bt + 1, 6), ebt = _a[0], fdt = _a[1];\n bt += hb;\n var epos = ebt << 3;\n // last byte\n var lb = dat[bt];\n if (!lb)\n err(0);\n // state1 state2 state1 bits state2 bits\n var st1 = 0, st2 = 0, btr1 = fdt.b, btr2 = btr1;\n // fse pos\n // pre-increment to account for original deficit of 1\n var fpos = (++bt << 3) - 8 + msb(lb);\n for (;;) {\n fpos -= btr1;\n if (fpos < epos)\n break;\n var cbt = fpos >> 3;\n st1 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr1) - 1);\n hw[++wc] = fdt.s[st1];\n fpos -= btr2;\n if (fpos < epos)\n break;\n cbt = fpos >> 3;\n st2 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr2) - 1);\n hw[++wc] = fdt.s[st2];\n btr1 = fdt.n[st1];\n st1 = fdt.t[st1];\n btr2 = fdt.n[st2];\n st2 = fdt.t[st2];\n }\n if (++wc > 255)\n err(0);\n }\n else {\n wc = hb - 127;\n for (; i < wc; i += 2) {\n var byte = dat[++bt];\n hw[i] = byte >> 4;\n hw[i + 1] = byte & 15;\n }\n ++bt;\n }\n // weight exponential sum\n var wes = 0;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n // bits must be at most 11, same as weight\n if (wt > 11)\n err(0);\n wes += wt && (1 << (wt - 1));\n }\n // max bits\n var mb = msb(wes) + 1;\n // table size\n var ts = 1 << mb;\n // remaining sum\n var rem = ts - wes;\n // must be power of 2\n if (rem & (rem - 1))\n err(0);\n hw[wc++] = msb(rem) + 1;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n ++rc[hw[i] = wt && (mb + 1 - wt)];\n }\n // huf buf\n var hbuf = new u8(ts << 1);\n // symbols num bits\n var syms = hbuf.subarray(0, ts), nb = hbuf.subarray(ts);\n ri[mb] = 0;\n for (i = mb; i > 0; --i) {\n var pv = ri[i];\n fill(nb, i, pv, ri[i - 1] = pv + rc[i] * (1 << (mb - i)));\n }\n if (ri[0] != ts)\n err(0);\n for (i = 0; i < wc; ++i) {\n var bits = hw[i];\n if (bits) {\n var code = ri[bits];\n fill(syms, i, code, ri[bits] = code + (1 << (mb - bits)));\n }\n }\n return [bt, {\n n: nb,\n b: mb,\n s: syms\n }];\n};\n// Tables generated using this:\n// https://gist.github.com/101arrowz/a979452d4355992cbf8f257cbffc9edd\n// default literal length table\nvar dllt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 81, 16, 99, 140, 49, 198, 24, 99, 12, 33, 196, 24, 99, 102, 102, 134, 70, 146, 4\n]), 0, 6)[1];\n// default match length table\nvar dmlt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 33, 20, 196, 24, 99, 140, 33, 132, 16, 66, 8, 33, 132, 16, 66, 8, 33, 68, 68, 68, 68, 68, 68, 68, 68, 36, 9\n]), 0, 6)[1];\n// default offset code table\nvar doct = /*#__PURE__ */ rfse(/*#__PURE__*/ new u8([\n 32, 132, 16, 66, 102, 70, 68, 68, 68, 68, 36, 73, 2\n]), 0, 5)[1];\n// bits to baseline\nvar b2bl = function (b, s) {\n var len = b.length, bl = new i32(len);\n for (var i = 0; i < len; ++i) {\n bl[i] = s;\n s += 1 << b[i];\n }\n return bl;\n};\n// literal length bits\nvar llb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 16843009, 50528770, 134678020, 202050057, 269422093\n])).buffer, 0, 36);\n// literal length baseline\nvar llbl = /*#__PURE__ */ b2bl(llb, 0);\n// match length bits\nvar mlb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 0, 0, 0, 0, 16843009, 50528770, 117769220, 185207048, 252579084, 16\n])).buffer, 0, 53);\n// match length baseline\nvar mlbl = /*#__PURE__ */ b2bl(mlb, 3);\n// decode huffman stream\nvar dhu = function (dat, out, hu) {\n var len = dat.length, ss = out.length, lb = dat[len - 1], msk = (1 << hu.b) - 1, eb = -hu.b;\n if (!lb)\n err(0);\n var st = 0, btr = hu.b, pos = (len << 3) - 8 + msb(lb) - btr, i = -1;\n for (; pos > eb && i < ss;) {\n var cbt = pos >> 3;\n var val = (dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (pos & 7);\n st = ((st << btr) | val) & msk;\n out[++i] = hu.s[st];\n pos -= (btr = hu.n[st]);\n }\n if (pos != eb || i + 1 != ss)\n err(0);\n};\n// decode huffman stream 4x\n// TODO: use workers to parallelize\nvar dhu4 = function (dat, out, hu) {\n var bt = 6;\n var ss = out.length, sz1 = (ss + 3) >> 2, sz2 = sz1 << 1, sz3 = sz1 + sz2;\n dhu(dat.subarray(bt, bt += dat[0] | (dat[1] << 8)), out.subarray(0, sz1), hu);\n dhu(dat.subarray(bt, bt += dat[2] | (dat[3] << 8)), out.subarray(sz1, sz2), hu);\n dhu(dat.subarray(bt, bt += dat[4] | (dat[5] << 8)), out.subarray(sz2, sz3), hu);\n dhu(dat.subarray(bt), out.subarray(sz3), hu);\n};\n// read Zstandard block\nvar rzb = function (dat, st, out) {\n var _a;\n var bt = st.b;\n // byte 0 block type\n var b0 = dat[bt], btype = (b0 >> 1) & 3;\n st.l = b0 & 1;\n var sz = (b0 >> 3) | (dat[bt + 1] << 5) | (dat[bt + 2] << 13);\n // end byte for block\n var ebt = (bt += 3) + sz;\n if (btype == 1) {\n if (bt >= dat.length)\n return;\n st.b = bt + 1;\n if (out) {\n fill(out, dat[bt], st.y, st.y += sz);\n return out;\n }\n return fill(new u8(sz), dat[bt]);\n }\n if (ebt > dat.length)\n return;\n if (btype == 0) {\n st.b = ebt;\n if (out) {\n out.set(dat.subarray(bt, ebt), st.y);\n st.y += sz;\n return out;\n }\n return slc(dat, bt, ebt);\n }\n if (btype == 2) {\n // byte 3 lit btype size format\n var b3 = dat[bt], lbt = b3 & 3, sf = (b3 >> 2) & 3;\n // lit src size lit cmp sz 4 streams\n var lss = b3 >> 4, lcs = 0, s4 = 0;\n if (lbt < 2) {\n if (sf & 1)\n lss |= (dat[++bt] << 4) | ((sf & 2) && (dat[++bt] << 12));\n else\n lss = b3 >> 3;\n }\n else {\n s4 = sf;\n if (sf < 2)\n lss |= ((dat[++bt] & 63) << 4), lcs = (dat[bt] >> 6) | (dat[++bt] << 2);\n else if (sf == 2)\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 3) << 12), lcs = (dat[bt] >> 2) | (dat[++bt] << 6);\n else\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 63) << 12), lcs = (dat[bt] >> 6) | (dat[++bt] << 2) | (dat[++bt] << 10);\n }\n ++bt;\n // add literals to end - can never overlap with backreferences because unused literals always appended\n var buf = out ? out.subarray(st.y, st.y + st.m) : new u8(st.m);\n // starting point for literals\n var spl = buf.length - lss;\n if (lbt == 0)\n buf.set(dat.subarray(bt, bt += lss), spl);\n else if (lbt == 1)\n fill(buf, dat[bt++], spl);\n else {\n // huffman table\n var hu = st.h;\n if (lbt == 2) {\n var hud = rhu(dat, bt);\n // subtract description length\n lcs += bt - (bt = hud[0]);\n st.h = hu = hud[1];\n }\n else if (!hu)\n err(0);\n (s4 ? dhu4 : dhu)(dat.subarray(bt, bt += lcs), buf.subarray(spl), hu);\n }\n // num sequences\n var ns = dat[bt++];\n if (ns) {\n if (ns == 255)\n ns = (dat[bt++] | (dat[bt++] << 8)) + 0x7F00;\n else if (ns > 127)\n ns = ((ns - 128) << 8) | dat[bt++];\n // symbol compression modes\n var scm = dat[bt++];\n if (scm & 3)\n err(0);\n var dts = [dmlt, doct, dllt];\n for (var i = 2; i > -1; --i) {\n var md = (scm >> ((i << 1) + 2)) & 3;\n if (md == 1) {\n // rle buf\n var rbuf = new u8([0, 0, dat[bt++]]);\n dts[i] = {\n s: rbuf.subarray(2, 3),\n n: rbuf.subarray(0, 1),\n t: new u16(rbuf.buffer, 0, 1),\n b: 0\n };\n }\n else if (md == 2) {\n // accuracy log 8 for offsets, 9 for others\n _a = rfse(dat, bt, 9 - (i & 1)), bt = _a[0], dts[i] = _a[1];\n }\n else if (md == 3) {\n if (!st.t)\n err(0);\n dts[i] = st.t[i];\n }\n }\n var _b = st.t = dts, mlt = _b[0], oct = _b[1], llt = _b[2];\n var lb = dat[ebt - 1];\n if (!lb)\n err(0);\n var spos = (ebt << 3) - 8 + msb(lb) - llt.b, cbt = spos >> 3, oubt = 0;\n var lst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << llt.b) - 1);\n cbt = (spos -= oct.b) >> 3;\n var ost = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << oct.b) - 1);\n cbt = (spos -= mlt.b) >> 3;\n var mst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mlt.b) - 1);\n for (++ns; --ns;) {\n var llc = llt.s[lst];\n var lbtr = llt.n[lst];\n var mlc = mlt.s[mst];\n var mbtr = mlt.n[mst];\n var ofc = oct.s[ost];\n var obtr = oct.n[ost];\n cbt = (spos -= ofc) >> 3;\n var ofp = 1 << ofc;\n var off = ofp + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16) | (dat[cbt + 3] << 24)) >>> (spos & 7)) & (ofp - 1));\n cbt = (spos -= mlb[mlc]) >> 3;\n var ml = mlbl[mlc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << mlb[mlc]) - 1));\n cbt = (spos -= llb[llc]) >> 3;\n var ll = llbl[llc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << llb[llc]) - 1));\n cbt = (spos -= lbtr) >> 3;\n lst = llt.t[lst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << lbtr) - 1));\n cbt = (spos -= mbtr) >> 3;\n mst = mlt.t[mst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mbtr) - 1));\n cbt = (spos -= obtr) >> 3;\n ost = oct.t[ost] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << obtr) - 1));\n if (off > 3) {\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off -= 3;\n }\n else {\n var idx = off - (ll != 0);\n if (idx) {\n off = idx == 3 ? st.o[0] - 1 : st.o[idx];\n if (idx > 1)\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off;\n }\n else\n off = st.o[0];\n }\n for (var i = 0; i < ll; ++i) {\n buf[oubt + i] = buf[spl + i];\n }\n oubt += ll, spl += ll;\n var stin = oubt - off;\n if (stin < 0) {\n var len = -stin;\n var bs = st.e + stin;\n if (len > ml)\n len = ml;\n for (var i = 0; i < len; ++i) {\n buf[oubt + i] = st.w[bs + i];\n }\n oubt += len, ml -= len, stin = 0;\n }\n for (var i = 0; i < ml; ++i) {\n buf[oubt + i] = buf[stin + i];\n }\n oubt += ml;\n }\n if (oubt != spl) {\n while (spl < buf.length) {\n buf[oubt++] = buf[spl++];\n }\n }\n else\n oubt = buf.length;\n if (out)\n st.y += oubt;\n else\n buf = slc(buf, 0, oubt);\n }\n else if (out) {\n st.y += lss;\n if (spl) {\n for (var i = 0; i < lss; ++i) {\n buf[i] = buf[spl + i];\n }\n }\n }\n else if (spl)\n buf = slc(buf, spl);\n st.b = ebt;\n return buf;\n }\n err(2);\n};\n// concat\nvar cct = function (bufs, ol) {\n if (bufs.length == 1)\n return bufs[0];\n var buf = new u8(ol);\n for (var i = 0, b = 0; i < bufs.length; ++i) {\n var chk = bufs[i];\n buf.set(chk, b);\n b += chk.length;\n }\n return buf;\n};\n/**\n * Decompresses Zstandard data\n * @param dat The input data\n * @param buf The output buffer. If unspecified, the function will allocate\n * exactly enough memory to fit the decompressed data. If your\n * data has multiple frames and you know the output size, specifying\n * it will yield better performance.\n * @returns The decompressed data\n */\nexport function decompress(dat, buf) {\n var bufs = [], nb = +!buf;\n var bt = 0, ol = 0;\n for (; dat.length;) {\n var st = rzfh(dat, nb || buf);\n if (typeof st == 'object') {\n if (nb) {\n buf = null;\n if (st.w.length == st.u) {\n bufs.push(buf = st.w);\n ol += st.u;\n }\n }\n else {\n bufs.push(buf);\n st.e = 0;\n }\n for (; !st.l;) {\n var blk = rzb(dat, st, buf);\n if (!blk)\n err(5);\n if (buf)\n st.e = st.y;\n else {\n bufs.push(blk);\n ol += blk.length;\n cpw(st.w, 0, blk.length);\n st.w.set(blk, st.w.length - blk.length);\n }\n }\n bt = st.b + (st.c * 4);\n }\n else\n bt = st;\n dat = dat.subarray(bt);\n }\n return cct(bufs, ol);\n}\n/**\n * Decompressor for Zstandard streamed data\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a Zstandard decompressor\n * @param ondata The handler for stream data\n */\n function Decompress(ondata) {\n this.ondata = ondata;\n this.c = [];\n this.l = 0;\n this.z = 0;\n }\n /**\n * Pushes data to be decompressed\n * @param chunk The chunk of data to push\n * @param final Whether or not this is the last chunk in the stream\n */\n Decompress.prototype.push = function (chunk, final) {\n if (typeof this.s == 'number') {\n var sub = Math.min(chunk.length, this.s);\n chunk = chunk.subarray(sub);\n this.s -= sub;\n }\n var sl = chunk.length;\n var ncs = sl + this.l;\n if (!this.s) {\n if (final) {\n if (!ncs) {\n this.ondata(new u8(0), true);\n return;\n }\n // min for frame + one block\n if (ncs < 5)\n err(5);\n }\n else if (ncs < 18) {\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (typeof (this.s = rzfh(chunk)) == 'number')\n return this.push(chunk, final);\n }\n if (typeof this.s != 'number') {\n if (ncs < (this.z || 3)) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (!this.z && ncs < (this.z = (chunk[this.s.b] & 2) ? 4 : 3 + ((chunk[this.s.b] >> 3) | (chunk[this.s.b + 1] << 5) | (chunk[this.s.b + 2] << 13)))) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n else\n this.z = 0;\n for (;;) {\n var blk = rzb(chunk, this.s);\n if (!blk) {\n if (final)\n err(5);\n var adc = chunk.subarray(this.s.b);\n this.s.b = 0;\n this.c.push(adc), this.l += adc.length;\n return;\n }\n else {\n this.ondata(blk, false);\n cpw(this.s.w, 0, blk.length);\n this.s.w.set(blk, this.s.w.length - blk.length);\n }\n if (this.s.l) {\n var rest = chunk.subarray(this.s.b);\n this.s = this.s.c * 4;\n this.push(rest, final);\n return;\n }\n }\n }\n else if (final)\n err(5);\n };\n return Decompress;\n}());\nexport { Decompress };\n",
|
|
163
159
|
"\n/** @type {import('../src/types.d.ts').ParquetType[]} */\nexport const ParquetTypes = [\n 'BOOLEAN',\n 'INT32',\n 'INT64',\n 'INT96', // deprecated\n 'FLOAT',\n 'DOUBLE',\n 'BYTE_ARRAY',\n 'FIXED_LEN_BYTE_ARRAY',\n]\n\n/** @type {import('../src/types.d.ts').Encoding[]} */\nexport const Encodings = [\n 'PLAIN',\n 'GROUP_VAR_INT', // deprecated\n 'PLAIN_DICTIONARY',\n 'RLE',\n 'BIT_PACKED', // deprecated\n 'DELTA_BINARY_PACKED',\n 'DELTA_LENGTH_BYTE_ARRAY',\n 'DELTA_BYTE_ARRAY',\n 'RLE_DICTIONARY',\n 'BYTE_STREAM_SPLIT',\n]\n\n/** @type {import('../src/types.d.ts').FieldRepetitionType[]} */\nexport const FieldRepetitionTypes = [\n 'REQUIRED',\n 'OPTIONAL',\n 'REPEATED',\n]\n\n/** @type {import('../src/types.d.ts').ConvertedType[]} */\nexport const ConvertedTypes = [\n 'UTF8',\n 'MAP',\n 'MAP_KEY_VALUE',\n 'LIST',\n 'ENUM',\n 'DECIMAL',\n 'DATE',\n 'TIME_MILLIS',\n 'TIME_MICROS',\n 'TIMESTAMP_MILLIS',\n 'TIMESTAMP_MICROS',\n 'UINT_8',\n 'UINT_16',\n 'UINT_32',\n 'UINT_64',\n 'INT_8',\n 'INT_16',\n 'INT_32',\n 'INT_64',\n 'JSON',\n 'BSON',\n 'INTERVAL',\n]\n\n/** @type {import('../src/types.d.ts').CompressionCodec[]} */\nexport const CompressionCodecs = [\n 'UNCOMPRESSED',\n 'SNAPPY',\n 'GZIP',\n 'LZO',\n 'BROTLI',\n 'LZ4',\n 'ZSTD',\n 'LZ4_RAW',\n]\n\n/** @type {import('../src/types.d.ts').PageType[]} */\nexport const PageTypes = [\n 'DATA_PAGE',\n 'INDEX_PAGE',\n 'DICTIONARY_PAGE',\n 'DATA_PAGE_V2',\n]\n\n/** @type {import('../src/types.d.ts').BoundaryOrder[]} */\nexport const BoundaryOrders = [\n 'UNORDERED',\n 'ASCENDING',\n 'DESCENDING',\n]\n\n/** @type {import('../src/types.d.ts').EdgeInterpolationAlgorithm[]} */\nexport const EdgeInterpolationAlgorithms = [\n 'SPHERICAL',\n 'VINCENTY',\n 'THOMAS',\n 'ANDOYER',\n 'KARNEY',\n]\n",
|
|
164
160
|
"/**\n * WKB (Well-Known Binary) decoder for geometry objects.\n *\n * @param {DataReader} reader\n * @returns {Geometry} geometry object\n */\nexport function wkbToGeojson(reader) {\n const flags = getFlags(reader)\n\n if (flags.type === 1) { // Point\n return { type: 'Point', coordinates: readPosition(reader, flags) }\n } else if (flags.type === 2) { // LineString\n return { type: 'LineString', coordinates: readLine(reader, flags) }\n } else if (flags.type === 3) { // Polygon\n return { type: 'Polygon', coordinates: readPolygon(reader, flags) }\n } else if (flags.type === 4) { // MultiPoint\n const points = []\n for (let i = 0; i < flags.count; i++) {\n points.push(readPosition(reader, getFlags(reader)))\n }\n return { type: 'MultiPoint', coordinates: points }\n } else if (flags.type === 5) { // MultiLineString\n const lines = []\n for (let i = 0; i < flags.count; i++) {\n lines.push(readLine(reader, getFlags(reader)))\n }\n return { type: 'MultiLineString', coordinates: lines }\n } else if (flags.type === 6) { // MultiPolygon\n const polygons = []\n for (let i = 0; i < flags.count; i++) {\n polygons.push(readPolygon(reader, getFlags(reader)))\n }\n return { type: 'MultiPolygon', coordinates: polygons }\n } else if (flags.type === 7) { // GeometryCollection\n const geometries = []\n for (let i = 0; i < flags.count; i++) {\n geometries.push(wkbToGeojson(reader))\n }\n return { type: 'GeometryCollection', geometries }\n } else {\n throw new Error(`Unsupported geometry type: ${flags.type}`)\n }\n}\n\n/**\n * Extract ISO WKB flags and base geometry type.\n *\n * @param {DataReader} reader\n * @returns {WkbFlags}\n */\nfunction getFlags(reader) {\n const { view } = reader\n const littleEndian = view.getUint8(reader.offset++) === 1\n const rawType = view.getUint32(reader.offset, littleEndian)\n reader.offset += 4\n\n const type = rawType % 1000\n const flags = Math.floor(rawType / 1000)\n\n let count = 0\n if (type > 1 && type <= 7) {\n count = view.getUint32(reader.offset, littleEndian)\n reader.offset += 4\n }\n\n // XY, XYZ, XYM, XYZM\n let dim = 2\n if (flags) dim++\n if (flags === 3) dim++\n\n return { littleEndian, type, dim, count }\n}\n\n/**\n * @param {DataReader} reader\n * @param {WkbFlags} flags\n * @returns {number[]}\n */\nfunction readPosition(reader, flags) {\n const points = []\n for (let i = 0; i < flags.dim; i++) {\n const coord = reader.view.getFloat64(reader.offset, flags.littleEndian)\n reader.offset += 8\n points.push(coord)\n }\n return points\n}\n\n/**\n * @param {DataReader} reader\n * @param {WkbFlags} flags\n * @returns {number[][]}\n */\nfunction readLine(reader, flags) {\n const points = []\n for (let i = 0; i < flags.count; i++) {\n points.push(readPosition(reader, flags))\n }\n return points\n}\n\n/**\n * @param {DataReader} reader\n * @param {WkbFlags} flags\n * @returns {number[][][]}\n */\nfunction readPolygon(reader, flags) {\n const { view } = reader\n const rings = []\n for (let r = 0; r < flags.count; r++) {\n const count = view.getUint32(reader.offset, flags.littleEndian)\n reader.offset += 4\n rings.push(readLine(reader, { ...flags, count }))\n }\n return rings\n}\n\n/**\n * @typedef {object} WkbFlags\n * @property {boolean} littleEndian\n * @property {number} type\n * @property {number} dim\n * @property {number} count\n */\n\n/**\n * @import {DataReader, Geometry} from '../src/types.js'\n */\n",
|
|
@@ -183,12 +179,21 @@
|
|
|
183
179
|
"/**\n * @import {ColumnDecoder, DataReader, DecodedArray, PageHeader, PageResult, RowGroupSelect, SubColumnData} from '../src/types.js'\n */\n\nimport { assembleLists } from './assemble.js'\nimport { Encodings, PageTypes } from './constants.js'\nimport { convert, convertWithDictionary } from './convert.js'\nimport { decompressPage, readDataPage, readDataPageV2 } from './datapage.js'\nimport { readPlain } from './plain.js'\nimport { isFlatColumn } from './schema.js'\nimport { deserializeTCompactProtocol } from './thrift.js'\n\n/**\n * Parse column data from a buffer.\n *\n * @param {DataReader} reader\n * @param {RowGroupSelect} rowGroupSelect row group selection\n * @param {ColumnDecoder} columnDecoder column decoder params\n * @param {(chunk: SubColumnData) => void} [onPage] callback for each page\n * @returns {{ data: DecodedArray[], skipped: number }}\n */\nexport function readColumn(reader, { groupStart, selectStart, selectEnd }, columnDecoder, onPage) {\n const { pathInSchema, schemaPath } = columnDecoder\n const isFlat = isFlatColumn(schemaPath)\n /** @type {DecodedArray[]} */\n const chunks = []\n /** @type {DecodedArray | undefined} */\n let dictionary = undefined\n /** @type {DecodedArray | undefined} */\n let lastChunk = undefined\n let rowCount = 0\n let skipped = 0\n\n const emitLastChunk = onPage && (() => {\n lastChunk && onPage({\n pathInSchema,\n columnData: lastChunk,\n rowStart: groupStart + rowCount - lastChunk.length,\n rowEnd: groupStart + rowCount,\n })\n })\n\n while (isFlat ? rowCount < selectEnd : reader.offset < reader.view.byteLength - 1) {\n if (reader.offset >= reader.view.byteLength - 1) break // end of reader\n\n // read page header\n const header = parquetHeader(reader)\n if (header.type === 'DICTIONARY_PAGE') {\n const { data } = readPage(reader, header, columnDecoder, dictionary, undefined, 0)\n if (data) dictionary = convert(data, columnDecoder)\n } else {\n const lastChunkLength = lastChunk?.length || 0\n const result = readPage(reader, header, columnDecoder, dictionary, lastChunk, selectStart - rowCount)\n if (result.skipped) {\n // skipped page - just advance row count, don't add to chunks\n if (!chunks.length) {\n skipped += result.skipped\n }\n rowCount += result.skipped\n } else if (result.data && lastChunk === result.data) {\n // continued from previous page\n rowCount += result.data.length - lastChunkLength\n } else if (result.data && result.data.length) {\n emitLastChunk?.()\n chunks.push(result.data)\n rowCount += result.data.length\n lastChunk = result.data\n }\n }\n }\n emitLastChunk?.()\n\n return { data: chunks, skipped }\n}\n\n/**\n * Read a page (data or dictionary) from a buffer.\n *\n * @param {DataReader} reader\n * @param {PageHeader} header\n * @param {ColumnDecoder} columnDecoder\n * @param {DecodedArray | undefined} dictionary\n * @param {DecodedArray | undefined} previousChunk\n * @param {number} pageStart skip this many rows in the page\n * @returns {PageResult}\n */\nexport function readPage(reader, header, columnDecoder, dictionary, previousChunk, pageStart) {\n const { type, element, schemaPath, codec, compressors } = columnDecoder\n // read compressed_page_size bytes\n const compressedBytes = new Uint8Array(\n reader.view.buffer, reader.view.byteOffset + reader.offset, header.compressed_page_size\n )\n reader.offset += header.compressed_page_size\n\n // parse page data by type\n if (header.type === 'DATA_PAGE') {\n const daph = header.data_page_header\n if (!daph) throw new Error('parquet data page header is undefined')\n\n // skip unnecessary non-nested pages\n if (pageStart > daph.num_values && isFlatColumn(schemaPath)) {\n return { skipped: daph.num_values }\n }\n\n const page = decompressPage(compressedBytes, Number(header.uncompressed_page_size), codec, compressors)\n const { definitionLevels, repetitionLevels, dataPage } = readDataPage(page, daph, columnDecoder)\n // assert(!daph.statistics?.null_count || daph.statistics.null_count === BigInt(daph.num_values - dataPage.length))\n\n // convert types, dereference dictionary, and assemble lists\n const values = convertWithDictionary(dataPage, dictionary, daph.encoding, columnDecoder)\n const output = Array.isArray(previousChunk) ? previousChunk : []\n const assembled = assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath)\n return { skipped: 0, data: assembled }\n } else if (header.type === 'DATA_PAGE_V2') {\n const daph2 = header.data_page_header_v2\n if (!daph2) throw new Error('parquet data page header v2 is undefined')\n\n // skip unnecessary pages\n if (pageStart > daph2.num_rows) {\n return { skipped: daph2.num_values }\n }\n\n const { definitionLevels, repetitionLevels, dataPage } =\n readDataPageV2(compressedBytes, header, columnDecoder)\n\n // convert types, dereference dictionary, and assemble lists\n const values = convertWithDictionary(dataPage, dictionary, daph2.encoding, columnDecoder)\n const output = Array.isArray(previousChunk) ? previousChunk : []\n const assembled = assembleLists(output, definitionLevels, repetitionLevels, values, schemaPath)\n return { skipped: 0, data: assembled }\n } else if (header.type === 'DICTIONARY_PAGE') {\n const diph = header.dictionary_page_header\n if (!diph) throw new Error('parquet dictionary page header is undefined')\n\n const page = decompressPage(\n compressedBytes, Number(header.uncompressed_page_size), codec, compressors\n )\n\n const reader = { view: new DataView(page.buffer, page.byteOffset, page.byteLength), offset: 0 }\n const dictArray = readPlain(reader, type, diph.num_values, element.type_length)\n return { skipped: 0, data: dictArray }\n } else {\n throw new Error(`parquet unsupported page type: ${header.type}`)\n }\n}\n\n/**\n * Read parquet header from a buffer.\n *\n * @param {DataReader} reader\n * @returns {PageHeader}\n */\nfunction parquetHeader(reader) {\n const header = deserializeTCompactProtocol(reader)\n\n // Parse parquet header from thrift data\n const type = PageTypes[header.field_1]\n const uncompressed_page_size = header.field_2\n const compressed_page_size = header.field_3\n const crc = header.field_4\n const data_page_header = header.field_5 && {\n num_values: header.field_5.field_1,\n encoding: Encodings[header.field_5.field_2],\n definition_level_encoding: Encodings[header.field_5.field_3],\n repetition_level_encoding: Encodings[header.field_5.field_4],\n statistics: header.field_5.field_5 && {\n max: header.field_5.field_5.field_1,\n min: header.field_5.field_5.field_2,\n null_count: header.field_5.field_5.field_3,\n distinct_count: header.field_5.field_5.field_4,\n max_value: header.field_5.field_5.field_5,\n min_value: header.field_5.field_5.field_6,\n },\n }\n const index_page_header = header.field_6\n const dictionary_page_header = header.field_7 && {\n num_values: header.field_7.field_1,\n encoding: Encodings[header.field_7.field_2],\n is_sorted: header.field_7.field_3,\n }\n const data_page_header_v2 = header.field_8 && {\n num_values: header.field_8.field_1,\n num_nulls: header.field_8.field_2,\n num_rows: header.field_8.field_3,\n encoding: Encodings[header.field_8.field_4],\n definition_levels_byte_length: header.field_8.field_5,\n repetition_levels_byte_length: header.field_8.field_6,\n is_compressed: header.field_8.field_7 === undefined ? true : header.field_8.field_7, // default true\n statistics: header.field_8.field_8,\n }\n\n return {\n type,\n uncompressed_page_size,\n compressed_page_size,\n crc,\n data_page_header,\n index_page_header,\n dictionary_page_header,\n data_page_header_v2,\n }\n}\n",
|
|
184
180
|
"/**\n * @import {AsyncColumn, AsyncRowGroup, ChunkPlan, ColumnDecoder, DecodedArray, GroupPlan, PageLocation, ParquetParsers, ParquetReadOptions, QueryPlan, SchemaTree} from '../src/types.js'\n */\n\nimport { assembleNested } from './assemble.js'\nimport { readColumn } from './column.js'\nimport { DEFAULT_PARSERS } from './convert.js'\nimport { readOffsetIndex } from './indexes.js'\nimport { getSchemaPath } from './schema.js'\nimport { flatten } from './utils.js'\n\n/**\n * Read a row group from a file-like object.\n *\n * @param {ParquetReadOptions} options\n * @param {QueryPlan} plan\n * @param {GroupPlan} groupPlan\n * @returns {AsyncRowGroup} resolves to column data\n */\nexport function readRowGroup(options, { metadata }, groupPlan) {\n /** @type {AsyncColumn[]} */\n const asyncColumns = []\n\n // read column data\n for (const chunk of groupPlan.chunks) {\n const { path_in_schema: pathInSchema } = chunk.columnMetadata\n const schemaPath = getSchemaPath(metadata.schema, pathInSchema)\n const columnDecoder = {\n pathInSchema,\n element: schemaPath[schemaPath.length - 1].element,\n schemaPath,\n parsers: { ...DEFAULT_PARSERS, ...options.parsers },\n ...options,\n ...chunk.columnMetadata,\n }\n const { startByte, endByte } = chunk.range\n\n if ('pageLocations' in chunk) {\n // page locations already parsed from the offset index\n asyncColumns.push({\n pathInSchema,\n data: readSelectedPages(options, groupPlan, chunk, chunk.pageLocations, columnDecoder),\n })\n } else if ('offsetIndex' in chunk) {\n asyncColumns.push({\n pathInSchema,\n // fetch offset index\n data: Promise.resolve(options.file.slice(chunk.offsetIndex.startByte, chunk.offsetIndex.endByte))\n .then(arrayBuffer => {\n const pages = readOffsetIndex({ view: new DataView(arrayBuffer), offset: 0 }).page_locations\n return readSelectedPages(options, groupPlan, chunk, pages, columnDecoder)\n }),\n })\n } else {\n // full column chunk\n asyncColumns.push({\n pathInSchema,\n data: Promise.resolve(options.file.slice(startByte, endByte))\n .then(buffer => {\n const reader = { view: new DataView(buffer), offset: 0 }\n return readColumn(reader, groupPlan, columnDecoder, options.onPage)\n }),\n })\n }\n }\n\n return {\n groupStart: groupPlan.groupStart,\n groupRows: groupPlan.groupRows,\n selectStart: groupPlan.selectStart,\n selectEnd: groupPlan.selectEnd,\n asyncColumns,\n }\n}\n\n/**\n * Read only the pages of a column chunk that overlap the group plan's select\n * range [selectStart, selectEnd), using page locations from the offset index.\n *\n * @param {ParquetReadOptions} options\n * @param {GroupPlan} groupPlan\n * @param {ChunkPlan} chunk\n * @param {PageLocation[]} pages\n * @param {ColumnDecoder} columnDecoder\n * @returns {Promise<{data: DecodedArray[], skipped: number}>}\n */\nasync function readSelectedPages(options, groupPlan, chunk, pages, columnDecoder) {\n const { data_page_offset, dictionary_page_offset } = chunk.columnMetadata\n const { selectStart, selectEnd } = groupPlan\n let { startByte, endByte } = chunk.range\n let skipped = -1\n // include dictionary if present, handle polars missing dictionary_page_offset\n const hasDict = dictionary_page_offset || data_page_offset < pages[0].offset\n for (let i = 0; i < pages.length; i++) {\n const page = pages[i]\n const pageStart = Number(page.first_row_index)\n const pageEnd = i + 1 < pages.length\n ? Number(pages[i + 1].first_row_index)\n : groupPlan.groupRows // last page extends to end of row group\n // check if page overlaps with [selectStart, selectEnd)\n if (skipped < 0 && pageEnd > selectStart) {\n startByte = Number(page.offset)\n skipped = pageStart\n }\n if (pageStart < selectEnd) {\n endByte = Number(page.offset) + page.compressed_page_size\n }\n }\n if (skipped < 0) skipped = 0\n /** @type {DataView} */\n let view\n if (hasDict && skipped) {\n // fetch the dictionary page separately from the selected data pages so\n // the skipped leading pages are not transferred\n const dictLength = Number(pages[0].offset) - chunk.range.startByte\n const [dictBuffer, dataBuffer] = await Promise.all([\n options.file.slice(chunk.range.startByte, Number(pages[0].offset)),\n options.file.slice(startByte, endByte),\n ])\n // clamp in case the AsyncBuffer returned more bytes than requested\n const combined = new Uint8Array(dictLength + dataBuffer.byteLength)\n combined.set(new Uint8Array(dictBuffer, 0, dictLength))\n combined.set(new Uint8Array(dataBuffer), dictLength)\n view = new DataView(combined.buffer)\n } else if (hasDict) {\n // dictionary page is contiguous with the first selected page\n view = new DataView(await options.file.slice(chunk.range.startByte, endByte))\n } else {\n view = new DataView(await options.file.slice(startByte, endByte))\n }\n const reader = { view, offset: 0 }\n // adjust row selection for skipped pages\n const adjustedGroupPlan = skipped ? {\n ...groupPlan,\n groupStart: groupPlan.groupStart + skipped,\n selectStart: groupPlan.selectStart - skipped,\n selectEnd: groupPlan.selectEnd - skipped,\n } : groupPlan\n const { data, skipped: columnSkipped } = readColumn(reader, adjustedGroupPlan, columnDecoder, options.onPage)\n return {\n data,\n skipped: skipped + columnSkipped,\n }\n}\n\n/**\n * @overload\n * @param {AsyncRowGroup} asyncGroup\n * @param {number} selectStart\n * @param {number} selectEnd\n * @param {string[] | undefined} columns\n * @param {'object'} rowFormat\n * @returns {Promise<Record<string, any>[]>} resolves to row data\n */\n/**\n * @overload\n * @param {AsyncRowGroup} asyncGroup\n * @param {number} selectStart\n * @param {number} selectEnd\n * @param {string[] | undefined} columns\n * @param {'array'} [rowFormat]\n * @returns {Promise<any[][]>} resolves to row data\n */\n/**\n * @param {AsyncRowGroup} asyncGroup\n * @param {number} selectStart\n * @param {number} selectEnd\n * @param {string[] | undefined} columns\n * @param {'object' | 'array'} [rowFormat]\n * @returns {Promise<Record<string, any>[] | any[][]>} resolves to row data\n */\nexport async function asyncGroupToRows({ asyncColumns }, selectStart, selectEnd, columns, rowFormat) {\n // TODO: do it without flatten\n const asyncPages = await Promise.all(asyncColumns.map(column =>\n column.data.then(({ skipped, data }) => ({ skipped, data: flatten(data) }))\n ))\n\n // transpose columns into rows\n const selectCount = selectEnd - selectStart\n if (rowFormat === 'object') {\n /** @type {Record<string, any>[]} */\n const groupData = Array(selectCount)\n for (let selectRow = 0; selectRow < selectCount; selectRow++) {\n // return each row as an object\n /** @type {Record<string, any>} */\n const rowData = {}\n for (let i = 0; i < asyncColumns.length; i++) {\n const { data, skipped } = asyncPages[i]\n rowData[asyncColumns[i].pathInSchema[0]] = data[selectStart + selectRow - skipped]\n }\n groupData[selectRow] = rowData\n }\n return groupData\n }\n\n // careful mapping of column order for rowFormat: array\n const includedColumnNames = asyncColumns\n .map(child => child.pathInSchema[0])\n .filter(name => !columns || columns.includes(name))\n const columnOrder = columns ?? includedColumnNames\n const columnIndexes = columnOrder.map(name => asyncColumns.findIndex(column => column.pathInSchema[0] === name))\n\n /** @type {any[][]} */\n const groupData = Array(selectCount)\n for (let selectRow = 0; selectRow < selectCount; selectRow++) {\n // return each row as an array\n const rowData = Array(asyncColumns.length)\n for (let i = 0; i < columnOrder.length; i++) {\n const colIdx = columnIndexes[i]\n if (colIdx < 0) throw new Error(`parquet column not found: ${columnOrder[i]}`)\n const { data, skipped } = asyncPages[colIdx]\n rowData[i] = data[selectStart + selectRow - skipped]\n }\n groupData[selectRow] = rowData\n }\n return groupData\n}\n\n/**\n * Assemble physical columns into top-level columns asynchronously.\n *\n * @param {AsyncRowGroup} asyncRowGroup\n * @param {SchemaTree} schemaTree\n * @param {ParquetParsers} [parsers]\n * @returns {AsyncRowGroup}\n */\nexport function assembleAsync(asyncRowGroup, schemaTree, parsers) {\n const { asyncColumns } = asyncRowGroup\n parsers = { ...DEFAULT_PARSERS, ...parsers }\n /** @type {AsyncColumn[]} */\n const assembled = []\n for (const child of schemaTree.children) {\n if (child.children.length) {\n const childColumns = asyncColumns.filter(column => column.pathInSchema[0] === child.element.name)\n if (!childColumns.length) continue\n\n assembled.push({\n pathInSchema: child.path,\n data: (async () => {\n // collect subcolumn data — Promise.all observes every rejection so\n // a sibling failure cannot leak as an unhandledRejection\n const resolved = await Promise.all(childColumns.map(c => c.data))\n /** @type {Map<string, DecodedArray>} */\n const subcolumnData = new Map()\n const flattened = resolved.map(({ data }) => flatten(data))\n const skipped = Math.max(...resolved.map(result => result.skipped))\n const end = Math.min(...resolved.map((result, i) => result.skipped + flattened[i].length))\n for (let i = 0; i < childColumns.length; i++) {\n // Offset-index reads may start each physical child at a different\n // page boundary. Align them to their common absolute row range.\n const start = skipped - resolved[i].skipped\n const length = Math.max(0, end - skipped)\n subcolumnData.set(\n childColumns[i].pathInSchema.join('.'),\n flattened[i].slice(start, start + length)\n )\n }\n // assemble the column\n assembleNested(subcolumnData, child, parsers)\n const assembled = subcolumnData.get(child.element.name)\n if (!assembled) throw new Error('parquet column data not assembled')\n return { data: [assembled], skipped }\n })(),\n })\n } else {\n // leaf node, return the column\n const asyncColumn = asyncColumns.find(column => column.pathInSchema[0] === child.element.name)\n if (asyncColumn) assembled.push(asyncColumn)\n }\n }\n return { ...asyncRowGroup, asyncColumns: assembled }\n}\n",
|
|
185
181
|
"/**\n * @import {AsyncRowGroup, BaseParquetReadOptions, DecodedArray, ParquetReadOptions, SchemaElement} from '../src/types.js'\n */\n\nimport { columnsNeededForFilter, matchFilter } from './filter.js'\nimport { parquetMetadataAsync, parquetSchema } from './metadata.js'\nimport { parquetPlan, prefetchAsyncBuffer, prefetchBloomFilters, prefetchPageIndexes } from './plan.js'\nimport { assembleAsync, asyncGroupToRows, readRowGroup } from './rowgroup.js'\nimport { concat } from './utils.js'\n\n/**\n * Read parquet data rows from a file-like object.\n * Reads the minimal number of row groups and columns to satisfy the request.\n *\n * Returns a void promise when complete.\n * Errors are thrown on the returned promise.\n * Data is returned in callbacks onComplete, onChunk, onPage, NOT the return promise.\n * See parquetReadObjects for a more convenient API.\n *\n * @param {ParquetReadOptions} options read options\n * @returns {Promise<void>} resolves when all requested rows and columns are parsed, all errors are thrown here\n */\nexport async function parquetRead(options) {\n // load metadata if not provided\n options.metadata ??= await parquetMetadataAsync(options.file, options)\n\n const { rowStart = 0, rowEnd, columns, onChunk, onComplete, rowFormat, filter, filterStrict = true } = options\n\n // Filter requires object format to match column names\n if (filter && rowFormat !== 'object') {\n throw new Error('parquet filter requires rowFormat: \"object\"')\n }\n\n // Include filter columns in the read plan\n const filterColumns = columnsNeededForFilter(filter)\n if (filterColumns.length) {\n const schemaColumns = parquetSchema(options.metadata).children.map(c => c.element.name)\n const missingColumns = filterColumns.filter(c => !schemaColumns.includes(c))\n if (missingColumns.length) {\n throw new Error(`parquet filter columns not found: ${missingColumns.join(', ')}`)\n }\n }\n let readColumns = columns\n let requiresProjection = false\n if (columns && filter) {\n const missingFilterColumns = filterColumns.filter(c => !columns.includes(c))\n if (missingFilterColumns.length) {\n readColumns = [...columns, ...missingFilterColumns]\n requiresProjection = true\n }\n }\n\n // read row groups with expanded columns\n let readOptions = readColumns !== columns ? { ...options, columns: readColumns } : options\n readOptions = await withBloomFilters(readOptions)\n readOptions = await withPageIndexes(readOptions)\n const asyncGroups = parquetReadAsync(readOptions)\n\n // skip assembly if no onComplete or onChunk, but wait for reading to finish\n if (!onComplete && !onChunk) {\n await awaitAllColumns(asyncGroups)\n return\n }\n\n // assemble struct columns\n const schemaTree = parquetSchema(options.metadata)\n const assembled = asyncGroups.map(arg => assembleAsync(arg, schemaTree, options.parsers))\n\n // onChunk emit all chunks (don't await). Rejection is surfaced by awaitAllColumns below.\n if (onChunk) {\n for (const asyncGroup of assembled) {\n for (const asyncColumn of asyncGroup.asyncColumns) {\n asyncColumn.data.then(({ data, skipped }) => {\n let rowStart = asyncGroup.groupStart + skipped\n for (const columnData of data) {\n onChunk({\n columnName: asyncColumn.pathInSchema[0],\n columnData,\n rowStart,\n rowEnd: rowStart + columnData.length,\n })\n rowStart += columnData.length\n }\n }, () => {})\n }\n }\n }\n\n // onComplete transpose column chunks to rows\n if (onComplete) {\n // wait for all reads to settle so a sibling rejection cannot leak\n await awaitAllColumns(assembled)\n // loosen the types to avoid duplicate code\n /** @type {any[]} */\n const rows = []\n for (const asyncGroup of assembled) {\n // filter to rows in range (the plan may have narrowed the selection to\n // a sub-range of the group via page index pushdown)\n const selectStart = asyncGroup.selectStart ?? Math.max(rowStart - asyncGroup.groupStart, 0)\n const selectEnd = asyncGroup.selectEnd ?? Math.min((rowEnd ?? Infinity) - asyncGroup.groupStart, asyncGroup.groupRows)\n // transpose column chunks to rows in output\n const groupData = rowFormat === 'object' ?\n await asyncGroupToRows(asyncGroup, selectStart, selectEnd, readColumns, 'object') :\n await asyncGroupToRows(asyncGroup, selectStart, selectEnd, columns, 'array')\n\n // Apply filter and projection\n if (filter) {\n // eslint-disable-next-line no-extra-parens\n for (const row of /** @type {Record<string, any>[]} */ (groupData)) {\n if (matchFilter(row, filter, filterStrict)) {\n if (requiresProjection && columns) {\n for (const col of filterColumns) {\n if (!columns.includes(col)) delete row[col]\n }\n }\n rows.push(row)\n }\n }\n } else {\n concat(rows, groupData)\n }\n }\n onComplete(rows)\n } else {\n // wait for all async groups to finish (complete takes care of this)\n await awaitAllColumns(assembled)\n }\n}\n\n/**\n * Await every column promise across the given row groups via Promise.allSettled\n * so no rejection escapes as an unhandledRejection. Throws the first rejection.\n *\n * @param {AsyncRowGroup[]} asyncGroups\n * @returns {Promise<void>}\n */\nasync function awaitAllColumns(asyncGroups) {\n const all = asyncGroups.flatMap(g => g.asyncColumns.map(c => c.data))\n const results = await Promise.allSettled(all)\n const failed = results.find(r => r.status === 'rejected')\n if (failed) throw failed.reason\n}\n\n/**\n * @param {ParquetReadOptions} options read options\n * @returns {AsyncRowGroup[]}\n */\nexport function parquetReadAsync(options) {\n if (!options.metadata) throw new Error('parquet requires metadata')\n // TODO: validate options (start, end, columns, etc)\n\n // prefetch byte ranges\n const plan = parquetPlan(options)\n options.file = prefetchAsyncBuffer(options.file, plan)\n\n // read row groups\n return plan.groups.map(groupPlan => readRowGroup(options, plan, groupPlan))\n}\n\n/**\n * Reads a single column from a parquet file.\n *\n * @param {BaseParquetReadOptions} options\n * @returns {Promise<DecodedArray>}\n */\nexport async function parquetReadColumn(options) {\n if (options.columns?.length !== 1) {\n throw new Error('parquetReadColumn expected columns: [columnName]')\n }\n options.metadata ??= await parquetMetadataAsync(options.file, options)\n const asyncGroups = parquetReadAsync(await withBloomFilters(options))\n\n // assemble struct columns\n const schemaTree = parquetSchema(options.metadata)\n const assembled = asyncGroups.map(arg => assembleAsync(arg, schemaTree, options.parsers))\n\n // wait for all reads to settle so a sibling rejection cannot leak\n await awaitAllColumns(assembled)\n\n /** @type {DecodedArray} */\n const columnData = []\n for (const rg of assembled) {\n const { data } = await rg.asyncColumns[0].data\n for (const chunk of data) {\n concat(columnData, chunk)\n }\n }\n return columnData\n}\n\n/**\n * Conditionally fetch bloom filters and attach them (and the per-column schema\n * elements they require) to options so parquetPlan can use them for row-group\n * pruning. Returns options unchanged when there's no filter or the user has\n * disabled bloom pushdown.\n *\n * @param {BaseParquetReadOptions} options\n * @returns {Promise<BaseParquetReadOptions>}\n */\nasync function withBloomFilters(options) {\n if (!options.useBloomFilters) return options\n if (!options.filter || !options.metadata) return options\n const schemaTree = parquetSchema(options.metadata)\n /** @type {Record<string, SchemaElement>} */\n const schemaElements = {}\n for (const child of schemaTree.children) schemaElements[child.element.name] = child.element\n const bloomFiltersByGroup = await prefetchBloomFilters({\n file: options.file,\n metadata: options.metadata,\n filter: options.filter,\n filterStrict: options.filterStrict,\n })\n // eslint-disable-next-line no-extra-parens\n return /** @type {BaseParquetReadOptions} */ ({ ...options, bloomFiltersByGroup, schemaElements })\n}\n\n/**\n * Conditionally fetch page indexes (column index + offset index) for filter\n * columns and attach per-group candidate row ranges and page locations to\n * options so parquetPlan can skip pages that cannot match the filter.\n * Returns options unchanged when there's no filter or the user has not\n * enabled page index pushdown.\n *\n * @param {BaseParquetReadOptions} options\n * @returns {Promise<BaseParquetReadOptions>}\n */\nasync function withPageIndexes(options) {\n if (!options.usePageIndex) return options\n if (!options.filter || !options.metadata) return options\n const { pageRangesByGroup, pageLocationsByGroup } = await prefetchPageIndexes({\n file: options.file,\n metadata: options.metadata,\n filter: options.filter,\n filterStrict: options.filterStrict,\n rowStart: options.rowStart,\n rowEnd: options.rowEnd,\n columns: options.columns,\n // @ts-expect-error bloomFiltersByGroup/schemaElements are attached by withBloomFilters\n bloomFiltersByGroup: options.bloomFiltersByGroup,\n // @ts-expect-error bloomFiltersByGroup/schemaElements are attached by withBloomFilters\n schemaElements: options.schemaElements,\n parsers: options.parsers,\n })\n const readOptions = { ...options, pageRangesByGroup, pageLocationsByGroup }\n return readOptions\n}\n\n/**\n * This is a helper function to read parquet row data as a promise.\n * It is a wrapper around the more configurable parquetRead function.\n *\n * @param {Omit<ParquetReadOptions, 'onComplete'>} options\n * @returns {Promise<Record<string, any>[]>} resolves when all requested rows and columns are parsed\n */\nexport function parquetReadObjects(options) {\n return new Promise((onComplete, reject) => {\n parquetRead({\n ...options,\n rowFormat: 'object', // force object output\n onComplete,\n }).catch(reject)\n })\n}\n",
|
|
186
|
-
"import
|
|
182
|
+
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport type {\n\tBackfillArchiveRow,\n\tMarketDataVendorBackfillRequest,\n} from \"./contracts\";\n\nconst LOGICAL_KEYS = {\n\t\"market_data.cex_order_book_levels\": [\n\t\t\"capture_bundle_id\",\n\t\t\"exchange\",\n\t\t\"trading_pair\",\n\t\t\"raw_capture_id\",\n\t\t\"snapshot_id\",\n\t\t\"schema_version\",\n\t\t\"side\",\n\t\t\"level_index\",\n\t],\n\t\"market_data.cex_order_book_depth_summary\": [\n\t\t\"capture_bundle_id\",\n\t\t\"exchange\",\n\t\t\"trading_pair\",\n\t\t\"raw_capture_id\",\n\t\t\"snapshot_id\",\n\t\t\"schema_version\",\n\t],\n} as const;\n\nfunction logicalIdentity(row: BackfillArchiveRow): {\n\tkey: string;\n\tchecksum: string;\n} {\n\tif (\n\t\trow.table !== \"market_data.cex_order_book_levels\" &&\n\t\trow.table !== \"market_data.cex_order_book_depth_summary\"\n\t) {\n\t\tthrow new Error(\n\t\t\t\"archive evidence rows are not candidate semantic evidence\",\n\t\t);\n\t}\n\tconst keys = LOGICAL_KEYS[row.table];\n\tconst checksum = row.row.normalized_row_checksum;\n\tif (typeof checksum !== \"string\" || !/^[a-f0-9]{64}$/.test(checksum)) {\n\t\tthrow new Error(\"candidate normalized checksum is invalid\");\n\t}\n\tconst values = keys.map((key) => row.row[key]);\n\tif (\n\t\tvalues.some(\n\t\t\t(value) =>\n\t\t\t\ttypeof value !== \"string\" &&\n\t\t\t\ttypeof value !== \"number\" &&\n\t\t\t\tvalue !== null,\n\t\t)\n\t) {\n\t\tthrow new Error(\"candidate logical identity is incomplete\");\n\t}\n\treturn {\n\t\tkey: `${row.table}\\u0000${JSON.stringify(values)}`,\n\t\tchecksum,\n\t};\n}\n\nexport function semanticDigest(rows: readonly BackfillArchiveRow[]): string {\n\tconst identities = rows\n\t\t.map(logicalIdentity)\n\t\t.sort((left, right) =>\n\t\t\tleft.key === right.key\n\t\t\t\t? left.checksum.localeCompare(right.checksum)\n\t\t\t\t: left.key.localeCompare(right.key),\n\t\t);\n\treturn sha256Canonical(identities);\n}\n\nfunction exactCandidateMatch(\n\texpected: readonly BackfillArchiveRow[],\n\tactual: readonly BackfillArchiveRow[],\n): boolean {\n\tif (expected.length !== actual.length) return false;\n\tconst expectedIdentities = expected\n\t\t.map(logicalIdentity)\n\t\t.map(({ key, checksum }) => `${key}\\u0000${checksum}`)\n\t\t.sort();\n\tconst actualIdentities = actual\n\t\t.map(logicalIdentity)\n\t\t.map(({ key, checksum }) => `${key}\\u0000${checksum}`)\n\t\t.sort();\n\treturn expectedIdentities.every(\n\t\t(identity, index) => identity === actualIdentities[index],\n\t);\n}\n\nfunction requestedShapeMatches(\n\trequest: MarketDataVendorBackfillRequest,\n\trows: readonly BackfillArchiveRow[],\n): boolean {\n\treturn rows.every(\n\t\t({ row }) =>\n\t\t\trow.depth_limit === request.depth &&\n\t\t\trow.construction_mode === request.constructionMode &&\n\t\t\trow.schema_version === request.expectedProduct.canonicalSchemaVersion,\n\t);\n}\n\nfunction requiredClockCoverage(\n\trequest: MarketDataVendorBackfillRequest,\n\trows: readonly BackfillArchiveRow[],\n\tcoverageSourceTimesMs?: readonly number[],\n): boolean {\n\tconst summaryTimes = (\n\t\tcoverageSourceTimesMs ??\n\t\trows\n\t\t\t.filter(\n\t\t\t\t({ table }) => table === \"market_data.cex_order_book_depth_summary\",\n\t\t\t)\n\t\t\t.map(({ row }) => row.source_time_ms)\n\t)\n\t\t.map((value) => {\n\t\t\tif (\n\t\t\t\ttypeof value !== \"number\" &&\n\t\t\t\t(typeof value !== \"string\" || !/^\\d+$/.test(value))\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst parsed = Number(value);\n\t\t\treturn Number.isSafeInteger(parsed) && parsed >= 0 ? parsed : undefined;\n\t\t})\n\t\t.filter((value): value is number => value !== undefined)\n\t\t.sort((left, right) => left - right);\n\treturn request.requiredClockTargetsMs.every((target) => {\n\t\tlet prior: number | undefined;\n\t\tfor (const sourceTime of summaryTimes) {\n\t\t\tif (sourceTime > target) break;\n\t\t\tprior = sourceTime;\n\t\t}\n\t\treturn (\n\t\t\tprior !== undefined &&\n\t\t\ttarget - prior >= 0 &&\n\t\t\ttarget - prior <= request.maxPriorAsOfLagMs\n\t\t);\n\t});\n}\n\nexport type SemanticPromotionEvidence = {\n\trequest: MarketDataVendorBackfillRequest;\n\tnormalizedRows: readonly BackfillArchiveRow[];\n\tcandidateRows: readonly BackfillArchiveRow[];\n\tconflictCount: number;\n\tprefixDigestBefore: string;\n\tprefixDigestAfter: string;\n\tsuffixDigestBefore: string;\n\tsuffixDigestAfter: string;\n\tseamVerified: boolean;\n\texporterCompatible: boolean;\n\tcoverageSourceTimesMs?: readonly number[];\n};\n\nexport type SemanticPromotionResult = {\n\tpassed: boolean;\n\treasonCode: string;\n\tcanonicalSemanticDigest: string;\n\tprefixDigest: string;\n\tsuffixDigest: string;\n\tseamVerified: boolean;\n\tcoverageVerified: boolean;\n};\n\nexport function verifySemanticPromotion(\n\tevidence: SemanticPromotionEvidence,\n): SemanticPromotionResult {\n\tconst canonicalSemanticDigest = semanticDigest(evidence.candidateRows);\n\tconst base = {\n\t\tcanonicalSemanticDigest,\n\t\tprefixDigest: evidence.prefixDigestAfter,\n\t\tsuffixDigest: evidence.suffixDigestAfter,\n\t\tseamVerified: evidence.seamVerified,\n\t};\n\tif (!exactCandidateMatch(evidence.normalizedRows, evidence.candidateRows)) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"candidate_semantic_mismatch\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (evidence.conflictCount !== 0) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"candidate_checksum_conflict\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (\n\t\tevidence.prefixDigestBefore !== evidence.prefixDigestAfter ||\n\t\tevidence.suffixDigestBefore !== evidence.suffixDigestAfter\n\t) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"qualified_timeline_changed\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (!evidence.seamVerified) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"timeline_seam_invalid\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (!requestedShapeMatches(evidence.request, evidence.candidateRows)) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"candidate_shape_mismatch\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tif (!evidence.exporterCompatible) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"canonical_export_incompatible\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\tconst coverageVerified = requiredClockCoverage(\n\t\tevidence.request,\n\t\tevidence.candidateRows,\n\t\tevidence.coverageSourceTimesMs,\n\t);\n\tif (!coverageVerified) {\n\t\treturn {\n\t\t\t...base,\n\t\t\tpassed: false,\n\t\t\treasonCode: \"required_clock_coverage_insufficient\",\n\t\t\tcoverageVerified: false,\n\t\t};\n\t}\n\treturn {\n\t\t...base,\n\t\tpassed: true,\n\t\treasonCode: \"semantic_promotion_verified\",\n\t\tcoverageVerified: true,\n\t};\n}\n",
|
|
183
|
+
"import { buildCanonicalOrderBookRows } from \"./market-data-archive/canonical-orderbook\";\nimport {\n\tCHECKSUM_ALGORITHM,\n\tMARKET_CAPTURE_SCHEMA_VERSION,\n\tsha256Canonical,\n} from \"./market-data-archive/capture-contract\";\nimport sourceTapeCapability from \"./market-data-preparation/policies/source-tape-capability-v1.json\" with {\n\ttype: \"json\",\n};\nimport depthSummaryProjection from \"./market-data-preparation/schemas/order-book-depth-summary-parquet-projection.schema.json\" with {\n\ttype: \"json\",\n};\nimport levelsProjection from \"./market-data-preparation/schemas/order-book-levels-parquet-projection.schema.json\" with {\n\ttype: \"json\",\n};\nimport {\n\tBACKFILL_MAX_BATCH_BYTES,\n\tBACKFILL_MAX_BATCH_ROWS,\n\tbuildForwarderBatches,\n} from \"./market-data-vendor-backfill/batching\";\nimport type {\n\tBackfillArchiveRow,\n\tForwarderBatch,\n\tProviderObjectEvidence,\n} from \"./market-data-vendor-backfill/contracts\";\nimport {\n\ttype PolicyNeutralCryptoHftBookState,\n\ttype PolicyNeutralTapeSink,\n\tSOURCE_TAPE_MAX_BATCH_BYTES as RECONSTRUCTOR_SOURCE_TAPE_MAX_BATCH_BYTES,\n\tSOURCE_TAPE_MAX_IN_FLIGHT as RECONSTRUCTOR_SOURCE_TAPE_MAX_IN_FLIGHT,\n\tSOURCE_TAPE_MAX_STATES_PER_YIELD as RECONSTRUCTOR_SOURCE_TAPE_MAX_STATES_PER_YIELD,\n} from \"./market-data-vendor-backfill/cryptohftdata\";\nimport {\n\tassertDocumentSha256,\n\tjcsCanonicalize,\n\tjcsSha256,\n} from \"./market-data-vendor-backfill/identity\";\nimport { semanticDigest } from \"./market-data-vendor-backfill/semantic-verification\";\n\nassertDocumentSha256(sourceTapeCapability, \"policy_sha256\");\n\nexport const SOURCE_TAPE_CAPABILITY = Object.freeze(sourceTapeCapability);\nexport const SOURCE_TAPE_CAPABILITY_ID = SOURCE_TAPE_CAPABILITY.policy_id;\nexport const SOURCE_TAPE_CONSTRUCTION_MODE =\n\t\"policy_neutral_top_n_state_change_tape/v1\" as const;\nexport const SOURCE_TAPE_DEPTH = 100 as const;\nexport const SOURCE_TAPE_MAX_STATES_PER_YIELD =\n\tRECONSTRUCTOR_SOURCE_TAPE_MAX_STATES_PER_YIELD;\nexport const SOURCE_TAPE_MAX_BATCH_ROWS = BACKFILL_MAX_BATCH_ROWS;\nexport const SOURCE_TAPE_MAX_BATCH_BYTES = BACKFILL_MAX_BATCH_BYTES;\nexport const SOURCE_TAPE_MAX_IN_FLIGHT =\n\tRECONSTRUCTOR_SOURCE_TAPE_MAX_IN_FLIGHT;\nif (RECONSTRUCTOR_SOURCE_TAPE_MAX_BATCH_BYTES !== BACKFILL_MAX_BATCH_BYTES) {\n\tthrow new Error(\"source tape and forwarder byte bounds differ\");\n}\nexport const SOURCE_TAPE_SANDBOX_TARGET = Object.freeze({\n\tenvironment: \"sandbox\",\n\tcluster: \"cex-archive-local\",\n});\nexport const SOURCE_TAPE_PROJECTION_PINS = Object.freeze([\n\tObject.freeze({\n\t\tschema_id: levelsProjection.$id,\n\t\tschema_sha256: jcsSha256(levelsProjection),\n\t}),\n\tObject.freeze({\n\t\tschema_id: depthSummaryProjection.$id,\n\t\tschema_sha256: jcsSha256(depthSummaryProjection),\n\t}),\n]);\n\nexport type SourceTapeProviderObjectInventory = {\n\texpected_identities: string[];\n\tobserved_identities: string[];\n\tcomplete: boolean;\n};\n\nexport function sourceTapeCaptureBundleId(input: {\n\tidempotencyKey: string;\n\ttradingPair: \"ARB-USDC\" | \"ARB-USDT\";\n\twindow: { startTimeMs: number; endTimeMs: number };\n\texpectedObjectIdentities: readonly string[];\n}): string {\n\tif (!/^[a-f0-9]{64}$/u.test(input.idempotencyKey)) {\n\t\tthrow new Error(\"source_tape_idempotency_key_invalid\");\n\t}\n\tconst identities = [...input.expectedObjectIdentities];\n\tif (\n\t\tidentities.length === 0 ||\n\t\tnew Set(identities).size !== identities.length ||\n\t\tJSON.stringify(identities) !== JSON.stringify([...identities].sort())\n\t) {\n\t\tthrow new Error(\"source_tape_expected_inventory_invalid\");\n\t}\n\treturn sha256Canonical({\n\t\tidentity: \"market-data-source-tape-capture-bundle/v1\",\n\t\tcapability_policy_sha256: SOURCE_TAPE_CAPABILITY.policy_sha256,\n\t\tidempotency_key: input.idempotencyKey,\n\t\ttrading_pair: input.tradingPair,\n\t\twindow: input.window,\n\t\texpected_object_identities: identities,\n\t\tconstruction_mode: SOURCE_TAPE_CONSTRUCTION_MODE,\n\t\tdepth: SOURCE_TAPE_DEPTH,\n\t});\n}\n\n/**\n * `production` is the stable forwarder mutation-authorization class. It is not\n * an environment assertion: source-tape qualification remains sandbox-local.\n */\nexport function assertSourceTapeSandboxAuthorization(input: {\n\trequestAuthorizationId: string;\n\trequestTarget: { environment: string; cluster: string };\n\tpreflight: {\n\t\tauthorizationId: string;\n\t\tscope: \"production\";\n\t\tenvironment: string;\n\t\tcluster: string;\n\t\tcredentialValidated: boolean;\n\t};\n}): void {\n\tif (\n\t\tinput.requestTarget.environment !==\n\t\t\tSOURCE_TAPE_SANDBOX_TARGET.environment ||\n\t\tinput.requestTarget.cluster !== SOURCE_TAPE_SANDBOX_TARGET.cluster\n\t) {\n\t\tthrow new Error(\"source_tape_sandbox_target_mismatch\");\n\t}\n\tif (\n\t\tinput.preflight.authorizationId !== input.requestAuthorizationId ||\n\t\tinput.preflight.scope !== \"production\" ||\n\t\tinput.preflight.environment !== input.requestTarget.environment ||\n\t\tinput.preflight.cluster !== input.requestTarget.cluster ||\n\t\tinput.preflight.credentialValidated !== true\n\t) {\n\t\tthrow new Error(\"source_tape_authorization_mismatch\");\n\t}\n}\n\nexport type SourceTapeArchiveSinkResult = {\n\tcapture_bundle_id: string;\n\tstate_count: number;\n\tlevel_row_count: number;\n\tsummary_row_count: number;\n\tforwarder_batch_count: number;\n\tforwarder_batch_identity_sha256: string;\n\tinitializer: {\n\t\tcanonical_snapshot_id: string;\n\t\tsource_time_ms: number;\n\t\tsequence: string;\n\t\tsemantic_stream_position: 0;\n\t};\n\texpected_semantic_digest: string;\n\tfirst_state_descriptor_sha256: string;\n\tlast_state_descriptor_sha256: string;\n\tprovider_object_inventory_complete: true;\n\tmax_states_per_yield: typeof SOURCE_TAPE_MAX_STATES_PER_YIELD;\n\tmax_batch_rows: typeof SOURCE_TAPE_MAX_BATCH_ROWS;\n\tmax_batch_bytes: typeof SOURCE_TAPE_MAX_BATCH_BYTES;\n\tmax_in_flight_submissions: typeof SOURCE_TAPE_MAX_IN_FLIGHT;\n};\n\nexport type SourceTapeSemanticStateDescriptor = {\n\tstate_kind: \"initialization\" | \"change\";\n\tsemantic_stream_position: number;\n\tcanonical_snapshot_id: string;\n\tsource_time_ms: number;\n\tsequence: string;\n\tcanonical_rows_sha256: string;\n};\n\nconst SOURCE_TAPE_SEMANTIC_DIGEST_DOMAIN =\n\t\"market-data-source-tape-semantic-stream/v1\";\n\nexport class SourceTapeSemanticDigestAccumulator {\n\tprivate readonly hash: Hash;\n\tprivate count = 0;\n\n\tconstructor() {\n\t\tthis.hash = createHash(\"sha256\");\n\t\tthis.hash.update(`${SOURCE_TAPE_SEMANTIC_DIGEST_DOMAIN}\\n`);\n\t}\n\n\tappend(descriptor: SourceTapeSemanticStateDescriptor): void {\n\t\tif (descriptor.semantic_stream_position !== this.count) {\n\t\t\tthrow new Error(\"source_tape_semantic_position_invalid\");\n\t\t}\n\t\tthis.hash.update(`${jcsCanonicalize(descriptor)}\\n`);\n\t\tthis.count += 1;\n\t}\n\n\tdigest(): string {\n\t\treturn this.hash.digest(\"hex\");\n\t}\n}\n\nexport function sourceTapeSemanticStateDescriptor(input: {\n\tstateKind: \"initialization\" | \"change\";\n\tsemanticStreamPosition: number;\n\trows: readonly BackfillArchiveRow[];\n}): SourceTapeSemanticStateDescriptor {\n\tconst summary = input.rows.filter(\n\t\t({ table }) => table === \"market_data.cex_order_book_depth_summary\",\n\t);\n\tif (summary.length !== 1) {\n\t\tthrow new Error(\"source_tape_semantic_summary_invalid\");\n\t}\n\tconst row = summary[0]?.row;\n\tconst snapshotId = row?.snapshot_id;\n\tconst sourceTimeMs = Number(row?.source_time_ms);\n\tconst sequence = String(row?.sequence ?? \"\");\n\tif (\n\t\ttypeof snapshotId !== \"string\" ||\n\t\t!/^[a-f0-9]{64}$/u.test(snapshotId) ||\n\t\t!Number.isSafeInteger(sourceTimeMs) ||\n\t\tsourceTimeMs < 0 ||\n\t\t!/^\\d+$/u.test(sequence)\n\t) {\n\t\tthrow new Error(\"source_tape_semantic_summary_invalid\");\n\t}\n\treturn {\n\t\tstate_kind: input.stateKind,\n\t\tsemantic_stream_position: input.semanticStreamPosition,\n\t\tcanonical_snapshot_id: snapshotId,\n\t\tsource_time_ms: sourceTimeMs,\n\t\tsequence,\n\t\tcanonical_rows_sha256: semanticDigest(input.rows),\n\t};\n}\n\nexport type SourceTapeArchiveSink = PolicyNeutralTapeSink & {\n\tresult(): SourceTapeArchiveSinkResult;\n};\n\n/**\n * Streams canonical tape rows to the existing archive-forwarder admission\n * tables. Promotion, selection and exporter-v2 finalization remain later\n * gates; this sink never creates a receipt or a success manifest by itself.\n */\nexport function createSourceTapeArchiveSink(input: {\n\tcaptureBundleId: string;\n\ttradingPair: \"ARB-USDC\" | \"ARB-USDT\";\n\twindow: { startTimeMs: number; endTimeMs: number };\n\tforwarder: {\n\t\tsubmit(batch: ForwarderBatch): Promise<{ ok: boolean; inserted: number }>;\n\t};\n}): SourceTapeArchiveSink {\n\tif (!/^[a-f0-9]{64}$/u.test(input.captureBundleId)) {\n\t\tthrow new Error(\"source_tape_capture_bundle_invalid\");\n\t}\n\tif (\n\t\t!Number.isSafeInteger(input.window.startTimeMs) ||\n\t\t!Number.isSafeInteger(input.window.endTimeMs) ||\n\t\tinput.window.endTimeMs <= input.window.startTimeMs\n\t) {\n\t\tthrow new Error(\"source_tape_window_invalid\");\n\t}\n\tlet stateCount = 0;\n\tlet initializationCount = 0;\n\tlet levelRowCount = 0;\n\tlet summaryRowCount = 0;\n\tlet lastSourceTimeMs = Number.NEGATIVE_INFINITY;\n\tlet completed = false;\n\tlet aborted = false;\n\tlet initializer: SourceTapeArchiveSinkResult[\"initializer\"] | undefined;\n\tconst batchIds: string[] = [];\n\tconst semanticDigestAccumulator = new SourceTapeSemanticDigestAccumulator();\n\tlet firstStateDescriptorSha256: string | undefined;\n\tlet lastStateDescriptorSha256: string | undefined;\n\tlet resultValue: SourceTapeArchiveSinkResult | undefined;\n\n\treturn {\n\t\tasync writeBatch(states) {\n\t\t\tif (completed || aborted) {\n\t\t\t\tthrow new Error(\"source_tape_sink_closed\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\tstates.length === 0 ||\n\t\t\t\tstates.length > SOURCE_TAPE_MAX_STATES_PER_YIELD\n\t\t\t) {\n\t\t\t\tthrow new Error(\"source_tape_state_batch_invalid\");\n\t\t\t}\n\t\t\tfor (const state of states) {\n\t\t\t\tif (state.sourceTimeMs < lastSourceTimeMs) {\n\t\t\t\t\tthrow new Error(\"source_tape_state_order_invalid\");\n\t\t\t\t}\n\t\t\t\tif (state.sourceTimeMs >= input.window.endTimeMs) {\n\t\t\t\t\tthrow new Error(\"source_tape_end_boundary_invalid\");\n\t\t\t\t}\n\t\t\t\tif (state.tapeState === \"initialization\") {\n\t\t\t\t\tinitializationCount += 1;\n\t\t\t\t\tif (stateCount !== 0 || initializationCount !== 1) {\n\t\t\t\t\t\tthrow new Error(\"source_tape_initialization_invalid\");\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tinitializationCount !== 1 ||\n\t\t\t\t\tstate.sourceTimeMs < input.window.startTimeMs\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\"source_tape_change_boundary_invalid\");\n\t\t\t\t}\n\t\t\t\tlastSourceTimeMs = state.sourceTimeMs;\n\t\t\t\tstateCount += 1;\n\t\t\t}\n\t\t\tconst rows = normalizeSourceTapeStates({\n\t\t\t\ttape: states,\n\t\t\t\tcapture_bundle_id: input.captureBundleId,\n\t\t\t\ttrading_pair: input.tradingPair,\n\t\t\t});\n\t\t\tfor (const state of states) {\n\t\t\t\tconst stateRows = rows.filter(\n\t\t\t\t\t({ row }) =>\n\t\t\t\t\t\tNumber(row.source_time_ms) === state.sourceTimeMs &&\n\t\t\t\t\t\tString(row.sequence) === state.sequence,\n\t\t\t\t);\n\t\t\t\tconst descriptor = sourceTapeSemanticStateDescriptor({\n\t\t\t\t\tstateKind: state.tapeState,\n\t\t\t\t\tsemanticStreamPosition:\n\t\t\t\t\t\tstateCount - states.length + states.indexOf(state),\n\t\t\t\t\trows: stateRows,\n\t\t\t\t});\n\t\t\t\tsemanticDigestAccumulator.append(descriptor);\n\t\t\t\tconst descriptorSha256 = jcsSha256(descriptor);\n\t\t\t\tfirstStateDescriptorSha256 ??= descriptorSha256;\n\t\t\t\tlastStateDescriptorSha256 = descriptorSha256;\n\t\t\t\tif (state.tapeState === \"initialization\") {\n\t\t\t\t\tinitializer = {\n\t\t\t\t\t\tcanonical_snapshot_id: descriptor.canonical_snapshot_id,\n\t\t\t\t\t\tsource_time_ms: descriptor.source_time_ms,\n\t\t\t\t\t\tsequence: descriptor.sequence,\n\t\t\t\t\t\tsemantic_stream_position: 0,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const row of rows) {\n\t\t\t\tif (row.table === \"market_data.cex_order_book_levels\") {\n\t\t\t\t\tlevelRowCount += 1;\n\t\t\t\t} else if (row.table === \"market_data.cex_order_book_depth_summary\") {\n\t\t\t\t\tsummaryRowCount += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst batches = buildForwarderBatches({\n\t\t\t\tcaptureBundleId: input.captureBundleId,\n\t\t\t\tdeploymentId: \"cex-okx-source-tape\",\n\t\t\t\trows,\n\t\t\t\tmaxRows: SOURCE_TAPE_MAX_BATCH_ROWS,\n\t\t\t\tmaxBytes: SOURCE_TAPE_MAX_BATCH_BYTES,\n\t\t\t});\n\t\t\tfor (const batch of batches) {\n\t\t\t\tconst response = await input.forwarder.submit(batch);\n\t\t\t\tif (!response.ok || response.inserted !== batch.rows.length) {\n\t\t\t\t\tthrow new Error(\"source_tape_forwarder_rejected\");\n\t\t\t\t}\n\t\t\t\tbatchIds.push(batch.batch_id);\n\t\t\t}\n\t\t},\n\t\tasync complete(completion) {\n\t\t\tif (\n\t\t\t\tcompleted ||\n\t\t\t\taborted ||\n\t\t\t\tinitializationCount !== 1 ||\n\t\t\t\t!initializer ||\n\t\t\t\t!firstStateDescriptorSha256 ||\n\t\t\t\t!lastStateDescriptorSha256\n\t\t\t) {\n\t\t\t\tthrow new Error(\"source_tape_completion_invalid\");\n\t\t\t}\n\t\t\tif (completion.stateCount !== stateCount) {\n\t\t\t\tthrow new Error(\"source_tape_state_count_mismatch\");\n\t\t\t}\n\t\t\tconst inventory = {\n\t\t\t\texpected_identities: [...completion.expectedObjectIdentities],\n\t\t\t\tobserved_identities: completion.observedObjects.map(\n\t\t\t\t\t({ identity }: ProviderObjectEvidence) => identity,\n\t\t\t\t),\n\t\t\t\tcomplete: true,\n\t\t\t};\n\t\t\tif (!providerObjectInventoryIsComplete(inventory)) {\n\t\t\t\tthrow new Error(\"source_tape_inventory_incomplete\");\n\t\t\t}\n\t\t\tcompleted = true;\n\t\t\tresultValue = {\n\t\t\t\tcapture_bundle_id: input.captureBundleId,\n\t\t\t\tstate_count: stateCount,\n\t\t\t\tlevel_row_count: levelRowCount,\n\t\t\t\tsummary_row_count: summaryRowCount,\n\t\t\t\tforwarder_batch_count: batchIds.length,\n\t\t\t\tforwarder_batch_identity_sha256: sha256Canonical(batchIds),\n\t\t\t\tinitializer,\n\t\t\t\texpected_semantic_digest: semanticDigestAccumulator.digest(),\n\t\t\t\tfirst_state_descriptor_sha256: firstStateDescriptorSha256,\n\t\t\t\tlast_state_descriptor_sha256: lastStateDescriptorSha256,\n\t\t\t\tprovider_object_inventory_complete: true,\n\t\t\t\tmax_states_per_yield: SOURCE_TAPE_MAX_STATES_PER_YIELD,\n\t\t\t\tmax_batch_rows: SOURCE_TAPE_MAX_BATCH_ROWS,\n\t\t\t\tmax_batch_bytes: SOURCE_TAPE_MAX_BATCH_BYTES,\n\t\t\t\tmax_in_flight_submissions: SOURCE_TAPE_MAX_IN_FLIGHT,\n\t\t\t};\n\t\t},\n\t\tasync abort() {\n\t\t\taborted = true;\n\t\t\tresultValue = undefined;\n\t\t},\n\t\tresult() {\n\t\t\tif (!completed || !resultValue || aborted) {\n\t\t\t\tthrow new Error(\"source_tape_result_unavailable\");\n\t\t\t}\n\t\t\treturn resultValue;\n\t\t},\n\t};\n}\n\nexport function providerObjectInventoryIsComplete(\n\tinventory: SourceTapeProviderObjectInventory,\n): boolean {\n\tconst expected = [...inventory.expected_identities].sort();\n\tconst observed = [...inventory.observed_identities].sort();\n\treturn (\n\t\tinventory.complete &&\n\t\tnew Set(expected).size === expected.length &&\n\t\tnew Set(observed).size === observed.length &&\n\t\tJSON.stringify(expected) === JSON.stringify(observed)\n\t);\n}\n\nexport function evaluateSourceTapeEligibility(input: {\n\tsource_enumeration_eligible: boolean;\n\tprovider_object_inventory: SourceTapeProviderObjectInventory;\n\ttape_complete: boolean;\n\tcapability_id: string;\n\tcapability_sha256: string;\n\tconstruction_mode: string;\n\tprojection_schema_pins: readonly {\n\t\tschema_id: string;\n\t\tschema_sha256: string;\n\t}[];\n\tartifact_sha256s: readonly string[];\n\ttape_manifest_sha256: string;\n}): boolean {\n\tconst expectedProjectionPins = [...SOURCE_TAPE_PROJECTION_PINS]\n\t\t.map(({ schema_id, schema_sha256 }) => `${schema_id}:${schema_sha256}`)\n\t\t.sort();\n\tconst actualProjectionPins = input.projection_schema_pins\n\t\t.map(({ schema_id, schema_sha256 }) => `${schema_id}:${schema_sha256}`)\n\t\t.sort();\n\treturn (\n\t\tinput.source_enumeration_eligible &&\n\t\tproviderObjectInventoryIsComplete(input.provider_object_inventory) &&\n\t\tinput.tape_complete &&\n\t\tinput.capability_id === SOURCE_TAPE_CAPABILITY_ID &&\n\t\tinput.capability_sha256 === SOURCE_TAPE_CAPABILITY.policy_sha256 &&\n\t\tinput.construction_mode === SOURCE_TAPE_CONSTRUCTION_MODE &&\n\t\tJSON.stringify(actualProjectionPins) ===\n\t\t\tJSON.stringify(expectedProjectionPins) &&\n\t\tinput.artifact_sha256s.length === 2 &&\n\t\tnew Set(input.artifact_sha256s).size === 2 &&\n\t\tinput.artifact_sha256s.every((sha) => /^[a-f0-9]{64}$/u.test(sha)) &&\n\t\t/^[a-f0-9]{64}$/u.test(input.tape_manifest_sha256)\n\t);\n}\n\nexport function normalizeSourceTapeStates(input: {\n\ttape: readonly PolicyNeutralCryptoHftBookState[];\n\tcapture_bundle_id: string;\n\ttrading_pair: \"ARB-USDC\" | \"ARB-USDT\";\n}): BackfillArchiveRow[] {\n\tif (!/^[a-f0-9]{64}$/u.test(input.capture_bundle_id)) {\n\t\tthrow new Error(\"source tape capture bundle identity is invalid\");\n\t}\n\treturn input.tape.flatMap((state) => {\n\t\tconst rawCaptureId = sha256Canonical({\n\t\t\tcapability_policy_sha256: SOURCE_TAPE_CAPABILITY.policy_sha256,\n\t\t\tcapture_bundle_id: input.capture_bundle_id,\n\t\t\tdataset_object_identity: state.datasetObjectIdentity,\n\t\t\tdataset_object_checksum: state.datasetObjectChecksum,\n\t\t\tsource_time_ms: state.sourceTimeMs,\n\t\t\tsequence: state.sequence,\n\t\t\ttape_state: state.tapeState,\n\t\t});\n\t\tconst canonical = buildCanonicalOrderBookRows({\n\t\t\tcontext: {\n\t\t\t\tsource: \"external_backfill\",\n\t\t\t\tdeploymentId: \"cex-okx-source-tape\",\n\t\t\t\tcaptureBundleId: input.capture_bundle_id,\n\t\t\t\texchange: \"okx\",\n\t\t\t\tsymbol: input.trading_pair,\n\t\t\t\ttradingPair: input.trading_pair,\n\t\t\t\tsourceSymbol: input.trading_pair,\n\t\t\t\tassetType: \"spot\",\n\t\t\t\tfeed: \"ORDERBOOK\",\n\t\t\t\tprovider: \"cryptohftdata\",\n\t\t\t\tsourceMode: \"vendor_historical_backfill_v1\",\n\t\t\t\tschemaVersion: MARKET_CAPTURE_SCHEMA_VERSION,\n\t\t\t\tchecksumAlgorithm: CHECKSUM_ALGORITHM,\n\t\t\t\tprovenanceComplete: true,\n\t\t\t},\n\t\t\trawCapture: {\n\t\t\t\trawCaptureId,\n\t\t\t\trawCaptureScope: \"vendor_normalized_dataset_file\",\n\t\t\t\trawChecksum: state.datasetObjectChecksum,\n\t\t\t\tredactedPayload: {\n\t\t\t\t\tdataset_object_identity: state.datasetObjectIdentity,\n\t\t\t\t\tdataset_object_checksum: state.datasetObjectChecksum,\n\t\t\t\t},\n\t\t\t\teventTimeMs: state.sourceTimeMs,\n\t\t\t\treceivedTimeMs: state.receivedTimeMs,\n\t\t\t\tchecksumAlgorithm: CHECKSUM_ALGORITHM,\n\t\t\t},\n\t\t\tdepthLimit: SOURCE_TAPE_DEPTH,\n\t\t\tconstructionMode: SOURCE_TAPE_CONSTRUCTION_MODE,\n\t\t\tsnapshot: {\n\t\t\t\tbids: state.bids,\n\t\t\t\tasks: state.asks,\n\t\t\t\ttimestamp: state.sourceTimeMs,\n\t\t\t\treceivedTimestamp: state.receivedTimeMs,\n\t\t\t\texchange: \"okx\",\n\t\t\t\tsymbol: input.trading_pair,\n\t\t\t\tdepthLimit: SOURCE_TAPE_DEPTH,\n\t\t\t\tsequence: state.sequence,\n\t\t\t},\n\t\t});\n\t\treturn [...canonical.levels, canonical.summary].map((entry) => {\n\t\t\tif (\n\t\t\t\tentry.table !== \"market_data.cex_order_book_levels\" &&\n\t\t\t\tentry.table !== \"market_data.cex_order_book_depth_summary\"\n\t\t\t) {\n\t\t\t\tthrow new Error(\"source tape archive table is invalid\");\n\t\t\t}\n\t\t\treturn { table: entry.table, row: entry.row };\n\t\t});\n\t});\n}\n\nimport { createHash, type Hash } from \"node:crypto\";\n",
|
|
184
|
+
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport {\n\tSOURCE_TAPE_CAPABILITY,\n\tSOURCE_TAPE_CONSTRUCTION_MODE,\n} from \"../source-tape\";\nimport {\n\ttype BackfillArchiveRow,\n\ttype PromotionReceipt,\n\ttype PromotionReceiptWire,\n\tpromotionIdentitySha256,\n\tpromotionReceiptCodec,\n\tpromotionReceiptSchema,\n} from \"./contracts\";\nimport { documentSha256, jcsCanonicalize } from \"./identity\";\nimport {\n\tCAPABILITY_POLICY,\n\tEFFECTIVE_ACQUISITION_POLICY_PIN,\n\tEFFECTIVE_ADAPTER_POLICY_PIN,\n\tRESOURCE_POLICY,\n} from \"./manifests\";\n\nexport type StablePromotionReceipt = Omit<\n\tPromotionReceipt,\n\t\"receiptId\" | \"verificationTimeMs\"\n>;\n\nfunction samePolicyPin(\n\tleft: { policy_id: string; policy_sha256: string },\n\tright: { policy_id: string; policy_sha256: string },\n): boolean {\n\treturn (\n\t\tleft.policy_id === right.policy_id &&\n\t\tleft.policy_sha256 === right.policy_sha256\n\t);\n}\n\nexport function promotionReceiptMatchesCurrentPolicies(\n\treceipt: PromotionReceiptWire,\n): boolean {\n\tconst expectedCapability =\n\t\treceipt.construction_mode === SOURCE_TAPE_CONSTRUCTION_MODE\n\t\t\t? SOURCE_TAPE_CAPABILITY\n\t\t\t: CAPABILITY_POLICY;\n\treturn (\n\t\tsamePolicyPin(\n\t\t\treceipt.effective_policies.capability_policy,\n\t\t\texpectedCapability,\n\t\t) &&\n\t\tsamePolicyPin(\n\t\t\treceipt.effective_policies.resource_policy,\n\t\t\tRESOURCE_POLICY,\n\t\t) &&\n\t\tsamePolicyPin(\n\t\t\treceipt.effective_policies.adapter_policy,\n\t\t\tEFFECTIVE_ADAPTER_POLICY_PIN,\n\t\t) &&\n\t\tsamePolicyPin(\n\t\t\treceipt.effective_policies.acquisition_policy,\n\t\t\tEFFECTIVE_ACQUISITION_POLICY_PIN,\n\t\t)\n\t);\n}\n\nexport function promotionReceiptId(receipt: StablePromotionReceipt): string {\n\treturn sha256Canonical(receipt);\n}\n\nfunction finalizeLegacyPromotionReceipt(\n\tstable: StablePromotionReceipt,\n\tverificationTimeMs: number,\n): PromotionReceipt {\n\treturn promotionReceiptSchema.parse({\n\t\t...stable,\n\t\treceiptId: promotionReceiptId(stable),\n\t\tverificationTimeMs,\n\t});\n}\n\ntype UnfinalizedPromotionReceiptWire = Omit<\n\tPromotionReceiptWire,\n\t\"receipt_id\" | \"promotion_identity_sha256\"\n> &\n\tPartial<\n\t\tPick<PromotionReceiptWire, \"receipt_id\" | \"promotion_identity_sha256\">\n\t>;\n\nexport function finalizePromotionReceipt(\n\treceipt: UnfinalizedPromotionReceiptWire,\n): PromotionReceiptWire;\nexport function finalizePromotionReceipt(\n\treceipt: StablePromotionReceipt,\n\tverificationTimeMs: number,\n): PromotionReceipt;\nexport function finalizePromotionReceipt(\n\treceipt: UnfinalizedPromotionReceiptWire | StablePromotionReceipt,\n\tverificationTimeMs?: number,\n): PromotionReceiptWire | PromotionReceipt {\n\tif (\"schema_id\" in receipt) {\n\t\tconst {\n\t\t\treceipt_id: _receiptId,\n\t\t\tpromotion_identity_sha256: _promotionIdentity,\n\t\t\t...semanticAndTimestamp\n\t\t} = receipt;\n\t\tconst promotion_identity_sha256 =\n\t\t\tpromotionIdentitySha256(semanticAndTimestamp);\n\t\tconst content = { ...semanticAndTimestamp, promotion_identity_sha256 };\n\t\treturn promotionReceiptCodec.decode({\n\t\t\t...content,\n\t\t\treceipt_id: documentSha256(content, \"receipt_id\"),\n\t\t});\n\t}\n\tif (verificationTimeMs === undefined) {\n\t\tthrow new TypeError(\"legacy promotion receipt requires verificationTimeMs\");\n\t}\n\treturn finalizeLegacyPromotionReceipt(receipt, verificationTimeMs);\n}\n\nexport function promotionReceiptToArchiveRow(\n\treceiptInput: PromotionReceipt | PromotionReceiptWire,\n): BackfillArchiveRow {\n\tif (\"schema_id\" in receiptInput) {\n\t\tconst receipt = promotionReceiptCodec.decode(receiptInput);\n\t\treturn {\n\t\t\ttable: \"market_data.cex_order_book_capture_promotions\",\n\t\t\trow: {\n\t\t\t\tsource: receipt.source,\n\t\t\t\tcapture_origin: receipt.capture_origin,\n\t\t\t\tsource_mode: receipt.source_mode,\n\t\t\t\tdeployment_id: \"market-data-vendor-backfill\",\n\t\t\t\treceipt_schema_version: receipt.schema_id,\n\t\t\t\treceipt_id: receipt.receipt_id,\n\t\t\t\tpromotion_identity_sha256: receipt.promotion_identity_sha256,\n\t\t\t\trequest_id: receipt.request_id,\n\t\t\t\tidempotency_key: receipt.idempotency_key,\n\t\t\t\tstatus: \"passing\",\n\t\t\t\tcapture_bundle_id: receipt.capture_bundle_id,\n\t\t\t\tprovider: receipt.provider,\n\t\t\t\tadapter_version: receipt.adapter_version,\n\t\t\t\texchange: receipt.scope.exchange,\n\t\t\t\ttrading_pair: receipt.scope.trading_pair,\n\t\t\t\tasset_type: receipt.scope.market_type,\n\t\t\t\tfeed: receipt.scope.feed,\n\t\t\t\twindow_start_ms: Date.parse(receipt.window.start_at),\n\t\t\t\twindow_end_ms: Date.parse(receipt.window.end_at),\n\t\t\t\tdepth_limit: receipt.depth,\n\t\t\t\tconstruction_mode: receipt.construction_mode,\n\t\t\t\tschema_version: \"1.0.0\",\n\t\t\t\tcanonical_schema_sha256: receipt.canonical_schema.schema_sha256,\n\t\t\t\tchecksum_algorithm: \"sha256-canonical-json-v1\",\n\t\t\t\tcoverage_policy_json: jcsCanonicalize(receipt.coverage_policy),\n\t\t\t\tselection_sha256: receipt.selection_sha256,\n\t\t\t\tcapability_policy_id:\n\t\t\t\t\treceipt.effective_policies.capability_policy.policy_id,\n\t\t\t\tcapability_policy_sha256:\n\t\t\t\t\treceipt.effective_policies.capability_policy.policy_sha256,\n\t\t\t\tresource_policy_id:\n\t\t\t\t\treceipt.effective_policies.resource_policy.policy_id,\n\t\t\t\tresource_policy_sha256:\n\t\t\t\t\treceipt.effective_policies.resource_policy.policy_sha256,\n\t\t\t\tadapter_policy_id: receipt.effective_policies.adapter_policy.policy_id,\n\t\t\t\tadapter_policy_sha256:\n\t\t\t\t\treceipt.effective_policies.adapter_policy.policy_sha256,\n\t\t\t\tacquisition_policy_id:\n\t\t\t\t\treceipt.effective_policies.acquisition_policy.policy_id,\n\t\t\t\tacquisition_policy_sha256:\n\t\t\t\t\treceipt.effective_policies.acquisition_policy.policy_sha256,\n\t\t\t\tvendor_semantic_digest: receipt.vendor_semantic_digest,\n\t\t\t\tcanonical_semantic_digest: receipt.canonical_semantic_digest,\n\t\t\t\tprefix_digest: receipt.prefix_digest,\n\t\t\t\tsuffix_digest: receipt.suffix_digest,\n\t\t\t\tseam_verified: 1,\n\t\t\t\tcoverage_verified: 1,\n\t\t\t\tdataset_objects_json: jcsCanonicalize(receipt.dataset_objects),\n\t\t\t\treceipt_json: jcsCanonicalize(receipt),\n\t\t\t\tverification_time_ms: Date.parse(receipt.verified_at),\n\t\t\t},\n\t\t};\n\t}\n\tconst receipt = promotionReceiptSchema.parse(receiptInput);\n\tif (\n\t\tpromotionReceiptId(\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(receipt).filter(\n\t\t\t\t\t([key]) => key !== \"receiptId\" && key !== \"verificationTimeMs\",\n\t\t\t\t),\n\t\t\t) as StablePromotionReceipt,\n\t\t) !== receipt.receiptId\n\t) {\n\t\tthrow new Error(\"promotion receipt identity mismatch\");\n\t}\n\treturn {\n\t\ttable: \"market_data.cex_order_book_capture_promotions\",\n\t\trow: {\n\t\t\tsource: receipt.source,\n\t\t\tdeployment_id: \"market-data-vendor-backfill\",\n\t\t\treceipt_schema_version: receipt.schemaVersion,\n\t\t\treceipt_id: receipt.receiptId,\n\t\t\trequest_id: receipt.requestId,\n\t\t\tidempotency_key: receipt.idempotencyKey,\n\t\t\tstatus: receipt.status,\n\t\t\tcapture_bundle_id: receipt.captureBundleId,\n\t\t\tprovider: receipt.provider,\n\t\t\tadapter_version: receipt.adapterVersion,\n\t\t\texchange: receipt.exchange,\n\t\t\ttrading_pair: receipt.tradingPair,\n\t\t\tasset_type: receipt.marketType,\n\t\t\tfeed: receipt.feed,\n\t\t\twindow_start_ms: receipt.startTimeMs,\n\t\t\twindow_end_ms: receipt.endTimeMs,\n\t\t\tdepth_limit: receipt.depth,\n\t\t\tconstruction_mode: receipt.constructionMode,\n\t\t\tschema_version: receipt.canonicalSchemaVersion,\n\t\t\tchecksum_algorithm: receipt.checksumAlgorithm,\n\t\t\tvendor_semantic_digest: receipt.vendorSemanticDigest,\n\t\t\tcanonical_semantic_digest: receipt.canonicalSemanticDigest,\n\t\t\tprefix_digest: receipt.prefixDigest,\n\t\t\tsuffix_digest: receipt.suffixDigest,\n\t\t\tseam_verified: 1,\n\t\t\tcoverage_verified: 1,\n\t\t\tdataset_objects_json: JSON.stringify(receipt.datasetObjects),\n\t\t\tverification_time_ms: receipt.verificationTimeMs,\n\t\t},\n\t};\n}\n\nexport function promotionReceiptFromArchiveRow(\n\trow: Record<string, unknown>,\n): PromotionReceipt | PromotionReceiptWire {\n\tif (typeof row.receipt_json === \"string\" && row.receipt_json.length > 0) {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(row.receipt_json);\n\t\t} catch {\n\t\t\tthrow new Error(\"promotion receipt_json is invalid\");\n\t\t}\n\t\tconst receipt = promotionReceiptCodec.decode(parsed);\n\t\tif (\n\t\t\treceipt.receipt_id !== row.receipt_id ||\n\t\t\treceipt.promotion_identity_sha256 !== row.promotion_identity_sha256\n\t\t) {\n\t\t\tthrow new Error(\"promotion receipt archive identity mismatch\");\n\t\t}\n\t\treturn receipt;\n\t}\n\tlet datasetObjects: unknown;\n\ttry {\n\t\tdatasetObjects = JSON.parse(String(row.dataset_objects_json));\n\t} catch {\n\t\tthrow new Error(\"promotion dataset_objects_json is invalid\");\n\t}\n\tconst receipt = promotionReceiptSchema.parse({\n\t\tschemaVersion: row.receipt_schema_version,\n\t\treceiptId: row.receipt_id,\n\t\trequestId: row.request_id,\n\t\tidempotencyKey: row.idempotency_key,\n\t\tstatus: row.status,\n\t\tsource: row.source,\n\t\tprovider: row.provider,\n\t\tadapterVersion: row.adapter_version,\n\t\tcaptureBundleId: row.capture_bundle_id,\n\t\texchange: row.exchange,\n\t\ttradingPair: row.trading_pair,\n\t\tmarketType: row.asset_type,\n\t\tfeed: row.feed,\n\t\tstartTimeMs: row.window_start_ms,\n\t\tendTimeMs: row.window_end_ms,\n\t\tdepth: row.depth_limit,\n\t\tconstructionMode: row.construction_mode,\n\t\tcanonicalSchemaVersion: row.schema_version,\n\t\tchecksumAlgorithm: row.checksum_algorithm,\n\t\tvendorSemanticDigest: row.vendor_semantic_digest,\n\t\tcanonicalSemanticDigest: row.canonical_semantic_digest,\n\t\tprefixDigest: row.prefix_digest,\n\t\tsuffixDigest: row.suffix_digest,\n\t\tseamVerified: row.seam_verified === 1,\n\t\tcoverageVerified: row.coverage_verified === 1,\n\t\tdatasetObjects,\n\t\tverificationTimeMs: row.verification_time_ms,\n\t});\n\tconst {\n\t\treceiptId,\n\t\tverificationTimeMs: _verificationTimeMs,\n\t\t...stable\n\t} = receipt;\n\tif (promotionReceiptId(stable) !== receiptId) {\n\t\tthrow new Error(\"promotion receipt identity mismatch\");\n\t}\n\treturn receipt;\n}\n",
|
|
185
|
+
"import {\n\tARCHIVE_SELECTION_SCHEMA_ID,\n\tBACKFILL_REQUEST_SCHEMA_ID,\n\tcreateBackfillIdempotencyKey,\n\tfinalizeArchiveSelection,\n\tfinalizeRequiredClock,\n\tPROMOTION_RECEIPT_SCHEMA_ID,\n\tREQUIRED_CLOCK_SCHEMA_ID,\n} from \"./contracts\";\nimport { jcsSha256 } from \"./identity\";\nimport {\n\tCAPABILITY_POLICY,\n\tEFFECTIVE_ACQUISITION_POLICY_PIN,\n\tEFFECTIVE_ADAPTER_POLICY_PIN,\n\tRESOURCE_POLICY,\n} from \"./manifests\";\nimport { finalizePromotionReceipt } from \"./promotion\";\n\nconst requestId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f100\";\nconst attemptId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f101\";\nconst clockId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f102\";\nconst authorizationId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f103\";\nconst qualificationEventId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f104\";\nconst targetId = \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f105\";\nconst captureBundleId = \"d\".repeat(64);\nconst scope = {\n\texchange: \"okx\",\n\ttrading_pair: \"ARB-USDT\",\n\tmarket_type: \"spot\" as const,\n\tfeed: \"ORDERBOOK\" as const,\n};\nconst window = {\n\tstart_at: \"2026-08-18T09:27:15.000Z\",\n\tend_at: \"2026-08-18T09:27:17.000Z\",\n};\nconst coveragePolicy = {\n\tpolicy_id: \"prior-asof-strict/v1\" as const,\n\tmax_asof_lag_ms: 5_000,\n\tfuture_rows: \"reject\" as const,\n\tmissing_required_event: \"fail\" as const,\n};\n\nconst requiredClock = finalizeRequiredClock({\n\tschema_id: REQUIRED_CLOCK_SCHEMA_ID,\n\tclock_id: clockId,\n\tcreated_at: \"2026-08-20T12:00:00.000Z\",\n\ttargets: [{ target_id: targetId, target_at: \"2026-08-18T09:27:16.000Z\" }],\n});\n\nconst initialSelection = finalizeArchiveSelection({\n\tschema_id: ARCHIVE_SELECTION_SCHEMA_ID,\n\tscope,\n\trequired_clock: {\n\t\tclock_id: requiredClock.clock_id,\n\t\tclock_sha256: requiredClock.clock_sha256,\n\t\tevent_count: requiredClock.targets.length,\n\t},\n\tcoverage_policy: coveragePolicy,\n\tsource_policy: \"authoritative_window\",\n\tcoverage_class: \"missing\",\n\trequested_intervals: [window],\n\tselected_intervals: [],\n\tprecedence: [\"vendor\"],\n\tbundles: [],\n\tsupport_anchors: [],\n\treceipt_ids: [],\n\tqualification_event_ids: [],\n\tresolved_at: \"2026-08-20T12:00:00.000Z\",\n});\n\nconst requestContent = {\n\tschema_id: BACKFILL_REQUEST_SCHEMA_ID,\n\trequest_id: requestId,\n\tattempt_id: attemptId,\n\tscope,\n\twindow,\n\tdepth: 20,\n\tconstruction_mode: \"sampled_top_n_snapshot\" as const,\n\tsource_policy: \"authoritative_window\" as const,\n\ttarget: { environment: \"production\", cluster: \"cex-archive-primary\" },\n\tcoverage_policy: coveragePolicy,\n\trequired_clock: {\n\t\tschema_id: REQUIRED_CLOCK_SCHEMA_ID,\n\t\tclock_id: requiredClock.clock_id,\n\t\tfile_name: \"required-clock.json\",\n\t\tclock_sha256: requiredClock.clock_sha256,\n\t\tevent_count: requiredClock.targets.length,\n\t},\n\tinitial_selection: initialSelection,\n\texpected_canonical_schema: {\n\t\tschema_id: \"cex-order-book-canonical/v1\",\n\t\tschema_sha256: \"a\".repeat(64),\n\t},\n\tproduct_pins: {\n\t\tcapability_policy: {\n\t\t\tpolicy_id: CAPABILITY_POLICY.policy_id,\n\t\t\tpolicy_sha256: CAPABILITY_POLICY.policy_sha256,\n\t\t},\n\t\tresource_policy: {\n\t\t\tpolicy_id: RESOURCE_POLICY.policy_id,\n\t\t\tpolicy_sha256: RESOURCE_POLICY.policy_sha256,\n\t\t},\n\t},\n\tproduction_authorization_id: authorizationId,\n};\n\nconst request = {\n\t...requestContent,\n\tidempotency_key: createBackfillIdempotencyKey(requestContent),\n};\n\nconst promotionReceipt = finalizePromotionReceipt({\n\tschema_id: PROMOTION_RECEIPT_SCHEMA_ID,\n\tverified_at: \"2026-08-20T12:00:02.000Z\",\n\trequest_id: request.request_id,\n\tidempotency_key: request.idempotency_key,\n\tsource: \"external_backfill\",\n\tcapture_origin: \"vendor_historical_backfill\",\n\tsource_mode: \"vendor_historical_backfill_v1\",\n\tprovider: \"cryptohftdata\",\n\tadapter_version: \"cryptohftdata-orderbook/v2\",\n\teffective_policies: {\n\t\tcapability_policy: request.product_pins.capability_policy,\n\t\tresource_policy: request.product_pins.resource_policy,\n\t\tadapter_policy: EFFECTIVE_ADAPTER_POLICY_PIN,\n\t\tacquisition_policy: EFFECTIVE_ACQUISITION_POLICY_PIN,\n\t},\n\tcapture_bundle_id: captureBundleId,\n\tscope,\n\twindow,\n\tdepth: request.depth,\n\tconstruction_mode: request.construction_mode,\n\tcanonical_schema: request.expected_canonical_schema,\n\tcoverage_policy: coveragePolicy,\n\tselection_sha256: initialSelection.selection_sha256,\n\tvendor_semantic_digest: \"e\".repeat(64),\n\tcanonical_semantic_digest: \"f\".repeat(64),\n\tprefix_digest: \"1\".repeat(64),\n\tsuffix_digest: \"2\".repeat(64),\n\tseam_verified: true,\n\tcoverage_verified: true,\n\tdataset_objects: [\n\t\t{\n\t\t\tidentity: \"okx/spot/orderbook/hour/arb-usdt/2026-08-18t09\",\n\t\t\tchecksum: \"3\".repeat(64),\n\t\t\tbytes: 1_000,\n\t\t\trows: 50,\n\t\t},\n\t],\n});\n\nconst resolvedSelection = finalizeArchiveSelection({\n\tschema_id: ARCHIVE_SELECTION_SCHEMA_ID,\n\tscope,\n\trequired_clock: initialSelection.required_clock,\n\tcoverage_policy: coveragePolicy,\n\tsource_policy: \"authoritative_window\",\n\tcoverage_class: \"complete\",\n\trequested_intervals: [window],\n\tselected_intervals: [\n\t\t{\n\t\t\t...window,\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\t},\n\t],\n\tprecedence: [\"vendor\"],\n\tbundles: [\n\t\t{\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\t\tinterval: window,\n\t\t\tqualification: {\n\t\t\t\tqualification_event_id: qualificationEventId,\n\t\t\t\tstate: \"qualified\",\n\t\t\t\treceipt_id: promotionReceipt.receipt_id,\n\t\t\t\tpromotion_identity_sha256: promotionReceipt.promotion_identity_sha256,\n\t\t\t},\n\t\t},\n\t],\n\tsupport_anchors: [\n\t\t{\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t\traw_capture_id: \"4\".repeat(64),\n\t\t\tsnapshot_id: \"5\".repeat(64),\n\t\t\tsource_time: \"2026-08-18T09:27:15.308Z\",\n\t\t\tnormalized_summary_checksum: \"6\".repeat(64),\n\t\t\tmetadata_ref: {\n\t\t\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\t\t\tqualification_event_id: qualificationEventId,\n\t\t\t\treceipt_id: promotionReceipt.receipt_id,\n\t\t\t},\n\t\t},\n\t],\n\treceipt_ids: [promotionReceipt.receipt_id],\n\tqualification_event_ids: [qualificationEventId],\n\tresolved_at: \"2026-08-20T12:00:02.000Z\",\n});\n\nconst jcsEdgeVector = {\n\tliterals: [null, true, false],\n\tnumbers: [Number(\"333333333.33333329\"), 1e30, 4.5, 0.002],\n\tstring: '€$\\u000f\\nA\\'B\"\\\\\"/',\n};\n\nexport const CONFORMANCE_FIXTURES = Object.freeze({\n\tfixture_id: \"market-data-vendor-backfill-conformance/v2\",\n\tdocuments: {\n\t\trequired_clock: requiredClock,\n\t\tarchive_selection: resolvedSelection,\n\t\trequest,\n\t\tpromotion_receipt: promotionReceipt,\n\t},\n\tidentities: {\n\t\tidempotency_key: request.idempotency_key,\n\t\tclock_sha256: requiredClock.clock_sha256,\n\t\tinitial_selection_sha256: initialSelection.selection_sha256,\n\t\tselection_sha256: resolvedSelection.selection_sha256,\n\t\tpromotion_identity_sha256: promotionReceipt.promotion_identity_sha256,\n\t\treceipt_id: promotionReceipt.receipt_id,\n\t\tcapability_policy_sha256: CAPABILITY_POLICY.policy_sha256,\n\t\tresource_policy_sha256: RESOURCE_POLICY.policy_sha256,\n\t},\n\tjcs_edge_vector: jcsEdgeVector,\n\thashes: { jcs_edge_vector_sha256: jcsSha256(jcsEdgeVector) },\n});\n",
|
|
186
|
+
"import Ajv2020, {\n\ttype ErrorObject,\n\ttype ValidateFunction,\n} from \"ajv/dist/2020.js\";\nimport type {\n\tArchiveSelectionWire,\n\tBackfillOutcomeWire,\n\tFixedUtcTimestamp,\n\tLowercaseUuid,\n\tSha256Hex,\n} from \"../market-data-vendor-backfill/contracts\";\nimport {\n\tarchiveSelectionCodec,\n\tpromotionReceiptCodec,\n} from \"../market-data-vendor-backfill/contracts\";\nimport {\n\tassertDocumentSha256,\n\tdocumentSha256,\n\tjcsSha256,\n} from \"../market-data-vendor-backfill/identity\";\nimport {\n\tCAPABILITY_POLICY,\n\tRESOURCE_POLICY,\n} from \"../market-data-vendor-backfill/manifests\";\nimport { promotionReceiptMatchesCurrentPolicies } from \"../market-data-vendor-backfill/promotion\";\nimport archiveSelectionSchema from \"../market-data-vendor-backfill/schemas/archive-selection.schema.json\" with {\n\ttype: \"json\",\n};\nimport promotionReceiptSchema from \"../market-data-vendor-backfill/schemas/promotion-receipt.schema.json\" with {\n\ttype: \"json\",\n};\nimport requestSchema from \"../market-data-vendor-backfill/schemas/request.schema.json\" with {\n\ttype: \"json\",\n};\nimport requiredClockSchema from \"../market-data-vendor-backfill/schemas/required-clock.schema.json\" with {\n\ttype: \"json\",\n};\nimport { SOURCE_TAPE_CAPABILITY } from \"../source-tape\";\nimport backfillResultV2Schema from \"./schemas/backfill-result-v2.schema.json\" with {\n\ttype: \"json\",\n};\nimport exportRequestSchema from \"./schemas/canonical-orderbook-export-request.schema.json\" with {\n\ttype: \"json\",\n};\nimport exportResultSchema from \"./schemas/canonical-orderbook-export-result.schema.json\" with {\n\ttype: \"json\",\n};\nimport depthSummaryProjectionSchema from \"./schemas/order-book-depth-summary-parquet-projection.schema.json\" with {\n\ttype: \"json\",\n};\nimport levelsProjectionSchema from \"./schemas/order-book-levels-parquet-projection.schema.json\" with {\n\ttype: \"json\",\n};\nimport productPinSchema from \"./schemas/preparation-product-pin.schema.json\" with {\n\ttype: \"json\",\n};\nimport sourceForensicsLedgerSchema from \"./schemas/source-forensics-ledger.schema.json\" with {\n\ttype: \"json\",\n};\nimport sourceQualificationRecordSchema from \"./schemas/source-qualification-record.schema.json\" with {\n\ttype: \"json\",\n};\n\nexport const BACKFILL_RESULT_V2_SCHEMA_ID = backfillResultV2Schema.$id;\nexport const CANONICAL_ORDERBOOK_EXPORT_REQUEST_SCHEMA_ID =\n\texportRequestSchema.$id;\nexport const CANONICAL_ORDERBOOK_EXPORT_RESULT_SCHEMA_ID =\n\texportResultSchema.$id;\nexport const PREPARATION_PRODUCT_PIN_SCHEMA_ID = productPinSchema.$id;\nexport const ORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_ID =\n\tlevelsProjectionSchema.$id;\nexport const ORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_ID =\n\tdepthSummaryProjectionSchema.$id;\nexport const SOURCE_FORENSICS_LEDGER_SCHEMA_ID =\n\tsourceForensicsLedgerSchema.$id;\nexport const SOURCE_QUALIFICATION_RECORD_SCHEMA_ID =\n\tsourceQualificationRecordSchema.$id;\nexport const PREPARATION_SCHEMA_MANIFEST_V3_ID =\n\t\"https://schemas.usher.so/market-data-vendor-backfill-schema-manifest/v3\" as const;\n\nexport type PreparationTarget = { environment: string; cluster: string };\n\nexport type PreparationProducerIdentity = {\n\tproduct_id: \"market-data-vendor-backfill\" | \"cex-canonical-orderbook-export\";\n\tproduct_version:\n\t\t| \"market-data-vendor-backfill/v1\"\n\t\t| \"cex-canonical-orderbook-export/v2\";\n\tpackage: {\n\t\tname: \"@usherlabs/cex-broker\";\n\t\tversion: string;\n\t\tgit_head: string;\n\t};\n\texecutable_sha256: Sha256Hex;\n\truntime: { name: \"node\"; version: string };\n};\n\nexport type BackfillJobResultV2Wire = {\n\tschema_id: typeof BACKFILL_RESULT_V2_SCHEMA_ID;\n\tresult_sha256: Sha256Hex;\n\tjob_id: LowercaseUuid;\n\trequest_file_sha256: Sha256Hex | null;\n\tschema_manifest_sha256: Sha256Hex;\n\tproducer: PreparationProducerIdentity & {\n\t\tproduct_id: \"market-data-vendor-backfill\";\n\t\tproduct_version: \"market-data-vendor-backfill/v1\";\n\t};\n\tcapability_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\tresource_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\tstarted_at: FixedUtcTimestamp;\n\tcompleted_at: FixedUtcTimestamp;\n\toutcome: BackfillOutcomeWire;\n};\n\nexport type CanonicalOrderBookExportRequestWire = {\n\tschema_id: typeof CANONICAL_ORDERBOOK_EXPORT_REQUEST_SCHEMA_ID;\n\trequest_id: LowercaseUuid;\n\ttarget: PreparationTarget;\n\tselection: ArchiveSelectionWire;\n\tdepth: number;\n\tconstruction_mode:\n\t\t| \"sampled_top_n_snapshot\"\n\t\t| \"exact_l2_reconstruction\"\n\t\t| \"policy_neutral_top_n_state_change_tape/v1\";\n\tcanonical_schema_version: string;\n\tchecksum_algorithm: \"sha256-canonical-json-v1\";\n};\n\nexport type CanonicalOrderBookExportQuerySegment =\n\tArchiveSelectionWire[\"selected_intervals\"][number];\n\nexport const CANONICAL_ORDERBOOK_EXPORT_STATUSES = [\n\t\"exported\",\n\t\"request_invalid\",\n\t\"archive_query_failed\",\n\t\"archive_data_invalid\",\n\t\"artifact_write_failed\",\n] as const;\n\nexport type CanonicalOrderBookExportStatus =\n\t(typeof CANONICAL_ORDERBOOK_EXPORT_STATUSES)[number];\n\nexport type CanonicalOrderBookExportArtifact = {\n\tfile_name: string;\n\trows: number;\n\tbytes: number;\n\tsha256: Sha256Hex;\n\tprojection_schema_id:\n\t\t| typeof ORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_ID\n\t\t| typeof ORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_ID;\n\tprojection_schema_sha256: Sha256Hex;\n};\n\nexport type CanonicalOrderBookExportResultWire = {\n\tschema_id: typeof CANONICAL_ORDERBOOK_EXPORT_RESULT_SCHEMA_ID;\n\tresult_sha256: Sha256Hex;\n\tjob_id: LowercaseUuid;\n\trequest_file_sha256: Sha256Hex | null;\n\tproducer: PreparationProducerIdentity & {\n\t\tproduct_id: \"cex-canonical-orderbook-export\";\n\t\tproduct_version: \"cex-canonical-orderbook-export/v2\";\n\t};\n\tstarted_at: FixedUtcTimestamp;\n\tcompleted_at: FixedUtcTimestamp;\n\toutcome: {\n\t\tstatus: CanonicalOrderBookExportStatus;\n\t\treason_code: string;\n\t\treason_subcode: string | null;\n\t\trequest_id: LowercaseUuid | null;\n\t\ttarget: PreparationTarget | null;\n\t\tselection_sha256: Sha256Hex | null;\n\t\tquery_sha256: Sha256Hex | null;\n\t\tquery_segments: CanonicalOrderBookExportQuerySegment[];\n\t\tpromotion_receipt_ids: Sha256Hex[];\n\t\tartifacts: null | {\n\t\t\tlevels: CanonicalOrderBookExportArtifact;\n\t\t\tsummary: CanonicalOrderBookExportArtifact;\n\t\t};\n\t\tdiagnostics: Record<string, string | number | boolean>;\n\t};\n};\n\nexport type PreparationProductPinWire = {\n\tschema_id: typeof PREPARATION_PRODUCT_PIN_SCHEMA_ID;\n\tpackage: {\n\t\tname: \"@usherlabs/cex-broker\";\n\t\tversion: string;\n\t\tregistry_tarball_url: string;\n\t\tintegrity: string;\n\t\ttarball_sha256: Sha256Hex;\n\t\tnpm_git_head: string;\n\t};\n\texecutables: Array<{\n\t\tproduct_id: PreparationProducerIdentity[\"product_id\"];\n\t\tproduct_version: PreparationProducerIdentity[\"product_version\"];\n\t\trelative_path: string;\n\t\texecutable_sha256: Sha256Hex;\n\t}>;\n\tschema_manifest: {\n\t\tschema_id: typeof PREPARATION_SCHEMA_MANIFEST_V3_ID;\n\t\tmanifest_sha256: Sha256Hex;\n\t\trelative_path: \"dist/market-data-preparation/schema-manifest.json\";\n\t};\n\tschema_pins: Array<{ schema_id: string; schema_sha256: Sha256Hex }>;\n\tcapability_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\tsource_tape_capability: {\n\t\tpolicy_id: string;\n\t\tpolicy_sha256: Sha256Hex;\n\t};\n\tresource_policy: { policy_id: string; policy_sha256: Sha256Hex };\n\tpreparation_library: {\n\t\texported_subpath: \"@usherlabs/cex-broker/market-data-preparation\";\n\t\truntime_entry_sha256: Sha256Hex;\n\t\tdeclaration_sha256: Sha256Hex;\n\t\toperations: [\n\t\t\t{\n\t\t\t\tsymbol: \"runMarketDataSourceTape\";\n\t\t\t\toperation_id: \"market-data-source-tape/v1\";\n\t\t\t},\n\t\t\t{\n\t\t\t\tsymbol: \"runMarketDataRequiredClockQualification\";\n\t\t\t\toperation_id: \"market-data-required-clock-qualification/v1\";\n\t\t\t},\n\t\t];\n\t};\n};\n\ntype Codec<T> = {\n\tdecode(value: unknown): T;\n\tis(value: unknown): value is T;\n};\n\nfunction describeAjvErrors(errors: ErrorObject[] | null | undefined): string {\n\treturn (errors ?? [])\n\t\t.map(\n\t\t\t(error) =>\n\t\t\t\t`${error.instancePath || \"/\"} ${error.message ?? \"is invalid\"}`,\n\t\t)\n\t\t.join(\"; \");\n}\n\nfunction codec<T>(\n\tvalidate: ValidateFunction,\n\tsemantic?: (document: T) => void,\n): Codec<T> {\n\treturn {\n\t\tdecode(value: unknown): T {\n\t\t\tif (!validate(value)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`JSON Schema validation failed: ${describeAjvErrors(validate.errors)}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tsemantic?.(value as T);\n\t\t\treturn value as T;\n\t\t},\n\t\tis(value: unknown): value is T {\n\t\t\tif (!validate(value)) return false;\n\t\t\ttry {\n\t\t\t\tsemantic?.(value as T);\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t};\n}\n\nfunction fixedTimestampMs(value: string, field: string): number {\n\tconst parsed = Date.parse(value);\n\tif (\n\t\t!Number.isSafeInteger(parsed) ||\n\t\tnew Date(parsed).toISOString() !== value\n\t) {\n\t\tthrow new Error(`${field} is not a fixed UTC RFC3339 timestamp`);\n\t}\n\treturn parsed;\n}\n\nfunction assertResultTiming(input: {\n\tstarted_at: string;\n\tcompleted_at: string;\n}): void {\n\tif (\n\t\tfixedTimestampMs(input.completed_at, \"completed_at\") <\n\t\tfixedTimestampMs(input.started_at, \"started_at\")\n\t) {\n\t\tthrow new Error(\"completed_at precedes started_at\");\n\t}\n}\n\nconst ajv = new Ajv2020({ allErrors: true, strict: true });\najv.addSchema(archiveSelectionSchema);\najv.addSchema(promotionReceiptSchema);\n\nconst validateBackfillResultV2 = ajv.compile(backfillResultV2Schema);\nconst validateExportRequest = ajv.compile(exportRequestSchema);\nconst validateExportResult = ajv.compile(exportResultSchema);\nconst validateProductPin = ajv.compile(productPinSchema);\n\nexport const backfillResultV2Codec = codec<BackfillJobResultV2Wire>(\n\tvalidateBackfillResultV2,\n\t(result) => {\n\t\tassertDocumentSha256(result, \"result_sha256\");\n\t\tassertResultTiming(result);\n\t\tif (\n\t\t\tresult.capability_policy.policy_id !== CAPABILITY_POLICY.policy_id ||\n\t\t\tresult.capability_policy.policy_sha256 !==\n\t\t\t\tCAPABILITY_POLICY.policy_sha256 ||\n\t\t\tresult.resource_policy.policy_id !== RESOURCE_POLICY.policy_id ||\n\t\t\tresult.resource_policy.policy_sha256 !== RESOURCE_POLICY.policy_sha256\n\t\t) {\n\t\t\tthrow new Error(\"backfill result requires the current policy tuple\");\n\t\t}\n\t\tif (\n\t\t\tresult.schema_manifest_sha256 !==\n\t\t\tPREPARATION_SCHEMA_MANIFEST_V3.manifest_sha256\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"backfill result schema manifest identity is not current\",\n\t\t\t);\n\t\t}\n\t\tif (result.outcome.selection) {\n\t\t\tarchiveSelectionCodec.decode(result.outcome.selection);\n\t\t}\n\t\tif (result.outcome.receipt) {\n\t\t\tconst receipt = promotionReceiptCodec.decode(result.outcome.receipt);\n\t\t\tif (!promotionReceiptMatchesCurrentPolicies(receipt)) {\n\t\t\t\tthrow new Error(\"backfill result receipt is not current-qualified\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\treceipt.effective_policies.capability_policy.policy_id !==\n\t\t\t\t\tresult.capability_policy.policy_id ||\n\t\t\t\treceipt.effective_policies.capability_policy.policy_sha256 !==\n\t\t\t\t\tresult.capability_policy.policy_sha256 ||\n\t\t\t\treceipt.effective_policies.resource_policy.policy_id !==\n\t\t\t\t\tresult.resource_policy.policy_id ||\n\t\t\t\treceipt.effective_policies.resource_policy.policy_sha256 !==\n\t\t\t\t\tresult.resource_policy.policy_sha256\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"backfill result and receipt policy identities disagree\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tresult.outcome.status === \"promoted\" &&\n\t\t\t(!result.outcome.selection || !result.outcome.receipt)\n\t\t) {\n\t\t\tthrow new Error(\"promoted outcome requires selection and receipt\");\n\t\t}\n\t\tif (\n\t\t\tresult.outcome.status === \"already_covered\" &&\n\t\t\t!result.outcome.selection\n\t\t) {\n\t\t\tthrow new Error(\"already_covered outcome requires selection\");\n\t\t}\n\t\tif (\n\t\t\t(result.outcome.status === \"already_covered\" ||\n\t\t\t\tresult.outcome.status === \"promoted\") &&\n\t\t\tresult.outcome.selection?.bundles.some(\n\t\t\t\t(bundle) => bundle.capture_origin === \"vendor_historical_backfill\",\n\t\t\t) &&\n\t\t\t!result.outcome.receipt\n\t\t) {\n\t\t\tthrow new Error(\"successful vendor evidence requires a current receipt\");\n\t\t}\n\t\tif (\n\t\t\t(result.outcome.status === \"already_covered\" ||\n\t\t\t\tresult.outcome.status === \"promoted\") &&\n\t\t\tresult.outcome.selection &&\n\t\t\tresult.outcome.receipt\n\t\t) {\n\t\t\tconst selectedVendorReceiptIds = new Set(\n\t\t\t\tresult.outcome.selection.bundles\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(bundle) => bundle.capture_origin === \"vendor_historical_backfill\",\n\t\t\t\t\t)\n\t\t\t\t\t.map((bundle) => bundle.qualification?.receipt_id),\n\t\t\t);\n\t\t\tif (\n\t\t\t\tselectedVendorReceiptIds.size !== 1 ||\n\t\t\t\t!selectedVendorReceiptIds.has(result.outcome.receipt.receipt_id) ||\n\t\t\t\tresult.outcome.selection.receipt_ids.length !== 1 ||\n\t\t\t\tresult.outcome.selection.receipt_ids[0] !==\n\t\t\t\t\tresult.outcome.receipt.receipt_id\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"successful vendor selection and current receipt lineage disagree\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t},\n);\n\nexport const canonicalOrderBookExportRequestCodec =\n\tcodec<CanonicalOrderBookExportRequestWire>(\n\t\tvalidateExportRequest,\n\t\t(request) => {\n\t\t\tconst selection = archiveSelectionCodec.decode(request.selection);\n\t\t\tif (\n\t\t\t\tselection.coverage_class !== \"complete\" ||\n\t\t\t\tselection.selected_intervals.length === 0\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"export requires a complete non-empty archive selection\",\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t);\n\nexport const canonicalOrderBookExportResultCodec =\n\tcodec<CanonicalOrderBookExportResultWire>(validateExportResult, (result) => {\n\t\tassertDocumentSha256(result, \"result_sha256\");\n\t\tassertResultTiming(result);\n\t\tconst artifacts = result.outcome.artifacts;\n\t\tif (\n\t\t\tartifacts &&\n\t\t\t(artifacts.levels.projection_schema_id !==\n\t\t\t\tORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_ID ||\n\t\t\t\tartifacts.levels.projection_schema_sha256 !==\n\t\t\t\t\tORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_SHA256 ||\n\t\t\t\tartifacts.summary.projection_schema_id !==\n\t\t\t\t\tORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_ID ||\n\t\t\t\tartifacts.summary.projection_schema_sha256 !==\n\t\t\t\t\tORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_SHA256)\n\t\t) {\n\t\t\tthrow new Error(\"export artifact projection identity is inconsistent\");\n\t\t}\n\t});\n\nexport const preparationProductPinCodec = codec<PreparationProductPinWire>(\n\tvalidateProductPin,\n\t(pin) => {\n\t\tconst expectedExecutables = new Map([\n\t\t\t[\n\t\t\t\t\"market-data-vendor-backfill\",\n\t\t\t\t{\n\t\t\t\t\tproductVersion: \"market-data-vendor-backfill/v1\",\n\t\t\t\t\trelativePath: \"dist/commands/market-data-vendor-backfill.js\",\n\t\t\t\t},\n\t\t\t],\n\t\t\t[\n\t\t\t\t\"cex-canonical-orderbook-export\",\n\t\t\t\t{\n\t\t\t\t\tproductVersion: \"cex-canonical-orderbook-export/v2\",\n\t\t\t\t\trelativePath: \"dist/commands/cex-canonical-orderbook-export.js\",\n\t\t\t\t},\n\t\t\t],\n\t\t] as const);\n\t\tif (pin.executables.length !== expectedExecutables.size) {\n\t\t\tthrow new Error(\"product pin must identify both preparation executables\");\n\t\t}\n\t\tfor (const executable of pin.executables) {\n\t\t\tconst expected = expectedExecutables.get(executable.product_id);\n\t\t\tif (\n\t\t\t\t!expected ||\n\t\t\t\texecutable.product_version !== expected.productVersion ||\n\t\t\t\texecutable.relative_path !== expected.relativePath\n\t\t\t) {\n\t\t\t\tthrow new Error(\"product pin executable identity is inconsistent\");\n\t\t\t}\n\t\t\tif (\n\t\t\t\texecutable.relative_path.split(/[\\\\/]+/u).includes(\"..\") ||\n\t\t\t\texecutable.relative_path.startsWith(\"/\")\n\t\t\t) {\n\t\t\t\tthrow new Error(\"product pin executable path is unsafe\");\n\t\t\t}\n\t\t}\n\t\tif (\n\t\t\tpin.schema_manifest.schema_id !==\n\t\t\t\tPREPARATION_SCHEMA_MANIFEST_V3.schema_id ||\n\t\t\tpin.schema_manifest.manifest_sha256 !==\n\t\t\t\tPREPARATION_SCHEMA_MANIFEST_V3.manifest_sha256\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"product pin schema manifest identity does not match the preparation manifest\",\n\t\t\t);\n\t\t}\n\t\tconst actualSchemas = pin.schema_pins\n\t\t\t.map(({ schema_id, schema_sha256 }) => `${schema_id}:${schema_sha256}`)\n\t\t\t.sort();\n\t\tconst expectedSchemas = PREPARATION_SCHEMA_ARTIFACTS.map(\n\t\t\t({ schema_id, schema_sha256 }) => `${schema_id}:${schema_sha256}`,\n\t\t).sort();\n\t\tif (JSON.stringify(actualSchemas) !== JSON.stringify(expectedSchemas)) {\n\t\t\tthrow new Error(\n\t\t\t\t\"product pin schema identities do not match the preparation manifest\",\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tpin.capability_policy.policy_id !== CAPABILITY_POLICY.policy_id ||\n\t\t\tpin.capability_policy.policy_sha256 !== CAPABILITY_POLICY.policy_sha256 ||\n\t\t\tpin.source_tape_capability.policy_id !==\n\t\t\t\tSOURCE_TAPE_CAPABILITY.policy_id ||\n\t\t\tpin.source_tape_capability.policy_sha256 !==\n\t\t\t\tSOURCE_TAPE_CAPABILITY.policy_sha256 ||\n\t\t\tpin.resource_policy.policy_id !== RESOURCE_POLICY.policy_id ||\n\t\t\tpin.resource_policy.policy_sha256 !== RESOURCE_POLICY.policy_sha256\n\t\t) {\n\t\t\tthrow new Error(\"product pin policy identities are inconsistent\");\n\t\t}\n\t\tconst expectedOperations = [\n\t\t\t{\n\t\t\t\tsymbol: \"runMarketDataSourceTape\",\n\t\t\t\toperation_id: \"market-data-source-tape/v1\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tsymbol: \"runMarketDataRequiredClockQualification\",\n\t\t\t\toperation_id: \"market-data-required-clock-qualification/v1\",\n\t\t\t},\n\t\t];\n\t\tif (\n\t\t\tpin.preparation_library.exported_subpath !==\n\t\t\t\t\"@usherlabs/cex-broker/market-data-preparation\" ||\n\t\t\tJSON.stringify(pin.preparation_library.operations) !==\n\t\t\t\tJSON.stringify(expectedOperations)\n\t\t) {\n\t\t\tthrow new Error(\"product pin preparation-library ABI is inconsistent\");\n\t\t}\n\t},\n);\n\nexport function finalizeBackfillResultV2(\n\tcontent: Omit<BackfillJobResultV2Wire, \"result_sha256\">,\n): BackfillJobResultV2Wire {\n\treturn backfillResultV2Codec.decode({\n\t\t...content,\n\t\tresult_sha256: documentSha256(content, \"result_sha256\"),\n\t});\n}\n\nexport function finalizeCanonicalOrderBookExportResult(\n\tcontent: Omit<CanonicalOrderBookExportResultWire, \"result_sha256\">,\n): CanonicalOrderBookExportResultWire {\n\treturn canonicalOrderBookExportResultCodec.decode({\n\t\t...content,\n\t\tresult_sha256: documentSha256(content, \"result_sha256\"),\n\t});\n}\n\nconst preparationSchemaArtifacts = [\n\t[\"schemas/backfill-request-v1.schema.json\", requestSchema],\n\t[\"schemas/backfill-result-v2.schema.json\", backfillResultV2Schema],\n\t[\"schemas/required-clock-v1.schema.json\", requiredClockSchema],\n\t[\"schemas/archive-selection-v1.schema.json\", archiveSelectionSchema],\n\t[\"schemas/promotion-receipt-v1.schema.json\", promotionReceiptSchema],\n\t[\n\t\t\"schemas/canonical-orderbook-export-request-v1.schema.json\",\n\t\texportRequestSchema,\n\t],\n\t[\n\t\t\"schemas/canonical-orderbook-export-result-v2.schema.json\",\n\t\texportResultSchema,\n\t],\n\t[\"schemas/preparation-product-pin-v2.schema.json\", productPinSchema],\n\t[\n\t\t\"schemas/order-book-levels-parquet-projection-v1.schema.json\",\n\t\tlevelsProjectionSchema,\n\t],\n\t[\n\t\t\"schemas/order-book-depth-summary-parquet-projection-v1.schema.json\",\n\t\tdepthSummaryProjectionSchema,\n\t],\n\t[\n\t\t\"schemas/source-forensics-ledger-v1.schema.json\",\n\t\tsourceForensicsLedgerSchema,\n\t],\n\t[\n\t\t\"schemas/source-qualification-record-v1.schema.json\",\n\t\tsourceQualificationRecordSchema,\n\t],\n] as const;\n\nexport const PREPARATION_SCHEMA_ARTIFACTS = Object.freeze(\n\tpreparationSchemaArtifacts.map(([path, schema]) =>\n\t\tObject.freeze({\n\t\t\tschema_id: schema.$id,\n\t\t\tpath,\n\t\t\tschema_sha256: jcsSha256(schema),\n\t\t\tschema,\n\t\t}),\n\t),\n);\n\nconst preparationSchemaManifestContent = {\n\tschema_id: PREPARATION_SCHEMA_MANIFEST_V3_ID,\n\tartifacts: PREPARATION_SCHEMA_ARTIFACTS.map(\n\t\t({ schema_id, path, schema_sha256 }) => ({\n\t\t\tschema_id,\n\t\t\tpath,\n\t\t\tschema_sha256,\n\t\t}),\n\t),\n};\n\nexport const PREPARATION_SCHEMA_MANIFEST_V3 = Object.freeze({\n\t...preparationSchemaManifestContent,\n\tmanifest_sha256: jcsSha256(preparationSchemaManifestContent),\n});\n\nexport const ORDER_BOOK_LEVELS_PARQUET_PROJECTION = Object.freeze(\n\tlevelsProjectionSchema,\n);\nexport const ORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION = Object.freeze(\n\tdepthSummaryProjectionSchema,\n);\nexport const ORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_SHA256 = jcsSha256(\n\tlevelsProjectionSchema,\n);\nexport const ORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_SHA256 =\n\tjcsSha256(depthSummaryProjectionSchema);\n",
|
|
187
|
+
"import { CONFORMANCE_FIXTURES as V1_CONFORMANCE_FIXTURES } from \"../market-data-vendor-backfill/conformance-fixtures\";\nimport { jcsSha256 } from \"../market-data-vendor-backfill/identity\";\nimport {\n\tCAPABILITY_POLICY,\n\tEFFECTIVE_ACQUISITION_POLICY_PIN,\n\tEFFECTIVE_ADAPTER_POLICY_PIN,\n\tRESOURCE_POLICY,\n} from \"../market-data-vendor-backfill/manifests\";\nimport { SOURCE_TAPE_CAPABILITY } from \"../source-tape\";\nimport {\n\tBACKFILL_RESULT_V2_SCHEMA_ID,\n\tCANONICAL_ORDERBOOK_EXPORT_REQUEST_SCHEMA_ID,\n\tCANONICAL_ORDERBOOK_EXPORT_RESULT_SCHEMA_ID,\n\tcanonicalOrderBookExportRequestCodec,\n\tfinalizeBackfillResultV2,\n\tfinalizeCanonicalOrderBookExportResult,\n\tORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_ID,\n\tORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_SHA256,\n\tORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_ID,\n\tORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_SHA256,\n\tPREPARATION_PRODUCT_PIN_SCHEMA_ID,\n\tPREPARATION_SCHEMA_ARTIFACTS,\n\tPREPARATION_SCHEMA_MANIFEST_V3,\n\tpreparationProductPinCodec,\n} from \"./contracts\";\n\nconst backfillProducer = {\n\tproduct_id: \"market-data-vendor-backfill\" as const,\n\tproduct_version: \"market-data-vendor-backfill/v1\" as const,\n\tpackage: {\n\t\tname: \"@usherlabs/cex-broker\" as const,\n\t\tversion: \"0.2.50\",\n\t\tgit_head: \"a\".repeat(40),\n\t},\n\texecutable_sha256: \"b\".repeat(64),\n\truntime: { name: \"node\" as const, version: \"22.22.2\" },\n};\n\nconst exportProducer = {\n\t...backfillProducer,\n\tproduct_id: \"cex-canonical-orderbook-export\" as const,\n\tproduct_version: \"cex-canonical-orderbook-export/v2\" as const,\n\texecutable_sha256: \"c\".repeat(64),\n};\n\nconst canonicalOrderBookExportRequest =\n\tcanonicalOrderBookExportRequestCodec.decode({\n\t\tschema_id: CANONICAL_ORDERBOOK_EXPORT_REQUEST_SCHEMA_ID,\n\t\trequest_id: \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f121\",\n\t\ttarget: { environment: \"production\", cluster: \"cex-archive-primary\" },\n\t\tselection: V1_CONFORMANCE_FIXTURES.documents.archive_selection,\n\t\tdepth: 20,\n\t\tconstruction_mode: \"sampled_top_n_snapshot\",\n\t\tcanonical_schema_version: \"1.0.0\",\n\t\tchecksum_algorithm: \"sha256-canonical-json-v1\",\n\t});\n\nconst canonicalOrderBookExportResult = finalizeCanonicalOrderBookExportResult({\n\tschema_id: CANONICAL_ORDERBOOK_EXPORT_RESULT_SCHEMA_ID,\n\tjob_id: \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f122\",\n\trequest_file_sha256: \"d\".repeat(64),\n\tproducer: exportProducer,\n\tstarted_at: \"2026-08-20T12:00:01.000Z\",\n\tcompleted_at: \"2026-08-20T12:00:03.000Z\",\n\toutcome: {\n\t\tstatus: \"exported\",\n\t\treason_code: \"qualified_selection_exported\",\n\t\treason_subcode: null,\n\t\trequest_id: canonicalOrderBookExportRequest.request_id,\n\t\ttarget: canonicalOrderBookExportRequest.target,\n\t\tselection_sha256:\n\t\t\tcanonicalOrderBookExportRequest.selection.selection_sha256,\n\t\tquery_sha256: \"e\".repeat(64),\n\t\tquery_segments:\n\t\t\tcanonicalOrderBookExportRequest.selection.selected_intervals,\n\t\tpromotion_receipt_ids:\n\t\t\tcanonicalOrderBookExportRequest.selection.receipt_ids,\n\t\tartifacts: {\n\t\t\tlevels: {\n\t\t\t\tfile_name: \"order_book_levels.parquet\",\n\t\t\t\trows: 40,\n\t\t\t\tbytes: 4_096,\n\t\t\t\tsha256: \"f\".repeat(64),\n\t\t\t\tprojection_schema_id: ORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_ID,\n\t\t\t\tprojection_schema_sha256:\n\t\t\t\t\tORDER_BOOK_LEVELS_PARQUET_PROJECTION_SCHEMA_SHA256,\n\t\t\t},\n\t\t\tsummary: {\n\t\t\t\tfile_name: \"order_book_depth_summary.parquet\",\n\t\t\t\trows: 1,\n\t\t\t\tbytes: 2_048,\n\t\t\t\tsha256: \"1\".repeat(64),\n\t\t\t\tprojection_schema_id:\n\t\t\t\t\tORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_ID,\n\t\t\t\tprojection_schema_sha256:\n\t\t\t\t\tORDER_BOOK_DEPTH_SUMMARY_PARQUET_PROJECTION_SCHEMA_SHA256,\n\t\t\t},\n\t\t},\n\t\tdiagnostics: {},\n\t},\n});\n\nconst backfillResult = finalizeBackfillResultV2({\n\tschema_id: BACKFILL_RESULT_V2_SCHEMA_ID,\n\tjob_id: \"018f0f4d-7b32-7a30-8f4d-1d2a6e40f120\",\n\trequest_file_sha256: \"7\".repeat(64),\n\tschema_manifest_sha256: PREPARATION_SCHEMA_MANIFEST_V3.manifest_sha256,\n\tproducer: backfillProducer,\n\tcapability_policy: {\n\t\tpolicy_id: CAPABILITY_POLICY.policy_id,\n\t\tpolicy_sha256: CAPABILITY_POLICY.policy_sha256,\n\t},\n\tresource_policy: {\n\t\tpolicy_id: RESOURCE_POLICY.policy_id,\n\t\tpolicy_sha256: RESOURCE_POLICY.policy_sha256,\n\t},\n\tstarted_at: \"2026-08-20T12:00:01.000Z\",\n\tcompleted_at: \"2026-08-20T12:00:03.000Z\",\n\toutcome: {\n\t\tstatus: \"already_covered\",\n\t\treason_code: \"qualified_coverage_complete\",\n\t\treason_subcode: null,\n\t\trequest_id: V1_CONFORMANCE_FIXTURES.documents.request.request_id,\n\t\tidempotency_key: V1_CONFORMANCE_FIXTURES.documents.request.idempotency_key,\n\t\ttarget: V1_CONFORMANCE_FIXTURES.documents.request.target,\n\t\tselection: V1_CONFORMANCE_FIXTURES.documents.archive_selection,\n\t\treceipt: V1_CONFORMANCE_FIXTURES.documents.promotion_receipt,\n\t\tdiagnostics: {},\n\t},\n});\n\nconst productPin = preparationProductPinCodec.decode({\n\tschema_id: PREPARATION_PRODUCT_PIN_SCHEMA_ID,\n\tpackage: {\n\t\tname: \"@usherlabs/cex-broker\",\n\t\tversion: \"0.2.50\",\n\t\tregistry_tarball_url:\n\t\t\t\"https://registry.npmjs.org/@usherlabs/cex-broker/-/cex-broker-0.2.50.tgz\",\n\t\tintegrity: \"sha512-YQ==\",\n\t\ttarball_sha256: \"2\".repeat(64),\n\t\tnpm_git_head: \"a\".repeat(40),\n\t},\n\texecutables: [\n\t\t{\n\t\t\tproduct_id: \"market-data-vendor-backfill\",\n\t\t\tproduct_version: \"market-data-vendor-backfill/v1\",\n\t\t\trelative_path: \"dist/commands/market-data-vendor-backfill.js\",\n\t\t\texecutable_sha256: backfillProducer.executable_sha256,\n\t\t},\n\t\t{\n\t\t\tproduct_id: \"cex-canonical-orderbook-export\",\n\t\t\tproduct_version: \"cex-canonical-orderbook-export/v2\",\n\t\t\trelative_path: \"dist/commands/cex-canonical-orderbook-export.js\",\n\t\t\texecutable_sha256: exportProducer.executable_sha256,\n\t\t},\n\t],\n\tschema_manifest: {\n\t\tschema_id: PREPARATION_SCHEMA_MANIFEST_V3.schema_id,\n\t\tmanifest_sha256: PREPARATION_SCHEMA_MANIFEST_V3.manifest_sha256,\n\t\trelative_path: \"dist/market-data-preparation/schema-manifest.json\",\n\t},\n\tschema_pins: PREPARATION_SCHEMA_ARTIFACTS.map(\n\t\t({ schema_id, schema_sha256 }) => ({ schema_id, schema_sha256 }),\n\t),\n\tcapability_policy: {\n\t\tpolicy_id: CAPABILITY_POLICY.policy_id,\n\t\tpolicy_sha256: CAPABILITY_POLICY.policy_sha256,\n\t},\n\tsource_tape_capability: {\n\t\tpolicy_id: SOURCE_TAPE_CAPABILITY.policy_id,\n\t\tpolicy_sha256: SOURCE_TAPE_CAPABILITY.policy_sha256,\n\t},\n\tresource_policy: {\n\t\tpolicy_id: RESOURCE_POLICY.policy_id,\n\t\tpolicy_sha256: RESOURCE_POLICY.policy_sha256,\n\t},\n\tpreparation_library: {\n\t\texported_subpath: \"@usherlabs/cex-broker/market-data-preparation\",\n\t\truntime_entry_sha256: \"3\".repeat(64),\n\t\tdeclaration_sha256: \"4\".repeat(64),\n\t\toperations: [\n\t\t\t{\n\t\t\t\tsymbol: \"runMarketDataSourceTape\",\n\t\t\t\toperation_id: \"market-data-source-tape/v1\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tsymbol: \"runMarketDataRequiredClockQualification\",\n\t\t\t\toperation_id: \"market-data-required-clock-qualification/v1\",\n\t\t\t},\n\t\t],\n\t},\n});\n\nconst libraryOperations = Object.freeze({\n\trequired_clock_qualification: Object.freeze({\n\t\toperation_id: \"market-data-required-clock-qualification/v1\" as const,\n\t\tattempt_id: \"arb-usdt-required-clock-conformance\",\n\t\trequest: V1_CONFORMANCE_FIXTURES.documents.request,\n\t\trequired_clock: V1_CONFORMANCE_FIXTURES.documents.required_clock,\n\t\tartifacts: Object.freeze({\n\t\t\tledger_file_name: \"required-clock-ledger.json\",\n\t\t\tqualification_record_file_name: \"required-clock-qualification.json\",\n\t\t}),\n\t}),\n\tsource_tape: Object.freeze({\n\t\toperation_id: \"market-data-source-tape/v1\" as const,\n\t\tattempt_id: \"arb-usdt-source-tape-conformance\",\n\t\trequest_id: V1_CONFORMANCE_FIXTURES.documents.request.request_id,\n\t\tscope: V1_CONFORMANCE_FIXTURES.documents.request.scope,\n\t\twindow: V1_CONFORMANCE_FIXTURES.documents.request.window,\n\t\tdepth: 100 as const,\n\t\ttarget: Object.freeze({\n\t\t\tenvironment: \"sandbox\" as const,\n\t\t\tcluster: \"cex-archive-local\" as const,\n\t\t}),\n\t\tproduction_authorization_id:\n\t\t\tV1_CONFORMANCE_FIXTURES.documents.request.production_authorization_id,\n\t\texpected_canonical_schema:\n\t\t\tV1_CONFORMANCE_FIXTURES.documents.request.expected_canonical_schema,\n\t\tproduct_pins: Object.freeze({\n\t\t\tsource_tape_capability: Object.freeze({\n\t\t\t\tpolicy_id: SOURCE_TAPE_CAPABILITY.policy_id,\n\t\t\t\tpolicy_sha256: SOURCE_TAPE_CAPABILITY.policy_sha256,\n\t\t\t}),\n\t\t\tresource_policy: Object.freeze({\n\t\t\t\tpolicy_id: RESOURCE_POLICY.policy_id,\n\t\t\t\tpolicy_sha256: RESOURCE_POLICY.policy_sha256,\n\t\t\t}),\n\t\t\tadapter_policy: EFFECTIVE_ADAPTER_POLICY_PIN,\n\t\t\tacquisition_policy: EFFECTIVE_ACQUISITION_POLICY_PIN,\n\t\t}),\n\t\tartifacts: Object.freeze({\n\t\t\tledger_file_name: \"source-tape-ledger.json\",\n\t\t\tqualification_record_file_name: \"source-tape-qualification.json\",\n\t\t\texporter_result_file_name: \"source-tape-export-result.json\",\n\t\t}),\n\t}),\n});\n\nexport const PREPARATION_CONFORMANCE_FIXTURES = Object.freeze({\n\tfixture_id: \"cex-market-data-preparation-conformance/v3\",\n\tdocuments: Object.freeze({\n\t\tbackfill_result: backfillResult,\n\t\tcanonical_orderbook_export_request: canonicalOrderBookExportRequest,\n\t\tcanonical_orderbook_export_result: canonicalOrderBookExportResult,\n\t\tpreparation_product_pin: productPin,\n\t\tlibrary_operations: libraryOperations,\n\t}),\n\tidentities: Object.freeze({\n\t\tmanifest_sha256: PREPARATION_SCHEMA_MANIFEST_V3.manifest_sha256,\n\t\tbackfill_result_sha256: backfillResult.result_sha256,\n\t\tselection_sha256:\n\t\t\tcanonicalOrderBookExportRequest.selection.selection_sha256,\n\t\texport_result_sha256: canonicalOrderBookExportResult.result_sha256,\n\t\tproduct_pin_sha256: jcsSha256(productPin),\n\t\tlibrary_operations_sha256: jcsSha256(libraryOperations),\n\t}),\n});\n",
|
|
188
|
+
"import { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport Ajv2020, { type ErrorObject } from \"ajv/dist/2020.js\";\nimport {\n\tSOURCE_FORENSICS_LEDGER_SCHEMA_ID,\n\tSOURCE_QUALIFICATION_RECORD_SCHEMA_ID,\n} from \"./market-data-preparation/contracts\";\nimport {\n\tassertSidecarBasename,\n\tatomicWriteJsonResult,\n\twriteExclusiveDurableFile,\n} from \"./market-data-preparation/file-job\";\nimport sourceForensicsLedgerSchema from \"./market-data-preparation/schemas/source-forensics-ledger.schema.json\" with {\n\ttype: \"json\",\n};\nimport sourceQualificationRecordSchema from \"./market-data-preparation/schemas/source-qualification-record.schema.json\" with {\n\ttype: \"json\",\n};\nimport type {\n\tCanonicalScopeWire,\n\tLowercaseUuid,\n\tRequiredClockWire,\n\tSha256Hex,\n} from \"./market-data-vendor-backfill/contracts\";\nimport { requiredClockCodec } from \"./market-data-vendor-backfill/contracts\";\nimport {\n\tassertDocumentSha256,\n\tdocumentSha256,\n\tjcsCanonicalize,\n} from \"./market-data-vendor-backfill/identity\";\nimport type { PolicyPin } from \"./market-data-vendor-backfill/manifests\";\n\nexport const SOURCE_FORENSICS_MAX_RECORDS = 100_000;\nexport const SOURCE_FORENSICS_MAX_CANONICAL_JSON_BYTES = 67_108_864;\nexport const SOURCE_FORENSICS_RECORD_KINDS = [\n\t\"sequence_discontinuity\",\n\t\"unanchored_target_interval\",\n\t\"stale_target_interval\",\n\t\"future_state_interval\",\n\t\"provider_object_checksum_conflict\",\n] as const;\nexport const SOURCE_FORENSICS_CLASSIFICATIONS = [\n\t\"stable_object_corruption\",\n\t\"mutable_provider_bytes\",\n\t\"provider_row_loss\",\n\t\"object_boundary_order_defect\",\n\t\"valid_inactive_market_state\",\n\t\"unresolved\",\n] as const;\nexport const SOURCE_FORENSICS_OPERATION_KINDS = [\n\t\"required_clock_qualification\",\n\t\"source_tape\",\n] as const;\n\nexport type SourceForensicsRecordKind =\n\t(typeof SOURCE_FORENSICS_RECORD_KINDS)[number];\nexport type SourceForensicsClassification =\n\t(typeof SOURCE_FORENSICS_CLASSIFICATIONS)[number];\nexport type SourceObjectEvidence = {\n\tidentity: string;\n\tchecksums: Sha256Hex[];\n\tattempt_count: number;\n\tquarantined: boolean;\n};\nexport type SourceAnchorEvidence = {\n\tevent_time_ms: number;\n\tsequence: string;\n\tobject_identity: string;\n\tobject_checksum: Sha256Hex;\n};\nexport type SourceTargetInterval = {\n\tstart_target_time_ms: number;\n\tend_target_time_ms_exclusive: number;\n\ttarget_count: number;\n};\nexport type SourceLagDistribution = {\n\tlag_1000_ms: number;\n\tlag_2000_ms: number;\n\tlag_5000_ms: number;\n\tlag_10000_ms: number;\n\tlag_30000_ms: number;\n\tlag_60000_ms: number;\n};\nexport type SourceForensicsRecordWire = {\n\trecord_sha256: Sha256Hex;\n\tkind: SourceForensicsRecordKind;\n\tscope: CanonicalScopeWire;\n\tprovider_objects: SourceObjectEvidence[];\n\tprevious_anchor: SourceAnchorEvidence | null;\n\tnext_anchor: SourceAnchorEvidence | null;\n\ttarget_interval: SourceTargetInterval | null;\n\tlag_distribution: SourceLagDistribution | null;\n\tsequence: null | {\n\t\texpected_previous: string;\n\t\tobserved_previous: string;\n\t\tobserved_final: string;\n\t\tevent_time_ms: number;\n\t};\n\tclassification: SourceForensicsClassification | null;\n\tadapter_version: string;\n};\n\nexport const SOURCE_TARGET_DISPOSITIONS = [\n\t\"fresh_within_bound\",\n\t\"valid_inactive_market_state\",\n\t\"disqualifying\",\n] as const;\nexport type SourceTargetDisposition =\n\t(typeof SOURCE_TARGET_DISPOSITIONS)[number];\nexport type SourceTargetDispositionWire = {\n\ttarget_id: LowercaseUuid;\n\ttarget_time_ms: number;\n\tdisposition: SourceTargetDisposition;\n\tsource_time_ms: number | null;\n\tasof_age_ms: number | null;\n\trecord_sha256s: Sha256Hex[];\n};\n\nexport type SourceInventoryInterval = {\n\tstart_time_ms: number;\n\tend_time_ms_exclusive: number;\n};\n\ntype SourceForensicsSummary = {\n\tretained_record_count: number;\n\ttotal_record_count: number;\n\tomitted_record_count: number;\n\taffected_target_count: number;\n\tunresolved_record_count: number;\n};\n\ntype SourceForensicsLedgerBase = {\n\tschema_id: typeof SOURCE_FORENSICS_LEDGER_SCHEMA_ID;\n\tledger_sha256: Sha256Hex;\n\toperation_kind: (typeof SOURCE_FORENSICS_OPERATION_KINDS)[number];\n\tnormalized_invocation_sha256: Sha256Hex;\n\trequest_id: LowercaseUuid;\n\tscope: CanonicalScopeWire;\n\twindow: SourceInventoryInterval;\n\teffective_policies: {\n\t\tcapability_policy: PolicyPin;\n\t\tresource_policy: PolicyPin;\n\t\tadapter_policy: PolicyPin;\n\t\tacquisition_policy: PolicyPin;\n\t};\n\tprovider_object_inventory: {\n\t\texpected_identities: string[];\n\t\tobserved_identities: string[];\n\t\texpected_selected_intervals: SourceInventoryInterval[];\n\t\tobserved_selected_intervals: SourceInventoryInterval[];\n\t\tcomplete: boolean;\n\t};\n\tprovider_objects: SourceObjectEvidence[];\n\trecords: SourceForensicsRecordWire[];\n\tsummary: SourceForensicsSummary;\n\tlimits: {\n\t\tmax_records: typeof SOURCE_FORENSICS_MAX_RECORDS;\n\t\tmax_canonical_json_bytes: typeof SOURCE_FORENSICS_MAX_CANONICAL_JSON_BYTES;\n\t};\n\tcomplete: boolean;\n\tincomplete_reason: \"forensics_evidence_bound_exceeded\" | null;\n};\n\nexport type RequiredClockSourceForensicsLedgerWire =\n\tSourceForensicsLedgerBase & {\n\t\toperation_kind: \"required_clock_qualification\";\n\t\trequired_clock: {\n\t\t\tclock_id: LowercaseUuid;\n\t\t\tclock_sha256: Sha256Hex;\n\t\t\tevent_count: number;\n\t\t};\n\t\ttarget_dispositions: SourceTargetDispositionWire[];\n\t\tsummary: SourceForensicsSummary & {\n\t\t\tdisposition_complete: boolean;\n\t\t\tfresh_target_count: number;\n\t\t\tinactive_target_count: number;\n\t\t\tdisqualifying_target_count: number;\n\t\t\tomitted_target_disposition_count: number;\n\t\t};\n\t};\n\nexport type SourceTapeForensicsLedgerWire = SourceForensicsLedgerBase & {\n\toperation_kind: \"source_tape\";\n\tsource_tape: {\n\t\tproduct_id: \"market-data-source-tape\";\n\t\tproduct_version: \"market-data-source-tape/v1\";\n\t\tstate_count: number;\n\t};\n};\n\nexport type SourceForensicsLedgerWire =\n\t| RequiredClockSourceForensicsLedgerWire\n\t| SourceTapeForensicsLedgerWire;\n\ntype SourceQualificationLedgerDescriptor = {\n\tschema_id: typeof SOURCE_FORENSICS_LEDGER_SCHEMA_ID;\n\tfile_name: string;\n\tsha256: Sha256Hex;\n\tbytes: number;\n\tretained_record_count: number;\n\ttotal_record_count: number;\n\tomitted_record_count: number;\n\tcomplete: boolean;\n};\n\ntype SourceQualificationRecordBase = {\n\tschema_id: typeof SOURCE_QUALIFICATION_RECORD_SCHEMA_ID;\n\trecord_sha256: Sha256Hex;\n\tcreated_at: string;\n\toperation_kind: (typeof SOURCE_FORENSICS_OPERATION_KINDS)[number];\n\tnormalized_invocation_sha256: Sha256Hex;\n\trequest_id: LowercaseUuid;\n\tscope: CanonicalScopeWire;\n\tledger: SourceQualificationLedgerDescriptor;\n\tsource_reconstruction_accepted: boolean;\n\tsource_event_enumeration_eligible: boolean;\n};\n\nexport type RequiredClockSourceQualificationRecordWire =\n\tSourceQualificationRecordBase & {\n\t\toperation_kind: \"required_clock_qualification\";\n\t\tledger: SourceQualificationLedgerDescriptor & {\n\t\t\tdisposition_complete: boolean;\n\t\t\tfresh_target_count: number;\n\t\t\tinactive_target_count: number;\n\t\t\tdisqualifying_target_count: number;\n\t\t\tomitted_target_disposition_count: number;\n\t\t};\n\t\tqualified: boolean;\n\t\tsource_partition_complete: boolean;\n\t\toutcome:\n\t\t\t| {\n\t\t\t\t\tstatus: \"success\";\n\t\t\t\t\treason: \"required_clock_qualification_completed\";\n\t\t\t\t\tpartial_evidence: SourceEvidenceDescriptor[];\n\t\t\t\t\texporter_result: null;\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tstatus: \"failure\";\n\t\t\t\t\treason: (typeof REQUIRED_CLOCK_QUALIFICATION_FAILURE_REASONS)[number];\n\t\t\t\t\tpartial_evidence: SourceEvidenceDescriptor[];\n\t\t\t\t\texporter_result: null;\n\t\t\t };\n\t};\n\nexport const REQUIRED_CLOCK_QUALIFICATION_FAILURE_REASONS = [\n\t\"required_clock_input_invalid\",\n\t\"required_clock_capability_unsupported\",\n\t\"required_clock_credentials_missing\",\n\t\"required_clock_acquisition_failed\",\n\t\"required_clock_reconstruction_failed\",\n\t\"required_clock_classification_failed\",\n\t\"required_clock_evidence_incomplete\",\n\t\"required_clock_internal_failure\",\n] as const;\n\nexport const SOURCE_TAPE_FAILURE_REASONS = [\n\t\"source_tape_input_invalid\",\n\t\"source_tape_capability_unsupported\",\n\t\"source_tape_credentials_missing\",\n\t\"source_tape_acquisition_failed\",\n\t\"source_tape_reconstruction_failed\",\n\t\"source_tape_inventory_incomplete\",\n\t\"source_tape_archive_failed\",\n\t\"source_tape_promotion_failed\",\n\t\"source_tape_selection_failed\",\n\t\"source_tape_export_failed\",\n\t\"source_tape_internal_failure\",\n] as const;\n\ntype SourceTapeQualificationSuccessOutcome = {\n\tstatus: \"success\";\n\treason: \"source_tape_prepared\";\n\tpartial_evidence: SourceEvidenceDescriptor[];\n\texporter_result: SourceTapeExporterResultDescriptor;\n};\n\ntype SourceTapeQualificationFailureOutcome = {\n\tstatus: \"failure\";\n\treason: (typeof SOURCE_TAPE_FAILURE_REASONS)[number];\n\tpartial_evidence: SourceEvidenceDescriptor[];\n\texporter_result: null;\n};\n\nexport type SourceTapeQualificationRecordWire =\n\tSourceQualificationRecordBase & {\n\t\toperation_kind: \"source_tape\";\n\t\tledger: SourceQualificationLedgerDescriptor & { state_count: number };\n\t\tsource_tape_eligible: boolean;\n\t} & (\n\t\t\t| {\n\t\t\t\t\tinitializer: SourceTapeInitializerDescriptor;\n\t\t\t\t\toutcome: SourceTapeQualificationSuccessOutcome;\n\t\t\t }\n\t\t\t| {\n\t\t\t\t\tinitializer: SourceTapeInitializerDescriptor | null;\n\t\t\t\t\toutcome: SourceTapeQualificationFailureOutcome;\n\t\t\t }\n\t\t);\n\nexport type SourceTapeInitializerDescriptor = {\n\tcanonical_snapshot_id: Sha256Hex;\n\tsource_time_ms: number;\n\tsequence: string;\n\tsemantic_stream_position: 0;\n};\n\nexport type SourceEvidenceDescriptor = {\n\tkind:\n\t\t| \"ledger\"\n\t\t| \"provider_inventory\"\n\t\t| \"selection\"\n\t\t| \"promotion_receipt\"\n\t\t| \"export_result\";\n\tfile_name: string;\n\tsha256: Sha256Hex;\n\tbytes: number;\n};\n\nexport type SourceTapeExporterResultDescriptor = {\n\tschema_id: \"https://schemas.usher.so/cex-canonical-orderbook-export-result/v2\";\n\tfile_name: string;\n\tsha256: Sha256Hex;\n\tbytes: number;\n\tresult_sha256: Sha256Hex;\n};\n\nexport type SourceQualificationRecordWire =\n\t| RequiredClockSourceQualificationRecordWire\n\t| SourceTapeQualificationRecordWire;\n\nfunction describeAjvErrors(errors: ErrorObject[] | null | undefined): string {\n\treturn (errors ?? [])\n\t\t.map((error) => `${error.instancePath || \"/\"} ${error.message}`)\n\t\t.join(\"; \");\n}\n\nconst ajv = new Ajv2020({ allErrors: true, strict: true });\nconst validateLedger = ajv.compile(sourceForensicsLedgerSchema);\nconst validateQualification = ajv.compile(sourceQualificationRecordSchema);\n\nfunction assertSecretFree(value: unknown): void {\n\tconst serialized = JSON.stringify(value).toLowerCase();\n\tfor (const forbidden of [\n\t\t\"api_key\",\n\t\t\"apikey\",\n\t\t\"authorization\",\n\t\t\"bearer \",\n\t\t\"response_body\",\n\t\t\"provider_rows\",\n\t\t\"clickhouse_password\",\n\t\t\"archive_forwarder_token\",\n\t]) {\n\t\tif (serialized.includes(forbidden)) {\n\t\t\tthrow new Error(\"source-forensics evidence contains forbidden material\");\n\t\t}\n\t}\n}\n\nfunction assertAuthoritativeRequiredClock(\n\tledger: RequiredClockSourceForensicsLedgerWire,\n\tclockInput: RequiredClockWire,\n): void {\n\tconst clock = requiredClockCodec.decode(clockInput);\n\tif (\n\t\tledger.required_clock.clock_id !== clock.clock_id ||\n\t\tledger.required_clock.clock_sha256 !== clock.clock_sha256 ||\n\t\tledger.required_clock.event_count !== clock.targets.length\n\t) {\n\t\tthrow new Error(\n\t\t\t\"source-forensics ledger does not match the authoritative required clock\",\n\t\t);\n\t}\n\tif (\n\t\tledger.summary.disposition_complete &&\n\t\tledger.target_dispositions.length !== clock.targets.length\n\t) {\n\t\tthrow new Error(\n\t\t\t\"source-forensics ledger omits an authoritative required clock target\",\n\t\t);\n\t}\n\tconst recordBySha = new Map(\n\t\tledger.records.map((record) => [record.record_sha256, record]),\n\t);\n\tfor (const [index, disposition] of ledger.target_dispositions.entries()) {\n\t\tconst target = clock.targets[index];\n\t\tif (\n\t\t\t!target ||\n\t\t\tdisposition.target_id !== target.target_id ||\n\t\t\tdisposition.target_time_ms !== Date.parse(target.target_at)\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"source-forensics disposition differs from the authoritative required clock\",\n\t\t\t);\n\t\t}\n\t\tfor (const recordSha256 of disposition.record_sha256s) {\n\t\t\tconst interval = recordBySha.get(recordSha256)?.target_interval;\n\t\t\tif (\n\t\t\t\t!interval ||\n\t\t\t\tdisposition.target_time_ms < interval.start_target_time_ms ||\n\t\t\t\tdisposition.target_time_ms >= interval.end_target_time_ms_exclusive\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"source-forensics disposition record interval does not contain its authoritative target\",\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\tfor (const record of ledger.records) {\n\t\tconst interval = record.target_interval;\n\t\tif (!interval) continue;\n\t\tconst containedTargets = clock.targets.filter(({ target_at }) => {\n\t\t\tconst targetTimeMs = Date.parse(target_at);\n\t\t\treturn (\n\t\t\t\ttargetTimeMs >= interval.start_target_time_ms &&\n\t\t\t\ttargetTimeMs < interval.end_target_time_ms_exclusive\n\t\t\t);\n\t\t});\n\t\tif (containedTargets.length !== interval.target_count) {\n\t\t\tthrow new Error(\n\t\t\t\t\"source-forensics record interval target count is inconsistent with the authoritative required clock\",\n\t\t\t);\n\t\t}\n\t}\n}\n\nconst sourceForensicsLedgerCodecInternal = {\n\tdecode(\n\t\tvalue: unknown,\n\t\tcontext?: { requiredClock: RequiredClockWire },\n\t): SourceForensicsLedgerWire {\n\t\tif (!validateLedger(value)) {\n\t\t\tthrow new Error(\n\t\t\t\t`source-forensics ledger validation failed: ${describeAjvErrors(validateLedger.errors)}`,\n\t\t\t);\n\t\t}\n\t\tconst ledger = value as SourceForensicsLedgerWire;\n\t\tassertDocumentSha256(ledger, \"ledger_sha256\");\n\t\tfor (const record of ledger.records) {\n\t\t\tassertDocumentSha256(record, \"record_sha256\");\n\t\t}\n\t\tconst ordered = [...ledger.records].sort((left, right) =>\n\t\t\tjcsCanonicalize(left).localeCompare(jcsCanonicalize(right)),\n\t\t);\n\t\tif (JSON.stringify(ordered) !== JSON.stringify(ledger.records)) {\n\t\t\tthrow new Error(\"source-forensics records are not deterministic\");\n\t\t}\n\t\tif (\n\t\t\tledger.summary.retained_record_count !== ledger.records.length ||\n\t\t\tledger.summary.total_record_count !==\n\t\t\t\tledger.summary.retained_record_count +\n\t\t\t\t\tledger.summary.omitted_record_count ||\n\t\t\tledger.complete === (ledger.incomplete_reason !== null) ||\n\t\t\tledger.window.end_time_ms_exclusive <= ledger.window.start_time_ms\n\t\t) {\n\t\t\tthrow new Error(\"source-forensics summary is inconsistent\");\n\t\t}\n\t\tif (context && ledger.operation_kind === \"required_clock_qualification\") {\n\t\t\tassertAuthoritativeRequiredClock(ledger, context.requiredClock);\n\t\t}\n\t\tif (ledger.operation_kind === \"required_clock_qualification\") {\n\t\t\tconst orderedDispositions = [...ledger.target_dispositions].sort(\n\t\t\t\t(left, right) =>\n\t\t\t\t\tleft.target_time_ms - right.target_time_ms ||\n\t\t\t\t\tleft.target_id.localeCompare(right.target_id),\n\t\t\t);\n\t\t\tif (\n\t\t\t\tJSON.stringify(orderedDispositions) !==\n\t\t\t\tJSON.stringify(ledger.target_dispositions)\n\t\t\t) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"source-forensics target dispositions are not deterministic\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tledger.required_clock.event_count !==\n\t\t\t\t\tledger.target_dispositions.length +\n\t\t\t\t\t\tledger.summary.omitted_target_disposition_count ||\n\t\t\t\tledger.summary.fresh_target_count +\n\t\t\t\t\tledger.summary.inactive_target_count +\n\t\t\t\t\tledger.summary.disqualifying_target_count !==\n\t\t\t\t\tledger.target_dispositions.length ||\n\t\t\t\tledger.summary.disposition_complete !==\n\t\t\t\t\t(ledger.summary.omitted_target_disposition_count === 0)\n\t\t\t) {\n\t\t\t\tthrow new Error(\"source-forensics disposition summary is inconsistent\");\n\t\t\t}\n\t\t\tconst recordBySha = new Map(\n\t\t\t\tledger.records.map((record) => [record.record_sha256, record]),\n\t\t\t);\n\t\t\tconst targetIds = new Set<string>();\n\t\t\tfor (const disposition of ledger.target_dispositions) {\n\t\t\t\tif (targetIds.has(disposition.target_id)) {\n\t\t\t\t\tthrow new Error(\"source-forensics target disposition is duplicated\");\n\t\t\t\t}\n\t\t\t\ttargetIds.add(disposition.target_id);\n\t\t\t\tif (\n\t\t\t\t\tJSON.stringify([...disposition.record_sha256s].sort()) !==\n\t\t\t\t\t\tJSON.stringify(disposition.record_sha256s) ||\n\t\t\t\t\tdisposition.record_sha256s.some((sha) => !recordBySha.has(sha))\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"source-forensics disposition record binding is invalid\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst overlappingRecords = ledger.records.filter((record) => {\n\t\t\t\t\tconst interval = record.target_interval;\n\t\t\t\t\treturn (\n\t\t\t\t\t\tinterval !== null &&\n\t\t\t\t\t\tdisposition.target_time_ms >= interval.start_target_time_ms &&\n\t\t\t\t\t\tdisposition.target_time_ms < interval.end_target_time_ms_exclusive\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t\tif (disposition.disposition === \"fresh_within_bound\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdisposition.source_time_ms === null ||\n\t\t\t\t\t\tdisposition.asof_age_ms === null ||\n\t\t\t\t\t\tdisposition.asof_age_ms < 0 ||\n\t\t\t\t\t\tdisposition.asof_age_ms > 5_000 ||\n\t\t\t\t\t\tdisposition.source_time_ms + disposition.asof_age_ms !==\n\t\t\t\t\t\t\tdisposition.target_time_ms ||\n\t\t\t\t\t\tdisposition.record_sha256s.length !== 0 ||\n\t\t\t\t\t\toverlappingRecords.length !== 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new Error(\"fresh source disposition is invalid\");\n\t\t\t\t\t}\n\t\t\t\t} else if (disposition.disposition === \"valid_inactive_market_state\") {\n\t\t\t\t\tconst evidence = disposition.record_sha256s.map(\n\t\t\t\t\t\t(sha) => recordBySha.get(sha) as SourceForensicsRecordWire,\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tdisposition.source_time_ms === null ||\n\t\t\t\t\t\tdisposition.asof_age_ms === null ||\n\t\t\t\t\t\tdisposition.asof_age_ms <= 5_000 ||\n\t\t\t\t\t\tdisposition.source_time_ms + disposition.asof_age_ms !==\n\t\t\t\t\t\t\tdisposition.target_time_ms ||\n\t\t\t\t\t\tevidence.length === 0 ||\n\t\t\t\t\t\tevidence.length !== overlappingRecords.length ||\n\t\t\t\t\t\t!evidence.every(\n\t\t\t\t\t\t\t(record) =>\n\t\t\t\t\t\t\t\trecord.kind === \"stale_target_interval\" &&\n\t\t\t\t\t\t\t\trecord.classification === \"valid_inactive_market_state\",\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthrow new Error(\"inactive source disposition is invalid\");\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\tdisposition.record_sha256s.length === 0 ||\n\t\t\t\t\toverlappingRecords.length === 0\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\"disqualifying source disposition lacks evidence\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst expectedInventory = [\n\t\t\t...ledger.provider_object_inventory.expected_identities,\n\t\t].sort();\n\t\tconst observedInventory = [\n\t\t\t...ledger.provider_object_inventory.observed_identities,\n\t\t].sort();\n\t\tconst expectedIntervals = [\n\t\t\t...ledger.provider_object_inventory.expected_selected_intervals,\n\t\t].sort((left, right) =>\n\t\t\tjcsCanonicalize(left).localeCompare(jcsCanonicalize(right)),\n\t\t);\n\t\tconst observedIntervals = [\n\t\t\t...ledger.provider_object_inventory.observed_selected_intervals,\n\t\t].sort((left, right) =>\n\t\t\tjcsCanonicalize(left).localeCompare(jcsCanonicalize(right)),\n\t\t);\n\t\tconst providerObjects = [...ledger.provider_objects].sort((left, right) =>\n\t\t\tleft.identity.localeCompare(right.identity),\n\t\t);\n\t\tconst providerObjectIdentities = providerObjects.map(\n\t\t\t({ identity }) => identity,\n\t\t);\n\t\tconst inventoryIsCanonical =\n\t\t\tJSON.stringify(expectedInventory) ===\n\t\t\t\tJSON.stringify(ledger.provider_object_inventory.expected_identities) &&\n\t\t\tJSON.stringify(observedInventory) ===\n\t\t\t\tJSON.stringify(ledger.provider_object_inventory.observed_identities) &&\n\t\t\tJSON.stringify(expectedIntervals) ===\n\t\t\t\tJSON.stringify(\n\t\t\t\t\tledger.provider_object_inventory.expected_selected_intervals,\n\t\t\t\t) &&\n\t\t\tJSON.stringify(observedIntervals) ===\n\t\t\t\tJSON.stringify(\n\t\t\t\t\tledger.provider_object_inventory.observed_selected_intervals,\n\t\t\t\t) &&\n\t\t\tJSON.stringify(providerObjects) ===\n\t\t\t\tJSON.stringify(ledger.provider_objects);\n\t\tconst inventoryIsPositivelyBound =\n\t\t\tJSON.stringify(expectedInventory) === JSON.stringify(observedInventory) &&\n\t\t\tJSON.stringify(expectedIntervals) === JSON.stringify(observedIntervals) &&\n\t\t\tJSON.stringify(providerObjectIdentities) ===\n\t\t\t\tJSON.stringify(observedInventory) &&\n\t\t\tproviderObjects.every(\n\t\t\t\t(object) =>\n\t\t\t\t\tobject.checksums.length === 1 &&\n\t\t\t\t\t!object.quarantined &&\n\t\t\t\t\tJSON.stringify([...object.checksums].sort()) ===\n\t\t\t\t\t\tJSON.stringify(object.checksums),\n\t\t\t);\n\t\tif (\n\t\t\t!inventoryIsCanonical ||\n\t\t\tledger.provider_object_inventory.complete !== inventoryIsPositivelyBound\n\t\t) {\n\t\t\tthrow new Error(\"source-forensics provider inventory is inconsistent\");\n\t\t}\n\t\tif (\n\t\t\tnew TextEncoder().encode(jcsCanonicalize(ledger)).byteLength >\n\t\t\tSOURCE_FORENSICS_MAX_CANONICAL_JSON_BYTES\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t\"source-forensics ledger exceeds its canonical byte limit\",\n\t\t\t);\n\t\t}\n\t\tassertSecretFree(ledger);\n\t\treturn ledger;\n\t},\n};\n\nexport const sourceForensicsLedgerCodec = {\n\tdecode(\n\t\tvalue: unknown,\n\t\tcontext?: { requiredClock: RequiredClockWire },\n\t): SourceForensicsLedgerWire {\n\t\tconst ledger = sourceForensicsLedgerCodecInternal.decode(value, context);\n\t\tif (ledger.operation_kind === \"required_clock_qualification\" && !context) {\n\t\t\tthrow new Error(\n\t\t\t\t\"source-forensics ledger validation requires the authoritative required clock\",\n\t\t\t);\n\t\t}\n\t\treturn ledger;\n\t},\n};\n\nexport const sourceQualificationRecordCodec = {\n\tdecode(value: unknown): SourceQualificationRecordWire {\n\t\tif (!validateQualification(value)) {\n\t\t\tthrow new Error(\n\t\t\t\t`source qualification validation failed: ${describeAjvErrors(validateQualification.errors)}`,\n\t\t\t);\n\t\t}\n\t\tconst record = value as SourceQualificationRecordWire;\n\t\tassertDocumentSha256(record, \"record_sha256\");\n\t\tassertSidecarBasename(record.ledger.file_name);\n\t\tif (record.operation_kind === \"required_clock_qualification\") {\n\t\t\tif (\n\t\t\t\t(record.outcome.status === \"success\") !==\n\t\t\t\t\trecord.source_reconstruction_accepted ||\n\t\t\t\trecord.outcome.exporter_result !== null ||\n\t\t\t\t(record.qualified &&\n\t\t\t\t\t(!record.source_reconstruction_accepted ||\n\t\t\t\t\t\t!record.ledger.complete ||\n\t\t\t\t\t\t!record.ledger.disposition_complete ||\n\t\t\t\t\t\trecord.ledger.inactive_target_count !== 0 ||\n\t\t\t\t\t\trecord.ledger.disqualifying_target_count !== 0))\n\t\t\t) {\n\t\t\t\tthrow new Error(\"required-clock terminal outcome is inconsistent\");\n\t\t\t}\n\t\t} else if (\n\t\t\t(record.outcome.status === \"success\") !== record.source_tape_eligible ||\n\t\t\t(record.outcome.status === \"success\" &&\n\t\t\t\t(!record.source_reconstruction_accepted ||\n\t\t\t\t\t!record.source_event_enumeration_eligible ||\n\t\t\t\t\t!record.ledger.complete ||\n\t\t\t\t\trecord.initializer === null)) ||\n\t\t\t(record.outcome.status === \"failure\" &&\n\t\t\t\trecord.initializer !== null &&\n\t\t\t\trecord.initializer.semantic_stream_position !== 0)\n\t\t) {\n\t\t\tthrow new Error(\"source-tape terminal outcome is inconsistent\");\n\t\t}\n\t\tassertSecretFree(record);\n\t\treturn record;\n\t},\n};\n\nfunction finalizeRecord(\n\tcontent: Omit<SourceForensicsRecordWire, \"record_sha256\">,\n): SourceForensicsRecordWire {\n\treturn {\n\t\t...content,\n\t\trecord_sha256: documentSha256(content, \"record_sha256\"),\n\t};\n}\n\nexport function finalizeSourceForensicsLedger(\n\tcontent:\n\t\t| Omit<RequiredClockSourceForensicsLedgerWire, \"ledger_sha256\">\n\t\t| Omit<SourceTapeForensicsLedgerWire, \"ledger_sha256\">,\n): SourceForensicsLedgerWire {\n\treturn sourceForensicsLedgerCodec.decode({\n\t\t...content,\n\t\tledger_sha256: documentSha256(content, \"ledger_sha256\"),\n\t});\n}\n\nexport function finalizeSourceQualificationRecord(\n\tcontent:\n\t\t| Omit<RequiredClockSourceQualificationRecordWire, \"record_sha256\">\n\t\t| Omit<SourceTapeQualificationRecordWire, \"record_sha256\">,\n): SourceQualificationRecordWire {\n\treturn sourceQualificationRecordCodec.decode({\n\t\t...content,\n\t\trecord_sha256: documentSha256(content, \"record_sha256\"),\n\t});\n}\n\nexport type ReconstructionObservation =\n\t| { type: \"provider_object_boundary\"; object: SourceObjectEvidence }\n\t| { type: \"snapshot_anchor\" | \"reanchor\"; anchor: SourceAnchorEvidence }\n\t| {\n\t\t\ttype: \"sequence_discontinuity\";\n\t\t\tsequence: NonNullable<SourceForensicsRecordWire[\"sequence\"]>;\n\t\t\tobject: SourceObjectEvidence;\n\t }\n\t| {\n\t\t\ttype: \"required_clock_sample\";\n\t\t\ttarget_time_ms: number;\n\t\t\tsource_time_ms: number | null;\n\t\t\tlag_ms: number | null;\n\t\t\tstatus: \"covered\" | \"unanchored\" | \"stale\" | \"future\";\n\t\t\tobject: SourceObjectEvidence | null;\n\t }\n\t| { type: \"invalidation\"; event_time_ms: number; reason: string }\n\t| {\n\t\t\ttype: \"provider_object_checksum_conflict\";\n\t\t\tobject: SourceObjectEvidence;\n\t\t\taffected_target_times_ms: readonly number[];\n\t };\n\nexport interface ReconstructionObservationSink {\n\tobserve(observation: ReconstructionObservation): void;\n}\n\nexport const NOOP_RECONSTRUCTION_OBSERVER: ReconstructionObservationSink =\n\tObject.freeze({ observe() {} });\n\ntype LedgerContext = {\n\tschema_id: typeof SOURCE_FORENSICS_LEDGER_SCHEMA_ID;\n\toperation_kind?: \"required_clock_qualification\" | \"source_tape\";\n\tnormalized_invocation_sha256?: Sha256Hex;\n\tidempotency_key?: Sha256Hex;\n\trequest_id: LowercaseUuid;\n\tscope: CanonicalScopeWire;\n\twindow?: SourceInventoryInterval;\n\trequired_clock?: RequiredClockSourceForensicsLedgerWire[\"required_clock\"];\n\tsource_tape?: SourceTapeForensicsLedgerWire[\"source_tape\"];\n\teffective_policies: SourceForensicsLedgerBase[\"effective_policies\"];\n\tadapter_version: string;\n\trequired_clock_targets?: readonly {\n\t\ttarget_id: LowercaseUuid;\n\t\ttarget_time_ms: number;\n\t}[];\n\texpected_provider_object_identities: readonly string[];\n\texpected_selected_intervals?: readonly SourceInventoryInterval[];\n\tredact_values?: ReadonlySet<string>;\n};\n\nfunction lagDistribution(lagMs: number | null): SourceLagDistribution {\n\treturn {\n\t\tlag_1000_ms: lagMs !== null && lagMs <= 1_000 ? 1 : 0,\n\t\tlag_2000_ms: lagMs !== null && lagMs <= 2_000 ? 1 : 0,\n\t\tlag_5000_ms: lagMs !== null && lagMs <= 5_000 ? 1 : 0,\n\t\tlag_10000_ms: lagMs !== null && lagMs <= 10_000 ? 1 : 0,\n\t\tlag_30000_ms: lagMs !== null && lagMs <= 30_000 ? 1 : 0,\n\t\tlag_60000_ms: lagMs !== null && lagMs <= 60_000 ? 1 : 0,\n\t};\n}\n\nfunction mergeObjects(objects: SourceObjectEvidence[]): SourceObjectEvidence[] {\n\tconst byIdentity = new Map<string, SourceObjectEvidence>();\n\tfor (const object of objects) {\n\t\tconst existing = byIdentity.get(object.identity);\n\t\tbyIdentity.set(object.identity, {\n\t\t\tidentity: object.identity,\n\t\t\tchecksums: [\n\t\t\t\t...new Set([...(existing?.checksums ?? []), ...object.checksums]),\n\t\t\t].sort(),\n\t\t\tattempt_count: Math.max(\n\t\t\t\texisting?.attempt_count ?? 0,\n\t\t\t\tobject.attempt_count,\n\t\t\t),\n\t\t\tquarantined: Boolean(existing?.quarantined || object.quarantined),\n\t\t});\n\t}\n\treturn [...byIdentity.values()].sort((left, right) =>\n\t\tleft.identity.localeCompare(right.identity),\n\t);\n}\n\nfunction providerObjectInterval(\n\tidentity: string,\n): SourceInventoryInterval | null {\n\tconst match = /\\/(\\d{4})-(\\d{2})-(\\d{2})\\/(\\d{2})\\//u.exec(identity);\n\tif (!match) return null;\n\tconst start = Date.UTC(\n\t\tNumber(match[1]),\n\t\tNumber(match[2]) - 1,\n\t\tNumber(match[3]),\n\t\tNumber(match[4]),\n\t);\n\tif (!Number.isSafeInteger(start)) return null;\n\treturn { start_time_ms: start, end_time_ms_exclusive: start + 3_600_000 };\n}\n\nfunction orderedIntervals(\n\tintervals: readonly SourceInventoryInterval[],\n): SourceInventoryInterval[] {\n\treturn [...intervals]\n\t\t.map((interval) => ({ ...interval }))\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\tleft.start_time_ms - right.start_time_ms ||\n\t\t\t\tleft.end_time_ms_exclusive - right.end_time_ms_exclusive,\n\t\t);\n}\n\ntype PendingSourceForensicsRecord = Omit<\n\tSourceForensicsRecordWire,\n\t\"record_sha256\"\n>;\n\n/**\n * Streaming qualification sink. It coalesces target intervals as observations\n * arrive and never retains more derived records than the configured cap.\n */\nexport class BoundedSourceForensicsSink\n\timplements ReconstructionObservationSink\n{\n\tprivate readonly records: PendingSourceForensicsRecord[] = [];\n\tprivate readonly providerObjects = new Map<string, SourceObjectEvidence>();\n\tprivate readonly affectedTargets = new Set<number>();\n\tprivate readonly targetObservations = new Map<\n\t\tnumber,\n\t\tExtract<ReconstructionObservation, { type: \"required_clock_sample\" }>\n\t>();\n\tprivate previousAnchor: SourceAnchorEvidence | null = null;\n\tprivate pendingGapRecord: PendingSourceForensicsRecord | null = null;\n\tprivate lastOmittedRecord: PendingSourceForensicsRecord | null = null;\n\tprivate totalRecordCount = 0;\n\tprivate omittedRecordCount = 0;\n\tprivate sourceTapeStateCount: number;\n\n\tconstructor(\n\t\tprivate readonly context: LedgerContext,\n\t\tprivate readonly testingLimits: {\n\t\t\tmaxRetainedRecords?: number;\n\t\t\tmaxCanonicalJsonBytes?: number;\n\t\t} = {},\n\t) {\n\t\tthis.sourceTapeStateCount = context.source_tape?.state_count ?? 0;\n\t}\n\n\tsetSourceTapeStateCount(stateCount: number): void {\n\t\tif (\n\t\t\tthis.context.operation_kind !== \"source_tape\" ||\n\t\t\t!Number.isSafeInteger(stateCount) ||\n\t\t\tstateCount < 0\n\t\t) {\n\t\t\tthrow new Error(\"source-tape state count is invalid\");\n\t\t}\n\t\tthis.sourceTapeStateCount = stateCount;\n\t}\n\n\tobserve(observation: ReconstructionObservation): void {\n\t\ttry {\n\t\t\tthis.accept(observation);\n\t\t} catch {\n\t\t\t// Observer faults must never affect production reconstruction.\n\t\t\tthis.totalRecordCount += 1;\n\t\t\tthis.omittedRecordCount += 1;\n\t\t}\n\t}\n\n\tclassifyRecord(\n\t\tselector: {\n\t\t\tkind: SourceForensicsRecordKind;\n\t\t\ttarget_time_ms: number;\n\t\t\tobject_identity: string;\n\t\t},\n\t\tclassification: SourceForensicsClassification,\n\t): void {\n\t\tif (!SOURCE_FORENSICS_CLASSIFICATIONS.includes(classification)) return;\n\t\tconst identity = this.sanitize(selector.object_identity);\n\t\tfor (const record of this.records) {\n\t\t\tif (\n\t\t\t\trecord.kind === selector.kind &&\n\t\t\t\trecord.provider_objects.some(\n\t\t\t\t\t(object) => object.identity === identity,\n\t\t\t\t) &&\n\t\t\t\trecord.target_interval &&\n\t\t\t\tselector.target_time_ms >=\n\t\t\t\t\trecord.target_interval.start_target_time_ms &&\n\t\t\t\tselector.target_time_ms <\n\t\t\t\t\trecord.target_interval.end_target_time_ms_exclusive\n\t\t\t) {\n\t\t\t\trecord.classification = classification;\n\t\t\t}\n\t\t}\n\t}\n\n\tpendingClassificationRequests(): Array<{\n\t\trecord_key: string;\n\t\tobject_identities: string[];\n\t}> {\n\t\tconst expected = this.context.expected_provider_object_identities.map(\n\t\t\t(identity) => this.sanitize(identity),\n\t\t);\n\t\treturn this.records.flatMap((record, index) => {\n\t\t\tconst original = record.provider_objects[0]?.identity;\n\t\t\tif (!original || record.classification !== \"unresolved\") return [];\n\t\t\tconst expectedIndex = expected.indexOf(original);\n\t\t\tconst identities = [\n\t\t\t\texpectedIndex > 0 ? expected[expectedIndex - 1] : undefined,\n\t\t\t\toriginal,\n\t\t\t\texpectedIndex >= 0 ? expected[expectedIndex + 1] : undefined,\n\t\t\t].filter((value): value is string => value !== undefined);\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\trecord_key: `pending-record-${index}`,\n\t\t\t\t\tobject_identities: [...new Set(identities)],\n\t\t\t\t},\n\t\t\t];\n\t\t});\n\t}\n\n\tapplyRecordClassification(input: {\n\t\trecord_key: string;\n\t\tclassification: SourceForensicsClassification;\n\t\tobjects: SourceObjectEvidence[];\n\t}): void {\n\t\tconst match = /^pending-record-(\\d+)$/u.exec(input.record_key);\n\t\tconst index = match ? Number(match[1]) : Number.NaN;\n\t\tconst record = this.records[index];\n\t\tif (\n\t\t\t!record ||\n\t\t\t!SOURCE_FORENSICS_CLASSIFICATIONS.includes(input.classification)\n\t\t) {\n\t\t\tthrow new Error(\"source record classification reference is invalid\");\n\t\t}\n\t\trecord.classification = input.classification;\n\t\trecord.provider_objects = mergeObjects([\n\t\t\t...record.provider_objects,\n\t\t\t...input.objects.map((object) => this.retainObject(object)),\n\t\t]);\n\t}\n\n\tprivate get retainedLimit(): number {\n\t\treturn Math.min(\n\t\t\tSOURCE_FORENSICS_MAX_RECORDS,\n\t\t\tthis.testingLimits.maxRetainedRecords ?? SOURCE_FORENSICS_MAX_RECORDS,\n\t\t);\n\t}\n\n\tprivate sanitize(value: string): string {\n\t\tlet result = value;\n\t\tfor (const secret of this.context.redact_values ?? []) {\n\t\t\tif (secret) result = result.replaceAll(secret, \"[REDACTED]\");\n\t\t}\n\t\treturn result.slice(0, 1024);\n\t}\n\n\tprivate retainObject(input: SourceObjectEvidence): SourceObjectEvidence {\n\t\tconst object = {\n\t\t\t...input,\n\t\t\tidentity: this.sanitize(input.identity),\n\t\t\tchecksums: [...new Set(input.checksums)].sort(),\n\t\t};\n\t\tconst existing = this.providerObjects.get(object.identity);\n\t\tconst merged = mergeObjects(existing ? [existing, object] : [object]);\n\t\tthis.providerObjects.set(\n\t\t\tobject.identity,\n\t\t\tmerged[0] as SourceObjectEvidence,\n\t\t);\n\t\treturn object;\n\t}\n\n\tprivate sanitizeAnchor(input: SourceAnchorEvidence): SourceAnchorEvidence {\n\t\treturn {\n\t\t\t...input,\n\t\t\tobject_identity: this.sanitize(input.object_identity),\n\t\t};\n\t}\n\n\tprivate interval(\n\t\ttargetTimes: readonly number[],\n\t): SourceTargetInterval | null {\n\t\tconst requiredTargetTimes = (this.context.required_clock_targets ?? []).map(\n\t\t\t({ target_time_ms }) => target_time_ms,\n\t\t);\n\t\tconst targets = [...new Set(targetTimes)]\n\t\t\t.filter((target) => requiredTargetTimes.includes(target))\n\t\t\t.sort((left, right) => left - right);\n\t\tconst first = targets[0];\n\t\tconst last = targets.at(-1);\n\t\tif (first === undefined || last === undefined) return null;\n\t\tconst lastIndex = requiredTargetTimes.indexOf(last);\n\t\treturn {\n\t\t\tstart_target_time_ms: first,\n\t\t\tend_target_time_ms_exclusive:\n\t\t\t\trequiredTargetTimes[lastIndex + 1] ?? last + 1,\n\t\t\ttarget_count: targets.length,\n\t\t};\n\t}\n\n\tprivate markAffected(interval: SourceTargetInterval | null): void {\n\t\tif (!interval) return;\n\t\tfor (const { target_time_ms: target } of this.context\n\t\t\t.required_clock_targets ?? []) {\n\t\t\tif (\n\t\t\t\ttarget >= interval.start_target_time_ms &&\n\t\t\t\ttarget < interval.end_target_time_ms_exclusive\n\t\t\t) {\n\t\t\t\tthis.affectedTargets.add(target);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate mergeAdjacent(\n\t\tprevious: PendingSourceForensicsRecord,\n\t\trecord: PendingSourceForensicsRecord,\n\t): boolean {\n\t\tconst interval = record.target_interval;\n\t\tif (\n\t\t\t!interval ||\n\t\t\t!previous.target_interval ||\n\t\t\tprevious.kind !== record.kind ||\n\t\t\tprevious.target_interval.end_target_time_ms_exclusive !==\n\t\t\t\tinterval.start_target_time_ms\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tprevious.target_interval = {\n\t\t\t...previous.target_interval,\n\t\t\tend_target_time_ms_exclusive: interval.end_target_time_ms_exclusive,\n\t\t\ttarget_count:\n\t\t\t\tprevious.target_interval.target_count + interval.target_count,\n\t\t};\n\t\tprevious.provider_objects = mergeObjects([\n\t\t\t...previous.provider_objects,\n\t\t\t...record.provider_objects,\n\t\t]);\n\t\tif (previous.lag_distribution && record.lag_distribution) {\n\t\t\tfor (const key of Object.keys(previous.lag_distribution) as Array<\n\t\t\t\tkeyof SourceLagDistribution\n\t\t\t>) {\n\t\t\t\tprevious.lag_distribution[key] += record.lag_distribution[key];\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate append(\n\t\trecord: PendingSourceForensicsRecord,\n\t): PendingSourceForensicsRecord {\n\t\tconst previous = this.lastOmittedRecord ?? this.records.at(-1);\n\t\tif (previous && this.mergeAdjacent(previous, record)) return previous;\n\t\tthis.totalRecordCount += 1;\n\t\tif (this.records.length < this.retainedLimit) {\n\t\t\tthis.records.push(record);\n\t\t\treturn record;\n\t\t}\n\t\tthis.omittedRecordCount += 1;\n\t\tthis.lastOmittedRecord = record;\n\t\treturn record;\n\t}\n\n\tprivate accept(observation: ReconstructionObservation): void {\n\t\tif (observation.type === \"provider_object_boundary\") {\n\t\t\tthis.retainObject(observation.object);\n\t\t\treturn;\n\t\t}\n\t\tif (\n\t\t\tobservation.type === \"snapshot_anchor\" ||\n\t\t\tobservation.type === \"reanchor\"\n\t\t) {\n\t\t\tconst anchor = this.sanitizeAnchor(observation.anchor);\n\t\t\tif (this.pendingGapRecord) this.pendingGapRecord.next_anchor = anchor;\n\t\t\tthis.pendingGapRecord = null;\n\t\t\tthis.previousAnchor = anchor;\n\t\t\treturn;\n\t\t}\n\t\tif (observation.type === \"sequence_discontinuity\") {\n\t\t\tthis.pendingGapRecord = this.append({\n\t\t\t\tkind: \"sequence_discontinuity\",\n\t\t\t\tscope: this.context.scope,\n\t\t\t\tprovider_objects: [this.retainObject(observation.object)],\n\t\t\t\tprevious_anchor: this.previousAnchor,\n\t\t\t\tnext_anchor: null,\n\t\t\t\ttarget_interval: null,\n\t\t\t\tlag_distribution: null,\n\t\t\t\tsequence: observation.sequence,\n\t\t\t\tclassification: \"unresolved\",\n\t\t\t\tadapter_version: this.context.adapter_version,\n\t\t\t});\n\t\t\tthis.previousAnchor = null;\n\t\t\treturn;\n\t\t}\n\t\tif (observation.type === \"provider_object_checksum_conflict\") {\n\t\t\tconst object = this.retainObject(observation.object);\n\t\t\tconst interval = this.interval(observation.affected_target_times_ms);\n\t\t\tthis.markAffected(interval);\n\t\t\tthis.append({\n\t\t\t\tkind: \"provider_object_checksum_conflict\",\n\t\t\t\tscope: this.context.scope,\n\t\t\t\tprovider_objects: [object],\n\t\t\t\tprevious_anchor: this.previousAnchor,\n\t\t\t\tnext_anchor: null,\n\t\t\t\ttarget_interval: interval,\n\t\t\t\tlag_distribution: null,\n\t\t\t\tsequence: null,\n\t\t\t\tclassification:\n\t\t\t\t\tobject.checksums.length > 1 ? \"mutable_provider_bytes\" : \"unresolved\",\n\t\t\t\tadapter_version: this.context.adapter_version,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (observation.type !== \"required_clock_sample\") {\n\t\t\treturn;\n\t\t}\n\t\tthis.targetObservations.set(observation.target_time_ms, observation);\n\t\tif (observation.status === \"covered\") return;\n\n\t\tconst interval = this.interval([observation.target_time_ms]);\n\t\tif (!interval) throw new Error(\"observed target is outside required clock\");\n\t\tthis.markAffected(interval);\n\t\tconst kind =\n\t\t\tobservation.status === \"unanchored\"\n\t\t\t\t? \"unanchored_target_interval\"\n\t\t\t\t: observation.status === \"stale\"\n\t\t\t\t\t? \"stale_target_interval\"\n\t\t\t\t\t: \"future_state_interval\";\n\t\tthis.append({\n\t\t\tkind,\n\t\t\tscope: this.context.scope,\n\t\t\tprovider_objects: observation.object\n\t\t\t\t? [this.retainObject(observation.object)]\n\t\t\t\t: [],\n\t\t\tprevious_anchor: this.previousAnchor,\n\t\t\tnext_anchor: null,\n\t\t\ttarget_interval: interval,\n\t\t\tlag_distribution: lagDistribution(observation.lag_ms),\n\t\t\tsequence: null,\n\t\t\tclassification: \"unresolved\",\n\t\t\tadapter_version: this.context.adapter_version,\n\t\t});\n\t\tif (this.pendingGapRecord) {\n\t\t\tthis.pendingGapRecord.target_interval = this.pendingGapRecord\n\t\t\t\t.target_interval\n\t\t\t\t? {\n\t\t\t\t\t\t...this.pendingGapRecord.target_interval,\n\t\t\t\t\t\tend_target_time_ms_exclusive: interval.end_target_time_ms_exclusive,\n\t\t\t\t\t\ttarget_count:\n\t\t\t\t\t\t\tthis.pendingGapRecord.target_interval.target_count + 1,\n\t\t\t\t\t}\n\t\t\t\t: interval;\n\t\t}\n\t}\n\n\tfinish(): SourceForensicsLedgerWire {\n\t\tconst pendingRecords = structuredClone(this.records);\n\t\tconst finalized = pendingRecords\n\t\t\t.map(finalizeRecord)\n\t\t\t.sort((left, right) =>\n\t\t\t\tjcsCanonicalize(left).localeCompare(jcsCanonicalize(right)),\n\t\t\t);\n\t\tlet retained = finalized;\n\t\tlet retainedProviderObjects = mergeObjects([\n\t\t\t...this.providerObjects.values(),\n\t\t]);\n\t\tlet total = this.totalRecordCount;\n\t\tlet omitted = this.omittedRecordCount;\n\t\tlet unresolved =\n\t\t\tfinalized.filter((record) => record.classification === \"unresolved\")\n\t\t\t\t.length + this.omittedRecordCount;\n\t\tconst byteLimit = Math.min(\n\t\t\tSOURCE_FORENSICS_MAX_CANONICAL_JSON_BYTES,\n\t\t\tthis.testingLimits.maxCanonicalJsonBytes ??\n\t\t\t\tSOURCE_FORENSICS_MAX_CANONICAL_JSON_BYTES,\n\t\t);\n\t\tconst expectedIdentities = [\n\t\t\t...new Set(\n\t\t\t\tthis.context.expected_provider_object_identities.map((identity) =>\n\t\t\t\t\tthis.sanitize(identity),\n\t\t\t\t),\n\t\t\t),\n\t\t].sort();\n\t\tconst observedIdentities = [...this.providerObjects.keys()].sort();\n\t\tconst expectedSelectedIntervals = orderedIntervals(\n\t\t\tthis.context.expected_selected_intervals ??\n\t\t\t\texpectedIdentities.flatMap((identity) => {\n\t\t\t\t\tconst interval = providerObjectInterval(identity);\n\t\t\t\t\treturn interval ? [interval] : [];\n\t\t\t\t}),\n\t\t);\n\t\tconst observedSelectedIntervals = orderedIntervals(\n\t\t\tobservedIdentities.flatMap((identity) => {\n\t\t\t\tconst interval = providerObjectInterval(identity);\n\t\t\t\treturn interval ? [interval] : [];\n\t\t\t}),\n\t\t);\n\t\tconst inventoryCoordinatesComplete =\n\t\t\tnew Set(expectedIdentities).size === expectedIdentities.length &&\n\t\t\tnew Set(observedIdentities).size === observedIdentities.length &&\n\t\t\tJSON.stringify(expectedIdentities) ===\n\t\t\t\tJSON.stringify(observedIdentities) &&\n\t\t\tJSON.stringify(expectedSelectedIntervals) ===\n\t\t\t\tJSON.stringify(observedSelectedIntervals);\n\t\tconst inventoryComplete = (): boolean =>\n\t\t\tinventoryCoordinatesComplete &&\n\t\t\tJSON.stringify(\n\t\t\t\tretainedProviderObjects.map(({ identity }) => identity),\n\t\t\t) === JSON.stringify(observedIdentities) &&\n\t\t\tretainedProviderObjects.every(\n\t\t\t\t(object) => object.checksums.length === 1 && !object.quarantined,\n\t\t\t);\n\t\tconst targetTimes = (this.context.required_clock_targets ?? []).map(\n\t\t\t({ target_time_ms }) => target_time_ms,\n\t\t);\n\t\tconst inferredWindow = {\n\t\t\tstart_time_ms:\n\t\t\t\tMath.min(\n\t\t\t\t\t...targetTimes,\n\t\t\t\t\t...expectedSelectedIntervals.map(\n\t\t\t\t\t\t({ start_time_ms }) => start_time_ms,\n\t\t\t\t\t),\n\t\t\t\t) || 0,\n\t\t\tend_time_ms_exclusive:\n\t\t\t\tMath.max(\n\t\t\t\t\t...targetTimes.map((target) => target + 1),\n\t\t\t\t\t...expectedSelectedIntervals.map(\n\t\t\t\t\t\t({ end_time_ms_exclusive }) => end_time_ms_exclusive,\n\t\t\t\t\t),\n\t\t\t\t) || 1,\n\t\t};\n\t\tconst operationKind =\n\t\t\tthis.context.operation_kind ?? \"required_clock_qualification\";\n\t\tconst normalizedInvocationSha256 =\n\t\t\tthis.context.normalized_invocation_sha256 ?? this.context.idempotency_key;\n\t\tif (!normalizedInvocationSha256) {\n\t\t\tthrow new Error(\"source-forensics normalized invocation is missing\");\n\t\t}\n\n\t\tconst targetDispositions = (): SourceTargetDispositionWire[] =>\n\t\t\t(this.context.required_clock_targets ?? []).flatMap((target) => {\n\t\t\t\tconst observation = this.targetObservations.get(target.target_time_ms);\n\t\t\t\tif (!observation) return [];\n\t\t\t\tconst relevantRecords = retained.filter((record) => {\n\t\t\t\t\tconst interval = record.target_interval;\n\t\t\t\t\treturn (\n\t\t\t\t\t\tinterval !== null &&\n\t\t\t\t\t\ttarget.target_time_ms >= interval.start_target_time_ms &&\n\t\t\t\t\t\ttarget.target_time_ms < interval.end_target_time_ms_exclusive\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t\tconst recordSha256s = relevantRecords\n\t\t\t\t\t.map(({ record_sha256 }) => record_sha256)\n\t\t\t\t\t.sort();\n\t\t\t\tlet disposition: SourceTargetDisposition;\n\t\t\t\tif (observation.status === \"covered\" && relevantRecords.length === 0) {\n\t\t\t\t\tdisposition = \"fresh_within_bound\";\n\t\t\t\t} else if (\n\t\t\t\t\tobservation.status === \"stale\" &&\n\t\t\t\t\trelevantRecords.length > 0 &&\n\t\t\t\t\trelevantRecords.every(\n\t\t\t\t\t\t(record) =>\n\t\t\t\t\t\t\trecord.kind === \"stale_target_interval\" &&\n\t\t\t\t\t\t\trecord.classification === \"valid_inactive_market_state\",\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tdisposition = \"valid_inactive_market_state\";\n\t\t\t\t} else if (recordSha256s.length > 0) {\n\t\t\t\t\tdisposition = \"disqualifying\";\n\t\t\t\t} else {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget_id: target.target_id,\n\t\t\t\t\t\ttarget_time_ms: target.target_time_ms,\n\t\t\t\t\t\tdisposition,\n\t\t\t\t\t\tsource_time_ms: observation.source_time_ms,\n\t\t\t\t\t\tasof_age_ms: observation.lag_ms,\n\t\t\t\t\t\trecord_sha256s: recordSha256s,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t});\n\n\t\tconst build = (): SourceForensicsLedgerWire => {\n\t\t\tconst incomplete = omitted > 0;\n\t\t\tconst dispositions = targetDispositions();\n\t\t\tconst common = {\n\t\t\t\tschema_id: SOURCE_FORENSICS_LEDGER_SCHEMA_ID,\n\t\t\t\toperation_kind: operationKind,\n\t\t\t\tnormalized_invocation_sha256: normalizedInvocationSha256,\n\t\t\t\trequest_id: this.context.request_id,\n\t\t\t\tscope: this.context.scope,\n\t\t\t\twindow: this.context.window ?? inferredWindow,\n\t\t\t\teffective_policies: this.context.effective_policies,\n\t\t\t\tprovider_object_inventory: {\n\t\t\t\t\texpected_identities: expectedIdentities,\n\t\t\t\t\tobserved_identities: observedIdentities,\n\t\t\t\t\texpected_selected_intervals: expectedSelectedIntervals,\n\t\t\t\t\tobserved_selected_intervals: observedSelectedIntervals,\n\t\t\t\t\tcomplete: inventoryComplete(),\n\t\t\t\t},\n\t\t\t\tprovider_objects: retainedProviderObjects,\n\t\t\t\trecords: retained,\n\t\t\t\tlimits: {\n\t\t\t\t\tmax_records: 100_000 as const,\n\t\t\t\t\tmax_canonical_json_bytes: 67_108_864 as const,\n\t\t\t\t},\n\t\t\t\tcomplete: !incomplete,\n\t\t\t\tincomplete_reason: incomplete\n\t\t\t\t\t? (\"forensics_evidence_bound_exceeded\" as const)\n\t\t\t\t\t: null,\n\t\t\t};\n\t\t\tconst recordSummary = {\n\t\t\t\tretained_record_count: retained.length,\n\t\t\t\ttotal_record_count: total,\n\t\t\t\tomitted_record_count: omitted,\n\t\t\t\taffected_target_count: this.affectedTargets.size,\n\t\t\t\tunresolved_record_count: unresolved,\n\t\t\t};\n\t\t\tif (operationKind === \"source_tape\") {\n\t\t\t\tconst content: Omit<SourceTapeForensicsLedgerWire, \"ledger_sha256\"> = {\n\t\t\t\t\t...common,\n\t\t\t\t\toperation_kind: \"source_tape\",\n\t\t\t\t\tsource_tape: {\n\t\t\t\t\t\tproduct_id: \"market-data-source-tape\",\n\t\t\t\t\t\tproduct_version: \"market-data-source-tape/v1\",\n\t\t\t\t\t\tstate_count: this.sourceTapeStateCount,\n\t\t\t\t\t},\n\t\t\t\t\tsummary: recordSummary,\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t...content,\n\t\t\t\t\tledger_sha256: documentSha256(content, \"ledger_sha256\"),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (!this.context.required_clock) {\n\t\t\t\tthrow new Error(\"required-clock forensics context is incomplete\");\n\t\t\t}\n\t\t\tconst omittedDispositions =\n\t\t\t\tthis.context.required_clock.event_count - dispositions.length;\n\t\t\tconst content: Omit<\n\t\t\t\tRequiredClockSourceForensicsLedgerWire,\n\t\t\t\t\"ledger_sha256\"\n\t\t\t> = {\n\t\t\t\t...common,\n\t\t\t\toperation_kind: \"required_clock_qualification\",\n\t\t\t\trequired_clock: this.context.required_clock,\n\t\t\t\ttarget_dispositions: dispositions,\n\t\t\t\tsummary: {\n\t\t\t\t\t...recordSummary,\n\t\t\t\t\tdisposition_complete: omittedDispositions === 0,\n\t\t\t\t\tfresh_target_count: dispositions.filter(\n\t\t\t\t\t\t({ disposition }) => disposition === \"fresh_within_bound\",\n\t\t\t\t\t).length,\n\t\t\t\t\tinactive_target_count: dispositions.filter(\n\t\t\t\t\t\t({ disposition }) => disposition === \"valid_inactive_market_state\",\n\t\t\t\t\t).length,\n\t\t\t\t\tdisqualifying_target_count: dispositions.filter(\n\t\t\t\t\t\t({ disposition }) => disposition === \"disqualifying\",\n\t\t\t\t\t).length,\n\t\t\t\t\tomitted_target_disposition_count: omittedDispositions,\n\t\t\t\t},\n\t\t\t};\n\t\t\treturn {\n\t\t\t\t...content,\n\t\t\t\tledger_sha256: documentSha256(content, \"ledger_sha256\"),\n\t\t\t};\n\t\t};\n\n\t\tlet ledger = build();\n\t\tconst size = () =>\n\t\t\tnew TextEncoder().encode(jcsCanonicalize(ledger)).byteLength;\n\t\twhile (size() > byteLimit && retained.length > 0) {\n\t\t\tretained = retained.slice(0, -1);\n\t\t\tomitted += 1;\n\t\t\tledger = build();\n\t\t}\n\t\tlet providerEvidenceOmitted = false;\n\t\twhile (size() > byteLimit && retainedProviderObjects.length > 0) {\n\t\t\tretainedProviderObjects = retainedProviderObjects.slice(0, -1);\n\t\t\tproviderEvidenceOmitted = true;\n\t\t\tledger = build();\n\t\t}\n\t\tif (providerEvidenceOmitted || size() > byteLimit) {\n\t\t\ttotal += 1;\n\t\t\tomitted += 1;\n\t\t\tunresolved += 1;\n\t\t\tledger = build();\n\t\t}\n\t\treturn sourceForensicsLedgerCodecInternal.decode(ledger);\n\t}\n}\n\nexport function classifySourceObjectEvidence(input: {\n\tchecksums: readonly string[];\n\tschemaValid: boolean;\n\tsequenceValid: boolean;\n\tmissingRows: boolean;\n\tcompleteSnapshotDefect: boolean;\n\talternateOrderingClosesGap: boolean;\n\tstaleWithValidPriorState: boolean;\n}): SourceForensicsClassification {\n\tif (new Set(input.checksums).size > 1) return \"mutable_provider_bytes\";\n\tif (!input.schemaValid || input.completeSnapshotDefect) {\n\t\treturn \"stable_object_corruption\";\n\t}\n\tif (input.missingRows) return \"provider_row_loss\";\n\tif (input.alternateOrderingClosesGap) return \"object_boundary_order_defect\";\n\tif (input.sequenceValid && input.staleWithValidPriorState) {\n\t\treturn \"valid_inactive_market_state\";\n\t}\n\treturn \"unresolved\";\n}\n\nexport type SourceObjectInspection = {\n\tchecksum: Sha256Hex;\n\tschemaValid: boolean;\n\tsequenceValid: boolean;\n\tmissingRows: boolean;\n\tcompleteSnapshotDefect: boolean;\n\talternateOrderingClosesGap: boolean;\n\tstaleWithValidPriorState: boolean;\n};\n\n/**\n * Runs the qualification-only, bounded source inspection. The callback may\n * inspect licensed bytes, but this return value deliberately retains only safe\n * identities, checksums and closed predicates. It cannot repair reconstruction\n * or make an interval acceptance-eligible.\n */\nexport async function classifyImplicatedSourceObjects(input: {\n\toriginalIdentity: string;\n\tadjacentIdentities: readonly string[];\n\tmaxAttempts: number;\n\tinspect(\n\t\tidentity: string,\n\t\tattempt: number,\n\t): SourceObjectInspection | Promise<SourceObjectInspection>;\n}): Promise<{\n\tclassification: SourceForensicsClassification;\n\tobjects: SourceObjectEvidence[];\n\tacceptanceEligible: false;\n}> {\n\tif (\n\t\t!input.originalIdentity ||\n\t\tinput.adjacentIdentities.length > 2 ||\n\t\t!Number.isSafeInteger(input.maxAttempts) ||\n\t\tinput.maxAttempts < 1 ||\n\t\tinput.maxAttempts > 3\n\t) {\n\t\tthrow new Error(\"implicated source inspection bounds are invalid\");\n\t}\n\tconst identities = [input.originalIdentity, ...input.adjacentIdentities];\n\tif (new Set(identities).size !== identities.length) {\n\t\tthrow new Error(\"implicated source inspection identities must be unique\");\n\t}\n\n\tconst inspections = new Map<string, SourceObjectInspection[]>();\n\tfor (const identity of identities) {\n\t\tconst attempts: SourceObjectInspection[] = [];\n\t\tfor (let attempt = 1; attempt <= input.maxAttempts; attempt += 1) {\n\t\t\tconst inspected = await input.inspect(identity, attempt);\n\t\t\tif (!/^[a-f0-9]{64}$/u.test(inspected.checksum)) {\n\t\t\t\tthrow new Error(\"source inspection checksum is invalid\");\n\t\t\t}\n\t\t\tattempts.push(inspected);\n\t\t}\n\t\tinspections.set(identity, attempts);\n\t}\n\n\tconst mutable = [...inspections.values()].some(\n\t\t(attempts) => new Set(attempts.map(({ checksum }) => checksum)).size > 1,\n\t);\n\tconst all = [...inspections.values()].flat();\n\tconst classification = mutable\n\t\t? \"mutable_provider_bytes\"\n\t\t: classifySourceObjectEvidence({\n\t\t\t\tchecksums: all.length > 0 ? [all[0]?.checksum as string] : [],\n\t\t\t\tschemaValid: all.every(({ schemaValid }) => schemaValid),\n\t\t\t\tsequenceValid: all.every(({ sequenceValid }) => sequenceValid),\n\t\t\t\tmissingRows: all.some(({ missingRows }) => missingRows),\n\t\t\t\tcompleteSnapshotDefect: all.some(\n\t\t\t\t\t({ completeSnapshotDefect }) => completeSnapshotDefect,\n\t\t\t\t),\n\t\t\t\talternateOrderingClosesGap: all.some(\n\t\t\t\t\t({ alternateOrderingClosesGap }) => alternateOrderingClosesGap,\n\t\t\t\t),\n\t\t\t\tstaleWithValidPriorState: all.some(\n\t\t\t\t\t({ staleWithValidPriorState }) => staleWithValidPriorState,\n\t\t\t\t),\n\t\t\t});\n\n\treturn {\n\t\tclassification,\n\t\tobjects: identities.map((identity) => {\n\t\t\tconst attempts = inspections.get(identity) as SourceObjectInspection[];\n\t\t\treturn {\n\t\t\t\tidentity,\n\t\t\t\tchecksums: [\n\t\t\t\t\t...new Set(attempts.map(({ checksum }) => checksum)),\n\t\t\t\t].sort(),\n\t\t\t\tattempt_count: attempts.length,\n\t\t\t\tquarantined:\n\t\t\t\t\tclassification === \"mutable_provider_bytes\" ||\n\t\t\t\t\tclassification === \"stable_object_corruption\",\n\t\t\t};\n\t\t}),\n\t\tacceptanceEligible: false,\n\t};\n}\n\nexport async function classifySourceForensicsRecordsDeduplicated(input: {\n\trequests: readonly {\n\t\trecord_key: string;\n\t\tobject_identities: readonly string[];\n\t}[];\n\tmaxAttempts: number;\n\tinspect(\n\t\tidentity: string,\n\t\tattempt: number,\n\t): SourceObjectInspection | Promise<SourceObjectInspection>;\n}): Promise<\n\tArray<{\n\t\trecord_key: string;\n\t\tclassification: SourceForensicsClassification;\n\t\tobjects: SourceObjectEvidence[];\n\t}>\n> {\n\tif (\n\t\t!Number.isSafeInteger(input.maxAttempts) ||\n\t\tinput.maxAttempts < 1 ||\n\t\tinput.maxAttempts > 3\n\t) {\n\t\tthrow new Error(\"source record inspection retry bound is invalid\");\n\t}\n\tconst inspections = new Map<string, SourceObjectInspection[]>();\n\tfor (const request of input.requests) {\n\t\tif (\n\t\t\t!request.record_key ||\n\t\t\trequest.object_identities.length === 0 ||\n\t\t\trequest.object_identities.length > 3 ||\n\t\t\tnew Set(request.object_identities).size !==\n\t\t\t\trequest.object_identities.length\n\t\t) {\n\t\t\tthrow new Error(\"source record inspection scope is invalid\");\n\t\t}\n\t\tfor (const identity of request.object_identities) {\n\t\t\tif (inspections.has(identity)) continue;\n\t\t\tconst attempts: SourceObjectInspection[] = [];\n\t\t\tfor (let attempt = 1; attempt <= input.maxAttempts; attempt += 1) {\n\t\t\t\tconst inspected = await input.inspect(identity, attempt);\n\t\t\t\tif (!/^[a-f0-9]{64}$/u.test(inspected.checksum)) {\n\t\t\t\t\tthrow new Error(\"source inspection checksum is invalid\");\n\t\t\t\t}\n\t\t\t\tattempts.push(inspected);\n\t\t\t}\n\t\t\tinspections.set(identity, attempts);\n\t\t}\n\t}\n\treturn input.requests.map((request) => {\n\t\tconst selected = request.object_identities.flatMap(\n\t\t\t(identity) => inspections.get(identity) as SourceObjectInspection[],\n\t\t);\n\t\tconst mutable = request.object_identities.some((identity) => {\n\t\t\tconst attempts = inspections.get(identity) as SourceObjectInspection[];\n\t\t\treturn new Set(attempts.map(({ checksum }) => checksum)).size > 1;\n\t\t});\n\t\tconst classification = mutable\n\t\t\t? \"mutable_provider_bytes\"\n\t\t\t: classifySourceObjectEvidence({\n\t\t\t\t\tchecksums:\n\t\t\t\t\t\tselected.length > 0 ? [selected[0]?.checksum as string] : [],\n\t\t\t\t\tschemaValid: selected.every(({ schemaValid }) => schemaValid),\n\t\t\t\t\tsequenceValid: selected.every(({ sequenceValid }) => sequenceValid),\n\t\t\t\t\tmissingRows: selected.some(({ missingRows }) => missingRows),\n\t\t\t\t\tcompleteSnapshotDefect: selected.some(\n\t\t\t\t\t\t({ completeSnapshotDefect }) => completeSnapshotDefect,\n\t\t\t\t\t),\n\t\t\t\t\talternateOrderingClosesGap: selected.some(\n\t\t\t\t\t\t({ alternateOrderingClosesGap }) => alternateOrderingClosesGap,\n\t\t\t\t\t),\n\t\t\t\t\tstaleWithValidPriorState: selected.some(\n\t\t\t\t\t\t({ staleWithValidPriorState }) => staleWithValidPriorState,\n\t\t\t\t\t),\n\t\t\t\t});\n\t\treturn {\n\t\t\trecord_key: request.record_key,\n\t\t\tclassification,\n\t\t\tobjects: request.object_identities.map((identity) => {\n\t\t\t\tconst attempts = inspections.get(identity) as SourceObjectInspection[];\n\t\t\t\tconst checksums = [\n\t\t\t\t\t...new Set(attempts.map(({ checksum }) => checksum)),\n\t\t\t\t].sort() as Sha256Hex[];\n\t\t\t\treturn {\n\t\t\t\t\tidentity,\n\t\t\t\t\tchecksums,\n\t\t\t\t\tattempt_count: attempts.length,\n\t\t\t\t\tquarantined:\n\t\t\t\t\t\tclassification === \"mutable_provider_bytes\" ||\n\t\t\t\t\t\tclassification === \"stable_object_corruption\",\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t});\n}\n\nexport function evaluateSourceQualificationGates(\n\tledgerInput: SourceForensicsLedgerWire,\n\tsourceReconstructionAccepted: boolean,\n):\n\t| {\n\t\t\toperation_kind: \"required_clock_qualification\";\n\t\t\tqualified: boolean;\n\t\t\tsource_partition_complete: boolean;\n\t\t\tsource_event_enumeration_eligible: boolean;\n\t }\n\t| {\n\t\t\toperation_kind: \"source_tape\";\n\t\t\tsource_event_enumeration_eligible: boolean;\n\t\t\tsource_tape_eligible: boolean;\n\t } {\n\tconst ledger = sourceForensicsLedgerCodecInternal.decode(ledgerInput);\n\tconst enumerationEvidenceAccepted = ledger.records.every(\n\t\t(record) =>\n\t\t\trecord.kind === \"stale_target_interval\" &&\n\t\t\trecord.classification === \"valid_inactive_market_state\",\n\t);\n\tconst sourceEventEnumerationEligible =\n\t\tledger.complete &&\n\t\tledger.provider_object_inventory.complete &&\n\t\tenumerationEvidenceAccepted;\n\tif (ledger.operation_kind === \"source_tape\") {\n\t\treturn {\n\t\t\toperation_kind: \"source_tape\",\n\t\t\tsource_event_enumeration_eligible: sourceEventEnumerationEligible,\n\t\t\tsource_tape_eligible:\n\t\t\t\tsourceReconstructionAccepted &&\n\t\t\t\tsourceEventEnumerationEligible &&\n\t\t\t\tledger.source_tape.state_count > 0,\n\t\t};\n\t}\n\tconst sourcePartitionComplete =\n\t\tledger.complete &&\n\t\tledger.summary.disposition_complete &&\n\t\tledger.summary.disqualifying_target_count === 0 &&\n\t\tledger.target_dispositions.every(({ record_sha256s }) =>\n\t\t\trecord_sha256s.every((sha) =>\n\t\t\t\tledger.records.some(({ record_sha256 }) => record_sha256 === sha),\n\t\t\t),\n\t\t);\n\treturn {\n\t\toperation_kind: \"required_clock_qualification\",\n\t\tqualified:\n\t\t\tsourceReconstructionAccepted &&\n\t\t\tledger.complete &&\n\t\t\tledger.summary.disposition_complete &&\n\t\t\tledger.summary.fresh_target_count === ledger.required_clock.event_count &&\n\t\t\tledger.summary.inactive_target_count === 0 &&\n\t\t\tledger.summary.disqualifying_target_count === 0,\n\t\tsource_partition_complete: sourcePartitionComplete,\n\t\tsource_event_enumeration_eligible:\n\t\t\tsourcePartitionComplete && sourceEventEnumerationEligible,\n\t};\n}\n\nexport async function commitSourceQualificationEvidence(input: {\n\toutputDirectory: string;\n\tledgerFileName: string;\n\tqualificationFileName: string;\n\tledger: SourceForensicsLedgerWire;\n\tcreatedAt: string;\n\tsourceAccepted: boolean;\n\trequiredClock?: RequiredClockWire;\n\trequiredClockFailureReason?: (typeof REQUIRED_CLOCK_QUALIFICATION_FAILURE_REASONS)[number];\n\tsourceTapeInitializer?: SourceTapeInitializerDescriptor;\n\tsourceTapeOutcome?: SourceTapeQualificationRecordWire[\"outcome\"];\n\tcleanupLicensedPayloads?: () => void | Promise<void>;\n}): Promise<SourceQualificationRecordWire> {\n\tassertSidecarBasename(input.ledgerFileName);\n\tassertSidecarBasename(input.qualificationFileName);\n\tif (\n\t\tinput.ledger.operation_kind === \"required_clock_qualification\" &&\n\t\t!input.requiredClock\n\t) {\n\t\tthrow new Error(\n\t\t\t\"source qualification requires the authoritative required clock\",\n\t\t);\n\t}\n\tconst ledger = sourceForensicsLedgerCodec.decode(\n\t\tinput.ledger,\n\t\tinput.requiredClock ? { requiredClock: input.requiredClock } : undefined,\n\t);\n\tconst ledgerBytes = new TextEncoder().encode(jcsCanonicalize(ledger));\n\tconst ledgerPath = path.join(input.outputDirectory, input.ledgerFileName);\n\tconst qualificationPath = path.join(\n\t\tinput.outputDirectory,\n\t\tinput.qualificationFileName,\n\t);\n\ttry {\n\t\tawait writeExclusiveDurableFile(ledgerPath, ledgerBytes);\n\t\tconst gates = evaluateSourceQualificationGates(\n\t\t\tledger,\n\t\t\tinput.sourceAccepted,\n\t\t);\n\t\tconst ledgerDescriptor = {\n\t\t\tschema_id: SOURCE_FORENSICS_LEDGER_SCHEMA_ID,\n\t\t\tfile_name: input.ledgerFileName,\n\t\t\tsha256: createHash(\"sha256\").update(ledgerBytes).digest(\"hex\"),\n\t\t\tbytes: ledgerBytes.byteLength,\n\t\t\tretained_record_count: ledger.summary.retained_record_count,\n\t\t\ttotal_record_count: ledger.summary.total_record_count,\n\t\t\tomitted_record_count: ledger.summary.omitted_record_count,\n\t\t\tcomplete: ledger.complete,\n\t\t};\n\t\tconst ledgerEvidenceDescriptor: SourceEvidenceDescriptor = {\n\t\t\tkind: \"ledger\",\n\t\t\tfile_name: input.ledgerFileName,\n\t\t\tsha256: ledgerDescriptor.sha256 as Sha256Hex,\n\t\t\tbytes: ledgerDescriptor.bytes,\n\t\t};\n\t\tconst sourceTapeOutcome = input.sourceTapeOutcome\n\t\t\t? {\n\t\t\t\t\t...input.sourceTapeOutcome,\n\t\t\t\t\tpartial_evidence: [\n\t\t\t\t\t\tledgerEvidenceDescriptor,\n\t\t\t\t\t\t...input.sourceTapeOutcome.partial_evidence.filter(\n\t\t\t\t\t\t\t(descriptor) =>\n\t\t\t\t\t\t\t\tdescriptor.kind !== \"ledger\" &&\n\t\t\t\t\t\t\t\tdescriptor.file_name !== input.ledgerFileName,\n\t\t\t\t\t\t),\n\t\t\t\t\t],\n\t\t\t\t}\n\t\t\t: undefined;\n\t\tconst qualification =\n\t\t\tledger.operation_kind === \"required_clock_qualification\" &&\n\t\t\tgates.operation_kind === \"required_clock_qualification\"\n\t\t\t\t? finalizeSourceQualificationRecord({\n\t\t\t\t\t\tschema_id: SOURCE_QUALIFICATION_RECORD_SCHEMA_ID,\n\t\t\t\t\t\tcreated_at: input.createdAt,\n\t\t\t\t\t\toperation_kind: \"required_clock_qualification\",\n\t\t\t\t\t\tnormalized_invocation_sha256: ledger.normalized_invocation_sha256,\n\t\t\t\t\t\trequest_id: ledger.request_id,\n\t\t\t\t\t\tscope: ledger.scope,\n\t\t\t\t\t\tledger: {\n\t\t\t\t\t\t\t...ledgerDescriptor,\n\t\t\t\t\t\t\tdisposition_complete: ledger.summary.disposition_complete,\n\t\t\t\t\t\t\tfresh_target_count: ledger.summary.fresh_target_count,\n\t\t\t\t\t\t\tinactive_target_count: ledger.summary.inactive_target_count,\n\t\t\t\t\t\t\tdisqualifying_target_count:\n\t\t\t\t\t\t\t\tledger.summary.disqualifying_target_count,\n\t\t\t\t\t\t\tomitted_target_disposition_count:\n\t\t\t\t\t\t\t\tledger.summary.omitted_target_disposition_count,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsource_reconstruction_accepted: input.sourceAccepted,\n\t\t\t\t\t\tqualified: gates.qualified,\n\t\t\t\t\t\tsource_partition_complete: gates.source_partition_complete,\n\t\t\t\t\t\tsource_event_enumeration_eligible:\n\t\t\t\t\t\t\tgates.source_event_enumeration_eligible,\n\t\t\t\t\t\toutcome: input.sourceAccepted\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\tstatus: \"success\",\n\t\t\t\t\t\t\t\t\treason: \"required_clock_qualification_completed\",\n\t\t\t\t\t\t\t\t\tpartial_evidence: [ledgerEvidenceDescriptor],\n\t\t\t\t\t\t\t\t\texporter_result: null,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tstatus: \"failure\",\n\t\t\t\t\t\t\t\t\treason:\n\t\t\t\t\t\t\t\t\t\tinput.requiredClockFailureReason ??\n\t\t\t\t\t\t\t\t\t\t\"required_clock_reconstruction_failed\",\n\t\t\t\t\t\t\t\t\tpartial_evidence: [ledgerEvidenceDescriptor],\n\t\t\t\t\t\t\t\t\texporter_result: null,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t: ledger.operation_kind === \"source_tape\" &&\n\t\t\t\t\t\tgates.operation_kind === \"source_tape\" &&\n\t\t\t\t\t\tsourceTapeOutcome &&\n\t\t\t\t\t\t(sourceTapeOutcome.status === \"failure\" ||\n\t\t\t\t\t\t\tinput.sourceTapeInitializer)\n\t\t\t\t\t? finalizeSourceQualificationRecord({\n\t\t\t\t\t\t\tschema_id: SOURCE_QUALIFICATION_RECORD_SCHEMA_ID,\n\t\t\t\t\t\t\tcreated_at: input.createdAt,\n\t\t\t\t\t\t\toperation_kind: \"source_tape\",\n\t\t\t\t\t\t\tnormalized_invocation_sha256: ledger.normalized_invocation_sha256,\n\t\t\t\t\t\t\trequest_id: ledger.request_id,\n\t\t\t\t\t\t\tscope: ledger.scope,\n\t\t\t\t\t\t\tledger: {\n\t\t\t\t\t\t\t\t...ledgerDescriptor,\n\t\t\t\t\t\t\t\tstate_count: ledger.source_tape.state_count,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tinitializer: input.sourceTapeInitializer ?? null,\n\t\t\t\t\t\t\tsource_reconstruction_accepted: input.sourceAccepted,\n\t\t\t\t\t\t\tsource_event_enumeration_eligible:\n\t\t\t\t\t\t\t\tgates.source_event_enumeration_eligible,\n\t\t\t\t\t\t\tsource_tape_eligible:\n\t\t\t\t\t\t\t\tgates.source_tape_eligible &&\n\t\t\t\t\t\t\t\tsourceTapeOutcome.status === \"success\",\n\t\t\t\t\t\t\toutcome: sourceTapeOutcome,\n\t\t\t\t\t\t})\n\t\t\t\t\t: (() => {\n\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\"source qualification operation outcome is incomplete\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})();\n\t\tawait atomicWriteJsonResult(qualificationPath, qualification, {\n\t\t\tvalidate: (value) => sourceQualificationRecordCodec.decode(value),\n\t\t});\n\t\treturn qualification;\n\t} finally {\n\t\tawait input.cleanupLicensedPayloads?.();\n\t}\n}\n",
|
|
189
|
+
"import { createHash, randomUUID } from \"node:crypto\";\nimport { constants as fsConstants, type Stats } from \"node:fs\";\nimport { type FileHandle, lstat, open, rename, unlink } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport const FILE_JOB_REQUEST_MAX_BYTES = 1_048_576;\nexport const FILE_JOB_CLOCK_MAX_BYTES = 16_777_216;\nexport const FILE_JOB_EXECUTABLE_MAX_BYTES = 536_870_912;\n\nexport type FileJobPaths = {\n\tattemptRoot: string;\n\trequestPath: string;\n\tresultPath: string;\n};\n\nexport type AtomicWriteHooks = {\n\tbeforeTempOpen?(tempPath: string): void | Promise<void>;\n\tbeforeFileFsync?(): void | Promise<void>;\n\tbeforeRename?(): void | Promise<void>;\n\tbeforeDirectoryFsync?(): void | Promise<void>;\n};\n\nexport type AtomicWriteJsonOptions<T> = {\n\tvalidate?: (value: T) => void;\n\thooks?: AtomicWriteHooks;\n};\n\nexport type DurableArtifactHooks = {\n\tbeforeOpen?(filePath: string): void | Promise<void>;\n\tbeforeFileFsync?(): void | Promise<void>;\n};\n\nexport class FileJobUnreadableError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"FileJobUnreadableError\";\n\t}\n}\n\nfunction errorCode(error: unknown): string | undefined {\n\treturn error && typeof error === \"object\" && \"code\" in error\n\t\t? String((error as { code?: unknown }).code)\n\t\t: undefined;\n}\n\nexport function containsParentTraversal(input: string): boolean {\n\treturn input.split(/[\\\\/]+/u).includes(\"..\");\n}\n\nexport function assertSupportedNode22(\n\tversion = process.versions.node,\n\tproductName = \"market-data preparation executable\",\n): void {\n\tconst major = Number.parseInt(version.split(\".\", 1)[0] ?? \"\", 10);\n\tif (!Number.isInteger(major) || major < 22) {\n\t\tthrow new Error(`${productName} requires Node 22 or newer; got ${version}`);\n\t}\n}\n\nexport function parseFileJobArgv(argv: readonly string[]): {\n\trequestPath: string;\n\tresultPath: string;\n} {\n\tif (\n\t\targv.length !== 5 ||\n\t\targv[0] !== \"run\" ||\n\t\targv[1] !== \"--request\" ||\n\t\targv[3] !== \"--result\" ||\n\t\t!argv[2] ||\n\t\t!argv[4]\n\t) {\n\t\tthrow new Error(\"expected exactly: run --request <path> --result <path>\");\n\t}\n\treturn { requestPath: argv[2], resultPath: argv[4] };\n}\n\nasync function assertAttemptRoot(attemptRoot: string): Promise<void> {\n\tconst stats = await lstat(attemptRoot);\n\tif (stats.isSymbolicLink() || !stats.isDirectory()) {\n\t\tthrow new Error(\"attempt root must be a non-symlink directory\");\n\t}\n}\n\nasync function assertSafeResultTarget(resultPath: string): Promise<void> {\n\tlet stats: Stats;\n\ttry {\n\t\tstats = await lstat(resultPath);\n\t} catch (error) {\n\t\tif (errorCode(error) === \"ENOENT\") return;\n\t\tthrow error;\n\t}\n\tif (stats.isSymbolicLink() || !stats.isFile()) {\n\t\tthrow new Error(\n\t\t\t\"result target must be absent or a non-symlink regular file\",\n\t\t);\n\t}\n\n\tconst handle = await open(\n\t\tresultPath,\n\t\tfsConstants.O_RDONLY | fsConstants.O_NOFOLLOW,\n\t);\n\ttry {\n\t\tif (!(await handle.stat()).isFile()) {\n\t\t\tthrow new Error(\"opened result target is not a regular file\");\n\t\t}\n\t} finally {\n\t\tawait handle.close();\n\t}\n}\n\nexport async function assertSafeFileJobPaths(\n\trequestInput: string,\n\tresultInput: string,\n): Promise<FileJobPaths> {\n\tif (\n\t\tcontainsParentTraversal(requestInput) ||\n\t\tcontainsParentTraversal(resultInput)\n\t) {\n\t\tthrow new FileJobUnreadableError(\"parent traversal is not allowed\");\n\t}\n\tconst requestPath = path.resolve(requestInput);\n\tconst resultPath = path.resolve(resultInput);\n\tconst attemptRoot = path.dirname(requestPath);\n\tif (path.dirname(resultPath) !== attemptRoot) {\n\t\tthrow new Error(\"result parent must be identical to the request parent\");\n\t}\n\tawait assertAttemptRoot(attemptRoot);\n\tawait assertSafeResultTarget(resultPath);\n\treturn { attemptRoot, requestPath, resultPath };\n}\n\nexport function assertSidecarBasename(fileName: string): void {\n\tif (\n\t\tpath.basename(fileName) !== fileName ||\n\t\tcontainsParentTraversal(fileName) ||\n\t\tfileName.includes(\"/\") ||\n\t\tfileName.includes(\"\\\\\")\n\t) {\n\t\tthrow new Error(\"sidecar file name must be a basename\");\n\t}\n}\n\nexport async function readBoundedRegularFile(\n\tfilePath: string,\n\tmaximumBytes: number,\n): Promise<Buffer> {\n\tif (!Number.isSafeInteger(maximumBytes) || maximumBytes < 0) {\n\t\tthrow new Error(\"maximumBytes must be a non-negative safe integer\");\n\t}\n\tlet pathStats: Stats;\n\ttry {\n\t\tpathStats = await lstat(filePath);\n\t} catch (error) {\n\t\tthrow new FileJobUnreadableError(\n\t\t\t`cannot lstat input: ${errorCode(error) ?? \"unknown\"}`,\n\t\t);\n\t}\n\tif (\n\t\tpathStats.isSymbolicLink() ||\n\t\t!pathStats.isFile() ||\n\t\tpathStats.size > maximumBytes\n\t) {\n\t\tthrow new FileJobUnreadableError(\n\t\t\t\"input must be a bounded non-symlink regular file\",\n\t\t);\n\t}\n\n\tlet handle: FileHandle;\n\ttry {\n\t\thandle = await open(\n\t\t\tfilePath,\n\t\t\tfsConstants.O_RDONLY | fsConstants.O_NOFOLLOW,\n\t\t);\n\t} catch (error) {\n\t\tthrow new FileJobUnreadableError(\n\t\t\t`cannot open input: ${errorCode(error) ?? \"unknown\"}`,\n\t\t);\n\t}\n\n\tlet result: Buffer | undefined;\n\tlet readError: FileJobUnreadableError | undefined;\n\ttry {\n\t\tconst openedStats = await handle.stat();\n\t\tif (!openedStats.isFile() || openedStats.size > maximumBytes) {\n\t\t\tthrow new FileJobUnreadableError(\n\t\t\t\t\"opened input must be a bounded regular file\",\n\t\t\t);\n\t\t}\n\t\tconst bytes = Buffer.alloc(openedStats.size);\n\t\tlet offset = 0;\n\t\twhile (offset < bytes.length) {\n\t\t\tconst { bytesRead } = await handle.read(\n\t\t\t\tbytes,\n\t\t\t\toffset,\n\t\t\t\tbytes.length - offset,\n\t\t\t\toffset,\n\t\t\t);\n\t\t\tif (bytesRead === 0) break;\n\t\t\toffset += bytesRead;\n\t\t}\n\t\tconst finalStats = await handle.stat();\n\t\tif (\n\t\t\toffset !== bytes.length ||\n\t\t\tfinalStats.size !== openedStats.size ||\n\t\t\tfinalStats.size > maximumBytes\n\t\t) {\n\t\t\tthrow new FileJobUnreadableError(\"input changed while it was being read\");\n\t\t}\n\t\tresult = bytes;\n\t} catch (error) {\n\t\treadError =\n\t\t\terror instanceof FileJobUnreadableError\n\t\t\t\t? error\n\t\t\t\t: new FileJobUnreadableError(\n\t\t\t\t\t\t`cannot read input: ${errorCode(error) ?? \"unknown\"}`,\n\t\t\t\t\t);\n\t}\n\ttry {\n\t\tawait handle.close();\n\t} catch (error) {\n\t\tif (!readError) {\n\t\t\treadError = new FileJobUnreadableError(\n\t\t\t\t`cannot close input: ${errorCode(error) ?? \"unknown\"}`,\n\t\t\t);\n\t\t}\n\t}\n\tif (readError) throw readError;\n\tif (!result) {\n\t\tthrow new FileJobUnreadableError(\"input read produced no result\");\n\t}\n\treturn result;\n}\n\nexport async function sha256RegularFile(filePath: string): Promise<string> {\n\tconst bytes = await readBoundedRegularFile(\n\t\tfilePath,\n\t\tFILE_JOB_EXECUTABLE_MAX_BYTES,\n\t);\n\treturn createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\nexport async function writeExclusiveDurableFile(\n\tfilePath: string,\n\tbytes: Uint8Array,\n\thooks: DurableArtifactHooks = {},\n): Promise<void> {\n\tawait hooks.beforeOpen?.(filePath);\n\tconst handle = await open(\n\t\tfilePath,\n\t\tfsConstants.O_WRONLY |\n\t\t\tfsConstants.O_CREAT |\n\t\t\tfsConstants.O_EXCL |\n\t\t\tfsConstants.O_NOFOLLOW,\n\t\t0o600,\n\t);\n\ttry {\n\t\tif (!(await handle.stat()).isFile()) {\n\t\t\tthrow new Error(\"artifact target is not a regular file\");\n\t\t}\n\t\tawait handle.writeFile(bytes);\n\t\tawait hooks.beforeFileFsync?.();\n\t\tawait handle.sync();\n\t} finally {\n\t\tawait handle.close();\n\t}\n}\n\nfunction redactString(\n\tvalue: string,\n\tsensitiveValues: ReadonlySet<string>,\n): string {\n\tlet redacted = value;\n\tfor (const secret of sensitiveValues) {\n\t\tif (secret) redacted = redacted.replaceAll(secret, \"[REDACTED]\");\n\t}\n\treturn redacted;\n}\n\nexport function redactDiagnostics(\n\tdiagnostics: Readonly<Record<string, string | number | boolean>>,\n\tsensitiveValues: ReadonlySet<string>,\n): Record<string, string | number | boolean> {\n\treturn Object.fromEntries(\n\t\tObject.entries(diagnostics).map(([key, value]) => [\n\t\t\tredactString(key, sensitiveValues),\n\t\t\ttypeof value === \"string\" ? redactString(value, sensitiveValues) : value,\n\t\t]),\n\t);\n}\n\nasync function closeIgnoringErrors(handle: FileHandle | null): Promise<void> {\n\tif (!handle) return;\n\ttry {\n\t\tawait handle.close();\n\t} catch {\n\t\t// Preserve the original durable-write failure.\n\t}\n}\n\nexport async function atomicWriteJsonResult<T>(\n\tresultPath: string,\n\tresult: T,\n\toptions: AtomicWriteJsonOptions<T> = {},\n): Promise<void> {\n\toptions.validate?.(result);\n\tconst serialized = `${JSON.stringify(result)}\\n`;\n\tconst attemptRoot = path.dirname(resultPath);\n\tconst tempPath = path.join(\n\t\tattemptRoot,\n\t\t`.${path.basename(resultPath)}.${randomUUID()}.tmp`,\n\t);\n\tlet tempHandle: FileHandle | null = null;\n\tlet renamed = false;\n\n\ttry {\n\t\ttry {\n\t\t\tawait lstat(tempPath);\n\t\t\tthrow new Error(\"exclusive temporary result path already exists\");\n\t\t} catch (error) {\n\t\t\tif (errorCode(error) !== \"ENOENT\") throw error;\n\t\t}\n\n\t\tawait options.hooks?.beforeTempOpen?.(tempPath);\n\t\ttempHandle = await open(\n\t\t\ttempPath,\n\t\t\tfsConstants.O_WRONLY |\n\t\t\t\tfsConstants.O_CREAT |\n\t\t\t\tfsConstants.O_EXCL |\n\t\t\t\tfsConstants.O_NOFOLLOW,\n\t\t\t0o600,\n\t\t);\n\t\tif (!(await tempHandle.stat()).isFile()) {\n\t\t\tthrow new Error(\"temporary result is not a regular file\");\n\t\t}\n\t\tawait tempHandle.writeFile(serialized, \"utf8\");\n\t\tawait options.hooks?.beforeFileFsync?.();\n\t\tawait tempHandle.sync();\n\t\tawait tempHandle.close();\n\t\ttempHandle = null;\n\n\t\tawait options.hooks?.beforeRename?.();\n\t\tawait rename(tempPath, resultPath);\n\t\trenamed = true;\n\n\t\tconst directoryHandle = await open(\n\t\t\tattemptRoot,\n\t\t\tfsConstants.O_RDONLY | fsConstants.O_DIRECTORY | fsConstants.O_NOFOLLOW,\n\t\t);\n\t\ttry {\n\t\t\tif (!(await directoryHandle.stat()).isDirectory()) {\n\t\t\t\tthrow new Error(\"opened attempt root is not a directory\");\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait options.hooks?.beforeDirectoryFsync?.();\n\t\t\t\tawait directoryHandle.sync();\n\t\t\t} catch (error) {\n\t\t\t\tif (![\"ENOTSUP\", \"EINVAL\"].includes(errorCode(error) ?? \"\")) {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tawait directoryHandle.close();\n\t\t}\n\t} catch (error) {\n\t\tawait closeIgnoringErrors(tempHandle);\n\t\tif (!renamed) {\n\t\t\ttry {\n\t\t\t\tawait unlink(tempPath);\n\t\t\t} catch (cleanupError) {\n\t\t\t\tif (errorCode(cleanupError) !== \"ENOENT\") {\n\t\t\t\t\t// The original failure remains authoritative.\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthrow error;\n\t}\n}\n",
|
|
190
|
+
"import {\n\tARCHIVE_SELECTION_SCHEMA_ID,\n\ttype ArchiveSelectionWire,\n\tarchiveSelectionCodec,\n\ttype BackfillArchiveRow,\n\ttype BackfillRequestWire,\n\tbackfillRequestCodec,\n\tfinalizeArchiveSelection,\n\ttype MarketDataVendorBackfillRequest,\n} from \"./contracts\";\nimport { jcsCanonicalize, jcsSha256 } from \"./identity\";\n\nexport type ArchiveQualificationEvidence = {\n\tqualificationEventId: string;\n\tstate: \"qualified\" | \"quarantined\" | \"revoked\";\n\treceiptId: string;\n\tpromotionIdentitySha256: string;\n};\n\nexport type ArchiveSupportAnchorEvidence = {\n\tcaptureBundleId: string;\n\trawCaptureId: string;\n\tsnapshotId: string;\n\tsourceTimeMs: number;\n\tnormalizedSummaryChecksum: string;\n};\n\nexport type ArchiveBundleEvidence = {\n\tcaptureBundleId: string;\n\tcaptureOrigin: \"production_capture\" | \"vendor_historical_backfill\";\n\tstartTimeMs: number;\n\tendTimeMs: number;\n\tqualification: ArchiveQualificationEvidence | null;\n\tsupportAnchors: ArchiveSupportAnchorEvidence[];\n};\n\nfunction fixedTimestamp(timestampMs: number, field: string): string {\n\tif (!Number.isSafeInteger(timestampMs) || timestampMs < 0) {\n\t\tthrow new Error(`${field} must be a non-negative safe integer`);\n\t}\n\treturn new Date(timestampMs).toISOString();\n}\n\nfunction assertStoredSelectionMatchesRequest(\n\trequest: MarketDataVendorBackfillRequest,\n\tselection: ArchiveSelectionWire,\n): void {\n\tif (!request.requiredClock || !request.coveragePolicy) {\n\t\tthrow new Error(\"decoded request is missing final-v1 selection context\");\n\t}\n\tconst expectedScope = {\n\t\texchange: request.scope.exchange,\n\t\ttrading_pair: request.scope.tradingPair,\n\t\tmarket_type: request.scope.marketType,\n\t\tfeed: request.scope.feed,\n\t};\n\tif (\n\t\tjcsSha256(selection.scope) !== jcsSha256(expectedScope) ||\n\t\tselection.required_clock.clock_id !== request.requiredClock.clock_id ||\n\t\tselection.required_clock.clock_sha256 !==\n\t\t\trequest.requiredClock.clock_sha256 ||\n\t\tselection.required_clock.event_count !==\n\t\t\trequest.requiredClock.targets.length ||\n\t\tjcsSha256(selection.coverage_policy) !==\n\t\t\tjcsSha256(request.coveragePolicy) ||\n\t\tselection.source_policy !== request.sourcePolicy\n\t) {\n\t\tthrow new Error(\"stored archive selection conflicts with request content\");\n\t}\n}\n\nfunction eligibleBundles(\n\trequest: MarketDataVendorBackfillRequest,\n\tbundles: readonly ArchiveBundleEvidence[],\n): ArchiveBundleEvidence[] {\n\tconst qualifiedVendorBundles = bundles.filter(\n\t\t(bundle) =>\n\t\t\tbundle.captureOrigin === \"vendor_historical_backfill\" &&\n\t\t\tbundle.qualification?.state === \"qualified\",\n\t);\n\tconst productionBundles = bundles.filter(\n\t\t(bundle) => bundle.captureOrigin === \"production_capture\",\n\t);\n\tif (request.sourcePolicy === \"authoritative_window\") {\n\t\tconst vendorSupport = chooseSupport(request, qualifiedVendorBundles);\n\t\treturn vendorSupport.length === request.requiredClockTargetsMs.length\n\t\t\t? qualifiedVendorBundles\n\t\t\t: productionBundles;\n\t}\n\treturn [...productionBundles, ...qualifiedVendorBundles];\n}\n\nfunction originPriority(\n\trequest: MarketDataVendorBackfillRequest,\n\torigin: ArchiveBundleEvidence[\"captureOrigin\"],\n): number {\n\tif (request.sourcePolicy === \"fill_gaps\") {\n\t\treturn origin === \"production_capture\" ? 0 : 1;\n\t}\n\treturn 0;\n}\n\nfunction chooseSupport(\n\trequest: MarketDataVendorBackfillRequest,\n\tbundles: readonly ArchiveBundleEvidence[],\n): Array<{\n\tbundle: ArchiveBundleEvidence;\n\tanchor: ArchiveSupportAnchorEvidence;\n}> {\n\treturn request.requiredClockTargetsMs.flatMap((targetTimeMs) => {\n\t\tconst candidates = bundles.flatMap((bundle) =>\n\t\t\tbundle.supportAnchors\n\t\t\t\t.filter(\n\t\t\t\t\t(anchor) =>\n\t\t\t\t\t\tanchor.captureBundleId === bundle.captureBundleId &&\n\t\t\t\t\t\tanchor.sourceTimeMs <= targetTimeMs &&\n\t\t\t\t\t\ttargetTimeMs - anchor.sourceTimeMs <= request.maxPriorAsOfLagMs,\n\t\t\t\t)\n\t\t\t\t.map((anchor) => ({ bundle, anchor })),\n\t\t);\n\t\tcandidates.sort((left, right) => {\n\t\t\tconst origin =\n\t\t\t\toriginPriority(request, left.bundle.captureOrigin) -\n\t\t\t\toriginPriority(request, right.bundle.captureOrigin);\n\t\t\tif (origin !== 0) return origin;\n\t\t\tif (left.anchor.sourceTimeMs !== right.anchor.sourceTimeMs) {\n\t\t\t\treturn right.anchor.sourceTimeMs - left.anchor.sourceTimeMs;\n\t\t\t}\n\t\t\treturn left.bundle.captureBundleId.localeCompare(\n\t\t\t\tright.bundle.captureBundleId,\n\t\t\t);\n\t\t});\n\t\treturn candidates[0] ? [candidates[0]] : [];\n\t});\n}\n\nexport function resolveArchiveSelection(input: {\n\trequest: MarketDataVendorBackfillRequest;\n\tbundles: readonly ArchiveBundleEvidence[];\n\tresolvedAtMs: number;\n\tstoredSelection?: unknown;\n}): ArchiveSelectionWire {\n\tif (input.storedSelection !== undefined) {\n\t\tconst stored = archiveSelectionCodec.decode(input.storedSelection);\n\t\tassertStoredSelectionMatchesRequest(input.request, stored);\n\t\treturn stored;\n\t}\n\tconst { request } = input;\n\tif (!request.requiredClock || !request.coveragePolicy) {\n\t\tthrow new Error(\"decoded request is missing final-v1 selection context\");\n\t}\n\tconst eligible = eligibleBundles(request, input.bundles);\n\tconst chosenSupport = chooseSupport(request, eligible);\n\tconst selectedBundleIds = new Set(\n\t\tchosenSupport.map(({ bundle }) => bundle.captureBundleId),\n\t);\n\tconst selectedBundles = eligible\n\t\t.filter((bundle) => selectedBundleIds.has(bundle.captureBundleId))\n\t\t.sort((left, right) => {\n\t\t\tconst origin =\n\t\t\t\toriginPriority(request, left.captureOrigin) -\n\t\t\t\toriginPriority(request, right.captureOrigin);\n\t\t\treturn (\n\t\t\t\torigin || left.captureBundleId.localeCompare(right.captureBundleId)\n\t\t\t);\n\t\t});\n\tconst supportByIdentity = new Map<string, (typeof chosenSupport)[number]>();\n\tfor (const support of chosenSupport) {\n\t\tconst identity = `${support.bundle.captureBundleId}:${support.anchor.rawCaptureId}:${support.anchor.snapshotId}:${support.anchor.sourceTimeMs}`;\n\t\tsupportByIdentity.set(identity, support);\n\t}\n\tconst supportAnchors = [...supportByIdentity.values()]\n\t\t.sort(\n\t\t\t(left, right) =>\n\t\t\t\tleft.anchor.sourceTimeMs - right.anchor.sourceTimeMs ||\n\t\t\t\tleft.bundle.captureBundleId.localeCompare(right.bundle.captureBundleId),\n\t\t)\n\t\t.map(({ bundle, anchor }) => ({\n\t\t\tcapture_bundle_id: bundle.captureBundleId,\n\t\t\traw_capture_id: anchor.rawCaptureId,\n\t\t\tsnapshot_id: anchor.snapshotId,\n\t\t\tsource_time: fixedTimestamp(anchor.sourceTimeMs, \"support anchor time\"),\n\t\t\tnormalized_summary_checksum: anchor.normalizedSummaryChecksum,\n\t\t\tmetadata_ref: {\n\t\t\t\tcapture_origin: bundle.captureOrigin,\n\t\t\t\tqualification_event_id:\n\t\t\t\t\tbundle.qualification?.qualificationEventId ?? null,\n\t\t\t\treceipt_id: bundle.qualification?.receiptId ?? null,\n\t\t\t},\n\t\t}));\n\tconst coverageClass =\n\t\tchosenSupport.length === request.requiredClockTargetsMs.length\n\t\t\t? \"complete\"\n\t\t\t: eligible.length === 0\n\t\t\t\t? \"missing\"\n\t\t\t\t: \"partial\";\n\tconst requestStart = request.window.startTimeMs;\n\tconst requestEnd = request.window.endTimeMs;\n\treturn finalizeArchiveSelection({\n\t\tschema_id: ARCHIVE_SELECTION_SCHEMA_ID,\n\t\tscope: {\n\t\t\texchange: request.scope.exchange,\n\t\t\ttrading_pair: request.scope.tradingPair,\n\t\t\tmarket_type: request.scope.marketType,\n\t\t\tfeed: request.scope.feed,\n\t\t},\n\t\trequired_clock: {\n\t\t\tclock_id: request.requiredClock.clock_id,\n\t\t\tclock_sha256: request.requiredClock.clock_sha256,\n\t\t\tevent_count: request.requiredClock.targets.length,\n\t\t},\n\t\tcoverage_policy: request.coveragePolicy,\n\t\tsource_policy: request.sourcePolicy,\n\t\tcoverage_class: coverageClass,\n\t\trequested_intervals: [\n\t\t\t{\n\t\t\t\tstart_at: fixedTimestamp(requestStart, \"window start\"),\n\t\t\t\tend_at: fixedTimestamp(requestEnd, \"window end\"),\n\t\t\t},\n\t\t],\n\t\tselected_intervals: selectedBundles.map((bundle) => ({\n\t\t\tstart_at: fixedTimestamp(\n\t\t\t\tMath.max(requestStart, bundle.startTimeMs),\n\t\t\t\t\"selected interval start\",\n\t\t\t),\n\t\t\tend_at: fixedTimestamp(\n\t\t\t\tMath.min(requestEnd, bundle.endTimeMs),\n\t\t\t\t\"selected interval end\",\n\t\t\t),\n\t\t\tcapture_bundle_id: bundle.captureBundleId,\n\t\t\tcapture_origin: bundle.captureOrigin,\n\t\t})),\n\t\tprecedence:\n\t\t\trequest.sourcePolicy === \"fill_gaps\" ? [\"archive\", \"vendor\"] : [\"vendor\"],\n\t\tbundles: selectedBundles.map((bundle) => ({\n\t\t\tcapture_bundle_id: bundle.captureBundleId,\n\t\t\tcapture_origin: bundle.captureOrigin,\n\t\t\tinterval: {\n\t\t\t\tstart_at: fixedTimestamp(bundle.startTimeMs, \"bundle interval start\"),\n\t\t\t\tend_at: fixedTimestamp(bundle.endTimeMs, \"bundle interval end\"),\n\t\t\t},\n\t\t\tqualification: bundle.qualification\n\t\t\t\t? {\n\t\t\t\t\t\tqualification_event_id: bundle.qualification.qualificationEventId,\n\t\t\t\t\t\tstate: \"qualified\" as const,\n\t\t\t\t\t\treceipt_id: bundle.qualification.receiptId,\n\t\t\t\t\t\tpromotion_identity_sha256:\n\t\t\t\t\t\t\tbundle.qualification.promotionIdentitySha256,\n\t\t\t\t\t}\n\t\t\t\t: null,\n\t\t})),\n\t\tsupport_anchors: supportAnchors,\n\t\treceipt_ids: [\n\t\t\t...new Set(\n\t\t\t\tselectedBundles.flatMap((bundle) =>\n\t\t\t\t\tbundle.qualification ? [bundle.qualification.receiptId] : [],\n\t\t\t\t),\n\t\t\t),\n\t\t].sort(),\n\t\tqualification_event_ids: [\n\t\t\t...new Set(\n\t\t\t\tselectedBundles.flatMap((bundle) =>\n\t\t\t\t\tbundle.qualification\n\t\t\t\t\t\t? [bundle.qualification.qualificationEventId]\n\t\t\t\t\t\t: [],\n\t\t\t\t),\n\t\t\t),\n\t\t].sort(),\n\t\tresolved_at: fixedTimestamp(input.resolvedAtMs, \"resolved_at\"),\n\t});\n}\n\nexport function archiveSelectionToArchiveRow(\n\trequest: BackfillRequestWire,\n\tselectionInput: ArchiveSelectionWire,\n): BackfillArchiveRow {\n\tconst selection = archiveSelectionCodec.decode(selectionInput);\n\tif (\n\t\tselection.required_clock.clock_sha256 !==\n\t\t\trequest.required_clock.clock_sha256 ||\n\t\tselection.source_policy !== request.source_policy ||\n\t\tjcsSha256(selection.scope) !== jcsSha256(request.scope) ||\n\t\tjcsSha256(selection.coverage_policy) !== jcsSha256(request.coverage_policy)\n\t) {\n\t\tthrow new Error(\"archive selection does not match request\");\n\t}\n\treturn {\n\t\ttable: \"market_data.cex_order_book_archive_selections\",\n\t\trow: {\n\t\t\tsource: \"external_backfill\",\n\t\t\tdeployment_id: \"market-data-vendor-backfill\",\n\t\t\trequest_id: request.request_id,\n\t\t\tidempotency_key: request.idempotency_key,\n\t\t\tselection_sha256: selection.selection_sha256,\n\t\t\tcoverage_class: selection.coverage_class,\n\t\t\treceipt_ids: selection.receipt_ids,\n\t\t\trequest_json: jcsCanonicalize(request),\n\t\t\tselection_json: jcsCanonicalize(selection),\n\t\t\tresolved_at_ms: Date.parse(selection.resolved_at),\n\t\t},\n\t};\n}\n\nexport function archiveSelectionFromArchiveRow(\n\trow: Record<string, unknown>,\n): ArchiveSelectionWire {\n\tlet parsed: unknown;\n\tlet parsedRequest: unknown;\n\ttry {\n\t\tparsed = JSON.parse(String(row.selection_json));\n\t\tparsedRequest = JSON.parse(String(row.request_json));\n\t} catch {\n\t\tthrow new Error(\"archive selection or request JSON is invalid\");\n\t}\n\tconst selection = archiveSelectionCodec.decode(parsed);\n\tconst request = backfillRequestCodec.decode(parsedRequest).wire;\n\tarchiveSelectionToArchiveRow(request, selection);\n\tif (\n\t\trow.source !== \"external_backfill\" ||\n\t\trow.deployment_id !== \"market-data-vendor-backfill\" ||\n\t\trow.request_id !== request.request_id ||\n\t\trow.idempotency_key !== request.idempotency_key ||\n\t\trow.selection_sha256 !== selection.selection_sha256 ||\n\t\trow.coverage_class !== selection.coverage_class ||\n\t\tjcsCanonicalize(row.receipt_ids) !==\n\t\t\tjcsCanonicalize(selection.receipt_ids) ||\n\t\trow.resolved_at_ms !== Date.parse(selection.resolved_at)\n\t) {\n\t\tthrow new Error(\"archive selection row does not match selection JSON\");\n\t}\n\treturn selection;\n}\n",
|
|
191
|
+
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport type {\n\tBackfillArchiveRow,\n\tMarketDataVendorBackfillRequest,\n\tPromotionReceiptWire,\n} from \"./contracts\";\nimport { archiveSelectionCodec } from \"./contracts\";\nimport type {\n\tArchivePreflightResolution,\n\tCandidateVerification,\n\tNormalizedBackfill,\n\tQualifiedCoverage,\n} from \"./core\";\nimport { jcsCanonicalize } from \"./identity\";\nimport {\n\tpromotionReceiptFromArchiveRow,\n\tpromotionReceiptMatchesCurrentPolicies,\n} from \"./promotion\";\nimport {\n\ttype ArchiveBundleEvidence,\n\tresolveArchiveSelection,\n} from \"./selection\";\nimport { verifySemanticPromotion } from \"./semantic-verification\";\n\nexport type ArchiveQueryValue = string | number | readonly string[];\nexport type ArchiveQueryClient = {\n\tquery(\n\t\tsql: string,\n\t\tparameters?: Readonly<Record<string, ArchiveQueryValue>>,\n\t): Promise<Record<string, unknown>[]>;\n};\n\nexport type QualifiedArchiveReaderOptions = { nowMs?: () => number };\n\nconst QUALIFIED_SUMMARY =\n\t\"market_data.cex_order_book_depth_summary_replay_qualified\";\nconst QUALIFIED_LEVELS = \"market_data.cex_order_book_levels_replay_qualified\";\nconst CANDIDATE_SUMMARY = \"market_data.cex_order_book_depth_summary_canonical\";\nconst CANDIDATE_LEVELS = \"market_data.cex_order_book_levels_canonical\";\n\nclass ArchiveReaderError extends Error {\n\tconstructor(readonly reason: string) {\n\t\tsuper(reason);\n\t\tthis.name = \"ArchiveReaderError\";\n\t}\n}\n\nasync function archiveQuery(\n\tclient: ArchiveQueryClient,\n\treason: string,\n\tsql: string,\n\tparameters?: Readonly<Record<string, ArchiveQueryValue>>,\n): Promise<Record<string, unknown>[]> {\n\ttry {\n\t\treturn await client.query(sql, parameters);\n\t} catch {\n\t\tthrow new ArchiveReaderError(reason);\n\t}\n}\n\nfunction queryParameters(request: MarketDataVendorBackfillRequest) {\n\treturn {\n\t\texchange: request.scope.exchange,\n\t\ttrading_pair: request.scope.tradingPair,\n\t\tstart_time_ms: request.window.startTimeMs,\n\t\tend_time_ms: request.window.endTimeMs,\n\t\tdepth_limit: request.depth,\n\t\tconstruction_mode: request.constructionMode,\n\t\tschema_version: request.expectedProduct.canonicalSchemaVersion,\n\t};\n}\n\nfunction scopeFilter(alias = \"\") {\n\tconst prefix = alias ? `${alias}.` : \"\";\n\treturn `\n${prefix}exchange = {exchange:String}\nAND ${prefix}trading_pair = {trading_pair:String}\nAND ${prefix}depth_limit = {depth_limit:UInt16}\nAND ${prefix}construction_mode = {construction_mode:String}\nAND ${prefix}schema_version = {schema_version:String}`;\n}\n\nfunction numberField(row: Record<string, unknown>, field: string): number {\n\tconst value = row[field];\n\tconst parsed = typeof value === \"number\" ? value : Number(value);\n\tif (!Number.isSafeInteger(parsed) || parsed < 0) {\n\t\tthrow new Error(`Archive field ${field} is not a safe unsigned integer`);\n\t}\n\treturn parsed;\n}\n\nfunction uint64Field(\n\trow: Record<string, unknown>,\n\tfield: string,\n): bigint | undefined {\n\tconst value = row[field];\n\tif (value === null || value === undefined) return undefined;\n\tif (typeof value === \"number\") {\n\t\treturn Number.isSafeInteger(value) && value >= 0\n\t\t\t? BigInt(value)\n\t\t\t: undefined;\n\t}\n\tif (typeof value !== \"string\" || !/^\\d+$/.test(value)) return undefined;\n\tconst parsed = BigInt(value);\n\treturn parsed <= 18_446_744_073_709_551_615n ? parsed : undefined;\n}\n\nfunction timelineDigest(rows: readonly Record<string, unknown>[]): string {\n\treturn sha256Canonical(\n\t\trows\n\t\t\t.map((row) => ({\n\t\t\t\ttable: String(row.table ?? \"summary\"),\n\t\t\t\tsnapshot_id: String(row.snapshot_id ?? \"\"),\n\t\t\t\tsource_time_ms: numberField(row, \"source_time_ms\"),\n\t\t\t\tnormalized_row_checksum: String(row.normalized_row_checksum ?? \"\"),\n\t\t\t}))\n\t\t\t.sort((left, right) =>\n\t\t\t\tleft.source_time_ms === right.source_time_ms\n\t\t\t\t\t? left.normalized_row_checksum.localeCompare(\n\t\t\t\t\t\t\tright.normalized_row_checksum,\n\t\t\t\t\t\t)\n\t\t\t\t\t: left.source_time_ms - right.source_time_ms,\n\t\t\t),\n\t);\n}\n\nfunction clocksCovered(\n\trequest: MarketDataVendorBackfillRequest,\n\trows: readonly Record<string, unknown>[],\n): boolean {\n\tconst times = rows\n\t\t.map((row) => numberField(row, \"source_time_ms\"))\n\t\t.sort((left, right) => left - right);\n\treturn request.requiredClockTargetsMs.every((target) => {\n\t\tlet prior: number | undefined;\n\t\tfor (const sourceTime of times) {\n\t\t\tif (sourceTime > target) break;\n\t\t\tprior = sourceTime;\n\t\t}\n\t\treturn prior !== undefined && target - prior <= request.maxPriorAsOfLagMs;\n\t});\n}\n\nfunction candidateRows(\n\ttable:\n\t\t| \"market_data.cex_order_book_levels\"\n\t\t| \"market_data.cex_order_book_depth_summary\",\n\trows: Record<string, unknown>[],\n): BackfillArchiveRow[] {\n\treturn rows.map((row) => ({ table, row }));\n}\n\nexport class QualifiedOrderBookArchiveReader {\n\tconstructor(\n\t\tprivate readonly client: ArchiveQueryClient,\n\t\tprivate readonly options?: QualifiedArchiveReaderOptions,\n\t) {}\n\n\tasync resolveSelection(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t): Promise<ArchivePreflightResolution> {\n\t\tconst identityRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_cluster_identity_query_failed\",\n\t\t\t`SELECT environment, cluster\n\t\t\t FROM market_data.cex_archive_cluster_identity FINAL\n\t\t\t WHERE singleton_key = 'archive'\n\t\t\t LIMIT 2`,\n\t\t);\n\t\tif (identityRows.length !== 1) {\n\t\t\tthrow new Error(\n\t\t\t\t\"archive cluster identity singleton is missing or conflicting\",\n\t\t\t);\n\t\t}\n\t\tconst readerIdentity = {\n\t\t\tenvironment: String(identityRows[0]?.environment ?? \"\"),\n\t\t\tcluster: String(identityRows[0]?.cluster ?? \"\"),\n\t\t};\n\t\tconst conflictRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_selection_conflict_query_failed\",\n\t\t\t`SELECT count() AS conflicts\n\t\t\t FROM\n\t\t\t (\n\t\t\t SELECT conflict.capture_bundle_id, conflict.snapshot_id\n\t\t\t FROM market_data.cex_order_book_levels_conflicts AS conflict\n\t\t\t INNER JOIN\n\t\t\t (\n\t\t\t SELECT DISTINCT capture_bundle_id, snapshot_id\n\t\t\t FROM market_data.cex_order_book_depth_summary\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ) AS selected USING (capture_bundle_id, snapshot_id)\n\t\t\t UNION ALL\n\t\t\t SELECT conflict.capture_bundle_id, conflict.snapshot_id\n\t\t\t FROM market_data.cex_order_book_depth_summary_conflicts AS conflict\n\t\t\t INNER JOIN\n\t\t\t (\n\t\t\t SELECT DISTINCT capture_bundle_id, snapshot_id\n\t\t\t FROM market_data.cex_order_book_depth_summary\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ) AS selected USING (capture_bundle_id, snapshot_id)\n\t\t\t )`,\n\t\t\tqueryParameters(request),\n\t\t);\n\t\tif (\n\t\t\tconflictRows.length !== 1 ||\n\t\t\t!Number.isSafeInteger(Number(conflictRows[0]?.conflicts)) ||\n\t\t\tNumber(conflictRows[0]?.conflicts) < 0\n\t\t) {\n\t\t\tthrow new ArchiveReaderError(\"archive_selection_conflict_query_invalid\");\n\t\t}\n\t\tif (Number(conflictRows[0]?.conflicts) > 0) {\n\t\t\tthrow new ArchiveReaderError(\"archive_selection_checksum_conflict\");\n\t\t}\n\t\tconst storedRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_stored_selection_query_failed\",\n\t\t\t`SELECT selection_sha256, selection_json\n\t\t\t FROM market_data.cex_order_book_archive_selections\n\t\t\t WHERE idempotency_key = {idempotency_key:String}\n\t\t\t ORDER BY resolved_at_ms, selection_sha256`,\n\t\t\t{ idempotency_key: request.idempotencyKey },\n\t\t);\n\t\tif (storedRows.length > 0) {\n\t\t\tconst selections = storedRows.map((row) => {\n\t\t\t\tlet parsed: unknown;\n\t\t\t\ttry {\n\t\t\t\t\tparsed = JSON.parse(String(row.selection_json));\n\t\t\t\t} catch {\n\t\t\t\t\tthrow new Error(\"stored archive selection JSON is invalid\");\n\t\t\t\t}\n\t\t\t\tconst selection = archiveSelectionCodec.decode(parsed);\n\t\t\t\tif (selection.selection_sha256 !== row.selection_sha256) {\n\t\t\t\t\tthrow new Error(\"stored archive selection row identity mismatch\");\n\t\t\t\t}\n\t\t\t\treturn selection;\n\t\t\t});\n\t\t\tconst canonical = new Set(selections.map(jcsCanonicalize));\n\t\t\tif (canonical.size !== 1) {\n\t\t\t\tthrow new Error(\"stored archive selection content conflicts\");\n\t\t\t}\n\t\t\tconst selection = resolveArchiveSelection({\n\t\t\t\trequest,\n\t\t\t\tbundles: [],\n\t\t\t\tresolvedAtMs: this.options?.nowMs?.() ?? Date.now(),\n\t\t\t\tstoredSelection: selections[0],\n\t\t\t});\n\t\t\tconst receipts = await this.readReceipts(selection.receipt_ids);\n\t\t\tconst currentReceiptIds = new Set(\n\t\t\t\treceipts\n\t\t\t\t\t.filter(promotionReceiptMatchesCurrentPolicies)\n\t\t\t\t\t.map((receipt) => receipt.receipt_id),\n\t\t\t);\n\t\t\tconst storedSelectionIsCurrent = selection.bundles.every(\n\t\t\t\t(bundle) =>\n\t\t\t\t\tbundle.capture_origin === \"production_capture\" ||\n\t\t\t\t\t(bundle.qualification !== null &&\n\t\t\t\t\t\tcurrentReceiptIds.has(bundle.qualification.receipt_id)),\n\t\t\t);\n\t\t\tif (storedSelectionIsCurrent) {\n\t\t\t\treturn {\n\t\t\t\t\tselection,\n\t\t\t\t\treceipts: receipts.filter(promotionReceiptMatchesCurrentPolicies),\n\t\t\t\t\treaderIdentity,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst parameters = {\n\t\t\t...queryParameters(request),\n\t\t\tcoverage_start_ms: Math.max(\n\t\t\t\t0,\n\t\t\t\trequest.window.startTimeMs - request.maxPriorAsOfLagMs,\n\t\t\t),\n\t\t};\n\t\tconst summaries = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_qualified_summary_query_failed\",\n\t\t\t`SELECT capture_bundle_id, raw_capture_id, snapshot_id,\n\t\t\t source_time_ms, normalized_row_checksum, source\n\t\t\t FROM ${QUALIFIED_SUMMARY}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {coverage_start_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ORDER BY source_time_ms, capture_bundle_id, snapshot_id`,\n\t\t\tparameters,\n\t\t);\n\t\tconst bundleIds = [\n\t\t\t...new Set(summaries.map((row) => String(row.capture_bundle_id))),\n\t\t].filter(Boolean);\n\t\tconst qualificationRows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_qualification_query_failed\",\n\t\t\t`SELECT capture_bundle_id, qualification_event_id, state, receipt_id,\n\t\t\t promotion_identity_sha256, window_start_ms, window_end_ms\n\t\t\t FROM market_data.cex_order_book_capture_qualifications\n\t\t\t WHERE capture_bundle_id IN {capture_bundle_ids:Array(String)}\n\t\t\t ORDER BY event_at_ms DESC\n\t\t\t LIMIT 1 BY capture_bundle_id`,\n\t\t\t{ capture_bundle_ids: bundleIds },\n\t\t);\n\t\tconst qualificationByBundle = new Map(\n\t\t\tqualificationRows.map((row) => [String(row.capture_bundle_id), row]),\n\t\t);\n\t\tconst receiptIds = qualificationRows\n\t\t\t.map((row) => String(row.receipt_id ?? \"\"))\n\t\t\t.filter(Boolean);\n\t\tconst receipts = await this.readReceipts(receiptIds);\n\t\tconst currentReceipts = receipts.filter(\n\t\t\tpromotionReceiptMatchesCurrentPolicies,\n\t\t);\n\t\tconst receiptIdsSet = new Set(\n\t\t\tcurrentReceipts.map((receipt) => receipt.receipt_id),\n\t\t);\n\t\tconst grouped = new Map<string, ArchiveBundleEvidence>();\n\t\tfor (const row of summaries) {\n\t\t\tconst captureBundleId = String(row.capture_bundle_id);\n\t\t\tconst captureOrigin =\n\t\t\t\tString(row.source) === \"external_backfill\"\n\t\t\t\t\t? \"vendor_historical_backfill\"\n\t\t\t\t\t: \"production_capture\";\n\t\t\tconst qualificationRow = qualificationByBundle.get(captureBundleId);\n\t\t\tconst receiptId = String(qualificationRow?.receipt_id ?? \"\");\n\t\t\tconst qualification =\n\t\t\t\tcaptureOrigin === \"vendor_historical_backfill\" && qualificationRow\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tqualificationEventId: String(\n\t\t\t\t\t\t\t\tqualificationRow.qualification_event_id,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tstate: String(qualificationRow.state) as\n\t\t\t\t\t\t\t\t| \"qualified\"\n\t\t\t\t\t\t\t\t| \"quarantined\"\n\t\t\t\t\t\t\t\t| \"revoked\",\n\t\t\t\t\t\t\treceiptId,\n\t\t\t\t\t\t\tpromotionIdentitySha256: String(\n\t\t\t\t\t\t\t\tqualificationRow.promotion_identity_sha256,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t}\n\t\t\t\t\t: null;\n\t\t\tif (\n\t\t\t\tcaptureOrigin === \"vendor_historical_backfill\" &&\n\t\t\t\t(!qualification || !receiptIdsSet.has(receiptId))\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sourceTimeMs = numberField(row, \"source_time_ms\");\n\t\t\tconst startTimeMs = qualificationRow\n\t\t\t\t? numberField(qualificationRow, \"window_start_ms\")\n\t\t\t\t: sourceTimeMs;\n\t\t\tconst endTimeMs = qualificationRow\n\t\t\t\t? numberField(qualificationRow, \"window_end_ms\")\n\t\t\t\t: sourceTimeMs + 1;\n\t\t\tconst existing = grouped.get(captureBundleId) ?? {\n\t\t\t\tcaptureBundleId,\n\t\t\t\tcaptureOrigin,\n\t\t\t\tstartTimeMs,\n\t\t\t\tendTimeMs,\n\t\t\t\tqualification,\n\t\t\t\tsupportAnchors: [],\n\t\t\t};\n\t\t\texisting.startTimeMs = Math.min(existing.startTimeMs, startTimeMs);\n\t\t\texisting.endTimeMs = Math.max(existing.endTimeMs, endTimeMs);\n\t\t\texisting.supportAnchors.push({\n\t\t\t\tcaptureBundleId,\n\t\t\t\trawCaptureId: String(row.raw_capture_id),\n\t\t\t\tsnapshotId: String(row.snapshot_id),\n\t\t\t\tsourceTimeMs,\n\t\t\t\tnormalizedSummaryChecksum: String(row.normalized_row_checksum),\n\t\t\t});\n\t\t\tgrouped.set(captureBundleId, existing);\n\t\t}\n\t\tconst [prefix, suffix] = await Promise.all([\n\t\t\tthis.boundaryRows(request, \"prefix\"),\n\t\t\tthis.boundaryRows(request, \"suffix\"),\n\t\t]);\n\t\tconst selection = resolveArchiveSelection({\n\t\t\trequest,\n\t\t\tbundles: [...grouped.values()],\n\t\t\tresolvedAtMs: this.options?.nowMs?.() ?? Date.now(),\n\t\t});\n\t\treturn {\n\t\t\tselection,\n\t\t\treceipts: currentReceipts,\n\t\t\treaderIdentity,\n\t\t\tverificationBaseline: {\n\t\t\t\tprefixDigest: timelineDigest(prefix),\n\t\t\t\tsuffixDigest: timelineDigest(suffix),\n\t\t\t},\n\t\t};\n\t}\n\n\tprivate async readReceipts(\n\t\treceiptIds: readonly string[],\n\t): Promise<PromotionReceiptWire[]> {\n\t\tif (receiptIds.length === 0) return [];\n\t\tconst rows = await archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_receipt_query_failed\",\n\t\t\t`SELECT receipt_id, promotion_identity_sha256, receipt_json\n\t\t\t FROM market_data.cex_order_book_capture_promotions\n\t\t\t WHERE receipt_id IN {receipt_ids:Array(String)}\n\t\t\t ORDER BY receipt_id`,\n\t\t\t{ receipt_ids: [...new Set(receiptIds)].sort() },\n\t\t);\n\t\tlet receipts: Array<PromotionReceiptWire | object>;\n\t\ttry {\n\t\t\treceipts = rows.map((row) => promotionReceiptFromArchiveRow(row));\n\t\t} catch {\n\t\t\tthrow new ArchiveReaderError(\"archive_receipt_invalid\");\n\t\t}\n\t\tif (receipts.some((receipt) => !(\"schema_id\" in receipt))) {\n\t\t\tthrow new Error(\n\t\t\t\t\"provisional promotion receipt cannot qualify final-v1 data\",\n\t\t\t);\n\t\t}\n\t\treturn receipts as PromotionReceiptWire[];\n\t}\n\n\tasync coverage(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t): Promise<QualifiedCoverage> {\n\t\tconst parameters = queryParameters(request);\n\t\tconst summaries = await this.client.query(\n\t\t\t`SELECT snapshot_id, source_time_ms, normalized_row_checksum\n\t\t\t FROM ${QUALIFIED_SUMMARY}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {coverage_start_ms:UInt64}\n\t\t\t AND source_time_ms < {end_time_ms:UInt64}\n\t\t\t ORDER BY source_time_ms, snapshot_id`,\n\t\t\t{\n\t\t\t\t...parameters,\n\t\t\t\tcoverage_start_ms: Math.max(\n\t\t\t\t\t0,\n\t\t\t\t\trequest.window.startTimeMs - request.maxPriorAsOfLagMs,\n\t\t\t\t),\n\t\t\t},\n\t\t);\n\t\tconst [prefix, suffix] = await Promise.all([\n\t\t\tthis.boundaryRows(request, \"prefix\"),\n\t\t\tthis.boundaryRows(request, \"suffix\"),\n\t\t]);\n\t\treturn {\n\t\t\tcomplete: clocksCovered(request, summaries),\n\t\t\tcoverageDigest: timelineDigest(summaries),\n\t\t\tprefixDigest: timelineDigest(prefix),\n\t\t\tsuffixDigest: timelineDigest(suffix),\n\t\t};\n\t}\n\n\tprivate boundaryRows(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tside: \"prefix\" | \"suffix\",\n\t): Promise<Record<string, unknown>[]> {\n\t\tconst boundary =\n\t\t\tside === \"prefix\" ? request.window.startTimeMs : request.window.endTimeMs;\n\t\tconst span = Math.max(\n\t\t\trequest.maxPriorAsOfLagMs,\n\t\t\trequest.budgets.maxBoundaryLookbackMs,\n\t\t);\n\t\tconst boundaryStart =\n\t\t\tside === \"prefix\" ? Math.max(0, boundary - span) : boundary;\n\t\tconst boundaryEnd =\n\t\t\tside === \"prefix\"\n\t\t\t\t? boundary\n\t\t\t\t: Math.min(Number.MAX_SAFE_INTEGER, boundary + span);\n\t\treturn archiveQuery(\n\t\t\tthis.client,\n\t\t\t\"archive_boundary_query_failed\",\n\t\t\t`SELECT 'level' AS table, snapshot_id, source_time_ms, sequence,\n\t\t\t normalized_row_checksum\n\t\t\t FROM ${QUALIFIED_LEVELS}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {boundary_start_ms:UInt64}\n\t\t\t AND source_time_ms < {boundary_end_ms:UInt64}\n\t\t\t UNION ALL\n\t\t\t SELECT 'summary' AS table, snapshot_id, source_time_ms, sequence,\n\t\t\t normalized_row_checksum\n\t\t\t FROM ${QUALIFIED_SUMMARY}\n\t\t\t WHERE ${scopeFilter()}\n\t\t\t AND source_time_ms >= {boundary_start_ms:UInt64}\n\t\t\t AND source_time_ms < {boundary_end_ms:UInt64}\n\t\t\t ORDER BY source_time_ms, table, snapshot_id, normalized_row_checksum`,\n\t\t\t{\n\t\t\t\t...queryParameters(request),\n\t\t\t\tboundary_start_ms: boundaryStart,\n\t\t\t\tboundary_end_ms: boundaryEnd,\n\t\t\t},\n\t\t);\n\t}\n\n\tasync verifyCandidate(\n\t\trequest: MarketDataVendorBackfillRequest,\n\t\tnormalized: NormalizedBackfill,\n\t\tcaptureBundleId: string,\n\t\tbaseline: ArchivePreflightResolution,\n\t): Promise<CandidateVerification> {\n\t\tif (!baseline.verificationBaseline) {\n\t\t\tthrow new Error(\"qualified verification baseline is missing\");\n\t\t}\n\t\tconst parameters = {\n\t\t\t...queryParameters(request),\n\t\t\tcapture_bundle_id: captureBundleId,\n\t\t};\n\t\tconst [levels, summaries, conflicts, prefix, suffix] = await Promise.all([\n\t\t\tthis.client.query(\n\t\t\t\t`SELECT * FROM ${CANDIDATE_LEVELS}\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t AND ${scopeFilter()}\n\t\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t\t AND source_time_ms < {end_time_ms:UInt64}`,\n\t\t\t\tparameters,\n\t\t\t),\n\t\t\tthis.client.query(\n\t\t\t\t`SELECT * FROM ${CANDIDATE_SUMMARY}\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t AND ${scopeFilter()}\n\t\t\t\t AND source_time_ms >= {start_time_ms:UInt64}\n\t\t\t\t AND source_time_ms < {end_time_ms:UInt64}`,\n\t\t\t\tparameters,\n\t\t\t),\n\t\t\tthis.client.query(\n\t\t\t\t`SELECT count() AS conflicts FROM\n\t\t\t\t (\n\t\t\t\t SELECT snapshot_id FROM market_data.cex_order_book_levels_conflicts\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t UNION ALL\n\t\t\t\t SELECT snapshot_id FROM market_data.cex_order_book_depth_summary_conflicts\n\t\t\t\t WHERE capture_bundle_id = {capture_bundle_id:String}\n\t\t\t\t )`,\n\t\t\t\tparameters,\n\t\t\t),\n\t\t\tthis.boundaryRows(request, \"prefix\"),\n\t\t\tthis.boundaryRows(request, \"suffix\"),\n\t\t]);\n\t\tconst queriedRows = [\n\t\t\t...candidateRows(\"market_data.cex_order_book_levels\", levels),\n\t\t\t...candidateRows(\"market_data.cex_order_book_depth_summary\", summaries),\n\t\t];\n\t\tconst semantic = verifySemanticPromotion({\n\t\t\trequest,\n\t\t\tnormalizedRows: normalized.rows,\n\t\t\tcandidateRows: queriedRows,\n\t\t\tconflictCount: Number(conflicts[0]?.conflicts ?? 0),\n\t\t\tprefixDigestBefore: baseline.verificationBaseline.prefixDigest,\n\t\t\tprefixDigestAfter: timelineDigest(prefix),\n\t\t\tsuffixDigestBefore: baseline.verificationBaseline.suffixDigest,\n\t\t\tsuffixDigestAfter: timelineDigest(suffix),\n\t\t\tseamVerified: this.seamIsOrdered(queriedRows),\n\t\t\texporterCompatible: queriedRows.every(\n\t\t\t\t({ row }) =>\n\t\t\t\t\ttypeof row.capture_bundle_id === \"string\" &&\n\t\t\t\t\ttypeof row.normalized_row_checksum === \"string\",\n\t\t\t),\n\t\t\t...(request.sourcePolicy === \"fill_gaps\"\n\t\t\t\t? {\n\t\t\t\t\t\tcoverageSourceTimesMs: [\n\t\t\t\t\t\t\t...baseline.selection.support_anchors.map((anchor) =>\n\t\t\t\t\t\t\t\tDate.parse(anchor.source_time),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t...summaries.map((row) => numberField(row, \"source_time_ms\")),\n\t\t\t\t\t\t],\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t});\n\t\treturn { ...semantic, captureBundleId };\n\t}\n\n\tprivate seamIsOrdered(rows: readonly BackfillArchiveRow[]): boolean {\n\t\tconst summaries = rows\n\t\t\t.filter(({ table }) => table.endsWith(\"depth_summary\"))\n\t\t\t.map(({ row }) => ({\n\t\t\t\ttime: numberField(row, \"source_time_ms\"),\n\t\t\t\tsequence: uint64Field(row, \"sequence\"),\n\t\t\t}))\n\t\t\t.sort((left, right) => left.time - right.time);\n\t\tfor (let index = 1; index < summaries.length; index += 1) {\n\t\t\tconst previous = summaries[index - 1];\n\t\t\tconst current = summaries[index];\n\t\t\tif (!previous || !current || current.time < previous.time) return false;\n\t\t\tif (\n\t\t\t\tprevious.sequence !== undefined &&\n\t\t\t\tcurrent.sequence !== undefined &&\n\t\t\t\tcurrent.sequence < previous.sequence\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn summaries.length > 0;\n\t}\n}\n\nexport function createClickHouseArchiveQueryClient(input: {\n\turl: string;\n\tusername?: string;\n\tpassword?: string;\n\tfetch?: typeof fetch;\n}): ArchiveQueryClient {\n\tconst request = input.fetch ?? fetch;\n\tconst parameterValue = (value: ArchiveQueryValue): string => {\n\t\tif (!Array.isArray(value)) return String(value);\n\t\treturn `[${value\n\t\t\t.map((entry) => {\n\t\t\t\tconst jsonString = JSON.stringify(entry);\n\t\t\t\treturn `'${jsonString.slice(1, -1).replaceAll(\"'\", \"\\\\'\")}'`;\n\t\t\t})\n\t\t\t.join(\",\")}]`;\n\t};\n\treturn {\n\t\tasync query(sql, parameters = {}) {\n\t\t\tconst endpoint = new URL(input.url);\n\t\t\tconst embeddedUsername = decodeURIComponent(endpoint.username);\n\t\t\tconst embeddedPassword = decodeURIComponent(endpoint.password);\n\t\t\tendpoint.username = \"\";\n\t\t\tendpoint.password = \"\";\n\t\t\tendpoint.searchParams.set(\"database\", \"market_data\");\n\t\t\tfor (const [key, value] of Object.entries(parameters)) {\n\t\t\t\tendpoint.searchParams.set(`param_${key}`, parameterValue(value));\n\t\t\t}\n\t\t\tconst response = await request(endpoint, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"X-ClickHouse-User\": input.username || embeddedUsername || \"default\",\n\t\t\t\t\t\"X-ClickHouse-Key\": input.password ?? embeddedPassword,\n\t\t\t\t},\n\t\t\t\tbody: `${sql.trim()}\\nFORMAT JSONEachRow`,\n\t\t\t});\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(`qualified_archive_query_failed:${response.status}`);\n\t\t\t}\n\t\t\tconst text = (await response.text()).trim();\n\t\t\treturn text\n\t\t\t\t? text\n\t\t\t\t\t\t.split(\"\\n\")\n\t\t\t\t\t\t.map((line) => JSON.parse(line) as Record<string, unknown>)\n\t\t\t\t: [];\n\t\t},\n\t};\n}\n",
|
|
187
192
|
"import type {\n\tBackfillArchiveRow,\n\tFixedUtcTimestamp,\n\tSha256Hex,\n} from \"./contracts\";\nimport { jcsCanonicalize, jcsSha256 } from \"./identity\";\n\nexport type QualificationEvent = {\n\tqualification_event_id: string;\n\tcapture_bundle_id: Sha256Hex;\n\tstate: \"qualified\" | \"quarantined\" | \"revoked\";\n\treceipt_id: Sha256Hex;\n\tpromotion_identity_sha256: Sha256Hex;\n\twindow: { start_at: FixedUtcTimestamp; end_at: FixedUtcTimestamp };\n\tevent_at: FixedUtcTimestamp;\n\treason_code: string;\n};\n\ntype UnfinalizedQualificationEvent = Omit<\n\tQualificationEvent,\n\t\"qualification_event_id\"\n> &\n\tPartial<Pick<QualificationEvent, \"qualification_event_id\">>;\n\nconst UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\nconst SHA256 = /^[0-9a-f]{64}$/;\nconst REASON = /^[a-z][a-z0-9_]{0,127}$/;\nconst EVENT_FIELDS = new Set([\n\t\"qualification_event_id\",\n\t\"capture_bundle_id\",\n\t\"state\",\n\t\"receipt_id\",\n\t\"promotion_identity_sha256\",\n\t\"window\",\n\t\"event_at\",\n\t\"reason_code\",\n]);\n\nfunction deterministicUuid(value: unknown): string {\n\tconst digest = jcsSha256(value).slice(0, 32).split(\"\");\n\tdigest[12] = \"5\";\n\tdigest[16] = \"8\";\n\tconst hex = digest.join(\"\");\n\treturn `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;\n}\n\nfunction semanticEvent(\n\tevent: UnfinalizedQualificationEvent,\n): Omit<QualificationEvent, \"qualification_event_id\"> {\n\tconst { qualification_event_id: _eventId, ...semantic } = event;\n\treturn semantic;\n}\n\nfunction assertTimestamp(value: string, field: string): number {\n\tconst parsed = Date.parse(value);\n\tif (\n\t\t!Number.isSafeInteger(parsed) ||\n\t\tnew Date(parsed).toISOString() !== value\n\t) {\n\t\tthrow new Error(`${field} must be a fixed UTC RFC3339 timestamp`);\n\t}\n\treturn parsed;\n}\n\nexport function parseQualificationEvent(value: unknown): QualificationEvent {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\tthrow new Error(\"qualification event must be an object\");\n\t}\n\tconst event = value as QualificationEvent;\n\tif (\n\t\tObject.keys(event).length !== EVENT_FIELDS.size ||\n\t\t!Object.keys(event).every((field) => EVENT_FIELDS.has(field)) ||\n\t\t!UUID.test(event.qualification_event_id) ||\n\t\t!SHA256.test(event.capture_bundle_id) ||\n\t\t![\"qualified\", \"quarantined\", \"revoked\"].includes(event.state) ||\n\t\t!SHA256.test(event.receipt_id) ||\n\t\t!SHA256.test(event.promotion_identity_sha256) ||\n\t\t!event.window ||\n\t\ttypeof event.window !== \"object\" ||\n\t\tObject.keys(event.window).length !== 2 ||\n\t\t!REASON.test(event.reason_code)\n\t) {\n\t\tthrow new Error(\"qualification event fields are invalid\");\n\t}\n\tif (\n\t\tassertTimestamp(event.window.end_at, \"window.end_at\") <=\n\t\tassertTimestamp(event.window.start_at, \"window.start_at\")\n\t) {\n\t\tthrow new Error(\"qualification window must be increasing\");\n\t}\n\tassertTimestamp(event.event_at, \"event_at\");\n\tif (\n\t\tdeterministicUuid(semanticEvent(event)) !== event.qualification_event_id\n\t) {\n\t\tthrow new Error(\"qualification_event_id does not match event content\");\n\t}\n\treturn event;\n}\n\nexport function finalizeQualificationEvent(\n\tevent: UnfinalizedQualificationEvent,\n): QualificationEvent {\n\tconst semantic = semanticEvent(event);\n\treturn parseQualificationEvent({\n\t\t...semantic,\n\t\tqualification_event_id: deterministicUuid(semantic),\n\t});\n}\n\nexport function qualificationEventToArchiveRow(\n\teventInput: QualificationEvent,\n): BackfillArchiveRow {\n\tconst event = parseQualificationEvent(eventInput);\n\treturn {\n\t\ttable: \"market_data.cex_order_book_capture_qualifications\",\n\t\trow: {\n\t\t\tsource: \"external_backfill\",\n\t\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\t\tsource_mode: \"vendor_historical_backfill_v1\",\n\t\t\tdeployment_id: \"market-data-vendor-backfill\",\n\t\t\tqualification_event_id: event.qualification_event_id,\n\t\t\tcapture_bundle_id: event.capture_bundle_id,\n\t\t\tstate: event.state,\n\t\t\treceipt_id: event.receipt_id,\n\t\t\tpromotion_identity_sha256: event.promotion_identity_sha256,\n\t\t\twindow_start_ms: Date.parse(event.window.start_at),\n\t\t\twindow_end_ms: Date.parse(event.window.end_at),\n\t\t\tevent_at_ms: Date.parse(event.event_at),\n\t\t\treason_code: event.reason_code,\n\t\t\tevent_json: jcsCanonicalize(event),\n\t\t},\n\t};\n}\n\nexport function qualificationEventFromArchiveRow(\n\trow: Record<string, unknown>,\n): QualificationEvent {\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(String(row.event_json));\n\t} catch {\n\t\tthrow new Error(\"qualification event_json is invalid\");\n\t}\n\tconst event = parseQualificationEvent(parsed);\n\tif (\n\t\trow.source !== \"external_backfill\" ||\n\t\trow.capture_origin !== \"vendor_historical_backfill\" ||\n\t\trow.source_mode !== \"vendor_historical_backfill_v1\" ||\n\t\trow.deployment_id !== \"market-data-vendor-backfill\" ||\n\t\trow.qualification_event_id !== event.qualification_event_id ||\n\t\trow.capture_bundle_id !== event.capture_bundle_id ||\n\t\trow.state !== event.state ||\n\t\trow.receipt_id !== event.receipt_id ||\n\t\trow.promotion_identity_sha256 !== event.promotion_identity_sha256 ||\n\t\trow.window_start_ms !== Date.parse(event.window.start_at) ||\n\t\trow.window_end_ms !== Date.parse(event.window.end_at) ||\n\t\trow.event_at_ms !== Date.parse(event.event_at) ||\n\t\trow.reason_code !== event.reason_code\n\t) {\n\t\tthrow new Error(\"qualification archive row does not match event JSON\");\n\t}\n\treturn event;\n}\n",
|
|
188
|
-
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport { buildForwarderBatches } from \"./batching\";\nimport {\n\ttype ArchiveSelectionWire,\n\tarchiveSelectionCodec,\n\ttype BackfillArchiveRow,\n\tdecodeBackfillRunDocuments,\n\tEXTERNAL_BACKFILL_SOURCE,\n\ttype FinalBackfillStatus,\n\ttype ForwarderBatch,\n\ttype MarketDataVendorBackfillRequest,\n\tPROMOTION_RECEIPT_SCHEMA_ID,\n\ttype PromotionReceiptWire,\n\ttype ProviderCapability,\n\ttype ProviderObjectEvidence,\n\tpromotionReceiptCodec,\n} from \"./contracts\";\nimport { providerAcquisitionRequest } from \"./cryptohftdata\";\nimport { jcsCanonicalize } from \"./identity\";\nimport {\n\tCAPABILITY_POLICY,\n\tEFFECTIVE_ACQUISITION_POLICY_PIN,\n\tEFFECTIVE_ADAPTER_POLICY_PIN,\n\tRESOURCE_POLICY,\n} from \"./manifests\";\nimport {\n\tfinalizePromotionReceipt,\n\tpromotionReceiptToArchiveRow,\n} from \"./promotion\";\nimport {\n\tfinalizeQualificationEvent,\n\tqualificationEventToArchiveRow,\n} from \"./qualification\";\nimport { archiveSelectionToArchiveRow } from \"./selection\";\n\nexport type ProviderDataset<Row = unknown> = {\n\tobjects: ProviderObjectEvidence[];\n\tvendorSemanticDigest: string;\n\trows: Row[];\n};\n\nexport type NormalizedBackfill = {\n\tcaptureBundleId: string;\n\tobjects: ProviderObjectEvidence[];\n\trows: BackfillArchiveRow[];\n\tvendorSemanticDigest: string;\n\tcanonicalSemanticDigest: string;\n};\n\nexport type CandidateVerification = {\n\tpassed: boolean;\n\tcaptureBundleId: string;\n\tcanonicalSemanticDigest: string;\n\tprefixDigest: string;\n\tsuffixDigest: string;\n\tseamVerified: boolean;\n\tcoverageVerified: boolean;\n\treasonCode?: string;\n};\n\nexport type ArchiveClusterIdentity = {\n\tenvironment: string;\n\tcluster: string;\n};\n\nexport type ProductionForwarderAuthorization = {\n\tauthorizationId: string;\n\tscope: \"production\";\n\tenvironment: string;\n\tcluster: string;\n\texpiresAt: string;\n\tcredentialValidated: true;\n};\n\nexport type ArchivePreflightResolution = {\n\tselection: ArchiveSelectionWire;\n\treceipts: PromotionReceiptWire[];\n\treaderIdentity: ArchiveClusterIdentity;\n\tverificationBaseline?: {\n\t\tprefixDigest: string;\n\t\tsuffixDigest: string;\n\t};\n};\n\nexport type ForwarderPreflightResolution = {\n\tforwarderIdentity: ArchiveClusterIdentity;\n\tauthorization: ProductionForwarderAuthorization;\n};\n\n/** @deprecated Use ArchivePreflightResolution and its exact selection. */\nexport type QualifiedCoverage = {\n\tcomplete: boolean;\n\tcoverageDigest: string;\n\tprefixDigest?: string;\n\tsuffixDigest?: string;\n};\n\nexport type BackfillDomainOutcome = {\n\tstatus: FinalBackfillStatus;\n\treasonCode: string;\n\treasonSubcode?: string;\n\trequestId?: string;\n\tidempotencyKey?: string;\n\ttarget?: ArchiveClusterIdentity;\n\tselection?: ArchiveSelectionWire;\n\treceipt?: PromotionReceiptWire;\n\tdiagnostics?: Record<string, string | number | boolean>;\n};\n\nexport type BackfillDependencies = {\n\tarchive: {\n\t\tresolveSelection(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t): Promise<ArchivePreflightResolution>;\n\t\tverifyCandidate(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t\tnormalized: NormalizedBackfill,\n\t\t\tcaptureBundleId: string,\n\t\t\tbaseline: ArchivePreflightResolution,\n\t\t): Promise<CandidateVerification>;\n\t};\n\tproviders: {\n\t\tcapabilityFor(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t): ProviderCapability | undefined;\n\t\tacquire(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t\tcapability: ProviderCapability,\n\t\t\tcredential: unknown,\n\t\t): Promise<ProviderDataset>;\n\t\tnormalize(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t\tcapability: ProviderCapability,\n\t\t\tdataset: ProviderDataset,\n\t\t\tcaptureBundleId: string,\n\t\t): Promise<NormalizedBackfill>;\n\t};\n\tcredentials: {\n\t\tresolve(provider: \"cryptohftdata\"): Promise<unknown | undefined>;\n\t};\n\tforwarder: {\n\t\tpreflight(input: {\n\t\t\tauthorizationId: string;\n\t\t\ttarget: ArchiveClusterIdentity;\n\t\t}): Promise<ForwarderPreflightResolution>;\n\t\tsubmit(batch: ForwarderBatch): Promise<{ ok: boolean; inserted: number }>;\n\t};\n\tclock: { nowMs(): number };\n\tretry?: {\n\t\tmaxAttempts: number;\n\t\twait?: (completedAttempt: number) => Promise<void>;\n\t};\n\tlog?: (event: string, fields: Record<string, unknown>) => void;\n};\n\nexport function createMarketDataVendorBackfillDependencies(\n\tdependencies: BackfillDependencies,\n): BackfillDependencies {\n\tfor (const [name, value] of Object.entries({\n\t\tarchive: dependencies.archive,\n\t\tproviders: dependencies.providers,\n\t\tcredentials: dependencies.credentials,\n\t\tforwarder: dependencies.forwarder,\n\t\tclock: dependencies.clock,\n\t})) {\n\t\tif (!value || typeof value !== \"object\") {\n\t\t\tthrow new TypeError(`Backfill dependency ${name} is required`);\n\t\t}\n\t}\n\tfor (const [name, method] of Object.entries({\n\t\t\"archive.resolveSelection\": dependencies.archive.resolveSelection,\n\t\t\"archive.verifyCandidate\": dependencies.archive.verifyCandidate,\n\t\t\"providers.capabilityFor\": dependencies.providers.capabilityFor,\n\t\t\"providers.acquire\": dependencies.providers.acquire,\n\t\t\"providers.normalize\": dependencies.providers.normalize,\n\t\t\"credentials.resolve\": dependencies.credentials.resolve,\n\t\t\"forwarder.preflight\": dependencies.forwarder.preflight,\n\t\t\"forwarder.submit\": dependencies.forwarder.submit,\n\t\t\"clock.nowMs\": dependencies.clock.nowMs,\n\t})) {\n\t\tif (typeof method !== \"function\") {\n\t\t\tthrow new TypeError(`Backfill dependency ${name} is required`);\n\t\t}\n\t}\n\treturn dependencies;\n}\n\nfunction outcome(\n\trequest: MarketDataVendorBackfillRequest | undefined,\n\tstatus: FinalBackfillStatus,\n\treasonCode: string,\n\textra: Pick<\n\t\tBackfillDomainOutcome,\n\t\t\"reasonSubcode\" | \"selection\" | \"receipt\" | \"diagnostics\"\n\t> = {},\n): BackfillDomainOutcome {\n\treturn {\n\t\tstatus,\n\t\treasonCode,\n\t\t...(request\n\t\t\t? {\n\t\t\t\t\trequestId: request.requestId,\n\t\t\t\t\tidempotencyKey: request.idempotencyKey,\n\t\t\t\t\t...(request.target ? { target: request.target } : {}),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...extra,\n\t};\n}\n\nfunction captureBundleId(\n\trequest: MarketDataVendorBackfillRequest,\n\tcapability: ProviderCapability,\n\tdataset: ProviderDataset,\n): string {\n\t// Capture-bundle identity intentionally retains the existing capture checksum\n\t// algorithm. RFC 8785 applies only to final-v1 wire documents.\n\treturn sha256Canonical({\n\t\trequest_business_identity: request.idempotencyKey,\n\t\tprovider: capability.provider,\n\t\tprovider_exchange_id: capability.providerExchangeId,\n\t\tresolved_symbol: capability.resolvedSymbol,\n\t\tadapter_version: capability.adapterVersion,\n\t\tobjects: dataset.objects.map(({ identity, checksum, bytes, rows }) => ({\n\t\t\tidentity,\n\t\t\tchecksum,\n\t\t\tbytes,\n\t\t\trows,\n\t\t})),\n\t\tcanonical_schema_version: request.expectedProduct.canonicalSchemaVersion,\n\t\tchecksum_algorithm: request.expectedProduct.checksumAlgorithm,\n\t});\n}\n\nfunction buildPromotionReceipt(\n\trequest: MarketDataVendorBackfillRequest,\n\tcapability: ProviderCapability,\n\tnormalized: NormalizedBackfill,\n\tverification: CandidateVerification,\n\tverificationTimeMs: number,\n): PromotionReceiptWire {\n\tif (\n\t\t!request.wire ||\n\t\t!request.initialSelection ||\n\t\t!request.expectedCanonicalSchema ||\n\t\t!request.coveragePolicy ||\n\t\t!request.productPins\n\t) {\n\t\tthrow new Error(\"decoded final-v1 request context is missing\");\n\t}\n\treturn finalizePromotionReceipt({\n\t\tschema_id: PROMOTION_RECEIPT_SCHEMA_ID,\n\t\tverified_at: new Date(verificationTimeMs).toISOString(),\n\t\trequest_id: request.requestId,\n\t\tidempotency_key: request.idempotencyKey,\n\t\tsource: EXTERNAL_BACKFILL_SOURCE,\n\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\tsource_mode: \"vendor_historical_backfill_v1\",\n\t\tprovider: capability.provider,\n\t\tadapter_version: capability.adapterVersion,\n\t\teffective_policies: {\n\t\t\tcapability_policy: request.productPins.capability_policy,\n\t\t\tresource_policy: request.productPins.resource_policy,\n\t\t\tadapter_policy: EFFECTIVE_ADAPTER_POLICY_PIN,\n\t\t\tacquisition_policy: EFFECTIVE_ACQUISITION_POLICY_PIN,\n\t\t},\n\t\tcapture_bundle_id: normalized.captureBundleId,\n\t\tscope: request.wire.scope,\n\t\twindow: request.wire.window,\n\t\tdepth: request.depth,\n\t\tconstruction_mode: request.constructionMode,\n\t\tcanonical_schema: request.expectedCanonicalSchema,\n\t\tcoverage_policy: request.coveragePolicy,\n\t\tselection_sha256: request.initialSelection.selection_sha256,\n\t\tvendor_semantic_digest: normalized.vendorSemanticDigest,\n\t\tcanonical_semantic_digest: verification.canonicalSemanticDigest,\n\t\tprefix_digest: verification.prefixDigest,\n\t\tsuffix_digest: verification.suffixDigest,\n\t\tseam_verified: true,\n\t\tcoverage_verified: true,\n\t\tdataset_objects: normalized.objects,\n\t});\n}\n\nasync function submitAll(\n\tdependencies: BackfillDependencies,\n\tbatches: readonly ForwarderBatch[],\n): Promise<boolean> {\n\tconst maxAttempts = Math.max(\n\t\t1,\n\t\tMath.min(10, dependencies.retry?.maxAttempts ?? 3),\n\t);\n\tfor (const batch of batches) {\n\t\tlet accepted = false;\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n\t\t\ttry {\n\t\t\t\tconst response = await dependencies.forwarder.submit(batch);\n\t\t\t\taccepted = response.ok && response.inserted === batch.rows.length;\n\t\t\t} catch {\n\t\t\t\taccepted = false;\n\t\t\t}\n\t\t\tif (accepted) break;\n\t\t\tif (attempt < maxAttempts) await dependencies.retry?.wait?.(attempt);\n\t\t}\n\t\tif (!accepted) return false;\n\t}\n\treturn true;\n}\n\nfunction stableFailureReason(error: unknown, fallback: string): string {\n\tif (error && typeof error === \"object\") {\n\t\tconst reason = (error as { reason?: unknown }).reason;\n\t\tif (typeof reason === \"string\" && /^[a-z][a-z0-9_]{0,127}$/.test(reason)) {\n\t\t\treturn reason;\n\t\t}\n\t}\n\treturn fallback;\n}\n\nfunction assertArchivePreflight(\n\trequest: MarketDataVendorBackfillRequest,\n\tresolution: ArchivePreflightResolution,\n): void {\n\tif (!request.target || !request.productionAuthorizationId) {\n\t\tthrow new Error(\"request target or production authorization ID is missing\");\n\t}\n\tconst selection = archiveSelectionCodec.decode(resolution.selection);\n\tconst receipts = resolution.receipts.map((receipt) =>\n\t\tpromotionReceiptCodec.decode(receipt),\n\t);\n\tconst receiptById = new Map<string, PromotionReceiptWire>();\n\tfor (const receipt of receipts) {\n\t\tconst existing = receiptById.get(receipt.receipt_id);\n\t\tif (existing && jcsCanonicalize(existing) !== jcsCanonicalize(receipt)) {\n\t\t\tthrow new Error(\"stored receipt identity has conflicting content\");\n\t\t}\n\t\treceiptById.set(receipt.receipt_id, receipt);\n\t}\n\tfor (const bundle of selection.bundles) {\n\t\tif (\n\t\t\tbundle.capture_origin === \"vendor_historical_backfill\" &&\n\t\t\t(!bundle.qualification ||\n\t\t\t\t!receiptById.has(bundle.qualification.receipt_id))\n\t\t) {\n\t\t\tthrow new Error(\"vendor selection lacks its validated stored receipt\");\n\t\t}\n\t}\n\tif (\n\t\tresolution.readerIdentity.environment !== request.target.environment ||\n\t\tresolution.readerIdentity.cluster !== request.target.cluster\n\t) {\n\t\tthrow new Error(\"archive reader cluster identity mismatch\");\n\t}\n}\n\nfunction assertForwarderPreflight(\n\trequest: MarketDataVendorBackfillRequest,\n\tresolution: ForwarderPreflightResolution,\n\tnowMs: number,\n): void {\n\tif (!request.target || !request.productionAuthorizationId) {\n\t\tthrow new Error(\"request target or production authorization ID is missing\");\n\t}\n\tif (\n\t\tresolution.forwarderIdentity.environment !== request.target.environment ||\n\t\tresolution.forwarderIdentity.cluster !== request.target.cluster\n\t) {\n\t\tthrow new Error(\"archive forwarder cluster identity mismatch\");\n\t}\n\tconst authorization = resolution.authorization;\n\tconst expiresAtMs = Date.parse(authorization.expiresAt);\n\tif (\n\t\tauthorization.authorizationId !== request.productionAuthorizationId ||\n\t\tauthorization.scope !== \"production\" ||\n\t\tauthorization.environment !== request.target.environment ||\n\t\tauthorization.cluster !== request.target.cluster ||\n\t\tauthorization.credentialValidated !== true ||\n\t\t!Number.isSafeInteger(expiresAtMs) ||\n\t\tnew Date(expiresAtMs).toISOString() !== authorization.expiresAt ||\n\t\texpiresAtMs <= nowMs\n\t) {\n\t\tthrow new Error(\"production forwarder authorization is invalid\");\n\t}\n}\n\nfunction resourcePolicyScopeExceeded(\n\trequest: MarketDataVendorBackfillRequest,\n): boolean {\n\treturn (\n\t\trequest.depth > RESOURCE_POLICY.request_bounds.max_depth ||\n\t\trequest.window.endTimeMs - request.window.startTimeMs >\n\t\t\tRESOURCE_POLICY.request_bounds.max_window_ms ||\n\t\trequest.requiredClockTargetsMs.length >\n\t\t\tRESOURCE_POLICY.request_bounds.max_required_events\n\t);\n}\n\nfunction storedReceiptForSelection(\n\tresolution: ArchivePreflightResolution,\n): PromotionReceiptWire | undefined {\n\tconst receiptId = resolution.selection.receipt_ids[0];\n\treturn receiptId\n\t\t? resolution.receipts.find((receipt) => receipt.receipt_id === receiptId)\n\t\t: undefined;\n}\n\nexport async function runMarketDataVendorBackfill(\n\tinput: unknown,\n\tdependencies: BackfillDependencies,\n): Promise<BackfillDomainOutcome> {\n\tlet request: MarketDataVendorBackfillRequest;\n\ttry {\n\t\tconst documents = input as { request?: unknown; requiredClock?: unknown };\n\t\trequest = decodeBackfillRunDocuments({\n\t\t\trequest: documents.request,\n\t\t\trequiredClock: documents.requiredClock,\n\t\t});\n\t} catch {\n\t\treturn outcome(undefined, \"request_invalid\", \"request_invalid\");\n\t}\n\n\tlet initialResolution: ArchivePreflightResolution;\n\ttry {\n\t\tinitialResolution = await dependencies.archive.resolveSelection(request);\n\t\tassertArchivePreflight(request, initialResolution);\n\t\tconst forwarderPreflight = await dependencies.forwarder.preflight({\n\t\t\tauthorizationId: request.productionAuthorizationId as string,\n\t\t\ttarget: request.target as ArchiveClusterIdentity,\n\t\t});\n\t\tassertForwarderPreflight(\n\t\t\trequest,\n\t\t\tforwarderPreflight,\n\t\t\tdependencies.clock.nowMs(),\n\t\t);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"archive_preflight_failed\",\n\t\t\t\"archive_preflight_failed\",\n\t\t);\n\t}\n\tif (initialResolution.selection.coverage_class === \"complete\") {\n\t\tconst receipt = storedReceiptForSelection(initialResolution);\n\t\treturn outcome(request, \"already_covered\", \"qualified_coverage_complete\", {\n\t\t\tselection: initialResolution.selection,\n\t\t\t...(receipt ? { receipt } : {}),\n\t\t});\n\t}\n\n\tif (resourcePolicyScopeExceeded(request)) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"capability_unsupported\",\n\t\t\t\"capability_unsupported\",\n\t\t\t{ reasonSubcode: \"resource_policy_scope_exceeded\" },\n\t\t);\n\t}\n\tif (\n\t\trequest.sourcePolicy === \"fill_gaps\" &&\n\t\t(request.productPins?.capability_policy.policy_id !==\n\t\t\tCAPABILITY_POLICY.policy_id ||\n\t\t\trequest.productPins.capability_policy.policy_sha256 !==\n\t\t\t\tCAPABILITY_POLICY.policy_sha256)\n\t) {\n\t\treturn outcome(request, \"capability_unsupported\", \"scope_unsupported\", {\n\t\t\treasonSubcode: \"fill_gaps_requires_capability_policy_v2\",\n\t\t});\n\t}\n\n\tlet capability: ProviderCapability | undefined;\n\ttry {\n\t\tcapability = dependencies.providers.capabilityFor(request);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"capability_unsupported\",\n\t\t\t\"capability_probe_failed\",\n\t\t);\n\t}\n\tif (!capability) {\n\t\treturn outcome(request, \"capability_unsupported\", \"scope_unsupported\");\n\t}\n\tif (\n\t\t!request.providerPolicy.allowedAdapterVersions.includes(\n\t\t\tcapability.adapterVersion,\n\t\t)\n\t) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"capability_unsupported\",\n\t\t\t\"adapter_version_unpinned\",\n\t\t);\n\t}\n\n\tlet credential: unknown;\n\ttry {\n\t\tcredential = await dependencies.credentials.resolve(capability.provider);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"credentials_missing\",\n\t\t\t\"credential_resolution_failed\",\n\t\t);\n\t}\n\tif (credential === undefined || credential === null) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"credentials_missing\",\n\t\t\t\"provider_credentials_missing\",\n\t\t);\n\t}\n\n\tlet dataset: ProviderDataset;\n\tlet normalized: NormalizedBackfill;\n\ttry {\n\t\tconst acquisitionRequest = providerAcquisitionRequest(request);\n\t\tdataset = await dependencies.providers.acquire(\n\t\t\tacquisitionRequest,\n\t\t\tcapability,\n\t\t\tcredential,\n\t\t);\n\t\tconst bundleId = captureBundleId(request, capability, dataset);\n\t\tnormalized = await dependencies.providers.normalize(\n\t\t\tacquisitionRequest,\n\t\t\tcapability,\n\t\t\tdataset,\n\t\t\tbundleId,\n\t\t);\n\t\tif (normalized.captureBundleId !== bundleId) {\n\t\t\treturn outcome(request, \"vendor_fetch_failed\", \"vendor_fetch_failed\", {\n\t\t\t\treasonSubcode: \"capture_identity_mismatch\",\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tconst reason = stableFailureReason(error, \"provider_dataset_invalid\");\n\t\treturn outcome(request, \"vendor_fetch_failed\", \"vendor_fetch_failed\", {\n\t\t\treasonSubcode: reason.startsWith(\"budget_\")\n\t\t\t\t? \"resource_limit_exceeded\"\n\t\t\t\t: reason,\n\t\t});\n\t}\n\n\ttry {\n\t\tconst candidateBatches = buildForwarderBatches({\n\t\t\tcaptureBundleId: normalized.captureBundleId,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: normalized.rows,\n\t\t});\n\t\tif (!(await submitAll(dependencies, candidateBatches))) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"candidate_batch_rejected\",\n\t\t\t);\n\t\t}\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"archive_ingest_failed\",\n\t\t\t\"candidate_submission_failed\",\n\t\t);\n\t}\n\n\tlet verification: CandidateVerification;\n\ttry {\n\t\tverification = await dependencies.archive.verifyCandidate(\n\t\t\trequest,\n\t\t\tnormalized,\n\t\t\tnormalized.captureBundleId,\n\t\t\tinitialResolution,\n\t\t);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"candidate_query_failed\",\n\t\t);\n\t}\n\tif (\n\t\t!verification.passed ||\n\t\tverification.captureBundleId !== normalized.captureBundleId ||\n\t\tverification.canonicalSemanticDigest !==\n\t\t\tnormalized.canonicalSemanticDigest ||\n\t\t!verification.seamVerified ||\n\t\t!verification.coverageVerified\n\t) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\tverification.reasonCode ?? \"semantic_verification_failed\",\n\t\t);\n\t}\n\n\tlet receipt: PromotionReceiptWire;\n\ttry {\n\t\treceipt = buildPromotionReceipt(\n\t\t\trequest,\n\t\t\tcapability,\n\t\t\tnormalized,\n\t\t\tverification,\n\t\t\tdependencies.clock.nowMs(),\n\t\t);\n\t\tconst [batch] = buildForwarderBatches({\n\t\t\tcaptureBundleId: normalized.captureBundleId,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: [promotionReceiptToArchiveRow(receipt)],\n\t\t});\n\t\tif (!batch || !(await submitAll(dependencies, [batch]))) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"promotion_commit_failed\",\n\t\t\t);\n\t\t}\n\t\tconst qualification = finalizeQualificationEvent({\n\t\t\tcapture_bundle_id: receipt.capture_bundle_id,\n\t\t\tstate: \"qualified\",\n\t\t\treceipt_id: receipt.receipt_id,\n\t\t\tpromotion_identity_sha256: receipt.promotion_identity_sha256,\n\t\t\twindow: receipt.window,\n\t\t\tevent_at: receipt.verified_at,\n\t\t\treason_code: \"promotion_verified\",\n\t\t});\n\t\tconst [qualificationBatch] = buildForwarderBatches({\n\t\t\tcaptureBundleId: normalized.captureBundleId,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: [qualificationEventToArchiveRow(qualification)],\n\t\t});\n\t\tif (\n\t\t\t!qualificationBatch ||\n\t\t\t!(await submitAll(dependencies, [qualificationBatch]))\n\t\t) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"qualification_commit_failed\",\n\t\t\t\t{ receipt },\n\t\t\t);\n\t\t}\n\t} catch {\n\t\treturn outcome(request, \"archive_ingest_failed\", \"promotion_commit_failed\");\n\t}\n\n\tlet finalResolution: ArchivePreflightResolution;\n\ttry {\n\t\tfinalResolution = await dependencies.archive.resolveSelection(request);\n\t\tassertArchivePreflight(request, finalResolution);\n\t} catch (error) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"post_promotion_selection_failed\",\n\t\t\t{\n\t\t\t\treceipt,\n\t\t\t\treasonSubcode: stableFailureReason(\n\t\t\t\t\terror,\n\t\t\t\t\t\"archive_selection_resolution_failed\",\n\t\t\t\t),\n\t\t\t},\n\t\t);\n\t}\n\tif (finalResolution.selection.coverage_class !== \"complete\") {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"qualified_coverage_incomplete\",\n\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t);\n\t}\n\tif (\n\t\tfinalResolution.selection.bundles.some(\n\t\t\t(bundle) =>\n\t\t\t\tbundle.capture_bundle_id === receipt.capture_bundle_id &&\n\t\t\t\tbundle.capture_origin === \"vendor_historical_backfill\" &&\n\t\t\t\tbundle.qualification?.receipt_id === receipt.receipt_id,\n\t\t) === false\n\t) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"promoted_receipt_not_selected\",\n\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t);\n\t}\n\ttry {\n\t\tif (!request.wire) throw new Error(\"decoded request wire is missing\");\n\t\tconst [selectionBatch] = buildForwarderBatches({\n\t\t\tcaptureBundleId: receipt.capture_bundle_id,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: [\n\t\t\t\tarchiveSelectionToArchiveRow(request.wire, finalResolution.selection),\n\t\t\t],\n\t\t});\n\t\tif (!selectionBatch || !(await submitAll(dependencies, [selectionBatch]))) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"selection_persistence_failed\",\n\t\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t\t);\n\t\t}\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"archive_ingest_failed\",\n\t\t\t\"selection_persistence_failed\",\n\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t);\n\t}\n\treturn outcome(request, \"promoted\", \"promotion_qualified\", {\n\t\treceipt,\n\t\tselection: finalResolution.selection,\n\t});\n}\n",
|
|
193
|
+
"import { sha256Canonical } from \"../market-data-archive/capture-contract\";\nimport { buildForwarderBatches } from \"./batching\";\nimport {\n\ttype ArchiveSelectionWire,\n\tarchiveSelectionCodec,\n\ttype BackfillArchiveRow,\n\tBackfillRequestValidationError,\n\tdecodeBackfillRunDocuments,\n\tEXTERNAL_BACKFILL_SOURCE,\n\ttype FinalBackfillStatus,\n\ttype ForwarderBatch,\n\ttype MarketDataVendorBackfillRequest,\n\tPROMOTION_RECEIPT_SCHEMA_ID,\n\ttype PromotionReceiptWire,\n\ttype ProviderCapability,\n\ttype ProviderObjectEvidence,\n\tpromotionReceiptCodec,\n} from \"./contracts\";\nimport {\n\tCryptoHftDataError,\n\tproviderAcquisitionRequest,\n} from \"./cryptohftdata\";\nimport { jcsCanonicalize } from \"./identity\";\nimport {\n\tCAPABILITY_POLICY,\n\tEFFECTIVE_ACQUISITION_POLICY_PIN,\n\tEFFECTIVE_ADAPTER_POLICY_PIN,\n\tRESOURCE_POLICY,\n} from \"./manifests\";\nimport {\n\tfinalizePromotionReceipt,\n\tpromotionReceiptMatchesCurrentPolicies,\n\tpromotionReceiptToArchiveRow,\n} from \"./promotion\";\nimport {\n\tfinalizeQualificationEvent,\n\tqualificationEventToArchiveRow,\n} from \"./qualification\";\nimport { archiveSelectionToArchiveRow } from \"./selection\";\n\nexport type ProviderDataset<Row = unknown> = {\n\tobjects: ProviderObjectEvidence[];\n\tvendorSemanticDigest: string;\n\trows: Row[];\n\treconstructedBooks?: unknown[];\n};\n\nexport type NormalizedBackfill = {\n\tcaptureBundleId: string;\n\tobjects: ProviderObjectEvidence[];\n\trows: BackfillArchiveRow[];\n\tvendorSemanticDigest: string;\n\tcanonicalSemanticDigest: string;\n};\n\nexport type CandidateVerification = {\n\tpassed: boolean;\n\tcaptureBundleId: string;\n\tcanonicalSemanticDigest: string;\n\tprefixDigest: string;\n\tsuffixDigest: string;\n\tseamVerified: boolean;\n\tcoverageVerified: boolean;\n\treasonCode?: string;\n};\n\nexport type ArchiveClusterIdentity = {\n\tenvironment: string;\n\tcluster: string;\n};\n\nexport type ProductionForwarderAuthorization = {\n\tauthorizationId: string;\n\tscope: \"production\";\n\tenvironment: string;\n\tcluster: string;\n\texpiresAt: string;\n\tcredentialValidated: true;\n};\n\nexport type ArchivePreflightResolution = {\n\tselection: ArchiveSelectionWire;\n\treceipts: PromotionReceiptWire[];\n\treaderIdentity: ArchiveClusterIdentity;\n\tverificationBaseline?: {\n\t\tprefixDigest: string;\n\t\tsuffixDigest: string;\n\t};\n};\n\nexport type ForwarderPreflightResolution = {\n\tforwarderIdentity: ArchiveClusterIdentity;\n\tauthorization: ProductionForwarderAuthorization;\n};\n\n/** @deprecated Use ArchivePreflightResolution and its exact selection. */\nexport type QualifiedCoverage = {\n\tcomplete: boolean;\n\tcoverageDigest: string;\n\tprefixDigest?: string;\n\tsuffixDigest?: string;\n};\n\nexport type BackfillDomainOutcome = {\n\tstatus: FinalBackfillStatus;\n\treasonCode: string;\n\treasonSubcode?: string;\n\trequestId?: string;\n\tidempotencyKey?: string;\n\ttarget?: ArchiveClusterIdentity;\n\tselection?: ArchiveSelectionWire;\n\treceipt?: PromotionReceiptWire;\n\tdiagnostics?: Record<string, string | number | boolean>;\n};\n\nexport type BackfillDependencies = {\n\tarchive: {\n\t\tresolveSelection(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t): Promise<ArchivePreflightResolution>;\n\t\tverifyCandidate(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t\tnormalized: NormalizedBackfill,\n\t\t\tcaptureBundleId: string,\n\t\t\tbaseline: ArchivePreflightResolution,\n\t\t): Promise<CandidateVerification>;\n\t};\n\tproviders: {\n\t\tcapabilityFor(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t): ProviderCapability | undefined;\n\t\tacquire(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t\tcapability: ProviderCapability,\n\t\t\tcredential: unknown,\n\t\t): Promise<ProviderDataset>;\n\t\tnormalize(\n\t\t\trequest: MarketDataVendorBackfillRequest,\n\t\t\tcapability: ProviderCapability,\n\t\t\tdataset: ProviderDataset,\n\t\t\tcaptureBundleId: string,\n\t\t): Promise<NormalizedBackfill>;\n\t};\n\tcredentials: {\n\t\tresolve(provider: \"cryptohftdata\"): Promise<unknown | undefined>;\n\t};\n\tforwarder: {\n\t\tpreflight(input: {\n\t\t\tauthorizationId: string;\n\t\t\ttarget: ArchiveClusterIdentity;\n\t\t}): Promise<ForwarderPreflightResolution>;\n\t\tsubmit(batch: ForwarderBatch): Promise<{ ok: boolean; inserted: number }>;\n\t};\n\tclock: { nowMs(): number };\n\tretry?: {\n\t\tmaxAttempts: number;\n\t\twait?: (completedAttempt: number) => Promise<void>;\n\t};\n\tlog?: (event: string, fields: Record<string, unknown>) => void;\n};\n\nexport function createMarketDataVendorBackfillDependencies(\n\tdependencies: BackfillDependencies,\n): BackfillDependencies {\n\tfor (const [name, value] of Object.entries({\n\t\tarchive: dependencies.archive,\n\t\tproviders: dependencies.providers,\n\t\tcredentials: dependencies.credentials,\n\t\tforwarder: dependencies.forwarder,\n\t\tclock: dependencies.clock,\n\t})) {\n\t\tif (!value || typeof value !== \"object\") {\n\t\t\tthrow new TypeError(`Backfill dependency ${name} is required`);\n\t\t}\n\t}\n\tfor (const [name, method] of Object.entries({\n\t\t\"archive.resolveSelection\": dependencies.archive.resolveSelection,\n\t\t\"archive.verifyCandidate\": dependencies.archive.verifyCandidate,\n\t\t\"providers.capabilityFor\": dependencies.providers.capabilityFor,\n\t\t\"providers.acquire\": dependencies.providers.acquire,\n\t\t\"providers.normalize\": dependencies.providers.normalize,\n\t\t\"credentials.resolve\": dependencies.credentials.resolve,\n\t\t\"forwarder.preflight\": dependencies.forwarder.preflight,\n\t\t\"forwarder.submit\": dependencies.forwarder.submit,\n\t\t\"clock.nowMs\": dependencies.clock.nowMs,\n\t})) {\n\t\tif (typeof method !== \"function\") {\n\t\t\tthrow new TypeError(`Backfill dependency ${name} is required`);\n\t\t}\n\t}\n\treturn dependencies;\n}\n\nfunction outcome(\n\trequest: MarketDataVendorBackfillRequest | undefined,\n\tstatus: FinalBackfillStatus,\n\treasonCode: string,\n\textra: Pick<\n\t\tBackfillDomainOutcome,\n\t\t\"reasonSubcode\" | \"selection\" | \"receipt\" | \"diagnostics\"\n\t> = {},\n): BackfillDomainOutcome {\n\treturn {\n\t\tstatus,\n\t\treasonCode,\n\t\t...(request\n\t\t\t? {\n\t\t\t\t\trequestId: request.requestId,\n\t\t\t\t\tidempotencyKey: request.idempotencyKey,\n\t\t\t\t\t...(request.target ? { target: request.target } : {}),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...extra,\n\t};\n}\n\nfunction captureBundleId(\n\trequest: MarketDataVendorBackfillRequest,\n\tcapability: ProviderCapability,\n\tdataset: ProviderDataset,\n): string {\n\t// Capture-bundle identity intentionally retains the existing capture checksum\n\t// algorithm. RFC 8785 applies only to final-v1 wire documents.\n\treturn sha256Canonical({\n\t\trequest_business_identity: request.idempotencyKey,\n\t\tprovider: capability.provider,\n\t\tprovider_exchange_id: capability.providerExchangeId,\n\t\tresolved_symbol: capability.resolvedSymbol,\n\t\tadapter_version: capability.adapterVersion,\n\t\tobjects: dataset.objects.map(({ identity, checksum, bytes, rows }) => ({\n\t\t\tidentity,\n\t\t\tchecksum,\n\t\t\tbytes,\n\t\t\trows,\n\t\t})),\n\t\tcanonical_schema_version: request.expectedProduct.canonicalSchemaVersion,\n\t\tchecksum_algorithm: request.expectedProduct.checksumAlgorithm,\n\t});\n}\n\nfunction buildPromotionReceipt(\n\trequest: MarketDataVendorBackfillRequest,\n\tcapability: ProviderCapability,\n\tnormalized: NormalizedBackfill,\n\tverification: CandidateVerification,\n\tverificationTimeMs: number,\n): PromotionReceiptWire {\n\tif (\n\t\t!request.wire ||\n\t\t!request.initialSelection ||\n\t\t!request.expectedCanonicalSchema ||\n\t\t!request.coveragePolicy ||\n\t\t!request.productPins\n\t) {\n\t\tthrow new Error(\"decoded final-v1 request context is missing\");\n\t}\n\tif (\n\t\trequest.productPins.capability_policy.policy_id !==\n\t\t\tCAPABILITY_POLICY.policy_id ||\n\t\trequest.productPins.capability_policy.policy_sha256 !==\n\t\t\tCAPABILITY_POLICY.policy_sha256 ||\n\t\trequest.productPins.resource_policy.policy_id !==\n\t\t\tRESOURCE_POLICY.policy_id ||\n\t\trequest.productPins.resource_policy.policy_sha256 !==\n\t\t\tRESOURCE_POLICY.policy_sha256\n\t) {\n\t\tthrow new Error(\"promotion receipt requires the current policy tuple\");\n\t}\n\treturn finalizePromotionReceipt({\n\t\tschema_id: PROMOTION_RECEIPT_SCHEMA_ID,\n\t\tverified_at: new Date(verificationTimeMs).toISOString(),\n\t\trequest_id: request.requestId,\n\t\tidempotency_key: request.idempotencyKey,\n\t\tsource: EXTERNAL_BACKFILL_SOURCE,\n\t\tcapture_origin: \"vendor_historical_backfill\",\n\t\tsource_mode: \"vendor_historical_backfill_v1\",\n\t\tprovider: capability.provider,\n\t\tadapter_version: capability.adapterVersion,\n\t\teffective_policies: {\n\t\t\tcapability_policy: request.productPins.capability_policy,\n\t\t\tresource_policy: request.productPins.resource_policy,\n\t\t\tadapter_policy: EFFECTIVE_ADAPTER_POLICY_PIN,\n\t\t\tacquisition_policy: EFFECTIVE_ACQUISITION_POLICY_PIN,\n\t\t},\n\t\tcapture_bundle_id: normalized.captureBundleId,\n\t\tscope: request.wire.scope,\n\t\twindow: request.wire.window,\n\t\tdepth: request.depth,\n\t\tconstruction_mode: request.constructionMode,\n\t\tcanonical_schema: request.expectedCanonicalSchema,\n\t\tcoverage_policy: request.coveragePolicy,\n\t\tselection_sha256: request.initialSelection.selection_sha256,\n\t\tvendor_semantic_digest: normalized.vendorSemanticDigest,\n\t\tcanonical_semantic_digest: verification.canonicalSemanticDigest,\n\t\tprefix_digest: verification.prefixDigest,\n\t\tsuffix_digest: verification.suffixDigest,\n\t\tseam_verified: true,\n\t\tcoverage_verified: true,\n\t\tdataset_objects: normalized.objects,\n\t});\n}\n\nasync function submitAll(\n\tdependencies: BackfillDependencies,\n\tbatches: readonly ForwarderBatch[],\n): Promise<boolean> {\n\tconst maxAttempts = Math.max(\n\t\t1,\n\t\tMath.min(10, dependencies.retry?.maxAttempts ?? 3),\n\t);\n\tfor (const batch of batches) {\n\t\tlet accepted = false;\n\t\tfor (let attempt = 1; attempt <= maxAttempts; attempt += 1) {\n\t\t\ttry {\n\t\t\t\tconst response = await dependencies.forwarder.submit(batch);\n\t\t\t\taccepted = response.ok && response.inserted === batch.rows.length;\n\t\t\t} catch {\n\t\t\t\taccepted = false;\n\t\t\t}\n\t\t\tif (accepted) break;\n\t\t\tif (attempt < maxAttempts) await dependencies.retry?.wait?.(attempt);\n\t\t}\n\t\tif (!accepted) return false;\n\t}\n\treturn true;\n}\n\nfunction stableFailureReason(error: unknown, fallback: string): string {\n\tif (error && typeof error === \"object\") {\n\t\tconst reason = (error as { reason?: unknown }).reason;\n\t\tif (typeof reason === \"string\" && /^[a-z][a-z0-9_]{0,127}$/.test(reason)) {\n\t\t\treturn reason;\n\t\t}\n\t}\n\treturn fallback;\n}\n\nfunction safeErrorClass(error: unknown): string {\n\tif (error instanceof RangeError) return \"RangeError\";\n\tif (error instanceof TypeError) return \"TypeError\";\n\tif (error instanceof SyntaxError) return \"SyntaxError\";\n\treturn \"Error\";\n}\n\nfunction safeCryptoHftDiagnostics(\n\terror: CryptoHftDataError,\n\tfailurePhase: string,\n): Record<string, string | number | boolean> {\n\tconst diagnostics = error.diagnostics;\n\tif (\n\t\t\"dataset_object_identity\" in diagnostics ||\n\t\t\"dataset_object_checksum\" in diagnostics\n\t) {\n\t\tconst safe: Record<string, string | number | boolean> = {};\n\t\tfor (const key of [\n\t\t\t\"dataset_object_identity\",\n\t\t\t\"dataset_object_checksum\",\n\t\t\t\"failure_phase\",\n\t\t\t\"attempt_count\",\n\t\t\t\"quarantined\",\n\t\t] as const) {\n\t\t\tconst value = diagnostics[key];\n\t\t\tif (\n\t\t\t\ttypeof value === \"string\" ||\n\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\ttypeof value === \"boolean\"\n\t\t\t) {\n\t\t\t\tsafe[key] = value;\n\t\t\t}\n\t\t}\n\t\tif (!(\"failure_phase\" in safe)) safe.failure_phase = failurePhase;\n\t\treturn safe;\n\t}\n\treturn {\n\t\t...diagnostics,\n\t\tfailure_phase: diagnostics.failure_phase ?? failurePhase,\n\t};\n}\n\nfunction assertArchivePreflight(\n\trequest: MarketDataVendorBackfillRequest,\n\tresolution: ArchivePreflightResolution,\n): void {\n\tif (!request.target || !request.productionAuthorizationId) {\n\t\tthrow new Error(\"request target or production authorization ID is missing\");\n\t}\n\tconst selection = archiveSelectionCodec.decode(resolution.selection);\n\tconst receipts = resolution.receipts.map((receipt) =>\n\t\tpromotionReceiptCodec.decode(receipt),\n\t);\n\tconst receiptById = new Map<string, PromotionReceiptWire>();\n\tfor (const receipt of receipts) {\n\t\tconst existing = receiptById.get(receipt.receipt_id);\n\t\tif (existing && jcsCanonicalize(existing) !== jcsCanonicalize(receipt)) {\n\t\t\tthrow new Error(\"stored receipt identity has conflicting content\");\n\t\t}\n\t\treceiptById.set(receipt.receipt_id, receipt);\n\t}\n\tfor (const bundle of selection.bundles) {\n\t\tif (bundle.capture_origin === \"vendor_historical_backfill\") {\n\t\t\tconst receipt = bundle.qualification\n\t\t\t\t? receiptById.get(bundle.qualification.receipt_id)\n\t\t\t\t: undefined;\n\t\t\tif (!receipt) {\n\t\t\t\tthrow new Error(\"vendor selection lacks its validated stored receipt\");\n\t\t\t}\n\t\t\tif (!promotionReceiptMatchesCurrentPolicies(receipt)) {\n\t\t\t\tthrow new Error(\"vendor selection receipt is not current-qualified\");\n\t\t\t}\n\t\t}\n\t}\n\tif (\n\t\tresolution.readerIdentity.environment !== request.target.environment ||\n\t\tresolution.readerIdentity.cluster !== request.target.cluster\n\t) {\n\t\tthrow new Error(\"archive reader cluster identity mismatch\");\n\t}\n}\n\nfunction assertForwarderPreflight(\n\trequest: MarketDataVendorBackfillRequest,\n\tresolution: ForwarderPreflightResolution,\n\tnowMs: number,\n): void {\n\tif (!request.target || !request.productionAuthorizationId) {\n\t\tthrow new Error(\"request target or production authorization ID is missing\");\n\t}\n\tif (\n\t\tresolution.forwarderIdentity.environment !== request.target.environment ||\n\t\tresolution.forwarderIdentity.cluster !== request.target.cluster\n\t) {\n\t\tthrow new Error(\"archive forwarder cluster identity mismatch\");\n\t}\n\tconst authorization = resolution.authorization;\n\tconst expiresAtMs = Date.parse(authorization.expiresAt);\n\tif (\n\t\tauthorization.authorizationId !== request.productionAuthorizationId ||\n\t\tauthorization.scope !== \"production\" ||\n\t\tauthorization.environment !== request.target.environment ||\n\t\tauthorization.cluster !== request.target.cluster ||\n\t\tauthorization.credentialValidated !== true ||\n\t\t!Number.isSafeInteger(expiresAtMs) ||\n\t\tnew Date(expiresAtMs).toISOString() !== authorization.expiresAt ||\n\t\texpiresAtMs <= nowMs\n\t) {\n\t\tthrow new Error(\"production forwarder authorization is invalid\");\n\t}\n}\n\nfunction resourcePolicyScopeExceeded(\n\trequest: MarketDataVendorBackfillRequest,\n): boolean {\n\treturn (\n\t\trequest.depth > RESOURCE_POLICY.request_bounds.max_depth ||\n\t\trequest.window.endTimeMs - request.window.startTimeMs >\n\t\t\tRESOURCE_POLICY.request_bounds.max_window_ms ||\n\t\trequest.requiredClockTargetsMs.length >\n\t\t\tRESOURCE_POLICY.request_bounds.max_required_events\n\t);\n}\n\nfunction storedReceiptForSelection(\n\tresolution: ArchivePreflightResolution,\n): PromotionReceiptWire | undefined {\n\tconst receiptId = resolution.selection.receipt_ids[0];\n\treturn receiptId\n\t\t? resolution.receipts.find((receipt) => receipt.receipt_id === receiptId)\n\t\t: undefined;\n}\n\nexport async function runMarketDataVendorBackfill(\n\tinput: unknown,\n\tdependencies: BackfillDependencies,\n): Promise<BackfillDomainOutcome> {\n\tlet request: MarketDataVendorBackfillRequest;\n\ttry {\n\t\tconst documents = input as { request?: unknown; requiredClock?: unknown };\n\t\trequest = decodeBackfillRunDocuments({\n\t\t\trequest: documents.request,\n\t\t\trequiredClock: documents.requiredClock,\n\t\t});\n\t} catch (error) {\n\t\treturn outcome(undefined, \"request_invalid\", \"request_invalid\", {\n\t\t\t...(error instanceof BackfillRequestValidationError\n\t\t\t\t? { reasonSubcode: error.reasonSubcode }\n\t\t\t\t: {}),\n\t\t});\n\t}\n\n\tlet initialResolution: ArchivePreflightResolution;\n\ttry {\n\t\tinitialResolution = await dependencies.archive.resolveSelection(request);\n\t\tassertArchivePreflight(request, initialResolution);\n\t\tconst forwarderPreflight = await dependencies.forwarder.preflight({\n\t\t\tauthorizationId: request.productionAuthorizationId as string,\n\t\t\ttarget: request.target as ArchiveClusterIdentity,\n\t\t});\n\t\tassertForwarderPreflight(\n\t\t\trequest,\n\t\t\tforwarderPreflight,\n\t\t\tdependencies.clock.nowMs(),\n\t\t);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"archive_preflight_failed\",\n\t\t\t\"archive_preflight_failed\",\n\t\t);\n\t}\n\tif (initialResolution.selection.coverage_class === \"complete\") {\n\t\tconst receipt = storedReceiptForSelection(initialResolution);\n\t\treturn outcome(request, \"already_covered\", \"qualified_coverage_complete\", {\n\t\t\tselection: initialResolution.selection,\n\t\t\t...(receipt ? { receipt } : {}),\n\t\t});\n\t}\n\n\tif (resourcePolicyScopeExceeded(request)) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"capability_unsupported\",\n\t\t\t\"capability_unsupported\",\n\t\t\t{ reasonSubcode: \"resource_policy_scope_exceeded\" },\n\t\t);\n\t}\n\tif (\n\t\trequest.sourcePolicy === \"fill_gaps\" &&\n\t\t(request.productPins?.capability_policy.policy_id !==\n\t\t\tCAPABILITY_POLICY.policy_id ||\n\t\t\trequest.productPins.capability_policy.policy_sha256 !==\n\t\t\t\tCAPABILITY_POLICY.policy_sha256)\n\t) {\n\t\treturn outcome(request, \"capability_unsupported\", \"scope_unsupported\", {\n\t\t\treasonSubcode: \"fill_gaps_requires_capability_policy_v3\",\n\t\t});\n\t}\n\n\tlet capability: ProviderCapability | undefined;\n\ttry {\n\t\tcapability = dependencies.providers.capabilityFor(request);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"capability_unsupported\",\n\t\t\t\"capability_probe_failed\",\n\t\t);\n\t}\n\tif (!capability) {\n\t\treturn outcome(request, \"capability_unsupported\", \"scope_unsupported\");\n\t}\n\tif (\n\t\t!request.providerPolicy.allowedAdapterVersions.includes(\n\t\t\tcapability.adapterVersion,\n\t\t)\n\t) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"capability_unsupported\",\n\t\t\t\"adapter_version_unpinned\",\n\t\t);\n\t}\n\n\tlet credential: unknown;\n\ttry {\n\t\tcredential = await dependencies.credentials.resolve(capability.provider);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"credentials_missing\",\n\t\t\t\"credential_resolution_failed\",\n\t\t);\n\t}\n\tif (credential === undefined || credential === null) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"credentials_missing\",\n\t\t\t\"provider_credentials_missing\",\n\t\t);\n\t}\n\n\tlet dataset: ProviderDataset;\n\tlet normalized: NormalizedBackfill;\n\tlet failurePhase = \"acquire\";\n\ttry {\n\t\tconst acquisitionRequest = providerAcquisitionRequest(request);\n\t\tdataset = await dependencies.providers.acquire(\n\t\t\tacquisitionRequest,\n\t\t\tcapability,\n\t\t\tcredential,\n\t\t);\n\t\tconst bundleId = captureBundleId(request, capability, dataset);\n\t\tfailurePhase = \"normalize\";\n\t\tnormalized = await dependencies.providers.normalize(\n\t\t\tacquisitionRequest,\n\t\t\tcapability,\n\t\t\tdataset,\n\t\t\tbundleId,\n\t\t);\n\t\tif (normalized.captureBundleId !== bundleId) {\n\t\t\treturn outcome(request, \"vendor_fetch_failed\", \"vendor_fetch_failed\", {\n\t\t\t\treasonSubcode: \"capture_identity_mismatch\",\n\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tconst reason = stableFailureReason(error, \"provider_dataset_invalid\");\n\t\treturn outcome(request, \"vendor_fetch_failed\", \"vendor_fetch_failed\", {\n\t\t\treasonSubcode: reason.startsWith(\"budget_\")\n\t\t\t\t? \"resource_limit_exceeded\"\n\t\t\t\t: reason,\n\t\t\t...(error instanceof CryptoHftDataError\n\t\t\t\t? {\n\t\t\t\t\t\tdiagnostics: safeCryptoHftDiagnostics(error, failurePhase),\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\tdiagnostics: {\n\t\t\t\t\t\t\terror_class: safeErrorClass(error),\n\t\t\t\t\t\t\tfailure_phase: failurePhase,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t});\n\t}\n\n\ttry {\n\t\tconst candidateBatches = buildForwarderBatches({\n\t\t\tcaptureBundleId: normalized.captureBundleId,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: normalized.rows,\n\t\t});\n\t\tif (!(await submitAll(dependencies, candidateBatches))) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"candidate_batch_rejected\",\n\t\t\t);\n\t\t}\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"archive_ingest_failed\",\n\t\t\t\"candidate_submission_failed\",\n\t\t);\n\t}\n\n\tlet verification: CandidateVerification;\n\ttry {\n\t\tverification = await dependencies.archive.verifyCandidate(\n\t\t\trequest,\n\t\t\tnormalized,\n\t\t\tnormalized.captureBundleId,\n\t\t\tinitialResolution,\n\t\t);\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"candidate_query_failed\",\n\t\t);\n\t}\n\tif (\n\t\t!verification.passed ||\n\t\tverification.captureBundleId !== normalized.captureBundleId ||\n\t\tverification.canonicalSemanticDigest !==\n\t\t\tnormalized.canonicalSemanticDigest ||\n\t\t!verification.seamVerified ||\n\t\t!verification.coverageVerified\n\t) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\tverification.reasonCode ?? \"semantic_verification_failed\",\n\t\t);\n\t}\n\n\tlet receipt: PromotionReceiptWire;\n\ttry {\n\t\treceipt = buildPromotionReceipt(\n\t\t\trequest,\n\t\t\tcapability,\n\t\t\tnormalized,\n\t\t\tverification,\n\t\t\tdependencies.clock.nowMs(),\n\t\t);\n\t\tconst [batch] = buildForwarderBatches({\n\t\t\tcaptureBundleId: normalized.captureBundleId,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: [promotionReceiptToArchiveRow(receipt)],\n\t\t});\n\t\tif (!batch || !(await submitAll(dependencies, [batch]))) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"promotion_commit_failed\",\n\t\t\t);\n\t\t}\n\t\tconst qualification = finalizeQualificationEvent({\n\t\t\tcapture_bundle_id: receipt.capture_bundle_id,\n\t\t\tstate: \"qualified\",\n\t\t\treceipt_id: receipt.receipt_id,\n\t\t\tpromotion_identity_sha256: receipt.promotion_identity_sha256,\n\t\t\twindow: receipt.window,\n\t\t\tevent_at: receipt.verified_at,\n\t\t\treason_code: \"promotion_verified\",\n\t\t});\n\t\tconst [qualificationBatch] = buildForwarderBatches({\n\t\t\tcaptureBundleId: normalized.captureBundleId,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: [qualificationEventToArchiveRow(qualification)],\n\t\t});\n\t\tif (\n\t\t\t!qualificationBatch ||\n\t\t\t!(await submitAll(dependencies, [qualificationBatch]))\n\t\t) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"qualification_commit_failed\",\n\t\t\t\t{ receipt },\n\t\t\t);\n\t\t}\n\t} catch {\n\t\treturn outcome(request, \"archive_ingest_failed\", \"promotion_commit_failed\");\n\t}\n\n\tlet finalResolution: ArchivePreflightResolution;\n\ttry {\n\t\tfinalResolution = await dependencies.archive.resolveSelection(request);\n\t\tassertArchivePreflight(request, finalResolution);\n\t} catch (error) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"post_promotion_selection_failed\",\n\t\t\t{\n\t\t\t\treceipt,\n\t\t\t\treasonSubcode: stableFailureReason(\n\t\t\t\t\terror,\n\t\t\t\t\t\"archive_selection_resolution_failed\",\n\t\t\t\t),\n\t\t\t},\n\t\t);\n\t}\n\tif (finalResolution.selection.coverage_class !== \"complete\") {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"qualified_coverage_incomplete\",\n\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t);\n\t}\n\tif (\n\t\tfinalResolution.selection.bundles.some(\n\t\t\t(bundle) =>\n\t\t\t\tbundle.capture_bundle_id === receipt.capture_bundle_id &&\n\t\t\t\tbundle.capture_origin === \"vendor_historical_backfill\" &&\n\t\t\t\tbundle.qualification?.receipt_id === receipt.receipt_id,\n\t\t) === false\n\t) {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"promotion_verification_failed\",\n\t\t\t\"promoted_receipt_not_selected\",\n\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t);\n\t}\n\ttry {\n\t\tif (!request.wire) throw new Error(\"decoded request wire is missing\");\n\t\tconst [selectionBatch] = buildForwarderBatches({\n\t\t\tcaptureBundleId: receipt.capture_bundle_id,\n\t\t\tdeploymentId: \"market-data-vendor-backfill\",\n\t\t\trows: [\n\t\t\t\tarchiveSelectionToArchiveRow(request.wire, finalResolution.selection),\n\t\t\t],\n\t\t});\n\t\tif (!selectionBatch || !(await submitAll(dependencies, [selectionBatch]))) {\n\t\t\treturn outcome(\n\t\t\t\trequest,\n\t\t\t\t\"archive_ingest_failed\",\n\t\t\t\t\"selection_persistence_failed\",\n\t\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t\t);\n\t\t}\n\t} catch {\n\t\treturn outcome(\n\t\t\trequest,\n\t\t\t\"archive_ingest_failed\",\n\t\t\t\"selection_persistence_failed\",\n\t\t\t{ receipt, selection: finalResolution.selection },\n\t\t);\n\t}\n\treturn outcome(request, \"promoted\", \"promotion_qualified\", {\n\t\treceipt,\n\t\tselection: finalResolution.selection,\n\t});\n}\n",
|
|
189
194
|
"import type { ForwarderBatch } from \"./contracts\";\nimport type {\n\tArchiveClusterIdentity,\n\tProductionForwarderAuthorization,\n} from \"./core\";\n\nexport type ArchiveForwarderClient = {\n\tpreflight(input: {\n\t\tauthorizationId: string;\n\t\ttarget: ArchiveClusterIdentity;\n\t}): Promise<{\n\t\tforwarderIdentity: ArchiveClusterIdentity;\n\t\tauthorization: ProductionForwarderAuthorization;\n\t}>;\n\tsubmit(batch: ForwarderBatch): Promise<{ ok: boolean; inserted: number }>;\n};\n\nexport type ArchiveForwarderClientOptions = {\n\turl: string;\n\tauthToken?: string;\n\tfetch?: typeof globalThis.fetch;\n};\n\nexport class ArchiveForwarderSubmissionError extends Error {\n\treadonly reason: string;\n\n\tconstructor(reason: string, status?: number) {\n\t\tsuper(status === undefined ? reason : `${reason}:${status}`);\n\t\tthis.name = \"ArchiveForwarderSubmissionError\";\n\t\tthis.reason = reason;\n\t}\n}\n\nfunction parseAdmissionResult(\n\tvalue: unknown,\n): { ok: boolean; inserted: number } | undefined {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return;\n\tconst record = value as Record<string, unknown>;\n\tif (\n\t\trecord.ok !== true ||\n\t\ttypeof record.inserted !== \"number\" ||\n\t\t!Number.isSafeInteger(record.inserted) ||\n\t\trecord.inserted < 0\n\t) {\n\t\treturn;\n\t}\n\treturn { ok: true, inserted: record.inserted };\n}\n\nexport function createArchiveForwarderClient(\n\toptions: ArchiveForwarderClientOptions,\n): ArchiveForwarderClient {\n\tconst url = options.url.trim();\n\tif (!url) throw new Error(\"archive_forwarder_url_required\");\n\tconst request = options.fetch ?? globalThis.fetch;\n\tconst authorizationHeaders: Record<string, string> = {};\n\tif (options.authToken?.trim()) {\n\t\tauthorizationHeaders.authorization = `Bearer ${options.authToken.trim()}`;\n\t}\n\n\treturn {\n\t\tasync preflight(input) {\n\t\t\tconst endpoint = new URL(url);\n\t\t\tendpoint.pathname = \"/health/market-data-vendor-backfill\";\n\t\t\tendpoint.search = \"\";\n\t\t\tendpoint.hash = \"\";\n\t\t\tlet response: Response;\n\t\t\ttry {\n\t\t\t\tresponse = await request(endpoint, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t...authorizationHeaders,\n\t\t\t\t\t\t\"x-archive-authorization-id\": input.authorizationId,\n\t\t\t\t\t\t\"x-archive-environment\": input.target.environment,\n\t\t\t\t\t\t\"x-archive-cluster\": input.target.cluster,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\tthrow new ArchiveForwarderSubmissionError(\n\t\t\t\t\t\"archive_forwarder_preflight_unreachable\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new ArchiveForwarderSubmissionError(\n\t\t\t\t\t\"archive_forwarder_preflight_http_error\",\n\t\t\t\t\tresponse.status,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst value = await response.json().catch(() => undefined);\n\t\t\tif (!value || typeof value !== \"object\" || Array.isArray(value)) {\n\t\t\t\tthrow new ArchiveForwarderSubmissionError(\n\t\t\t\t\t\"archive_forwarder_invalid_preflight\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst record = value as Record<string, unknown>;\n\t\t\tconst identity = record.forwarder_identity as\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| undefined;\n\t\t\tconst authorization = record.authorization as\n\t\t\t\t| Record<string, unknown>\n\t\t\t\t| undefined;\n\t\t\tconst expiresAtMs =\n\t\t\t\ttypeof authorization?.expires_at === \"string\"\n\t\t\t\t\t? Date.parse(authorization.expires_at)\n\t\t\t\t\t: Number.NaN;\n\t\t\tif (\n\t\t\t\trecord.ok !== true ||\n\t\t\t\t!identity ||\n\t\t\t\tidentity.environment !== input.target.environment ||\n\t\t\t\tidentity.cluster !== input.target.cluster ||\n\t\t\t\t!authorization ||\n\t\t\t\tauthorization.authorization_id !== input.authorizationId ||\n\t\t\t\tauthorization.scope !== \"production\" ||\n\t\t\t\tauthorization.environment !== input.target.environment ||\n\t\t\t\tauthorization.cluster !== input.target.cluster ||\n\t\t\t\ttypeof authorization.expires_at !== \"string\" ||\n\t\t\t\t!Number.isSafeInteger(expiresAtMs) ||\n\t\t\t\tnew Date(expiresAtMs).toISOString() !== authorization.expires_at ||\n\t\t\t\tauthorization.credential_validated !== true\n\t\t\t) {\n\t\t\t\tthrow new ArchiveForwarderSubmissionError(\n\t\t\t\t\t\"archive_forwarder_invalid_preflight\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tforwarderIdentity: {\n\t\t\t\t\tenvironment: identity.environment as string,\n\t\t\t\t\tcluster: identity.cluster as string,\n\t\t\t\t},\n\t\t\t\tauthorization: {\n\t\t\t\t\tauthorizationId: authorization.authorization_id as string,\n\t\t\t\t\tscope: \"production\",\n\t\t\t\t\tenvironment: authorization.environment as string,\n\t\t\t\t\tcluster: authorization.cluster as string,\n\t\t\t\t\texpiresAt: authorization.expires_at,\n\t\t\t\t\tcredentialValidated: true,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tasync submit(batch) {\n\t\t\tlet response: Response;\n\t\t\ttry {\n\t\t\t\tresponse = await request(url, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"content-type\": \"application/json\",\n\t\t\t\t\t\t...authorizationHeaders,\n\t\t\t\t\t},\n\t\t\t\t\tbody: JSON.stringify(batch),\n\t\t\t\t});\n\t\t\t} catch {\n\t\t\t\tthrow new ArchiveForwarderSubmissionError(\n\t\t\t\t\t\"archive_forwarder_unreachable\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new ArchiveForwarderSubmissionError(\n\t\t\t\t\t\"archive_forwarder_http_error\",\n\t\t\t\t\tresponse.status,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst admission = parseAdmissionResult(\n\t\t\t\tawait response.json().catch(() => undefined),\n\t\t\t);\n\t\t\tif (!admission) {\n\t\t\t\tthrow new ArchiveForwarderSubmissionError(\n\t\t\t\t\t\"archive_forwarder_invalid_response\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn admission;\n\t\t},\n\t};\n}\n"
|
|
190
195
|
],
|
|
191
|
-
"mappings": "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",
|
|
192
|
-
"debugId": "
|
|
196
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EACA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAqB,2BAA2B,sBAAsB,wBAAwB,oBAAoB,oBAAoB,qBAAqB,cAAc,YAAY,cAAc,gBAAgB,eAAe,qBAAqB,sBAAmB;AAAA;AAAA,EAElR,MAAM,YAAY;AAAA,EAClB;AAAA,EACQ,sBAAc;AAAA,EACd,qBAAa;AAAA;AAAA,EACrB,MAAM,aAAa,YAAY;AAAA,IAC3B,WAAW,CAAC,GAAG;AAAA,MACX,MAAM;AAAA,MACN,IAAI,CAAS,mBAAW,KAAK,CAAC;AAAA,QAC1B,MAAM,IAAI,MAAM,0CAA0C;AAAA,MAC9D,KAAK,MAAM;AAAA;AAAA,IAEf,QAAQ,GAAG;AAAA,MACP,OAAO,KAAK;AAAA;AAAA,IAEhB,QAAQ,GAAG;AAAA,MACP,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,OAAO,GAAG,KAAK,MAAM,EAAE;AAAA;AAAA,EAE/B;AAAA,EACQ,eAAO;AAAA;AAAA,EACf,MAAM,cAAc,YAAY;AAAA,IAC5B,WAAW,CAAC,MAAM;AAAA,MACd,MAAM;AAAA,MACN,KAAK,SAAS,OAAO,SAAS,WAAW,CAAC,IAAI,IAAI;AAAA;AAAA,IAEtD,QAAQ,GAAG;AAAA,MACP,OAAO,KAAK;AAAA;AAAA,IAEhB,QAAQ,GAAG;AAAA,MACP,IAAI,KAAK,OAAO,SAAS;AAAA,QACrB,OAAO;AAAA,MACX,MAAM,OAAO,KAAK,OAAO;AAAA,MACzB,OAAO,SAAS,MAAM,SAAS;AAAA;AAAA,QAE/B,GAAG,GAAG;AAAA,MACN,IAAI;AAAA,MACJ,QAAS,KAAK,KAAK,UAAU,QAAQ,OAAY,YAAI,KAAM,KAAK,OAAO,KAAK,OAAO,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,EAAE;AAAA;AAAA,QAElH,KAAK,GAAG;AAAA,MACR,IAAI;AAAA,MACJ,QAAS,KAAK,KAAK,YAAY,QAAQ,OAAY,YAAI,KAAM,KAAK,SAAS,KAAK,OAAO,OAAO,CAAC,OAAO,MAAM;AAAA,QACxG,IAAI,aAAa;AAAA,UACb,MAAM,EAAE,QAAQ,MAAM,EAAE,QAAQ,KAAK;AAAA,QACzC,OAAO;AAAA,SACR,CAAC,CAAC;AAAA;AAAA,EAEb;AAAA,EACQ,gBAAQ;AAAA,EACR,cAAM,IAAI,MAAM,EAAE;AAAA,EAC1B,SAAS,CAAC,CAAC,SAAS,MAAM;AAAA,IACtB,MAAM,OAAO,CAAC,KAAK,EAAE;AAAA,IACrB,IAAI,IAAI;AAAA,IACR,OAAO,IAAI,KAAK,QAAQ;AAAA,MACpB,WAAW,MAAM,KAAK,EAAE;AAAA,MACxB,KAAK,KAAK,KAAK,EAAE,EAAE;AAAA,IACvB;AAAA,IACA,OAAO,IAAI,MAAM,IAAI;AAAA;AAAA,EAEjB,YAAI;AAAA,EACZ,IAAM,OAAO,IAAI,MAAM,GAAG;AAAA,EAC1B,SAAS,GAAG,CAAC,SAAS,MAAM;AAAA,IACxB,MAAM,OAAO,CAAC,cAAc,KAAK,EAAE,CAAC;AAAA,IACpC,IAAI,IAAI;AAAA,IACR,OAAO,IAAI,KAAK,QAAQ;AAAA,MACpB,KAAK,KAAK,IAAI;AAAA,MACd,WAAW,MAAM,KAAK,EAAE;AAAA,MACxB,KAAK,KAAK,MAAM,cAAc,KAAK,EAAE,EAAE,CAAC;AAAA,IAC5C;AAAA,IACA,SAAS,IAAI;AAAA,IACb,OAAO,IAAI,MAAM,IAAI;AAAA;AAAA,EAEjB,cAAM;AAAA,EACd,SAAS,UAAU,CAAC,MAAM,KAAK;AAAA,IAC3B,IAAI,eAAe;AAAA,MACf,KAAK,KAAK,GAAG,IAAI,MAAM;AAAA,IACtB,SAAI,eAAe;AAAA,MACpB,KAAK,KAAK,GAAG;AAAA,IAEb;AAAA,WAAK,KAAK,YAAY,GAAG,CAAC;AAAA;AAAA,EAE1B,qBAAa;AAAA,EACrB,SAAS,QAAQ,CAAC,MAAM;AAAA,IACpB,IAAI,IAAI;AAAA,IACR,OAAO,IAAI,KAAK,SAAS,GAAG;AAAA,MACxB,IAAI,KAAK,OAAO,MAAM;AAAA,QAClB,MAAM,MAAM,eAAe,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE;AAAA,QACnD,IAAI,QAAQ,WAAW;AAAA,UACnB,KAAK,OAAO,IAAI,GAAG,GAAG,GAAG;AAAA,UACzB;AAAA,QACJ;AAAA,QACA,KAAK,OAAO;AAAA,MAChB;AAAA,MACA;AAAA,IACJ;AAAA;AAAA,EAEJ,SAAS,cAAc,CAAC,GAAG,GAAG;AAAA,IAC1B,IAAI,MAAM;AAAA,MACN,OAAO;AAAA,IACX,IAAI,MAAM;AAAA,MACN,OAAO;AAAA,IACX,IAAI,OAAO,KAAK,UAAU;AAAA,MACtB,IAAI,aAAa,QAAQ,EAAE,EAAE,SAAS,OAAO;AAAA,QACzC;AAAA,MACJ,IAAI,OAAO,KAAK;AAAA,QACZ,OAAO,GAAG,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,MAC/B,IAAI,EAAE,OAAO;AAAA,QACT,OAAO,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,IAAI,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,EAAE,aAAa;AAAA,MACvD,OAAO,IAAI,IAAI,EAAE,MAAM,CAAC;AAAA,IAC5B;AAAA;AAAA,EAEJ,SAAS,SAAS,CAAC,IAAI,IAAI;AAAA,IACvB,OAAO,GAAG,SAAS,IAAI,KAAK,GAAG,SAAS,IAAI,KAAK,MAAO,KAAK;AAAA;AAAA,EAEzD,oBAAY;AAAA,EAEpB,SAAS,WAAW,CAAC,GAAG;AAAA,IACpB,OAAO,OAAO,KAAK,YAAY,OAAO,KAAK,aAAa,MAAM,OACxD,IACA,cAAc,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;AAAA;AAAA,EAE1D,SAAS,SAAS,CAAC,GAAG;AAAA,IAClB,OAAO,IAAI,MAAM,cAAc,CAAC,CAAC;AAAA;AAAA,EAE7B,oBAAY;AAAA,EACpB,SAAS,aAAa,CAAC,GAAG;AAAA,IACtB,OAAO,KAAK,UAAU,CAAC,EAClB,QAAQ,WAAW,SAAS,EAC5B,QAAQ,WAAW,SAAS;AAAA;AAAA,EAE7B,wBAAgB;AAAA,EACxB,SAAS,WAAW,CAAC,KAAK;AAAA,IACtB,OAAO,OAAO,OAAO,YAAoB,mBAAW,KAAK,GAAG,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAM;AAAA;AAAA,EAEzF,sBAAc;AAAA,EAEtB,SAAS,gBAAgB,CAAC,KAAK;AAAA,IAC3B,IAAI,OAAO,OAAO,YAAoB,mBAAW,KAAK,GAAG,GAAG;AAAA,MACxD,OAAO,IAAI,MAAM,GAAG,KAAK;AAAA,IAC7B;AAAA,IACA,MAAM,IAAI,MAAM,iCAAiC,oCAAoC;AAAA;AAAA,EAEjF,2BAAmB;AAAA,EAC3B,SAAS,UAAU,CAAC,IAAI;AAAA,IACpB,OAAO,IAAI,MAAM,GAAG,SAAS,CAAC;AAAA;AAAA,EAE1B,qBAAa;AAAA;;;;ECzJrB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAqB,yBAAyB,gBAAgB,mBAAmB,yBAAsB;AAAA,EAC/G,IAAM;AAAA;AAAA,EACN,MAAM,mBAAmB,MAAM;AAAA,IAC3B,WAAW,CAAC,MAAM;AAAA,MACd,MAAM,uBAAuB,kBAAkB;AAAA,MAC/C,KAAK,QAAQ,KAAK;AAAA;AAAA,EAE1B;AAAA,EACA,IAAI;AAAA,GACH,QAAS,CAAC,iBAAgB;AAAA,IACvB,gBAAe,gBAAe,aAAa,KAAK;AAAA,IAChD,gBAAe,gBAAe,eAAe,KAAK;AAAA,KACnD,mBAA2B,yBAAiB,iBAAiB,CAAC,EAAE;AAAA,EAC3D,mBAAW;AAAA,IACf,OAAO,IAAI,OAAO,KAAK,OAAO;AAAA,IAC9B,KAAK,IAAI,OAAO,KAAK,KAAK;AAAA,IAC1B,KAAK,IAAI,OAAO,KAAK,KAAK;AAAA,EAC9B;AAAA;AAAA,EACA,MAAM,MAAM;AAAA,IACR,WAAW,GAAG,UAAU,WAAW,CAAC,GAAG;AAAA,MACnC,KAAK,SAAS,CAAC;AAAA,MACf,KAAK,YAAY;AAAA,MACjB,KAAK,UAAU;AAAA;AAAA,IAEnB,MAAM,CAAC,cAAc;AAAA,MACjB,OAAO,wBAAwB,OAAO,OAAO,eAAe,KAAK,KAAK,YAAY;AAAA;AAAA,IAEtF,IAAI,CAAC,QAAQ;AAAA,MACT,OAAO,IAAI,OAAO,KAAK,KAAK,SAAS,MAAM,CAAC;AAAA;AAAA,IAEhD,QAAQ,CAAC,QAAQ;AAAA,MACb,MAAM,KAAK,KAAK,OAAO,WAAW,KAAK,WAAW,MAAM;AAAA,MACxD,OAAO,GAAG,SAAS,GAAG;AAAA;AAAA,IAE1B,UAAU,CAAC,QAAQ;AAAA,MACf,IAAI,IAAI;AAAA,MACR,MAAM,MAAM,KAAK,KAAK,aAAa,QAAQ,OAAY,YAAS,YAAI,GAAG,eAAe,QAAQ,OAAY,YAAS,YAAI,GAAG,IAAI,MAAM,MAAO,KAAK,aAAa,CAAC,KAAK,UAAU,IAAI,MAAM,GAAI;AAAA,QACvL,MAAM,IAAI,MAAM,oBAAoB,sCAAsC;AAAA,MAC9E;AAAA,MACA,OAAQ,KAAK,OAAO,UAAU,EAAE,QAAQ,OAAO,EAAE;AAAA;AAAA,EAEzD;AAAA,EACQ,gBAAQ;AAAA;AAAA,EAChB,MAAM,uBAAuB,OAAO,KAAK;AAAA,IACrC,WAAW,CAAC,QAAQ,SAAS;AAAA,MACzB,MAAM,OAAO;AAAA,MACb,KAAK,SAAS;AAAA;AAAA,IAElB,QAAQ,CAAC,SAAS,UAAU,aAAa;AAAA,MACrC,KAAK,QAAQ;AAAA,MACb,KAAK,YAAa,IAAG,OAAO,MAAO,IAAI,OAAO,KAAK,QAAQ,KAAK;AAAA;AAAA,EAExE;AAAA,EACQ,yBAAiB;AAAA,EACzB,IAAM,OAAQ,IAAG,OAAO;AAAA;AAAA,EACxB,MAAM,mBAAmB,MAAM;AAAA,IAC3B,WAAW,CAAC,MAAM;AAAA,MACd,MAAM,IAAI;AAAA,MACV,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,SAAS,KAAK;AAAA,MACnB,KAAK,OAAO,KAAK,MAAM,IAAI,KAAK,QAAQ,OAAO,OAAO,IAAI;AAAA;AAAA,IAE9D,GAAG,GAAG;AAAA,MACF,OAAO,KAAK;AAAA;AAAA,IAEhB,IAAI,CAAC,QAAQ;AAAA,MACT,OAAO,IAAI,eAAe,QAAQ,KAAK,SAAS,MAAM,CAAC;AAAA;AAAA,IAE3D,KAAK,CAAC,cAAc,OAAO;AAAA,MACvB,IAAI;AAAA,MACJ,IAAI,MAAM,QAAQ;AAAA,QACd,MAAM,IAAI,MAAM,sCAAsC;AAAA,MAC1D,MAAM,OAAO,KAAK,OAAO,YAAY;AAAA,MACrC,QAAQ,WAAW;AAAA,MACnB,MAAM,YAAY,KAAK,MAAM,SAAS,QAAQ,OAAY,YAAI,KAAK,MAAM;AAAA,MACzE,IAAI,KAAK,KAAK,QAAQ;AAAA,MACtB,IAAI,IAAI;AAAA,QACJ,MAAM,QAAQ,GAAG,IAAI,QAAQ;AAAA,QAC7B,IAAI;AAAA,UACA,OAAO;AAAA,MACf,EACK;AAAA,QACD,KAAK,KAAK,QAAQ,UAAU,IAAI;AAAA;AAAA,MAEpC,GAAG,IAAI,UAAU,IAAI;AAAA,MACrB,MAAM,IAAI,KAAK,OAAO,YAAY,KAAK,OAAO,UAAU,CAAC;AAAA,MACzD,MAAM,YAAY,EAAE;AAAA,MACpB,EAAE,aAAa,MAAM;AAAA,MACrB,KAAK,SAAS,OAAO,EAAE,UAAU,QAAQ,UAAU,CAAC;AAAA,MACpD,OAAO;AAAA;AAAA,IAEX,QAAQ,CAAC,QAAQ,UAAU;AAAA,MACvB,MAAM,KAAK,KAAK,QAAQ;AAAA,MACxB,IAAI,CAAC;AAAA,QACD;AAAA,MACJ,OAAO,GAAG,IAAI,QAAQ;AAAA;AAAA,IAE1B,SAAS,CAAC,WAAW,SAAS,KAAK,SAAS;AAAA,MACxC,OAAO,KAAK,cAAc,QAAQ,CAAC,SAAS;AAAA,QACxC,IAAI,KAAK,cAAc;AAAA,UACnB,MAAM,IAAI,MAAM,kBAAkB,oBAAoB;AAAA,QAC1D,OAAQ,IAAG,OAAO,KAAM,YAAY,KAAK;AAAA,OAC5C;AAAA;AAAA,IAEL,SAAS,CAAC,SAAS,KAAK,SAAS,YAAY,SAAS;AAAA,MAClD,OAAO,KAAK,cAAc,QAAQ,CAAC,SAAS;AAAA,QACxC,IAAI,KAAK,UAAU;AAAA,UACf,MAAM,IAAI,MAAM,kBAAkB,oBAAoB;AAAA,QAC1D,OAAO,KAAK,MAAM;AAAA,SACnB,YAAY,OAAO;AAAA;AAAA,IAE1B,aAAa,CAAC,QAAQ,WAAW,aAAa,CAAC,GAAG,SAAS;AAAA,MACvD,IAAI,OAAO,OAAO;AAAA,MAClB,WAAW,UAAU,QAAQ;AAAA,QACzB,MAAM,KAAK,OAAO;AAAA,QAClB,IAAI,CAAC;AAAA,UACD;AAAA,QACJ,MAAM,UAAW,WAAW,UAAU,WAAW,WAAW,IAAI;AAAA,QAChE,GAAG,QAAQ,CAAC,SAAS;AAAA,UACjB,IAAI,QAAQ,IAAI,IAAI;AAAA,YAChB;AAAA,UACJ,QAAQ,IAAI,MAAM,eAAe,OAAO;AAAA,UACxC,IAAI,IAAI,UAAU,IAAI;AAAA,UACtB,IAAI,GAAG;AAAA,YACH,MAAM,MAAM,KAAK,KAAK,MAAc,iBAAS,MAAc,iBAAS;AAAA,YACpE,OAAQ,IAAG,OAAO,KAAM,OAAO,OAAO,UAAU,KAAK,KAAK,KAAK;AAAA,UACnE,EACK,SAAK,IAAI,YAAY,QAAQ,YAAiB,YAAS,YAAI,QAAQ,IAAI,GAAI;AAAA,YAC5E,OAAQ,IAAG,OAAO,KAAM,OAAO,IAAI,KAAK,KAAK;AAAA,UACjD,EACK;AAAA,YACD,MAAM,IAAI,WAAW,IAAI;AAAA;AAAA,UAE7B,QAAQ,IAAI,MAAM,eAAe,SAAS;AAAA,SAC7C;AAAA,MACL;AAAA,MACA,OAAO;AAAA;AAAA,EAEf;AAAA,EACQ,qBAAa;AAAA;;;;EC5IrB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,aAAa,cAAc,cAAc,kBAAkB,oBAAoB,mBAAmB,yBAAyB,qBAAqB,gBAAgB,eAAe,qBAAqB,oBAAoB,sBAAsB,cAAc,oBAAoB,cAAc,YAAS;AAAA,EAC/S,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,KAAK,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAK,CAAC;AAAA,EAC/F,OAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAO,CAAC;AAAA,EACnG,OAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAa,CAAC;AAAA,EAC/G,OAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAO,CAAC;AAAA,EACnG,OAAO,eAAe,SAAS,eAAe,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAe,CAAC;AAAA,EACnH,OAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAa,CAAC;AAAA,EAC/G,OAAO,eAAe,SAAS,cAAc,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAc,CAAC;AAAA,EACjH,OAAO,eAAe,SAAS,QAAQ,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,OAAO;AAAA,IAAQ,CAAC;AAAA,EACrG,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,QAAQ;AAAA,IAAS,CAAC;AAAA,EACxG,OAAO,eAAe,SAAS,cAAc,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,QAAQ;AAAA,IAAc,CAAC;AAAA,EAClH,OAAO,eAAe,SAAS,kBAAkB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,QAAQ;AAAA,IAAkB,CAAC;AAAA,EAC1H,OAAO,eAAe,SAAS,YAAY,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,QAAQ;AAAA,IAAY,CAAC;AAAA,EACtG,oBAAY;AAAA,IAChB,IAAI,IAAI,OAAO,MAAM,GAAG;AAAA,IACxB,KAAK,IAAI,OAAO,MAAM,IAAI;AAAA,IAC1B,IAAI,IAAI,OAAO,MAAM,GAAG;AAAA,IACxB,KAAK,IAAI,OAAO,MAAM,IAAI;AAAA,IAC1B,IAAI,IAAI,OAAO,MAAM,KAAK;AAAA,IAC1B,KAAK,IAAI,OAAO,MAAM,KAAK;AAAA,IAC3B,KAAK,IAAI,OAAO,MAAM,GAAG;AAAA,IACzB,IAAI,IAAI,OAAO,MAAM,IAAI;AAAA,IACzB,KAAK,IAAI,OAAO,MAAM,IAAI;AAAA,IAC1B,KAAK,IAAI,OAAO,MAAM,GAAG;AAAA,EAC7B;AAAA;AAAA,EACA,MAAM,KAAK;AAAA,IACP,aAAa,GAAG;AAAA,MACZ,OAAO;AAAA;AAAA,IAEX,aAAa,CAAC,QAAQ,YAAY;AAAA,MAC9B,OAAO;AAAA;AAAA,EAEf;AAAA;AAAA,EACA,MAAM,YAAY,KAAK;AAAA,IACnB,WAAW,CAAC,SAAS,MAAM,KAAK;AAAA,MAC5B,MAAM;AAAA,MACN,KAAK,UAAU;AAAA,MACf,KAAK,OAAO;AAAA,MACZ,KAAK,MAAM;AAAA;AAAA,IAEf,MAAM,GAAG,KAAK,MAAM;AAAA,MAChB,MAAM,UAAU,MAAM,QAAQ,SAAS,MAAM,KAAK;AAAA,MAClD,MAAM,MAAM,KAAK,QAAQ,YAAY,KAAK,MAAM,KAAK;AAAA,MACrD,OAAO,GAAG,WAAW,KAAK,OAAO,SAAS;AAAA;AAAA,IAE9C,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,IAAI,CAAC,MAAM,KAAK,KAAK;AAAA,QACjB;AAAA,MACJ,IAAI,KAAK;AAAA,QACL,KAAK,MAAM,aAAa,KAAK,KAAK,OAAO,SAAS;AAAA,MACtD,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,OAAO,KAAK,eAAe,OAAO,cAAc,KAAK,IAAI,QAAQ,CAAC;AAAA;AAAA,EAE1E;AAAA;AAAA,EACA,MAAM,eAAe,KAAK;AAAA,IACtB,WAAW,CAAC,KAAK,KAAK,aAAa;AAAA,MAC/B,MAAM;AAAA,MACN,KAAK,MAAM;AAAA,MACX,KAAK,MAAM;AAAA,MACX,KAAK,cAAc;AAAA;AAAA,IAEvB,MAAM,GAAG,MAAM;AAAA,MACX,OAAO,GAAG,KAAK,SAAS,KAAK,SAAS;AAAA;AAAA,IAE1C,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,IAAI,KAAK,eAAe,OAAO,QAAQ,CAAC,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,QACjE;AAAA,MACJ,KAAK,MAAM,aAAa,KAAK,KAAK,OAAO,SAAS;AAAA,MAClD,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,MAAM,QAAQ,KAAK,eAAe,OAAO,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM;AAAA,MACzE,OAAO,aAAa,OAAO,KAAK,GAAG;AAAA;AAAA,EAE3C;AAAA;AAAA,EACA,MAAM,iBAAiB,OAAO;AAAA,IAC1B,WAAW,CAAC,KAAK,IAAI,KAAK,aAAa;AAAA,MACnC,MAAM,KAAK,KAAK,WAAW;AAAA,MAC3B,KAAK,KAAK;AAAA;AAAA,IAEd,MAAM,GAAG,MAAM;AAAA,MACX,OAAO,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,SAAS;AAAA;AAAA,EAExD;AAAA;AAAA,EACA,MAAM,cAAc,KAAK;AAAA,IACrB,WAAW,CAAC,OAAO;AAAA,MACf,MAAM;AAAA,MACN,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ,CAAC;AAAA;AAAA,IAElB,MAAM,GAAG,MAAM;AAAA,MACX,OAAO,GAAG,KAAK,WAAW;AAAA;AAAA,EAElC;AAAA;AAAA,EACA,MAAM,cAAc,KAAK;AAAA,IACrB,WAAW,CAAC,OAAO;AAAA,MACf,MAAM;AAAA,MACN,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ,CAAC;AAAA;AAAA,IAElB,MAAM,GAAG,MAAM;AAAA,MACX,MAAM,QAAQ,KAAK,QAAQ,IAAI,KAAK,UAAU;AAAA,MAC9C,OAAO,QAAQ,WAAW;AAAA;AAAA,EAElC;AAAA;AAAA,EACA,MAAM,cAAc,KAAK;AAAA,IACrB,WAAW,CAAC,OAAO;AAAA,MACf,MAAM;AAAA,MACN,KAAK,QAAQ;AAAA;AAAA,IAEjB,MAAM,GAAG,MAAM;AAAA,MACX,OAAO,SAAS,KAAK,WAAW;AAAA;AAAA,QAEhC,KAAK,GAAG;AAAA,MACR,OAAO,KAAK,MAAM;AAAA;AAAA,EAE1B;AAAA;AAAA,EACA,MAAM,gBAAgB,KAAK;AAAA,IACvB,WAAW,CAAC,MAAM;AAAA,MACd,MAAM;AAAA,MACN,KAAK,OAAO;AAAA;AAAA,IAEhB,MAAM,GAAG,MAAM;AAAA,MACX,OAAO,GAAG,KAAK,UAAU;AAAA;AAAA,IAE7B,aAAa,GAAG;AAAA,MACZ,OAAO,GAAG,KAAK,SAAS,OAAO;AAAA;AAAA,IAEnC,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,KAAK,OAAO,aAAa,KAAK,MAAM,OAAO,SAAS;AAAA,MACpD,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,OAAO,KAAK,gBAAgB,OAAO,cAAc,KAAK,KAAK,QAAQ,CAAC;AAAA;AAAA,EAE5E;AAAA;AAAA,EACA,MAAM,mBAAmB,KAAK;AAAA,IAC1B,WAAW,CAAC,QAAQ,CAAC,GAAG;AAAA,MACpB,MAAM;AAAA,MACN,KAAK,QAAQ;AAAA;AAAA,IAEjB,MAAM,CAAC,MAAM;AAAA,MACT,OAAO,KAAK,MAAM,OAAO,CAAC,MAAM,MAAM,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE;AAAA;AAAA,IAEnE,aAAa,GAAG;AAAA,MACZ,QAAQ,UAAU;AAAA,MAClB,IAAI,IAAI,MAAM;AAAA,MACd,OAAO,KAAK;AAAA,QACR,MAAM,IAAI,MAAM,GAAG,cAAc;AAAA,QACjC,IAAI,MAAM,QAAQ,CAAC;AAAA,UACf,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC;AAAA,QACtB,SAAI;AAAA,UACL,MAAM,KAAK;AAAA,QAEX;AAAA,gBAAM,OAAO,GAAG,CAAC;AAAA,MACzB;AAAA,MACA,OAAO,MAAM,SAAS,IAAI,OAAO;AAAA;AAAA,IAErC,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,QAAQ,UAAU;AAAA,MAClB,IAAI,IAAI,MAAM;AAAA,MACd,OAAO,KAAK;AAAA,QAER,MAAM,IAAI,MAAM;AAAA,QAChB,IAAI,EAAE,cAAc,OAAO,SAAS;AAAA,UAChC;AAAA,QACJ,cAAc,OAAO,EAAE,KAAK;AAAA,QAC5B,MAAM,OAAO,GAAG,CAAC;AAAA,MACrB;AAAA,MACA,OAAO,MAAM,SAAS,IAAI,OAAO;AAAA;AAAA,QAEjC,KAAK,GAAG;AAAA,MACR,OAAO,KAAK,MAAM,OAAO,CAAC,OAAO,MAAM,SAAS,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA;AAAA,EAE3E;AAAA;AAAA,EACA,MAAM,kBAAkB,WAAW;AAAA,IAC/B,MAAM,CAAC,MAAM;AAAA,MACT,OAAO,MAAM,KAAK,KAAK,MAAM,OAAO,IAAI,IAAI,MAAM,KAAK;AAAA;AAAA,EAE/D;AAAA;AAAA,EACA,MAAM,aAAa,WAAW;AAAA,EAC9B;AAAA;AAAA,EACA,MAAM,aAAa,UAAU;AAAA,EAC7B;AAAA,EACA,KAAK,OAAO;AAAA;AAAA,EACZ,MAAM,WAAW,UAAU;AAAA,IACvB,WAAW,CAAC,WAAW,OAAO;AAAA,MAC1B,MAAM,KAAK;AAAA,MACX,KAAK,YAAY;AAAA;AAAA,IAErB,MAAM,CAAC,MAAM;AAAA,MACT,IAAI,OAAO,MAAM,KAAK,eAAe,MAAM,OAAO,IAAI;AAAA,MACtD,IAAI,KAAK;AAAA,QACL,QAAQ,UAAU,KAAK,KAAK,OAAO,IAAI;AAAA,MAC3C,OAAO;AAAA;AAAA,IAEX,aAAa,GAAG;AAAA,MACZ,MAAM,cAAc;AAAA,MACpB,MAAM,OAAO,KAAK;AAAA,MAClB,IAAI,SAAS;AAAA,QACT,OAAO,KAAK;AAAA,MAChB,IAAI,IAAI,KAAK;AAAA,MACb,IAAI,GAAG;AAAA,QACH,MAAM,KAAK,EAAE,cAAc;AAAA,QAC3B,IAAI,KAAK,OAAO,MAAM,QAAQ,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI;AAAA,MACvD;AAAA,MACA,IAAI,GAAG;AAAA,QACH,IAAI,SAAS;AAAA,UACT,OAAO,aAAa,KAAK,IAAI,EAAE;AAAA,QACnC,IAAI,KAAK,MAAM;AAAA,UACX,OAAO;AAAA,QACX,OAAO,IAAI,GAAG,IAAI,IAAI,GAAG,aAAa,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK;AAAA,MAC5D;AAAA,MACA,IAAI,SAAS,SAAS,CAAC,KAAK,MAAM;AAAA,QAC9B;AAAA,MACJ,OAAO;AAAA;AAAA,IAEX,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,IAAI;AAAA,MACJ,KAAK,QAAQ,KAAK,KAAK,UAAU,QAAQ,OAAY,YAAS,YAAI,GAAG,cAAc,OAAO,SAAS;AAAA,MACnG,IAAI,EAAE,MAAM,cAAc,OAAO,SAAS,KAAK,KAAK;AAAA,QAChD;AAAA,MACJ,KAAK,YAAY,aAAa,KAAK,WAAW,OAAO,SAAS;AAAA,MAC9D,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,MAAM,QAAQ,MAAM;AAAA,MACpB,aAAa,OAAO,KAAK,SAAS;AAAA,MAClC,IAAI,KAAK;AAAA,QACL,SAAS,OAAO,KAAK,KAAK,KAAK;AAAA,MACnC,OAAO;AAAA;AAAA,EAEf;AAAA,EACA,GAAG,OAAO;AAAA;AAAA,EACV,MAAM,YAAY,UAAU;AAAA,EAC5B;AAAA,EACA,IAAI,OAAO;AAAA;AAAA,EACX,MAAM,gBAAgB,IAAI;AAAA,IACtB,WAAW,CAAC,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,KAAK,YAAY;AAAA;AAAA,IAErB,MAAM,CAAC,MAAM;AAAA,MACT,OAAO,OAAO,KAAK,eAAe,MAAM,OAAO,IAAI;AAAA;AAAA,IAEvD,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,IAAI,CAAC,MAAM,cAAc,OAAO,SAAS;AAAA,QACrC;AAAA,MACJ,KAAK,YAAY,aAAa,KAAK,WAAW,OAAO,SAAS;AAAA,MAC9D,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,OAAO,SAAS,MAAM,OAAO,KAAK,UAAU,KAAK;AAAA;AAAA,EAEzD;AAAA;AAAA,EACA,MAAM,iBAAiB,IAAI;AAAA,IACvB,WAAW,CAAC,SAAS,MAAM,MAAM,IAAI;AAAA,MACjC,MAAM;AAAA,MACN,KAAK,UAAU;AAAA,MACf,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,KAAK;AAAA;AAAA,IAEd,MAAM,CAAC,MAAM;AAAA,MACT,MAAM,UAAU,KAAK,MAAM,QAAQ,SAAS,MAAM,KAAK;AAAA,MACvD,QAAQ,MAAM,MAAM,OAAO;AAAA,MAC3B,OAAO,OAAO,WAAW,QAAQ,SAAS,QAAQ,OAAO,YAAY,MAAM,OAAO,IAAI;AAAA;AAAA,QAEtF,KAAK,GAAG;AAAA,MACR,MAAM,QAAQ,aAAa,MAAM,OAAO,KAAK,IAAI;AAAA,MACjD,OAAO,aAAa,OAAO,KAAK,EAAE;AAAA;AAAA,EAE1C;AAAA;AAAA,EACA,MAAM,gBAAgB,IAAI;AAAA,IACtB,WAAW,CAAC,MAAM,SAAS,MAAM,UAAU;AAAA,MACvC,MAAM;AAAA,MACN,KAAK,OAAO;AAAA,MACZ,KAAK,UAAU;AAAA,MACf,KAAK,OAAO;AAAA,MACZ,KAAK,WAAW;AAAA;AAAA,IAEpB,MAAM,CAAC,MAAM;AAAA,MACT,OAAO,OAAO,KAAK,WAAW,KAAK,QAAQ,KAAK,QAAQ,KAAK,cAAc,MAAM,OAAO,IAAI;AAAA;AAAA,IAEhG,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,IAAI,CAAC,MAAM,cAAc,OAAO,SAAS;AAAA,QACrC;AAAA,MACJ,KAAK,WAAW,aAAa,KAAK,UAAU,OAAO,SAAS;AAAA,MAC5D,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,OAAO,SAAS,MAAM,OAAO,KAAK,SAAS,KAAK;AAAA;AAAA,EAExD;AAAA;AAAA,EACA,MAAM,aAAa,UAAU;AAAA,IACzB,WAAW,CAAC,MAAM,MAAM,OAAO;AAAA,MAC3B,MAAM;AAAA,MACN,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,MACZ,KAAK,QAAQ;AAAA;AAAA,IAEjB,MAAM,CAAC,MAAM;AAAA,MACT,MAAM,SAAS,KAAK,QAAQ,WAAW;AAAA,MACvC,OAAO,GAAG,kBAAkB,KAAK,QAAQ,KAAK,UAAU,MAAM,OAAO,IAAI;AAAA;AAAA,EAEjF;AAAA,EACA,KAAK,OAAO;AAAA;AAAA,EACZ,MAAM,eAAe,WAAW;AAAA,IAC5B,MAAM,CAAC,MAAM;AAAA,MACT,OAAO,YAAY,MAAM,OAAO,IAAI;AAAA;AAAA,EAE5C;AAAA,EACA,OAAO,OAAO;AAAA;AAAA,EACd,MAAM,YAAY,UAAU;AAAA,IACxB,MAAM,CAAC,MAAM;AAAA,MACT,IAAI,OAAO,QAAQ,MAAM,OAAO,IAAI;AAAA,MACpC,IAAI,KAAK;AAAA,QACL,QAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,MAClC,IAAI,KAAK;AAAA,QACL,QAAQ,KAAK,QAAQ,OAAO,IAAI;AAAA,MACpC,OAAO;AAAA;AAAA,IAEX,aAAa,GAAG;AAAA,MACZ,IAAI,IAAI;AAAA,MACR,MAAM,cAAc;AAAA,OACnB,KAAK,KAAK,WAAW,QAAQ,OAAY,aAAa,GAAG,cAAc;AAAA,OACvE,KAAK,KAAK,aAAa,QAAQ,OAAY,aAAa,GAAG,cAAc;AAAA,MAC1E,OAAO;AAAA;AAAA,IAEX,aAAa,CAAC,OAAO,WAAW;AAAA,MAC5B,IAAI,IAAI;AAAA,MACR,MAAM,cAAc,OAAO,SAAS;AAAA,OACnC,KAAK,KAAK,WAAW,QAAQ,OAAY,aAAa,GAAG,cAAc,OAAO,SAAS;AAAA,OACvF,KAAK,KAAK,aAAa,QAAQ,OAAY,aAAa,GAAG,cAAc,OAAO,SAAS;AAAA,MAC1F,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,MAAM,QAAQ,MAAM;AAAA,MACpB,IAAI,KAAK;AAAA,QACL,SAAS,OAAO,KAAK,MAAM,KAAK;AAAA,MACpC,IAAI,KAAK;AAAA,QACL,SAAS,OAAO,KAAK,QAAQ,KAAK;AAAA,MACtC,OAAO;AAAA;AAAA,EAEf;AAAA;AAAA,EACA,MAAM,cAAc,UAAU;AAAA,IAC1B,WAAW,CAAC,OAAO;AAAA,MACf,MAAM;AAAA,MACN,KAAK,QAAQ;AAAA;AAAA,IAEjB,MAAM,CAAC,MAAM;AAAA,MACT,OAAO,SAAS,KAAK,WAAW,MAAM,OAAO,IAAI;AAAA;AAAA,EAEzD;AAAA,EACA,MAAM,OAAO;AAAA;AAAA,EACb,MAAM,gBAAgB,UAAU;AAAA,IAC5B,MAAM,CAAC,MAAM;AAAA,MACT,OAAO,YAAY,MAAM,OAAO,IAAI;AAAA;AAAA,EAE5C;AAAA,EACA,QAAQ,OAAO;AAAA;AAAA,EACf,MAAM,QAAQ;AAAA,IACV,WAAW,CAAC,UAAU,OAAO,CAAC,GAAG;AAAA,MAC7B,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,eAAe,CAAC;AAAA,MACrB,KAAK,aAAa,CAAC;AAAA,MACnB,KAAK,OAAO,KAAK,MAAM,IAAI,KAAK,QAAQ;AAAA,IAAO,GAAG;AAAA,MAClD,KAAK,YAAY;AAAA,MACjB,KAAK,SAAS,IAAI,QAAQ,MAAM,EAAE,QAAQ,SAAS,CAAC;AAAA,MACpD,KAAK,SAAS,CAAC,IAAI,IAAM;AAAA;AAAA,IAE7B,QAAQ,GAAG;AAAA,MACP,OAAO,KAAK,MAAM,OAAO,KAAK,IAAI;AAAA;AAAA,IAGtC,IAAI,CAAC,QAAQ;AAAA,MACT,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA;AAAA,IAGlC,SAAS,CAAC,QAAQ;AAAA,MACd,OAAO,KAAK,UAAU,KAAK,MAAM;AAAA;AAAA,IAGrC,UAAU,CAAC,cAAc,OAAO;AAAA,MAC5B,MAAM,OAAO,KAAK,UAAU,MAAM,cAAc,KAAK;AAAA,MACrD,MAAM,KAAK,KAAK,QAAQ,KAAK,YAAY,KAAK,QAAQ,KAAK,UAAU,IAAI;AAAA,MACzE,GAAG,IAAI,IAAI;AAAA,MACX,OAAO;AAAA;AAAA,IAEX,aAAa,CAAC,QAAQ,UAAU;AAAA,MAC5B,OAAO,KAAK,UAAU,SAAS,QAAQ,QAAQ;AAAA;AAAA,IAInD,SAAS,CAAC,WAAW;AAAA,MACjB,OAAO,KAAK,UAAU,UAAU,WAAW,KAAK,OAAO;AAAA;AAAA,IAE3D,SAAS,GAAG;AAAA,MACR,OAAO,KAAK,UAAU,UAAU,KAAK,OAAO;AAAA;AAAA,IAEhD,IAAI,CAAC,SAAS,cAAc,KAAK,UAAU;AAAA,MACvC,MAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAAA,MAC5C,IAAI,QAAQ,aAAa;AAAA,QACrB,KAAK,WAAW,KAAK,OAAO;AAAA,MAChC,KAAK,UAAU,IAAI,IAAI,SAAS,MAAM,GAAG,CAAC;AAAA,MAC1C,OAAO;AAAA;AAAA,IAGX,KAAK,CAAC,cAAc,KAAK,WAAW;AAAA,MAChC,OAAO,KAAK,KAAK,QAAQ,SAAS,OAAO,cAAc,KAAK,SAAS;AAAA;AAAA,IAGzE,GAAG,CAAC,cAAc,KAAK,WAAW;AAAA,MAC9B,OAAO,KAAK,KAAK,QAAQ,SAAS,KAAK,cAAc,KAAK,SAAS;AAAA;AAAA,IAGvE,GAAG,CAAC,cAAc,KAAK,WAAW;AAAA,MAC9B,OAAO,KAAK,KAAK,QAAQ,SAAS,KAAK,cAAc,KAAK,SAAS;AAAA;AAAA,IAGvE,MAAM,CAAC,KAAK,KAAK,aAAa;AAAA,MAC1B,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AAAA;AAAA,IAG3D,GAAG,CAAC,KAAK,KAAK;AAAA,MACV,OAAO,KAAK,UAAU,IAAI,SAAS,KAAa,kBAAU,KAAK,GAAG,CAAC;AAAA;AAAA,IAGvE,IAAI,CAAC,GAAG;AAAA,MACJ,IAAI,OAAO,KAAK;AAAA,QACZ,EAAE;AAAA,MACD,SAAI,MAAM,OAAO;AAAA,QAClB,KAAK,UAAU,IAAI,QAAQ,CAAC,CAAC;AAAA,MACjC,OAAO;AAAA;AAAA,IAGX,MAAM,IAAI,WAAW;AAAA,MACjB,MAAM,OAAO,CAAC,GAAG;AAAA,MACjB,YAAY,KAAK,UAAU,WAAW;AAAA,QAClC,IAAI,KAAK,SAAS;AAAA,UACd,KAAK,KAAK,GAAG;AAAA,QACjB,KAAK,KAAK,GAAG;AAAA,QACb,IAAI,QAAQ,SAAS,KAAK,KAAK,KAAK;AAAA,UAChC,KAAK,KAAK,GAAG;AAAA,WACZ,GAAG,OAAO,YAAY,MAAM,KAAK;AAAA,QACtC;AAAA,MACJ;AAAA,MACA,KAAK,KAAK,GAAG;AAAA,MACb,OAAO,IAAI,OAAO,MAAM,IAAI;AAAA;AAAA,IAGhC,EAAE,CAAC,WAAW,UAAU,UAAU;AAAA,MAC9B,KAAK,WAAW,IAAI,GAAG,SAAS,CAAC;AAAA,MACjC,IAAI,YAAY,UAAU;AAAA,QACtB,KAAK,KAAK,QAAQ,EAAE,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM;AAAA,MACpD,EACK,SAAI,UAAU;AAAA,QACf,KAAK,KAAK,QAAQ,EAAE,MAAM;AAAA,MAC9B,EACK,SAAI,UAAU;AAAA,QACf,MAAM,IAAI,MAAM,0CAA0C;AAAA,MAC9D;AAAA,MACA,OAAO;AAAA;AAAA,IAGX,MAAM,CAAC,WAAW;AAAA,MACd,OAAO,KAAK,UAAU,IAAI,GAAG,SAAS,CAAC;AAAA;AAAA,IAG3C,IAAI,GAAG;AAAA,MACH,OAAO,KAAK,UAAU,IAAI,IAAM;AAAA;AAAA,IAGpC,KAAK,GAAG;AAAA,MACJ,OAAO,KAAK,cAAc,IAAI,IAAI;AAAA;AAAA,IAEtC,IAAI,CAAC,MAAM,SAAS;AAAA,MAChB,KAAK,WAAW,IAAI;AAAA,MACpB,IAAI;AAAA,QACA,KAAK,KAAK,OAAO,EAAE,OAAO;AAAA,MAC9B,OAAO;AAAA;AAAA,IAGX,GAAG,CAAC,WAAW,SAAS;AAAA,MACpB,OAAO,KAAK,KAAK,IAAI,QAAQ,SAAS,GAAG,OAAO;AAAA;AAAA,IAGpD,QAAQ,CAAC,cAAc,MAAM,IAAI,SAAS,UAAU,KAAK,KAAK,MAAM,QAAQ,SAAS,MAAM,QAAQ,SAAS,KAAK;AAAA,MAC7G,MAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAAA,MAC5C,OAAO,KAAK,KAAK,IAAI,SAAS,SAAS,MAAM,MAAM,EAAE,GAAG,MAAM,QAAQ,IAAI,CAAC;AAAA;AAAA,IAG/E,KAAK,CAAC,cAAc,UAAU,SAAS,UAAU,QAAQ,SAAS,OAAO;AAAA,MACrE,MAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAAA,MAC5C,IAAI,KAAK,KAAK,KAAK;AAAA,QACf,MAAM,MAAM,oBAAoB,OAAO,OAAO,WAAW,KAAK,IAAI,QAAQ,QAAQ;AAAA,QAClF,OAAO,KAAK,SAAS,MAAM,GAAI,IAAG,OAAO,KAAM,cAAc,CAAC,MAAM;AAAA,UAChE,KAAK,IAAI,MAAO,IAAG,OAAO,KAAM,OAAO,IAAI;AAAA,UAC3C,QAAQ,IAAI;AAAA,SACf;AAAA,MACL;AAAA,MACA,OAAO,KAAK,KAAK,IAAI,QAAQ,MAAM,SAAS,MAAM,QAAQ,GAAG,MAAM,QAAQ,IAAI,CAAC;AAAA;AAAA,IAIpF,KAAK,CAAC,cAAc,KAAK,SAAS,UAAU,KAAK,KAAK,MAAM,QAAQ,SAAS,MAAM,QAAQ,SAAS,OAAO;AAAA,MACvG,IAAI,KAAK,KAAK,eAAe;AAAA,QACzB,OAAO,KAAK,MAAM,cAAe,IAAG,OAAO,iBAAkB,QAAQ,OAAO;AAAA,MAChF;AAAA,MACA,MAAM,OAAO,KAAK,OAAO,OAAO,YAAY;AAAA,MAC5C,OAAO,KAAK,KAAK,IAAI,QAAQ,MAAM,SAAS,MAAM,GAAG,GAAG,MAAM,QAAQ,IAAI,CAAC;AAAA;AAAA,IAG/E,MAAM,GAAG;AAAA,MACL,OAAO,KAAK,cAAc,GAAG;AAAA;AAAA,IAGjC,KAAK,CAAC,OAAO;AAAA,MACT,OAAO,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC;AAAA;AAAA,IAG1C,KAAK,CAAC,OAAO;AAAA,MACT,OAAO,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC;AAAA;AAAA,IAG1C,MAAM,CAAC,OAAO;AAAA,MACV,MAAM,OAAO,IAAI;AAAA,MACjB,KAAK,WAAW,IAAI;AAAA,MACpB,KAAK,KAAK,KAAK;AAAA,MACf,IAAI,KAAK,MAAM,WAAW;AAAA,QACtB,MAAM,IAAI,MAAM,wCAAwC;AAAA,MAC5D,OAAO,KAAK,cAAc,MAAM;AAAA;AAAA,IAGpC,GAAG,CAAC,SAAS,WAAW,aAAa;AAAA,MACjC,IAAI,CAAC,aAAa,CAAC;AAAA,QACf,MAAM,IAAI,MAAM,8CAA8C;AAAA,MAClE,MAAM,OAAO,IAAI;AAAA,MACjB,KAAK,WAAW,IAAI;AAAA,MACpB,KAAK,KAAK,OAAO;AAAA,MACjB,IAAI,WAAW;AAAA,QACX,MAAM,QAAQ,KAAK,KAAK,GAAG;AAAA,QAC3B,KAAK,YAAY,KAAK,QAAQ,IAAI,MAAM,KAAK;AAAA,QAC7C,UAAU,KAAK;AAAA,MACnB;AAAA,MACA,IAAI,aAAa;AAAA,QACb,KAAK,YAAY,KAAK,UAAU,IAAI;AAAA,QACpC,KAAK,KAAK,WAAW;AAAA,MACzB;AAAA,MACA,OAAO,KAAK,cAAc,OAAO,OAAO;AAAA;AAAA,IAG5C,KAAK,CAAC,OAAO;AAAA,MACT,OAAO,KAAK,UAAU,IAAI,MAAM,KAAK,CAAC;AAAA;AAAA,IAG1C,KAAK,CAAC,MAAM,WAAW;AAAA,MACnB,KAAK,aAAa,KAAK,KAAK,OAAO,MAAM;AAAA,MACzC,IAAI;AAAA,QACA,KAAK,KAAK,IAAI,EAAE,SAAS,SAAS;AAAA,MACtC,OAAO;AAAA;AAAA,IAGX,QAAQ,CAAC,WAAW;AAAA,MAChB,MAAM,MAAM,KAAK,aAAa,IAAI;AAAA,MAClC,IAAI,QAAQ;AAAA,QACR,MAAM,IAAI,MAAM,sCAAsC;AAAA,MAC1D,MAAM,UAAU,KAAK,OAAO,SAAS;AAAA,MACrC,IAAI,UAAU,KAAM,cAAc,aAAa,YAAY,WAAY;AAAA,QACnE,MAAM,IAAI,MAAM,mCAAmC,cAAc,oBAAoB;AAAA,MACzF;AAAA,MACA,KAAK,OAAO,SAAS;AAAA,MACrB,OAAO;AAAA;AAAA,IAGX,IAAI,CAAC,MAAM,OAAO,OAAO,KAAK,OAAO,UAAU;AAAA,MAC3C,KAAK,WAAW,IAAI,KAAK,MAAM,MAAM,KAAK,CAAC;AAAA,MAC3C,IAAI;AAAA,QACA,KAAK,KAAK,QAAQ,EAAE,QAAQ;AAAA,MAChC,OAAO;AAAA;AAAA,IAGX,OAAO,GAAG;AAAA,MACN,OAAO,KAAK,cAAc,IAAI;AAAA;AAAA,IAElC,QAAQ,CAAC,IAAI,GAAG;AAAA,MACZ,OAAO,MAAM,GAAG;AAAA,QACZ,KAAK,MAAM,cAAc;AAAA,QACzB,KAAK,MAAM,cAAc,KAAK,MAAM,OAAO,KAAK,UAAU;AAAA,MAC9D;AAAA;AAAA,IAEJ,SAAS,CAAC,MAAM;AAAA,MACZ,KAAK,UAAU,MAAM,KAAK,IAAI;AAAA,MAC9B,OAAO;AAAA;AAAA,IAEX,UAAU,CAAC,MAAM;AAAA,MACb,KAAK,UAAU,MAAM,KAAK,IAAI;AAAA,MAC9B,KAAK,OAAO,KAAK,IAAI;AAAA;AAAA,IAEzB,aAAa,CAAC,IAAI,IAAI;AAAA,MAClB,MAAM,IAAI,KAAK;AAAA,MACf,IAAI,aAAa,MAAO,MAAM,aAAa,IAAK;AAAA,QAC5C,KAAK,OAAO,IAAI;AAAA,QAChB,OAAO;AAAA,MACX;AAAA,MACA,MAAM,IAAI,MAAM,0BAA0B,KAAK,GAAG,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO;AAAA;AAAA,IAEvF,SAAS,CAAC,MAAM;AAAA,MACZ,MAAM,IAAI,KAAK;AAAA,MACf,IAAI,EAAE,aAAa,KAAK;AAAA,QACpB,MAAM,IAAI,MAAM,8BAA8B;AAAA,MAClD;AAAA,MACA,KAAK,YAAY,EAAE,OAAO;AAAA,MAC1B,OAAO;AAAA;AAAA,QAEP,KAAK,GAAG;AAAA,MACR,OAAO,KAAK,OAAO;AAAA;AAAA,QAEnB,SAAS,GAAG;AAAA,MACZ,MAAM,KAAK,KAAK;AAAA,MAChB,OAAO,GAAG,GAAG,SAAS;AAAA;AAAA,QAEtB,SAAS,CAAC,MAAM;AAAA,MAChB,MAAM,KAAK,KAAK;AAAA,MAChB,GAAG,GAAG,SAAS,KAAK;AAAA;AAAA,EAE5B;AAAA,EACQ,kBAAU;AAAA,EAClB,SAAS,QAAQ,CAAC,OAAO,MAAM;AAAA,IAC3B,WAAW,KAAK;AAAA,MACZ,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM;AAAA,IAC7C,OAAO;AAAA;AAAA,EAEX,SAAS,YAAY,CAAC,OAAO,MAAM;AAAA,IAC/B,OAAO,gBAAgB,OAAO,cAAc,SAAS,OAAO,KAAK,KAAK,IAAI;AAAA;AAAA,EAE9E,SAAS,YAAY,CAAC,MAAM,OAAO,WAAW;AAAA,IAC1C,IAAI,gBAAgB,OAAO;AAAA,MACvB,OAAO,YAAY,IAAI;AAAA,IAC3B,IAAI,CAAC,YAAY,IAAI;AAAA,MACjB,OAAO;AAAA,IACX,OAAO,IAAI,OAAO,MAAM,KAAK,OAAO,OAAO,CAAC,OAAO,MAAM;AAAA,MACrD,IAAI,aAAa,OAAO;AAAA,QACpB,IAAI,YAAY,CAAC;AAAA,MACrB,IAAI,aAAa,OAAO;AAAA,QACpB,MAAM,KAAK,GAAG,EAAE,MAAM;AAAA,MAEtB;AAAA,cAAM,KAAK,CAAC;AAAA,MAChB,OAAO;AAAA,OACR,CAAC,CAAC,CAAC;AAAA,IACN,SAAS,WAAW,CAAC,GAAG;AAAA,MACpB,MAAM,IAAI,UAAU,EAAE;AAAA,MACtB,IAAI,MAAM,aAAa,MAAM,EAAE,SAAS;AAAA,QACpC,OAAO;AAAA,MACX,OAAO,MAAM,EAAE;AAAA,MACf,OAAO;AAAA;AAAA,IAEX,SAAS,WAAW,CAAC,GAAG;AAAA,MACpB,OAAQ,aAAa,OAAO,SACxB,EAAE,OAAO,KAAK,CAAC,MAAM,aAAa,OAAO,QAAQ,MAAM,EAAE,SAAS,KAAK,UAAU,EAAE,SAAS,SAAS;AAAA;AAAA;AAAA,EAGjH,SAAS,aAAa,CAAC,OAAO,MAAM;AAAA,IAChC,WAAW,KAAK;AAAA,MACZ,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,MAAM;AAAA;AAAA,EAEjD,SAAS,GAAG,CAAC,GAAG;AAAA,IACZ,OAAO,OAAO,KAAK,aAAa,OAAO,KAAK,YAAY,MAAM,OAAO,CAAC,IAAK,IAAG,OAAO,MAAO,IAAI,CAAC;AAAA;AAAA,EAE7F,cAAM;AAAA,EACd,IAAM,UAAU,QAAgB,kBAAU,GAAG;AAAA,EAE7C,SAAS,GAAG,IAAI,MAAM;AAAA,IAClB,OAAO,KAAK,OAAO,OAAO;AAAA;AAAA,EAEtB,cAAM;AAAA,EACd,IAAM,SAAS,QAAgB,kBAAU,EAAE;AAAA,EAE3C,SAAS,EAAE,IAAI,MAAM;AAAA,IACjB,OAAO,KAAK,OAAO,MAAM;AAAA;AAAA,EAErB,aAAK;AAAA,EACb,SAAS,OAAO,CAAC,IAAI;AAAA,IACjB,OAAO,CAAC,GAAG,MAAO,MAAM,OAAO,MAAM,IAAI,MAAM,OAAO,MAAM,IAAK,IAAG,OAAO,KAAM,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC;AAAA;AAAA,EAE1G,SAAS,GAAG,CAAC,GAAG;AAAA,IACZ,OAAO,aAAa,OAAO,OAAO,IAAK,IAAG,OAAO,MAAO;AAAA;AAAA;;;;ECrrB5D,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,0BAA0B,uBAAuB,eAAe,kBAAkB,uBAAuB,+BAA+B,yBAAyB,mBAAmB,8BAA8B,4BAA4B,yBAAyB,2BAA2B,yBAAyB,+BAA+B,yBAAyB,4BAA4B,4BAA4B,iBAAc;AAAA,EACjc,IAAM;AAAA,EACN,IAAM;AAAA,EAEN,SAAS,MAAM,CAAC,KAAK;AAAA,IACjB,MAAM,OAAO,CAAC;AAAA,IACd,WAAW,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA,IACjB,OAAO;AAAA;AAAA,EAEH,iBAAS;AAAA,EACjB,SAAS,iBAAiB,CAAC,IAAI,QAAQ;AAAA,IACnC,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACX,IAAI,OAAO,KAAK,MAAM,EAAE,WAAW;AAAA,MAC/B,OAAO;AAAA,IACX,kBAAkB,IAAI,MAAM;AAAA,IAC5B,OAAO,CAAC,eAAe,QAAQ,GAAG,KAAK,MAAM,GAAG;AAAA;AAAA,EAE5C,4BAAoB;AAAA,EAC5B,SAAS,iBAAiB,CAAC,IAAI,SAAS,GAAG,QAAQ;AAAA,IAC/C,QAAQ,MAAM,SAAS;AAAA,IACvB,IAAI,CAAC,KAAK;AAAA,MACN;AAAA,IACJ,IAAI,OAAO,WAAW;AAAA,MAClB;AAAA,IACJ,MAAM,QAAQ,KAAK,MAAM;AAAA,IACzB,WAAW,OAAO,QAAQ;AAAA,MACtB,IAAI,CAAC,MAAM;AAAA,QACP,gBAAgB,IAAI,qBAAqB,MAAM;AAAA,IACvD;AAAA;AAAA,EAEI,4BAAoB;AAAA,EAC5B,SAAS,cAAc,CAAC,QAAQ,OAAO;AAAA,IACnC,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO,CAAC;AAAA,IACZ,WAAW,OAAO;AAAA,MACd,IAAI,MAAM;AAAA,QACN,OAAO;AAAA,IACf,OAAO;AAAA;AAAA,EAEH,yBAAiB;AAAA,EACzB,SAAS,oBAAoB,CAAC,QAAQ,OAAO;AAAA,IACzC,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO,CAAC;AAAA,IACZ,WAAW,OAAO;AAAA,MACd,IAAI,QAAQ,UAAU,MAAM,IAAI;AAAA,QAC5B,OAAO;AAAA,IACf,OAAO;AAAA;AAAA,EAEH,+BAAuB;AAAA,EAC/B,SAAS,cAAc,GAAG,cAAc,cAAc,QAAQ,SAAS,OAAO;AAAA,IAC1E,IAAI,CAAC,OAAO;AAAA,MACR,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,QAC9C,OAAO;AAAA,MACX,IAAI,OAAO,UAAU;AAAA,QACjB,OAAQ,IAAG,UAAU,KAAM;AAAA,IACnC;AAAA,IACA,OAAQ,IAAG,UAAU,KAAM,eAAe,cAAc,GAAG,UAAU,aAAa,OAAO;AAAA;AAAA,EAErF,yBAAiB;AAAA,EACzB,SAAS,gBAAgB,CAAC,KAAK;AAAA,IAC3B,OAAO,oBAAoB,mBAAmB,GAAG,CAAC;AAAA;AAAA,EAE9C,2BAAmB;AAAA,EAC3B,SAAS,cAAc,CAAC,KAAK;AAAA,IACzB,OAAO,mBAAmB,kBAAkB,GAAG,CAAC;AAAA;AAAA,EAE5C,yBAAiB;AAAA,EACzB,SAAS,iBAAiB,CAAC,KAAK;AAAA,IAC5B,IAAI,OAAO,OAAO;AAAA,MACd,OAAO,GAAG;AAAA,IACd,OAAO,IAAI,QAAQ,MAAM,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA;AAAA,EAE9C,4BAAoB;AAAA,EAC5B,SAAS,mBAAmB,CAAC,KAAK;AAAA,IAC9B,OAAO,IAAI,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG;AAAA;AAAA,EAE7C,8BAAsB;AAAA,EAC9B,SAAS,QAAQ,CAAC,IAAI,GAAG;AAAA,IACrB,IAAI,MAAM,QAAQ,EAAE,GAAG;AAAA,MACnB,WAAW,KAAK;AAAA,QACZ,EAAE,CAAC;AAAA,IACX,EACK;AAAA,MACD,EAAE,EAAE;AAAA;AAAA;AAAA,EAGJ,mBAAW;AAAA,EACnB,SAAS,kBAAkB,GAAG,YAAY,aAAa,aAAa,gBAAiB;AAAA,IACjF,OAAO,CAAC,KAAK,MAAM,IAAI,WAAW;AAAA,MAC9B,MAAM,MAAM,OAAO,YACb,OACA,cAAc,UAAU,QACnB,gBAAgB,UAAU,OAAO,WAAW,KAAK,MAAM,EAAE,IAAI,YAAY,KAAK,MAAM,EAAE,GAAG,MAC1F,gBAAgB,UAAU,QACrB,YAAY,KAAK,IAAI,IAAI,GAAG,QAC7B,YAAY,MAAM,EAAE;AAAA,MAClC,OAAO,WAAW,UAAU,QAAQ,EAAE,eAAe,UAAU,QAAQ,aAAa,KAAK,GAAG,IAAI;AAAA;AAAA;AAAA,EAGhG,yBAAiB;AAAA,IACrB,OAAO,mBAAmB;AAAA,MACtB,YAAY,CAAC,KAAK,MAAM,OAAO,IAAI,GAAI,IAAG,UAAU,KAAM,kBAAkB,sBAAsB,MAAM;AAAA,QACpG,IAAI,GAAI,IAAG,UAAU,KAAM,iBAAiB,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,MAAM,IAAI,OAAO,IAAK,IAAG,UAAU,KAAM,UAAU,EAAE,KAAM,IAAG,UAAU,mBAAoB,OAAO,OAAO,CAAC;AAAA,OACtL;AAAA,MACD,aAAa,CAAC,KAAK,MAAM,OAAO,IAAI,GAAI,IAAG,UAAU,KAAM,eAAe,MAAM;AAAA,QAC5E,IAAI,SAAS,MAAM;AAAA,UACf,IAAI,OAAO,IAAI,IAAI;AAAA,QACvB,EACK;AAAA,UACD,IAAI,OAAO,IAAK,IAAG,UAAU,KAAM,UAAU;AAAA,UAC7C,aAAa,KAAK,IAAI,IAAI;AAAA;AAAA,OAEjC;AAAA,MACD,aAAa,CAAC,MAAM,OAAQ,SAAS,OAAO,OAAO,KAAK,SAAS,GAAG;AAAA,MACpE,cAAc;AAAA,IAClB,CAAC;AAAA,IACD,OAAO,mBAAmB;AAAA,MACtB,YAAY,CAAC,KAAK,MAAM,OAAO,IAAI,GAAI,IAAG,UAAU,KAAM,kBAAkB,sBAAsB,MAAM,IAAI,OAAO,IAAK,IAAG,UAAU,KAAM,0BAA0B,QAAQ,UAAU,QAAQ,MAAM,CAAC;AAAA,MACtM,aAAa,CAAC,KAAK,MAAM,OAAO,IAAI,GAAI,IAAG,UAAU,KAAM,eAAe,MAAM,IAAI,OAAO,IAAI,SAAS,OAAO,OAAQ,IAAG,UAAU,KAAM,QAAQ,UAAU,QAAQ,MAAM,CAAC;AAAA,MAC3K,aAAa,CAAC,MAAM,OAAQ,SAAS,OAAO,OAAO,KAAK,IAAI,MAAM,EAAE;AAAA,MACpE,cAAc,CAAC,KAAK,UAAU,IAAI,IAAI,SAAS,KAAK;AAAA,IACxD,CAAC;AAAA,EACL;AAAA,EACA,SAAS,oBAAoB,CAAC,KAAK,IAAI;AAAA,IACnC,IAAI,OAAO;AAAA,MACP,OAAO,IAAI,IAAI,SAAS,IAAI;AAAA,IAChC,MAAM,QAAQ,IAAI,IAAI,SAAU,IAAG,UAAU,MAAO;AAAA,IACpD,IAAI,OAAO;AAAA,MACP,aAAa,KAAK,OAAO,EAAE;AAAA,IAC/B,OAAO;AAAA;AAAA,EAEH,+BAAuB;AAAA,EAC/B,SAAS,YAAY,CAAC,KAAK,OAAO,IAAI;AAAA,IAClC,OAAO,KAAK,EAAE,EAAE,QAAQ,CAAC,MAAM,IAAI,OAAQ,IAAG,UAAU,KAAM,SAAS,GAAG,UAAU,aAAa,CAAC,KAAK,IAAI,CAAC;AAAA;AAAA,EAExG,uBAAe;AAAA,EACvB,IAAM,WAAW,CAAC;AAAA,EAClB,SAAS,OAAO,CAAC,KAAK,GAAG;AAAA,IACrB,OAAO,IAAI,WAAW,QAAQ;AAAA,MAC1B,KAAK;AAAA,MACL,MAAM,SAAS,EAAE,UAAU,SAAS,EAAE,QAAQ,IAAI,OAAO,MAAM,EAAE,IAAI;AAAA,IACzE,CAAC;AAAA;AAAA,EAEG,kBAAU;AAAA,EAClB,IAAI;AAAA,GACH,QAAS,CAAC,OAAM;AAAA,IACb,MAAK,MAAK,SAAS,KAAK;AAAA,IACxB,MAAK,MAAK,SAAS,KAAK;AAAA,KACzB,SAAiB,eAAO,OAAO,CAAC,EAAE;AAAA,EACrC,SAAS,YAAY,CAAC,UAAU,cAAc,kBAAkB;AAAA,IAE5D,IAAI,oBAAoB,UAAU,MAAM;AAAA,MACpC,MAAM,WAAW,iBAAiB,KAAK;AAAA,MACvC,OAAO,mBACD,WACK,IAAG,UAAU,WAAY,mBACzB,IAAG,UAAU,YAAa,oBAC/B,WACK,IAAG,UAAU,WAAY,aACzB,IAAG,UAAU,WAAY;AAAA,IACxC;AAAA,IACA,OAAO,oBAAoB,GAAG,UAAU,aAAa,QAAQ,EAAE,SAAS,IAAI,MAAM,kBAAkB,QAAQ;AAAA;AAAA,EAExG,uBAAe;AAAA,EACvB,SAAS,eAAe,CAAC,IAAI,KAAK,OAAO,GAAG,KAAK,cAAc;AAAA,IAC3D,IAAI,CAAC;AAAA,MACD;AAAA,IACJ,MAAM,gBAAgB;AAAA,IACtB,IAAI,SAAS;AAAA,MACT,MAAM,IAAI,MAAM,GAAG;AAAA,IACvB,GAAG,KAAK,OAAO,KAAK,GAAG;AAAA;AAAA,EAEnB,0BAAkB;AAAA;;;;EC/K1B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IAEV,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,IAE/B,QAAQ,IAAI,UAAU,KAAK,QAAQ;AAAA,IACnC,cAAc,IAAI,UAAU,KAAK,cAAc;AAAA,IAC/C,YAAY,IAAI,UAAU,KAAK,YAAY;AAAA,IAC3C,oBAAoB,IAAI,UAAU,KAAK,oBAAoB;AAAA,IAC3D,UAAU,IAAI,UAAU,KAAK,UAAU;AAAA,IACvC,gBAAgB,IAAI,UAAU,KAAK,gBAAgB;AAAA,IAEnD,SAAS,IAAI,UAAU,KAAK,SAAS;AAAA,IACrC,QAAQ,IAAI,UAAU,KAAK,QAAQ;AAAA,IACnC,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,IAE/B,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,IAC/B,OAAO,IAAI,UAAU,KAAK,OAAO;AAAA,IAEjC,MAAM,IAAI,UAAU,KAAK,MAAM;AAAA,IAC/B,SAAS,IAAI,UAAU,KAAK,SAAS;AAAA,IACrC,SAAS,IAAI,UAAU,KAAK,SAAS;AAAA,IACrC,UAAU,IAAI,UAAU,KAAK,UAAU;AAAA,EAC3C;AAAA,EACQ,kBAAU;AAAA;;;;ECzBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,uBAAuB,2BAA2B,2BAA2B,sBAAsB,4BAA4B,uBAAoB;AAAA,EAC3J,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACE,uBAAe;AAAA,IACnB,SAAS,GAAG,cAAe,IAAG,UAAU,kBAAmB;AAAA,EAC/D;AAAA,EACQ,4BAAoB;AAAA,IACxB,SAAS,GAAG,SAAS,iBAAiB,aAC/B,IAAG,UAAU,QAAS,4BAA4B,uBAClD,IAAG,UAAU,QAAS;AAAA,EACjC;AAAA,EACA,SAAS,WAAW,CAAC,KAAK,QAAgB,sBAAc,YAAY,mBAAmB;AAAA,IACnF,QAAQ,OAAO;AAAA,IACf,QAAQ,KAAK,eAAe,cAAc;AAAA,IAC1C,MAAM,SAAS,gBAAgB,KAAK,OAAO,UAAU;AAAA,IACrD,IAAI,sBAAsB,QAAQ,sBAA2B,YAAI,oBAAqB,iBAAiB,WAAY;AAAA,MAC/G,SAAS,KAAK,MAAM;AAAA,IACxB,EACK;AAAA,MACD,aAAa,IAAK,IAAG,UAAU,MAAO,SAAS;AAAA;AAAA;AAAA,EAG/C,sBAAc;AAAA,EACtB,SAAS,gBAAgB,CAAC,KAAK,QAAgB,sBAAc,YAAY;AAAA,IACrE,QAAQ,OAAO;AAAA,IACf,QAAQ,KAAK,eAAe,cAAc;AAAA,IAC1C,MAAM,SAAS,gBAAgB,KAAK,OAAO,UAAU;AAAA,IACrD,SAAS,KAAK,MAAM;AAAA,IACpB,IAAI,EAAE,iBAAiB,YAAY;AAAA,MAC/B,aAAa,IAAI,QAAQ,QAAQ,OAAO;AAAA,IAC5C;AAAA;AAAA,EAEI,2BAAmB;AAAA,EAC3B,SAAS,gBAAgB,CAAC,KAAK,WAAW;AAAA,IACtC,IAAI,OAAO,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IAC5C,IAAI,GAAI,IAAG,UAAU,KAAM,QAAQ,QAAQ,oBAAoB,MAAM,IAAI,GAAG,WAAW,MAAM,IAAI,OAAQ,IAAG,UAAU,KAAM,QAAQ,QAAQ,kBAAkB,SAAS,GAAG,MAAM,IAAI,OAAO,QAAQ,QAAQ,SAAS,IAAI,CAAC,CAAC;AAAA;AAAA,EAEtN,2BAAmB;AAAA,EAC3B,SAAS,YAAY,GAAG,KAAK,SAAS,aAAa,MAAM,WAAW,MAAO;AAAA,IAEvE,IAAI,cAAc;AAAA,MACd,MAAM,IAAI,MAAM,0BAA0B;AAAA,IAC9C,MAAM,MAAM,IAAI,KAAK,KAAK;AAAA,IAC1B,IAAI,SAAS,KAAK,WAAW,QAAQ,QAAQ,QAAQ,CAAC,MAAM;AAAA,MACxD,IAAI,MAAM,KAAM,IAAG,UAAU,KAAM,QAAQ,QAAQ,WAAW,IAAI;AAAA,MAClE,IAAI,GAAI,IAAG,UAAU,KAAM,kCAAkC,MAAM,IAAI,OAAQ,IAAG,UAAU,KAAM,qBAAqB,GAAG,UAAU,WAAW,QAAQ,QAAQ,cAAc,GAAG,SAAS,CAAC,CAAC;AAAA,MAC3L,IAAI,OAAQ,IAAG,UAAU,KAAM,kBAAmB,IAAG,UAAU,OAAQ,GAAG,iBAAiB,SAAS;AAAA,MACpG,IAAI,GAAG,KAAK,SAAS;AAAA,QACjB,IAAI,OAAQ,IAAG,UAAU,KAAM,cAAc,WAAW;AAAA,QACxD,IAAI,OAAQ,IAAG,UAAU,KAAM,YAAY,IAAI;AAAA,MACnD;AAAA,KACH;AAAA;AAAA,EAEG,uBAAe;AAAA,EACvB,SAAS,QAAQ,CAAC,KAAK,QAAQ;AAAA,IAC3B,MAAM,MAAM,IAAI,MAAM,OAAO,MAAM;AAAA,IACnC,IAAI,GAAI,IAAG,UAAU,KAAM,QAAQ,QAAQ,oBAAoB,MAAM,IAAI,OAAO,QAAQ,QAAQ,SAAU,IAAG,UAAU,MAAO,MAAM,GAAI,IAAG,UAAU,KAAM,QAAQ,QAAQ,gBAAgB,MAAM;AAAA,IACjM,IAAI,KAAM,IAAG,UAAU,KAAM,QAAQ,QAAQ,UAAU;AAAA;AAAA,EAE3D,SAAS,YAAY,CAAC,IAAI,MAAM;AAAA,IAC5B,QAAQ,KAAK,cAAc,cAAc;AAAA,IACzC,IAAI,UAAU,QAAQ;AAAA,MAClB,IAAI,MAAO,IAAG,UAAU,SAAU,GAAG,mBAAmB,OAAO;AAAA,IACnE,EACK;AAAA,MACD,IAAI,OAAQ,IAAG,UAAU,KAAM,uBAAuB,IAAI;AAAA,MAC1D,IAAI,OAAO,KAAK;AAAA;AAAA;AAAA,EAGxB,IAAM,IAAI;AAAA,IACN,SAAS,IAAI,UAAU,KAAK,SAAS;AAAA,IACrC,YAAY,IAAI,UAAU,KAAK,YAAY;AAAA,IAC3C,QAAQ,IAAI,UAAU,KAAK,QAAQ;AAAA,IACnC,cAAc,IAAI,UAAU,KAAK,cAAc;AAAA,IAC/C,SAAS,IAAI,UAAU,KAAK,SAAS;AAAA,IACrC,QAAQ,IAAI,UAAU,KAAK,QAAQ;AAAA,IACnC,cAAc,IAAI,UAAU,KAAK,cAAc;AAAA,EACnD;AAAA,EACA,SAAS,eAAe,CAAC,KAAK,OAAO,YAAY;AAAA,IAC7C,QAAQ,iBAAiB,IAAI;AAAA,IAC7B,IAAI,iBAAiB;AAAA,MACjB,OAAQ,IAAG,UAAU;AAAA,IACzB,OAAO,YAAY,KAAK,OAAO,UAAU;AAAA;AAAA,EAE7C,SAAS,WAAW,CAAC,KAAK,OAAO,aAAa,CAAC,GAAG;AAAA,IAC9C,QAAQ,KAAK,OAAO;AAAA,IACpB,MAAM,YAAY;AAAA,MACd,kBAAkB,IAAI,UAAU;AAAA,MAChC,gBAAgB,KAAK,UAAU;AAAA,IACnC;AAAA,IACA,gBAAgB,KAAK,OAAO,SAAS;AAAA,IACrC,OAAO,IAAI,OAAO,GAAG,SAAS;AAAA;AAAA,EAElC,SAAS,iBAAiB,GAAG,eAAe,gBAAgB;AAAA,IACxD,MAAM,WAAW,eACV,IAAG,UAAU,OAAQ,aAAa,GAAG,OAAO,cAAc,cAAc,OAAO,KAAK,GAAG,MACxF;AAAA,IACN,OAAO,CAAC,QAAQ,QAAQ,eAAe,GAAG,UAAU,WAAW,QAAQ,QAAQ,cAAc,QAAQ,CAAC;AAAA;AAAA,EAE1G,SAAS,eAAe,GAAG,SAAS,MAAM,qBAAqB,YAAY,gBAAgB;AAAA,IACvF,IAAI,UAAU,eAAe,gBAAiB,IAAG,UAAU,OAAQ,iBAAiB;AAAA,IACpF,IAAI,YAAY;AAAA,MACZ,UAAW,IAAG,UAAU,OAAQ,WAAW,GAAG,OAAO,cAAc,YAAY,OAAO,KAAK,GAAG;AAAA,IAClG;AAAA,IACA,OAAO,CAAC,EAAE,YAAY,OAAO;AAAA;AAAA,EAEjC,SAAS,eAAe,CAAC,OAAO,QAAQ,WAAW,WAAW;AAAA,IAC1D,QAAQ,SAAS,MAAM,aAAa,OAAO;AAAA,IAC3C,QAAQ,MAAM,cAAc,cAAc,eAAe;AAAA,IACzD,UAAU,KAAK,CAAC,EAAE,SAAS,OAAO,GAAG,CAAC,EAAE,QAAQ,OAAO,UAAU,aAAa,OAAO,GAAG,IAAI,UAAW,IAAG,UAAU,MAAO,CAAC;AAAA,IAC5H,IAAI,KAAK,UAAU;AAAA,MACf,UAAU,KAAK,CAAC,EAAE,SAAS,OAAO,WAAW,aAAa,QAAQ,GAAG,IAAI,OAAO,CAAC;AAAA,IACrF;AAAA,IACA,IAAI,KAAK,SAAS;AAAA,MACd,UAAU,KAAK,CAAC,EAAE,QAAQ,WAAW,GAAG,CAAC,EAAE,cAAe,IAAG,UAAU,KAAM,eAAe,YAAY,GAAG,CAAC,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,IAC3I;AAAA,IACA,IAAI;AAAA,MACA,UAAU,KAAK,CAAC,EAAE,cAAc,YAAY,CAAC;AAAA;AAAA;;;;ECvHrD,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,4BAA4B,+BAA4B;AAAA,EAChE,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,YAAY;AAAA,IACd,SAAS;AAAA,EACb;AAAA,EACA,SAAS,oBAAoB,CAAC,IAAI;AAAA,IAC9B,QAAQ,KAAK,QAAQ,iBAAiB;AAAA,IACtC,IAAI,WAAW,OAAO;AAAA,MAClB,iBAAiB,IAAI,KAAK;AAAA,IAC9B,EACK,SAAI,OAAO,UAAU,YAAY,OAAO,WAAW,MAAM;AAAA,MAC1D,IAAI,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,EACK;AAAA,MACD,IAAI,OAAQ,IAAG,UAAU,KAAM,uBAAuB,IAAI;AAAA,MAC1D,IAAI,OAAO,IAAI;AAAA;AAAA;AAAA,EAGf,+BAAuB;AAAA,EAC/B,SAAS,iBAAiB,CAAC,IAAI,OAAO;AAAA,IAClC,QAAQ,KAAK,WAAW;AAAA,IACxB,IAAI,WAAW,OAAO;AAAA,MAClB,IAAI,IAAI,OAAO,KAAK;AAAA,MACpB,iBAAiB,EAAE;AAAA,IACvB,EACK;AAAA,MACD,IAAI,IAAI,OAAO,IAAI;AAAA;AAAA;AAAA,EAGnB,4BAAoB;AAAA,EAC5B,SAAS,gBAAgB,CAAC,IAAI,mBAAmB;AAAA,IAC7C,QAAQ,KAAK,SAAS;AAAA,IAEtB,MAAM,MAAM;AAAA,MACR;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,QAAQ,CAAC;AAAA,MACT;AAAA,IACJ;AAAA,KACC,GAAG,SAAS,aAAa,KAAK,WAAW,WAAW,iBAAiB;AAAA;AAAA;;;;EC9C1E,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,mBAAmB,qBAAkB;AAAA,EAC7C,IAAM,aAAa,CAAC,UAAU,UAAU,WAAW,WAAW,QAAQ,UAAU,OAAO;AAAA,EACvF,IAAM,YAAY,IAAI,IAAI,UAAU;AAAA,EACpC,SAAS,UAAU,CAAC,GAAG;AAAA,IACnB,OAAO,OAAO,KAAK,YAAY,UAAU,IAAI,CAAC;AAAA;AAAA,EAE1C,qBAAa;AAAA,EACrB,SAAS,QAAQ,GAAG;AAAA,IAChB,MAAM,SAAS;AAAA,MACX,QAAQ,EAAE,MAAM,UAAU,OAAO,CAAC,EAAE;AAAA,MACpC,QAAQ,EAAE,MAAM,UAAU,OAAO,CAAC,EAAE;AAAA,MACpC,OAAO,EAAE,MAAM,SAAS,OAAO,CAAC,EAAE;AAAA,MAClC,QAAQ,EAAE,MAAM,UAAU,OAAO,CAAC,EAAE;AAAA,IACxC;AAAA,IACA,OAAO;AAAA,MACH,OAAO,KAAK,QAAQ,SAAS,MAAM,SAAS,MAAM,MAAM,KAAK;AAAA,MAC7D,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,MAAM;AAAA,MAChF,MAAM,EAAE,OAAO,CAAC,EAAE;AAAA,MAClB,KAAK,CAAC;AAAA,MACN,UAAU,CAAC;AAAA,IACf;AAAA;AAAA,EAEI,mBAAW;AAAA;;;;ECvBnB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAwB,yBAAyB,gCAA6B;AAAA,EACtF,SAAS,qBAAqB,GAAG,QAAQ,QAAQ,MAAM;AAAA,IACnD,MAAM,QAAQ,KAAK,MAAM,MAAM;AAAA,IAC/B,OAAO,SAAS,UAAU,QAAQ,eAAe,QAAQ,KAAK;AAAA;AAAA,EAE1D,gCAAwB;AAAA,EAChC,SAAS,cAAc,CAAC,QAAQ,OAAO;AAAA,IACnC,OAAO,MAAM,MAAM,KAAK,CAAC,SAAS,cAAc,QAAQ,IAAI,CAAC;AAAA;AAAA,EAEzD,yBAAiB;AAAA,EACzB,SAAS,aAAa,CAAC,QAAQ,MAAM;AAAA,IACjC,IAAI;AAAA,IACJ,OAAQ,OAAO,KAAK,aAAa,eAC3B,KAAK,KAAK,WAAW,gBAAgB,QAAQ,OAAY,YAAS,YAAI,GAAG,KAAK,CAAC,QAAQ,OAAO,SAAS,SAAS;AAAA;AAAA,EAElH,wBAAgB;AAAA;;;;EChBxB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,0BAA0B,yBAAyB,wBAAwB,iCAAiC,uBAAuB,yBAAyB,mBAAgB;AAAA,EACpL,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAI;AAAA,GACH,QAAS,CAAC,WAAU;AAAA,IACjB,UAAS,UAAS,aAAa,KAAK;AAAA,IACpC,UAAS,UAAS,WAAW,KAAK;AAAA,KACnC,aAAqB,mBAAW,WAAW,CAAC,EAAE;AAAA,EACjD,SAAS,cAAc,CAAC,QAAQ;AAAA,IAC5B,MAAM,QAAQ,aAAa,OAAO,IAAI;AAAA,IACtC,MAAM,UAAU,MAAM,SAAS,MAAM;AAAA,IACrC,IAAI,SAAS;AAAA,MACT,IAAI,OAAO,aAAa;AAAA,QACpB,MAAM,IAAI,MAAM,wCAAwC;AAAA,IAChE,EACK;AAAA,MACD,IAAI,CAAC,MAAM,UAAU,OAAO,aAAa,WAAW;AAAA,QAChD,MAAM,IAAI,MAAM,0CAA0C;AAAA,MAC9D;AAAA,MACA,IAAI,OAAO,aAAa;AAAA,QACpB,MAAM,KAAK,MAAM;AAAA;AAAA,IAEzB,OAAO;AAAA;AAAA,EAEH,yBAAiB;AAAA,EAEzB,SAAS,YAAY,CAAC,IAAI;AAAA,IACtB,MAAM,QAAQ,MAAM,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC;AAAA,IACpD,IAAI,MAAM,MAAM,QAAQ,UAAU;AAAA,MAC9B,OAAO;AAAA,IACX,MAAM,IAAI,MAAM,0CAA0C,MAAM,KAAK,GAAG,CAAC;AAAA;AAAA,EAErE,uBAAe;AAAA,EACvB,SAAS,sBAAsB,CAAC,IAAI,OAAO;AAAA,IACvC,QAAQ,KAAK,MAAM,SAAS;AAAA,IAC5B,MAAM,WAAW,cAAc,OAAO,KAAK,WAAW;AAAA,IACtD,MAAM,aAAa,MAAM,SAAS,KAC9B,EAAE,SAAS,WAAW,KAAK,MAAM,WAAW,MAAM,GAAG,gBAAgB,uBAAuB,IAAI,MAAM,EAAE;AAAA,IAC5G,IAAI,YAAY;AAAA,MACZ,MAAM,YAAY,eAAe,OAAO,MAAM,KAAK,eAAe,SAAS,KAAK;AAAA,MAChF,IAAI,GAAG,WAAW,MAAM;AAAA,QACpB,IAAI,SAAS;AAAA,UACT,WAAW,IAAI,OAAO,QAAQ;AAAA,QAE9B;AAAA,0BAAgB,EAAE;AAAA,OACzB;AAAA,IACL;AAAA,IACA,OAAO;AAAA;AAAA,EAEH,iCAAyB;AAAA,EACjC,IAAM,YAAY,IAAI,IAAI,CAAC,UAAU,UAAU,WAAW,WAAW,MAAM,CAAC;AAAA,EAC5E,SAAS,aAAa,CAAC,OAAO,aAAa;AAAA,IACvC,OAAO,cACD,MAAM,OAAO,CAAC,MAAM,UAAU,IAAI,CAAC,KAAM,gBAAgB,WAAW,MAAM,OAAQ,IAClF,CAAC;AAAA;AAAA,EAEX,SAAS,UAAU,CAAC,IAAI,OAAO,UAAU;AAAA,IACrC,QAAQ,KAAK,MAAM,SAAS;AAAA,IAC5B,MAAM,WAAW,IAAI,IAAI,YAAa,IAAG,UAAU,YAAa,MAAM;AAAA,IACtE,MAAM,UAAU,IAAI,IAAI,WAAY,IAAG,UAAU,aAAc;AAAA,IAC/D,IAAI,KAAK,gBAAgB,SAAS;AAAA,MAC9B,IAAI,GAAI,IAAG,UAAU,KAAM,yCAAyC,YAAY,oBAAoB,MAAM,IACrG,OAAO,MAAO,IAAG,UAAU,KAAM,SAAS,EAC1C,OAAO,UAAW,IAAG,UAAU,YAAa,MAAM,EAClD,GAAG,eAAe,OAAO,MAAM,KAAK,aAAa,GAAG,MAAM,IAAI,OAAO,SAAS,IAAI,CAAC,CAAC;AAAA,IAC7F;AAAA,IACA,IAAI,GAAI,IAAG,UAAU,KAAM,uBAAuB;AAAA,IAClD,WAAW,KAAK,UAAU;AAAA,MACtB,IAAI,UAAU,IAAI,CAAC,KAAM,MAAM,WAAW,KAAK,gBAAgB,SAAU;AAAA,QACrE,mBAAmB,CAAC;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,IAAI,KAAK;AAAA,IACT,gBAAgB,EAAE;AAAA,IAClB,IAAI,MAAM;AAAA,IACV,IAAI,GAAI,IAAG,UAAU,KAAM,yBAAyB,MAAM;AAAA,MACtD,IAAI,OAAO,MAAM,OAAO;AAAA,MACxB,iBAAiB,IAAI,OAAO;AAAA,KAC/B;AAAA,IACD,SAAS,kBAAkB,CAAC,GAAG;AAAA,MAC3B,QAAQ;AAAA,aACC;AAAA,UACD,IACK,OAAQ,IAAG,UAAU,KAAM,2BAA2B,uBAAuB,EAC7E,OAAO,SAAU,IAAG,UAAU,UAAW,MAAM,EAC/C,OAAQ,IAAG,UAAU,KAAM,eAAe,EAC1C,OAAO,SAAU,IAAG,UAAU,MAAO;AAAA,UAC1C;AAAA,aACC;AAAA,UACD,IACK,OAAQ,IAAG,UAAU,KAAM,4BAA4B;AAAA,oBACxD,2BAA2B,WAAW,YAAY,OAAO,EACxD,OAAO,SAAU,IAAG,UAAU,MAAO,MAAM;AAAA,UAChD;AAAA,aACC;AAAA,UACD,IACK,OAAQ,IAAG,UAAU,KAAM,6BAA6B;AAAA,oBACzD,4BAA4B,WAAW,YAAY,aAAa,YAAY,EAC3E,OAAO,SAAU,IAAG,UAAU,MAAO,MAAM;AAAA,UAChD;AAAA,aACC;AAAA,UACD,IACK,OAAQ,IAAG,UAAU,KAAM,uBAAuB,iBAAiB,eAAe,EAClF,OAAO,SAAS,KAAK,EACrB,OAAQ,IAAG,UAAU,KAAM,sBAAsB,YAAY,EAC7D,OAAO,SAAS,IAAI;AAAA,UACzB;AAAA,aACC;AAAA,UACD,IAAI,OAAQ,IAAG,UAAU,KAAM,kBAAkB,iBAAiB,gBAAgB;AAAA,UAClF,IAAI,OAAO,SAAS,IAAI;AAAA,UACxB;AAAA,aACC;AAAA,UACD,IACK,OAAQ,IAAG,UAAU,KAAM,4BAA4B;AAAA,mBACzD,6BAA6B,eAAe,EAC1C,OAAO,SAAU,IAAG,UAAU,MAAO,OAAO;AAAA;AAAA;AAAA;AAAA,EAIjE,SAAS,gBAAgB,GAAG,KAAK,YAAY,sBAAsB,MAAM;AAAA,IAErE,IAAI,GAAI,IAAG,UAAU,KAAM,4BAA4B,MAAM,IAAI,OAAQ,IAAG,UAAU,KAAM,cAAc,uBAAuB,IAAI,CAAC;AAAA;AAAA,EAE1I,SAAS,aAAa,CAAC,UAAU,MAAM,YAAY,UAAU,SAAS,SAAS;AAAA,IAC3E,MAAM,KAAK,YAAY,SAAS,UAAU,UAAU,UAAU,KAAK,UAAU,UAAU;AAAA,IACvF,IAAI;AAAA,IACJ,QAAQ;AAAA,WACC;AAAA,QACD,OAAQ,IAAG,UAAU,KAAM,QAAQ;AAAA,WAClC;AAAA,QACD,OAAQ,IAAG,UAAU,mBAAoB;AAAA,QACzC;AAAA,WACC;AAAA,QACD,OAAQ,IAAG,UAAU,KAAM,kBAAkB,sCAAsC;AAAA,QACnF;AAAA,WACC;AAAA,QACD,OAAO,QAAS,IAAG,UAAU,OAAQ,uBAAuB,OAAO;AAAA,QACnE;AAAA,WACC;AAAA,QACD,OAAO,QAAQ;AAAA,QACf;AAAA;AAAA,QAEA,OAAQ,IAAG,UAAU,YAAa,QAAQ,MAAM;AAAA;AAAA,IAExD,OAAO,YAAY,SAAS,UAAU,QAAQ,GAAG,UAAU,KAAK,IAAI;AAAA,IACpE,SAAS,OAAO,CAAC,QAAQ,UAAU,KAAK;AAAA,MACpC,QAAQ,GAAG,UAAU,KAAM,IAAG,UAAU,YAAa,oBAAoB,OAAO,aAAc,IAAG,UAAU,cAAe,UAAU,UAAU,GAAG;AAAA;AAAA;AAAA,EAGjJ,wBAAgB;AAAA,EACxB,SAAS,cAAc,CAAC,WAAW,MAAM,YAAY,SAAS;AAAA,IAC1D,IAAI,UAAU,WAAW,GAAG;AAAA,MACxB,OAAO,cAAc,UAAU,IAAI,MAAM,YAAY,OAAO;AAAA,IAChE;AAAA,IACA,IAAI;AAAA,IACJ,MAAM,SAAS,GAAG,OAAO,QAAQ,SAAS;AAAA,IAC1C,IAAI,MAAM,SAAS,MAAM,QAAQ;AAAA,MAC7B,MAAM,SAAU,IAAG,UAAU,YAAa;AAAA,MAC1C,OAAO,MAAM,OAAO,SAAU,IAAG,UAAU,MAAO,WAAW;AAAA,MAC7D,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,IACjB,EACK;AAAA,MACD,OAAO,UAAU;AAAA;AAAA,IAErB,IAAI,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,IACjB,WAAW,KAAK;AAAA,MACZ,QAAQ,GAAG,UAAU,KAAK,MAAM,cAAc,GAAG,MAAM,YAAY,OAAO,CAAC;AAAA,IAC/E,OAAO;AAAA;AAAA,EAEH,yBAAiB;AAAA,EACzB,IAAM,YAAY;AAAA,IACd,SAAS,GAAG,aAAa,WAAW;AAAA,IACpC,QAAQ,GAAG,QAAQ,kBAAkB,OAAO,UAAU,WAAY,IAAG,UAAU,YAAa,YAAa,IAAG,UAAU,YAAa;AAAA,EACvI;AAAA,EACA,SAAS,eAAe,CAAC,IAAI;AAAA,IACzB,MAAM,MAAM,oBAAoB,EAAE;AAAA,KACjC,GAAG,SAAS,aAAa,KAAK,SAAS;AAAA;AAAA,EAEpC,0BAAkB;AAAA,EAC1B,SAAS,mBAAmB,CAAC,IAAI;AAAA,IAC7B,QAAQ,KAAK,MAAM,WAAW;AAAA,IAC9B,MAAM,cAAc,GAAG,OAAO,gBAAgB,IAAI,QAAQ,MAAM;AAAA,IAChE,OAAO;AAAA,MACH;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA,QAAQ,OAAO;AAAA,MACf;AAAA,MACA,aAAa;AAAA,MACb,cAAc;AAAA,MACd,QAAQ,CAAC;AAAA,MACT;AAAA,IACJ;AAAA;AAAA;;;;ECvMJ,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,yBAAsB;AAAA,EAC9B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,SAAS,cAAc,CAAC,IAAI,IAAI;AAAA,IAC5B,QAAQ,YAAY,UAAU,GAAG;AAAA,IACjC,IAAI,OAAO,YAAY,YAAY;AAAA,MAC/B,WAAW,OAAO,YAAY;AAAA,QAC1B,cAAc,IAAI,KAAK,WAAW,KAAK,OAAO;AAAA,MAClD;AAAA,IACJ,EACK,SAAI,OAAO,WAAW,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC7C,MAAM,QAAQ,CAAC,KAAK,MAAM,cAAc,IAAI,GAAG,IAAI,OAAO,CAAC;AAAA,IAC/D;AAAA;AAAA,EAEI,yBAAiB;AAAA,EACzB,SAAS,aAAa,CAAC,IAAI,MAAM,cAAc;AAAA,IAC3C,QAAQ,KAAK,eAAe,MAAM,SAAS;AAAA,IAC3C,IAAI,iBAAiB;AAAA,MACjB;AAAA,IACJ,MAAM,YAAa,IAAG,UAAU,KAAM,QAAQ,GAAG,UAAU,aAAa,IAAI;AAAA,IAC5E,IAAI,eAAe;AAAA,OACd,GAAG,OAAO,iBAAiB,IAAI,2BAA2B,WAAW;AAAA,MACtE;AAAA,IACJ;AAAA,IACA,IAAI,YAAa,IAAG,UAAU,KAAM;AAAA,IACpC,IAAI,KAAK,gBAAgB,SAAS;AAAA,MAC9B,YAAa,IAAG,UAAU,KAAM,gBAAgB,yBAAyB;AAAA,IAC7E;AAAA,IAGA,IAAI,GAAG,WAAY,IAAG,UAAU,KAAM,gBAAgB,GAAG,UAAU,WAAW,YAAY,GAAG;AAAA;AAAA;;;;EC/BjG,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAwB,wBAAwB,qBAAqB,2BAA2B,2BAA2B,8BAA8B,2BAA2B,yBAAyB,wBAAwB,sBAAsB,4BAA4B,2BAA2B,iCAA8B;AAAA,EACxV,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,SAAS,sBAAsB,CAAC,KAAK,MAAM;AAAA,IACvC,QAAQ,KAAK,MAAM,OAAO;AAAA,IAC1B,IAAI,GAAG,iBAAiB,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa,GAAG,MAAM;AAAA,MACnE,IAAI,UAAU,EAAE,iBAAkB,IAAG,UAAU,KAAM,OAAO,GAAG,IAAI;AAAA,MACnE,IAAI,MAAM;AAAA,KACb;AAAA;AAAA,EAEG,iCAAyB;AAAA,EACjC,SAAS,gBAAgB,GAAG,KAAK,MAAM,MAAM,UAAU,YAAY,SAAS;AAAA,IACxE,QAAQ,GAAG,UAAU,IAAI,GAAG,WAAW,IAAI,CAAC,UAAU,GAAG,UAAU,KAAK,iBAAiB,KAAK,MAAM,MAAM,KAAK,aAAa,GAAI,IAAG,UAAU,KAAM,aAAa,MAAM,CAAC,CAAC;AAAA;AAAA,EAEpK,2BAAmB;AAAA,EAC3B,SAAS,iBAAiB,CAAC,KAAK,SAAS;AAAA,IACrC,IAAI,UAAU,EAAE,iBAAiB,QAAQ,GAAG,IAAI;AAAA,IAChD,IAAI,MAAM;AAAA;AAAA,EAEN,4BAAoB;AAAA,EAC5B,SAAS,WAAW,CAAC,KAAK;AAAA,IACtB,OAAO,IAAI,WAAW,QAAQ;AAAA,MAE1B,KAAK,OAAO,UAAU;AAAA,MACtB,MAAO,IAAG,UAAU;AAAA,IACxB,CAAC;AAAA;AAAA,EAEG,sBAAc;AAAA,EACtB,SAAS,aAAa,CAAC,KAAK,MAAM,UAAU;AAAA,IACxC,OAAQ,IAAG,UAAU,KAAM,YAAY,GAAG,UAAU,SAAS;AAAA;AAAA,EAEzD,wBAAgB;AAAA,EACxB,SAAS,cAAc,CAAC,KAAK,MAAM,UAAU,eAAe;AAAA,IACxD,MAAM,OAAQ,IAAG,UAAU,KAAM,QAAQ,GAAG,UAAU,aAAa,QAAQ;AAAA,IAC3E,OAAO,gBAAiB,IAAG,UAAU,KAAM,WAAW,cAAc,KAAK,MAAM,QAAQ,MAAM;AAAA;AAAA,EAEzF,yBAAiB;AAAA,EACzB,SAAS,gBAAgB,CAAC,KAAK,MAAM,UAAU,eAAe;AAAA,IAC1D,MAAM,OAAQ,IAAG,UAAU,KAAM,QAAQ,GAAG,UAAU,aAAa,QAAQ;AAAA,IAC3E,OAAO,iBAAiB,GAAG,UAAU,IAAI,OAAO,GAAG,UAAU,KAAK,cAAc,KAAK,MAAM,QAAQ,CAAC,CAAC,IAAI;AAAA;AAAA,EAErG,2BAAmB;AAAA,EAC3B,SAAS,mBAAmB,CAAC,WAAW;AAAA,IACpC,OAAO,YAAY,OAAO,KAAK,SAAS,EAAE,OAAO,CAAC,MAAM,MAAM,WAAW,IAAI,CAAC;AAAA;AAAA,EAE1E,8BAAsB;AAAA,EAC9B,SAAS,gBAAgB,CAAC,IAAI,WAAW;AAAA,IACrC,OAAO,oBAAoB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,mBAAmB,IAAI,UAAU,EAAE,CAAC;AAAA;AAAA,EAEhG,2BAAmB;AAAA,EAC3B,SAAS,gBAAgB,GAAG,YAAY,MAAM,MAAM,KAAK,cAAc,YAAY,aAAa,MAAM,MAAM,SAAS,YAAY;AAAA,IAC7H,MAAM,gBAAgB,aAAc,IAAG,UAAU,KAAM,eAAe,SAAS,eAAe,eAAe;AAAA,IAC7G,MAAM,SAAS;AAAA,MACX,CAAC,QAAQ,QAAQ,eAAe,GAAG,UAAU,WAAW,QAAQ,QAAQ,cAAc,SAAS,CAAC;AAAA,MAChG,CAAC,QAAQ,QAAQ,YAAY,GAAG,UAAU;AAAA,MAC1C,CAAC,QAAQ,QAAQ,oBAAoB,GAAG,kBAAkB;AAAA,MAC1D,CAAC,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,QAAQ;AAAA,IACvD;AAAA,IACA,IAAI,GAAG,KAAK;AAAA,MACR,OAAO,KAAK,CAAC,QAAQ,QAAQ,gBAAgB,QAAQ,QAAQ,cAAc,CAAC;AAAA,IAChF,MAAM,OAAQ,IAAG,UAAU,KAAM,kBAAkB,IAAI,OAAO,GAAG,MAAM;AAAA,IACvE,OAAO,YAAY,UAAU,MAAO,IAAG,UAAU,KAAM,aAAa,YAAY,UAAW,IAAG,UAAU,KAAM,QAAQ;AAAA;AAAA,EAElH,2BAAmB;AAAA,EAC3B,IAAM,YAAa,IAAG,UAAU;AAAA,EAChC,SAAS,UAAU,GAAG,KAAK,MAAM,UAAU,SAAS;AAAA,IAChD,MAAM,IAAI,KAAK,gBAAgB,MAAM;AAAA,IACrC,QAAQ,WAAW,KAAK;AAAA,IACxB,MAAM,KAAK,OAAO,SAAS,CAAC;AAAA,IAC5B,OAAO,IAAI,WAAW,WAAW;AAAA,MAC7B,KAAK,GAAG,SAAS;AAAA,MACjB,KAAK;AAAA,MACL,MAAO,IAAG,UAAU,KAAM,OAAO,SAAS,eAAe,aAAa,GAAG,OAAO,SAAS,KAAK,MAAM,KAAK,YAAY;AAAA,IACzH,CAAC;AAAA;AAAA,EAEG,qBAAa;AAAA,EACrB,SAAS,aAAa,CAAC,KAAK;AAAA,IACxB,QAAQ,KAAK,MAAM,SAAS,OAAO;AAAA,IACnC,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,IAC9B,IAAI,GAAG,WAAW;AAAA,MACd,MAAM,WAAW,IAAI,IAAI,SAAS,IAAI;AAAA,MACtC,cAAc,MAAM,IAAI,OAAO,UAAU,KAAK,CAAC;AAAA,MAC/C,OAAO;AAAA,IACX;AAAA,IACA,IAAI,IAAI,OAAO,IAAI;AAAA,IACnB,cAAc,MAAM,IAAI,MAAM,CAAC;AAAA,IAC/B,OAAO;AAAA,IACP,SAAS,aAAa,CAAC,UAAU;AAAA,MAC7B,MAAM,MAAM,IAAI,MAAM,OAAQ,IAAG,UAAU,KAAM,aAAa;AAAA,MAC9D,IAAI,SAAS,KAAK,GAAG,KAAK,CAAC,MAAM;AAAA,QAC7B,IAAI,UAAU;AAAA,UACV;AAAA,UACA,UAAU;AAAA,UACV,cAAc,OAAO,KAAK;AAAA,QAC9B,GAAG,KAAK;AAAA,QACR,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,QAAQ;AAAA,OAC7C;AAAA;AAAA;AAAA,EAGD,wBAAgB;AAAA,EACxB,SAAS,aAAa,CAAC,KAAK;AAAA,IACxB,QAAQ,KAAK,QAAQ,SAAS,OAAO;AAAA,IAErC,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,MACrB,MAAM,IAAI,MAAM,0BAA0B;AAAA,IAC9C,MAAM,cAAc,OAAO,KAAK,CAAC,SAAS,GAAG,OAAO,mBAAmB,IAAI,GAAG,CAAC;AAAA,IAC/E,IAAI,eAAe,CAAC,GAAG,KAAK;AAAA,MACxB;AAAA,IACJ,MAAM,QAAQ,IAAI,IAAI,SAAS,KAAK;AAAA,IACpC,MAAM,WAAW,IAAI,KAAK,QAAQ;AAAA,IAClC,IAAI,MAAM,MAAM,OAAO,QAAQ,CAAC,MAAM,MAAM;AAAA,MACxC,MAAM,SAAS,IAAI,UAAU;AAAA,QACzB;AAAA,QACA,YAAY;AAAA,QACZ,eAAe;AAAA,MACnB,GAAG,QAAQ;AAAA,MACX,IAAI,OAAO,OAAQ,IAAG,UAAU,KAAM,YAAY,UAAU;AAAA,MAC5D,MAAM,SAAS,IAAI,oBAAoB,QAAQ,QAAQ;AAAA,MAGvD,IAAI,CAAC;AAAA,QACD,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,CAAC;AAAA,KACvC,CAAC;AAAA,IACF,IAAI,OAAO,OAAO,MAAM,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA;AAAA,EAEtD,wBAAgB;AAAA;;;;EChIxB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,+BAA+B,0BAA0B,0BAA0B,2BAAwB;AAAA,EACnH,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,SAAS,gBAAgB,CAAC,KAAK,KAAK;AAAA,IAChC,QAAQ,KAAK,SAAS,QAAQ,cAAc,OAAO;AAAA,IACnD,MAAM,cAAc,IAAI,MAAM,KAAK,GAAG,MAAM,QAAQ,cAAc,EAAE;AAAA,IACpE,MAAM,YAAY,WAAW,KAAK,SAAS,WAAW;AAAA,IACtD,IAAI,GAAG,KAAK,mBAAmB;AAAA,MAC3B,GAAG,KAAK,eAAe,aAAa,IAAI;AAAA,IAC5C,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,IAC9B,IAAI,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,YAAY,UAAU;AAAA,MACtB,eAAe,GAAG,GAAG,iBAAiB;AAAA,MACtC,cAAc;AAAA,MACd,eAAe;AAAA,IACnB,GAAG,KAAK;AAAA,IACR,IAAI,KAAK,OAAO,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA;AAAA,EAEjC,2BAAmB;AAAA,EAC3B,SAAS,eAAe,CAAC,KAAK,KAAK;AAAA,IAC/B,IAAI;AAAA,IACJ,QAAQ,KAAK,SAAS,QAAQ,cAAc,OAAO,OAAO;AAAA,IAC1D,kBAAkB,IAAI,GAAG;AAAA,IACzB,MAAM,WAAW,CAAC,SAAS,IAAI,UAAU,IAAI,QAAQ,KAAK,GAAG,MAAM,QAAQ,cAAc,EAAE,IAAI,IAAI;AAAA,IACnG,MAAM,cAAc,WAAW,KAAK,SAAS,QAAQ;AAAA,IACrD,MAAM,QAAQ,IAAI,IAAI,OAAO;AAAA,IAC7B,IAAI,WAAW,OAAO,eAAe;AAAA,IACrC,IAAI,IAAI,KAAK,IAAI,WAAW,QAAQ,OAAY,YAAI,KAAK,KAAK;AAAA,IAC9D,SAAS,eAAe,GAAG;AAAA,MACvB,IAAI,IAAI,WAAW,OAAO;AAAA,QACtB,YAAY;AAAA,QACZ,IAAI,IAAI;AAAA,UACJ,WAAW,GAAG;AAAA,QAClB,WAAW,MAAM,IAAI,MAAM,CAAC;AAAA,MAChC,EACK;AAAA,QACD,MAAM,WAAW,IAAI,QAAQ,cAAc,IAAI,aAAa;AAAA,QAC5D,IAAI,IAAI;AAAA,UACJ,WAAW,GAAG;AAAA,QAClB,WAAW,MAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA,IAG/C,SAAS,aAAa,GAAG;AAAA,MACrB,MAAM,WAAW,IAAI,IAAI,YAAY,IAAI;AAAA,MACzC,IAAI,IAAI,MAAM,YAAa,IAAG,UAAU,UAAW,GAAG,CAAC,MAAM,IAAI,OAAO,OAAO,KAAK,EAAE,GAAI,IAAG,UAAU,KAAM,gBAAgB,GAAG,mBAAmB,MAAM,IAAI,OAAO,UAAW,IAAG,UAAU,KAAM,UAAU,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;AAAA,MAClO,OAAO;AAAA;AAAA,IAEX,SAAS,YAAY,GAAG;AAAA,MACpB,MAAM,eAAgB,IAAG,UAAU,KAAM;AAAA,MACzC,IAAI,OAAO,cAAc,IAAI;AAAA,MAC7B,YAAY,UAAU,GAAG;AAAA,MACzB,OAAO;AAAA;AAAA,IAEX,SAAS,WAAW,CAAC,SAAS,IAAI,QAAS,IAAG,UAAU,aAAc,UAAU,KAAK;AAAA,MACjF,MAAM,UAAU,GAAG,KAAK,cAAc,QAAQ,QAAQ,OAAO,QAAQ,QAAQ;AAAA,MAC7E,MAAM,aAAa,GAAG,aAAa,QAAO,CAAC,SAAU,IAAI,WAAW;AAAA,MACpE,IAAI,OAAO,OAAQ,IAAG,UAAU,KAAM,UAAU,GAAG,OAAO,kBAAkB,KAAK,aAAa,SAAS,UAAU,KAAK,IAAI,SAAS;AAAA;AAAA,IAEvI,SAAS,UAAU,CAAC,QAAQ;AAAA,MACxB,IAAI;AAAA,MACJ,IAAI,IAAI,GAAG,UAAU,MAAM,MAAK,IAAI,WAAW,QAAQ,QAAY,YAAI,MAAK,KAAK,GAAG,MAAM;AAAA;AAAA;AAAA,EAG1F,0BAAkB;AAAA,EAC1B,SAAS,UAAU,CAAC,KAAK;AAAA,IACrB,QAAQ,KAAK,MAAM,OAAO;AAAA,IAC1B,IAAI,GAAG,GAAG,YAAY,MAAM,IAAI,OAAO,MAAO,IAAG,UAAU,KAAM,GAAG,cAAc,GAAG,qBAAqB,CAAC;AAAA;AAAA,EAE/G,SAAS,OAAO,CAAC,KAAK,MAAM;AAAA,IACxB,QAAQ,QAAQ;AAAA,IAChB,IAAI,GAAI,IAAG,UAAU,mBAAoB,SAAS,MAAM;AAAA,MACpD,IACK,OAAO,QAAQ,QAAQ,SAAU,IAAG,UAAU,KAAM,QAAQ,QAAQ,sBAAsB,UAAU,QAAQ,QAAQ,kBAAkB,OAAO,EAC7I,OAAO,QAAQ,QAAQ,QAAS,IAAG,UAAU,KAAM,QAAQ,QAAQ,gBAAgB;AAAA,OACvF,GAAG,SAAS,cAAc,GAAG;AAAA,OAC/B,MAAM,IAAI,MAAM,CAAC;AAAA;AAAA,EAExB,SAAS,iBAAiB,GAAG,aAAa,KAAK;AAAA,IAC3C,IAAI,IAAI,SAAS,CAAC,UAAU;AAAA,MACxB,MAAM,IAAI,MAAM,8BAA8B;AAAA;AAAA,EAEtD,SAAS,UAAU,CAAC,KAAK,SAAS,QAAQ;AAAA,IACtC,IAAI,WAAW;AAAA,MACX,MAAM,IAAI,MAAM,YAAY,4BAA4B;AAAA,IAC5D,OAAO,IAAI,WAAW,WAAW,OAAO,UAAU,aAAa,EAAE,KAAK,OAAO,IAAI,EAAE,KAAK,QAAQ,OAAO,GAAG,UAAU,WAAW,MAAM,EAAE,CAAC;AAAA;AAAA,EAE5I,SAAS,eAAe,CAAC,QAAQ,YAAY,iBAAiB,OAAO;AAAA,IAEjE,OAAQ,CAAC,WAAW,UAChB,WAAW,KAAK,CAAC,OAAO,OAAO,UACzB,MAAM,QAAQ,MAAM,IACpB,OAAO,WACH,UAAU,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM,IAC5D,OAAO,UAAU,MAAO,kBAAkB,OAAO,UAAU,WAAY;AAAA;AAAA,EAEjF,0BAAkB;AAAA,EAC1B,SAAS,oBAAoB,GAAG,QAAQ,MAAM,MAAM,iBAAiB,KAAK,SAAS;AAAA,IAE/E,IAAI,MAAM,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,SAAS,OAAO,IAAI,IAAI,YAAY,SAAS;AAAA,MACvF,MAAM,IAAI,MAAM,0BAA0B;AAAA,IAC9C;AAAA,IACA,MAAM,OAAO,IAAI;AAAA,IACjB,IAAI,SAAS,QAAQ,SAAc,YAAS,YAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,CAAC,GAAG;AAAA,MACpH,MAAM,IAAI,MAAM,2CAA2C,YAAY,KAAK,KAAK,GAAG,GAAG;AAAA,IAC3F;AAAA,IACA,IAAI,IAAI,gBAAgB;AAAA,MACpB,MAAM,QAAQ,IAAI,eAAe,OAAO,QAAQ;AAAA,MAChD,IAAI,CAAC,OAAO;AAAA,QACR,MAAM,MAAM,YAAY,sCAAsC,qBAC1D,KAAK,WAAW,IAAI,eAAe,MAAM;AAAA,QAC7C,IAAI,KAAK,mBAAmB;AAAA,UACxB,KAAK,OAAO,MAAM,GAAG;AAAA,QAErB;AAAA,gBAAM,IAAI,MAAM,GAAG;AAAA,MAC3B;AAAA,IACJ;AAAA;AAAA,EAEI,+BAAuB;AAAA;;;;ECzH/B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,8BAA8B,8BAA8B,uBAAoB;AAAA,EACxF,IAAM;AAAA,EACN,IAAM;AAAA,EACN,SAAS,YAAY,CAAC,MAAM,SAAS,YAAY,QAAQ,YAAY,eAAe,gBAAgB;AAAA,IAChG,IAAI,YAAY,aAAa,WAAW,WAAW;AAAA,MAC/C,MAAM,IAAI,MAAM,sDAAsD;AAAA,IAC1E;AAAA,IACA,IAAI,YAAY,WAAW;AAAA,MACvB,MAAM,MAAM,GAAG,OAAO;AAAA,MACtB,OAAO,eAAe,YAChB;AAAA,QACE,QAAQ;AAAA,QACR,YAAa,IAAG,UAAU,KAAM,GAAG,cAAc,GAAG,UAAU,aAAa,OAAO;AAAA,QAClF,eAAe,GAAG,GAAG,iBAAiB;AAAA,MAC1C,IACE;AAAA,QACE,QAAQ,IAAI;AAAA,QACZ,YAAa,IAAG,UAAU,KAAM,GAAG,cAAc,GAAG,UAAU,aAAa,OAAO,KAAK,GAAG,UAAU,aAAa,UAAU;AAAA,QAC3H,eAAe,GAAG,GAAG,iBAAiB,YAAY,GAAG,OAAO,gBAAgB,UAAU;AAAA,MAC1F;AAAA,IACR;AAAA,IACA,IAAI,WAAW,WAAW;AAAA,MACtB,IAAI,eAAe,aAAa,kBAAkB,aAAa,iBAAiB,WAAW;AAAA,QACvF,MAAM,IAAI,MAAM,6EAA6E;AAAA,MACjG;AAAA,MACA,OAAO;AAAA,QACH;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM,IAAI,MAAM,6CAA6C;AAAA;AAAA,EAEzD,uBAAe;AAAA,EACvB,SAAS,mBAAmB,CAAC,WAAW,MAAM,UAAU,cAAc,QAAQ,MAAM,WAAW,gBAAgB;AAAA,IAC3G,IAAI,SAAS,aAAa,aAAa,WAAW;AAAA,MAC9C,MAAM,IAAI,MAAM,qDAAqD;AAAA,IACzE;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB,IAAI,aAAa,WAAW;AAAA,MACxB,QAAQ,WAAW,aAAa,SAAS;AAAA,MACzC,MAAM,WAAW,IAAI,IAAI,QAAS,IAAG,UAAU,KAAM,GAAG,QAAQ,GAAG,UAAU,aAAa,QAAQ,KAAK,IAAI;AAAA,MAC3G,iBAAiB,QAAQ;AAAA,MACzB,UAAU,YAAa,IAAG,UAAU,OAAQ,aAAa,GAAG,OAAO,cAAc,UAAU,QAAQ,KAAK,gBAAgB;AAAA,MACxH,UAAU,qBAAsB,IAAG,UAAU,KAAM;AAAA,MACnD,UAAU,cAAc,CAAC,GAAG,aAAa,UAAU,kBAAkB;AAAA,IACzE;AAAA,IACA,IAAI,SAAS,WAAW;AAAA,MACpB,MAAM,WAAW,gBAAgB,UAAU,OAAO,OAAO,IAAI,IAAI,QAAQ,MAAM,IAAI;AAAA,MACnF,iBAAiB,QAAQ;AAAA,MACzB,IAAI,iBAAiB;AAAA,QACjB,UAAU,eAAe;AAAA,IAEjC;AAAA,IACA,IAAI;AAAA,MACA,UAAU,YAAY;AAAA,IAC1B,SAAS,gBAAgB,CAAC,WAAW;AAAA,MACjC,UAAU,OAAO;AAAA,MACjB,UAAU,YAAY,GAAG,YAAY;AAAA,MACrC,UAAU,YAAY,CAAC;AAAA,MACvB,GAAG,oBAAoB,IAAI;AAAA,MAC3B,UAAU,aAAa,GAAG;AAAA,MAC1B,UAAU,YAAY,CAAC,GAAG,GAAG,WAAW,SAAS;AAAA;AAAA;AAAA,EAGjD,8BAAsB;AAAA,EAC9B,SAAS,mBAAmB,CAAC,aAAa,kBAAkB,aAAa,eAAe,cAAc,aAAa;AAAA,IAC/G,IAAI,kBAAkB;AAAA,MAClB,UAAU,gBAAgB;AAAA,IAC9B,IAAI,iBAAiB;AAAA,MACjB,UAAU,eAAe;AAAA,IAC7B,IAAI,cAAc;AAAA,MACd,UAAU,YAAY;AAAA,IAC1B,UAAU,mBAAmB;AAAA,IAC7B,UAAU,cAAc;AAAA;AAAA,EAEpB,8BAAsB;AAAA;;;;ECzE9B,OAAO,UAAU,SAAS,KAAK,CAAC,GAAG,GAAG;AAAA,IACpC,IAAI,MAAM;AAAA,MAAG,OAAO;AAAA,IAEpB,IAAI,KAAK,KAAK,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU;AAAA,MAC1D,IAAI,EAAE,gBAAgB,EAAE;AAAA,QAAa,OAAO;AAAA,MAE5C,IAAI,QAAQ,GAAG;AAAA,MACf,IAAI,MAAM,QAAQ,CAAC,GAAG;AAAA,QACpB,SAAS,EAAE;AAAA,QACX,IAAI,UAAU,EAAE;AAAA,UAAQ,OAAO;AAAA,QAC/B,KAAK,IAAI,OAAQ,QAAQ;AAAA,UACvB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;AAAA,YAAG,OAAO;AAAA,QACjC,OAAO;AAAA,MACT;AAAA,MAIA,IAAI,EAAE,gBAAgB;AAAA,QAAQ,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE;AAAA,MAC5E,IAAI,EAAE,YAAY,OAAO,UAAU;AAAA,QAAS,OAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAAA,MAC7E,IAAI,EAAE,aAAa,OAAO,UAAU;AAAA,QAAU,OAAO,EAAE,SAAS,MAAM,EAAE,SAAS;AAAA,MAEjF,OAAO,OAAO,KAAK,CAAC;AAAA,MACpB,SAAS,KAAK;AAAA,MACd,IAAI,WAAW,OAAO,KAAK,CAAC,EAAE;AAAA,QAAQ,OAAO;AAAA,MAE7C,KAAK,IAAI,OAAQ,QAAQ;AAAA,QACvB,IAAI,CAAC,OAAO,UAAU,eAAe,KAAK,GAAG,KAAK,EAAE;AAAA,UAAG,OAAO;AAAA,MAEhE,KAAK,IAAI,OAAQ,QAAQ,KAAI;AAAA,QAC3B,IAAI,MAAM,KAAK;AAAA,QAEf,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI;AAAA,UAAG,OAAO;AAAA,MACrC;AAAA,MAEA,OAAO;AAAA,IACT;AAAA,IAGA,OAAO,MAAI,KAAK,MAAI;AAAA;AAAA;;;;EC1CtB,IAAI,WAAW,OAAO,UAAU,QAAS,CAAC,QAAQ,MAAM,IAAI;AAAA,IAE1D,IAAI,OAAO,QAAQ,YAAY;AAAA,MAC7B,KAAK;AAAA,MACL,OAAO,CAAC;AAAA,IACV;AAAA,IAEA,KAAK,KAAK,MAAM;AAAA,IAChB,IAAI,MAAO,OAAO,MAAM,aAAc,KAAK,GAAG,OAAO,QAAQ,GAAG;AAAA,IAChE,IAAI,OAAO,GAAG,QAAQ,QAAQ,GAAG;AAAA,IAEjC,UAAU,MAAM,KAAK,MAAM,QAAQ,IAAI,MAAM;AAAA;AAAA,EAI/C,SAAS,WAAW;AAAA,IAClB,iBAAiB;AAAA,IACjB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,sBAAsB;AAAA,IACtB,eAAe;AAAA,IACf,KAAK;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EAEA,SAAS,gBAAgB;AAAA,IACvB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EAEA,SAAS,gBAAgB;AAAA,IACvB,OAAO;AAAA,IACP,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,mBAAmB;AAAA,IACnB,cAAc;AAAA,EAChB;AAAA,EAEA,SAAS,eAAe;AAAA,IACtB,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,UAAU;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,IACT,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,aAAa;AAAA,IACb,eAAe;AAAA,IACf,eAAe;AAAA,EACjB;AAAA,EAGA,SAAS,SAAS,CAAC,MAAM,KAAK,MAAM,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,UAAU;AAAA,IACrH,IAAI,UAAU,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,MAAM,GAAG;AAAA,MACjE,IAAI,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,QAAQ;AAAA,MACrF,SAAS,OAAO,QAAQ;AAAA,QACtB,IAAI,MAAM,OAAO;AAAA,QACjB,IAAI,MAAM,QAAQ,GAAG,GAAG;AAAA,UACtB,IAAI,OAAO,SAAS,eAAe;AAAA,YACjC,SAAS,IAAE,EAAG,IAAE,IAAI,QAAQ;AAAA,cAC1B,UAAU,MAAM,KAAK,MAAM,IAAI,IAAI,UAAU,MAAM,MAAM,MAAM,GAAG,YAAY,SAAS,KAAK,QAAQ,CAAC;AAAA,UACzG;AAAA,QACF,EAAO,SAAI,OAAO,SAAS,eAAe;AAAA,UACxC,IAAI,OAAO,OAAO,OAAO,UAAU;AAAA,YACjC,SAAS,QAAQ;AAAA,cACf,UAAU,MAAM,KAAK,MAAM,IAAI,OAAO,UAAU,MAAM,MAAM,MAAM,cAAc,IAAI,GAAG,YAAY,SAAS,KAAK,QAAQ,IAAI;AAAA,UACjI;AAAA,QACF,EAAO,SAAI,OAAO,SAAS,YAAa,KAAK,WAAW,EAAE,OAAO,SAAS,eAAgB;AAAA,UACxF,UAAU,MAAM,KAAK,MAAM,KAAK,UAAU,MAAM,KAAK,YAAY,SAAS,KAAK,MAAM;AAAA,QACvF;AAAA,MACF;AAAA,MACA,KAAK,QAAQ,SAAS,YAAY,eAAe,eAAe,cAAc,QAAQ;AAAA,IACxF;AAAA;AAAA,EAIF,SAAS,aAAa,CAAC,KAAK;AAAA,IAC1B,OAAO,IAAI,QAAQ,MAAM,IAAI,EAAE,QAAQ,OAAO,IAAI;AAAA;AAAA;;;;EC1FpD,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAwB,qBAAqB,sBAAsB,uBAAuB,sBAAsB,oBAAiB;AAAA,EACzI,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EAEN,IAAM,iBAAiB,IAAI,IAAI;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAAA,EACD,SAAS,SAAS,CAAC,QAAQ,QAAQ,MAAM;AAAA,IACrC,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACX,IAAI,UAAU;AAAA,MACV,OAAO,CAAC,OAAO,MAAM;AAAA,IACzB,IAAI,CAAC;AAAA,MACD,OAAO;AAAA,IACX,OAAO,UAAU,MAAM,KAAK;AAAA;AAAA,EAExB,oBAAY;AAAA,EACpB,IAAM,eAAe,IAAI,IAAI;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAAA,EACD,SAAS,MAAM,CAAC,QAAQ;AAAA,IACpB,WAAW,OAAO,QAAQ;AAAA,MACtB,IAAI,aAAa,IAAI,GAAG;AAAA,QACpB,OAAO;AAAA,MACX,MAAM,MAAM,OAAO;AAAA,MACnB,IAAI,MAAM,QAAQ,GAAG,KAAK,IAAI,KAAK,MAAM;AAAA,QACrC,OAAO;AAAA,MACX,IAAI,OAAO,OAAO,YAAY,OAAO,GAAG;AAAA,QACpC,OAAO;AAAA,IACf;AAAA,IACA,OAAO;AAAA;AAAA,EAEX,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,IAAI,QAAQ;AAAA,IACZ,WAAW,OAAO,QAAQ;AAAA,MACtB,IAAI,QAAQ;AAAA,QACR,OAAO;AAAA,MACX;AAAA,MACA,IAAI,eAAe,IAAI,GAAG;AAAA,QACtB;AAAA,MACJ,IAAI,OAAO,OAAO,QAAQ,UAAU;AAAA,SAC/B,GAAG,OAAO,UAAU,OAAO,MAAM,CAAC,QAAS,SAAS,UAAU,GAAG,CAAE;AAAA,MACxE;AAAA,MACA,IAAI,UAAU;AAAA,QACV,OAAO;AAAA,IACf;AAAA,IACA,OAAO;AAAA;AAAA,EAEX,SAAS,WAAW,CAAC,UAAU,KAAK,IAAI,WAAW;AAAA,IAC/C,IAAI,cAAc;AAAA,MACd,KAAK,YAAY,EAAE;AAAA,IACvB,MAAM,IAAI,SAAS,MAAM,EAAE;AAAA,IAC3B,OAAO,aAAa,UAAU,CAAC;AAAA;AAAA,EAE3B,sBAAc;AAAA,EACtB,SAAS,YAAY,CAAC,UAAU,GAAG;AAAA,IAC/B,MAAM,aAAa,SAAS,UAAU,CAAC;AAAA,IACvC,OAAO,WAAW,MAAM,GAAG,EAAE,KAAK;AAAA;AAAA,EAE9B,uBAAe;AAAA,EACvB,IAAM,sBAAsB;AAAA,EAC5B,SAAS,WAAW,CAAC,IAAI;AAAA,IACrB,OAAO,KAAK,GAAG,QAAQ,qBAAqB,EAAE,IAAI;AAAA;AAAA,EAE9C,sBAAc;AAAA,EACtB,SAAS,UAAU,CAAC,UAAU,QAAQ,IAAI;AAAA,IACtC,KAAK,YAAY,EAAE;AAAA,IACnB,OAAO,SAAS,QAAQ,QAAQ,EAAE;AAAA;AAAA,EAE9B,qBAAa;AAAA,EACrB,IAAM,SAAS;AAAA,EACf,SAAS,aAAa,CAAC,QAAQ,QAAQ;AAAA,IACnC,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO,CAAC;AAAA,IACZ,QAAQ,UAAU,gBAAgB,KAAK;AAAA,IACvC,MAAM,QAAQ,YAAY,OAAO,aAAa,MAAM;AAAA,IACpD,MAAM,UAAU,EAAE,IAAI,MAAM;AAAA,IAC5B,MAAM,aAAa,YAAY,aAAa,OAAO,KAAK;AAAA,IACxD,MAAM,YAAY,CAAC;AAAA,IACnB,MAAM,aAAa,IAAI;AAAA,IACvB,SAAS,QAAQ,EAAE,SAAS,KAAK,GAAG,CAAC,KAAK,SAAS,GAAG,kBAAkB;AAAA,MACpE,IAAI,kBAAkB;AAAA,QAClB;AAAA,MACJ,MAAM,WAAW,aAAa;AAAA,MAC9B,IAAI,cAAc,QAAQ;AAAA,MAC1B,IAAI,OAAO,IAAI,aAAa;AAAA,QACxB,cAAc,OAAO,KAAK,MAAM,IAAI,SAAS;AAAA,MACjD,UAAU,KAAK,MAAM,IAAI,OAAO;AAAA,MAChC,UAAU,KAAK,MAAM,IAAI,cAAc;AAAA,MACvC,QAAQ,WAAW;AAAA,MACnB,SAAS,MAAM,CAAC,KAAK;AAAA,QAEjB,MAAM,WAAW,KAAK,KAAK,YAAY;AAAA,QACvC,MAAM,YAAY,cAAc,SAAS,aAAa,GAAG,IAAI,GAAG;AAAA,QAChE,IAAI,WAAW,IAAI,GAAG;AAAA,UAClB,MAAM,SAAS,GAAG;AAAA,QACtB,WAAW,IAAI,GAAG;AAAA,QAClB,IAAI,WAAW,KAAK,KAAK;AAAA,QACzB,IAAI,OAAO,YAAY;AAAA,UACnB,WAAW,KAAK,KAAK;AAAA,QACzB,IAAI,OAAO,YAAY,UAAU;AAAA,UAC7B,iBAAiB,KAAK,SAAS,QAAQ,GAAG;AAAA,QAC9C,EACK,SAAI,QAAQ,YAAY,QAAQ,GAAG;AAAA,UACpC,IAAI,IAAI,OAAO,KAAK;AAAA,YAChB,iBAAiB,KAAK,UAAU,MAAM,GAAG;AAAA,YACzC,UAAU,OAAO;AAAA,UACrB,EACK;AAAA,YACD,KAAK,KAAK,OAAO;AAAA;AAAA,QAEzB;AAAA,QACA,OAAO;AAAA;AAAA,MAEX,SAAS,SAAS,CAAC,QAAQ;AAAA,QACvB,IAAI,OAAO,UAAU,UAAU;AAAA,UAC3B,IAAI,CAAC,OAAO,KAAK,MAAM;AAAA,YACnB,MAAM,IAAI,MAAM,mBAAmB,SAAS;AAAA,UAChD,OAAO,KAAK,MAAM,IAAI,QAAQ;AAAA,QAClC;AAAA;AAAA,KAEP;AAAA,IACD,OAAO;AAAA,IACP,SAAS,gBAAgB,CAAC,MAAM,MAAM,KAAK;AAAA,MACvC,IAAI,SAAS,aAAa,CAAC,MAAM,MAAM,IAAI;AAAA,QACvC,MAAM,SAAS,GAAG;AAAA;AAAA,IAE1B,SAAS,QAAQ,CAAC,KAAK;AAAA,MACnB,OAAO,IAAI,MAAM,cAAc,uCAAuC;AAAA;AAAA;AAAA,EAGtE,wBAAgB;AAAA;;;;ECxJxB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kBAAkB,qBAAqB,+BAA4B;AAAA,EAC3E,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EAEN,SAAS,oBAAoB,CAAC,IAAI;AAAA,IAC9B,IAAI,YAAY,EAAE,GAAG;AAAA,MACjB,cAAc,EAAE;AAAA,MAChB,IAAI,kBAAkB,EAAE,GAAG;AAAA,QACvB,iBAAiB,EAAE;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,iBAAiB,IAAI,OAAO,GAAG,aAAa,sBAAsB,EAAE,CAAC;AAAA;AAAA,EAEjE,+BAAuB;AAAA,EAC/B,SAAS,gBAAgB,GAAG,KAAK,cAAc,QAAQ,WAAW,QAAQ,MAAM;AAAA,IAC5E,IAAI,KAAK,KAAK,KAAK;AAAA,MACf,IAAI,KAAK,cAAe,IAAG,UAAU,KAAM,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,UAAU,UAAU,QAAQ,MAAM;AAAA,QAClH,IAAI,KAAM,IAAG,UAAU,mBAAoB,cAAc,QAAQ,IAAI,GAAG;AAAA,QACxE,qBAAqB,KAAK,IAAI;AAAA,QAC9B,IAAI,KAAK,IAAI;AAAA,OAChB;AAAA,IACL,EACK;AAAA,MACD,IAAI,KAAK,cAAe,IAAG,UAAU,KAAM,QAAQ,QAAQ,SAAS,kBAAkB,IAAI,KAAK,UAAU,QAAQ,MAAM,IAAI,KAAK,cAAc,QAAQ,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA;AAAA,EAG/K,SAAS,iBAAiB,CAAC,MAAM;AAAA,IAC7B,OAAQ,IAAG,UAAU,MAAO,QAAQ,QAAQ,oBAAoB,QAAQ,QAAQ,eAAe,QAAQ,QAAQ,uBAAuB,QAAQ,QAAQ,YAAY,QAAQ,QAAQ,OAAO,KAAK,aAAc,IAAG,UAAU,OAAQ,QAAQ,QAAQ,sBAAsB,UAAU;AAAA;AAAA,EAErR,SAAS,oBAAoB,CAAC,KAAK,MAAM;AAAA,IACrC,IAAI,GAAG,QAAQ,QAAQ,QAAQ,MAAM;AAAA,MACjC,IAAI,IAAI,QAAQ,QAAQ,cAAe,IAAG,UAAU,KAAM,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,cAAc;AAAA,MAClH,IAAI,IAAI,QAAQ,QAAQ,YAAa,IAAG,UAAU,KAAM,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,YAAY;AAAA,MAC9G,IAAI,IAAI,QAAQ,QAAQ,oBAAqB,IAAG,UAAU,KAAM,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,oBAAoB;AAAA,MAC9H,IAAI,IAAI,QAAQ,QAAQ,UAAW,IAAG,UAAU,KAAM,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,UAAU;AAAA,MAC1G,IAAI,KAAK;AAAA,QACL,IAAI,IAAI,QAAQ,QAAQ,gBAAiB,IAAG,UAAU,KAAM,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,gBAAgB;AAAA,OAC3H,MAAM;AAAA,MACL,IAAI,IAAI,QAAQ,QAAQ,cAAe,IAAG,UAAU,MAAO;AAAA,MAC3D,IAAI,IAAI,QAAQ,QAAQ,YAAa,IAAG,UAAU,aAAc;AAAA,MAChE,IAAI,IAAI,QAAQ,QAAQ,oBAAqB,IAAG,UAAU,aAAc;AAAA,MACxE,IAAI,IAAI,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,IAAI;AAAA,MACtD,IAAI,KAAK;AAAA,QACL,IAAI,IAAI,QAAQ,QAAQ,gBAAiB,IAAG,UAAU,MAAO;AAAA,KACpE;AAAA;AAAA,EAEL,SAAS,gBAAgB,CAAC,IAAI;AAAA,IAC1B,QAAQ,QAAQ,MAAM,QAAQ;AAAA,IAC9B,iBAAiB,IAAI,MAAM;AAAA,MACvB,IAAI,KAAK,YAAY,OAAO;AAAA,QACxB,eAAe,EAAE;AAAA,MACrB,eAAe,EAAE;AAAA,MACjB,IAAI,IAAI,QAAQ,QAAQ,SAAS,IAAI;AAAA,MACrC,IAAI,IAAI,QAAQ,QAAQ,QAAQ,CAAC;AAAA,MACjC,IAAI,KAAK;AAAA,QACL,eAAe,EAAE;AAAA,MACrB,gBAAgB,EAAE;AAAA,MAClB,cAAc,EAAE;AAAA,KACnB;AAAA,IACD;AAAA;AAAA,EAEJ,SAAS,cAAc,CAAC,IAAI;AAAA,IAExB,QAAQ,KAAK,iBAAiB;AAAA,IAC9B,GAAG,YAAY,IAAI,MAAM,aAAc,IAAG,UAAU,KAAM,wBAAwB;AAAA,IAClF,IAAI,GAAI,IAAG,UAAU,KAAM,GAAG,0BAA0B,MAAM,IAAI,OAAQ,IAAG,UAAU,KAAM,GAAG,mBAAoB,IAAG,UAAU,aAAc,CAAC;AAAA,IAChJ,IAAI,GAAI,IAAG,UAAU,KAAM,GAAG,0BAA0B,MAAM,IAAI,OAAQ,IAAG,UAAU,KAAM,GAAG,mBAAoB,IAAG,UAAU,aAAc,CAAC;AAAA;AAAA,EAEpJ,SAAS,aAAa,CAAC,QAAQ,MAAM;AAAA,IACjC,MAAM,QAAQ,OAAO,UAAU,YAAY,OAAO,KAAK;AAAA,IACvD,OAAO,UAAU,KAAK,KAAK,UAAU,KAAK,KAAK,WAAY,IAAG,UAAU,mBAAoB,aAAa,UAAU;AAAA;AAAA,EAGvH,SAAS,aAAa,CAAC,IAAI,OAAO;AAAA,IAC9B,IAAI,YAAY,EAAE,GAAG;AAAA,MACjB,cAAc,EAAE;AAAA,MAChB,IAAI,kBAAkB,EAAE,GAAG;AAAA,QACvB,iBAAiB,IAAI,KAAK;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ;AAAA,KACC,GAAG,aAAa,mBAAmB,IAAI,KAAK;AAAA;AAAA,EAEjD,SAAS,iBAAiB,GAAG,QAAQ,QAAQ;AAAA,IACzC,IAAI,OAAO,UAAU;AAAA,MACjB,OAAO,CAAC;AAAA,IACZ,WAAW,OAAO;AAAA,MACd,IAAI,KAAK,MAAM,IAAI;AAAA,QACf,OAAO;AAAA,IACf,OAAO;AAAA;AAAA,EAEX,SAAS,WAAW,CAAC,IAAI;AAAA,IACrB,OAAO,OAAO,GAAG,UAAU;AAAA;AAAA,EAE/B,SAAS,gBAAgB,CAAC,IAAI,OAAO;AAAA,IACjC,QAAQ,QAAQ,KAAK,SAAS;AAAA,IAC9B,IAAI,KAAK,YAAY,OAAO;AAAA,MACxB,eAAe,EAAE;AAAA,IACrB,cAAc,EAAE;AAAA,IAChB,iBAAiB,EAAE;AAAA,IACnB,MAAM,YAAY,IAAI,MAAM,SAAS,QAAQ,QAAQ,MAAM;AAAA,IAC3D,gBAAgB,IAAI,SAAS;AAAA,IAE7B,IAAI,IAAI,OAAQ,IAAG,UAAU,KAAM,iBAAiB,QAAQ,QAAQ,QAAQ;AAAA;AAAA,EAEhF,SAAS,aAAa,CAAC,IAAI;AAAA,KACtB,GAAG,OAAO,mBAAmB,EAAE;AAAA,IAChC,qBAAqB,EAAE;AAAA;AAAA,EAE3B,SAAS,eAAe,CAAC,IAAI,WAAW;AAAA,IACpC,IAAI,GAAG,KAAK;AAAA,MACR,OAAO,eAAe,IAAI,CAAC,GAAG,OAAO,SAAS;AAAA,IAClD,MAAM,SAAS,GAAG,WAAW,gBAAgB,GAAG,MAAM;AAAA,IACtD,MAAM,gBAAgB,GAAG,WAAW,wBAAwB,IAAI,KAAK;AAAA,IACrE,eAAe,IAAI,OAAO,CAAC,cAAc,SAAS;AAAA;AAAA,EAEtD,SAAS,oBAAoB,CAAC,IAAI;AAAA,IAC9B,QAAQ,QAAQ,eAAe,MAAM,SAAS;AAAA,IAC9C,IAAI,OAAO,QAAQ,KAAK,0BAA0B,GAAG,OAAO,sBAAsB,QAAQ,KAAK,KAAK,GAAG;AAAA,MACnG,KAAK,OAAO,KAAK,6CAA6C,gBAAgB;AAAA,IAClF;AAAA;AAAA,EAEJ,SAAS,cAAc,CAAC,IAAI;AAAA,IACxB,QAAQ,QAAQ,SAAS;AAAA,IACzB,IAAI,OAAO,YAAY,aAAa,KAAK,eAAe,KAAK,cAAc;AAAA,OACtE,GAAG,OAAO,iBAAiB,IAAI,uCAAuC;AAAA,IAC3E;AAAA;AAAA,EAEJ,SAAS,aAAa,CAAC,IAAI;AAAA,IACvB,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK;AAAA,IAChC,IAAI;AAAA,MACA,GAAG,UAAU,GAAG,UAAU,YAAY,GAAG,KAAK,aAAa,GAAG,QAAQ,KAAK;AAAA;AAAA,EAEnF,SAAS,gBAAgB,CAAC,IAAI;AAAA,IAC1B,IAAI,GAAG,OAAO,UAAU,CAAC,GAAG,UAAU;AAAA,MAClC,MAAM,IAAI,MAAM,6BAA6B;AAAA;AAAA,EAErD,SAAS,cAAc,GAAG,KAAK,WAAW,QAAQ,eAAe,QAAQ;AAAA,IACrE,MAAM,MAAM,OAAO;AAAA,IACnB,IAAI,KAAK,aAAa,MAAM;AAAA,MACxB,IAAI,KAAM,IAAG,UAAU,KAAM,QAAQ,QAAQ,mBAAmB,MAAM;AAAA,IAC1E,EACK,SAAI,OAAO,KAAK,YAAY,YAAY;AAAA,MACzC,MAAM,aAAc,IAAG,UAAU,OAAQ;AAAA,MACzC,MAAM,WAAW,IAAI,WAAW,QAAQ,EAAE,KAAK,UAAU,KAAK,CAAC;AAAA,MAC/D,IAAI,KAAM,IAAG,UAAU,KAAM,QAAQ,QAAQ,sBAAsB,QAAQ,eAAe,kBAAkB;AAAA,IAChH;AAAA;AAAA,EAEJ,SAAS,aAAa,CAAC,IAAI;AAAA,IACvB,QAAQ,KAAK,WAAW,cAAc,iBAAiB,SAAS;AAAA,IAChE,IAAI,UAAU,QAAQ;AAAA,MAElB,IAAI,GAAI,IAAG,UAAU,KAAM,QAAQ,QAAQ,gBAAgB,MAAM,IAAI,OAAO,QAAQ,QAAQ,IAAI,GAAG,MAAM,IAAI,MAAO,IAAG,UAAU,SAAU,mBAAmB,QAAQ,QAAQ,UAAU,CAAC;AAAA,IAC7L,EACK;AAAA,MACD,IAAI,OAAQ,IAAG,UAAU,KAAM,uBAAuB,QAAQ,QAAQ,OAAO;AAAA,MAC7E,IAAI,KAAK;AAAA,QACL,gBAAgB,EAAE;AAAA,MACtB,IAAI,OAAQ,IAAG,UAAU,KAAM,QAAQ,QAAQ,cAAc;AAAA;AAAA;AAAA,EAGrE,SAAS,eAAe,GAAG,KAAK,WAAW,OAAO,SAAS;AAAA,IACvD,IAAI,iBAAiB,UAAU;AAAA,MAC3B,IAAI,OAAQ,IAAG,UAAU,KAAM,mBAAmB,KAAK;AAAA,IAC3D,IAAI,iBAAiB,UAAU;AAAA,MAC3B,IAAI,OAAQ,IAAG,UAAU,KAAM,mBAAmB,KAAK;AAAA;AAAA,EAE/D,SAAS,cAAc,CAAC,IAAI,OAAO,YAAY,WAAW;AAAA,IACtD,QAAQ,KAAK,QAAQ,MAAM,WAAW,MAAM,SAAS;AAAA,IACrD,QAAQ,UAAU;AAAA,IAClB,IAAI,OAAO,SAAS,KAAK,yBAAyB,EAAE,GAAG,OAAO,sBAAsB,QAAQ,KAAK,IAAI;AAAA,MACjG,IAAI,MAAM,MAAM,YAAY,IAAI,QAAQ,MAAM,IAAI,KAAK,UAAU,CAAC;AAAA,MAClE;AAAA,IACJ;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,iBAAiB,IAAI,KAAK;AAAA,IAC9B,IAAI,MAAM,MAAM;AAAA,MACZ,WAAW,SAAS,MAAM;AAAA,QACtB,cAAc,KAAK;AAAA,MACvB,cAAc,MAAM,IAAI;AAAA,KAC3B;AAAA,IACD,SAAS,aAAa,CAAC,OAAO;AAAA,MAC1B,IAAI,EAAE,GAAG,gBAAgB,gBAAgB,QAAQ,KAAK;AAAA,QAClD;AAAA,MACJ,IAAI,MAAM,MAAM;AAAA,QACZ,IAAI,IAAI,GAAG,WAAW,eAAe,MAAM,MAAM,MAAM,KAAK,aAAa,CAAC;AAAA,QAC1E,gBAAgB,IAAI,KAAK;AAAA,QACzB,IAAI,MAAM,WAAW,KAAK,MAAM,OAAO,MAAM,QAAQ,YAAY;AAAA,UAC7D,IAAI,KAAK;AAAA,WACR,GAAG,WAAW,iBAAiB,EAAE;AAAA,QACtC;AAAA,QACA,IAAI,MAAM;AAAA,MACd,EACK;AAAA,QACD,gBAAgB,IAAI,KAAK;AAAA;AAAA,MAG7B,IAAI,CAAC;AAAA,QACD,IAAI,GAAI,IAAG,UAAU,KAAM,QAAQ,QAAQ,cAAc,aAAa,GAAG;AAAA;AAAA;AAAA,EAGrF,SAAS,eAAe,CAAC,IAAI,OAAO;AAAA,IAChC,QAAQ,KAAK,QAAQ,QAAQ,kBAAmB;AAAA,IAChD,IAAI;AAAA,OACC,GAAG,WAAW,gBAAgB,IAAI,MAAM,IAAI;AAAA,IACjD,IAAI,MAAM,MAAM;AAAA,MACZ,WAAW,QAAQ,MAAM,OAAO;AAAA,QAC5B,KAAK,GAAG,gBAAgB,eAAe,QAAQ,IAAI,GAAG;AAAA,UAClD,YAAY,IAAI,KAAK,SAAS,KAAK,YAAY,MAAM,IAAI;AAAA,QAC7D;AAAA,MACJ;AAAA,KACH;AAAA;AAAA,EAEL,SAAS,gBAAgB,CAAC,IAAI,OAAO;AAAA,IACjC,IAAI,GAAG,UAAU,QAAQ,CAAC,GAAG,KAAK;AAAA,MAC9B;AAAA,IACJ,kBAAkB,IAAI,KAAK;AAAA,IAC3B,IAAI,CAAC,GAAG,KAAK;AAAA,MACT,mBAAmB,IAAI,KAAK;AAAA,IAChC,kBAAkB,IAAI,GAAG,SAAS;AAAA;AAAA,EAEtC,SAAS,iBAAiB,CAAC,IAAI,OAAO;AAAA,IAClC,IAAI,CAAC,MAAM;AAAA,MACP;AAAA,IACJ,IAAI,CAAC,GAAG,UAAU,QAAQ;AAAA,MACtB,GAAG,YAAY;AAAA,MACf;AAAA,IACJ;AAAA,IACA,MAAM,QAAQ,CAAC,MAAM;AAAA,MACjB,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG;AAAA,QAChC,iBAAiB,IAAI,SAAS,8BAA8B,GAAG,UAAU,KAAK,GAAG,IAAI;AAAA,MACzF;AAAA,KACH;AAAA,IACD,kBAAkB,IAAI,KAAK;AAAA;AAAA,EAE/B,SAAS,kBAAkB,CAAC,IAAI,IAAI;AAAA,IAChC,IAAI,GAAG,SAAS,KAAK,EAAE,GAAG,WAAW,KAAK,GAAG,SAAS,MAAM,IAAI;AAAA,MAC5D,iBAAiB,IAAI,iDAAiD;AAAA,IAC1E;AAAA;AAAA,EAEJ,SAAS,iBAAiB,CAAC,IAAI,IAAI;AAAA,IAC/B,MAAM,QAAQ,GAAG,KAAK,MAAM;AAAA,IAC5B,WAAW,WAAW,OAAO;AAAA,MACzB,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,OAAO,QAAQ,aAAa,GAAG,gBAAgB,eAAe,GAAG,QAAQ,IAAI,GAAG;AAAA,QAChF,QAAQ,SAAS,KAAK;AAAA,QACtB,IAAI,KAAK,UAAU,CAAC,KAAK,KAAK,CAAC,MAAM,kBAAkB,IAAI,CAAC,CAAC,GAAG;AAAA,UAC5D,iBAAiB,IAAI,iBAAiB,KAAK,KAAK,GAAG,mBAAmB,UAAU;AAAA,QACpF;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EAEJ,SAAS,iBAAiB,CAAC,OAAO,MAAM;AAAA,IACpC,OAAO,MAAM,SAAS,IAAI,KAAM,SAAS,YAAY,MAAM,SAAS,SAAS;AAAA;AAAA,EAEjF,SAAS,YAAY,CAAC,IAAI,GAAG;AAAA,IACzB,OAAO,GAAG,SAAS,CAAC,KAAM,MAAM,aAAa,GAAG,SAAS,QAAQ;AAAA;AAAA,EAErE,SAAS,iBAAiB,CAAC,IAAI,WAAW;AAAA,IACtC,MAAM,KAAK,CAAC;AAAA,IACZ,WAAW,KAAK,GAAG,WAAW;AAAA,MAC1B,IAAI,aAAa,WAAW,CAAC;AAAA,QACzB,GAAG,KAAK,CAAC;AAAA,MACR,SAAI,UAAU,SAAS,SAAS,KAAK,MAAM;AAAA,QAC5C,GAAG,KAAK,SAAS;AAAA,IACzB;AAAA,IACA,GAAG,YAAY;AAAA;AAAA,EAEnB,SAAS,gBAAgB,CAAC,IAAI,KAAK;AAAA,IAC/B,MAAM,aAAa,GAAG,UAAU,SAAS,GAAG;AAAA,IAC5C,OAAO,QAAQ;AAAA,KACd,GAAG,OAAO,iBAAiB,IAAI,KAAK,GAAG,KAAK,WAAW;AAAA;AAAA;AAAA,EAE5D,MAAM,WAAW;AAAA,IACb,WAAW,CAAC,IAAI,KAAK,SAAS;AAAA,OACzB,GAAG,UAAU,sBAAsB,IAAI,KAAK,OAAO;AAAA,MACpD,KAAK,MAAM,GAAG;AAAA,MACd,KAAK,YAAY,GAAG;AAAA,MACpB,KAAK,UAAU;AAAA,MACf,KAAK,OAAO,GAAG;AAAA,MACf,KAAK,SAAS,GAAG,OAAO;AAAA,MACxB,KAAK,QAAQ,IAAI,SAAS,GAAG,KAAK,SAAS,KAAK,UAAU,KAAK,OAAO;AAAA,MACtE,KAAK,eAAe,GAAG,OAAO,gBAAgB,IAAI,KAAK,QAAQ,SAAS,KAAK,KAAK;AAAA,MAClF,KAAK,aAAa,IAAI;AAAA,MACtB,KAAK,eAAe,GAAG;AAAA,MACvB,KAAK,SAAS,CAAC;AAAA,MACf,KAAK,KAAK;AAAA,MACV,KAAK,MAAM;AAAA,MACX,IAAI,KAAK,OAAO;AAAA,QACZ,KAAK,aAAa,GAAG,IAAI,MAAM,WAAW,QAAQ,KAAK,OAAO,EAAE,CAAC;AAAA,MACrE,EACK;AAAA,QACD,KAAK,aAAa,KAAK;AAAA,QACvB,IAAI,EAAE,GAAG,UAAU,iBAAiB,KAAK,QAAQ,IAAI,YAAY,IAAI,cAAc,GAAG;AAAA,UAClF,MAAM,IAAI,MAAM,GAAG,yBAAyB,KAAK,UAAU,IAAI,UAAU,GAAG;AAAA,QAChF;AAAA;AAAA,MAEJ,IAAI,UAAU,MAAM,IAAI,cAAc,IAAI,WAAW,OAAO;AAAA,QACxD,KAAK,YAAY,GAAG,IAAI,MAAM,SAAS,QAAQ,QAAQ,MAAM;AAAA,MACjE;AAAA;AAAA,IAEJ,MAAM,CAAC,WAAW,eAAe,YAAY;AAAA,MACzC,KAAK,YAAY,GAAG,UAAU,KAAK,SAAS,GAAG,eAAe,UAAU;AAAA;AAAA,IAE5E,UAAU,CAAC,WAAW,eAAe,YAAY;AAAA,MAC7C,KAAK,IAAI,GAAG,SAAS;AAAA,MACrB,IAAI;AAAA,QACA,WAAW;AAAA,MAEX;AAAA,aAAK,MAAM;AAAA,MACf,IAAI,eAAe;AAAA,QACf,KAAK,IAAI,KAAK;AAAA,QACd,cAAc;AAAA,QACd,IAAI,KAAK;AAAA,UACL,KAAK,IAAI,MAAM;AAAA,MACvB,EACK;AAAA,QACD,IAAI,KAAK;AAAA,UACL,KAAK,IAAI,MAAM;AAAA,QAEf;AAAA,eAAK,IAAI,KAAK;AAAA;AAAA;AAAA,IAG1B,IAAI,CAAC,WAAW,YAAY;AAAA,MACxB,KAAK,YAAY,GAAG,UAAU,KAAK,SAAS,GAAG,WAAW,UAAU;AAAA;AAAA,IAExE,IAAI,CAAC,WAAW;AAAA,MACZ,IAAI,cAAc,WAAW;AAAA,QACzB,KAAK,MAAM;AAAA,QACX,IAAI,CAAC,KAAK;AAAA,UACN,KAAK,IAAI,GAAG,KAAK;AAAA,QACrB;AAAA,MACJ;AAAA,MACA,KAAK,IAAI,GAAG,SAAS;AAAA,MACrB,KAAK,MAAM;AAAA,MACX,IAAI,KAAK;AAAA,QACL,KAAK,IAAI,MAAM;AAAA,MAEf;AAAA,aAAK,IAAI,KAAK;AAAA;AAAA,IAEtB,SAAS,CAAC,WAAW;AAAA,MACjB,IAAI,CAAC,KAAK;AAAA,QACN,OAAO,KAAK,KAAK,SAAS;AAAA,MAC9B,QAAQ,eAAe;AAAA,MACvB,KAAK,KAAM,IAAG,UAAU,KAAM,iCAAiC,GAAG,UAAU,IAAI,KAAK,aAAa,GAAG,SAAS,IAAI;AAAA;AAAA,IAEtH,KAAK,CAAC,QAAQ,aAAa,YAAY;AAAA,MACnC,IAAI,aAAa;AAAA,QACb,KAAK,UAAU,WAAW;AAAA,QAC1B,KAAK,OAAO,QAAQ,UAAU;AAAA,QAC9B,KAAK,UAAU,CAAC,CAAC;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,KAAK,OAAO,QAAQ,UAAU;AAAA;AAAA,IAElC,MAAM,CAAC,QAAQ,YAAY;AAAA,OAEtB,SAAS,SAAS,mBAAmB,SAAS,aAAa,MAAM,KAAK,IAAI,OAAO,UAAU;AAAA;AAAA,IAEhG,UAAU,GAAG;AAAA,OACR,GAAG,SAAS,aAAa,MAAM,KAAK,IAAI,cAAc,SAAS,iBAAiB;AAAA;AAAA,IAErF,KAAK,GAAG;AAAA,MACJ,IAAI,KAAK,cAAc;AAAA,QACnB,MAAM,IAAI,MAAM,yCAAyC;AAAA,OAC5D,GAAG,SAAS,kBAAkB,KAAK,KAAK,KAAK,SAAS;AAAA;AAAA,IAE3D,EAAE,CAAC,MAAM;AAAA,MACL,IAAI,CAAC,KAAK;AAAA,QACN,KAAK,IAAI,GAAG,IAAI;AAAA;AAAA,IAExB,SAAS,CAAC,KAAK,QAAQ;AAAA,MACnB,IAAI;AAAA,QACA,OAAO,OAAO,KAAK,QAAQ,GAAG;AAAA,MAE9B;AAAA,aAAK,SAAS;AAAA;AAAA,IAEtB,UAAU,CAAC,OAAO,WAAW,aAAa,UAAU,KAAK;AAAA,MACrD,KAAK,IAAI,MAAM,MAAM;AAAA,QACjB,KAAK,WAAW,OAAO,UAAU;AAAA,QACjC,UAAU;AAAA,OACb;AAAA;AAAA,IAEL,UAAU,CAAC,QAAQ,UAAU,KAAK,aAAa,UAAU,KAAK;AAAA,MAC1D,IAAI,CAAC,KAAK;AAAA,QACN;AAAA,MACJ,QAAQ,KAAK,YAAY,YAAY,QAAQ;AAAA,MAC7C,IAAI,IAAI,GAAG,UAAU,IAAK,IAAG,UAAU,KAAM,4BAA4B,UAAU,CAAC;AAAA,MACpF,IAAI,UAAU,UAAU;AAAA,QACpB,IAAI,OAAO,OAAO,IAAI;AAAA,MAC1B,IAAI,WAAW,UAAU,IAAI,gBAAgB;AAAA,QACzC,IAAI,OAAO,KAAK,aAAa,CAAC;AAAA,QAC9B,KAAK,WAAW;AAAA,QAChB,IAAI,UAAU,UAAU;AAAA,UACpB,IAAI,OAAO,OAAO,KAAK;AAAA,MAC/B;AAAA,MACA,IAAI,KAAK;AAAA;AAAA,IAEb,YAAY,GAAG;AAAA,MACX,QAAQ,KAAK,YAAY,YAAY,KAAK,OAAO;AAAA,MACjD,QAAQ,GAAG,UAAU,IAAI,eAAe,GAAG,mBAAmB,CAAC;AAAA,MAC/D,SAAS,cAAc,GAAG;AAAA,QACtB,IAAI,WAAW,QAAQ;AAAA,UAEnB,IAAI,EAAE,sBAAsB,UAAU;AAAA,YAClC,MAAM,IAAI,MAAM,0BAA0B;AAAA,UAC9C,MAAM,KAAK,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;AAAA,UAC/D,OAAQ,IAAG,UAAU,MAAO,GAAG,WAAW,gBAAgB,IAAI,YAAY,GAAG,KAAK,eAAe,WAAW,SAAS,KAAK;AAAA,QAC9H;AAAA,QACA,OAAO,UAAU;AAAA;AAAA,MAErB,SAAS,kBAAkB,GAAG;AAAA,QAC1B,IAAI,IAAI,gBAAgB;AAAA,UACpB,MAAM,oBAAoB,IAAI,WAAW,iBAAiB,EAAE,KAAK,IAAI,eAAe,CAAC;AAAA,UACrF,OAAQ,IAAG,UAAU,MAAO,qBAAqB;AAAA,QACrD;AAAA,QACA,OAAO,UAAU;AAAA;AAAA;AAAA,IAGzB,SAAS,CAAC,MAAM,OAAO;AAAA,MACnB,MAAM,aAAa,GAAG,YAAY,cAAc,KAAK,IAAI,IAAI;AAAA,OAC5D,GAAG,YAAY,qBAAqB,WAAW,KAAK,IAAI,IAAI;AAAA,OAC5D,GAAG,YAAY,qBAAqB,WAAW,IAAI;AAAA,MACpD,MAAM,cAAc,KAAK,KAAK,OAAO,WAAW,OAAO,WAAW,OAAO,UAAU;AAAA,MACnF,cAAc,aAAa,KAAK;AAAA,MAChC,OAAO;AAAA;AAAA,IAEX,cAAc,CAAC,WAAW,QAAQ;AAAA,MAC9B,QAAQ,IAAI,QAAQ;AAAA,MACpB,IAAI,CAAC,GAAG,KAAK;AAAA,QACT;AAAA,MACJ,IAAI,GAAG,UAAU,QAAQ,UAAU,UAAU,WAAW;AAAA,QACpD,GAAG,QAAQ,OAAO,eAAe,MAAM,KAAK,UAAU,OAAO,GAAG,OAAO,MAAM;AAAA,MACjF;AAAA,MACA,IAAI,GAAG,UAAU,QAAQ,UAAU,UAAU,WAAW;AAAA,QACpD,GAAG,QAAQ,OAAO,eAAe,MAAM,KAAK,UAAU,OAAO,GAAG,OAAO,MAAM;AAAA,MACjF;AAAA;AAAA,IAEJ,mBAAmB,CAAC,WAAW,OAAO;AAAA,MAClC,QAAQ,IAAI,QAAQ;AAAA,MACpB,IAAI,GAAG,KAAK,gBAAgB,GAAG,UAAU,QAAQ,GAAG,UAAU,OAAO;AAAA,QACjE,IAAI,GAAG,OAAO,MAAM,KAAK,eAAe,WAAW,UAAU,IAAI,CAAC;AAAA,QAClE,OAAO;AAAA,MACX;AAAA;AAAA,EAER;AAAA,EACQ,qBAAa;AAAA,EACrB,SAAS,WAAW,CAAC,IAAI,SAAS,KAAK,UAAU;AAAA,IAC7C,MAAM,MAAM,IAAI,WAAW,IAAI,KAAK,OAAO;AAAA,IAC3C,IAAI,UAAU,KAAK;AAAA,MACf,IAAI,KAAK,KAAK,QAAQ;AAAA,IAC1B,EACK,SAAI,IAAI,SAAS,IAAI,UAAU;AAAA,OAC/B,GAAG,UAAU,iBAAiB,KAAK,GAAG;AAAA,IAC3C,EACK,SAAI,WAAW,KAAK;AAAA,OACpB,GAAG,UAAU,kBAAkB,KAAK,GAAG;AAAA,IAC5C,EACK,SAAI,IAAI,WAAW,IAAI,UAAU;AAAA,OACjC,GAAG,UAAU,iBAAiB,KAAK,GAAG;AAAA,IAC3C;AAAA;AAAA,EAEJ,IAAM,eAAe;AAAA,EACrB,IAAM,wBAAwB;AAAA,EAC9B,SAAS,OAAO,CAAC,SAAS,WAAW,WAAW,eAAe;AAAA,IAC3D,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI,UAAU;AAAA,MACV,OAAO,QAAQ,QAAQ;AAAA,IAC3B,IAAI,MAAM,OAAO,KAAK;AAAA,MAClB,IAAI,CAAC,aAAa,KAAK,KAAK;AAAA,QACxB,MAAM,IAAI,MAAM,yBAAyB,OAAO;AAAA,MACpD,cAAc;AAAA,MACd,OAAO,QAAQ,QAAQ;AAAA,IAC3B,EACK;AAAA,MACD,MAAM,UAAU,sBAAsB,KAAK,KAAK;AAAA,MAChD,IAAI,CAAC;AAAA,QACD,MAAM,IAAI,MAAM,yBAAyB,OAAO;AAAA,MACpD,MAAM,KAAK,CAAC,QAAQ;AAAA,MACpB,cAAc,QAAQ;AAAA,MACtB,IAAI,gBAAgB,KAAK;AAAA,QACrB,IAAI,MAAM;AAAA,UACN,MAAM,IAAI,MAAM,SAAS,kBAAkB,EAAE,CAAC;AAAA,QAClD,OAAO,YAAY,YAAY;AAAA,MACnC;AAAA,MACA,IAAI,KAAK;AAAA,QACL,MAAM,IAAI,MAAM,SAAS,QAAQ,EAAE,CAAC;AAAA,MACxC,OAAO,UAAU,YAAY;AAAA,MAC7B,IAAI,CAAC;AAAA,QACD,OAAO;AAAA;AAAA,IAEf,IAAI,OAAO;AAAA,IACX,MAAM,WAAW,YAAY,MAAM,GAAG;AAAA,IACtC,WAAW,WAAW,UAAU;AAAA,MAC5B,IAAI,SAAS;AAAA,QACT,OAAQ,IAAG,UAAU,KAAM,QAAQ,GAAG,UAAU,cAAc,GAAG,OAAO,qBAAqB,OAAO,CAAC;AAAA,QACrG,OAAQ,IAAG,UAAU,KAAM,WAAW;AAAA,MAC1C;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,IACP,SAAS,QAAQ,CAAC,aAAa,IAAI;AAAA,MAC/B,OAAO,iBAAiB,eAAe,kCAAkC;AAAA;AAAA;AAAA,EAGzE,kBAAU;AAAA;;;;ECrgBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA;AAAA,EAC5D,MAAM,wBAAwB,MAAM;AAAA,IAChC,WAAW,CAAC,QAAQ;AAAA,MAChB,MAAM,mBAAmB;AAAA,MACzB,KAAK,SAAS;AAAA,MACd,KAAK,MAAM,KAAK,aAAa;AAAA;AAAA,EAErC;AAAA,EACQ,kBAAU;AAAA;;;;ECRlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA;AAAA,EACN,MAAM,wBAAwB,MAAM;AAAA,IAChC,WAAW,CAAC,UAAU,QAAQ,KAAK,KAAK;AAAA,MACpC,MAAM,OAAO,2BAA2B,eAAe,QAAQ;AAAA,MAC/D,KAAK,cAAc,GAAG,UAAU,YAAY,UAAU,QAAQ,GAAG;AAAA,MACjE,KAAK,iBAAiB,GAAG,UAAU,cAAc,GAAG,UAAU,aAAa,UAAU,KAAK,UAAU,CAAC;AAAA;AAAA,EAE7G;AAAA,EACQ,kBAAU;AAAA;;;;ECTlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAwB,6BAA6B,qBAAqB,wBAAwB,oBAAiB;AAAA,EAC3H,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA;AAAA,EACN,MAAM,UAAU;AAAA,IACZ,WAAW,CAAC,KAAK;AAAA,MACb,IAAI;AAAA,MACJ,KAAK,OAAO,CAAC;AAAA,MACb,KAAK,iBAAiB,CAAC;AAAA,MACvB,IAAI;AAAA,MACJ,IAAI,OAAO,IAAI,UAAU;AAAA,QACrB,SAAS,IAAI;AAAA,MACjB,KAAK,SAAS,IAAI;AAAA,MAClB,KAAK,WAAW,IAAI;AAAA,MACpB,KAAK,OAAO,IAAI,QAAQ;AAAA,MACxB,KAAK,UAAU,KAAK,IAAI,YAAY,QAAQ,OAAY,YAAI,MAAM,GAAG,UAAU,aAAa,WAAW,QAAQ,WAAgB,YAAS,YAAI,OAAO,IAAI,YAAY,MAAM;AAAA,MACzK,KAAK,aAAa,IAAI;AAAA,MACtB,KAAK,YAAY,IAAI;AAAA,MACrB,KAAK,OAAO,IAAI;AAAA,MAChB,KAAK,SAAS,WAAW,QAAQ,WAAgB,YAAS,YAAI,OAAO;AAAA,MACrE,KAAK,OAAO,CAAC;AAAA;AAAA,EAErB;AAAA,EACQ,oBAAY;AAAA,EAIpB,SAAS,aAAa,CAAC,KAAK;AAAA,IAExB,MAAM,OAAO,mBAAmB,KAAK,MAAM,GAAG;AAAA,IAC9C,IAAI;AAAA,MACA,OAAO;AAAA,IACX,MAAM,UAAU,GAAG,UAAU,aAAa,KAAK,KAAK,aAAa,IAAI,KAAK,MAAM;AAAA,IAChF,QAAQ,KAAK,UAAU,KAAK,KAAK;AAAA,IACjC,QAAQ,kBAAkB,KAAK;AAAA,IAC/B,MAAM,MAAM,IAAI,UAAU,QAAQ,KAAK,OAAO,EAAE,KAAK,OAAO,cAAc,CAAC;AAAA,IAC3E,IAAI;AAAA,IACJ,IAAI,IAAI,QAAQ;AAAA,MACZ,mBAAmB,IAAI,WAAW,SAAS;AAAA,QACvC,KAAK,mBAAmB;AAAA,QACxB,MAAO,IAAG,UAAU;AAAA,MACxB,CAAC;AAAA,IACL;AAAA,IACA,MAAM,eAAe,IAAI,UAAU,UAAU;AAAA,IAC7C,IAAI,eAAe;AAAA,IACnB,MAAM,YAAY;AAAA,MACd;AAAA,MACA,WAAW,KAAK,KAAK;AAAA,MACrB,MAAM,QAAQ,QAAQ;AAAA,MACtB,YAAY,QAAQ,QAAQ;AAAA,MAC5B,oBAAoB,QAAQ,QAAQ;AAAA,MACpC,WAAW,CAAC,QAAQ,QAAQ,IAAI;AAAA,MAChC,aAAa,CAAC,UAAU,GAAG;AAAA,MAC3B,WAAW;AAAA,MACX,WAAW,CAAC;AAAA,MACZ,mBAAmB,IAAI;AAAA,MACvB,cAAc,IAAI,WAAW,UAAU,KAAK,KAAK,KAAK,WAAW,OAC3D,EAAE,KAAK,IAAI,QAAQ,OAAO,GAAG,UAAU,WAAW,IAAI,MAAM,EAAE,IAC9D,EAAE,KAAK,IAAI,OAAO,CAAC;AAAA,MACzB;AAAA,MACA,iBAAiB;AAAA,MACjB,QAAQ,IAAI;AAAA,MACZ,WAAW;AAAA,MACX;AAAA,MACA,QAAQ,IAAI,UAAU;AAAA,MACtB,YAAY,UAAU;AAAA,MACtB,eAAe,IAAI,eAAe,KAAK,KAAK,MAAM,KAAK;AAAA,MACvD,WAAY,IAAG,UAAU;AAAA,MACzB,MAAM,KAAK;AAAA,MACX,MAAM;AAAA,IACV;AAAA,IACA,IAAI;AAAA,IACJ,IAAI;AAAA,MACA,KAAK,cAAc,IAAI,GAAG;AAAA,OACzB,GAAG,WAAW,sBAAsB,SAAS;AAAA,MAC9C,IAAI,SAAS,KAAK,KAAK,KAAK,QAAQ;AAAA,MAEpC,MAAM,eAAe,IAAI,SAAS;AAAA,MAClC,aAAa,GAAG,IAAI,UAAU,QAAQ,QAAQ,KAAK,WAAW;AAAA,MAE9D,IAAI,KAAK,KAAK,KAAK;AAAA,QACf,aAAa,KAAK,KAAK,KAAK,QAAQ,YAAY,GAAG;AAAA,MAEvD,MAAM,eAAe,IAAI,SAAS,GAAG,QAAQ,QAAQ,QAAQ,GAAG,QAAQ,QAAQ,SAAS,UAAU;AAAA,MACnG,MAAM,WAAW,aAAa,MAAM,KAAK,MAAM,IAAI,CAAC;AAAA,MACpD,KAAK,MAAM,MAAM,cAAc,EAAE,KAAK,SAAS,CAAC;AAAA,MAChD,SAAS,SAAS;AAAA,MAClB,SAAS,SAAS,IAAI;AAAA,MACtB,SAAS,YAAY;AAAA,MACrB,IAAI,IAAI;AAAA,QACJ,SAAS,SAAS;AAAA,MACtB,IAAI,KAAK,KAAK,KAAK,WAAW,MAAM;AAAA,QAChC,SAAS,SAAS,EAAE,cAAc,cAAc,aAAa,IAAI,QAAQ;AAAA,MAC7E;AAAA,MACA,IAAI,KAAK,KAAK,aAAa;AAAA,QACvB,QAAQ,OAAO,UAAU;AAAA,QACzB,SAAS,YAAY;AAAA,UACjB,OAAO,iBAAiB,UAAU,OAAO,YAAY;AAAA,UACrD,OAAO,iBAAiB,UAAU,OAAO,YAAY;AAAA,UACrD,cAAc,iBAAiB,UAAU;AAAA,UACzC,cAAc,iBAAiB,UAAU;AAAA,QAC7C;AAAA,QACA,IAAI,SAAS;AAAA,UACT,SAAS,OAAO,aAAa,GAAG,UAAU,WAAW,SAAS,SAAS;AAAA,MAC/E;AAAA,MACA,IAAI,WAAW;AAAA,MACf,OAAO;AAAA,MAEX,OAAO,GAAG;AAAA,MACN,OAAO,IAAI;AAAA,MACX,OAAO,IAAI;AAAA,MACX,IAAI;AAAA,QACA,KAAK,OAAO,MAAM,0CAA0C,UAAU;AAAA,MAE1E,MAAM;AAAA,cAEV;AAAA,MACI,KAAK,cAAc,OAAO,GAAG;AAAA;AAAA;AAAA,EAG7B,wBAAgB;AAAA,EACxB,SAAS,UAAU,CAAC,MAAM,QAAQ,KAAK;AAAA,IACnC,IAAI;AAAA,IACJ,OAAO,GAAG,UAAU,YAAY,KAAK,KAAK,aAAa,QAAQ,GAAG;AAAA,IAClE,MAAM,YAAY,KAAK,KAAK;AAAA,IAC5B,IAAI;AAAA,MACA,OAAO;AAAA,IACX,IAAI,OAAO,QAAQ,KAAK,MAAM,MAAM,GAAG;AAAA,IACvC,IAAI,SAAS,WAAW;AAAA,MACpB,MAAM,UAAU,KAAK,KAAK,eAAe,QAAQ,OAAY,YAAS,YAAI,GAAG;AAAA,MAC7E,QAAQ,aAAa,KAAK;AAAA,MAC1B,IAAI;AAAA,QACA,OAAO,IAAI,UAAU,EAAE,QAAQ,UAAU,MAAM,OAAO,CAAC;AAAA,IAC/D;AAAA,IACA,IAAI,SAAS;AAAA,MACT;AAAA,IACJ,OAAQ,KAAK,KAAK,OAAO,gBAAgB,KAAK,MAAM,IAAI;AAAA;AAAA,EAEpD,qBAAa;AAAA,EACrB,SAAS,eAAe,CAAC,KAAK;AAAA,IAC1B,KAAK,GAAG,UAAU,WAAW,IAAI,QAAQ,KAAK,KAAK,UAAU;AAAA,MACzD,OAAO,IAAI;AAAA,IACf,OAAO,IAAI,WAAW,MAAM,cAAc,KAAK,MAAM,GAAG;AAAA;AAAA,EAG5D,SAAS,kBAAkB,CAAC,QAAQ;AAAA,IAChC,WAAW,OAAO,KAAK,eAAe;AAAA,MAClC,IAAI,cAAc,KAAK,MAAM;AAAA,QACzB,OAAO;AAAA,IACf;AAAA;AAAA,EAEI,6BAAqB;AAAA,EAC7B,SAAS,aAAa,CAAC,IAAI,IAAI;AAAA,IAC3B,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG;AAAA;AAAA,EAI9E,SAAS,OAAO,CAAC,MACjB,KACE;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,QAAQ,MAAM,KAAK,KAAK,SAAS;AAAA,MACpC,MAAM;AAAA,IACV,OAAO,OAAO,KAAK,QAAQ,QAAQ,cAAc,KAAK,MAAM,MAAM,GAAG;AAAA;AAAA,EAGzE,SAAS,aAAa,CAAC,MACvB,KACE;AAAA,IACE,MAAM,IAAI,KAAK,KAAK,YAAY,MAAM,GAAG;AAAA,IACzC,MAAM,WAAW,GAAG,UAAU,cAAc,KAAK,KAAK,aAAa,CAAC;AAAA,IACpE,IAAI,UAAU,GAAG,UAAU,aAAa,KAAK,KAAK,aAAa,KAAK,QAAQ,SAAS;AAAA,IAErF,IAAI,OAAO,KAAK,KAAK,MAAM,EAAE,SAAS,KAAK,YAAY,QAAQ;AAAA,MAC3D,OAAO,eAAe,KAAK,MAAM,GAAG,IAAI;AAAA,IAC5C;AAAA,IACA,MAAM,MAAM,GAAG,UAAU,aAAa,OAAO;AAAA,IAC7C,MAAM,WAAW,KAAK,KAAK,OAAO,KAAK,QAAQ;AAAA,IAC/C,IAAI,OAAO,YAAY,UAAU;AAAA,MAC7B,MAAM,MAAM,cAAc,KAAK,MAAM,MAAM,QAAQ;AAAA,MACnD,IAAI,QAAQ,QAAQ,QAAQ,QAAa,YAAS,YAAI,IAAI,YAAY;AAAA,QAClE;AAAA,MACJ,OAAO,eAAe,KAAK,MAAM,GAAG,GAAG;AAAA,IAC3C;AAAA,IACA,IAAI,QAAQ,aAAa,QAAQ,aAAkB,YAAS,YAAI,SAAS,YAAY;AAAA,MACjF;AAAA,IACJ,IAAI,CAAC,SAAS;AAAA,MACV,cAAc,KAAK,MAAM,QAAQ;AAAA,IACrC,IAAI,QAAQ,GAAG,UAAU,aAAa,GAAG,GAAG;AAAA,MACxC,QAAQ,WAAW;AAAA,MACnB,QAAQ,aAAa,KAAK;AAAA,MAC1B,MAAM,QAAQ,OAAO;AAAA,MACrB,IAAI;AAAA,QACA,UAAU,GAAG,UAAU,YAAY,KAAK,KAAK,aAAa,QAAQ,KAAK;AAAA,MAC3E,OAAO,IAAI,UAAU,EAAE,QAAQ,UAAU,MAAM,OAAO,CAAC;AAAA,IAC3D;AAAA,IACA,OAAO,eAAe,KAAK,MAAM,GAAG,QAAQ;AAAA;AAAA,EAExC,wBAAgB;AAAA,EACxB,IAAM,uBAAuB,IAAI,IAAI;AAAA,IACjC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAAA,EACD,SAAS,cAAc,CAAC,aAAa,QAAQ,QAAQ,QAAQ;AAAA,IACzD,IAAI;AAAA,IACJ,MAAM,KAAK,UAAU,cAAc,QAAQ,OAAY,YAAS,YAAI,GAAG,QAAQ;AAAA,MAC3E;AAAA,IACJ,WAAW,QAAQ,UAAU,SAAS,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG;AAAA,MACvD,IAAI,OAAO,WAAW;AAAA,QAClB;AAAA,MACJ,MAAM,aAAa,OAAQ,IAAG,OAAO,kBAAkB,IAAI;AAAA,MAC3D,IAAI,eAAe;AAAA,QACf;AAAA,MACJ,SAAS;AAAA,MAET,MAAM,QAAQ,OAAO,WAAW,YAAY,OAAO,KAAK,KAAK;AAAA,MAC7D,IAAI,CAAC,qBAAqB,IAAI,IAAI,KAAK,OAAO;AAAA,QAC1C,UAAU,GAAG,UAAU,YAAY,KAAK,KAAK,aAAa,QAAQ,KAAK;AAAA,MAC3E;AAAA,IACJ;AAAA,IACA,IAAI;AAAA,IACJ,IAAI,OAAO,UAAU,aAAa,OAAO,QAAQ,EAAE,GAAG,OAAO,sBAAsB,QAAQ,KAAK,KAAK,GAAG;AAAA,MACpG,MAAM,QAAQ,GAAG,UAAU,YAAY,KAAK,KAAK,aAAa,QAAQ,OAAO,IAAI;AAAA,MACjF,MAAM,cAAc,KAAK,MAAM,MAAM,IAAI;AAAA,IAC7C;AAAA,IAGA,QAAQ,aAAa,KAAK;AAAA,IAC1B,MAAM,OAAO,IAAI,UAAU,EAAE,QAAQ,UAAU,MAAM,OAAO,CAAC;AAAA,IAC7D,IAAI,IAAI,WAAW,IAAI,KAAK;AAAA,MACxB,OAAO;AAAA,IACX;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;EC5OJ,IAAM,SAAS,OAAO,UAAU,KAAK,KAAK,6DAA6D;AAAA,EAGvG,IAAM,SAAS,OAAO,UAAU,KAAK,KAAK,0FAA0F;AAAA,EAGpI,IAAM,YAAY,OAAO,UAAU,KAAK,KAAK,gBAAgB;AAAA,EAG7D,IAAM,eAAe,OAAO,UAAU,KAAK,KAAK,kBAAkB;AAAA,EAGlE,IAAM,kBAAkB,OAAO,UAAU,KAAK,KAAK,gCAAgC;AAAA,EAMnF,SAAS,wBAAyB,CAAC,OAAO;AAAA,IACxC,IAAI,MAAM;AAAA,IACV,IAAI,OAAO;AAAA,IACX,IAAI,IAAI;AAAA,IAER,KAAK,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MACjC,OAAO,MAAM,GAAG,WAAW,CAAC;AAAA,MAC5B,IAAI,SAAS,IAAI;AAAA,QACf;AAAA,MACF;AAAA,MACA,IAAI,EAAG,QAAQ,MAAM,QAAQ,MAAQ,QAAQ,MAAM,QAAQ,MAAQ,QAAQ,MAAM,QAAQ,MAAO;AAAA,QAC9F,OAAO;AAAA,MACT;AAAA,MACA,OAAO,MAAM;AAAA,MACb;AAAA,IACF;AAAA,IAEA,KAAK,KAAK,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MAClC,OAAO,MAAM,GAAG,WAAW,CAAC;AAAA,MAC5B,IAAI,EAAG,QAAQ,MAAM,QAAQ,MAAQ,QAAQ,MAAM,QAAQ,MAAQ,QAAQ,MAAM,QAAQ,MAAO;AAAA,QAC9F,OAAO;AAAA,MACT;AAAA,MACA,OAAO,MAAM;AAAA,IACf;AAAA,IACA,OAAO;AAAA;AAAA,EAcT,IAAM,kBAAkB,OAAO,UAAU,KAAK,KAAK,6BAA6B;AAAA,EAMhF,SAAS,aAAc,CAAC,QAAQ;AAAA,IAC9B,OAAO,SAAS;AAAA,IAChB,OAAO;AAAA;AAAA,EAST,SAAS,cAAe,CAAC,QAAQ,SAAS,QAAQ;AAAA,IAChD,IAAI,OAAO,QAAQ;AAAA,MACjB,MAAM,MAAM,yBAAyB,MAAM;AAAA,MAC3C,IAAI,QAAQ,IAAI;AAAA,QACd,QAAQ,KAAK,GAAG;AAAA,MAClB,EAAO;AAAA,QACL,OAAO,QAAQ;AAAA,QACf,OAAO;AAAA;AAAA,MAET,OAAO,SAAS;AAAA,IAClB;AAAA,IACA,OAAO;AAAA;AAAA,EAOT,SAAS,OAAQ,CAAC,OAAO;AAAA,IACvB,IAAI,aAAa;AAAA,IACjB,MAAM,SAAS,EAAE,OAAO,OAAO,SAAS,IAAI,MAAM,GAAG;AAAA,IAErD,MAAM,UAAU,CAAC;AAAA,IAEjB,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,qBAAqB;AAAA,IACzB,IAAI,UAAU;AAAA,IAEd,IAAI,UAAU;AAAA,IAEd,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MACrC,MAAM,SAAS,MAAM;AAAA,MACrB,IAAI,WAAW,OAAO,WAAW,KAAK;AAAA,QAAE;AAAA,MAAS;AAAA,MACjD,IAAI,WAAW,KAAK;AAAA,QAClB,IAAI,uBAAuB,MAAM;AAAA,UAC/B,UAAU;AAAA,QACZ;AAAA,QACA,IAAI,CAAC,QAAQ,QAAQ,SAAS,MAAM,GAAG;AAAA,UAAE;AAAA,QAAM;AAAA,QAC/C,IAAI,EAAE,aAAa,GAAG;AAAA,UAEpB,OAAO,QAAQ;AAAA,UACf;AAAA,QACF;AAAA,QACA,IAAI,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK;AAAA,UACjC,qBAAqB;AAAA,QACvB;AAAA,QACA,QAAQ,KAAK,GAAG;AAAA,QAChB;AAAA,MACF,EAAO,SAAI,WAAW,KAAK;AAAA,QACzB,IAAI,CAAC,QAAQ,QAAQ,SAAS,MAAM,GAAG;AAAA,UAAE;AAAA,QAAM;AAAA,QAE/C,UAAU;AAAA,MACZ,EAAO;AAAA,QACL,OAAO,KAAK,MAAM;AAAA,QAClB;AAAA;AAAA,IAEJ;AAAA,IACA,IAAI,OAAO,QAAQ;AAAA,MACjB,IAAI,YAAY,eAAe;AAAA,QAC7B,OAAO,OAAO,OAAO,KAAK,EAAE;AAAA,MAC9B,EAAO,SAAI,SAAS;AAAA,QAClB,QAAQ,KAAK,OAAO,KAAK,EAAE,CAAC;AAAA,MAC9B,EAAO;AAAA,QACL,QAAQ,KAAK,yBAAyB,MAAM,CAAC;AAAA;AAAA,IAEjD;AAAA,IACA,OAAO,UAAU,QAAQ,KAAK,EAAE;AAAA,IAChC,OAAO;AAAA;AAAA,EAcT,SAAS,aAAc,CAAC,MAAM;AAAA,IAC5B,IAAI,UAAU,MAAM,GAAG,IAAI,GAAG;AAAA,MAAE,OAAO,EAAE,MAAM,QAAQ,MAAM;AAAA,IAAE;AAAA,IAC/D,MAAM,OAAO,QAAQ,IAAI;AAAA,IAEzB,IAAI,CAAC,KAAK,OAAO;AAAA,MACf,IAAI,UAAU,KAAK;AAAA,MACnB,IAAI,cAAc,KAAK;AAAA,MACvB,IAAI,KAAK,MAAM;AAAA,QACb,WAAW,MAAM,KAAK;AAAA,QACtB,eAAe,QAAQ,KAAK;AAAA,MAC9B;AAAA,MACA,OAAO,EAAE,MAAM,SAAS,QAAQ,MAAM,YAAY;AAAA,IACpD,EAAO;AAAA,MACL,OAAO,EAAE,MAAM,QAAQ,MAAM;AAAA;AAAA;AAAA,EASjC,SAAS,SAAU,CAAC,KAAK,OAAO;AAAA,IAC9B,IAAI,MAAM;AAAA,IACV,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,MACnC,IAAI,IAAI,OAAO;AAAA,QAAO;AAAA,IACxB;AAAA,IACA,OAAO;AAAA;AAAA,EAST,SAAS,iBAAkB,CAAC,MAAM;AAAA,IAChC,IAAI,QAAQ;AAAA,IACZ,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,YAAY;AAAA,IAChB,IAAI,MAAM;AAAA,IAGV,OAAO,MAAM,MAAM,QAAQ;AAAA,MACzB,IAAI,QAAQ,GAAG;AAAA,QACb,IAAI,UAAU,KAAK;AAAA,UACjB;AAAA,QACF,EAAO,SAAI,UAAU,KAAK;AAAA,UACxB,OAAO,KAAK,GAAG;AAAA,UACf;AAAA,QACF,EAAO;AAAA,UACL,OAAO,KAAK,KAAK;AAAA,UACjB;AAAA;AAAA,MAEJ,EAAO,SAAI,QAAQ,GAAG;AAAA,QACpB,IAAI,MAAM,OAAO,KAAK;AAAA,UACpB,IAAI,MAAM,OAAO,KAAK;AAAA,YACpB;AAAA,UACF,EAAO,SAAI,MAAM,OAAO,KAAK;AAAA,YAC3B,QAAQ,MAAM,MAAM,CAAC;AAAA,YACrB;AAAA,UACF;AAAA,QACF,EAAO,SAAI,MAAM,OAAO,KAAK;AAAA,UAC3B,IAAI,MAAM,OAAO,OAAO,MAAM,OAAO,KAAK;AAAA,YACxC,OAAO,KAAK,GAAG;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,MACF,EAAO,SAAI,QAAQ,GAAG;AAAA,QACpB,IAAI,UAAU,OAAO;AAAA,UACnB,IAAI,OAAO,WAAW,GAAG;AAAA,YACvB,OAAO,IAAI;AAAA,UACb;AAAA,UACA,OAAO,KAAK,GAAG;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAAA,MACA,IAAI,MAAM,OAAO,KAAK;AAAA,QACpB,IAAI,MAAM,OAAO,KAAK;AAAA,UACpB,IAAI,MAAM,OAAO,KAAK;AAAA,YACpB,QAAQ,MAAM,MAAM,CAAC;AAAA,YACrB;AAAA,UACF;AAAA,QACF,EAAO,SAAI,MAAM,OAAO,KAAK;AAAA,UAC3B,QAAQ,MAAM,MAAM,CAAC;AAAA,UACrB;AAAA,QACF;AAAA,MACF,EAAO,SAAI,MAAM,OAAO,KAAK;AAAA,QAC3B,IAAI,MAAM,OAAO,KAAK;AAAA,UACpB,IAAI,MAAM,OAAO,KAAK;AAAA,YACpB,QAAQ,MAAM,MAAM,CAAC;AAAA,YACrB;AAAA,UACF,EAAO,SAAI,MAAM,OAAO,KAAK;AAAA,YAC3B,IAAI,MAAM,OAAO,KAAK;AAAA,cACpB,QAAQ,MAAM,MAAM,CAAC;AAAA,cACrB,IAAI,OAAO,WAAW,GAAG;AAAA,gBACvB,OAAO,IAAI;AAAA,cACb;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAGA,KAAK,YAAY,MAAM,QAAQ,KAAK,CAAC,OAAO,IAAI;AAAA,QAC9C,OAAO,KAAK,KAAK;AAAA,QACjB;AAAA,MACF,EAAO;AAAA,QACL,OAAO,KAAK,MAAM,MAAM,GAAG,SAAS,CAAC;AAAA,QACrC,QAAQ,MAAM,MAAM,SAAS;AAAA;AAAA,IAEjC;AAAA,IAEA,OAAO,OAAO,KAAK,EAAE;AAAA;AAAA,EAavB,IAAM,cAAc,EAAE,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,MAAM;AAAA,EACjF,IAAM,gBAAgB;AAAA,EACtB,IAAM,yBAAyB;AAAA,EAE/B,SAAS,sBAAuB,CAAC,MAAM,MAAM;AAAA,IAC3C,MAAM,KAAK,OAAO,yBAAyB;AAAA,IAC3C,GAAG,YAAY;AAAA,IACf,OAAO,KAAK,QAAQ,IAAI,CAAC,OAAO,YAAY,GAAG;AAAA;AAAA,EAWjD,SAAS,wBAAyB,CAAC,OAAO,mBAAmB,OAAO;AAAA,IAClE,IAAI,MAAM,QAAQ,GAAG,MAAM,IAAI;AAAA,MAC7B,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,SAAS;AAAA,IAEb,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MACrC,IAAI,MAAM,OAAO,OAAO,IAAI,IAAI,MAAM,QAAQ;AAAA,QAC5C,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,QACpC,IAAI,UAAU,GAAG,GAAG;AAAA,UAClB,MAAM,gBAAgB,IAAI,YAAY;AAAA,UACtC,MAAM,UAAU,OAAO,aAAa,SAAS,eAAe,EAAE,CAAC;AAAA,UAE/D,IAAI,oBAAoB,aAAa,OAAO,GAAG;AAAA,YAC7C,UAAU;AAAA,UACZ,EAAO;AAAA,YACL,UAAU,MAAM;AAAA;AAAA,UAGlB,KAAK;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,MAEA,UAAU,MAAM;AAAA,IAClB;AAAA,IAEA,OAAO;AAAA;AAAA,EAWT,SAAS,qBAAsB,CAAC,OAAO;AAAA,IACrC,IAAI,SAAS;AAAA,IAEb,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MACrC,IAAI,MAAM,OAAO,OAAO,IAAI,IAAI,MAAM,QAAQ;AAAA,QAC5C,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,QACpC,IAAI,UAAU,GAAG,GAAG;AAAA,UAClB,MAAM,gBAAgB,IAAI,YAAY;AAAA,UACtC,MAAM,UAAU,OAAO,aAAa,SAAS,eAAe,EAAE,CAAC;AAAA,UAE/D,IAAI,YAAY,OAAO,aAAa,OAAO,GAAG;AAAA,YAC5C,UAAU;AAAA,UACZ,EAAO;AAAA,YACL,UAAU,MAAM;AAAA;AAAA,UAGlB,KAAK;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,gBAAgB,MAAM,EAAE,GAAG;AAAA,QAC7B,UAAU,MAAM;AAAA,MAClB,EAAO;AAAA,QACL,UAAU,OAAO,MAAM,EAAE;AAAA;AAAA,IAE7B;AAAA,IAEA,OAAO;AAAA;AAAA,EAST,SAAS,uBAAwB,CAAC,OAAO;AAAA,IACvC,IAAI,SAAS;AAAA,IAEb,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,MACrC,IAAI,MAAM,OAAO,OAAO,IAAI,IAAI,MAAM,QAAQ;AAAA,QAC5C,MAAM,MAAM,MAAM,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,QACpC,IAAI,UAAU,GAAG,GAAG;AAAA,UAClB,UAAU,MAAM,IAAI,YAAY;AAAA,UAChC,KAAK;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,MAEA,UAAU,OAAO,MAAM,EAAE;AAAA,IAC3B;AAAA,IAEA,OAAO;AAAA;AAAA,EAOT,SAAS,kBAAmB,CAAC,WAAW;AAAA,IACtC,MAAM,YAAY,CAAC;AAAA,IAEnB,IAAI,UAAU,aAAa,WAAW;AAAA,MACpC,UAAU,KAAK,UAAU,QAAQ;AAAA,MACjC,UAAU,KAAK,GAAG;AAAA,IACpB;AAAA,IAEA,IAAI,UAAU,SAAS,WAAW;AAAA,MAChC,IAAI,OAAO,SAAS,UAAU,IAAI;AAAA,MAClC,IAAI,CAAC,OAAO,IAAI,GAAG;AAAA,QACjB,MAAM,UAAU,cAAc,IAAI;AAAA,QAClC,IAAI,QAAQ,WAAW,MAAM;AAAA,UAC3B,OAAO,IAAI,QAAQ;AAAA,QACrB,EAAO;AAAA,UACL,OAAO,uBAAuB,MAAM,KAAK;AAAA;AAAA,MAE7C;AAAA,MACA,UAAU,KAAK,IAAI;AAAA,IACrB;AAAA,IAEA,IAAI,OAAO,UAAU,SAAS,YAAY,OAAO,UAAU,SAAS,UAAU;AAAA,MAC5E,UAAU,KAAK,GAAG;AAAA,MAClB,UAAU,KAAK,OAAO,UAAU,IAAI,CAAC;AAAA,IACvC;AAAA,IAEA,OAAO,UAAU,SAAS,UAAU,KAAK,EAAE,IAAI;AAAA;AAAA,EAGjD,OAAO,UAAU;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;;;ECxbA,MAAQ;AAAA,EACR,IAAM,UAAU;AAAA,EAEhB,IAAM,uBAA6C;AAAA,IAAC;AAAA,IAAQ;AAAA,IAAS;AAAA,IACnE;AAAA,IAAO;AAAA,IAAO;AAAA,EAAU;AAAA,EAQ1B,SAAS,iBAAkB,CAAC,MAAM;AAAA,IAChC,OAAO,qBAAqB,QAA0B,IAAK,MAAM;AAAA;AAAA,EAyBnE,SAAS,UAAW,CAAC,aAAa;AAAA,IAChC,IAAI,YAAY,WAAW,MAAM;AAAA,MAC/B,OAAO;AAAA,IACT,EAAO,SAAI,YAAY,WAAW,OAAO;AAAA,MACvC,OAAO;AAAA,IACT,EAAO,SAAI,YAAY,QAAQ;AAAA,MAC7B,OACE,YAAY,OAAO,WAAW,MAC7B,YAAY,OAAO,OAAO,OAAO,YAAY,OAAO,OAAO,SAC3D,YAAY,OAAO,OAAO,OAAO,YAAY,OAAO,OAAO,SAC3D,YAAY,OAAO,OAAO,OAAO,YAAY,OAAO,OAAO;AAAA,IAEhE,EAAO;AAAA,MACL,OAAO;AAAA;AAAA;AAAA,EAKX,SAAS,SAAU,CAAC,WAAW;AAAA,IAC7B,IAAI,CAAC,UAAU,MAAM;AAAA,MACnB,UAAU,QAAQ,UAAU,SAAS;AAAA,IACvC;AAAA,IAEA,OAAO;AAAA;AAAA,EAIT,SAAS,aAAc,CAAC,WAAW;AAAA,IACjC,MAAM,SAAS,OAAO,UAAU,MAAM,EAAE,YAAY,MAAM;AAAA,IAG1D,IAAI,UAAU,UAAU,SAAS,MAAM,OAAO,UAAU,SAAS,IAAI;AAAA,MACnE,UAAU,OAAO;AAAA,IACnB;AAAA,IAGA,IAAI,CAAC,UAAU,MAAM;AAAA,MACnB,UAAU,OAAO;AAAA,IACnB;AAAA,IAMA,OAAO;AAAA;AAAA,EAIT,SAAS,OAAQ,CAAC,aAAa;AAAA,IAE7B,YAAY,SAAS,WAAW,WAAW;AAAA,IAG3C,YAAY,gBAAgB,YAAY,QAAQ,QAAQ,YAAY,QAAQ,MAAM,YAAY,QAAQ;AAAA,IACtG,YAAY,OAAO;AAAA,IACnB,YAAY,QAAQ;AAAA,IAEpB,OAAO;AAAA;AAAA,EAIT,SAAS,WAAY,CAAC,aAAa;AAAA,IAEjC,IAAI,YAAY,UAAU,WAAW,WAAW,IAAI,MAAM,OAAO,YAAY,SAAS,IAAI;AAAA,MACxF,YAAY,OAAO;AAAA,IACrB;AAAA,IAGA,IAAI,OAAO,YAAY,WAAW,WAAW;AAAA,MAC3C,YAAY,SAAU,YAAY,SAAS,QAAQ;AAAA,MACnD,YAAY,SAAS;AAAA,IACvB;AAAA,IAGA,IAAI,YAAY,cAAc;AAAA,MAC5B,OAAO,MAAM,SAAS,YAAY,aAAa,MAAM,GAAG;AAAA,MACxD,YAAY,OAAQ,QAAQ,SAAS,MAAM,OAAO;AAAA,MAClD,YAAY,QAAQ;AAAA,MACpB,YAAY,eAAe;AAAA,IAC7B;AAAA,IAGA,YAAY,WAAW;AAAA,IAEvB,OAAO;AAAA;AAAA,EAIT,SAAS,QAAS,CAAC,cAAc,SAAS;AAAA,IACxC,IAAI,CAAC,aAAa,MAAM;AAAA,MACtB,aAAa,QAAQ;AAAA,MACrB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,UAAU,aAAa,KAAK,MAAM,OAAO;AAAA,IAC/C,IAAI,SAAS;AAAA,MACX,MAAM,SAAS,QAAQ,UAAU,aAAa,UAAU;AAAA,MACxD,aAAa,MAAM,QAAQ,GAAG,YAAY;AAAA,MAC1C,aAAa,MAAM,QAAQ;AAAA,MAC3B,MAAM,YAAY,GAAG,UAAU,QAAQ,OAAO,aAAa;AAAA,MAC3D,MAAM,gBAAgB,iBAAiB,SAAS;AAAA,MAChD,aAAa,OAAO;AAAA,MAEpB,IAAI,eAAe;AAAA,QACjB,eAAe,cAAc,MAAM,cAAc,OAAO;AAAA,MAC1D;AAAA,IACF,EAAO;AAAA,MACL,aAAa,QAAQ,aAAa,SAAS;AAAA;AAAA,IAG7C,OAAO;AAAA;AAAA,EAIT,SAAS,YAAa,CAAC,cAAc,SAAS;AAAA,IAC5C,IAAI,aAAa,QAAQ,WAAW;AAAA,MAClC,MAAM,IAAI,MAAM,sCAAsC;AAAA,IACxD;AAAA,IACA,MAAM,SAAS,QAAQ,UAAU,aAAa,UAAU;AAAA,IACxD,MAAM,MAAM,aAAa,IAAI,YAAY;AAAA,IACzC,MAAM,YAAY,GAAG,UAAU,QAAQ,OAAO;AAAA,IAC9C,MAAM,gBAAgB,iBAAiB,SAAS;AAAA,IAEhD,IAAI,eAAe;AAAA,MACjB,eAAe,cAAc,UAAU,cAAc,OAAO;AAAA,IAC9D;AAAA,IAEA,MAAM,eAAe;AAAA,IACrB,MAAM,MAAM,aAAa;AAAA,IACzB,aAAa,OAAO,GAAG,OAAO,QAAQ,OAAO;AAAA,IAE7C,QAAQ,aAAa;AAAA,IACrB,OAAO;AAAA;AAAA,EAIT,SAAS,YAAa,CAAC,cAAc,SAAS;AAAA,IAC5C,MAAM,gBAAgB;AAAA,IACtB,cAAc,OAAO,cAAc;AAAA,IACnC,cAAc,MAAM;AAAA,IAEpB,IAAI,CAAC,QAAQ,aAAa,CAAC,cAAc,QAAQ,CAAC,OAAO,cAAc,IAAI,IAAI;AAAA,MAC7E,cAAc,QAAQ,cAAc,SAAS;AAAA,IAC/C;AAAA,IAEA,OAAO;AAAA;AAAA,EAIT,SAAS,gBAAiB,CAAC,eAAe;AAAA,IACxC,MAAM,eAAe;AAAA,IAErB,aAAa,OAAO,cAAc,QAAQ,IAAI,YAAY;AAAA,IAC1D,OAAO;AAAA;AAAA,EAGT,IAAM,OAAqC;AAAA,IACzC,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AAAA,EAEA,IAAM,QAAsC;AAAA,IAC1C,QAAQ;AAAA,IACR,YAAY,KAAK;AAAA,IACjB,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AAAA,EAEA,IAAM,KAAmC;AAAA,IACvC,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,WAAW;AAAA,EACb;AAAA,EAEA,IAAM,MAAoC;AAAA,IACxC,QAAQ;AAAA,IACR,YAAY,GAAG;AAAA,IACf,OAAO,GAAG;AAAA,IACV,WAAW,GAAG;AAAA,EAChB;AAAA,EAEA,IAAM,MAAoC;AAAA,IACxC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,eAAe;AAAA,EACjB;AAAA,EAEA,IAAM,UAAwC;AAAA,IAC5C,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,eAAe;AAAA,EACjB;AAAA,EAEA,IAAM,UAA4D;AAAA,IAChE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACd;AAAA,EAEA,OAAO,eAAe,SAAS,IAAI;AAAA,EAMnC,SAAS,gBAAiB,CAAC,QAAQ;AAAA,IACjC,OACE,WACE,QAAmC,WACnC,QAAkC,OAAO,YAAY,OAEvD;AAAA;AAAA,EAGJ,OAAO,UAAU;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;;;ECxQA,MAAQ,eAAe,mBAAmB,oBAAoB,0BAA0B,uBAAuB,yBAAyB,wBAAwB,QAAQ;AAAA,EACxK,MAAQ,SAAS;AAAA,EAQjB,SAAS,SAAU,CAAC,KAAK,SAAS;AAAA,IAChC,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,MAAwB,gBAAgB,KAAK,OAAO;AAAA,IACtD,EAAO,SAAI,OAAO,QAAQ,UAAU;AAAA,MAClC,MAAwB,MAAM,UAAU,KAAK,OAAO,GAAG,OAAO;AAAA,IAChE;AAAA,IACA,OAAO;AAAA;AAAA,EAST,SAAS,OAAQ,CAAC,SAAS,aAAa,SAAS;AAAA,IAC/C,MAAM,oBAAoB,UAAU,OAAO,OAAO,EAAE,QAAQ,OAAO,GAAG,OAAO,IAAI,EAAE,QAAQ,OAAO;AAAA,IAClG,QAAQ,QAAQ,YAAY,0BAA0B,kBAAkB,gBAAgB,SAAS,iBAAiB;AAAA,IAClH,QAAQ,QAAQ,gBAAgB,0BAA0B,sBAAsB,gBAAgB,aAAa,iBAAiB;AAAA,IAC9H,IAAI,iBAAiB,mBAAmB;AAAA,MACtC,MAAM,IAAI,MAAM,WAAW,SAAS,eAAe,SAAS,mBAAmB;AAAA,IACjF;AAAA,IACA,MAAM,WAAW,iBAAiB,YAAY,gBAAgB,mBAAmB,IAAI;AAAA,IACrF,kBAAkB,aAAa;AAAA,IAC/B,OAAO,UAAU,UAAU,iBAAiB;AAAA;AAAA,EAU9C,SAAS,gBAAiB,CAAC,MAAM,UAAU,SAAS,mBAAmB;AAAA,IAErE,MAAM,SAAS,CAAC;AAAA,IAChB,IAAI,CAAC,mBAAmB;AAAA,MACtB,OAAO,MAAM,UAAU,MAAM,OAAO,GAAG,OAAO;AAAA,MAC9C,WAAW,MAAM,UAAU,UAAU,OAAO,GAAG,OAAO;AAAA,IACxD;AAAA,IACA,UAAU,WAAW,CAAC;AAAA,IAEtB,IAAI,CAAC,QAAQ,YAAY,SAAS,QAAQ;AAAA,MACxC,OAAO,SAAS,SAAS;AAAA,MAEzB,OAAO,WAAW,SAAS;AAAA,MAC3B,OAAO,OAAO,SAAS;AAAA,MACvB,OAAO,OAAO,SAAS;AAAA,MACvB,OAAO,OAAO,kBAAkB,SAAS,QAAQ,EAAE;AAAA,MACnD,OAAO,QAAQ,SAAS;AAAA,IAC1B,EAAO;AAAA,MACL,IAAI,SAAS,aAAa,aAAa,SAAS,SAAS,aAAa,SAAS,SAAS,WAAW;AAAA,QAEjG,OAAO,WAAW,SAAS;AAAA,QAC3B,OAAO,OAAO,SAAS;AAAA,QACvB,OAAO,OAAO,SAAS;AAAA,QACvB,OAAO,OAAO,kBAAkB,SAAS,QAAQ,EAAE;AAAA,QACnD,OAAO,QAAQ,SAAS;AAAA,MAC1B,EAAO;AAAA,QACL,IAAI,CAAC,SAAS,MAAM;AAAA,UAClB,OAAO,OAAO,KAAK;AAAA,UACnB,IAAI,SAAS,UAAU,WAAW;AAAA,YAChC,OAAO,QAAQ,SAAS;AAAA,UAC1B,EAAO;AAAA,YACL,OAAO,QAAQ,KAAK;AAAA;AAAA,QAExB,EAAO;AAAA,UACL,IAAI,SAAS,KAAK,OAAO,KAAK;AAAA,YAC5B,OAAO,OAAO,kBAAkB,SAAS,IAAI;AAAA,UAC/C,EAAO;AAAA,YACL,KAAK,KAAK,aAAa,aAAa,KAAK,SAAS,aAAa,KAAK,SAAS,cAAc,CAAC,KAAK,MAAM;AAAA,cACrG,OAAO,OAAO,MAAM,SAAS;AAAA,YAC/B,EAAO,SAAI,CAAC,KAAK,MAAM;AAAA,cACrB,OAAO,OAAO,SAAS;AAAA,YACzB,EAAO;AAAA,cACL,OAAO,OAAO,KAAK,KAAK,MAAM,GAAG,KAAK,KAAK,YAAY,GAAG,IAAI,CAAC,IAAI,SAAS;AAAA;AAAA,YAE9E,OAAO,OAAO,kBAAkB,OAAO,IAAI;AAAA;AAAA,UAE7C,OAAO,QAAQ,SAAS;AAAA;AAAA,QAG1B,OAAO,WAAW,KAAK;AAAA,QACvB,OAAO,OAAO,KAAK;AAAA,QACnB,OAAO,OAAO,KAAK;AAAA;AAAA,MAErB,OAAO,SAAS,KAAK;AAAA;AAAA,IAGvB,OAAO,WAAW,SAAS;AAAA,IAE3B,OAAO;AAAA;AAAA,EAST,SAAS,KAAM,CAAC,MAAM,MAAM,SAAS;AAAA,IACnC,MAAM,cAAc,uBAAuB,MAAM,OAAO;AAAA,IACxD,MAAM,cAAc,uBAAuB,MAAM,OAAO;AAAA,IAExD,OAAO,gBAAgB,aAAa,gBAAgB,aAAa,YAAY,YAAY,MAAM,YAAY,YAAY;AAAA;AAAA,EAQzH,SAAS,SAAU,CAAC,OAAO,MAAM;AAAA,IAC/B,MAAM,YAAY;AAAA,MAChB,MAAM,MAAM;AAAA,MACZ,QAAQ,MAAM;AAAA,MACd,UAAU,MAAM;AAAA,MAChB,MAAM,MAAM;AAAA,MACZ,MAAM,MAAM;AAAA,MACZ,OAAO,MAAM;AAAA,MACb,KAAK,MAAM;AAAA,MACX,KAAK,MAAM;AAAA,MACX,MAAM,MAAM;AAAA,MACZ,UAAU,MAAM;AAAA,MAChB,WAAW,MAAM;AAAA,MACjB,cAAc,MAAM;AAAA,MACpB,QAAQ,MAAM;AAAA,MACd,OAAO;AAAA,IACT;AAAA,IACA,MAAM,UAAU,OAAO,OAAO,CAAC,GAAG,IAAI;AAAA,IACtC,MAAM,YAAY,CAAC;AAAA,IAGnB,MAAM,gBAAgB,iBAAiB,QAAQ,UAAU,UAAU,MAAM;AAAA,IAGzE,IAAI,iBAAiB,cAAc;AAAA,MAAW,cAAc,UAAU,WAAW,OAAO;AAAA,IAExF,IAAI,UAAU,SAAS,WAAW;AAAA,MAChC,IAAI,CAAC,QAAQ,YAAY;AAAA,QACvB,UAAU,OAAO,wBAAwB,UAAU,IAAI;AAAA,QAEvD,IAAI,UAAU,WAAW,WAAW;AAAA,UAClC,UAAU,OAAO,UAAU,KAAK,MAAM,KAAK,EAAE,KAAK,GAAG;AAAA,QACvD;AAAA,MACF,EAAO;AAAA,QACL,UAAU,OAAO,yBAAyB,UAAU,IAAI;AAAA;AAAA,IAE5D;AAAA,IAEA,IAAI,QAAQ,cAAc,YAAY,UAAU,QAAQ;AAAA,MACtD,UAAU,KAAK,UAAU,QAAQ,GAAG;AAAA,IACtC;AAAA,IAEA,MAAM,YAAY,mBAAmB,SAAS;AAAA,IAC9C,IAAI,cAAc,WAAW;AAAA,MAC3B,IAAI,QAAQ,cAAc,UAAU;AAAA,QAClC,UAAU,KAAK,IAAI;AAAA,MACrB;AAAA,MAEA,UAAU,KAAK,SAAS;AAAA,MAExB,IAAI,UAAU,QAAQ,UAAU,KAAK,OAAO,KAAK;AAAA,QAC/C,UAAU,KAAK,GAAG;AAAA,MACpB;AAAA,IACF;AAAA,IACA,IAAI,UAAU,SAAS,WAAW;AAAA,MAChC,IAAI,IAAI,UAAU;AAAA,MAElB,IAAI,CAAC,QAAQ,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,eAAe;AAAA,QAC5E,IAAI,kBAAkB,CAAC;AAAA,MACzB;AAAA,MAEA,IACE,cAAc,aACd,EAAE,OAAO,OACT,EAAE,OAAO,KACT;AAAA,QAEA,IAAI,SAAS,EAAE,MAAM,CAAC;AAAA,MACxB;AAAA,MAEA,UAAU,KAAK,CAAC;AAAA,IAClB;AAAA,IAEA,IAAI,UAAU,UAAU,WAAW;AAAA,MACjC,UAAU,KAAK,KAAK,UAAU,KAAK;AAAA,IACrC;AAAA,IAEA,IAAI,UAAU,aAAa,WAAW;AAAA,MACpC,UAAU,KAAK,KAAK,UAAU,QAAQ;AAAA,IACxC;AAAA,IACA,OAAO,UAAU,KAAK,EAAE;AAAA;AAAA,EAG1B,IAAM,YAAY;AAAA,EAIlB,IAAM,mBAAmB;AAAA,EASzB,IAAM,8BAA8B;AAAA,EAOpC,SAAS,aAAc,CAAC,QAAQ,SAAS;AAAA,IACvC,IAAI,QAAQ,OAAO,aAAa,OAAO,QAAQ,OAAO,KAAK,OAAO,KAAK;AAAA,MACrE,OAAO;AAAA,IACT;AAAA,IAEA,IAAI,OAAO,OAAO,SAAS,aAAa,OAAO,OAAO,KAAK,OAAO,OAAO,QAAQ;AAAA,MAC/E,OAAO;AAAA,IACT;AAAA,IAEA;AAAA;AAAA,EAQF,SAAS,eAAgB,CAAC,KAAK,MAAM;AAAA,IACnC,MAAM,UAAU,OAAO,OAAO,CAAC,GAAG,IAAI;AAAA,IAEtC,MAAM,SAAS;AAAA,MACb,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,IACZ;AAAA,IAEA,IAAI,2BAA2B;AAAA,IAE/B,IAAI,OAAO;AAAA,IACX,IAAI,QAAQ,cAAc,UAAU;AAAA,MAClC,IAAI,QAAQ,QAAQ;AAAA,QAClB,MAAM,QAAQ,SAAS,MAAM;AAAA,MAC/B,EAAO;AAAA,QACL,MAAM,OAAO;AAAA;AAAA,IAEjB;AAAA,IASA,MAAM,iBAAiB,IAAI,MAAM,gBAAgB;AAAA,IACjD,IAAI,mBAAmB,QAAQ,eAAe,GAAG,QAAQ,IAAI,MAAM,IAAI;AAAA,MACrE,OAAO,QAAQ;AAAA,MACf,2BAA2B;AAAA,IAC7B;AAAA,IAQA,MAAM,kBAAkB,IAAI,MAAM,2BAA2B;AAAA,IAC7D,IAAI,oBAAoB,MAAM;AAAA,MAC5B,MAAM,SAAS,gBAAgB;AAAA,MAC/B,MAAM,mBAAmB,OAAO,QAAQ,aAAa,EAAE;AAAA,MAEvD,IAAI,iBAAiB,UAAU,GAAG;AAAA,QAChC,IAAI,iBAAiB,MAAM,GAAG,CAAC,MAAM,MAAM;AAAA,UACzC,OAAO,QAAQ,OAAO,SAAS;AAAA,UAC/B,2BAA2B;AAAA,QAC7B,EAAO,SAAI,OAAO,WAAW,iBAAiB,QAAQ;AAAA,UACpD,OAAO,QAAQ,OAAO,SAAS;AAAA,UAC/B,2BAA2B;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAAA,IAEA,MAAM,UAAU,IAAI,MAAM,SAAS;AAAA,IAEnC,IAAI,SAAS;AAAA,MAEX,OAAO,SAAS,QAAQ;AAAA,MACxB,OAAO,WAAW,QAAQ;AAAA,MAC1B,OAAO,OAAO,QAAQ;AAAA,MACtB,OAAO,OAAO,SAAS,QAAQ,IAAI,EAAE;AAAA,MACrC,OAAO,OAAO,QAAQ,MAAM;AAAA,MAC5B,OAAO,QAAQ,QAAQ;AAAA,MACvB,OAAO,WAAW,QAAQ;AAAA,MAG1B,IAAI,MAAM,OAAO,IAAI,GAAG;AAAA,QACtB,OAAO,OAAO,QAAQ;AAAA,MACxB;AAAA,MAEA,MAAM,aAAa,cAAc,QAAQ,OAAO;AAAA,MAChD,IAAI,eAAe,WAAW;AAAA,QAC5B,OAAO,QAAQ,OAAO,SAAS;AAAA,QAC/B,2BAA2B;AAAA,MAC7B;AAAA,MAEA,IAAI,OAAO,MAAM;AAAA,QACf,MAAM,aAAa,OAAO,OAAO,IAAI;AAAA,QACrC,IAAI,eAAe,OAAO;AAAA,UACxB,MAAM,aAAa,cAAc,OAAO,IAAI;AAAA,UAC5C,OAAO,OAAO,WAAW,KAAK,YAAY;AAAA,UAC1C,OAAO,WAAW;AAAA,QACpB,EAAO;AAAA,UACL,OAAO;AAAA;AAAA,MAEX;AAAA,MACA,IAAI,OAAO,WAAW,aAAa,OAAO,aAAa,aAAa,OAAO,SAAS,aAAa,OAAO,SAAS,aAAa,OAAO,UAAU,aAAa,CAAC,OAAO,MAAM;AAAA,QACxK,OAAO,YAAY;AAAA,MACrB,EAAO,SAAI,OAAO,WAAW,WAAW;AAAA,QACtC,OAAO,YAAY;AAAA,MACrB,EAAO,SAAI,OAAO,aAAa,WAAW;AAAA,QACxC,OAAO,YAAY;AAAA,MACrB,EAAO;AAAA,QACL,OAAO,YAAY;AAAA;AAAA,MAIrB,IAAI,QAAQ,aAAa,QAAQ,cAAc,YAAY,QAAQ,cAAc,OAAO,WAAW;AAAA,QACjG,OAAO,QAAQ,OAAO,SAAS,kBAAkB,QAAQ,YAAY;AAAA,MACvE;AAAA,MAGA,MAAM,gBAAgB,iBAAiB,QAAQ,UAAU,OAAO,MAAM;AAAA,MAGtE,IAAI,CAAC,QAAQ,mBAAmB,CAAC,iBAAiB,CAAC,cAAc,iBAAiB;AAAA,QAEhF,IAAI,OAAO,SAAS,QAAQ,cAAe,iBAAiB,cAAc,eAAgB,SAAS,SAAS,gBAAgB,OAAO,IAAI,GAAG;AAAA,UAExI,IAAI;AAAA,YACF,OAAO,OAAO,IAAI,IAAI,YAAY,OAAO,IAAI,EAAE;AAAA,YAC/C,OAAO,GAAG;AAAA,YACV,OAAO,QAAQ,OAAO,SAAS,uDAAuD;AAAA;AAAA,QAE1F;AAAA,MAEF;AAAA,MAEA,IAAI,CAAC,iBAAkB,iBAAiB,CAAC,cAAc,eAAgB;AAAA,QACrE,IAAI,IAAI,QAAQ,GAAG,MAAM,IAAI;AAAA,UAC3B,IAAI,OAAO,WAAW,WAAW;AAAA,YAC/B,OAAO,SAAS,SAAS,OAAO,MAAM;AAAA,UACxC;AAAA,UACA,IAAI,OAAO,SAAS,WAAW;AAAA,YAC7B,OAAO,OAAO,uBAAuB,SAAS,OAAO,IAAI,GAAG,IAAI;AAAA,UAClE;AAAA,QACF;AAAA,QACA,IAAI,OAAO,MAAM;AAAA,UACf,OAAO,OAAO,sBAAsB,OAAO,IAAI;AAAA,QACjD;AAAA,QACA,IAAI,OAAO,UAAU;AAAA,UACnB,IAAI;AAAA,YACF,OAAO,WAAW,UAAU,mBAAmB,OAAO,QAAQ,CAAC;AAAA,YAC/D,MAAM;AAAA,YACN,OAAO,QAAQ,OAAO,SAAS;AAAA;AAAA,QAEnC;AAAA,MACF;AAAA,MAGA,IAAI,iBAAiB,cAAc,OAAO;AAAA,QACxC,cAAc,MAAM,QAAQ,OAAO;AAAA,MACrC;AAAA,IACF,EAAO;AAAA,MACL,OAAO,QAAQ,OAAO,SAAS;AAAA;AAAA,IAEjC,OAAO,EAAE,QAAQ,yBAAyB;AAAA;AAAA,EAQ5C,SAAS,KAAM,CAAC,KAAK,MAAM;AAAA,IACzB,OAAO,gBAAgB,KAAK,IAAI,EAAE;AAAA;AAAA,EAQpC,SAAS,eAAgB,CAAC,KAAK,MAAM;AAAA,IACnC,OAAO,0BAA0B,KAAK,IAAI,EAAE;AAAA;AAAA,EAQ9C,SAAS,yBAA0B,CAAC,KAAK,MAAM;AAAA,IAC7C,QAAQ,QAAQ,6BAA6B,gBAAgB,KAAK,IAAI;AAAA,IACtE,OAAO;AAAA,MACL,YAAY,2BAA2B,MAAM,UAAU,QAAQ,IAAI;AAAA,MACnE;AAAA,IACF;AAAA;AAAA,EAQF,SAAS,sBAAuB,CAAC,KAAK,MAAM;AAAA,IAC1C,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,QAAQ,YAAY,6BAA6B,0BAA0B,KAAK,IAAI;AAAA,MACpF,OAAO,2BAA2B,YAAY;AAAA,IAChD;AAAA,IAEA,IAAI,OAAO,QAAQ,UAAU;AAAA,MAC3B,OAAO,UAAU,KAAK,IAAI;AAAA,IAC5B;AAAA;AAAA,EAGF,IAAM,UAAU;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAO,UAAU;AAAA,EACjB,OAAO,QAAQ,UAAU;AAAA,EACzB,OAAO,QAAQ,UAAU;AAAA;;;;ECzczB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAI,OAAO;AAAA,EACH,kBAAU;AAAA;;;;ECHlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kBAAkB,eAAe,cAAc,oBAAoB,cAAc,YAAY,qBAAkB;AAAA,EACvH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,cAAc,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,WAAW;AAAA,IAAc,CAAC;AAAA,EACrH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,KAAK,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAK,CAAC;AAAA,EAClG,OAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAO,CAAC;AAAA,EACtG,OAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAa,CAAC;AAAA,EAClH,OAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAO,CAAC;AAAA,EACtG,OAAO,eAAe,SAAS,QAAQ,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAQ,CAAC;AAAA,EACxG,OAAO,eAAe,SAAS,WAAW,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAW,CAAC;AAAA,EAC9G,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,gBAAgB,CAAC,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK;AAAA,EAC3D,cAAc,OAAO;AAAA,EACrB,IAAM,sBAAsB,CAAC,oBAAoB,eAAe,aAAa;AAAA,EAC7E,IAAM,kBAAkB,IAAI,IAAI;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAAA,EACD,IAAM,iBAAiB;AAAA,IACnB,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW;AAAA,EACf;AAAA,EACA,IAAM,oBAAoB;AAAA,IACtB,uBAAuB;AAAA,IACvB,kBAAkB;AAAA,IAClB,SAAS;AAAA,EACb;AAAA,EACA,IAAM,iBAAiB;AAAA,EAEvB,SAAS,eAAe,CAAC,GAAG;AAAA,IACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAAA,IACpG,MAAM,IAAI,EAAE;AAAA,IACZ,MAAM,SAAS,KAAK,EAAE,UAAU,QAAQ,OAAY,YAAS,YAAI,GAAG;AAAA,IACpE,MAAM,WAAW,UAAU,QAAQ,UAAU,YAAY,IAAI,SAAS;AAAA,IACtE,MAAM,UAAU,MAAM,KAAK,EAAE,UAAU,QAAQ,OAAY,YAAS,YAAI,GAAG,YAAY,QAAQ,OAAY,YAAI,KAAK;AAAA,IACpH,MAAM,eAAe,KAAK,EAAE,iBAAiB,QAAQ,OAAY,YAAI,KAAK,MAAM;AAAA,IAChF,OAAO;AAAA,MACH,eAAe,MAAM,KAAK,EAAE,kBAAkB,QAAQ,OAAY,YAAI,KAAK,OAAO,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC/G,gBAAgB,MAAM,KAAK,EAAE,mBAAmB,QAAQ,OAAY,YAAI,KAAK,OAAO,QAAQ,OAAY,YAAI,KAAK;AAAA,MACjH,cAAc,MAAM,KAAK,EAAE,iBAAiB,QAAQ,OAAY,YAAI,KAAK,OAAO,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC7G,eAAe,MAAM,KAAK,EAAE,kBAAkB,QAAQ,OAAY,YAAI,KAAK,OAAO,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC/G,iBAAiB,MAAM,KAAK,EAAE,oBAAoB,QAAQ,OAAY,YAAI,KAAK,OAAO,QAAQ,OAAY,YAAI,KAAK;AAAA,MACnH,MAAM,EAAE,OAAO,KAAK,EAAE,MAAM,UAAU,OAAO,IAAI,EAAE,UAAU,OAAO;AAAA,MACpE,eAAe,KAAK,EAAE,kBAAkB,QAAQ,OAAY,YAAI,KAAK;AAAA,MACrE,WAAW,KAAK,EAAE,cAAc,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC7D,OAAO,KAAK,EAAE,UAAU,QAAQ,OAAY,YAAI,KAAK;AAAA,MACrD,WAAW,KAAK,EAAE,cAAc,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC7D,aAAa,KAAK,EAAE,gBAAgB,QAAQ,OAAY,YAAI,KAAK;AAAA,MACjE,WAAW,KAAK,EAAE,cAAc,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC7D,gBAAgB,KAAK,EAAE,mBAAmB,QAAQ,OAAY,YAAI,KAAK;AAAA,MACvE,iBAAiB,KAAK,EAAE,oBAAoB,QAAQ,OAAY,YAAI,KAAK;AAAA,MACzE,kBAAkB,KAAK,EAAE,qBAAqB,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC3E,gBAAgB,KAAK,EAAE,mBAAmB,QAAQ,OAAY,YAAI,KAAK;AAAA,MACvE,aAAa,KAAK,EAAE,gBAAgB,QAAQ,OAAY,YAAI,KAAK;AAAA,MACjE;AAAA,IACJ;AAAA;AAAA;AAAA,EAEJ,MAAM,IAAI;AAAA,IACN,WAAW,CAAC,OAAO,CAAC,GAAG;AAAA,MACnB,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,OAAO,CAAC;AAAA,MACb,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,gBAAgB,IAAI;AAAA,MACzB,KAAK,WAAW,CAAC;AAAA,MACjB,KAAK,SAAS,IAAI;AAAA,MAClB,OAAO,KAAK,OAAO,KAAK,SAAS,gBAAgB,IAAI,EAAE;AAAA,MACvD,QAAQ,KAAK,UAAU,KAAK,KAAK;AAAA,MACjC,KAAK,QAAQ,IAAI,UAAU,WAAW,EAAE,OAAO,CAAC,GAAG,UAAU,iBAAiB,KAAK,MAAM,CAAC;AAAA,MAC1F,KAAK,SAAS,UAAU,KAAK,MAAM;AAAA,MACnC,MAAM,YAAY,KAAK;AAAA,MACvB,KAAK,kBAAkB;AAAA,MACvB,KAAK,SAAS,GAAG,QAAQ,UAAU;AAAA,MACnC,aAAa,KAAK,MAAM,gBAAgB,MAAM,eAAe;AAAA,MAC7D,aAAa,KAAK,MAAM,mBAAmB,MAAM,cAAc,MAAM;AAAA,MACrE,KAAK,YAAY,qBAAqB,KAAK,IAAI;AAAA,MAC/C,IAAI,KAAK;AAAA,QACL,kBAAkB,KAAK,IAAI;AAAA,MAC/B,KAAK,iBAAiB;AAAA,MACtB,KAAK,sBAAsB;AAAA,MAC3B,IAAI,KAAK;AAAA,QACL,mBAAmB,KAAK,MAAM,KAAK,QAAQ;AAAA,MAC/C,IAAI,OAAO,KAAK,QAAQ;AAAA,QACpB,KAAK,cAAc,KAAK,IAAI;AAAA,MAChC,kBAAkB,KAAK,IAAI;AAAA,MAC3B,KAAK,kBAAkB;AAAA;AAAA,IAE3B,gBAAgB,GAAG;AAAA,MACf,KAAK,WAAW,QAAQ;AAAA;AAAA,IAE5B,qBAAqB,GAAG;AAAA,MACpB,QAAQ,OAAO,MAAM,aAAa,KAAK;AAAA,MACvC,IAAI,iBAAiB;AAAA,MACrB,IAAI,aAAa,MAAM;AAAA,QACnB,iBAAiB,KAAK,eAAe;AAAA,QACrC,eAAe,KAAK,eAAe;AAAA,QACnC,OAAO,eAAe;AAAA,MAC1B;AAAA,MACA,IAAI,QAAQ;AAAA,QACR,KAAK,cAAc,gBAAgB,eAAe,WAAW,KAAK;AAAA;AAAA,IAE1E,WAAW,GAAG;AAAA,MACV,QAAQ,MAAM,aAAa,KAAK;AAAA,MAChC,OAAQ,KAAK,KAAK,cAAc,OAAO,QAAQ,WAAW,KAAK,aAAa,OAAO;AAAA;AAAA,IAEvF,QAAQ,CAAC,cAET,MACE;AAAA,MACE,IAAI;AAAA,MACJ,IAAI,OAAO,gBAAgB,UAAU;AAAA,QACjC,IAAI,KAAK,UAAU,YAAY;AAAA,QAC/B,IAAI,CAAC;AAAA,UACD,MAAM,IAAI,MAAM,8BAA8B,eAAe;AAAA,MACrE,EACK;AAAA,QACD,IAAI,KAAK,QAAQ,YAAY;AAAA;AAAA,MAEjC,MAAM,QAAQ,EAAE,IAAI;AAAA,MACpB,IAAI,EAAE,YAAY;AAAA,QACd,KAAK,SAAS,EAAE;AAAA,MACpB,OAAO;AAAA;AAAA,IAEX,OAAO,CAAC,QAAQ,OAAO;AAAA,MACnB,MAAM,MAAM,KAAK,WAAW,QAAQ,KAAK;AAAA,MACzC,OAAQ,IAAI,YAAY,KAAK,kBAAkB,GAAG;AAAA;AAAA,IAEtD,YAAY,CAAC,QAAQ,MAAM;AAAA,MACvB,IAAI,OAAO,KAAK,KAAK,cAAc,YAAY;AAAA,QAC3C,MAAM,IAAI,MAAM,yCAAyC;AAAA,MAC7D;AAAA,MACA,QAAQ,eAAe,KAAK;AAAA,MAC5B,OAAO,gBAAgB,KAAK,MAAM,QAAQ,IAAI;AAAA,MAC9C,eAAe,eAAe,CAAC,SAAS,OAAO;AAAA,QAC3C,MAAM,eAAe,KAAK,MAAM,QAAQ,OAAO;AAAA,QAC/C,MAAM,MAAM,KAAK,WAAW,SAAS,KAAK;AAAA,QAC1C,OAAO,IAAI,YAAY,cAAc,KAAK,MAAM,GAAG;AAAA;AAAA,MAEvD,eAAe,cAAc,CAAC,MAAM;AAAA,QAChC,IAAI,QAAQ,CAAC,KAAK,UAAU,IAAI,GAAG;AAAA,UAC/B,MAAM,gBAAgB,KAAK,MAAM,EAAE,KAAK,GAAG,IAAI;AAAA,QACnD;AAAA;AAAA,MAEJ,eAAe,aAAa,CAAC,KAAK;AAAA,QAC9B,IAAI;AAAA,UACA,OAAO,KAAK,kBAAkB,GAAG;AAAA,UAErC,OAAO,GAAG;AAAA,UACN,IAAI,EAAE,aAAa,YAAY;AAAA,YAC3B,MAAM;AAAA,UACV,YAAY,KAAK,MAAM,CAAC;AAAA,UACxB,MAAM,kBAAkB,KAAK,MAAM,EAAE,aAAa;AAAA,UAClD,OAAO,cAAc,KAAK,MAAM,GAAG;AAAA;AAAA;AAAA,MAG3C,SAAS,WAAW,GAAG,eAAe,KAAK,cAAc;AAAA,QACrD,IAAI,KAAK,KAAK,MAAM;AAAA,UAChB,MAAM,IAAI,MAAM,aAAa,qBAAqB,+BAA+B;AAAA,QACrF;AAAA;AAAA,MAEJ,eAAe,iBAAiB,CAAC,KAAK;AAAA,QAClC,MAAM,UAAU,MAAM,YAAY,KAAK,MAAM,GAAG;AAAA,QAChD,IAAI,CAAC,KAAK,KAAK;AAAA,UACX,MAAM,eAAe,KAAK,MAAM,QAAQ,OAAO;AAAA,QACnD,IAAI,CAAC,KAAK,KAAK;AAAA,UACX,KAAK,UAAU,SAAS,KAAK,IAAI;AAAA;AAAA,MAEzC,eAAe,WAAW,CAAC,KAAK;AAAA,QAC5B,MAAM,IAAI,KAAK,SAAS;AAAA,QACxB,IAAI;AAAA,UACA,OAAO;AAAA,QACX,IAAI;AAAA,UACA,OAAO,OAAO,KAAK,SAAS,OAAO,WAAW,GAAG;AAAA,kBAErD;AAAA,UACI,OAAO,KAAK,SAAS;AAAA;AAAA;AAAA;AAAA,IAKjC,SAAS,CAAC,QACV,KACA,OACA,kBAAkB,KAAK,KAAK,gBAC1B;AAAA,MACE,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,QACvB,WAAW,OAAO;AAAA,UACd,KAAK,UAAU,KAAK,WAAW,OAAO,eAAe;AAAA,QACzD,OAAO;AAAA,MACX;AAAA,MACA,IAAI;AAAA,MACJ,IAAI,OAAO,WAAW,UAAU;AAAA,QAC5B,QAAQ,aAAa,KAAK;AAAA,QAC1B,KAAK,OAAO;AAAA,QACZ,IAAI,OAAO,aAAa,OAAO,MAAM,UAAU;AAAA,UAC3C,MAAM,IAAI,MAAM,UAAU,yBAAyB;AAAA,QACvD;AAAA,MACJ;AAAA,MACA,OAAO,GAAG,UAAU,aAAa,OAAO,EAAE;AAAA,MAC1C,KAAK,aAAa,GAAG;AAAA,MACrB,KAAK,QAAQ,OAAO,KAAK,WAAW,QAAQ,OAAO,KAAK,iBAAiB,IAAI;AAAA,MAC7E,OAAO;AAAA;AAAA,IAIX,aAAa,CAAC,QAAQ,KACtB,kBAAkB,KAAK,KAAK,gBAC1B;AAAA,MACE,KAAK,UAAU,QAAQ,KAAK,MAAM,eAAe;AAAA,MACjD,OAAO;AAAA;AAAA,IAGX,cAAc,CAAC,QAAQ,iBAAiB;AAAA,MACpC,IAAI,OAAO,UAAU;AAAA,QACjB,OAAO;AAAA,MACX,IAAI;AAAA,MACJ,UAAU,OAAO;AAAA,MACjB,IAAI,YAAY,aAAa,OAAO,WAAW,UAAU;AAAA,QACrD,MAAM,IAAI,MAAM,0BAA0B;AAAA,MAC9C;AAAA,MACA,UAAU,WAAW,KAAK,KAAK,eAAe,KAAK,YAAY;AAAA,MAC/D,IAAI,CAAC,SAAS;AAAA,QACV,KAAK,OAAO,KAAK,2BAA2B;AAAA,QAC5C,KAAK,SAAS;AAAA,QACd,OAAO;AAAA,MACX;AAAA,MACA,MAAM,QAAQ,KAAK,SAAS,SAAS,MAAM;AAAA,MAC3C,IAAI,CAAC,SAAS,iBAAiB;AAAA,QAC3B,MAAM,UAAU,wBAAwB,KAAK,WAAW;AAAA,QACxD,IAAI,KAAK,KAAK,mBAAmB;AAAA,UAC7B,KAAK,OAAO,MAAM,OAAO;AAAA,QAEzB;AAAA,gBAAM,IAAI,MAAM,OAAO;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA;AAAA,IAIX,SAAS,CAAC,QAAQ;AAAA,MACd,IAAI;AAAA,MACJ,OAAO,QAAQ,MAAM,UAAU,KAAK,MAAM,MAAM,MAAM;AAAA,QAClD,SAAS;AAAA,MACb,IAAI,QAAQ,WAAW;AAAA,QACnB,QAAQ,aAAa,KAAK;AAAA,QAC1B,MAAM,OAAO,IAAI,UAAU,UAAU,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;AAAA,QAC7D,MAAM,UAAU,cAAc,KAAK,MAAM,MAAM,MAAM;AAAA,QACrD,IAAI,CAAC;AAAA,UACD;AAAA,QACJ,KAAK,KAAK,UAAU;AAAA,MACxB;AAAA,MACA,OAAQ,IAAI,YAAY,KAAK,kBAAkB,GAAG;AAAA;AAAA,IAMtD,YAAY,CAAC,cAAc;AAAA,MACvB,IAAI,wBAAwB,QAAQ;AAAA,QAChC,KAAK,kBAAkB,KAAK,SAAS,YAAY;AAAA,QACjD,KAAK,kBAAkB,KAAK,MAAM,YAAY;AAAA,QAC9C,OAAO;AAAA,MACX;AAAA,MACA,QAAQ,OAAO;AAAA,aACN;AAAA,UACD,KAAK,kBAAkB,KAAK,OAAO;AAAA,UACnC,KAAK,kBAAkB,KAAK,IAAI;AAAA,UAChC,KAAK,OAAO,MAAM;AAAA,UAClB,OAAO;AAAA,aACN,UAAU;AAAA,UACX,MAAM,MAAM,UAAU,KAAK,MAAM,YAAY;AAAA,UAC7C,IAAI,OAAO,OAAO;AAAA,YACd,KAAK,OAAO,OAAO,IAAI,MAAM;AAAA,UACjC,OAAO,KAAK,QAAQ;AAAA,UACpB,OAAO,KAAK,KAAK;AAAA,UACjB,OAAO;AAAA,QACX;AAAA,aACK,UAAU;AAAA,UACX,MAAM,WAAW;AAAA,UACjB,KAAK,OAAO,OAAO,QAAQ;AAAA,UAC3B,IAAI,KAAK,aAAa,KAAK,KAAK;AAAA,UAChC,IAAI,IAAI;AAAA,YACJ,MAAM,GAAG,UAAU,aAAa,EAAE;AAAA,YAClC,OAAO,KAAK,QAAQ;AAAA,YACpB,OAAO,KAAK,KAAK;AAAA,UACrB;AAAA,UACA,OAAO;AAAA,QACX;AAAA;AAAA,UAEI,MAAM,IAAI,MAAM,qCAAqC;AAAA;AAAA;AAAA,IAIjE,aAAa,CAAC,aAAa;AAAA,MACvB,WAAW,OAAO;AAAA,QACd,KAAK,WAAW,GAAG;AAAA,MACvB,OAAO;AAAA;AAAA,IAEX,UAAU,CAAC,UAAU,KACnB;AAAA,MACE,IAAI;AAAA,MACJ,IAAI,OAAO,YAAY,UAAU;AAAA,QAC7B,UAAU;AAAA,QACV,IAAI,OAAO,OAAO,UAAU;AAAA,UACxB,KAAK,OAAO,KAAK,0DAA0D;AAAA,UAC3E,IAAI,UAAU;AAAA,QAClB;AAAA,MACJ,EACK,SAAI,OAAO,YAAY,YAAY,QAAQ,WAAW;AAAA,QACvD,MAAM;AAAA,QACN,UAAU,IAAI;AAAA,QACd,IAAI,MAAM,QAAQ,OAAO,KAAK,CAAC,QAAQ,QAAQ;AAAA,UAC3C,MAAM,IAAI,MAAM,wDAAwD;AAAA,QAC5E;AAAA,MACJ,EACK;AAAA,QACD,MAAM,IAAI,MAAM,gCAAgC;AAAA;AAAA,MAEpD,aAAa,KAAK,MAAM,SAAS,GAAG;AAAA,MACpC,IAAI,CAAC,KAAK;AAAA,SACL,GAAG,OAAO,UAAU,SAAS,CAAC,QAAQ,QAAQ,KAAK,MAAM,GAAG,CAAC;AAAA,QAC9D,OAAO;AAAA,MACX;AAAA,MACA,kBAAkB,KAAK,MAAM,GAAG;AAAA,MAChC,MAAM,aAAa;AAAA,WACZ;AAAA,QACH,OAAO,GAAG,WAAW,cAAc,IAAI,IAAI;AAAA,QAC3C,aAAa,GAAG,WAAW,cAAc,IAAI,UAAU;AAAA,MAC3D;AAAA,OACC,GAAG,OAAO,UAAU,SAAS,WAAW,KAAK,WAAW,IACnD,CAAC,MAAM,QAAQ,KAAK,MAAM,GAAG,UAAU,IACvC,CAAC,MAAM,WAAW,KAAK,QAAQ,CAAC,MAAM,QAAQ,KAAK,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;AAAA,MACjF,OAAO;AAAA;AAAA,IAEX,UAAU,CAAC,SAAS;AAAA,MAChB,MAAM,OAAO,KAAK,MAAM,IAAI;AAAA,MAC5B,OAAO,OAAO,QAAQ,WAAW,KAAK,aAAa,CAAC,CAAC;AAAA;AAAA,IAGzD,aAAa,CAAC,SAAS;AAAA,MAEnB,QAAQ,UAAU;AAAA,MAClB,OAAO,MAAM,SAAS;AAAA,MACtB,OAAO,MAAM,IAAI;AAAA,MACjB,WAAW,SAAS,MAAM,OAAO;AAAA,QAC7B,MAAM,IAAI,MAAM,MAAM,UAAU,CAAC,SAAS,KAAK,YAAY,OAAO;AAAA,QAClE,IAAI,KAAK;AAAA,UACL,MAAM,MAAM,OAAO,GAAG,CAAC;AAAA,MAC/B;AAAA,MACA,OAAO;AAAA;AAAA,IAGX,SAAS,CAAC,MAAM,QAAQ;AAAA,MACpB,IAAI,OAAO,UAAU;AAAA,QACjB,SAAS,IAAI,OAAO,MAAM;AAAA,MAC9B,KAAK,QAAQ,QAAQ;AAAA,MACrB,OAAO;AAAA;AAAA,IAEX,UAAU,CAAC,SAAS,KAAK,UACvB,YAAY,MAAM,UAAU,WAAW,CAAC,GACxC;AAAA,MACE,IAAI,CAAC,UAAU,OAAO,WAAW;AAAA,QAC7B,OAAO;AAAA,MACX,OAAO,OACF,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,gBAAgB,EAAE,SAAS,EACrD,OAAO,CAAC,MAAM,QAAQ,OAAO,YAAY,GAAG;AAAA;AAAA,IAErD,eAAe,CAAC,YAAY,sBAAsB;AAAA,MAC9C,MAAM,QAAQ,KAAK,MAAM;AAAA,MACzB,aAAa,KAAK,MAAM,KAAK,UAAU,UAAU,CAAC;AAAA,MAClD,WAAW,eAAe,sBAAsB;AAAA,QAC5C,MAAM,WAAW,YAAY,MAAM,GAAG,EAAE,MAAM,CAAC;AAAA,QAC/C,IAAI,WAAW;AAAA,QACf,WAAW,OAAO;AAAA,UACd,WAAW,SAAS;AAAA,QACxB,WAAW,OAAO,OAAO;AAAA,UACrB,MAAM,OAAO,MAAM;AAAA,UACnB,IAAI,OAAO,QAAQ;AAAA,YACf;AAAA,UACJ,QAAQ,UAAU,KAAK;AAAA,UACvB,MAAM,SAAS,SAAS;AAAA,UACxB,IAAI,SAAS;AAAA,YACT,SAAS,OAAO,aAAa,MAAM;AAAA,QAC3C;AAAA,MACJ;AAAA,MACA,OAAO;AAAA;AAAA,IAEX,iBAAiB,CAAC,SAAS,OAAO;AAAA,MAC9B,WAAW,UAAU,SAAS;AAAA,QAC1B,MAAM,MAAM,QAAQ;AAAA,QACpB,IAAI,CAAC,SAAS,MAAM,KAAK,MAAM,GAAG;AAAA,UAC9B,IAAI,OAAO,OAAO,UAAU;AAAA,YACxB,OAAO,QAAQ;AAAA,UACnB,EACK,SAAI,OAAO,CAAC,IAAI,MAAM;AAAA,YACvB,KAAK,OAAO,OAAO,IAAI,MAAM;AAAA,YAC7B,OAAO,QAAQ;AAAA,UACnB;AAAA,QACJ;AAAA,MACJ;AAAA;AAAA,IAEJ,UAAU,CAAC,QAAQ,MAAM,QAAQ,iBAAiB,KAAK,KAAK,gBAAgB,YAAY,KAAK,KAAK,eAAe;AAAA,MAC7G,IAAI;AAAA,MACJ,QAAQ,aAAa,KAAK;AAAA,MAC1B,IAAI,OAAO,UAAU,UAAU;AAAA,QAC3B,KAAK,OAAO;AAAA,MAChB,EACK;AAAA,QACD,IAAI,KAAK,KAAK;AAAA,UACV,MAAM,IAAI,MAAM,uBAAuB;AAAA,QACtC,SAAI,OAAO,UAAU;AAAA,UACtB,MAAM,IAAI,MAAM,kCAAkC;AAAA;AAAA,MAE1D,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM;AAAA,MAChC,IAAI,QAAQ;AAAA,QACR,OAAO;AAAA,MACX,UAAU,GAAG,UAAU,aAAa,MAAM,MAAM;AAAA,MAChD,MAAM,YAAY,UAAU,cAAc,KAAK,MAAM,QAAQ,MAAM;AAAA,MACnE,MAAM,IAAI,UAAU,UAAU,EAAE,QAAQ,UAAU,MAAM,QAAQ,UAAU,CAAC;AAAA,MAC3E,KAAK,OAAO,IAAI,IAAI,QAAQ,GAAG;AAAA,MAC/B,IAAI,aAAa,CAAC,OAAO,WAAW,GAAG,GAAG;AAAA,QAEtC,IAAI;AAAA,UACA,KAAK,aAAa,MAAM;AAAA,QAC5B,KAAK,KAAK,UAAU;AAAA,MACxB;AAAA,MACA,IAAI;AAAA,QACA,KAAK,eAAe,QAAQ,IAAI;AAAA,MACpC,OAAO;AAAA;AAAA,IAEX,YAAY,CAAC,IAAI;AAAA,MACb,IAAI,KAAK,QAAQ,OAAO,KAAK,KAAK,KAAK;AAAA,QACnC,MAAM,IAAI,MAAM,0BAA0B,oBAAoB;AAAA,MAClE;AAAA;AAAA,IAEJ,iBAAiB,CAAC,KAAK;AAAA,MACnB,IAAI,IAAI;AAAA,QACJ,KAAK,mBAAmB,GAAG;AAAA,MAE3B;AAAA,kBAAU,cAAc,KAAK,MAAM,GAAG;AAAA,MAE1C,IAAI,CAAC,IAAI;AAAA,QACL,MAAM,IAAI,MAAM,0BAA0B;AAAA,MAC9C,OAAO,IAAI;AAAA;AAAA,IAEf,kBAAkB,CAAC,KAAK;AAAA,MACpB,MAAM,cAAc,KAAK;AAAA,MACzB,KAAK,OAAO,KAAK;AAAA,MACjB,IAAI;AAAA,QACA,UAAU,cAAc,KAAK,MAAM,GAAG;AAAA,gBAE1C;AAAA,QACI,KAAK,OAAO;AAAA;AAAA;AAAA,EAGxB;AAAA,EACA,IAAI,kBAAkB,mBAAmB;AAAA,EACzC,IAAI,kBAAkB,YAAY;AAAA,EAC1B,kBAAU;AAAA,EAClB,SAAS,YAAY,CAAC,WAAW,SAAS,KAAK,MAAM,SAAS;AAAA,IAC1D,WAAW,OAAO,WAAW;AAAA,MACzB,MAAM,MAAM;AAAA,MACZ,IAAI,OAAO;AAAA,QACP,KAAK,OAAO,KAAK,GAAG,eAAe,QAAQ,UAAU,MAAM;AAAA,IACnE;AAAA;AAAA,EAEJ,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,UAAU,GAAG,UAAU,aAAa,MAAM;AAAA,IAC1C,OAAO,KAAK,QAAQ,WAAW,KAAK,KAAK;AAAA;AAAA,EAE7C,SAAS,iBAAiB,GAAG;AAAA,IACzB,MAAM,cAAc,KAAK,KAAK;AAAA,IAC9B,IAAI,CAAC;AAAA,MACD;AAAA,IACJ,IAAI,MAAM,QAAQ,WAAW;AAAA,MACzB,KAAK,UAAU,WAAW;AAAA,IAE1B;AAAA,iBAAW,OAAO;AAAA,QACd,KAAK,UAAU,YAAY,MAAM,GAAG;AAAA;AAAA,EAEhD,SAAS,iBAAiB,GAAG;AAAA,IACzB,WAAW,QAAQ,KAAK,KAAK,SAAS;AAAA,MAClC,MAAM,SAAS,KAAK,KAAK,QAAQ;AAAA,MACjC,IAAI;AAAA,QACA,KAAK,UAAU,MAAM,MAAM;AAAA,IACnC;AAAA;AAAA,EAEJ,SAAS,kBAAkB,CAAC,MAAM;AAAA,IAC9B,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,MACrB,KAAK,cAAc,IAAI;AAAA,MACvB;AAAA,IACJ;AAAA,IACA,KAAK,OAAO,KAAK,kDAAkD;AAAA,IACnE,WAAW,WAAW,MAAM;AAAA,MACxB,MAAM,MAAM,KAAK;AAAA,MACjB,IAAI,CAAC,IAAI;AAAA,QACL,IAAI,UAAU;AAAA,MAClB,KAAK,WAAW,GAAG;AAAA,IACvB;AAAA;AAAA,EAEJ,SAAS,oBAAoB,GAAG;AAAA,IAC5B,MAAM,WAAW,KAAK,KAAK,KAAK;AAAA,IAChC,WAAW,OAAO;AAAA,MACd,OAAO,SAAS;AAAA,IACpB,OAAO;AAAA;AAAA,EAEX,IAAM,SAAS,EAAE,GAAG,GAAG,IAAK,IAAI,GAAG,IAAK,KAAK,GAAG,GAAI;AAAA,EACpD,SAAS,SAAS,CAAC,QAAQ;AAAA,IACvB,IAAI,WAAW;AAAA,MACX,OAAO;AAAA,IACX,IAAI,WAAW;AAAA,MACX,OAAO;AAAA,IACX,IAAI,OAAO,OAAO,OAAO,QAAQ,OAAO;AAAA,MACpC,OAAO;AAAA,IACX,MAAM,IAAI,MAAM,mDAAmD;AAAA;AAAA,EAEvE,IAAM,eAAe;AAAA,EACrB,SAAS,YAAY,CAAC,SAAS,KAAK;AAAA,IAChC,QAAQ,UAAU;AAAA,KACjB,GAAG,OAAO,UAAU,SAAS,CAAC,QAAQ;AAAA,MACnC,IAAI,MAAM,SAAS;AAAA,QACf,MAAM,IAAI,MAAM,WAAW,wBAAwB;AAAA,MACvD,IAAI,CAAC,aAAa,KAAK,GAAG;AAAA,QACtB,MAAM,IAAI,MAAM,WAAW,sBAAsB;AAAA,KACxD;AAAA,IACD,IAAI,CAAC;AAAA,MACD;AAAA,IACJ,IAAI,IAAI,SAAS,GAAE,UAAU,SAAO,cAAc,OAAM;AAAA,MACpD,MAAM,IAAI,MAAM,uDAAuD;AAAA,IAC3E;AAAA;AAAA,EAEJ,SAAS,OAAO,CAAC,SAAS,YAAY,UAAU;AAAA,IAC5C,IAAI;AAAA,IACJ,MAAM,OAAO,eAAe,QAAQ,eAAoB,YAAS,YAAI,WAAW;AAAA,IAChF,IAAI,YAAY;AAAA,MACZ,MAAM,IAAI,MAAM,6CAA6C;AAAA,IACjE,QAAQ,UAAU;AAAA,IAClB,IAAI,YAAY,OAAO,MAAM,OAAO,MAAM,MAAM,KAAK,GAAG,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACpF,IAAI,CAAC,WAAW;AAAA,MACZ,YAAY,EAAE,MAAM,UAAU,OAAO,CAAC,EAAE;AAAA,MACxC,MAAM,MAAM,KAAK,SAAS;AAAA,IAC9B;AAAA,IACA,MAAM,SAAS,WAAW;AAAA,IAC1B,IAAI,CAAC;AAAA,MACD;AAAA,IACJ,MAAM,OAAO;AAAA,MACT;AAAA,MACA,YAAY;AAAA,WACL;AAAA,QACH,OAAO,GAAG,WAAW,cAAc,WAAW,IAAI;AAAA,QAClD,aAAa,GAAG,WAAW,cAAc,WAAW,UAAU;AAAA,MAClE;AAAA,IACJ;AAAA,IACA,IAAI,WAAW;AAAA,MACX,cAAc,KAAK,MAAM,WAAW,MAAM,WAAW,MAAM;AAAA,IAE3D;AAAA,gBAAU,MAAM,KAAK,IAAI;AAAA,IAC7B,MAAM,IAAI,WAAW;AAAA,KACpB,KAAK,WAAW,gBAAgB,QAAQ,OAAY,aAAa,GAAG,QAAQ,CAAC,QAAQ,KAAK,WAAW,GAAG,CAAC;AAAA;AAAA,EAE9G,SAAS,aAAa,CAAC,WAAW,MAAM,QAAQ;AAAA,IAC5C,MAAM,IAAI,UAAU,MAAM,UAAU,CAAC,UAAU,MAAM,YAAY,MAAM;AAAA,IACvE,IAAI,KAAK,GAAG;AAAA,MACR,UAAU,MAAM,OAAO,GAAG,GAAG,IAAI;AAAA,IACrC,EACK;AAAA,MACD,UAAU,MAAM,KAAK,IAAI;AAAA,MACzB,KAAK,OAAO,KAAK,QAAQ,uBAAuB;AAAA;AAAA;AAAA,EAGxD,SAAS,iBAAiB,CAAC,KAAK;AAAA,IAC5B,MAAM,eAAe;AAAA,IACrB,IAAI,eAAe;AAAA,MACf;AAAA,IACJ,IAAI,IAAI,SAAS,KAAK,KAAK;AAAA,MACvB,aAAa,aAAa,UAAU;AAAA,IACxC,IAAI,iBAAiB,KAAK,QAAQ,YAAY,IAAI;AAAA;AAAA,EAEtD,IAAM,WAAW;AAAA,IACb,MAAM;AAAA,EACV;AAAA,EACA,SAAS,YAAY,CAAC,QAAQ;AAAA,IAC1B,OAAO,EAAE,OAAO,CAAC,QAAQ,QAAQ,EAAE;AAAA;AAAA;;;;ECtmBvC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,IAAI,GAAG;AAAA,MACH,MAAM,IAAI,MAAM,sDAAsD;AAAA;AAAA,EAE9E;AAAA,EACQ,kBAAU;AAAA;;;;ECPlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kBAAkB,sBAAmB;AAAA,EAC7C,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,MAAM,OAAO;AAAA,MAClC,QAAQ,QAAQ,WAAW,KAAK,cAAc,MAAM,SAAS;AAAA,MAC7D,QAAQ,SAAS;AAAA,MACjB,KAAK,SAAS,OAAO,SAAS,SAAS,WAAW,KAAK;AAAA,QACnD,OAAO,YAAY;AAAA,MACvB,MAAM,WAAW,UAAU,WAAW,KAAK,MAAM,MAAM,QAAQ,IAAI;AAAA,MACnE,IAAI,aAAa;AAAA,QACb,MAAM,IAAI,YAAY,QAAQ,GAAG,KAAK,aAAa,QAAQ,IAAI;AAAA,MACnE,IAAI,oBAAoB,UAAU;AAAA,QAC9B,OAAO,aAAa,QAAQ;AAAA,MAChC,OAAO,gBAAgB,QAAQ;AAAA,MAC/B,SAAS,WAAW,GAAG;AAAA,QACnB,IAAI,QAAQ;AAAA,UACR,OAAO,QAAQ,KAAK,cAAc,KAAK,IAAI,MAAM;AAAA,QACrD,MAAM,WAAW,IAAI,WAAW,QAAQ,EAAE,KAAK,KAAK,CAAC;AAAA,QACrD,OAAO,QAAQ,KAAM,IAAG,UAAU,KAAM,qBAAqB,MAAM,KAAK,MAAM;AAAA;AAAA,MAElF,SAAS,YAAY,CAAC,KAAK;AAAA,QACvB,MAAM,IAAI,YAAY,KAAK,GAAG;AAAA,QAC9B,QAAQ,KAAK,GAAG,KAAK,IAAI,MAAM;AAAA;AAAA,MAEnC,SAAS,eAAe,CAAC,KAAK;AAAA,QAC1B,MAAM,UAAU,IAAI,WAAW,UAAU,KAAK,KAAK,WAAW,OAAO,EAAE,KAAK,KAAK,OAAO,GAAG,UAAU,WAAW,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,QACrI,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,QAC9B,MAAM,SAAS,IAAI,UAAU;AAAA,UACzB,QAAQ;AAAA,UACR,WAAW,CAAC;AAAA,UACZ,YAAY,UAAU;AAAA,UACtB,cAAc;AAAA,UACd,eAAe;AAAA,QACnB,GAAG,KAAK;AAAA,QACR,IAAI,eAAe,MAAM;AAAA,QACzB,IAAI,GAAG,KAAK;AAAA;AAAA;AAAA,EAGxB;AAAA,EACA,SAAS,WAAW,CAAC,KAAK,KAAK;AAAA,IAC3B,QAAQ,QAAQ;AAAA,IAChB,OAAO,IAAI,WACL,IAAI,WAAW,YAAY,EAAE,KAAK,IAAI,SAAS,CAAC,IAC/C,IAAG,UAAU,KAAM,IAAI,WAAW,WAAW,EAAE,KAAK,IAAI,CAAC;AAAA;AAAA,EAE5D,sBAAc;AAAA,EACtB,SAAS,OAAO,CAAC,KAAK,GAAG,KAAK,QAAQ;AAAA,IAClC,QAAQ,KAAK,OAAO;AAAA,IACpB,QAAQ,WAAW,WAAW,KAAK,SAAS;AAAA,IAC5C,MAAM,UAAU,KAAK,cAAc,QAAQ,QAAQ,OAAO,UAAU;AAAA,IACpE,IAAI;AAAA,MACA,aAAa;AAAA,IAEb;AAAA,kBAAY;AAAA,IAChB,SAAS,YAAY,GAAG;AAAA,MACpB,IAAI,CAAC,IAAI;AAAA,QACL,MAAM,IAAI,MAAM,wCAAwC;AAAA,MAC5D,MAAM,QAAQ,IAAI,IAAI,OAAO;AAAA,MAC7B,IAAI,IAAI,MAAM;AAAA,QACV,IAAI,KAAM,IAAG,UAAU,YAAa,GAAG,OAAO,kBAAkB,KAAK,GAAG,OAAO,GAAG;AAAA,QAClF,iBAAiB,CAAC;AAAA,QAClB,IAAI,CAAC;AAAA,UACD,IAAI,OAAO,OAAO,IAAI;AAAA,SAC3B,CAAC,MAAM;AAAA,QACN,IAAI,GAAI,IAAG,UAAU,OAAQ,gBAAgB,GAAG,oBAAoB,MAAM,IAAI,MAAM,CAAC,CAAC;AAAA,QACtF,cAAc,CAAC;AAAA,QACf,IAAI,CAAC;AAAA,UACD,IAAI,OAAO,OAAO,KAAK;AAAA,OAC9B;AAAA,MACD,IAAI,GAAG,KAAK;AAAA;AAAA,IAEhB,SAAS,WAAW,GAAG;AAAA,MACnB,IAAI,QAAQ,GAAG,OAAO,kBAAkB,KAAK,GAAG,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,MAAM,cAAc,CAAC,CAAC;AAAA;AAAA,IAE/G,SAAS,aAAa,CAAC,QAAQ;AAAA,MAC3B,MAAM,OAAQ,IAAG,UAAU,KAAM;AAAA,MACjC,IAAI,OAAO,QAAQ,QAAQ,SAAU,IAAG,UAAU,KAAM,QAAQ,QAAQ,sBAAsB,UAAU,QAAQ,QAAQ,kBAAkB,OAAO;AAAA,MACjJ,IAAI,OAAO,QAAQ,QAAQ,QAAS,IAAG,UAAU,KAAM,QAAQ,QAAQ,gBAAgB;AAAA;AAAA,IAE3F,SAAS,gBAAgB,CAAC,QAAQ;AAAA,MAC9B,IAAI;AAAA,MACJ,IAAI,CAAC,GAAG,KAAK;AAAA,QACT;AAAA,MACJ,MAAM,gBAAgB,KAAK,QAAQ,QAAQ,QAAa,YAAS,YAAI,IAAI,cAAc,QAAQ,OAAY,YAAS,YAAI,GAAG;AAAA,MAE3H,IAAI,GAAG,UAAU,MAAM;AAAA,QACnB,IAAI,gBAAgB,CAAC,aAAa,cAAc;AAAA,UAC5C,IAAI,aAAa,UAAU,WAAW;AAAA,YAClC,GAAG,QAAQ,OAAO,eAAe,MAAM,KAAK,aAAa,OAAO,GAAG,KAAK;AAAA,UAC5E;AAAA,QACJ,EACK;AAAA,UACD,MAAM,QAAQ,IAAI,IAAI,SAAU,IAAG,UAAU,KAAM,wBAAwB;AAAA,UAC3E,GAAG,QAAQ,OAAO,eAAe,MAAM,KAAK,OAAO,GAAG,OAAO,UAAU,IAAI;AAAA;AAAA,MAEnF;AAAA,MACA,IAAI,GAAG,UAAU,MAAM;AAAA,QACnB,IAAI,gBAAgB,CAAC,aAAa,cAAc;AAAA,UAC5C,IAAI,aAAa,UAAU,WAAW;AAAA,YAClC,GAAG,QAAQ,OAAO,eAAe,MAAM,KAAK,aAAa,OAAO,GAAG,KAAK;AAAA,UAC5E;AAAA,QACJ,EACK;AAAA,UACD,MAAM,QAAQ,IAAI,IAAI,SAAU,IAAG,UAAU,KAAM,wBAAwB;AAAA,UAC3E,GAAG,QAAQ,OAAO,eAAe,MAAM,KAAK,OAAO,GAAG,OAAO,UAAU,IAAI;AAAA;AAAA,MAEnF;AAAA;AAAA;AAAA,EAGA,kBAAU;AAAA,EACV,kBAAU;AAAA;;;;ECvHlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,OAAO;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,EAAE,SAAS,WAAW;AAAA,IACtB;AAAA,IACA,KAAK;AAAA,IACL,MAAM;AAAA,EACV;AAAA,EACQ,kBAAU;AAAA;;;;ECblB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM,UAAU;AAAA,EACtB,IAAM,OAAO;AAAA,IACT,SAAS,EAAE,OAAO,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,GAAG;AAAA,IAClD,SAAS,EAAE,OAAO,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,GAAG;AAAA,IAClD,kBAAkB,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;AAAA,IAC1D,kBAAkB,EAAE,OAAO,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI;AAAA,EAC9D;AAAA,EACA,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,SAAS,iBAAkB,IAAG,UAAU,eAAgB,KAAK,SAAS,SAAS;AAAA,IAC3F,QAAQ,GAAG,SAAS,iBAAkB,IAAG,UAAU,kBAAmB,KAAK,SAAS,iBAAiB;AAAA,EACzG;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS,OAAO,KAAK,IAAI;AAAA,IACzB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,SAAS,MAAM,eAAe;AAAA,MACtC,IAAI,UAAW,IAAG,UAAU,KAAM,QAAQ,KAAK,SAAS,QAAQ,uBAAuB,OAAO;AAAA;AAAA,EAEtG;AAAA,EACQ,kBAAU;AAAA;;;;ECxBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,iBAAkB,IAAG,UAAU,2BAA4B;AAAA,IACvE,QAAQ,GAAG,iBAAkB,IAAG,UAAU,kBAAmB;AAAA,EACjE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,MAAM,YAAY,OAAO;AAAA,MAEtC,MAAM,OAAO,GAAG,KAAK;AAAA,MACrB,MAAM,MAAM,IAAI,IAAI,KAAK;AAAA,MACzB,MAAM,UAAU,OACT,IAAG,UAAU,yBAA0B,UAAU,aAAa,SAC9D,IAAG,UAAU,KAAM,oBAAoB;AAAA,MAC9C,IAAI,UAAW,IAAG,UAAU,MAAO,wBAAwB,SAAS,QAAQ,eAAe,WAAW;AAAA;AAAA,EAE9G;AAAA,EACQ,kBAAU;AAAA;;;;ECvBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAG5D,SAAS,UAAU,CAAC,KAAK;AAAA,IACrB,MAAM,MAAM,IAAI;AAAA,IAChB,IAAI,SAAS;AAAA,IACb,IAAI,MAAM;AAAA,IACV,IAAI;AAAA,IACJ,OAAO,MAAM,KAAK;AAAA,MACd;AAAA,MACA,QAAQ,IAAI,WAAW,KAAK;AAAA,MAC5B,IAAI,SAAS,SAAU,SAAS,SAAU,MAAM,KAAK;AAAA,QAEjD,QAAQ,IAAI,WAAW,GAAG;AAAA,QAC1B,KAAK,QAAQ,WAAY;AAAA,UACrB;AAAA,MACR;AAAA,IACJ;AAAA,IACA,OAAO;AAAA;AAAA,EAEH,kBAAU;AAAA,EAClB,WAAW,OAAO;AAAA;;;;ECrBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,OAAO,GAAG,SAAS,cAAc;AAAA,MAC7B,MAAM,OAAO,YAAY,cAAc,SAAS;AAAA,MAChD,OAAQ,IAAG,UAAU,qBAAsB,aAAa;AAAA;AAAA,IAE5D,QAAQ,GAAG,iBAAkB,IAAG,UAAU,aAAc;AAAA,EAC5D;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS,CAAC,aAAa,WAAW;AAAA,IAClC,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,SAAS,MAAM,YAAY,OAAO;AAAA,MAC1C,MAAM,KAAK,YAAY,cAAc,UAAU,UAAU,KAAK,UAAU,UAAU;AAAA,MAClF,MAAM,MAAM,GAAG,KAAK,YAAY,QAAS,IAAG,UAAU,KAAM,gBAAiB,IAAG,UAAU,MAAO,GAAG,OAAO,SAAS,IAAI,KAAK,aAAa,OAAO,KAAK;AAAA,MACtJ,IAAI,UAAW,IAAG,UAAU,KAAM,OAAO,MAAM,YAAY;AAAA;AAAA,EAEnE;AAAA,EACQ,kBAAU;AAAA;;;;ECxBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,iBAAkB,IAAG,UAAU,2BAA4B;AAAA,IACvE,QAAQ,GAAG,iBAAkB,IAAG,UAAU,eAAgB;AAAA,EAC9D;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,MAAM,OAAO,QAAQ,YAAY,OAAO;AAAA,MAEhD,MAAM,IAAI,GAAG,KAAK,gBAAgB,MAAM;AAAA,MACxC,MAAM,SAAS,QAAS,IAAG,UAAU,iBAAkB,eAAe,SAAS,GAAG,OAAO,YAAY,KAAK,MAAM;AAAA,MAChH,IAAI,UAAW,IAAG,UAAU,MAAO,eAAe,OAAO;AAAA;AAAA,EAEjE;AAAA,EACQ,kBAAU;AAAA;;;;ECrBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,OAAO,GAAG,SAAS,cAAc;AAAA,MAC7B,MAAM,OAAO,YAAY,kBAAkB,SAAS;AAAA,MACpD,OAAQ,IAAG,UAAU,qBAAsB,aAAa;AAAA;AAAA,IAE5D,QAAQ,GAAG,iBAAkB,IAAG,UAAU,aAAc;AAAA,EAC5D;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS,CAAC,iBAAiB,eAAe;AAAA,IAC1C,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,SAAS,MAAM,eAAe;AAAA,MACtC,MAAM,KAAK,YAAY,kBAAkB,UAAU,UAAU,KAAK,UAAU,UAAU;AAAA,MACtF,IAAI,UAAW,IAAG,UAAU,iBAAkB,gBAAgB,MAAM,YAAY;AAAA;AAAA,EAExF;AAAA,EACQ,kBAAU;AAAA;;;;ECrBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,UAAU,wBAAyB,IAAG,UAAU,oCAAqC;AAAA,IACjG,QAAQ,GAAG,UAAU,wBAAyB,IAAG,UAAU,uBAAwB;AAAA,EACvF;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,YAAY,MAAM,OAAO,OAAO;AAAA,MACrD,QAAQ,SAAS;AAAA,MACjB,IAAI,CAAC,SAAS,OAAO,WAAW;AAAA,QAC5B;AAAA,MACJ,MAAM,UAAU,OAAO,UAAU,KAAK;AAAA,MACtC,IAAI,GAAG;AAAA,QACH,cAAc;AAAA,MAEd;AAAA,wBAAgB;AAAA,MACpB,IAAI,KAAK,gBAAgB;AAAA,QACrB,MAAM,QAAQ,IAAI,aAAa;AAAA,QAC/B,QAAQ,sBAAsB,IAAI;AAAA,QAClC,WAAW,eAAe,QAAQ;AAAA,UAC9B,KAAK,UAAU,QAAQ,UAAe,YAAS,YAAI,MAAM,kBAAkB,aAAa,CAAC,kBAAkB,IAAI,WAAW,GAAG;AAAA,YACzH,MAAM,aAAa,GAAG,UAAU,SAAS,GAAG;AAAA,YAC5C,MAAM,MAAM,sBAAsB,mCAAmC;AAAA,aACpE,GAAG,OAAO,iBAAiB,IAAI,KAAK,GAAG,KAAK,cAAc;AAAA,UAC/D;AAAA,QACJ;AAAA,MACJ;AAAA,MACA,SAAS,aAAa,GAAG;AAAA,QACrB,IAAI,WAAW,OAAO;AAAA,UAClB,IAAI,WAAW,UAAU,KAAK,eAAe;AAAA,QACjD,EACK;AAAA,UACD,WAAW,QAAQ,QAAQ;AAAA,aACtB,GAAG,OAAO,wBAAwB,KAAK,IAAI;AAAA,UAChD;AAAA;AAAA;AAAA,MAGR,SAAS,eAAe,GAAG;AAAA,QACvB,MAAM,UAAU,IAAI,IAAI,SAAS;AAAA,QACjC,IAAI,WAAW,OAAO;AAAA,UAClB,MAAM,QAAQ,IAAI,IAAI,SAAS,IAAI;AAAA,UACnC,IAAI,WAAW,OAAO,MAAM,iBAAiB,SAAS,KAAK,CAAC;AAAA,UAC5D,IAAI,GAAG,KAAK;AAAA,QAChB,EACK;AAAA,UACD,IAAI,IAAI,GAAG,OAAO,kBAAkB,KAAK,QAAQ,OAAO,CAAC;AAAA,WACxD,GAAG,OAAO,mBAAmB,KAAK,OAAO;AAAA,UAC1C,IAAI,KAAK;AAAA;AAAA;AAAA,MAGjB,SAAS,eAAe,GAAG;AAAA,QACvB,IAAI,MAAM,QAAQ,YAAY,CAAC,SAAS;AAAA,UACpC,IAAI,UAAU,EAAE,iBAAiB,KAAK,CAAC;AAAA,UACvC,IAAI,IAAI,GAAG,OAAO,kBAAkB,KAAK,MAAM,MAAM,KAAK,aAAa,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA,SAC9F;AAAA;AAAA,MAEL,SAAS,gBAAgB,CAAC,SAAS,OAAO;AAAA,QACtC,IAAI,UAAU,EAAE,iBAAiB,QAAQ,CAAC;AAAA,QAC1C,IAAI,MAAM,SAAS,YAAY,MAAM;AAAA,UACjC,IAAI,OAAO,QAAQ,GAAG,OAAO,gBAAgB,KAAK,MAAM,SAAS,KAAK,aAAa,CAAC;AAAA,UACpF,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM;AAAA,YACpC,IAAI,MAAM;AAAA,YACV,IAAI,MAAM;AAAA,WACb;AAAA,WACF,UAAU,GAAG;AAAA;AAAA;AAAA,EAG5B;AAAA,EACQ,kBAAU;AAAA;;;;EC5ElB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,OAAO,GAAG,SAAS,cAAc;AAAA,MAC7B,MAAM,OAAO,YAAY,aAAa,SAAS;AAAA,MAC/C,OAAQ,IAAG,UAAU,qBAAsB,aAAa;AAAA;AAAA,IAE5D,QAAQ,GAAG,iBAAkB,IAAG,UAAU,aAAc;AAAA,EAC5D;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS,CAAC,YAAY,UAAU;AAAA,IAChC,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,SAAS,MAAM,eAAe;AAAA,MACtC,MAAM,KAAK,YAAY,aAAa,UAAU,UAAU,KAAK,UAAU,UAAU;AAAA,MACjF,IAAI,UAAW,IAAG,UAAU,KAAM,eAAe,MAAM,YAAY;AAAA;AAAA,EAE3E;AAAA,EACQ,kBAAU;AAAA;;;;ECrBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAE5D,IAAM;AAAA,EACN,MAAM,OAAO;AAAA,EACL,kBAAU;AAAA;;;;ECJlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,UAAU,GAAG,UAAW,IAAG,UAAU,+CAAgD,SAAS;AAAA,IAC1G,QAAQ,GAAG,UAAU,GAAG,UAAW,IAAG,UAAU,SAAU,SAAS;AAAA,EACvE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,MAAM,OAAO,QAAQ,cAAc,YAAY,OAAO;AAAA,MACnE,IAAI,CAAC,SAAS,CAAC;AAAA,QACX;AAAA,MACJ,MAAM,QAAQ,IAAI,IAAI,OAAO;AAAA,MAC7B,MAAM,YAAY,aAAa,SAAS,GAAG,WAAW,gBAAgB,aAAa,KAAK,IAAI,CAAC;AAAA,MAC7F,IAAI,WAAW,OAAO,qBAAsB,IAAG,UAAU,KAAM,sBAAsB;AAAA,MACrF,IAAI,GAAG,KAAK;AAAA,MACZ,SAAS,mBAAmB,GAAG;AAAA,QAC3B,MAAM,IAAI,IAAI,IAAI,KAAM,IAAG,UAAU,KAAM,aAAa;AAAA,QACxD,MAAM,IAAI,IAAI,IAAI,GAAG;AAAA,QACrB,IAAI,UAAU,EAAE,GAAG,EAAE,CAAC;AAAA,QACtB,IAAI,OAAO,OAAO,IAAI;AAAA,QACtB,IAAI,GAAI,IAAG,UAAU,KAAM,SAAS,OAAO,YAAY,IAAI,QAAQ,QAAQ,GAAG,CAAC,CAAC;AAAA;AAAA,MAEpF,SAAS,WAAW,GAAG;AAAA,QACnB,OAAO,UAAU,SAAS,KAAK,CAAC,UAAU,KAAK,CAAC,MAAM,MAAM,YAAY,MAAM,OAAO;AAAA;AAAA,MAEzF,SAAS,KAAK,CAAC,GAAG,GAAG;AAAA,QACjB,MAAM,OAAO,IAAI,KAAK,MAAM;AAAA,QAC5B,MAAM,aAAa,GAAG,WAAW,gBAAgB,WAAW,MAAM,GAAG,KAAK,eAAe,WAAW,SAAS,KAAK;AAAA,QAClH,MAAM,UAAU,IAAI,MAAM,WAAY,IAAG,UAAU,MAAO;AAAA,QAC1D,IAAI,IAAK,IAAG,UAAU,MAAO,QAAQ,MAAM;AAAA,UACvC,IAAI,IAAI,MAAO,IAAG,UAAU,KAAM,QAAQ,IAAI;AAAA,UAC9C,IAAI,GAAG,WAAY,IAAG,UAAU,YAAa;AAAA,UAC7C,IAAI,UAAU,SAAS;AAAA,YACnB,IAAI,GAAI,IAAG,UAAU,YAAa,oBAAqB,IAAG,UAAU,KAAM,aAAa;AAAA,UAC3F,IACK,GAAI,IAAG,UAAU,YAAa,WAAW,qBAAqB,MAAM;AAAA,YACrE,IAAI,OAAO,GAAI,IAAG,UAAU,KAAM,WAAW,OAAO;AAAA,YACpD,IAAI,MAAM;AAAA,YACV,IAAI,OAAO,OAAO,KAAK,EAAE,MAAM;AAAA,WAClC,EACI,KAAM,IAAG,UAAU,KAAM,WAAW,WAAW,GAAG;AAAA,SAC1D;AAAA;AAAA,MAEL,SAAS,MAAM,CAAC,GAAG,GAAG;AAAA,QAClB,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,OAAO;AAAA,QACpD,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,QAC9B,IAAI,MAAM,KAAK,EAAE,IAAK,IAAG,UAAU,MAAO,QAAQ,MAAM,IAAI,IAAK,IAAG,UAAU,KAAM,OAAO,MAAM,QAAQ,MAAM,IAAI,GAAI,IAAG,UAAU,KAAM,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,UACjL,IAAI,MAAM;AAAA,UACV,IAAI,OAAO,OAAO,KAAK,EAAE,MAAM,KAAK;AAAA,SACvC,CAAC,CAAC;AAAA;AAAA;AAAA,EAGf;AAAA,EACQ,kBAAU;AAAA;;;;EC7DlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS;AAAA,IACT,QAAQ,GAAG,iBAAkB,IAAG,UAAU,oBAAqB;AAAA,EACnE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,MAAM,OAAO,YAAY,WAAW;AAAA,MACjD,IAAI,SAAU,UAAU,OAAO,UAAU,UAAW;AAAA,QAChD,IAAI,UAAW,IAAG,UAAU,OAAQ,GAAG,OAAO,SAAS,KAAK,QAAQ,OAAO,KAAK,SAAS,aAAa;AAAA,MAC1G,EACK;AAAA,QACD,IAAI,KAAM,IAAG,UAAU,KAAM,cAAc,MAAM;AAAA;AAAA;AAAA,EAG7D;AAAA,EACQ,kBAAU;AAAA;;;;ECtBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS;AAAA,IACT,QAAQ,GAAG,iBAAkB,IAAG,UAAU,qBAAsB;AAAA,EACpE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,MAAM,OAAO,QAAQ,YAAY,OAAO;AAAA,MACrD,IAAI,CAAC,SAAS,OAAO,WAAW;AAAA,QAC5B,MAAM,IAAI,MAAM,gCAAgC;AAAA,MACpD,MAAM,UAAU,OAAO,UAAU,GAAG,KAAK;AAAA,MACzC,IAAI;AAAA,MACJ,MAAM,SAAS,MAAO,QAAQ,QAAQ,QAAa,YAAI,MAAO,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,OAAO;AAAA,MAC5G,IAAI;AAAA,MACJ,IAAI,WAAW,OAAO;AAAA,QAClB,QAAQ,IAAI,IAAI,OAAO;AAAA,QACvB,IAAI,WAAW,OAAO,QAAQ;AAAA,MAClC,EACK;AAAA,QAED,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,UACrB,MAAM,IAAI,MAAM,0BAA0B;AAAA,QAC9C,MAAM,UAAU,IAAI,MAAM,WAAW,UAAU;AAAA,QAC/C,SAAS,GAAG,UAAU,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,MAAM,UAAU,SAAS,CAAC,CAAC,CAAC;AAAA;AAAA,MAE7E,IAAI,KAAK,KAAK;AAAA,MACd,SAAS,QAAQ,GAAG;AAAA,QAChB,IAAI,OAAO,OAAO,KAAK;AAAA,QACvB,IAAI,MAAM,KAAK,YAAY,CAAC,MAAM,IAAI,GAAI,IAAG,UAAU,KAAM,OAAO,KAAK,SAAS,MAAM,MAAM,IAAI,OAAO,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;AAAA;AAAA,MAElI,SAAS,SAAS,CAAC,SAAS,GAAG;AAAA,QAC3B,MAAM,MAAM,OAAO;AAAA,QACnB,OAAO,OAAO,QAAQ,YAAY,QAAQ,OACnC,IAAG,UAAU,KAAM,OAAO,KAAK,SAAS,WAAW,QACnD,IAAG,UAAU,KAAM,YAAY;AAAA;AAAA;AAAA,EAGlD;AAAA,EACQ,kBAAU;AAAA;;;;EC7ClB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,aAAa;AAAA,IAEf,cAAc;AAAA,IACd,aAAa;AAAA,IAEb,cAAc;AAAA,IACd,UAAU;AAAA,IAEV,kBAAkB;AAAA,IAClB,WAAW;AAAA,IAEX,aAAa;AAAA,IACb,cAAc;AAAA,IAEd,EAAE,SAAS,QAAQ,YAAY,CAAC,UAAU,OAAO,EAAE;AAAA,IACnD,EAAE,SAAS,YAAY,YAAY,UAAU;AAAA,IAC7C,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AAAA,EACQ,kBAAU;AAAA;;;;EC9BlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kCAA+B;AAAA,EACvC,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,UAAU,YAAa,IAAG,UAAU,+BAAgC;AAAA,IAChF,QAAQ,GAAG,UAAU,YAAa,IAAG,UAAU,aAAc;AAAA,EACjE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,QAAQ;AAAA,IAChC,QAAQ;AAAA,IACR;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,cAAc,OAAO;AAAA,MAC7B,QAAQ,UAAU;AAAA,MAClB,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAAA,SACtB,GAAG,OAAO,iBAAiB,IAAI,sEAAsE;AAAA,QACtG;AAAA,MACJ;AAAA,MACA,wBAAwB,KAAK,KAAK;AAAA;AAAA,EAE1C;AAAA,EACA,SAAS,uBAAuB,CAAC,KAAK,OAAO;AAAA,IACzC,QAAQ,KAAK,QAAQ,MAAM,SAAS,OAAO;AAAA,IAC3C,GAAG,QAAQ;AAAA,IACX,MAAM,MAAM,IAAI,MAAM,OAAQ,IAAG,UAAU,KAAM,aAAa;AAAA,IAC9D,IAAI,WAAW,OAAO;AAAA,MAClB,IAAI,UAAU,EAAE,KAAK,MAAM,OAAO,CAAC;AAAA,MACnC,IAAI,KAAM,IAAG,UAAU,KAAM,UAAU,MAAM,QAAQ;AAAA,IACzD,EACK,SAAI,OAAO,UAAU,YAAY,EAAE,GAAG,OAAO,mBAAmB,IAAI,MAAM,GAAG;AAAA,MAC9E,MAAM,QAAQ,IAAI,IAAI,SAAU,IAAG,UAAU,KAAM,UAAU,MAAM,QAAQ;AAAA,MAC3E,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM,cAAc,KAAK,CAAC;AAAA,MAC5D,IAAI,GAAG,KAAK;AAAA,IAChB;AAAA,IACA,SAAS,aAAa,CAAC,OAAO;AAAA,MAC1B,IAAI,SAAS,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAM;AAAA,QACxC,IAAI,UAAU,EAAE,SAAS,UAAU,GAAG,cAAc,OAAO,KAAK,IAAI,GAAG,KAAK;AAAA,QAC5E,IAAI,CAAC,GAAG;AAAA,UACJ,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA,OAC1D;AAAA;AAAA;AAAA,EAGD,kCAA0B;AAAA,EAC1B,kBAAU;AAAA;;;;EC9ClB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAqB;AAAA,EAC7B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,UAAU,SAAS,SAAS;AAAA,IACzC,QAAQ;AAAA,IACR,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,QAAQ,OAAO;AAAA,MACvB,IAAI,MAAM,QAAQ,MAAM;AAAA,QACpB,OAAO,cAAc,KAAK,mBAAmB,MAAM;AAAA,MACvD,GAAG,QAAQ;AAAA,MACX,KAAK,GAAG,OAAO,mBAAmB,IAAI,MAAM;AAAA,QACxC;AAAA,MACJ,IAAI,IAAI,GAAG,OAAO,eAAe,GAAG,CAAC;AAAA;AAAA,EAE7C;AAAA,EACA,SAAS,aAAa,CAAC,KAAK,YAAY,SAAS,IAAI,QAAQ;AAAA,IACzD,QAAQ,KAAK,cAAc,MAAM,SAAS,OAAO;AAAA,IACjD,iBAAiB,YAAY;AAAA,IAC7B,IAAI,GAAG,KAAK,eAAe,OAAO,UAAU,GAAG,UAAU,MAAM;AAAA,MAC3D,GAAG,QAAQ,OAAO,eAAe,MAAM,KAAK,OAAO,QAAQ,GAAG,KAAK;AAAA,IACvE;AAAA,IACA,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,IAC9B,MAAM,MAAM,IAAI,MAAM,OAAQ,IAAG,UAAU,KAAM,aAAa;AAAA,IAC9D,OAAO,QAAQ,CAAC,KAAK,MAAM;AAAA,MACvB,KAAK,GAAG,OAAO,mBAAmB,IAAI,GAAG;AAAA,QACrC;AAAA,MACJ,IAAI,GAAI,IAAG,UAAU,KAAM,SAAS,KAAK,MAAM,IAAI,UAAU;AAAA,QACzD;AAAA,QACA,YAAY;AAAA,QACZ,UAAU;AAAA,MACd,GAAG,KAAK,CAAC;AAAA,MACT,IAAI,GAAG,KAAK;AAAA,KACf;AAAA,IACD,SAAS,gBAAgB,CAAC,KAAK;AAAA,MAC3B,QAAQ,MAAM,kBAAkB;AAAA,MAChC,MAAM,IAAI,OAAO;AAAA,MACjB,MAAM,YAAY,MAAM,IAAI,aAAa,MAAM,IAAI,YAAY,IAAI,gBAAgB;AAAA,MACnF,IAAI,KAAK,gBAAgB,CAAC,WAAW;AAAA,QACjC,MAAM,MAAM,IAAI,eAAe,qCAAqC,sDAAsD;AAAA,SACzH,GAAG,OAAO,iBAAiB,IAAI,KAAK,KAAK,YAAY;AAAA,MAC1D;AAAA;AAAA;AAAA,EAGA,wBAAgB;AAAA,EAChB,kBAAU;AAAA;;;;ECjDlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,OAAO;AAAA,IACpB,QAAQ;AAAA,IACR,MAAM,CAAC,SAAS,GAAG,QAAQ,eAAe,KAAK,OAAO;AAAA,EAC1D;AAAA,EACQ,kBAAU;AAAA;;;;ECTlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,UAAU,YAAa,IAAG,UAAU,+BAAgC;AAAA,IAChF,QAAQ,GAAG,UAAU,YAAa,IAAG,UAAU,aAAc;AAAA,EACjE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,UAAU,SAAS;AAAA,IAChC,QAAQ;AAAA,IACR;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,QAAQ,cAAc,OAAO;AAAA,MACrC,QAAQ,gBAAgB;AAAA,MACxB,GAAG,QAAQ;AAAA,MACX,KAAK,GAAG,OAAO,mBAAmB,IAAI,MAAM;AAAA,QACxC;AAAA,MACJ,IAAI;AAAA,SACC,GAAG,kBAAkB,yBAAyB,KAAK,WAAW;AAAA,MAE/D;AAAA,YAAI,IAAI,GAAG,OAAO,eAAe,GAAG,CAAC;AAAA;AAAA,EAEjD;AAAA,EACQ,kBAAU;AAAA;;;;EC3BlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,UAAU,KAAK,YAAY,QAAQ,YACxC,IAAG,UAAU,6BAA8B,sBAC3C,IAAG,UAAU,6BAA8B,wBAAwB;AAAA,IAC1E,QAAQ,GAAG,UAAU,KAAK,YAAY,QAAQ,YAAa,IAAG,UAAU,mBAAoB,SAAU,IAAG,UAAU,mBAAoB,qBAAqB;AAAA,EAChK;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,UAAU,SAAS;AAAA,IAChC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,cAAc,MAAM,OAAO;AAAA,MAChD,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,QAAQ,aAAa,gBAAgB;AAAA,MACrC,IAAI,GAAG,KAAK,MAAM;AAAA,QACd,MAAM,gBAAgB,YAAY,IAAI;AAAA,QACtC,MAAM;AAAA,MACV,EACK;AAAA,QACD,MAAM;AAAA;AAAA,MAEV,MAAM,MAAM,IAAI,MAAM,OAAQ,IAAG,UAAU,KAAM,aAAa;AAAA,MAC9D,IAAI,UAAU,EAAE,KAAK,IAAI,CAAC;AAAA,MAC1B,IAAI,QAAQ,aAAa,QAAQ,GAAG;AAAA,SAC/B,GAAG,OAAO,iBAAiB,IAAI,sEAAsE;AAAA,QACtG;AAAA,MACJ;AAAA,MACA,IAAI,QAAQ,aAAa,MAAM,KAAK;AAAA,SAC/B,GAAG,OAAO,iBAAiB,IAAI,iDAAiD;AAAA,QACjF,IAAI,KAAK;AAAA,QACT;AAAA,MACJ;AAAA,MACA,KAAK,GAAG,OAAO,mBAAmB,IAAI,MAAM,GAAG;AAAA,QAC3C,IAAI,OAAQ,IAAG,UAAU,KAAM,UAAU;AAAA,QACzC,IAAI,QAAQ;AAAA,UACR,OAAQ,IAAG,UAAU,KAAM,WAAW,UAAU;AAAA,QACpD,IAAI,KAAK,IAAI;AAAA,QACb;AAAA,MACJ;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,IAAI,QAAQ,aAAa,QAAQ,GAAG;AAAA,QAChC,cAAc,OAAO,MAAM,IAAI,GAAG,OAAO,MAAM,IAAI,MAAM,CAAC,CAAC;AAAA,MAC/D,EACK,SAAI,QAAQ,GAAG;AAAA,QAChB,IAAI,IAAI,OAAO,IAAI;AAAA,QACnB,IAAI,QAAQ;AAAA,UACR,IAAI,GAAI,IAAG,UAAU,KAAM,mBAAmB,sBAAsB;AAAA,MAC5E,EACK;AAAA,QACD,IAAI,IAAI,OAAO,KAAK;AAAA,QACpB,uBAAuB;AAAA;AAAA,MAE3B,IAAI,OAAO,OAAO,MAAM,IAAI,MAAM,CAAC;AAAA,MACnC,SAAS,sBAAsB,GAAG;AAAA,QAC9B,MAAM,WAAW,IAAI,KAAK,QAAQ;AAAA,QAClC,MAAM,QAAQ,IAAI,IAAI,SAAS,CAAC;AAAA,QAChC,cAAc,UAAU,MAAM,IAAI,GAAG,UAAU,MAAM,YAAY,KAAK,CAAC,CAAC;AAAA;AAAA,MAE5E,SAAS,aAAa,CAAC,QAAQ,OAAO;AAAA,QAClC,IAAI,SAAS,KAAK,GAAG,KAAK,CAAC,MAAM;AAAA,UAC7B,IAAI,UAAU;AAAA,YACV,SAAS;AAAA,YACT,UAAU;AAAA,YACV,cAAc,OAAO,KAAK;AAAA,YAC1B,eAAe;AAAA,UACnB,GAAG,MAAM;AAAA,UACT,MAAM;AAAA,SACT;AAAA;AAAA,MAEL,SAAS,WAAW,CAAC,OAAO;AAAA,QACxB,IAAI,KAAM,IAAG,UAAU,KAAM,SAAS;AAAA,QACtC,IAAI,QAAQ,WAAW;AAAA,UACnB,IAAI,GAAI,IAAG,UAAU,KAAM,YAAY,OAAO,MAAM,IAAI,OAAO,OAAO,IAAI,EAAE,MAAM,CAAC;AAAA,QACvF,EACK;AAAA,UACD,IAAI,GAAI,IAAG,UAAU,KAAM,WAAW,OAAO,MAAM,IAAI,OAAO,OAAO,KAAK,EAAE,MAAM,CAAC;AAAA,UACnF,IAAI,QAAQ;AAAA,YACR,IAAI,OAAO,OAAO,IAAI;AAAA,UAEtB;AAAA,gBAAI,GAAI,IAAG,UAAU,KAAM,YAAY,OAAO,MAAM,IAAI,OAAO,OAAO,IAAI,CAAC;AAAA;AAAA;AAAA;AAAA,EAI/F;AAAA,EACQ,kBAAU;AAAA;;;;EC5FlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,6BAA6B,+BAA+B,gBAAa;AAAA,EACjF,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACE,gBAAQ;AAAA,IACZ,SAAS,GAAG,UAAU,UAAU,WAAW,aAAa;AAAA,MACpD,MAAM,eAAe,cAAc,IAAI,aAAa;AAAA,MACpD,OAAQ,IAAG,UAAU,iBAAkB,gBAAgB,sBAAsB;AAAA;AAAA,IAEjF,QAAQ,GAAG,UAAU,UAAU,WAAW,MAAM,wBAAyB,IAAG,UAAU,gBAAiB;AAAA,uBACpF;AAAA,iBACN;AAAA,YACL;AAAA,EACZ;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAe;AAAA,IACf,IAAI,CAAC,KAAK;AAAA,MACN,OAAO,UAAU,WAAW,kBAAkB,GAAG;AAAA,MACjD,qBAAqB,KAAK,QAAQ;AAAA,MAClC,mBAAmB,KAAK,OAAO;AAAA;AAAA,EAEvC;AAAA,EACA,SAAS,iBAAiB,GAAG,UAAU;AAAA,IACnC,MAAM,eAAe,CAAC;AAAA,IACtB,MAAM,aAAa,CAAC;AAAA,IACpB,WAAW,OAAO,QAAQ;AAAA,MACtB,IAAI,QAAQ;AAAA,QACR;AAAA,MACJ,MAAM,OAAO,MAAM,QAAQ,OAAO,IAAI,IAAI,eAAe;AAAA,MACzD,KAAK,OAAO,OAAO;AAAA,IACvB;AAAA,IACA,OAAO,CAAC,cAAc,UAAU;AAAA;AAAA,EAEpC,SAAS,oBAAoB,CAAC,KAAK,eAAe,IAAI,QAAQ;AAAA,IAC1D,QAAQ,KAAK,MAAM,OAAO;AAAA,IAC1B,IAAI,OAAO,KAAK,YAAY,EAAE,WAAW;AAAA,MACrC;AAAA,IACJ,MAAM,UAAU,IAAI,IAAI,SAAS;AAAA,IACjC,WAAW,QAAQ,cAAc;AAAA,MAC7B,MAAM,OAAO,aAAa;AAAA,MAC1B,IAAI,KAAK,WAAW;AAAA,QAChB;AAAA,MACJ,MAAM,eAAe,GAAG,OAAO,gBAAgB,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa;AAAA,MACrF,IAAI,UAAU;AAAA,QACV,UAAU;AAAA,QACV,WAAW,KAAK;AAAA,QAChB,MAAM,KAAK,KAAK,IAAI;AAAA,MACxB,CAAC;AAAA,MACD,IAAI,GAAG,WAAW;AAAA,QACd,IAAI,GAAG,aAAa,MAAM;AAAA,UACtB,WAAW,WAAW,MAAM;AAAA,aACvB,GAAG,OAAO,wBAAwB,KAAK,OAAO;AAAA,UACnD;AAAA,SACH;AAAA,MACL,EACK;AAAA,QACD,IAAI,GAAI,IAAG,UAAU,KAAM,oBAAoB,GAAG,OAAO,kBAAkB,KAAK,MAAM,OAAO,IAAI;AAAA,SAChG,GAAG,OAAO,mBAAmB,KAAK,OAAO;AAAA,QAC1C,IAAI,KAAK;AAAA;AAAA,IAEjB;AAAA;AAAA,EAEI,+BAAuB;AAAA,EAC/B,SAAS,kBAAkB,CAAC,KAAK,aAAa,IAAI,QAAQ;AAAA,IACtD,QAAQ,KAAK,MAAM,SAAS,OAAO;AAAA,IACnC,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,IAC9B,WAAW,QAAQ,YAAY;AAAA,MAC3B,KAAK,GAAG,OAAO,mBAAmB,IAAI,WAAW,KAAK;AAAA,QAClD;AAAA,MACJ,IAAI,IAAI,GAAG,OAAO,gBAAgB,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa,GAAG,MAAM;AAAA,QAC7E,MAAM,SAAS,IAAI,UAAU,EAAE,SAAS,YAAY,KAAK,GAAG,KAAK;AAAA,QACjE,IAAI,oBAAoB,QAAQ,KAAK;AAAA,SACtC,MAAM,IAAI,IAAI,OAAO,IAAI,CAC5B;AAAA,MACA,IAAI,GAAG,KAAK;AAAA,IAChB;AAAA;AAAA,EAEI,6BAAqB;AAAA,EACrB,kBAAU;AAAA;;;;EClFlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS;AAAA,IACT,QAAQ,GAAG,aAAc,IAAG,UAAU,oBAAqB,OAAO;AAAA,EACtE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,UAAU,SAAS;AAAA,IAChC;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,MAAM,OAAO;AAAA,MAClC,KAAK,GAAG,OAAO,mBAAmB,IAAI,MAAM;AAAA,QACxC;AAAA,MACJ,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,IAAI,MAAM,OAAO,MAAM,CAAC,QAAQ;AAAA,QAC5B,IAAI,UAAU,EAAE,cAAc,IAAI,CAAC;AAAA,QACnC,IAAI,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,UACN,WAAW,CAAC,QAAQ;AAAA,UACpB,cAAc;AAAA,UACd,eAAe;AAAA,QACnB,GAAG,KAAK;AAAA,QACR,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM;AAAA,UACpC,IAAI,MAAM,IAAI;AAAA,UACd,IAAI,CAAC,GAAG;AAAA,YACJ,IAAI,MAAM;AAAA,SACjB;AAAA,OACJ;AAAA,MACD,IAAI,GAAG,KAAK;AAAA;AAAA,EAEpB;AAAA,EACQ,kBAAU;AAAA;;;;ECnClB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS;AAAA,IACT,QAAQ,GAAG,aAAc,IAAG,UAAU,0BAA2B,OAAO;AAAA,EAC5E;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM,CAAC,QAAQ;AAAA,IACf,YAAY,CAAC,WAAW,QAAQ;AAAA,IAChC,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,cAAc,MAAM,WAAW,OAAO;AAAA,MAE3D,IAAI,CAAC;AAAA,QACD,MAAM,IAAI,MAAM,0BAA0B;AAAA,MAC9C,QAAQ,WAAW,SAAS;AAAA,MAC5B,GAAG,QAAQ;AAAA,MACX,IAAI,KAAK,qBAAqB,UAAU,GAAG,OAAO,mBAAmB,IAAI,MAAM;AAAA,QAC3E;AAAA,MACJ,MAAM,SAAS,GAAG,OAAO,qBAAqB,aAAa,UAAU;AAAA,MACrE,MAAM,YAAY,GAAG,OAAO,qBAAqB,aAAa,iBAAiB;AAAA,MAC/E,0BAA0B;AAAA,MAC1B,IAAI,GAAI,IAAG,UAAU,KAAM,iBAAiB,QAAQ,QAAQ,QAAQ;AAAA,MACpE,SAAS,yBAAyB,GAAG;AAAA,QACjC,IAAI,MAAM,OAAO,MAAM,CAAC,QAAQ;AAAA,UAC5B,IAAI,CAAC,MAAM,UAAU,CAAC,SAAS;AAAA,YAC3B,uBAAuB,GAAG;AAAA,UAE1B;AAAA,gBAAI,GAAG,aAAa,GAAG,GAAG,MAAM,uBAAuB,GAAG,CAAC;AAAA,SAClE;AAAA;AAAA,MAEL,SAAS,YAAY,CAAC,KAAK;AAAA,QACvB,IAAI;AAAA,QACJ,IAAI,MAAM,SAAS,GAAG;AAAA,UAElB,MAAM,eAAe,GAAG,OAAO,gBAAgB,IAAI,aAAa,YAAY,YAAY;AAAA,UACxF,eAAe,GAAG,OAAO,eAAe,KAAK,aAAa,GAAG;AAAA,QACjE,EACK,SAAI,MAAM,QAAQ;AAAA,UACnB,eAAe,GAAG,UAAU,IAAI,GAAG,MAAM,IAAI,CAAC,MAAO,IAAG,UAAU,KAAM,WAAW,GAAG,CAAC;AAAA,QAC3F,EACK;AAAA,UACD,cAAc,UAAU;AAAA;AAAA,QAE5B,IAAI,SAAS,QAAQ;AAAA,UACjB,eAAe,GAAG,UAAU,IAAI,aAAa,GAAG,SAAS,IAAI,CAAC,MAAO,IAAG,UAAU,MAAO,GAAG,OAAO,YAAY,KAAK,CAAC,UAAU,MAAM,CAAC;AAAA,QAC1I;AAAA,QACA,QAAQ,GAAG,UAAU,KAAK,WAAW;AAAA;AAAA,MAEzC,SAAS,gBAAgB,CAAC,KAAK;AAAA,QAC3B,IAAI,KAAM,IAAG,UAAU,YAAa,QAAQ,MAAM;AAAA;AAAA,MAEtD,SAAS,sBAAsB,CAAC,KAAK;AAAA,QACjC,IAAI,KAAK,qBAAqB,SAAU,KAAK,oBAAoB,WAAW,OAAQ;AAAA,UAChF,iBAAiB,GAAG;AAAA,UACpB;AAAA,QACJ;AAAA,QACA,IAAI,WAAW,OAAO;AAAA,UAClB,IAAI,UAAU,EAAE,oBAAoB,IAAI,CAAC;AAAA,UACzC,IAAI,MAAM;AAAA,UACV,IAAI,CAAC;AAAA,YACD,IAAI,MAAM;AAAA,UACd;AAAA,QACJ;AAAA,QACA,IAAI,OAAO,UAAU,YAAY,EAAE,GAAG,OAAO,mBAAmB,IAAI,MAAM,GAAG;AAAA,UACzE,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,UAC9B,IAAI,KAAK,qBAAqB,WAAW;AAAA,YACrC,sBAAsB,KAAK,OAAO,KAAK;AAAA,YACvC,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM;AAAA,cACpC,IAAI,MAAM;AAAA,cACV,iBAAiB,GAAG;AAAA,aACvB;AAAA,UACL,EACK;AAAA,YACD,sBAAsB,KAAK,KAAK;AAAA,YAChC,IAAI,CAAC;AAAA,cACD,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA;AAAA,QAE/D;AAAA;AAAA,MAEJ,SAAS,qBAAqB,CAAC,KAAK,OAAO,QAAQ;AAAA,QAC/C,MAAM,YAAY;AAAA,UACd,SAAS;AAAA,UACT,UAAU;AAAA,UACV,cAAc,OAAO,KAAK;AAAA,QAC9B;AAAA,QACA,IAAI,WAAW,OAAO;AAAA,UAClB,OAAO,OAAO,WAAW;AAAA,YACrB,eAAe;AAAA,YACf,cAAc;AAAA,YACd,WAAW;AAAA,UACf,CAAC;AAAA,QACL;AAAA,QACA,IAAI,UAAU,WAAW,KAAK;AAAA;AAAA;AAAA,EAG1C;AAAA,EACQ,kBAAU;AAAA;;;;ECvGlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,cAAc,MAAM,OAAO;AAAA,MAChD,IAAI,GAAG,KAAK,qBAAqB,SAAS,aAAa,yBAAyB,WAAW;AAAA,QACvF,uBAAuB,QAAQ,KAAK,IAAI,WAAW,WAAW,IAAI,uBAAuB,SAAS,sBAAsB,CAAC;AAAA,MAC7H;AAAA,MACA,MAAM,YAAY,GAAG,OAAO,qBAAqB,MAAM;AAAA,MACvD,WAAW,QAAQ,UAAU;AAAA,QACzB,GAAG,kBAAkB,IAAI,IAAI;AAAA,MACjC;AAAA,MACA,IAAI,GAAG,KAAK,eAAe,SAAS,UAAU,GAAG,UAAU,MAAM;AAAA,QAC7D,GAAG,QAAQ,OAAO,eAAe,MAAM,MAAM,GAAG,OAAO,QAAQ,QAAQ,GAAG,GAAG,KAAK;AAAA,MACtF;AAAA,MACA,MAAM,aAAa,SAAS,OAAO,CAAC,MAAM,EAAE,GAAG,OAAO,mBAAmB,IAAI,OAAO,EAAE,CAAC;AAAA,MACvF,IAAI,WAAW,WAAW;AAAA,QACtB;AAAA,MACJ,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,WAAW,QAAQ,YAAY;AAAA,QAC3B,IAAI,WAAW,IAAI,GAAG;AAAA,UAClB,oBAAoB,IAAI;AAAA,QAC5B,EACK;AAAA,UACD,IAAI,IAAI,GAAG,OAAO,gBAAgB,KAAK,MAAM,MAAM,GAAG,KAAK,aAAa,CAAC;AAAA,UACzE,oBAAoB,IAAI;AAAA,UACxB,IAAI,CAAC,GAAG;AAAA,YACJ,IAAI,KAAK,EAAE,IAAI,OAAO,IAAI;AAAA,UAC9B,IAAI,MAAM;AAAA;AAAA,QAEd,IAAI,GAAG,kBAAkB,IAAI,IAAI;AAAA,QACjC,IAAI,GAAG,KAAK;AAAA,MAChB;AAAA,MACA,SAAS,UAAU,CAAC,MAAM;AAAA,QACtB,OAAO,GAAG,KAAK,eAAe,CAAC,GAAG,iBAAiB,OAAO,MAAM,YAAY;AAAA;AAAA,MAEhF,SAAS,mBAAmB,CAAC,MAAM;AAAA,QAC/B,IAAI,UAAU;AAAA,UACV,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,UAAU;AAAA,QACd,GAAG,KAAK;AAAA;AAAA;AAAA,EAGpB;AAAA,EACQ,kBAAU;AAAA;;;;ECnDlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,MAAM,cAAc,OAAO;AAAA,MAChD,QAAQ,SAAS;AAAA,MACjB,MAAM,YAAY,GAAG,OAAO,qBAAqB,MAAM;AAAA,MACvD,MAAM,sBAAsB,SAAS,OAAO,CAAC,OAAO,GAAG,OAAO,mBAAmB,IAAI,OAAO,EAAE,CAAC;AAAA,MAC/F,IAAI,SAAS,WAAW,KACnB,oBAAoB,WAAW,SAAS,WACpC,CAAC,GAAG,KAAK,eAAe,GAAG,UAAU,OAAQ;AAAA,QAClD;AAAA,MACJ;AAAA,MACA,MAAM,kBAAkB,KAAK,gBAAgB,CAAC,KAAK,2BAA2B,aAAa;AAAA,MAC3F,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,IAAI,GAAG,UAAU,QAAQ,EAAE,GAAG,iBAAiB,UAAU,OAAO;AAAA,QAC5D,GAAG,SAAS,GAAG,OAAO,sBAAsB,KAAK,GAAG,KAAK;AAAA,MAC7D;AAAA,MACA,QAAQ,UAAU;AAAA,MAClB,0BAA0B;AAAA,MAC1B,SAAS,yBAAyB,GAAG;AAAA,QACjC,WAAW,OAAO,UAAU;AAAA,UACxB,IAAI;AAAA,YACA,wBAAwB,GAAG;AAAA,UAC/B,IAAI,GAAG,WAAW;AAAA,YACd,mBAAmB,GAAG;AAAA,UAC1B,EACK;AAAA,YACD,IAAI,IAAI,OAAO,IAAI;AAAA,YACnB,mBAAmB,GAAG;AAAA,YACtB,IAAI,GAAG,KAAK;AAAA;AAAA,QAEpB;AAAA;AAAA,MAEJ,SAAS,uBAAuB,CAAC,KAAK;AAAA,QAClC,WAAW,QAAQ,iBAAiB;AAAA,UAChC,IAAI,IAAI,OAAO,GAAG,EAAE,KAAK,IAAI,GAAG;AAAA,aAC3B,GAAG,OAAO,iBAAiB,IAAI,YAAY,wBAAwB,mCAAmC;AAAA,UAC3G;AAAA,QACJ;AAAA;AAAA,MAEJ,SAAS,kBAAkB,CAAC,KAAK;AAAA,QAC7B,IAAI,MAAM,OAAO,MAAM,CAAC,QAAQ;AAAA,UAC5B,IAAI,GAAI,IAAG,UAAU,MAAO,GAAG,OAAO,YAAY,KAAK,GAAG,UAAU,QAAQ,MAAM;AAAA,YAC9E,MAAM,cAAc,oBAAoB,SAAS,GAAG;AAAA,YACpD,IAAI,CAAC,aAAa;AAAA,cACd,IAAI,UAAU;AAAA,gBACV,SAAS;AAAA,gBACT,YAAY;AAAA,gBACZ,UAAU;AAAA,gBACV,cAAc,OAAO,KAAK;AAAA,cAC9B,GAAG,KAAK;AAAA,YACZ;AAAA,YACA,IAAI,GAAG,KAAK,eAAe,UAAU,MAAM;AAAA,cACvC,IAAI,OAAQ,IAAG,UAAU,KAAM,SAAS,QAAQ,IAAI;AAAA,YACxD,EACK,SAAI,CAAC,eAAe,CAAC,GAAG,WAAW;AAAA,cAGpC,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA,YACvD;AAAA,WACH;AAAA,SACJ;AAAA;AAAA;AAAA,EAGb;AAAA,EACQ,kBAAU;AAAA;;;;ECxElB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY,CAAC,UAAU,SAAS;AAAA,IAChC,aAAa;AAAA,IACb,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,OAAO;AAAA,MAC5B,KAAK,GAAG,OAAO,mBAAmB,IAAI,MAAM,GAAG;AAAA,QAC3C,IAAI,KAAK;AAAA,QACT;AAAA,MACJ;AAAA,MACA,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,IAAI,UAAU;AAAA,QACV,SAAS;AAAA,QACT,eAAe;AAAA,QACf,cAAc;AAAA,QACd,WAAW;AAAA,MACf,GAAG,KAAK;AAAA,MACR,IAAI,WAAW,OAAO,MAAM,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA;AAAA,IAE9D,OAAO,EAAE,SAAS,oBAAoB;AAAA,EAC1C;AAAA,EACQ,kBAAU;AAAA;;;;ECvBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,MAAM,OAAO;AAAA,IACb,OAAO,EAAE,SAAS,+BAA+B;AAAA,EACrD;AAAA,EACQ,kBAAU;AAAA;;;;ECTlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS;AAAA,IACT,QAAQ,GAAG,aAAc,IAAG,UAAU,sBAAuB,OAAO;AAAA,EACxE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA,IACb;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,cAAc,OAAO;AAAA,MAE1C,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,QACrB,MAAM,IAAI,MAAM,0BAA0B;AAAA,MAC9C,IAAI,GAAG,KAAK,iBAAiB,aAAa;AAAA,QACtC;AAAA,MACJ,MAAM,SAAS;AAAA,MACf,MAAM,QAAQ,IAAI,IAAI,SAAS,KAAK;AAAA,MACpC,MAAM,UAAU,IAAI,IAAI,WAAW,IAAI;AAAA,MACvC,MAAM,WAAW,IAAI,KAAK,QAAQ;AAAA,MAClC,IAAI,UAAU,EAAE,QAAQ,CAAC;AAAA,MAEzB,IAAI,MAAM,aAAa;AAAA,MACvB,IAAI,OAAO,OAAO,MAAM,IAAI,MAAM,GAAG,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA,MAC1D,SAAS,aAAa,GAAG;AAAA,QACrB,OAAO,QAAQ,CAAC,KAAK,MAAM;AAAA,UACvB,IAAI;AAAA,UACJ,KAAK,GAAG,OAAO,mBAAmB,IAAI,GAAG,GAAG;AAAA,YACxC,IAAI,IAAI,UAAU,IAAI;AAAA,UAC1B,EACK;AAAA,YACD,SAAS,IAAI,UAAU;AAAA,cACnB,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,eAAe;AAAA,YACnB,GAAG,QAAQ;AAAA;AAAA,UAEf,IAAI,IAAI,GAAG;AAAA,YACP,IACK,GAAI,IAAG,UAAU,KAAM,eAAe,OAAO,EAC7C,OAAO,OAAO,KAAK,EACnB,OAAO,SAAU,IAAG,UAAU,MAAO,YAAY,IAAI,EACrD,KAAK;AAAA,UACd;AAAA,UACA,IAAI,GAAG,UAAU,MAAM;AAAA,YACnB,IAAI,OAAO,OAAO,IAAI;AAAA,YACtB,IAAI,OAAO,SAAS,CAAC;AAAA,YACrB,IAAI;AAAA,cACA,IAAI,eAAe,QAAQ,UAAU,IAAI;AAAA,WAChD;AAAA,SACJ;AAAA;AAAA;AAAA,EAGb;AAAA,EACQ,kBAAU;AAAA;;;;ECzDlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,OAAO;AAAA,MAE5B,IAAI,CAAC,MAAM,QAAQ,MAAM;AAAA,QACrB,MAAM,IAAI,MAAM,0BAA0B;AAAA,MAC9C,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,MAC9B,OAAO,QAAQ,CAAC,KAAK,MAAM;AAAA,QACvB,KAAK,GAAG,OAAO,mBAAmB,IAAI,GAAG;AAAA,UACrC;AAAA,QACJ,MAAM,SAAS,IAAI,UAAU,EAAE,SAAS,SAAS,YAAY,EAAE,GAAG,KAAK;AAAA,QACvE,IAAI,GAAG,KAAK;AAAA,QACZ,IAAI,eAAe,MAAM;AAAA,OAC5B;AAAA;AAAA,EAET;AAAA,EACQ,kBAAU;AAAA;;;;ECpBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,aAAc,IAAG,UAAU,mBAAoB,OAAO;AAAA,IAClE,QAAQ,GAAG,aAAc,IAAG,UAAU,sBAAuB,OAAO;AAAA,EACxE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY,CAAC,UAAU,SAAS;AAAA,IAChC,aAAa;AAAA,IACb;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,cAAc,OAAO;AAAA,MAClC,IAAI,aAAa,SAAS,aAAa,aAAa,SAAS,WAAW;AAAA,SACnE,GAAG,OAAO,iBAAiB,IAAI,2CAA2C;AAAA,MAC/E;AAAA,MACA,MAAM,UAAU,UAAU,IAAI,MAAM;AAAA,MACpC,MAAM,UAAU,UAAU,IAAI,MAAM;AAAA,MACpC,IAAI,CAAC,WAAW,CAAC;AAAA,QACb;AAAA,MACJ,MAAM,QAAQ,IAAI,IAAI,SAAS,IAAI;AAAA,MACnC,MAAM,WAAW,IAAI,KAAK,QAAQ;AAAA,MAClC,WAAW;AAAA,MACX,IAAI,MAAM;AAAA,MACV,IAAI,WAAW,SAAS;AAAA,QACpB,MAAM,WAAW,IAAI,IAAI,UAAU;AAAA,QACnC,IAAI,UAAU,EAAE,SAAS,CAAC;AAAA,QAC1B,IAAI,GAAG,UAAU,eAAe,QAAQ,QAAQ,GAAG,eAAe,QAAQ,QAAQ,CAAC;AAAA,MACvF,EACK,SAAI,SAAS;AAAA,QACd,IAAI,GAAG,UAAU,eAAe,MAAM,CAAC;AAAA,MAC3C,EACK;AAAA,QACD,IAAI,IAAI,GAAG,UAAU,KAAK,QAAQ,GAAG,eAAe,MAAM,CAAC;AAAA;AAAA,MAE/D,IAAI,KAAK,OAAO,MAAM,IAAI,MAAM,IAAI,CAAC;AAAA,MACrC,SAAS,UAAU,GAAG;AAAA,QAClB,MAAM,SAAS,IAAI,UAAU;AAAA,UACzB,SAAS;AAAA,UACT,eAAe;AAAA,UACf,cAAc;AAAA,UACd,WAAW;AAAA,QACf,GAAG,QAAQ;AAAA,QACX,IAAI,eAAe,MAAM;AAAA;AAAA,MAE7B,SAAS,cAAc,CAAC,SAAS,UAAU;AAAA,QACvC,OAAO,MAAM;AAAA,UACT,MAAM,SAAS,IAAI,UAAU,EAAE,QAAQ,GAAG,QAAQ;AAAA,UAClD,IAAI,OAAO,OAAO,QAAQ;AAAA,UAC1B,IAAI,oBAAoB,QAAQ,KAAK;AAAA,UACrC,IAAI;AAAA,YACA,IAAI,OAAO,UAAW,IAAG,UAAU,KAAM,SAAS;AAAA,UAElD;AAAA,gBAAI,UAAU,EAAE,UAAU,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA,EAIvD;AAAA,EACA,SAAS,SAAS,CAAC,IAAI,SAAS;AAAA,IAC5B,MAAM,SAAS,GAAG,OAAO;AAAA,IACzB,OAAO,WAAW,aAAa,EAAE,GAAG,OAAO,mBAAmB,IAAI,MAAM;AAAA;AAAA,EAEpE,kBAAU;AAAA;;;;EC/DlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS,CAAC,QAAQ,MAAM;AAAA,IACxB,YAAY,CAAC,UAAU,SAAS;AAAA,IAChC,IAAI,GAAG,SAAS,cAAc,MAAM;AAAA,MAChC,IAAI,aAAa,OAAO;AAAA,SACnB,GAAG,OAAO,iBAAiB,IAAI,IAAI,kCAAkC;AAAA;AAAA,EAElF;AAAA,EACQ,kBAAU;AAAA;;;;ECVlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,SAAS,aAAa,CAAC,YAAY,OAAO;AAAA,IACtC,MAAM,aAAa;AAAA,MAEf,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,WAAW;AAAA,MAEX,gBAAgB;AAAA,MAChB,uBAAuB;AAAA,MACvB,eAAe;AAAA,MACf,aAAa;AAAA,MACb,oBAAoB;AAAA,IACxB;AAAA,IAEA,IAAI;AAAA,MACA,WAAW,KAAK,cAAc,SAAS,YAAY,OAAO;AAAA,IAE1D;AAAA,iBAAW,KAAK,kBAAkB,SAAS,QAAQ,OAAO;AAAA,IAC9D,WAAW,KAAK,WAAW,OAAO;AAAA,IAClC,OAAO;AAAA;AAAA,EAEH,kBAAU;AAAA;;;;ECzClB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAqB;AAAA,EAC7B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,MAAM,CAAC,QAAQ,cAAc,KAAK,IAAI,MAAM;AAAA,EAChD;AAAA,EACA,SAAS,aAAa,CAAC,KAAK,QAAQ;AAAA,IAChC,QAAQ,KAAK,OAAO;AAAA,IACpB,GAAG,UAAU,KAAK,eAAe,UAAU;AAAA,IAC3C,MAAM,IAAK,IAAG,UAAU,KAAM,QAAQ,QAAQ,kBAAkB,GAAG,UAAU,aAAa,MAAM;AAAA,IAChG,MAAM,WAAW,GAAG,kBAAkB,MAAM,GAAG,eAAe,aAAa,GAAG;AAAA,IAC9E,IAAI,GAAI,IAAG,UAAU,MAAO,KAAK,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC;AAAA;AAAA,EAE1D,wBAAgB;AAAA,EACxB,SAAS,YAAY,CAAC,KAAK;AAAA,IACvB,QAAQ,WAAW,QAAQ,SAAS,IAAI;AAAA,IACxC,QAAQ,MAAM,QAAQ,WAAW,SAAS,UAAU;AAAA,IACpD,QAAQ,aAAa,KAAK;AAAA,IAC1B,MAAM,MAAM,IAAI,UAAU,UAAU,EAAE,QAAQ,UAAU,MAAM,QAAQ,WAAW,KAAK,CAAC;AAAA,IACvF,UAAU,cAAc,KAAK,MAAM,GAAG;AAAA,IACtC,QAAQ,GAAG,MAAM,aAAa,KAAK,GAAG;AAAA;AAAA,EAElC,kBAAU;AAAA;;;;EC3BlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAkB;AAAA,EAC1B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,MAAM,CAAC,QAAQ,WAAW,KAAK,IAAI,MAAM;AAAA,EAC7C;AAAA,EACA,SAAS,UAAU,CAAC,KAAK,KAAK;AAAA,IAC1B,QAAQ,KAAK,SAAS,OAAO;AAAA,IAC7B,IAAI,IAAI,OAAO;AAAA,MACX,MAAM,IAAI,MAAM,IAAI,gDAAgD;AAAA,IACxE,MAAM,SAAS,IAAI,MAAM,CAAC;AAAA,IAC1B,IAAI,GAAG,WAAW;AAAA,MACd,YAAY;AAAA,IAChB,EACK;AAAA,MACD,MAAM,QAAQ,IAAI,IAAI,SAAS,KAAK;AAAA,MACpC,YAAY,KAAK;AAAA,MACjB,IAAI,GAAG,KAAK;AAAA;AAAA,IAEhB,SAAS,WAAW,CAAC,OAAO;AAAA,MAOxB,IAAI,GAAG,UAAU,KAAK,eAAe,SAAS;AAAA,QAC1C,MAAM,IAAI,IAAI,IAAI,MAAO,IAAG,UAAU,KAAM,QAAQ,QAAQ,kBAAkB,GAAG,UAAU,aAAa,MAAM,GAAG;AAAA,QACjH,IAAI,GAAG,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,cAAc,KAAK,CAAC;AAAA,MAClE,EACK;AAAA,QACD,SAAS,GAAG,cAAc,KAAK,EAAE;AAAA;AAAA;AAAA,IAGzC,SAAS,QAAQ,CAAC,UAAU,OAAO;AAAA,MAC/B,OAAO,QACD,MAAM,IAAI,MAAM,MAAM;AAAA,SACnB,GAAG,MAAM,SAAS,KAAK,QAAQ;AAAA,QAChC,IAAI,IAAI,OAAO,IAAI;AAAA,OACtB,IACC,OAAO,GAAG,MAAM,SAAS,KAAK,QAAQ;AAAA;AAAA;AAAA,EAG5C,qBAAa;AAAA,EACb,kBAAU;AAAA;;;;EChDlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,IAAI,CAAC,KAAK;AAAA,MACN,IAAI,IAAI;AAAA,SACH,GAAG,gBAAgB,eAAe,KAAK,EAAE;AAAA,MAE1C;AAAA,SAAC,GAAG,OAAO,iBAAiB,IAAI,IAAI,oCAAoC;AAAA;AAAA,EAEpF;AAAA,EACQ,kBAAU;AAAA;;;;ECblB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,MAAM,CAAC,SAAS,GAAG,aAAa,YAAY,KAAK,IAAI,MAAM;AAAA,EAC/D;AAAA,EACQ,kBAAU;AAAA;;;;ECPlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,UAAU,CAAC,gBAAgB,SAAS,aAAa,SAAS,kBAAkB,SAAS,eAAe,OAAO;AAAA,EACzG,kBAAU;AAAA;;;;ECNlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO,eAAe;AAAA,IACtB,MAAM,CAAC,SAAS,GAAG,eAAe,sBAAsB,GAAG;AAAA,EAC/D;AAAA,EACQ,kBAAU;AAAA;;;;ECTlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,MAAM,CAAC,SAAS,GAAG,eAAe,oBAAoB,GAAG;AAAA,EAC7D;AAAA,EACQ,kBAAU;AAAA;;;;ECRlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,MAAM;AAAA,IACR,SAAS,CAAC,eAAe,aAAa;AAAA,IACtC,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,IAAI,GAAG,SAAS,cAAc,MAAM;AAAA,MAChC,IAAI,aAAa,aAAa,WAAW;AAAA,SACpC,GAAG,OAAO,iBAAiB,IAAI,IAAI,wCAAwC;AAAA,MAChF;AAAA;AAAA,EAER;AAAA,EACQ,kBAAU;AAAA;;;;ECZlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,OAAO,CAAC,oBAAoB,SAAS,mBAAmB,SAAS,gBAAgB,OAAO;AAAA,EACtF,kBAAU;AAAA;;;;ECLlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS;AAAA,IACT,QAAQ,GAAG,aAAc,IAAG,UAAU,2BAA4B,OAAO;AAAA,EAC7E;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,QAAQ;AAAA,IAChC,aAAa;AAAA,IACb;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,MAAM,WAAW,OAAO;AAAA,MAE7C,IAAI,CAAC;AAAA,QACD,MAAM,IAAI,MAAM,0BAA0B;AAAA,MAC9C,QAAQ,WAAW,UAAU;AAAA,MAC7B,IAAI,iBAAiB,UAAU,MAAM;AAAA,QACjC,IAAI,GAAI,IAAG,UAAU,KAAM,kBAAkB,MAAM,IAAI,MAAM,OAAO,MAAM,CAAC,QAAQ,IAAI,GAAG,mBAAmB,OAAO,GAAG,GAAG,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC;AAAA,MAC9J,EACK,SAAI,UAAU,MAAM;AAAA,QACrB,IAAI,MAAM,OAAO,MAAM,CAAC,QAAQ,UAAU,YACpC,oBAAoB,GAAG,IACvB,IAAI,GAAG,kBAAkB,OAAO,GAAG,GAAG,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAAA,MAC/E;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,IAAI,GAAI,IAAG,UAAU,KAAM,iBAAiB,QAAQ,QAAQ,QAAQ;AAAA,MACpE,SAAS,mBAAmB,CAAC,KAAK;AAAA,QAC9B,IAAI,WAAW,OAAO;AAAA,UAClB,IAAI,UAAU,EAAE,qBAAqB,IAAI,CAAC;AAAA,UAC1C,IAAI,MAAM;AAAA,UACV,IAAI,CAAC;AAAA,YACD,IAAI,MAAM;AAAA,UACd;AAAA,QACJ;AAAA,QACA,IAAI,EAAE,GAAG,OAAO,mBAAmB,IAAI,MAAM,GAAG;AAAA,UAC5C,MAAM,QAAQ,IAAI,KAAK,OAAO;AAAA,UAC9B,IAAI,UAAU;AAAA,YACV,SAAS;AAAA,YACT,UAAU;AAAA,YACV,cAAc,OAAO,KAAK;AAAA,UAC9B,GAAG,KAAK;AAAA,UACR,IAAI,CAAC;AAAA,YACD,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA,QAC3D;AAAA;AAAA,MAEJ,SAAS,kBAAkB,CAAC,gBAAgB,KAAK;AAAA,QAC7C,OAAQ,IAAG,UAAU,MAAO,sBAAsB,kBAAkB;AAAA;AAAA,MAExE,SAAS,iBAAiB,CAAC,gBAAgB,KAAK;AAAA,QAC5C,MAAM,KAAK,CAAC;AAAA,QACZ,WAAW,KAAK,gBAAgB;AAAA,UAC5B,IAAI,eAAe,OAAO;AAAA,YACtB,GAAG,KAAM,IAAG,UAAU,KAAM,WAAW,GAAG;AAAA,QAClD;AAAA,QACA,QAAQ,GAAG,UAAU,KAAK,GAAG,EAAE;AAAA;AAAA;AAAA,EAG3C;AAAA,EACQ,kBAAU;AAAA;;;;EC9DlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,UAAU,YAAa,IAAG,UAAU,+BAAgC;AAAA,IAChF,QAAQ,GAAG,UAAU,YAAa,IAAG,UAAU,aAAc;AAAA,EACjE;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY,CAAC,WAAW,QAAQ;AAAA,IAChC;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,QAAQ,MAAM,OAAO;AAAA,MAClC,MAAM,QAAQ,GAAG,SAAS;AAAA,MAC1B,IAAI,UAAU;AAAA,QACV;AAAA,MACJ,MAAM,MAAM,IAAI,MAAM,OAAQ,IAAG,UAAU,KAAM,aAAa;AAAA,MAC9D,IAAI,WAAW,OAAO;AAAA,QAClB,IAAI,UAAU,EAAE,KAAK,MAAM,CAAC;AAAA,QAC5B,IAAI,KAAM,IAAG,UAAU,KAAM,SAAS,OAAO;AAAA,MACjD,EACK,SAAI,OAAO,UAAU,YAAY,EAAE,GAAG,OAAO,mBAAmB,IAAI,MAAM,GAAG;AAAA,QAC9E,MAAM,QAAQ,IAAI,IAAI,SAAU,IAAG,UAAU,KAAM,UAAU,OAAO;AAAA,QACpE,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM,cAAc,OAAO,KAAK,CAAC;AAAA,QACnE,IAAI,GAAG,KAAK;AAAA,MAChB;AAAA,MACA,GAAG,QAAQ;AAAA,MACX,SAAS,aAAa,CAAC,OAAO,MAAM;AAAA,QAChC,IAAI,SAAS,KAAK,MAAM,KAAK,CAAC,MAAM;AAAA,UAChC,IAAI,UAAU,EAAE,SAAS,oBAAoB,UAAU,GAAG,cAAc,OAAO,KAAK,IAAI,GAAG,KAAK;AAAA,UAChG,IAAI,CAAC,GAAG;AAAA,YACJ,IAAI,IAAI,GAAG,UAAU,KAAK,KAAK,GAAG,MAAM,IAAI,MAAM,CAAC;AAAA,SAC1D;AAAA;AAAA;AAAA,EAGb;AAAA,EACQ,kBAAU;AAAA;;;;ECrClB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,cAAc,CAAC,wBAAwB,SAAS,mBAAmB,OAAO;AAAA,EACxE,kBAAU;AAAA;;;;ECJlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,iBAAkB,IAAG,UAAU,0BAA2B;AAAA,IACtE,QAAQ,GAAG,iBAAkB,IAAG,UAAU,cAAe;AAAA,EAC7D;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM,CAAC,UAAU,QAAQ;AAAA,IACzB,YAAY;AAAA,IACZ,OAAO;AAAA,IACP;AAAA,IACA,IAAI,CAAC,KAAK,UAAU;AAAA,MAChB,QAAQ,KAAK,MAAM,OAAO,QAAQ,YAAY,OAAO;AAAA,MACrD,QAAQ,MAAM,eAAe,WAAW,SAAS;AAAA,MACjD,IAAI,CAAC,KAAK;AAAA,QACN;AAAA,MACJ,IAAI;AAAA,QACA,oBAAoB;AAAA,MAEpB;AAAA,uBAAe;AAAA,MACnB,SAAS,mBAAmB,GAAG;AAAA,QAC3B,MAAM,OAAO,IAAI,WAAW,WAAW;AAAA,UACnC,KAAK,KAAK;AAAA,UACV,MAAM,KAAK,KAAK;AAAA,QACpB,CAAC;AAAA,QACD,MAAM,OAAO,IAAI,MAAM,QAAS,IAAG,UAAU,KAAM,QAAQ,aAAa;AAAA,QACxE,MAAM,QAAQ,IAAI,IAAI,OAAO;AAAA,QAC7B,MAAM,SAAS,IAAI,IAAI,QAAQ;AAAA,QAE/B,IAAI,GAAI,IAAG,UAAU,YAAa,yBAAyB,2BAA2B,MAAM,IAAI,OAAO,OAAQ,IAAG,UAAU,KAAM,uBAAuB,EAAE,OAAO,QAAS,IAAG,UAAU,KAAM,eAAe,GAAG,MAAM,IAAI,OAAO,OAAQ,IAAG,UAAU,YAAa,EAAE,OAAO,QAAQ,IAAI,CAAC;AAAA,QACzR,IAAI,WAAW,GAAG,UAAU,IAAI,WAAW,GAAG,WAAW,CAAC,CAAC;AAAA,QAC3D,SAAS,UAAU,GAAG;AAAA,UAClB,IAAI,KAAK,iBAAiB;AAAA,YACtB,OAAO,UAAU;AAAA,UACrB,OAAQ,IAAG,UAAU,KAAM,kBAAkB;AAAA;AAAA,QAEjD,SAAS,UAAU,GAAG;AAAA,UAClB,MAAM,aAAa,UAAU,SACtB,IAAG,UAAU,MAAO,sBAAsB,UAAU,WAAW,UAAU,WACzE,IAAG,UAAU,KAAM,UAAU;AAAA,UACpC,MAAM,YAAa,IAAG,UAAU,aAAc,0BAA0B,gBAAgB,eAAe;AAAA,UACvG,OAAQ,IAAG,UAAU,KAAM,aAAa,sBAAsB,aAAa,gBAAgB;AAAA;AAAA;AAAA,MAGnG,SAAS,cAAc,GAAG;AAAA,QACtB,MAAM,YAAY,KAAK,QAAQ;AAAA,QAC/B,IAAI,CAAC,WAAW;AAAA,UACZ,cAAc;AAAA,UACd;AAAA,QACJ;AAAA,QACA,IAAI,cAAc;AAAA,UACd;AAAA,QACJ,OAAO,SAAS,QAAQ,UAAU,UAAU,SAAS;AAAA,QACrD,IAAI,YAAY;AAAA,UACZ,IAAI,KAAK,eAAe,CAAC;AAAA,QAC7B,SAAS,aAAa,GAAG;AAAA,UACrB,IAAI,KAAK,iBAAiB,OAAO;AAAA,YAC7B,KAAK,OAAO,KAAK,WAAW,CAAC;AAAA,YAC7B;AAAA,UACJ;AAAA,UACA,MAAM,IAAI,MAAM,WAAW,CAAC;AAAA,UAC5B,SAAS,UAAU,GAAG;AAAA,YAClB,OAAO,mBAAmB,sCAAsC;AAAA;AAAA;AAAA,QAGxE,SAAS,SAAS,CAAC,QAAQ;AAAA,UACvB,MAAM,OAAO,kBAAkB,UACxB,GAAG,UAAU,YAAY,MAAM,IAChC,KAAK,KAAK,UACL,IAAG,UAAU,KAAM,KAAK,KAAK,WAAW,GAAG,UAAU,aAAa,MAAM,MACzE;AAAA,UACV,MAAM,MAAM,IAAI,WAAW,WAAW,EAAE,KAAK,QAAQ,KAAK,QAAQ,KAAK,CAAC;AAAA,UACxE,IAAI,OAAO,UAAU,YAAY,EAAE,kBAAkB,SAAS;AAAA,YAC1D,OAAO,CAAC,OAAO,QAAQ,UAAU,OAAO,UAAW,IAAG,UAAU,KAAM,cAAc;AAAA,UACxF;AAAA,UACA,OAAO,CAAC,UAAU,QAAQ,GAAG;AAAA;AAAA,QAEjC,SAAS,cAAc,GAAG;AAAA,UACtB,IAAI,OAAO,aAAa,YAAY,EAAE,qBAAqB,WAAW,UAAU,OAAO;AAAA,YACnF,IAAI,CAAC,UAAU;AAAA,cACX,MAAM,IAAI,MAAM,6BAA6B;AAAA,YACjD,OAAQ,IAAG,UAAU,WAAY,UAAU;AAAA,UAC/C;AAAA,UACA,OAAO,OAAO,UAAU,aAAc,IAAG,UAAU,KAAM,UAAU,UAAW,IAAG,UAAU,KAAM,eAAe;AAAA;AAAA;AAAA;AAAA,EAIhI;AAAA,EACQ,kBAAU;AAAA;;;;ECzFlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM,SAAS,CAAC,SAAS,OAAO;AAAA,EACxB,kBAAU;AAAA;;;;ECHlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,4BAA4B,6BAA0B;AAAA,EACtD,6BAAqB;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA,EACQ,4BAAoB;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAAA;;;;ECfA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,wBAAwB;AAAA,IAC1B,UAAU;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,KACZ,GAAG,aAAa,SAAS,IAAI;AAAA,IAC9B,SAAS;AAAA,IACT,WAAW;AAAA,IACX,WAAW;AAAA,IACX,OAAO;AAAA,IACP,cAAc;AAAA,EAClB;AAAA,EACQ,kBAAU;AAAA;;;;ECpBlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAkB;AAAA,EAC1B,IAAI;AAAA,GACH,QAAS,CAAC,aAAY;AAAA,IACnB,YAAW,SAAS;AAAA,IACpB,YAAW,aAAa;AAAA,KACzB,eAAuB,qBAAa,aAAa,CAAC,EAAE;AAAA;;;;ECNvD,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ;AAAA,IACV,SAAS,GAAG,UAAU,YAAY,gBAAgB,eAAe,QAAQ,WAAW,MAC9E,QAAQ,4BACR,iBAAiB;AAAA,IACvB,QAAQ,GAAG,UAAU,YAAY,KAAK,gBAAiB,IAAG,UAAU,aAAc,oBAAoB,sBAAsB;AAAA,EAChI;AAAA,EACA,IAAM,MAAM;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,YAAY;AAAA,IACZ;AAAA,IACA,IAAI,CAAC,KAAK;AAAA,MACN,QAAQ,KAAK,MAAM,QAAQ,cAAc,OAAO;AAAA,MAChD,QAAQ,UAAU;AAAA,MAClB,IAAI,CAAC,GAAG,KAAK,eAAe;AAAA,QACxB,MAAM,IAAI,MAAM,8CAA8C;AAAA,MAClE;AAAA,MACA,MAAM,UAAU,OAAO;AAAA,MACvB,IAAI,OAAO,WAAW;AAAA,QAClB,MAAM,IAAI,MAAM,sCAAsC;AAAA,MAC1D,IAAI,OAAO;AAAA,QACP,MAAM,IAAI,MAAM,yCAAyC;AAAA,MAC7D,IAAI,CAAC;AAAA,QACD,MAAM,IAAI,MAAM,uCAAuC;AAAA,MAC3D,MAAM,QAAQ,IAAI,IAAI,SAAS,KAAK;AAAA,MACpC,MAAM,MAAM,IAAI,MAAM,OAAQ,IAAG,UAAU,KAAM,QAAQ,GAAG,UAAU,aAAa,OAAO,GAAG;AAAA,MAC7F,IAAI,GAAI,IAAG,UAAU,YAAa,mBAAmB,MAAM,gBAAgB,GAAG,MAAM,IAAI,MAAM,OAAO,EAAE,YAAY,QAAQ,WAAW,KAAK,KAAK,QAAQ,CAAC,CAAC;AAAA,MAC1J,IAAI,GAAG,KAAK;AAAA,MACZ,SAAS,eAAe,GAAG;AAAA,QACvB,MAAM,UAAU,WAAW;AAAA,QAC3B,IAAI,GAAG,KAAK;AAAA,QACZ,WAAW,YAAY,SAAS;AAAA,UAC5B,IAAI,OAAQ,IAAG,UAAU,KAAM,WAAW,UAAU;AAAA,UACpD,IAAI,OAAO,OAAO,eAAe,QAAQ,SAAS,CAAC;AAAA,QACvD;AAAA,QACA,IAAI,KAAK;AAAA,QACT,IAAI,MAAM,OAAO,EAAE,YAAY,QAAQ,WAAW,SAAS,KAAK,QAAQ,CAAC;AAAA,QACzE,IAAI,MAAM;AAAA;AAAA,MAEd,SAAS,cAAc,CAAC,YAAY;AAAA,QAChC,MAAM,SAAS,IAAI,KAAK,OAAO;AAAA,QAC/B,MAAM,SAAS,IAAI,UAAU,EAAE,SAAS,SAAS,WAAW,GAAG,MAAM;AAAA,QACrE,IAAI,eAAe,QAAQ,UAAU,IAAI;AAAA,QACzC,OAAO;AAAA;AAAA,MAEX,SAAS,UAAU,GAAG;AAAA,QAClB,IAAI;AAAA,QACJ,MAAM,eAAe,CAAC;AAAA,QACtB,MAAM,cAAc,YAAY,YAAY;AAAA,QAC5C,IAAI,cAAc;AAAA,QAClB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,UACnC,IAAI,MAAM,MAAM;AAAA,UAChB,KAAK,QAAQ,QAAQ,QAAa,YAAS,YAAI,IAAI,SAAS,EAAE,GAAG,OAAO,sBAAsB,KAAK,GAAG,KAAK,KAAK,GAAG;AAAA,YAC/G,MAAM,MAAM,IAAI;AAAA,YAChB,MAAM,UAAU,WAAW,KAAK,GAAG,MAAM,GAAG,UAAU,MAAM,GAAG,QAAQ,GAAG;AAAA,YAC1E,IAAI,eAAe,UAAU;AAAA,cACzB,MAAM,IAAI;AAAA,YACd,IAAI,QAAQ;AAAA,cACR,MAAM,IAAI,YAAY,QAAQ,GAAG,KAAK,aAAa,GAAG,QAAQ,GAAG;AAAA,UACzE;AAAA,UACA,MAAM,WAAW,KAAK,QAAQ,QAAQ,QAAa,YAAS,YAAI,IAAI,gBAAgB,QAAQ,OAAY,YAAS,YAAI,GAAG;AAAA,UACxH,IAAI,OAAO,WAAW,UAAU;AAAA,YAC5B,MAAM,IAAI,MAAM,iFAAiF,UAAU;AAAA,UAC/G;AAAA,UACA,cAAc,gBAAgB,eAAe,YAAY,GAAG;AAAA,UAC5D,YAAY,SAAS,CAAC;AAAA,QAC1B;AAAA,QACA,IAAI,CAAC;AAAA,UACD,MAAM,IAAI,MAAM,mBAAmB,2BAA2B;AAAA,QAClE,OAAO;AAAA,QACP,SAAS,WAAW,GAAG,YAAY;AAAA,UAC/B,OAAO,MAAM,QAAQ,QAAQ,KAAK,SAAS,SAAS,OAAO;AAAA;AAAA,QAE/D,SAAS,WAAW,CAAC,KAAK,GAAG;AAAA,UACzB,IAAI,IAAI,OAAO;AAAA,YACX,WAAW,IAAI,OAAO,CAAC;AAAA,UAC3B,EACK,SAAI,IAAI,MAAM;AAAA,YACf,WAAW,YAAY,IAAI,MAAM;AAAA,cAC7B,WAAW,UAAU,CAAC;AAAA,YAC1B;AAAA,UACJ,EACK;AAAA,YACD,MAAM,IAAI,MAAM,8BAA8B,sCAAsC;AAAA;AAAA;AAAA,QAG5F,SAAS,UAAU,CAAC,UAAU,GAAG;AAAA,UAC7B,IAAI,OAAO,YAAY,YAAY,YAAY,cAAc;AAAA,YACzD,MAAM,IAAI,MAAM,mBAAmB,wCAAwC;AAAA,UAC/E;AAAA,UACA,aAAa,YAAY;AAAA;AAAA;AAAA;AAAA,EAIzC;AAAA,EACQ,kBAAU;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECrGlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,oBAAoB,CAAC,aAAa;AAAA,EACxC,SAAS,iBAAiB,CAAC,OAAO;AAAA,IAE9B;AAAA,MACI;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,MAAM,MAAM;AAAA,MACtB;AAAA,MACA,UAAU,MAAM,UAAU;AAAA,IAC9B,EAAE,QAAQ,CAAC,QAAQ,KAAK,cAAc,KAAK,WAAW,KAAK,CAAC;AAAA,IAC5D,OAAO;AAAA,IACP,SAAS,SAAS,CAAC,KAAK,KAAK;AAAA,MACzB,OAAO,QAAQ,IAAI,gBAAgB,KAAK,iBAAiB,IAAI;AAAA;AAAA;AAAA,EAG7D,kBAAU;AAAA;;;;EC3BlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,0BAA0B,0BAA0B,kBAAkB,eAAe,cAAc,oBAAoB,cAAc,YAAY,qBAAqB,kBAAe;AAAA,EAC7L,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,iBAAiB;AAAA;AAAA,EACvB,MAAM,gBAAgB,OAAO,QAAQ;AAAA,IACjC,WAAW,CAAC,OAAO,CAAC,GAAG;AAAA,MACnB,MAAM;AAAA,WACC;AAAA,QACH,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,aAAa;AAAA,MACjB,CAAC;AAAA;AAAA,IAEL,gBAAgB,GAAG;AAAA,MACf,MAAM,iBAAiB;AAAA,MACvB,YAAY,QAAQ,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;AAAA,MACxD,IAAI,KAAK,KAAK;AAAA,QACV,KAAK,WAAW,gBAAgB,OAAO;AAAA;AAAA,IAE/C,qBAAqB,GAAG;AAAA,MACpB,MAAM,sBAAsB;AAAA,MAC5B,QAAQ,OAAO,SAAS,KAAK;AAAA,MAC7B,IAAI,CAAC;AAAA,QACD;AAAA,MACJ,sBAAsB,QAAQ,KAAK,MAAM,KAAK;AAAA,MAC9C,KAAK,KAAK,mCAAmC;AAAA;AAAA,IAEjD,WAAW,GAAG;AAAA,MACV,OAAQ,KAAK,KAAK,cACd,MAAM,YAAY,MAAM,KAAK,UAAU,cAAc,IAAI,iBAAiB;AAAA;AAAA,EAEtF;AAAA,EACQ,kBAAU;AAAA,EAClB,OAAO,UAAU,UAAU;AAAA,EAC3B,OAAO,QAAQ,UAAU;AAAA,EACzB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,QAAQ,UAAU;AAAA,EAClB,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,cAAc,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,WAAW;AAAA,IAAc,CAAC;AAAA,EACrH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,KAAK,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAK,CAAC;AAAA,EAClG,OAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAO,CAAC;AAAA,EACtG,OAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAa,CAAC;AAAA,EAClH,OAAO,eAAe,SAAS,OAAO,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAO,CAAC;AAAA,EACtG,OAAO,eAAe,SAAS,QAAQ,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAQ,CAAC;AAAA,EACxG,OAAO,eAAe,SAAS,WAAW,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAW,CAAC;AAAA,EAC9G,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,mBAAmB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,mBAAmB;AAAA,IAAW,CAAC;AAAA,EAC/H,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,mBAAmB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,YAAY;AAAA,IAAW,CAAC;AAAA;;;;ECrCxH,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,sBAAmB;AAAA,EAGnB,sBAAc,OAAO,eAAe,WAAW,aAAa;AAAA;;;;ECJpE,IAAI,kBAAmB,WAAQ,QAAK,oBAAqB,OAAO,SAAU,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI;AAAA,IAC5F,IAAI,OAAO;AAAA,MAAW,KAAK;AAAA,IAC3B,OAAO,eAAe,GAAG,IAAI,EAAE,YAAY,MAAM,KAAK,QAAQ,GAAG;AAAA,MAAE,OAAO,EAAE;AAAA,MAAM,CAAC;AAAA,MACjF,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI;AAAA,IACxB,IAAI,OAAO;AAAA,MAAW,KAAK;AAAA,IAC3B,EAAE,MAAM,EAAE;AAAA;AAAA,EAEd,IAAI,eAAgB,WAAQ,QAAK,gBAAiB,QAAQ,CAAC,GAAG,UAAS;AAAA,IACnE,SAAS,KAAK;AAAA,MAAG,IAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAK,UAAS,CAAC;AAAA,QAAG,gBAAgB,UAAS,GAAG,CAAC;AAAA;AAAA,EAE5H,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,mCAAsC,OAAO;AAAA;;;;ECX7C,IAAI,kBAAmB,WAAQ,QAAK,oBAAqB,OAAO,SAAU,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI;AAAA,IAC5F,IAAI,OAAO;AAAA,MAAW,KAAK;AAAA,IAC3B,OAAO,eAAe,GAAG,IAAI,EAAE,YAAY,MAAM,KAAK,QAAQ,GAAG;AAAA,MAAE,OAAO,EAAE;AAAA,MAAM,CAAC;AAAA,MACjF,QAAQ,CAAC,GAAG,GAAG,GAAG,IAAI;AAAA,IACxB,IAAI,OAAO;AAAA,MAAW,KAAK;AAAA,IAC3B,EAAE,MAAM,EAAE;AAAA;AAAA,EAEd,IAAI,eAAgB,WAAQ,QAAK,gBAAiB,QAAQ,CAAC,GAAG,UAAS;AAAA,IACnE,SAAS,KAAK;AAAA,MAAG,IAAI,MAAM,aAAa,CAAC,OAAO,UAAU,eAAe,KAAK,UAAS,CAAC;AAAA,QAAG,gBAAgB,UAAS,GAAG,CAAC;AAAA;AAAA,EAE5H,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EAC5D,6BAAgC,OAAO;AAAA;;;;ECXvC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kBAAe;AAAA,EAEf,kBAAU;AAAA;;;;ECHlB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,uBAAuB,kCAA+B;AAAA,EAC9D,IAAM;AAAA,EACN,IAAM,KAAK;AAAA,EAiBX,SAAS,uBAAuB,CAAC,YAAY;AAAA,IACzC,MAAM,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC;AAAA,IAC7C,MAAM,mBAAmB,IAAI;AAAA,IAC7B,MAAM,iBAAiB,WAAW,MAAM,EAAE;AAAA,IAC1C,IAAI,CAAC,gBAAgB;AAAA,MAEjB,OAAO,MAAM;AAAA,IACjB;AAAA,IACA,MAAM,mBAAmB;AAAA,MACrB,OAAO,CAAC,eAAe;AAAA,MACvB,OAAO,CAAC,eAAe;AAAA,MACvB,OAAO,CAAC,eAAe;AAAA,MACvB,YAAY,eAAe;AAAA,IAC/B;AAAA,IAEA,IAAI,iBAAiB,cAAc,MAAM;AAAA,MACrC,OAAO,SAAS,YAAY,CAAC,eAAe;AAAA,QACxC,OAAO,kBAAkB;AAAA;AAAA,IAEjC;AAAA,IACA,SAAS,OAAO,CAAC,GAAG;AAAA,MAChB,iBAAiB,IAAI,CAAC;AAAA,MACtB,OAAO;AAAA;AAAA,IAEX,SAAS,OAAO,CAAC,GAAG;AAAA,MAChB,iBAAiB,IAAI,CAAC;AAAA,MACtB,OAAO;AAAA;AAAA,IAEX,OAAO,SAAS,YAAY,CAAC,eAAe;AAAA,MACxC,IAAI,iBAAiB,IAAI,aAAa,GAAG;AAAA,QACrC,OAAO;AAAA,MACX;AAAA,MACA,IAAI,iBAAiB,IAAI,aAAa,GAAG;AAAA,QACrC,OAAO;AAAA,MACX;AAAA,MACA,MAAM,qBAAqB,cAAc,MAAM,EAAE;AAAA,MACjD,IAAI,CAAC,oBAAoB;AAAA,QAGrB,OAAO,QAAQ,aAAa;AAAA,MAChC;AAAA,MACA,MAAM,sBAAsB;AAAA,QACxB,OAAO,CAAC,mBAAmB;AAAA,QAC3B,OAAO,CAAC,mBAAmB;AAAA,QAC3B,OAAO,CAAC,mBAAmB;AAAA,QAC3B,YAAY,mBAAmB;AAAA,MACnC;AAAA,MAEA,IAAI,oBAAoB,cAAc,MAAM;AAAA,QACxC,OAAO,QAAQ,aAAa;AAAA,MAChC;AAAA,MAEA,IAAI,iBAAiB,UAAU,oBAAoB,OAAO;AAAA,QACtD,OAAO,QAAQ,aAAa;AAAA,MAChC;AAAA,MACA,IAAI,iBAAiB,UAAU,GAAG;AAAA,QAC9B,IAAI,iBAAiB,UAAU,oBAAoB,SAC/C,iBAAiB,SAAS,oBAAoB,OAAO;AAAA,UACrD,OAAO,QAAQ,aAAa;AAAA,QAChC;AAAA,QACA,OAAO,QAAQ,aAAa;AAAA,MAChC;AAAA,MACA,IAAI,iBAAiB,SAAS,oBAAoB,OAAO;AAAA,QACrD,OAAO,QAAQ,aAAa;AAAA,MAChC;AAAA,MACA,OAAO,QAAQ,aAAa;AAAA;AAAA;AAAA,EAG5B,kCAA0B;AAAA,EAgB1B,uBAAe,wBAAwB,UAAU,OAAO;AAAA;;;;ECxGhE,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,2BAA2B,oBAAoB,yBAAsB;AAAA,EAC7E,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,QAAQ,UAAU,QAAQ,MAAM,GAAG,EAAE;AAAA,EAC3C,IAAM,+BAA+B,OAAO,IAAI,wBAAwB,OAAO;AAAA,EAC/E,IAAM,UAAU,WAAW;AAAA,EAC3B,SAAS,cAAc,CAAC,MAAM,UAAU,MAAM,gBAAgB,OAAO;AAAA,IACjE,IAAI;AAAA,IACJ,MAAM,MAAO,QAAQ,iCAAiC,KAAK,QAAQ,mCAAmC,QAAQ,OAAY,YAAI,KAAK;AAAA,MAC/H,SAAS,UAAU;AAAA,IACvB;AAAA,IACA,IAAI,CAAC,iBAAiB,IAAI,OAAO;AAAA,MAE7B,MAAM,MAAM,IAAI,MAAM,gEAAgE,MAAM;AAAA,MAC5F,KAAK,MAAM,IAAI,SAAS,IAAI,OAAO;AAAA,MACnC,OAAO;AAAA,IACX;AAAA,IACA,IAAI,IAAI,YAAY,UAAU,SAAS;AAAA,MAEnC,MAAM,MAAM,IAAI,MAAM,gDAAgD,IAAI,eAAe,kDAAkD,UAAU,SAAS;AAAA,MAC9J,KAAK,MAAM,IAAI,SAAS,IAAI,OAAO;AAAA,MACnC,OAAO;AAAA,IACX;AAAA,IACA,IAAI,QAAQ;AAAA,IACZ,KAAK,MAAM,+CAA+C,SAAS,UAAU,UAAU;AAAA,IACvF,OAAO;AAAA;AAAA,EAEH,yBAAiB;AAAA,EACzB,SAAS,SAAS,CAAC,MAAM;AAAA,IACrB,IAAI,IAAI;AAAA,IACR,MAAM,iBAAiB,KAAK,QAAQ,mCAAmC,QAAQ,OAAY,YAAS,YAAI,GAAG;AAAA,IAC3G,IAAI,CAAC,iBAAiB,EAAE,GAAG,SAAS,cAAc,aAAa,GAAG;AAAA,MAC9D;AAAA,IACJ;AAAA,IACA,QAAQ,KAAK,QAAQ,mCAAmC,QAAQ,OAAY,YAAS,YAAI,GAAG;AAAA;AAAA,EAExF,oBAAY;AAAA,EACpB,SAAS,gBAAgB,CAAC,MAAM,MAAM;AAAA,IAClC,KAAK,MAAM,kDAAkD,SAAS,UAAU,UAAU;AAAA,IAC1F,MAAM,MAAM,QAAQ;AAAA,IACpB,IAAI,KAAK;AAAA,MACL,OAAO,IAAI;AAAA,IACf;AAAA;AAAA,EAEI,2BAAmB;AAAA;;;;EC9C3B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,8BAA2B;AAAA,EACnC,IAAM;AAAA;AAAA,EAUN,MAAM,oBAAoB;AAAA,IACtB,WAAW,CAAC,OAAO;AAAA,MACf,KAAK,aAAa,MAAM,aAAa;AAAA;AAAA,IAEzC,KAAK,IAAI,MAAM;AAAA,MACX,OAAO,SAAS,SAAS,KAAK,YAAY,IAAI;AAAA;AAAA,IAElD,KAAK,IAAI,MAAM;AAAA,MACX,OAAO,SAAS,SAAS,KAAK,YAAY,IAAI;AAAA;AAAA,IAElD,IAAI,IAAI,MAAM;AAAA,MACV,OAAO,SAAS,QAAQ,KAAK,YAAY,IAAI;AAAA;AAAA,IAEjD,IAAI,IAAI,MAAM;AAAA,MACV,OAAO,SAAS,QAAQ,KAAK,YAAY,IAAI;AAAA;AAAA,IAEjD,OAAO,IAAI,MAAM;AAAA,MACb,OAAO,SAAS,WAAW,KAAK,YAAY,IAAI;AAAA;AAAA,EAExD;AAAA,EACQ,8BAAsB;AAAA,EAC9B,SAAS,QAAQ,CAAC,UAAU,WAAW,MAAM;AAAA,IACzC,MAAM,UAAU,GAAG,eAAe,WAAW,MAAM;AAAA,IAEnD,IAAI,CAAC,QAAQ;AAAA,MACT;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ,SAAS;AAAA,IACtB,OAAO,OAAO,UAAU,GAAG,IAAI;AAAA;AAAA;;;;ECxCnC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,uBAAoB;AAAA,EAM5B,IAAI;AAAA,GACH,QAAS,CAAC,eAAc;AAAA,IAErB,cAAa,cAAa,UAAU,KAAK;AAAA,IAEzC,cAAa,cAAa,WAAW,MAAM;AAAA,IAE3C,cAAa,cAAa,UAAU,MAAM;AAAA,IAE1C,cAAa,cAAa,UAAU,MAAM;AAAA,IAE1C,cAAa,cAAa,WAAW,MAAM;AAAA,IAK3C,cAAa,cAAa,aAAa,MAAM;AAAA,IAE7C,cAAa,cAAa,SAAS,QAAQ;AAAA,KAC5C,eAAuB,yBAAyB,uBAAe,CAAC,EAAE;AAAA;;;;EC1BrE,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,mCAAgC;AAAA,EACxC,IAAM;AAAA,EACN,SAAS,wBAAwB,CAAC,UAAU,QAAQ;AAAA,IAChD,IAAI,WAAW,QAAQ,aAAa,MAAM;AAAA,MACtC,WAAW,QAAQ,aAAa;AAAA,IACpC,EACK,SAAI,WAAW,QAAQ,aAAa,KAAK;AAAA,MAC1C,WAAW,QAAQ,aAAa;AAAA,IACpC;AAAA,IAEA,SAAS,UAAU,CAAC;AAAA,IACpB,SAAS,WAAW,CAAC,UAAU,UAAU;AAAA,MACrC,MAAM,UAAU,OAAO;AAAA,MACvB,IAAI,OAAO,YAAY,cAAc,YAAY,UAAU;AAAA,QACvD,OAAO,QAAQ,KAAK,MAAM;AAAA,MAC9B;AAAA,MACA,OAAO,QAAS,GAAG;AAAA;AAAA,IAEvB,OAAO;AAAA,MACH,OAAO,YAAY,SAAS,QAAQ,aAAa,KAAK;AAAA,MACtD,MAAM,YAAY,QAAQ,QAAQ,aAAa,IAAI;AAAA,MACnD,MAAM,YAAY,QAAQ,QAAQ,aAAa,IAAI;AAAA,MACnD,OAAO,YAAY,SAAS,QAAQ,aAAa,KAAK;AAAA,MACtD,SAAS,YAAY,WAAW,QAAQ,aAAa,OAAO;AAAA,IAChE;AAAA;AAAA,EAEI,mCAA2B;AAAA;;;;EC3BnC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kBAAe;AAAA,EACvB,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,WAAW;AAAA;AAAA,EAKjB,MAAM,QAAQ;AAAA,IAKV,WAAW,GAAG;AAAA,MACV,SAAS,SAAS,CAAC,UAAU;AAAA,QACzB,OAAO,QAAS,IAAI,MAAM;AAAA,UACtB,MAAM,UAAU,GAAG,eAAe,WAAW,MAAM;AAAA,UAEnD,IAAI,CAAC;AAAA,YACD;AAAA,UACJ,OAAO,OAAO,UAAU,GAAG,IAAI;AAAA;AAAA;AAAA,MAIvC,MAAM,OAAO;AAAA,MAEb,MAAM,YAAY,CAAC,QAAQ,oBAAoB,EAAE,UAAU,QAAQ,aAAa,KAAK,MAAM;AAAA,QACvF,IAAI,IAAI,IAAI;AAAA,QACZ,IAAI,WAAW,MAAM;AAAA,UAIjB,MAAM,MAAM,IAAI,MAAM,oIAAoI;AAAA,UAC1J,KAAK,OAAO,KAAK,IAAI,WAAW,QAAQ,OAAY,YAAI,KAAK,IAAI,OAAO;AAAA,UACxE,OAAO;AAAA,QACX;AAAA,QACA,IAAI,OAAO,sBAAsB,UAAU;AAAA,UACvC,oBAAoB;AAAA,YAChB,UAAU;AAAA,UACd;AAAA,QACJ;AAAA,QACA,MAAM,aAAa,GAAG,eAAe,WAAW,MAAM;AAAA,QACtD,MAAM,aAAa,GAAG,iBAAiB,2BAA2B,KAAK,kBAAkB,cAAc,QAAQ,OAAY,YAAI,KAAK,QAAQ,aAAa,MAAM,MAAM;AAAA,QAErK,IAAI,aAAa,CAAC,kBAAkB,yBAAyB;AAAA,UACzD,MAAM,SAAS,KAAK,IAAI,MAAM,EAAE,WAAW,QAAQ,OAAY,YAAI,KAAK;AAAA,UACxE,UAAU,KAAK,2CAA2C,OAAO;AAAA,UACjE,UAAU,KAAK,6DAA6D,OAAO;AAAA,QACvF;AAAA,QACA,QAAQ,GAAG,eAAe,gBAAgB,QAAQ,WAAW,MAAM,IAAI;AAAA;AAAA,MAE3E,KAAK,YAAY;AAAA,MACjB,KAAK,UAAU,MAAM;AAAA,SAChB,GAAG,eAAe,kBAAkB,UAAU,IAAI;AAAA;AAAA,MAEvD,KAAK,wBAAwB,CAAC,YAAY;AAAA,QACtC,OAAO,IAAI,kBAAkB,oBAAoB,OAAO;AAAA;AAAA,MAE5D,KAAK,UAAU,UAAU,SAAS;AAAA,MAClC,KAAK,QAAQ,UAAU,OAAO;AAAA,MAC9B,KAAK,OAAO,UAAU,MAAM;AAAA,MAC5B,KAAK,OAAO,UAAU,MAAM;AAAA,MAC5B,KAAK,QAAQ,UAAU,OAAO;AAAA;AAAA,WAG3B,QAAQ,GAAG;AAAA,MACd,IAAI,CAAC,KAAK,WAAW;AAAA,QACjB,KAAK,YAAY,IAAI;AAAA,MACzB;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,EAEpB;AAAA,EACQ,kBAAU;AAAA;;;;EC3ElB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,sBAAmB;AAAA;AAAA,EAC3B,MAAM,YAAY;AAAA,IACd,WAAW,CAAC,SAAS;AAAA,MACjB,KAAK,WAAW,UAAU,IAAI,IAAI,OAAO,IAAI,IAAI;AAAA;AAAA,IAErD,QAAQ,CAAC,KAAK;AAAA,MACV,MAAM,QAAQ,KAAK,SAAS,IAAI,GAAG;AAAA,MACnC,IAAI,CAAC,OAAO;AAAA,QACR;AAAA,MACJ;AAAA,MACA,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK;AAAA;AAAA,IAElC,aAAa,GAAG;AAAA,MACZ,OAAO,MAAM,KAAK,KAAK,SAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAAA;AAAA,IAErE,QAAQ,CAAC,KAAK,OAAO;AAAA,MACjB,MAAM,aAAa,IAAI,YAAY,KAAK,QAAQ;AAAA,MAChD,WAAW,SAAS,IAAI,KAAK,KAAK;AAAA,MAClC,OAAO;AAAA;AAAA,IAEX,WAAW,CAAC,KAAK;AAAA,MACb,MAAM,aAAa,IAAI,YAAY,KAAK,QAAQ;AAAA,MAChD,WAAW,SAAS,OAAO,GAAG;AAAA,MAC9B,OAAO;AAAA;AAAA,IAEX,aAAa,IAAI,MAAM;AAAA,MACnB,MAAM,aAAa,IAAI,YAAY,KAAK,QAAQ;AAAA,MAChD,WAAW,OAAO,MAAM;AAAA,QACpB,WAAW,SAAS,OAAO,GAAG;AAAA,MAClC;AAAA,MACA,OAAO;AAAA;AAAA,IAEX,KAAK,GAAG;AAAA,MACJ,OAAO,IAAI;AAAA;AAAA,EAEnB;AAAA,EACQ,sBAAc;AAAA;;;;ECrCtB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qCAAkC;AAAA,EAIlC,qCAA6B,OAAO,sBAAsB;AAAA;;;;ECLlE,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,yCAAyC,wBAAqB;AAAA,EACtE,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,OAAO,OAAO,QAAQ,SAAS;AAAA,EAMrC,SAAS,aAAa,CAAC,UAAU,CAAC,GAAG;AAAA,IACjC,OAAO,IAAI,eAAe,YAAY,IAAI,IAAI,OAAO,QAAQ,OAAO,CAAC,CAAC;AAAA;AAAA,EAElE,wBAAgB;AAAA,EAOxB,SAAS,8BAA8B,CAAC,KAAK;AAAA,IACzC,IAAI,OAAO,QAAQ,UAAU;AAAA,MACzB,KAAK,MAAM,qDAAqD,OAAO,KAAK;AAAA,MAC5E,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,UAAU,SAAS;AAAA,MACnB,QAAQ,GAAG;AAAA,QACP,OAAO;AAAA;AAAA,IAEf;AAAA;AAAA,EAEI,yCAAiC;AAAA;;;;ECjCzC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,uBAAuB,2BAAwB;AAAA,EAEvD,SAAS,gBAAgB,CAAC,aAAa;AAAA,IAOnC,OAAO,OAAO,IAAI,WAAW;AAAA;AAAA,EAEzB,2BAAmB;AAAA;AAAA,EAC3B,MAAM,YAAY;AAAA,IAMd,WAAW,CAAC,eAAe;AAAA,MAEvB,MAAM,OAAO;AAAA,MACb,KAAK,kBAAkB,gBAAgB,IAAI,IAAI,aAAa,IAAI,IAAI;AAAA,MACpE,KAAK,WAAW,CAAC,QAAQ,KAAK,gBAAgB,IAAI,GAAG;AAAA,MACrD,KAAK,WAAW,CAAC,KAAK,UAAU;AAAA,QAC5B,MAAM,UAAU,IAAI,YAAY,KAAK,eAAe;AAAA,QACpD,QAAQ,gBAAgB,IAAI,KAAK,KAAK;AAAA,QACtC,OAAO;AAAA;AAAA,MAEX,KAAK,cAAc,CAAC,QAAQ;AAAA,QACxB,MAAM,UAAU,IAAI,YAAY,KAAK,eAAe;AAAA,QACpD,QAAQ,gBAAgB,OAAO,GAAG;AAAA,QAClC,OAAO;AAAA;AAAA;AAAA,EAGnB;AAAA,EAEQ,uBAAe,IAAI;AAAA;;;;ECrC3B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,4BAAyB;AAAA,EACjC,IAAM,aAAa;AAAA,IACf,EAAE,GAAG,SAAS,GAAG,QAAQ;AAAA,IACzB,EAAE,GAAG,QAAQ,GAAG,OAAO;AAAA,IACvB,EAAE,GAAG,QAAQ,GAAG,OAAO;AAAA,IACvB,EAAE,GAAG,SAAS,GAAG,QAAQ;AAAA,IACzB,EAAE,GAAG,WAAW,GAAG,QAAQ;AAAA,EAC/B;AAAA;AAAA,EAMA,MAAM,kBAAkB;AAAA,IACpB,WAAW,GAAG;AAAA,MACV,SAAS,YAAY,CAAC,UAAU;AAAA,QAC5B,OAAO,QAAS,IAAI,MAAM;AAAA,UACtB,IAAI,SAAS;AAAA,YAGT,IAAI,UAAU,QAAQ;AAAA,YACtB,IAAI,OAAO,YAAY,YAAY;AAAA,cAG/B,UAAU,QAAQ;AAAA,YACtB;AAAA,YAEA,IAAI,OAAO,YAAY,YAAY;AAAA,cAC/B,OAAO,QAAQ,MAAM,SAAS,IAAI;AAAA,YACtC;AAAA,UACJ;AAAA;AAAA;AAAA,MAGR,SAAS,IAAI,EAAG,IAAI,WAAW,QAAQ,KAAK;AAAA,QACxC,KAAK,WAAW,GAAG,KAAK,aAAa,WAAW,GAAG,CAAC;AAAA,MACxD;AAAA;AAAA,EAER;AAAA,EACQ,4BAAoB;AAAA;;;;ECvC5B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,0BAA0B,iDAAiD,uCAAuC,yCAAyC,sCAAsC,gCAAgC,4BAA4B,8BAA8B,qBAAqB,4CAA4C,oCAAoC,sCAAsC,+BAA+B,8BAA8B,0BAA0B,kCAAkC,4BAA4B,qBAAqB,oBAAiB;AAAA;AAAA,EAKzmB,MAAM,UAAU;AAAA,IACZ,WAAW,GAAG;AAAA,IAId,WAAW,CAAC,OAAO,UAAU;AAAA,MACzB,OAAe;AAAA;AAAA,IAKnB,eAAe,CAAC,OAAO,UAAU;AAAA,MAC7B,OAAe;AAAA;AAAA,IAKnB,aAAa,CAAC,OAAO,UAAU;AAAA,MAC3B,OAAe;AAAA;AAAA,IAKnB,mBAAmB,CAAC,OAAO,UAAU;AAAA,MACjC,OAAe;AAAA;AAAA,IAKnB,qBAAqB,CAAC,OAAO,UAAU;AAAA,MACnC,OAAe;AAAA;AAAA,IAKnB,uBAAuB,CAAC,OAAO,UAAU;AAAA,MACrC,OAAe;AAAA;AAAA,IAKnB,6BAA6B,CAAC,OAAO,UAAU;AAAA,MAC3C,OAAe;AAAA;AAAA,IAKnB,0BAA0B,CAAC,WAAW,cAAc;AAAA,IAIpD,6BAA6B,CAAC,WAAW;AAAA,EAC7C;AAAA,EACQ,oBAAY;AAAA;AAAA,EACpB,MAAM,WAAW;AAAA,EACjB;AAAA,EACQ,qBAAa;AAAA;AAAA,EACrB,MAAM,0BAA0B,WAAW;AAAA,IACvC,GAAG,CAAC,QAAQ,aAAa;AAAA,EAC7B;AAAA,EACQ,4BAAoB;AAAA;AAAA,EAC5B,MAAM,gCAAgC,WAAW;AAAA,IAC7C,GAAG,CAAC,QAAQ,aAAa;AAAA,EAC7B;AAAA,EACQ,kCAA0B;AAAA;AAAA,EAClC,MAAM,wBAAwB,WAAW;AAAA,IACrC,MAAM,CAAC,QAAQ,aAAa;AAAA,EAChC;AAAA,EACQ,0BAAkB;AAAA;AAAA,EAC1B,MAAM,4BAA4B,WAAW;AAAA,IACzC,MAAM,CAAC,QAAQ,aAAa;AAAA,EAChC;AAAA,EACQ,8BAAsB;AAAA;AAAA,EAC9B,MAAM,qBAAqB;AAAA,IACvB,WAAW,CAAC,WAAW;AAAA,IACvB,cAAc,CAAC,WAAW;AAAA,EAC9B;AAAA,EACQ,+BAAuB;AAAA;AAAA,EAC/B,MAAM,oCAAoC,qBAAqB;AAAA,EAC/D;AAAA,EACQ,sCAA8B;AAAA;AAAA,EACtC,MAAM,kCAAkC,qBAAqB;AAAA,EAC7D;AAAA,EACQ,oCAA4B;AAAA;AAAA,EACpC,MAAM,0CAA0C,qBAAqB;AAAA,EACrE;AAAA,EACQ,4CAAoC;AAAA,EACpC,qBAAa,IAAI;AAAA,EAEjB,8BAAsB,IAAI;AAAA,EAC1B,4BAAoB,IAAI;AAAA,EACxB,gCAAwB,IAAI;AAAA,EAC5B,sCAA8B,IAAI;AAAA,EAElC,yCAAiC,IAAI;AAAA,EACrC,uCAA+B,IAAI;AAAA,EACnC,iDAAyC,IAAI;AAAA,EAIrD,SAAS,eAAe,GAAG;AAAA,IACvB,OAAe;AAAA;AAAA,EAEX,0BAAkB;AAAA;;;;EC7G1B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,oBAAiB;AAAA,EAEzB,IAAI;AAAA,GACH,QAAS,CAAC,YAAW;AAAA,IAClB,WAAU,WAAU,SAAS,KAAK;AAAA,IAClC,WAAU,WAAU,YAAY,KAAK;AAAA,KACtC,YAAoB,sBAAsB,oBAAY,CAAC,EAAE;AAAA;;;;ECP5D,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,+BAA+B,+BAA4B;AAAA,EAC3D,+BAAuB;AAAA,IAC3B,GAAG,CAAC,SAAS,KAAK;AAAA,MACd,IAAI,WAAW,MAAM;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,OAAO,QAAQ;AAAA;AAAA,IAEnB,IAAI,CAAC,SAAS;AAAA,MACV,IAAI,WAAW,MAAM;AAAA,QACjB,OAAO,CAAC;AAAA,MACZ;AAAA,MACA,OAAO,OAAO,KAAK,OAAO;AAAA;AAAA,EAElC;AAAA,EACQ,+BAAuB;AAAA,IAC3B,GAAG,CAAC,SAAS,KAAK,OAAO;AAAA,MACrB,IAAI,WAAW,MAAM;AAAA,QACjB;AAAA,MACJ;AAAA,MACA,QAAQ,OAAO;AAAA;AAAA,EAEvB;AAAA;;;;ECvBA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,6BAA0B;AAAA,EAClC,IAAM;AAAA;AAAA,EACN,MAAM,mBAAmB;AAAA,IACrB,MAAM,GAAG;AAAA,MACL,OAAO,UAAU;AAAA;AAAA,IAErB,IAAI,CAAC,UAAU,IAAI,YAAY,MAAM;AAAA,MACjC,OAAO,GAAG,KAAK,SAAS,GAAG,IAAI;AAAA;AAAA,IAEnC,IAAI,CAAC,UAAU,QAAQ;AAAA,MACnB,OAAO;AAAA;AAAA,IAEX,MAAM,GAAG;AAAA,MACL,OAAO;AAAA;AAAA,IAEX,OAAO,GAAG;AAAA,MACN,OAAO;AAAA;AAAA,EAEf;AAAA,EACQ,6BAAqB;AAAA;;;;ECpB7B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAkB;AAAA,EAC1B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,WAAW;AAAA,EACjB,IAAM,uBAAuB,IAAI,qBAAqB;AAAA;AAAA,EAItD,MAAM,WAAW;AAAA,IAEb,WAAW,GAAG;AAAA,WAEP,WAAW,GAAG;AAAA,MACjB,IAAI,CAAC,KAAK,WAAW;AAAA,QACjB,KAAK,YAAY,IAAI;AAAA,MACzB;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,IAOhB,uBAAuB,CAAC,gBAAgB;AAAA,MACpC,QAAQ,GAAG,eAAe,gBAAgB,UAAU,gBAAgB,OAAO,QAAQ,SAAS,CAAC;AAAA;AAAA,IAKjG,MAAM,GAAG;AAAA,MACL,OAAO,KAAK,mBAAmB,EAAE,OAAO;AAAA;AAAA,IAU5C,IAAI,CAAC,SAAS,IAAI,YAAY,MAAM;AAAA,MAChC,OAAO,KAAK,mBAAmB,EAAE,KAAK,SAAS,IAAI,SAAS,GAAG,IAAI;AAAA;AAAA,IAQvE,IAAI,CAAC,SAAS,QAAQ;AAAA,MAClB,OAAO,KAAK,mBAAmB,EAAE,KAAK,SAAS,MAAM;AAAA;AAAA,IAEzD,kBAAkB,GAAG;AAAA,MACjB,QAAQ,GAAG,eAAe,WAAW,QAAQ,KAAK;AAAA;AAAA,IAGtD,OAAO,GAAG;AAAA,MACN,KAAK,mBAAmB,EAAE,QAAQ;AAAA,OACjC,GAAG,eAAe,kBAAkB,UAAU,OAAO,QAAQ,SAAS,CAAC;AAAA;AAAA,EAEhF;AAAA,EACQ,qBAAa;AAAA;;;;EC9ErB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAkB;AAAA,EAgB1B,IAAI;AAAA,GACH,QAAS,CAAC,aAAY;AAAA,IAEnB,YAAW,YAAW,UAAU,KAAK;AAAA,IAErC,YAAW,YAAW,aAAa,KAAK;AAAA,KACzC,aAAqB,uBAAuB,qBAAa,CAAC,EAAE;AAAA;;;;ECR/D,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,+BAA+B,0BAA0B,yBAAsB;AAAA,EACvF,IAAM;AAAA,EACE,yBAAiB;AAAA,EACjB,0BAAkB;AAAA,EAClB,+BAAuB;AAAA,IAC3B,SAAiB;AAAA,IACjB,QAAgB;AAAA,IAChB,YAAY,cAAc,WAAW;AAAA,EACzC;AAAA;;;;ECTA,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,2BAAwB;AAAA,EAChC,IAAM;AAAA;AAAA,EAMN,MAAM,iBAAiB;AAAA,IACnB,WAAW,CAAC,eAAe,yBAAyB,sBAAsB;AAAA,MACtE,KAAK,eAAe;AAAA;AAAA,IAGxB,WAAW,GAAG;AAAA,MACV,OAAO,KAAK;AAAA;AAAA,IAGhB,YAAY,CAAC,MAAM,QAAQ;AAAA,MACvB,OAAO;AAAA;AAAA,IAGX,aAAa,CAAC,aAAa;AAAA,MACvB,OAAO;AAAA;AAAA,IAGX,QAAQ,CAAC,OAAO,aAAa;AAAA,MACzB,OAAO;AAAA;AAAA,IAEX,OAAO,CAAC,OAAO;AAAA,MACX,OAAO;AAAA;AAAA,IAEX,QAAQ,CAAC,QAAQ;AAAA,MACb,OAAO;AAAA;AAAA,IAGX,SAAS,CAAC,SAAS;AAAA,MACf,OAAO;AAAA;AAAA,IAGX,UAAU,CAAC,OAAO;AAAA,MACd,OAAO;AAAA;AAAA,IAGX,GAAG,CAAC,UAAU;AAAA,IAEd,WAAW,GAAG;AAAA,MACV,OAAO;AAAA;AAAA,IAGX,eAAe,CAAC,YAAY,OAAO;AAAA,EACvC;AAAA,EACQ,2BAAmB;AAAA;;;;ECnD3B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,yBAAyB,yBAAyB,qBAAqB,kBAAkB,wBAAwB,kBAAe;AAAA,EACxI,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EAIN,IAAM,YAAY,GAAG,UAAU,kBAAkB,gCAAgC;AAAA,EAMjF,SAAS,OAAO,CAAC,SAAS;AAAA,IACtB,OAAO,QAAQ,SAAS,QAAQ,KAAK;AAAA;AAAA,EAEjC,kBAAU;AAAA,EAIlB,SAAS,aAAa,GAAG;AAAA,IACrB,OAAO,QAAQ,UAAU,WAAW,YAAY,EAAE,OAAO,CAAC;AAAA;AAAA,EAEtD,wBAAgB;AAAA,EAOxB,SAAS,OAAO,CAAC,SAAS,MAAM;AAAA,IAC5B,OAAO,QAAQ,SAAS,UAAU,IAAI;AAAA;AAAA,EAElC,kBAAU;AAAA,EAMlB,SAAS,UAAU,CAAC,SAAS;AAAA,IACzB,OAAO,QAAQ,YAAY,QAAQ;AAAA;AAAA,EAE/B,qBAAa;AAAA,EAQrB,SAAS,cAAc,CAAC,SAAS,aAAa;AAAA,IAC1C,OAAO,QAAQ,SAAS,IAAI,mBAAmB,iBAAiB,WAAW,CAAC;AAAA;AAAA,EAExE,yBAAiB;AAAA,EAMzB,SAAS,cAAc,CAAC,SAAS;AAAA,IAC7B,IAAI;AAAA,IACJ,QAAQ,KAAK,QAAQ,OAAO,OAAO,QAAQ,OAAY,YAAS,YAAI,GAAG,YAAY;AAAA;AAAA,EAE/E,yBAAiB;AAAA;;;;EC/EzB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,0BAA0B,6BAA6B,wBAAwB,yBAAsB;AAAA,EAgB7G,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,sBAAsB;AAAA,EAC5B,IAAM,qBAAqB;AAAA,EAC3B,SAAS,cAAc,CAAC,SAAS;AAAA,IAC7B,OAAO,oBAAoB,KAAK,OAAO,KAAK,YAAY,yBAAyB;AAAA;AAAA,EAE7E,yBAAiB;AAAA,EACzB,SAAS,aAAa,CAAC,QAAQ;AAAA,IAC3B,OAAO,mBAAmB,KAAK,MAAM,KAAK,WAAW,yBAAyB;AAAA;AAAA,EAE1E,wBAAgB;AAAA,EAKxB,SAAS,kBAAkB,CAAC,aAAa;AAAA,IACrC,OAAQ,eAAe,YAAY,OAAO,KAAK,cAAc,YAAY,MAAM;AAAA;AAAA,EAE3E,6BAAqB;AAAA,EAO7B,SAAS,eAAe,CAAC,aAAa;AAAA,IAClC,OAAO,IAAI,mBAAmB,iBAAiB,WAAW;AAAA;AAAA,EAEtD,0BAAkB;AAAA;;;;EC/B1B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAkB;AAAA,EAC1B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,aAAa,UAAU,WAAW,YAAY;AAAA;AAAA,EAIpD,MAAM,WAAW;AAAA,IAEb,SAAS,CAAC,MAAM,SAAS,UAAU,WAAW,OAAO,GAAG;AAAA,MACpD,MAAM,OAAO,QAAQ,YAAY,QAAQ,YAAiB,YAAS,YAAI,QAAQ,IAAI;AAAA,MACnF,IAAI,MAAM;AAAA,QACN,OAAO,IAAI,mBAAmB;AAAA,MAClC;AAAA,MACA,MAAM,oBAAoB,YAAY,GAAG,gBAAgB,gBAAgB,OAAO;AAAA,MAChF,IAAI,cAAc,iBAAiB,MAC9B,GAAG,oBAAoB,oBAAoB,iBAAiB,GAAG;AAAA,QAChE,OAAO,IAAI,mBAAmB,iBAAiB,iBAAiB;AAAA,MACpE,EACK;AAAA,QACD,OAAO,IAAI,mBAAmB;AAAA;AAAA;AAAA,IAGtC,eAAe,CAAC,MAAM,MAAM,MAAM,MAAM;AAAA,MACpC,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI,UAAU,SAAS,GAAG;AAAA,QACtB;AAAA,MACJ,EACK,SAAI,UAAU,WAAW,GAAG;AAAA,QAC7B,KAAK;AAAA,MACT,EACK,SAAI,UAAU,WAAW,GAAG;AAAA,QAC7B,OAAO;AAAA,QACP,KAAK;AAAA,MACT,EACK;AAAA,QACD,OAAO;AAAA,QACP,MAAM;AAAA,QACN,KAAK;AAAA;AAAA,MAET,MAAM,gBAAgB,QAAQ,QAAQ,QAAa,YAAI,MAAM,WAAW,OAAO;AAAA,MAC/E,MAAM,OAAO,KAAK,UAAU,MAAM,MAAM,aAAa;AAAA,MACrD,MAAM,sBAAsB,GAAG,gBAAgB,SAAS,eAAe,IAAI;AAAA,MAC3E,OAAO,WAAW,KAAK,oBAAoB,IAAI,WAAW,IAAI;AAAA;AAAA,EAEtE;AAAA,EACQ,qBAAa;AAAA,EACrB,SAAS,aAAa,CAAC,aAAa;AAAA,IAChC,OAAQ,OAAO,gBAAgB,YAC3B,OAAO,YAAY,cAAc,YACjC,OAAO,YAAY,eAAe,YAClC,OAAO,YAAY,kBAAkB;AAAA;AAAA;;;;ECxD7C,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,sBAAmB;AAAA,EAC3B,IAAM;AAAA,EACN,IAAM,cAAc,IAAI,aAAa;AAAA;AAAA,EAIrC,MAAM,YAAY;AAAA,IACd,WAAW,CAAC,WAAW,MAAM,SAAS,SAAS;AAAA,MAC3C,KAAK,YAAY;AAAA,MACjB,KAAK,OAAO;AAAA,MACZ,KAAK,UAAU;AAAA,MACf,KAAK,UAAU;AAAA;AAAA,IAEnB,SAAS,CAAC,MAAM,SAAS,SAAS;AAAA,MAC9B,OAAO,KAAK,WAAW,EAAE,UAAU,MAAM,SAAS,OAAO;AAAA;AAAA,IAE7D,eAAe,CAAC,OAAO,UAAU,UAAU,KAAK;AAAA,MAC5C,MAAM,SAAS,KAAK,WAAW;AAAA,MAC/B,OAAO,QAAQ,MAAM,OAAO,iBAAiB,QAAQ,SAAS;AAAA;AAAA,IAMlE,UAAU,GAAG;AAAA,MACT,IAAI,KAAK,WAAW;AAAA,QAChB,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM,SAAS,KAAK,UAAU,kBAAkB,KAAK,MAAM,KAAK,SAAS,KAAK,OAAO;AAAA,MACrF,IAAI,CAAC,QAAQ;AAAA,QACT,OAAO;AAAA,MACX;AAAA,MACA,KAAK,YAAY;AAAA,MACjB,OAAO,KAAK;AAAA;AAAA,EAEpB;AAAA,EACQ,sBAAc;AAAA;;;;ECrCtB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,6BAA0B;AAAA,EAClC,IAAM;AAAA;AAAA,EAON,MAAM,mBAAmB;AAAA,IACrB,SAAS,CAAC,OAAO,UAAU,UAAU;AAAA,MACjC,OAAO,IAAI,aAAa;AAAA;AAAA,EAEhC;AAAA,EACQ,6BAAqB;AAAA;;;;ECd7B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,8BAA2B;AAAA,EACnC,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,uBAAuB,IAAI,qBAAqB;AAAA;AAAA,EAStD,MAAM,oBAAoB;AAAA,IAItB,SAAS,CAAC,MAAM,SAAS,SAAS;AAAA,MAC9B,IAAI;AAAA,MACJ,QAAS,KAAK,KAAK,kBAAkB,MAAM,SAAS,OAAO,OAAO,QAAQ,OAAY,YAAI,KAAK,IAAI,cAAc,YAAY,MAAM,MAAM,SAAS,OAAO;AAAA;AAAA,IAE7J,WAAW,GAAG;AAAA,MACV,IAAI;AAAA,MACJ,QAAQ,KAAK,KAAK,eAAe,QAAQ,OAAY,YAAI,KAAK;AAAA;AAAA,IAKlE,WAAW,CAAC,UAAU;AAAA,MAClB,KAAK,YAAY;AAAA;AAAA,IAErB,iBAAiB,CAAC,MAAM,SAAS,SAAS;AAAA,MACtC,IAAI;AAAA,MACJ,QAAQ,KAAK,KAAK,eAAe,QAAQ,OAAY,YAAS,YAAI,GAAG,UAAU,MAAM,SAAS,OAAO;AAAA;AAAA,EAE7G;AAAA,EACQ,8BAAsB;AAAA;;;;ECpC9B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,2BAAwB;AAAA,EAMhC,IAAI;AAAA,GACH,QAAS,CAAC,mBAAkB;AAAA,IAKzB,kBAAiB,kBAAiB,gBAAgB,KAAK;AAAA,IAKvD,kBAAiB,kBAAiB,YAAY,KAAK;AAAA,IAKnD,kBAAiB,kBAAiB,wBAAwB,KAAK;AAAA,KAChE,mBAA2B,6BAA6B,2BAAmB,CAAC,EAAE;AAAA;;;;ECvCjF,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,mBAAgB;AAAA,EAgBxB,IAAI;AAAA,GACH,QAAS,CAAC,WAAU;AAAA,IAEjB,UAAS,UAAS,cAAc,KAAK;AAAA,IAKrC,UAAS,UAAS,YAAY,KAAK;AAAA,IAKnC,UAAS,UAAS,YAAY,KAAK;AAAA,IAMnC,UAAS,UAAS,cAAc,KAAK;AAAA,IAMrC,UAAS,UAAS,cAAc,KAAK;AAAA,KACtC,WAAmB,qBAAqB,mBAAW,CAAC,EAAE;AAAA;;;;EC3CzD,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,yBAAsB;AAAA,EAI9B,IAAI;AAAA,GACH,QAAS,CAAC,iBAAgB;AAAA,IAIvB,gBAAe,gBAAe,WAAW,KAAK;AAAA,IAK9C,gBAAe,gBAAe,QAAQ,KAAK;AAAA,IAI3C,gBAAe,gBAAe,WAAW,KAAK;AAAA,KAC/C,iBAAyB,2BAA2B,yBAAiB,CAAC,EAAE;AAAA;;;;ECL3E,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAwB,sBAAmB;AAAA,EACnD,IAAM,uBAAuB;AAAA,EAC7B,IAAM,YAAY,QAAQ;AAAA,EAC1B,IAAM,mBAAmB,WAAW,oCAAoC;AAAA,EACxE,IAAM,kBAAkB,IAAI,OAAO,OAAO,aAAa,oBAAoB;AAAA,EAC3E,IAAM,yBAAyB;AAAA,EAC/B,IAAM,kCAAkC;AAAA,EASxC,SAAS,WAAW,CAAC,KAAK;AAAA,IACtB,OAAO,gBAAgB,KAAK,GAAG;AAAA;AAAA,EAE3B,sBAAc;AAAA,EAKtB,SAAS,aAAa,CAAC,OAAO;AAAA,IAC1B,OAAQ,uBAAuB,KAAK,KAAK,KACrC,CAAC,gCAAgC,KAAK,KAAK;AAAA;AAAA,EAE3C,wBAAgB;AAAA;;;;EC5BxB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,yBAAsB;AAAA,EAC9B,IAAM;AAAA,EACN,IAAM,wBAAwB;AAAA,EAC9B,IAAM,sBAAsB;AAAA,EAC5B,IAAM,yBAAyB;AAAA,EAC/B,IAAM,iCAAiC;AAAA;AAAA,EAUvC,MAAM,eAAe;AAAA,IACjB,WAAW,CAAC,eAAe;AAAA,MACvB,KAAK,iBAAiB,IAAI;AAAA,MAC1B,IAAI;AAAA,QACA,KAAK,OAAO,aAAa;AAAA;AAAA,IAEjC,GAAG,CAAC,KAAK,OAAO;AAAA,MAGZ,MAAM,aAAa,KAAK,OAAO;AAAA,MAC/B,IAAI,WAAW,eAAe,IAAI,GAAG,GAAG;AAAA,QACpC,WAAW,eAAe,OAAO,GAAG;AAAA,MACxC;AAAA,MACA,WAAW,eAAe,IAAI,KAAK,KAAK;AAAA,MACxC,OAAO;AAAA;AAAA,IAEX,KAAK,CAAC,KAAK;AAAA,MACP,MAAM,aAAa,KAAK,OAAO;AAAA,MAC/B,WAAW,eAAe,OAAO,GAAG;AAAA,MACpC,OAAO;AAAA;AAAA,IAEX,GAAG,CAAC,KAAK;AAAA,MACL,OAAO,KAAK,eAAe,IAAI,GAAG;AAAA;AAAA,IAEtC,SAAS,GAAG;AAAA,MACR,OAAO,KAAK,MAAM,EACb,OAAO,CAAC,KAAK,QAAQ;AAAA,QACtB,IAAI,KAAK,MAAM,iCAAiC,KAAK,IAAI,GAAG,CAAC;AAAA,QAC7D,OAAO;AAAA,SACR,CAAC,CAAC,EACA,KAAK,sBAAsB;AAAA;AAAA,IAEpC,MAAM,CAAC,eAAe;AAAA,MAClB,IAAI,cAAc,SAAS;AAAA,QACvB;AAAA,MACJ,KAAK,iBAAiB,cACjB,MAAM,sBAAsB,EAC5B,QAAQ,EACR,OAAO,CAAC,KAAK,SAAS;AAAA,QACvB,MAAM,aAAa,KAAK,KAAK;AAAA,QAC7B,MAAM,IAAI,WAAW,QAAQ,8BAA8B;AAAA,QAC3D,IAAI,MAAM,IAAI;AAAA,UACV,MAAM,MAAM,WAAW,MAAM,GAAG,CAAC;AAAA,UACjC,MAAM,QAAQ,WAAW,MAAM,IAAI,GAAG,KAAK,MAAM;AAAA,UACjD,KAAK,GAAG,wBAAwB,aAAa,GAAG,MAAM,GAAG,wBAAwB,eAAe,KAAK,GAAG;AAAA,YACpG,IAAI,IAAI,KAAK,KAAK;AAAA,UACtB;AAAA,QAIJ;AAAA,QACA,OAAO;AAAA,SACR,IAAI,GAAK;AAAA,MAEZ,IAAI,KAAK,eAAe,OAAO,uBAAuB;AAAA,QAClD,KAAK,iBAAiB,IAAI,IAAI,MAAM,KAAK,KAAK,eAAe,QAAQ,CAAC,EACjE,QAAQ,EACR,MAAM,GAAG,qBAAqB,CAAC;AAAA,MACxC;AAAA;AAAA,IAEJ,KAAK,GAAG;AAAA,MACJ,OAAO,MAAM,KAAK,KAAK,eAAe,KAAK,CAAC,EAAE,QAAQ;AAAA;AAAA,IAE1D,MAAM,GAAG;AAAA,MACL,MAAM,aAAa,IAAI;AAAA,MACvB,WAAW,iBAAiB,IAAI,IAAI,KAAK,cAAc;AAAA,MACvD,OAAO;AAAA;AAAA,EAEf;AAAA,EACQ,yBAAiB;AAAA;;;;ECrFzB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,2BAAwB;AAAA,EAChC,IAAM;AAAA,EACN,SAAS,gBAAgB,CAAC,eAAe;AAAA,IACrC,OAAO,IAAI,kBAAkB,eAAe,aAAa;AAAA;AAAA,EAErD,2BAAmB;AAAA;;;;ECN3B,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kBAAe;AAAA,EAGvB,IAAM;AAAA,EAEE,kBAAU,UAAU,WAAW,YAAY;AAAA;;;;ECNnD,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,eAAY;AAAA,EAGpB,IAAM;AAAA,EAOE,eAAO,OAAO,QAAQ,SAAS;AAAA;;;;ECXvC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,8BAA8B,4BAAyB;AAAA,EAC/D,IAAM;AAAA;AAAA,EAKN,MAAM,kBAAkB;AAAA,IACpB,QAAQ,CAAC,OAAO,UAAU,UAAU;AAAA,MAChC,OAAO,YAAY;AAAA;AAAA,EAE3B;AAAA,EACQ,4BAAoB;AAAA,EACpB,8BAAsB,IAAI;AAAA;;;;ECblC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,qBAAkB;AAAA,EAC1B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,WAAW;AAAA;AAAA,EAIjB,MAAM,WAAW;AAAA,IAEb,WAAW,GAAG;AAAA,WAEP,WAAW,GAAG;AAAA,MACjB,IAAI,CAAC,KAAK,WAAW;AAAA,QACjB,KAAK,YAAY,IAAI;AAAA,MACzB;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,IAMhB,sBAAsB,CAAC,UAAU;AAAA,MAC7B,QAAQ,GAAG,eAAe,gBAAgB,UAAU,UAAU,OAAO,QAAQ,SAAS,CAAC;AAAA;AAAA,IAK3F,gBAAgB,GAAG;AAAA,MACf,QAAQ,GAAG,eAAe,WAAW,QAAQ,KAAK,oBAAoB;AAAA;AAAA,IAK1E,QAAQ,CAAC,MAAM,SAAS,SAAS;AAAA,MAC7B,OAAO,KAAK,iBAAiB,EAAE,SAAS,MAAM,SAAS,OAAO;AAAA;AAAA,IAGlE,OAAO,GAAG;AAAA,OACL,GAAG,eAAe,kBAAkB,UAAU,OAAO,QAAQ,SAAS,CAAC;AAAA;AAAA,EAEhF;AAAA,EACQ,qBAAa;AAAA;;;;EC3CrB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,kBAAe;AAAA,EAGvB,IAAM;AAAA,EAEE,kBAAU,UAAU,WAAW,YAAY;AAAA;;;;ECNnD,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,gCAA6B;AAAA;AAAA,EAIrC,MAAM,sBAAsB;AAAA,IAExB,MAAM,CAAC,UAAU,UAAU;AAAA,IAE3B,OAAO,CAAC,SAAS,UAAU;AAAA,MACvB,OAAO;AAAA;AAAA,IAEX,MAAM,GAAG;AAAA,MACL,OAAO,CAAC;AAAA;AAAA,EAEhB;AAAA,EACQ,gCAAwB;AAAA;;;;EChBhC,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,wBAAwB,qBAAqB,2BAA2B,qBAAkB;AAAA,EAClG,IAAM;AAAA,EACN,IAAM;AAAA,EAIN,IAAM,eAAe,GAAG,UAAU,kBAAkB,2BAA2B;AAAA,EAO/E,SAAS,UAAU,CAAC,SAAS;AAAA,IACzB,OAAO,QAAQ,SAAS,WAAW,KAAK;AAAA;AAAA,EAEpC,qBAAa;AAAA,EAMrB,SAAS,gBAAgB,GAAG;AAAA,IACxB,OAAO,WAAW,UAAU,WAAW,YAAY,EAAE,OAAO,CAAC;AAAA;AAAA,EAEzD,2BAAmB;AAAA,EAO3B,SAAS,UAAU,CAAC,SAAS,SAAS;AAAA,IAClC,OAAO,QAAQ,SAAS,aAAa,OAAO;AAAA;AAAA,EAExC,qBAAa;AAAA,EAMrB,SAAS,aAAa,CAAC,SAAS;AAAA,IAC5B,OAAO,QAAQ,YAAY,WAAW;AAAA;AAAA,EAElC,wBAAgB;AAAA;;;;EC7CxB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,yBAAsB;AAAA,EAC9B,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,WAAW;AAAA,EACjB,IAAM,2BAA2B,IAAI,wBAAwB;AAAA;AAAA,EAI7D,MAAM,eAAe;AAAA,IAEjB,WAAW,GAAG;AAAA,MACV,KAAK,gBAAgB,QAAQ;AAAA,MAC7B,KAAK,aAAa,kBAAkB;AAAA,MACpC,KAAK,mBAAmB,kBAAkB;AAAA,MAC1C,KAAK,aAAa,kBAAkB;AAAA,MACpC,KAAK,gBAAgB,kBAAkB;AAAA;AAAA,WAGpC,WAAW,GAAG;AAAA,MACjB,IAAI,CAAC,KAAK,WAAW;AAAA,QACjB,KAAK,YAAY,IAAI;AAAA,MACzB;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,IAOhB,mBAAmB,CAAC,YAAY;AAAA,MAC5B,QAAQ,GAAG,eAAe,gBAAgB,UAAU,YAAY,OAAO,QAAQ,SAAS,CAAC;AAAA;AAAA,IAS7F,MAAM,CAAC,SAAS,SAAS,SAAS,oBAAoB,sBAAsB;AAAA,MACxE,OAAO,KAAK,qBAAqB,EAAE,OAAO,SAAS,SAAS,MAAM;AAAA;AAAA,IAStE,OAAO,CAAC,SAAS,SAAS,SAAS,oBAAoB,sBAAsB;AAAA,MACzE,OAAO,KAAK,qBAAqB,EAAE,QAAQ,SAAS,SAAS,MAAM;AAAA;AAAA,IAKvE,MAAM,GAAG;AAAA,MACL,OAAO,KAAK,qBAAqB,EAAE,OAAO;AAAA;AAAA,IAG9C,OAAO,GAAG;AAAA,OACL,GAAG,eAAe,kBAAkB,UAAU,OAAO,QAAQ,SAAS,CAAC;AAAA;AAAA,IAE5E,oBAAoB,GAAG;AAAA,MACnB,QAAQ,GAAG,eAAe,WAAW,QAAQ,KAAK;AAAA;AAAA,EAE1D;AAAA,EACQ,yBAAiB;AAAA;;;;ECvEzB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,sBAAmB;AAAA,EAG3B,IAAM;AAAA,EAEE,sBAAc,cAAc,eAAe,YAAY;AAAA;;;;ECN/D,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,mBAAgB;AAAA,EACxB,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM;AAAA,EACN,IAAM,WAAW;AAAA;AAAA,EAIjB,MAAM,SAAS;AAAA,IAEX,WAAW,GAAG;AAAA,MACV,KAAK,uBAAuB,IAAI,sBAAsB;AAAA,MACtD,KAAK,kBAAkB,oBAAoB;AAAA,MAC3C,KAAK,qBAAqB,oBAAoB;AAAA,MAC9C,KAAK,aAAa,gBAAgB;AAAA,MAClC,KAAK,UAAU,gBAAgB;AAAA,MAC/B,KAAK,gBAAgB,gBAAgB;AAAA,MACrC,KAAK,iBAAiB,gBAAgB;AAAA,MACtC,KAAK,UAAU,gBAAgB;AAAA,MAC/B,KAAK,iBAAiB,gBAAgB;AAAA;AAAA,WAGnC,WAAW,GAAG;AAAA,MACjB,IAAI,CAAC,KAAK,WAAW;AAAA,QACjB,KAAK,YAAY,IAAI;AAAA,MACzB;AAAA,MACA,OAAO,KAAK;AAAA;AAAA,IAOhB,uBAAuB,CAAC,UAAU;AAAA,MAC9B,MAAM,WAAW,GAAG,eAAe,gBAAgB,UAAU,KAAK,sBAAsB,OAAO,QAAQ,SAAS,CAAC;AAAA,MACjH,IAAI,SAAS;AAAA,QACT,KAAK,qBAAqB,YAAY,QAAQ;AAAA,MAClD;AAAA,MACA,OAAO;AAAA;AAAA,IAKX,iBAAiB,GAAG;AAAA,MAChB,QAAQ,GAAG,eAAe,WAAW,QAAQ,KAAK,KAAK;AAAA;AAAA,IAK3D,SAAS,CAAC,MAAM,SAAS;AAAA,MACrB,OAAO,KAAK,kBAAkB,EAAE,UAAU,MAAM,OAAO;AAAA;AAAA,IAG3D,OAAO,GAAG;AAAA,OACL,GAAG,eAAe,kBAAkB,UAAU,OAAO,QAAQ,SAAS,CAAC;AAAA,MACxE,KAAK,uBAAuB,IAAI,sBAAsB;AAAA;AAAA,EAE9D;AAAA,EACQ,mBAAW;AAAA;;;;EC7DnB,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,gBAAa;AAAA,EAGrB,IAAM;AAAA,EAEE,gBAAQ,QAAQ,SAAS,YAAY;AAAA;;;;ECN7C,OAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAAA,EACpD,gBAAgB,sBAAsB,kBAAkB,eAAe,kBAAkB,+BAA+B,0BAA0B,yBAAyB,wBAAwB,yBAAyB,6BAA6B,2BAA2B,qBAAqB,yBAAyB,mBAAmB,2BAA2B,8BAA8B,sBAAsB,+BAA+B,+BAA+B,oBAAoB,0BAA0B,uBAAuB,4BAA4B,uBAAuB,2BAA2B,yCAAsC;AAAA,EACnqB,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,kCAAkC,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,QAAQ;AAAA,IAAkC,CAAC;AAAA,EAE1J,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,oBAAoB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAoB,CAAC;AAAA,EAChI,OAAO,eAAe,SAAS,gBAAgB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,UAAU;AAAA,IAAgB,CAAC;AAAA,EAExH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,qBAAqB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,gBAAgB;AAAA,IAAqB,CAAC;AAAA,EACxI,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,gBAAgB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,QAAQ;AAAA,IAAgB,CAAC;AAAA,EAEtH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,mBAAmB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,YAAY;AAAA,IAAmB,CAAC;AAAA,EAChI,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,aAAa,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,SAAS;AAAA,IAAa,CAAC;AAAA,EAEjH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,wBAAwB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,oBAAoB;AAAA,IAAwB,CAAC;AAAA,EAClJ,OAAO,eAAe,SAAS,wBAAwB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,oBAAoB;AAAA,IAAwB,CAAC;AAAA,EAClJ,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,eAAe,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,cAAc;AAAA,IAAe,CAAC;AAAA,EAC1H,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,uBAAuB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,sBAAsB;AAAA,IAAuB,CAAC;AAAA,EAClJ,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,oBAAoB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,iBAAiB;AAAA,IAAoB,CAAC;AAAA,EACvI,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,YAAY,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,YAAY;AAAA,IAAY,CAAC;AAAA,EAClH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,kBAAkB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,SAAS;AAAA,IAAkB,CAAC;AAAA,EAC3H,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,cAAc,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,cAAc;AAAA,IAAc,CAAC;AAAA,EACxH,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,oBAAoB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,QAAQ;AAAA,IAAoB,CAAC;AAAA,EAC9H,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,sBAAsB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,oBAAoB;AAAA,IAAsB,CAAC;AAAA,EAC9I,OAAO,eAAe,SAAS,kBAAkB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,oBAAoB;AAAA,IAAkB,CAAC;AAAA,EACtI,OAAO,eAAe,SAAS,iBAAiB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,oBAAoB;AAAA,IAAiB,CAAC;AAAA,EACpI,IAAI;AAAA,EACJ,OAAO,eAAe,SAAS,kBAAkB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,yBAAyB;AAAA,IAAkB,CAAC;AAAA,EAC3I,OAAO,eAAe,SAAS,mBAAmB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,yBAAyB;AAAA,IAAmB,CAAC;AAAA,EAC7I,OAAO,eAAe,SAAS,wBAAwB,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,yBAAyB;AAAA,IAAwB,CAAC;AAAA,EAGvJ,IAAM;AAAA,EACN,OAAO,eAAe,SAAS,WAAW,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,cAAc;AAAA,IAAW,CAAC;AAAA,EAClH,IAAM;AAAA,EACN,OAAO,eAAe,SAAS,QAAQ,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,WAAW;AAAA,IAAQ,CAAC;AAAA,EACzG,IAAM;AAAA,EACN,OAAO,eAAe,SAAS,WAAW,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,cAAc;AAAA,IAAW,CAAC;AAAA,EAClH,IAAM;AAAA,EACN,OAAO,eAAe,SAAS,eAAe,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,kBAAkB;AAAA,IAAe,CAAC;AAAA,EAC9H,IAAM;AAAA,EACN,OAAO,eAAe,SAAS,SAAS,EAAE,YAAY,MAAM,KAAK,QAAS,GAAG;AAAA,IAAE,OAAO,YAAY;AAAA,IAAS,CAAC;AAAA,EAEpG,kBAAU;AAAA,IACd,SAAS,cAAc;AAAA,IACvB,MAAM,WAAW;AAAA,IACjB,SAAS,cAAc;AAAA,IACvB,aAAa,kBAAkB;AAAA,IAC/B,OAAO,YAAY;AAAA,EACvB;AAAA;;;AC/EA;AAIA;;;ACJA;;;ACAA;AAGA,SAAS,mBAAmB,CAAC,SAAS,CAAC,GAAG;AAAA,EACzC,MAAM,eAAe,OAAO,oBAAoB;AAAA,EAChD,MAAM,cAAc,OAAO,mBAAmB;AAAA,EAC9C,MAAM,kBAAkB,OAAO,uBAAuB;AAAA,EACtD,MAAM,kBAAkB,CAAC,SAAS;AAAA,IACjC,MAAM,OAAO,iBAAM,QAAQ,mBAAQ,OAAO,CAAC;AAAA,IAC3C,IAAI,MAAM;AAAA,MACT,MAAM,cAAc,KAAK,YAAY;AAAA,MACrC,IAAI,8BAAmB,WAAW,GAAG;AAAA,QACpC,MAAM,SAAS;AAAA,WACb,eAAe,YAAY;AAAA,WAC3B,cAAc,YAAY;AAAA,WAC1B,kBAAkB,IAAI,YAAY,WAAW,SAAS,EAAE;AAAA,QAC1D;AAAA,QACA,IAAI,OAAO,gBAAgB;AAAA,UAC1B,MAAM,YAAY,GAAG,OAAO,iBAAiB,OAAO;AAAA,UACpD,IAAI;AAAA,YAAM,OAAO;AAAA,iBACb;AAAA,iBACA;AAAA,YACJ;AAAA,UACA,OAAO;AAAA,QACR;AAAA,QACA,IAAI;AAAA,UAAM,OAAO;AAAA,eACb;AAAA,eACA;AAAA,UACJ;AAAA,QACA,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACA,OAAO,QAAQ,CAAC;AAAA;AAAA,EAEjB,OAAO;AAAA,IACN,IAAI,OAAO;AAAA,IACX,UAAU,OAAO;AAAA,IACjB,iBAAiB,GAAG,WAAW,gBAAgB,IAAI;AAAA,EACpD;AAAA;;;ACrCD,IAAI,2BAA2B,QAAQ,CAAC,WAAU;AAAA,EACjD,UAAS,UAAU;AAAA,EACnB,UAAS,UAAU;AAAA,EACnB,UAAS,WAAW;AAAA,EACpB,UAAS,WAAW;AAAA,EACpB,UAAS,WAAW;AAAA,EACpB,UAAS,WAAW;AAAA,EACpB,OAAO;AAAA,EACN,CAAC,CAAC;AAIJ,IAAM,mBAAmB;AAAA,GACvB,SAAS,QAAQ;AAAA,GACjB,SAAS,QAAQ;AAAA,GACjB,SAAS,OAAO;AAAA,GAChB,SAAS,OAAO;AAAA,GAChB,SAAS,QAAQ;AAAA,GACjB,SAAS,QAAQ;AACnB;AAIA,IAAM,0BAA0B;AAAA,EAC/B,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AACd;AAUA,IAAM,cAAc,OAAO,IAAI,eAAe;AAO9C,IAAM,kBAAkB;AAyCxB,SAAS,MAAM,CAAC,OAAO;AAAA,EACtB,OAAO,SAAS,QAAQ,OAAO,UAAU,YAAY,eAAe;AAAA;AAMrE,SAAS,eAAe,CAAC,KAAK;AAAA,EAC7B,IAAI,QAAQ;AAAA,EACZ,WAAW,OAAO,OAAO,KAAK,GAAG;AAAA,IAAG,IAAI,OAAO,IAAI,IAAI;AAAA,MAAG;AAAA,EAC1D,OAAO;AAAA;AASR,SAAS,iBAAiB,CAAC,KAAK;AAAA,EAC/B,IAAI,UAAU;AAAA,EACd,WAAW,OAAO,OAAO,KAAK,GAAG;AAAA,IAAG,IAAI,OAAO,IAAI,IAAI,GAAG;AAAA,MACzD,UAAU;AAAA,MACV;AAAA,IACD;AAAA,EACA,IAAI,CAAC;AAAA,IAAS,OAAO;AAAA,MACpB,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,EACA,MAAM,SAAS,CAAC;AAAA,EAChB,IAAI,SAAS;AAAA,EACb,WAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,IACnC,MAAM,QAAQ,IAAI;AAAA,IAClB,IAAI,OAAO,KAAK;AAAA,MAAG,IAAI;AAAA,QACtB,OAAO,OAAO,MAAM,aAAa;AAAA,QAChC,OAAO,GAAG;AAAA,QACX,OAAO,OAAO;AAAA,QACd,IAAI,CAAC;AAAA,UAAQ,SAAS,CAAC;AAAA,QACvB,OAAO,KAAK;AAAA,UACX;AAAA,UACA,OAAO;AAAA,QACR,CAAC;AAAA;AAAA,IAEG;AAAA,aAAO,OAAO;AAAA,EACpB;AAAA,EACA,OAAO;AAAA,IACN,UAAU;AAAA,IACV;AAAA,EACD;AAAA;AAMD,SAAS,gBAAgB,CAAC,KAAK;AAAA,EAC9B,WAAW,OAAO,OAAO,KAAK,GAAG;AAAA,IAAG,IAAI,IAAI,gBAAgB;AAAA,MAAS,OAAO;AAAA,EAC5E,OAAO;AAAA;AAQR,SAAS,oBAAoB,CAAC,KAAK;AAAA,EAClC,IAAI,YAAY;AAAA,EAChB,MAAM,SAAS,CAAC;AAAA,EAChB,WAAW,OAAO,OAAO,KAAK,GAAG;AAAA,IAAG,IAAI,IAAI,gBAAgB,SAAS;AAAA,MACpE,OAAO,OAAO;AAAA,MACd,IAAI,CAAC;AAAA,QAAW,YAAY,CAAC;AAAA,MAC7B,UAAU,KAAK,GAAG;AAAA,IACnB,EAAO;AAAA,aAAO,OAAO,IAAI;AAAA,EACzB,IAAI,CAAC;AAAA,IAAW,OAAO;AAAA,MACtB,UAAU;AAAA,MACV,WAAW;AAAA,IACZ;AAAA,EACA,OAAO;AAAA,IACN,UAAU;AAAA,IACV;AAAA,EACD;AAAA;AAQD,eAAe,oBAAoB,CAAC,KAAK;AAAA,EACxC,MAAM,OAAO,OAAO,KAAK,GAAG;AAAA,EAC5B,MAAM,UAAU,MAAM,QAAQ,WAAW,KAAK,IAAI,CAAC,QAAQ,QAAQ,QAAQ,IAAI,IAAI,CAAC,CAAC;AAAA,EACrF,MAAM,SAAS,CAAC;AAAA,EAChB,IAAI,SAAS;AAAA,EACb,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,IACrC,MAAM,IAAI,QAAQ;AAAA,IAClB,IAAI,EAAE,WAAW;AAAA,MAAa,OAAO,KAAK,MAAM,EAAE;AAAA,IAC7C;AAAA,MACJ,OAAO,KAAK,MAAM;AAAA,MAClB,IAAI,CAAC;AAAA,QAAQ,SAAS,CAAC;AAAA,MACvB,OAAO,KAAK;AAAA,QACX,KAAK,KAAK;AAAA,QACV,OAAO,EAAE;AAAA,MACV,CAAC;AAAA;AAAA,EAEH;AAAA,EACA,OAAO;AAAA,IACN,UAAU;AAAA,IACV;AAAA,EACD;AAAA;;;AC3LD,IAAI,gBAAgB,MAAM;AAAA,EAIzB;AAAA,EAIA;AAAA,EAIA;AAAA,EAIA;AAAA,EAIA;AAAA,EACA,WAAW,CAAC,QAAQ;AAAA,IACnB,KAAK,KAAK,OAAO,MAAM,KAAK,IAAI,EAAE,SAAS,IAAI,KAAK,OAAO,EAAE,SAAS;AAAA,IACtE,KAAK,SAAS,OAAO;AAAA,IACrB,KAAK,UAAU,OAAO,WAAW;AAAA,IACjC,KAAK,eAAe,OAAO,gBAAgB;AAAA,IAC3C,KAAK,QAAQ,OAAO,SAAS;AAAA;AAAA,EAK9B,aAAa,CAAC,QAAQ;AAAA,IACrB,IAAI,CAAC,KAAK;AAAA,MAAS;AAAA,IACnB,IAAI,iBAAiB,OAAO,YAAY,iBAAiB,KAAK;AAAA,MAAQ;AAAA,IACtE,MAAM,WAAW,KAAK,aAAa,MAAM;AAAA,IACzC,IAAI,KAAK;AAAA,MAAc,QAAQ,OAAO;AAAA,aAChC,SAAW;AAAA,UACf,QAAQ,KAAK,GAAG,QAAQ;AAAA,UACxB;AAAA,aACI,SAAW;AAAA,UACf,QAAQ,KAAK,GAAG,QAAQ;AAAA,UACxB;AAAA,aACI,SAAW;AAAA,UACf,QAAQ,MAAM,GAAG,QAAQ;AAAA,UACzB;AAAA,aACI,SAAW;AAAA,UACf,QAAQ,MAAM,GAAG,QAAQ;AAAA,UACzB;AAAA,aACI,SAAW;AAAA,UACf,QAAQ,MAAM,GAAG,QAAQ;AAAA,UACzB;AAAA,aACI,SAAW;AAAA,UACf,QAAQ,MAAM,GAAG,QAAQ;AAAA,UACzB;AAAA;AAAA,UACQ,QAAQ,IAAI,GAAG,QAAQ;AAAA;AAAA;AAAA,EAMlC,iBAAiB,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAEd;;;ACrEA,IAAI,iBAAiB,cAAc,cAAc;AAAA,EAChD,WAAW,CAAC,QAAQ;AAAA,IACnB,MAAM,MAAM;AAAA,IACZ,IAAI,OAAO,oBAAyB;AAAA,MAAG,KAAK,OAAO,qBAAqB,OAAO;AAAA,IAC1E;AAAA,WAAK,OAAO,qBAAqB;AAAA;AAAA,EAEvC,YAAY,GAAG,UAAU,UAAU,MAAM,WAAW;AAAA,IACnD,IAAI,QAAQ;AAAA,MAAS,SAAS,KAAK,IAAI;AAAA,IACvC,QAAQ;AAAA,WACF,SAAS;AAAA,QACb,KAAK,OAAO,KAAK,GAAG,QAAQ;AAAA,QAC5B;AAAA,WACI,SAAS;AAAA,QACb,KAAK,OAAO,KAAK,GAAG,QAAQ;AAAA,QAC5B;AAAA,WACI,SAAS;AAAA,QACb,KAAK,OAAO,MAAM,GAAG,QAAQ;AAAA,QAC7B;AAAA,WACI,SAAS;AAAA,QACb,KAAK,OAAO,MAAM,GAAG,QAAQ;AAAA,QAC7B;AAAA,WACI,SAAS;AAAA,QACb,KAAK,OAAO,MAAM,GAAG,QAAQ;AAAA,QAC7B;AAAA,WACI,SAAS;AAAA,QACb,KAAK,OAAO,MAAM,GAAG,QAAQ;AAAA,QAC7B;AAAA;AAAA,IAEF,OAAO;AAAA;AAET;;;ACpBA,IAAI,qCAAqC,QAAQ,CAAC,qBAAoB;AAAA,EACrE,oBAAmB,uBAAuB;AAAA,EAC1C,oBAAmB,qBAAqB;AAAA,EACxC,oBAAmB,wBAAwB;AAAA,EAC3C,oBAAmB,sBAAsB;AAAA,EACzC,oBAAmB,wBAAwB;AAAA,EAC3C,oBAAmB,qBAAqB;AAAA,EACxC,OAAO;AAAA,EACN,CAAC,CAAC;;;ACfJ,IAAI,wBAAwB,MAAM,uBAAsB;AAAA,EACvD,UAAU,CAAC;AAAA,EACX,aAAa;AAAA,EAIb,UAAU,CAAC,UAAS;AAAA,IACnB,IAAI,CAAC,UAAS;AAAA,MACb,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,aAAa;AAAA,MAClB;AAAA,IACD;AAAA,IACA,KAAK,UAAU;AAAA,IACf,KAAK,aAAa;AAAA;AAAA,EAKnB,aAAa,CAAC,UAAS;AAAA,IACtB,KAAK,UAAU;AAAA,SACX,KAAK;AAAA,SACL;AAAA,IACJ;AAAA,IACA,KAAK,aAAa;AAAA;AAAA,EAKnB,UAAU,GAAG;AAAA,IACZ,OAAO,KAAK;AAAA;AAAA,EAKb,cAAc,GAAG;AAAA,IAChB,OAAO,KAAK;AAAA;AAAA,EAMb,YAAY,CAAC,MAAM;AAAA,IAClB,IAAI,SAAc,WAAG;AAAA,MACpB,KAAK,UAAU,CAAC;AAAA,MAChB,KAAK,aAAa;AAAA,MAClB;AAAA,IACD;AAAA,IACA,MAAM,eAAe,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAAA,IACvD,WAAW,OAAO;AAAA,MAAc,OAAO,KAAK,QAAQ;AAAA,IACpD,KAAK,aAAa,OAAO,KAAK,KAAK,OAAO,EAAE,SAAS;AAAA;AAAA,EAKtD,oBAAoB,GAAG,sBAAsB,uBAAuB;AAAA,IACnE,IAAI,qBAAqB,eAAe,GAAG;AAAA,MAC1C,MAAM,gBAAgB,qBAAqB,WAAW;AAAA,MACtD,oBAAoB,WAAW,KAAK,cAAc,CAAC;AAAA,IACpD;AAAA;AAAA,EAKD,KAAK,GAAG;AAAA,IACP,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,WAAW,KAAK,KAAK,QAAQ,CAAC;AAAA,IACpC,MAAM,aAAa,KAAK;AAAA,IACxB,OAAO;AAAA;AAET;AAOA,IAAI,qBAAqB,MAAM,oBAAmB;AAAA,EACjD,UAAU,CAAC,UAAU;AAAA,EACrB,aAAa,CAAC,UAAU;AAAA,EACxB,UAAU,GAAG;AAAA,IACZ,OAAO,CAAC;AAAA;AAAA,EAET,cAAc,GAAG;AAAA,IAChB,OAAO;AAAA;AAAA,EAER,YAAY,CAAC,OAAO;AAAA,EACpB,oBAAoB,CAAC,SAAS;AAAA,EAC9B,KAAK,GAAG;AAAA,IACP,OAAO,IAAI;AAAA;AAEb;;;ACvFA,IAAI,yBAAyB,MAAM,wBAAuB;AAAA,EACzD,wBAAwB;AAAA,IACvB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACR;AAAA,EAKA,QAAQ,CAAC,UAAU;AAAA,IAClB,MAAM,cAAc,iBAAmB;AAAA,IACvC,WAAW,SAAS,OAAO,OAAO,QAAU,GAAG;AAAA,MAC9C,MAAM,WAAW;AAAA,MACjB,MAAM,aAAa,iBAAmB;AAAA,MACtC,KAAK,sBAAsB,YAAY,cAAc;AAAA,IACtD;AAAA;AAAA,EAKD,qBAAqB,CAAC,UAAU;AAAA,IAC/B,MAAM,QAAQ;AAAA,IACd,IAAI,SAAS,KAAK;AAAA,MAAuB,KAAK,sBAAsB,SAAS;AAAA;AAAA,EAK9E,sBAAsB,CAAC,UAAU;AAAA,IAChC,MAAM,QAAQ;AAAA,IACd,IAAI,SAAS,KAAK;AAAA,MAAuB,KAAK,sBAAsB,SAAS;AAAA;AAAA,EAK9E,cAAc,CAAC,UAAU;AAAA,IACxB,MAAM,QAAQ;AAAA,IACd,OAAO,KAAK,sBAAsB;AAAA;AAAA,EAKnC,aAAa,GAAG;AAAA,IACf,WAAW,SAAS,OAAO,KAAK,KAAK,qBAAqB;AAAA,MAAG,KAAK,sBAAsB,SAAS;AAAA;AAAA,EAKlG,cAAc,GAAG;AAAA,IAChB,WAAW,SAAS,OAAO,KAAK,KAAK,qBAAqB;AAAA,MAAG,KAAK,sBAAsB,SAAS;AAAA;AAAA,EAMlG,oBAAoB,GAAG,uBAAuB,wBAAwB;AAAA,IACrE,MAAM,eAAe,sBAAsB;AAAA,IAC3C,IAAI,gCAAgC;AAAA,MAAwB,qBAAqB,wBAAwB,KAAK,aAAa;AAAA;AAAA,EAK5H,KAAK,GAAG;AAAA,IACP,MAAM,QAAQ,IAAI;AAAA,IAClB,MAAM,wBAAwB,KAAK,KAAK,sBAAsB;AAAA,IAC9D,OAAO;AAAA;AAET;AAQA,IAAI,sBAAsB,MAAM,qBAAoB;AAAA,EACnD,QAAQ,CAAC,WAAW;AAAA,EACpB,qBAAqB,CAAC,WAAW;AAAA,EACjC,sBAAsB,CAAC,WAAW;AAAA,EAClC,cAAc,CAAC,WAAW;AAAA,IACzB,OAAO;AAAA;AAAA,EAER,aAAa,GAAG;AAAA,EAChB,cAAc,GAAG;AAAA,EACjB,oBAAoB,CAAC,SAAS;AAAA,EAC9B,KAAK,GAAG;AAAA,IACP,OAAO,IAAI;AAAA;AAEb;;;AC7FA,IAAM,gBAAgB;AAAA,EACrB,mBAAqB;AAAA,EACrB,mBAAqB;AAAA,EACrB,mBAAqB;AAAA,EACrB,mBAAqB;AAAA,EACrB,mBAAqB;AAAA,EACrB,mBAAqB;AACtB;AAKA,IAAI,gBAAgB,MAAM;AAAA,EACzB;AAAA,EACA,oBAAoB,CAAC;AAAA,EACrB,kBAAkB,CAAC;AAAA,EACnB,qBAAqB,CAAC;AAAA,EACtB,mBAAmB,CAAC;AAAA,EACpB,qBAAqB,CAAC;AAAA,EACtB,kBAAkB,CAAC;AAAA,EACnB,WAAW,CAAC,SAAS;AAAA,IACpB,KAAK,aAAa,CAAC;AAAA,IACnB,KAAK,WAAW,OAAO;AAAA,IACvB,KAAK,aAAa;AAAA;AAAA,EAEnB,UAAU,CAAC,SAAS;AAAA,IACnB,WAAW,UAAU,SAAS;AAAA,MAC7B,IAAI,CAAC,OAAO;AAAA,QAAI,OAAO,KAAK,KAAK,IAAI,EAAE,SAAS,IAAI,KAAK,OAAO,EAAE,SAAS;AAAA,MAC3E,IAAI,KAAK,WAAW,OAAO;AAAA,QAAK,MAAM,IAAI,MAAM,6BAA6B,OAAO,oBAAoB;AAAA,MACxG,OAAO,kBAAkB,KAAK,IAAI;AAAA,MAClC,KAAK,WAAW,OAAO,MAAM;AAAA,IAC9B;AAAA;AAAA,EAED,YAAY,GAAG;AAAA,IACd,KAAK,oBAAoB,CAAC;AAAA,IAC1B,KAAK,kBAAkB,CAAC;AAAA,IACxB,KAAK,qBAAqB,CAAC;AAAA,IAC3B,KAAK,mBAAmB,CAAC;AAAA,IACzB,KAAK,qBAAqB,CAAC;AAAA,IAC3B,KAAK,kBAAkB,CAAC;AAAA,IACxB,MAAM,aAAa,OAAO,OAAO,KAAK,UAAU,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,eAAe,EAAE,YAAY;AAAA,IAChG,WAAW,UAAU,YAAY;AAAA,MAChC,IAAI,OAAO;AAAA,QAAU;AAAA,MACrB,WAAW,YAAY;AAAA,QAAe,IAAI,OAAO,aAAa,OAAO;AAAA,UAAI,KAAK,UAAU,KAAK,OAAO,EAAE;AAAA,IACvG;AAAA;AAAA,EAED,UAAU,CAAC,cAAc;AAAA,IACxB,OAAO,KAAK,cAAc,SAAS;AAAA;AAAA,EAEpC,YAAY,CAAC,cAAc;AAAA,IAC1B,IAAI;AAAA,MAAc,OAAO,KAAK,cAAc;AAAA,IAC5C,OAAO,OAAO,KAAK,KAAK,UAAU,EAAE;AAAA;AAAA,EAErC,UAAU,CAAC,SAAS;AAAA,IACnB,KAAK,WAAW,OAAO;AAAA,IACvB,KAAK,aAAa;AAAA;AAAA,EAEnB,YAAY,CAAC,IAAI;AAAA,IAChB,MAAM,SAAS,KAAK,WAAW;AAAA,IAC/B,IAAI;AAAA,MAAQ,OAAO,WAAW;AAAA,IAC9B,KAAK,aAAa;AAAA;AAAA,EAEnB,aAAa,CAAC,IAAI;AAAA,IACjB,MAAM,SAAS,KAAK,WAAW;AAAA,IAC/B,IAAI;AAAA,MAAQ,OAAO,WAAW;AAAA,IAC9B,KAAK,aAAa;AAAA;AAAA,EAEnB,YAAY,CAAC,IAAI;AAAA,IAChB,OAAO,KAAK,WAAW;AAAA,IACvB,KAAK,aAAa;AAAA;AAAA,EAMnB,oBAAoB,CAAC,QAAQ,UAAU;AAAA,IACtC,IAAI,mBAAmB;AAAA,IACvB,WAAW,YAAY,KAAK,mBAAmB;AAAA,MAC9C,MAAM,SAAS,KAAK,WAAW;AAAA,MAC/B,IAAI,OAAO,mBAAmB;AAAA,QAC7B,MAAM,SAAS,OAAO,kBAAkB;AAAA,UACvC,MAAM,OAAO;AAAA,UACb,UAAU,OAAO;AAAA,UACjB,UAAU,OAAO;AAAA,UACjB,OAAO,OAAO;AAAA,UACd,UAAU,OAAO;AAAA,UACjB,SAAS,OAAO;AAAA,QACjB,GAAG,QAAQ;AAAA,QACX,IAAI,WAAW,QAAQ,WAAgB,aAAK,WAAW;AAAA,UAAO,mBAAmB;AAAA,MAClF;AAAA,IACD;AAAA,IACA,OAAO,qBAAqB,QAAQ,qBAA0B,aAAK,qBAAqB,QAAQ,mBAAmB,OAAO;AAAA;AAAA,EAK3H,kBAAkB,CAAC,QAAQ,UAAU;AAAA,IACpC,MAAM,cAAc,KAAK,OAAO;AAAA,IAChC,WAAW,YAAY,KAAK,iBAAiB;AAAA,MAC5C,MAAM,SAAS,KAAK,WAAW;AAAA,MAC/B,IAAI,OAAO,iBAAiB;AAAA,QAC3B,MAAM,SAAS,OAAO,gBAAgB;AAAA,UACrC,MAAM,YAAY;AAAA,UAClB,UAAU,YAAY;AAAA,UACtB,OAAO,YAAY;AAAA,UACnB,UAAU,YAAY;AAAA,UACtB,SAAS,YAAY;AAAA,QACtB,GAAG,QAAQ;AAAA,QACX,IAAI,QAAQ;AAAA,UACX,IAAI,CAAC,YAAY;AAAA,YAAM,YAAY,OAAO,CAAC;AAAA,UAC3C,OAAO,OAAO,YAAY,MAAM,MAAM;AAAA,QACvC;AAAA,MACD;AAAA,IACD;AAAA,IACA,OAAO,YAAY;AAAA;AAAA,EAKpB,qBAAqB,CAAC,QAAQ,UAAU;AAAA,IACvC,OAAO,CAAC,KAAK,mBAAmB,KAAK,CAAC,aAAa;AAAA,MAClD,OAAO,CAAC,KAAK,WAAW,UAAU,qBAAqB,QAAQ,QAAQ;AAAA,KACvE;AAAA;AAAA,EAKF,mBAAmB,CAAC,UAAU,UAAU;AAAA,IACvC,IAAI,OAAO,KAAK,SAAS;AAAA,IACzB,WAAW,YAAY,KAAK,kBAAkB;AAAA,MAC7C,MAAM,SAAS,KAAK,WAAW,UAAU,mBAAmB,MAAM,QAAQ;AAAA,MAC1E,IAAI;AAAA,QAAQ,OAAO;AAAA,MACd;AAAA,eAAO;AAAA,IACb;AAAA,IACA,OAAO;AAAA;AAAA,EAER,qBAAqB,CAAC,QAAQ,UAAU;AAAA,IACvC,IAAI,WAAW,CAAC,GAAG,OAAO,QAAQ;AAAA,IAClC,WAAW,YAAY,KAAK,oBAAoB;AAAA,MAC/C,MAAM,SAAS,KAAK,WAAW,UAAU,qBAAqB;AAAA,QAC7D;AAAA,QACA,UAAU,OAAO;AAAA,MAClB,GAAG,QAAQ;AAAA,MACX,IAAI;AAAA,QAAQ,WAAW;AAAA,IACxB;AAAA,IACA,OAAO;AAAA;AAAA,EAKR,kBAAkB,CAAC,UAAS,UAAU;AAAA,IACrC,IAAI,OAAO,KAAK,SAAQ;AAAA,IACxB,WAAW,YAAY,KAAK,iBAAiB;AAAA,MAC5C,MAAM,SAAS,KAAK,WAAW,UAAU,kBAAkB,MAAM,QAAQ;AAAA,MACzE,IAAI;AAAA,QAAQ,OAAO;AAAA,MACd;AAAA,eAAO;AAAA,IACb;AAAA,IACA,OAAO;AAAA;AAET;AASA,IAAI,WAAW,MAAM,UAAS;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,qBAAqB;AAAA,EAKrB;AAAA,EACA,WAAW,CAAC,QAAQ;AAAA,IACnB,KAAK,UAAU;AAAA,SACX;AAAA,MACH,SAAS,OAAO,WAAW;AAAA,IAC5B;AAAA,IACA,KAAK,iBAAiB,IAAI;AAAA,IAC1B,KAAK,kBAAkB,IAAI;AAAA,IAC3B,IAAI,CAAC,KAAK,QAAQ;AAAA,MAAS,KAAK,eAAe;AAAA,IAC/C,KAAK,gBAAgB,IAAI,cAAc,CAAC,GAAG,OAAO,WAAW,CAAC,GAAG,GAAG,cAAc,aAAa,CAAC;AAAA,IAChG,IAAI,CAAC,KAAK,QAAQ;AAAA,MAAgB,KAAK,QAAQ,iBAAiB;AAAA,IAChE,IAAI,CAAC,KAAK,QAAQ;AAAA,MAAoB,KAAK,QAAQ,qBAAqB;AAAA,IACxE,KAAK,sBAAsB,KAAK,QAAQ,SAAS;AAAA,IACjD,KAAK,gBAAgB,OAAO,SAAS,KAAK,OAAO,OAAO,IAAI;AAAA,IAC5D,KAAK,qBAAqB,OAAO,qBAAqB;AAAA,IACtD,KAAK,gBAAgB,OAAO,eAAe,IAAI,IAAI,OAAO,YAAY,IAAI;AAAA,IAC1E,KAAK,gBAAgB;AAAA,IACrB,IAAI,cAAc,iBAAiB,SAAS;AAAA,MAAG,cAAc,iBAAiB,QAAQ,CAAC,UAAU;AAAA,QAChG,IAAI,MAAM;AAAA,UAAa,MAAM,YAAY,MAAM,MAAM;AAAA,OACrD;AAAA;AAAA,EAKF,kBAAkB,CAAC,gBAAgB;AAAA,IAClC,IAAI,KAAK,kBAAkB,OAAO,KAAK,eAAe,OAAO,aAAa;AAAA,MAAY,KAAK,eAAe,OAAO,SAAS;AAAA,IAC1H,KAAK,iBAAiB;AAAA,IACtB,KAAK,oBAAoB,eAAe,eAAe,IAAI,gBAAgB,eAAe,WAAW,CAAC,IAAI;AAAA,IAC1G,OAAO;AAAA;AAAA,EAKR,iBAAiB,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,EAKb,mBAAmB,CAAC,iBAAiB;AAAA,IACpC,IAAI,KAAK,mBAAmB,OAAO,KAAK,gBAAgB,OAAO,aAAa;AAAA,MAAY,KAAK,gBAAgB,OAAO,SAAS;AAAA,IAC7H,KAAK,kBAAkB;AAAA,IACvB,OAAO;AAAA;AAAA,EAKR,kBAAkB,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,EAKb,SAAS,GAAG;AAAA,IACX,OAAO,KAAK;AAAA;AAAA,EAEb,qBAAqB,CAAC,YAAY;AAAA,IACjC,IAAI,KAAK,eAAe;AAAA,MACvB,WAAW,MAAM,KAAK;AAAA,QAAe,IAAI,KAAK,cAAc,OAAO,OAAO,KAAK,cAAc,IAAI,OAAO,aAAa;AAAA,UAAY,KAAK,cAAc,IAAI,OAAO,SAAS;AAAA,IACzK;AAAA,IACA,KAAK,wBAAwB,MAAM,QAAQ,UAAU,KAAK,WAAW,SAAS;AAAA,IAC9E,KAAK,kBAAkB,KAAK,wBAAwB,OAAO,MAAM,QAAQ,UAAU,IAAI,WAAW,KAAK;AAAA,IACvG,IAAI,MAAM,QAAQ,UAAU;AAAA,MAAG,KAAK,gBAAgB,WAAW,OAAO,CAAC,KAAK,cAAc;AAAA,QACzF,IAAI,UAAU,MAAM;AAAA,QACpB,OAAO;AAAA,SACL,CAAC,CAAC;AAAA,IACA;AAAA,WAAK,gBAAgB,GAAG,WAAW,KAAK,WAAW;AAAA;AAAA,EAOzD,UAAU,CAAC,QAAQ;AAAA,IAClB,MAAM,SAAS,KAAK,MAAM;AAAA,IAC1B,OAAO,QAAQ,SAAS;AAAA,IACxB,OAAO;AAAA;AAAA,EAQR,SAAS,CAAC,OAAO;AAAA,IAChB,MAAM,SAAS,KAAK,MAAM;AAAA,IAC1B,MAAM,YAAY,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACvD,IAAI,OAAO,iBAAiB;AAAA,MAC3B,MAAM,WAAW,IAAI,IAAI,CAAC,GAAG,OAAO,iBAAiB,GAAG,SAAS,CAAC;AAAA,MAClE,OAAO,kBAAkB,MAAM,KAAK,QAAQ;AAAA,IAC7C,EAAO;AAAA,aAAO,kBAAkB,CAAC,GAAG,SAAS;AAAA,IAC7C,OAAO;AAAA;AAAA,EAOR,QAAQ,CAAC,MAAM,QAAQ;AAAA,IACtB,IAAI,CAAC,KAAK;AAAA,MAAe,KAAK,gBAAgB,CAAC;AAAA,IAC/C,KAAK,cAAc,QAAQ,KAAK,OAAO;AAAA,IACvC,OAAO;AAAA;AAAA,EAOR,WAAW,CAAC,MAAM;AAAA,IACjB,IAAI,KAAK,eAAe;AAAA,MACvB,OAAO,KAAK,cAAc;AAAA,MAC1B,IAAI,OAAO,KAAK,KAAK,aAAa,EAAE,WAAW;AAAA,QAAG,KAAK,gBAAgB;AAAA,IACxE;AAAA,IACA,OAAO;AAAA;AAAA,EAOR,WAAW,CAAC,MAAM;AAAA,IACjB,IAAI,KAAK,gBAAgB;AAAA,MAAO,KAAK,cAAc,QAAQ;AAAA,WACvD,KAAK,cAAc;AAAA,QACtB,SAAS;AAAA,MACV;AAAA,IACA,OAAO;AAAA;AAAA,EAOR,YAAY,CAAC,MAAM;AAAA,IAClB,IAAI,KAAK,gBAAgB;AAAA,MAAO,KAAK,cAAc,QAAQ;AAAA,WACvD,KAAK,cAAc;AAAA,QACtB,SAAS;AAAA,MACV;AAAA,IACA,OAAO;AAAA;AAAA,EAOR,aAAa,CAAC,MAAM,OAAO;AAAA,IAC1B,IAAI,KAAK,gBAAgB;AAAA,MAAO,KAAK,cAAc,QAAQ;AAAA,WACvD,KAAK,cAAc;AAAA,QACtB;AAAA,MACD;AAAA,IACA,OAAO;AAAA;AAAA,EAQR,eAAe,CAAC,QAAQ;AAAA,IACvB,KAAK,gBAAgB,SAAS,IAAI,IAAI,MAAM,IAAI;AAAA,IAChD,OAAO;AAAA;AAAA,EAOR,SAAS,GAAG;AAAA,IACX,OAAO,KAAK,gBAAgB,KAAK,KAAK,cAAc,IAAI,CAAC;AAAA;AAAA,EAY1D,WAAW,CAAC,UAAS;AAAA,IACpB,IAAI,iBAAiB;AAAA,IACrB,IAAI,CAAC,UAAS;AAAA,MACb,IAAI,KAAK,QAAQ;AAAA,QAAc,QAAQ,MAAM,8DAA8D;AAAA,MAC3G,OAAO;AAAA,IACR;AAAA,IACA,IAAI,KAAK,cAAc,WAAW,mBAAqB,eAAe,GAAG;AAAA,MACxE,iBAAiB,KAAK,cAAc,mBAAmB,UAAS,IAAI;AAAA,MACpE,IAAI,CAAC,gBAAgB;AAAA,QACpB,IAAI,KAAK,QAAQ;AAAA,UAAc,QAAQ,MAAM,qEAAqE;AAAA,QAClH,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACA,MAAM,iBAAiB,KAAK,eAAe,WAAW;AAAA,IACtD,WAAW,OAAO,OAAO,KAAK,cAAc,GAAG;AAAA,MAC9C,MAAM,UAAU,OAAO,kBAAkB,OAAO,eAAe,IAAI;AAAA,MACnE,MAAM,UAAU,OAAO,eAAe,IAAI;AAAA,MAC1C,IAAI,CAAC,WAAW;AAAA,QAAS,KAAK;AAAA,MACzB,SAAI,WAAW,CAAC;AAAA,QAAS,KAAK;AAAA,IACpC;AAAA,IACA,KAAK,eAAe,cAAc,cAAc;AAAA,IAChD,OAAO;AAAA;AAAA,EAMR,YAAY,CAAC,MAAM;AAAA,IAClB,IAAI,SAAc,aAAK,KAAK,oBAAoB,GAAG;AAAA,MAClD,MAAM,WAAU,KAAK,eAAe,WAAW;AAAA,MAC/C,MAAM,eAAe,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAAA,MACvD,WAAW,OAAO;AAAA,QAAc,IAAI,OAAO,YAAW,OAAO,SAAQ,IAAI;AAAA,UAAG,KAAK;AAAA,IAClF,EAAO,SAAI,SAAc;AAAA,MAAG,KAAK,oBAAoB;AAAA,IACrD,KAAK,eAAe,aAAa,IAAI;AAAA,IACrC,OAAO;AAAA;AAAA,EAER,UAAU,CAAC,SAAS;AAAA,IACnB,MAAM,WAAU,KAAK,eAAe,WAAW;AAAA,IAC/C,IAAI,SAAS,OAAO,KAAK,sBAAsB;AAAA,MAAG,OAAO;AAAA,IACzD,QAAQ,UAAU,WAAW,kBAAkB,QAAO;AAAA,IACtD,IAAI;AAAA,MAAQ,KAAK,mBAAmB,QAAQ,SAAS;AAAA,IACrD,QAAQ,UAAU,eAAe,cAAc,qBAAqB,QAAQ;AAAA,IAC5E,IAAI;AAAA,MAAW,KAAK,2BAA2B,SAAS;AAAA,IACxD,OAAO;AAAA;AAAA,EAOR,UAAU,CAAC,SAAS;AAAA,IACnB,KAAK,cAAc,WAAW,OAAO;AAAA;AAAA,EAOtC,YAAY,CAAC,IAAI;AAAA,IAChB,KAAK,cAAc,aAAa,EAAE;AAAA;AAAA,EAOnC,aAAa,CAAC,IAAI;AAAA,IACjB,KAAK,cAAc,cAAc,EAAE;AAAA;AAAA,EAOpC,YAAY,CAAC,IAAI;AAAA,IAChB,KAAK,cAAc,aAAa,EAAE;AAAA;AAAA,EAOnC,YAAY,CAAC,UAAU;AAAA,IACtB,OAAO,IAAI,WAAW,IAAI,EAAE,aAAa,QAAQ;AAAA;AAAA,EAOlD,SAAS,CAAC,OAAO;AAAA,IAChB,OAAO,IAAI,WAAW,IAAI,EAAE,UAAU,KAAK;AAAA;AAAA,EAQ5C,KAAK,GAAG;AAAA,IACP,MAAM,cAAc,IAAI,UAAS;AAAA,SAC7B,KAAK;AAAA,MACR,WAAW,MAAM,QAAQ,KAAK,QAAQ,SAAS,IAAI,CAAC,GAAG,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ;AAAA,IAC/F,CAAC,EAAE,kBAAkB,KAAK,aAAa,EAAE,mBAAmB,KAAK,eAAe,MAAM,CAAC,EAAE,oBAAoB,KAAK,gBAAgB,MAAM,CAAC;AAAA,IACzI,KAAK,eAAe,qBAAqB;AAAA,MACxC,sBAAsB,KAAK;AAAA,MAC3B,qBAAqB,YAAY;AAAA,MACjC,cAAc;AAAA,MACd;AAAA,IACD,CAAC;AAAA,IACD,KAAK,gBAAgB,qBAAqB;AAAA,MACzC,uBAAuB,KAAK;AAAA,MAC5B,sBAAsB,YAAY;AAAA,MAClC,cAAc;AAAA,MACd;AAAA,IACD,CAAC;AAAA,IACD,YAAY,oBAAoB,YAAY,eAAe,eAAe,IAAI,gBAAgB,YAAY,eAAe,WAAW,CAAC,IAAI;AAAA,IACzI,YAAY,gBAAgB,KAAK;AAAA,IACjC,YAAY,gBAAgB,KAAK;AAAA,IACjC,YAAY,qBAAqB,KAAK;AAAA,IACtC,YAAY,kBAAkB,KAAK,kBAAkB,CAAC,GAAG,KAAK,eAAe,IAAI;AAAA,IACjF,OAAO;AAAA;AAAA,EAWR,mBAAmB,CAAC,YAAY;AAAA,IAC/B,KAAK,QAAQ,YAAY;AAAA,IACzB,KAAK,sBAAsB,UAAU;AAAA,IACrC,OAAO;AAAA;AAAA,EAYR,YAAY,CAAC,YAAY;AAAA,IACxB,MAAM,gBAAgB,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU;AAAA,IAC1E,MAAM,qBAAqB,MAAM,QAAQ,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,YAAY,CAAC,KAAK,QAAQ,SAAS;AAAA,IACnH,MAAM,kBAAkB,IAAI,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAAA,IAC9D,WAAW,aAAa,eAAe;AAAA,MACtC,MAAM,oBAAoB,KAAK,cAAc,UAAU;AAAA,MACvD,IAAI,qBAAqB,OAAO,kBAAkB,OAAO,aAAa;AAAA,QAAY,kBAAkB,OAAO,SAAS;AAAA,IACrH;AAAA,IACA,MAAM,gBAAgB,CAAC,GAAG,mBAAmB,OAAO,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,aAAa;AAAA,IACxG,KAAK,QAAQ,YAAY;AAAA,IACzB,WAAW,aAAa;AAAA,MAAe,KAAK,cAAc,UAAU,MAAM;AAAA,IAC1E,KAAK,wBAAwB,cAAc,SAAS;AAAA,IACpD,KAAK,kBAAkB,KAAK,wBAAwB,OAAO,cAAc;AAAA,IACzE,OAAO;AAAA;AAAA,EAaR,eAAe,CAAC,IAAI;AAAA,IACnB,MAAM,YAAY,KAAK,cAAc;AAAA,IACrC,IAAI,CAAC;AAAA,MAAW,OAAO;AAAA,IACvB,IAAI,OAAO,UAAU,OAAO,aAAa;AAAA,MAAY,UAAU,OAAO,SAAS;AAAA,IAC/E,OAAO,KAAK,cAAc;AAAA,IAC1B,MAAM,uBAAuB,MAAM,QAAQ,KAAK,QAAQ,SAAS,IAAI,KAAK,QAAQ,YAAY,CAAC,KAAK,QAAQ,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;AAAA,IACjJ,KAAK,QAAQ,YAAY,oBAAoB,WAAW,IAAI,oBAAoB,KAAK;AAAA,IACrF,KAAK,wBAAwB,oBAAoB,SAAS;AAAA,IAC1D,KAAK,kBAAkB,KAAK,wBAAwB,OAAO,oBAAoB,MAAM;AAAA,IACrF,OAAO;AAAA;AAAA,EAUR,gBAAgB,CAAC,SAAS;AAAA,IACzB,KAAK,QAAQ,UAAU;AAAA,IACvB,KAAK,gBAAgB,IAAI,cAAc,OAAO;AAAA,IAC9C,OAAO;AAAA;AAAA,EAER,iBAAiB,CAAC,eAAe;AAAA,IAChC,KAAK,gBAAgB;AAAA,IACrB,OAAO;AAAA;AAAA,EAOR,SAAS,CAAC,OAAO,MAAM;AAAA,IACtB,MAAM,WAAW,MAAM,YAAY,SAAW;AAAA,IAC9C,IAAI,CAAC,KAAK,eAAe,QAAQ;AAAA,MAAG;AAAA,IACpC,QAAQ,uBAAuB,KAAK;AAAA,IACpC,MAAM,gBAAgB;AAAA,MACrB;AAAA,MACA,KAAK;AAAA,IACN;AAAA,IACA,KAAK,sBAAsB,MAAM,YAAY,SAAS,MAAM,YAAY,SAAS,OAAO;AAAA,MAAS,cAAc,SAAS,CAAC,MAAM,OAAO;AAAA,IACtI,KAAK,WAAW,aAAa;AAAA;AAAA,EAO9B,YAAY,CAAC,UAAU,WAAW,SAAW,MAAM;AAAA,IAClD,IAAI,CAAC,KAAK,eAAe,QAAQ;AAAA,MAAG;AAAA,IACpC,QAAQ,cAAc,iBAAiB,KAAK;AAAA,IAC5C,IAAI;AAAA,MAAc;AAAA,IAClB,IAAI,CAAC,UAAU;AAAA,MACd,IAAI;AAAA,QAAc,QAAQ,MAAM,gEAAgE;AAAA,MAChG;AAAA,IACD;AAAA,IACA,IAAI,OAAO;AAAA,IACX,IAAI,KAAK,cAAc,WAAW,mBAAqB,gBAAgB,GAAG;AAAA,MACzE,OAAO,KAAK,cAAc,oBAAoB,UAAU,IAAI;AAAA,MAC5D,IAAI,CAAC,MAAM;AAAA,QACV,IAAI;AAAA,UAAc,QAAQ,MAAM,sEAAsE;AAAA,QACtG;AAAA,MACD;AAAA,IACD;AAAA,IACA,MAAM,SAAS;AAAA,MACd;AAAA,MACA,UAAU;AAAA,IACX;AAAA,IACA,OAAO,KAAK,WAAW,MAAM;AAAA;AAAA,EAU9B,IAAI,IAAI,UAAU;AAAA,IACjB,IAAI,CAAC,KAAK,eAAe,SAAW,IAAI;AAAA,MAAG;AAAA,IAC3C,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW;AAAA,MACf,UAAU,SAAW;AAAA,MACrB,QAAQ;AAAA,IACT,CAAC;AAAA;AAAA,EAOF,IAAI,IAAI,UAAU;AAAA,IACjB,IAAI,CAAC,KAAK,eAAe,SAAW,IAAI;AAAA,MAAG;AAAA,IAC3C,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW;AAAA,MACf,UAAU,SAAW;AAAA,MACrB,QAAQ;AAAA,IACT,CAAC;AAAA;AAAA,EAOF,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC5C,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW;AAAA,MACf,UAAU,SAAW;AAAA,MACrB,QAAQ;AAAA,IACT,CAAC;AAAA;AAAA,EAOF,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC5C,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW;AAAA,MACf,UAAU,SAAW;AAAA,MACrB,QAAQ;AAAA,IACT,CAAC;AAAA;AAAA,EAOF,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC5C,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW;AAAA,MACf,UAAU,SAAW;AAAA,MACrB,QAAQ;AAAA,IACT,CAAC;AAAA;AAAA,EAOF,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC5C,KAAK,eAAe,QAAQ;AAAA,IAC5B,KAAK,WAAW;AAAA,MACf,UAAU,SAAW;AAAA,MACrB,QAAQ;AAAA,IACT,CAAC;AAAA;AAAA,EAeF,GAAG,CAAC,UAAU;AAAA,IACb,IAAI,CAAC,KAAK,eAAe,SAAS,QAAQ;AAAA,MAAG;AAAA,IAC7C,MAAM,gBAAgB;AAAA,MACrB,UAAU,SAAS;AAAA,MACnB,QAAQ,SAAS;AAAA,MACjB,UAAU,SAAS;AAAA,MACnB,KAAK,SAAS;AAAA,MACd,SAAS,SAAS;AAAA,IACnB;AAAA,IACA,KAAK,eAAe,SAAS,QAAQ;AAAA,IACrC,OAAO,KAAK,WAAW,aAAa;AAAA;AAAA,EAOrC,cAAc,GAAG;AAAA,IAChB,KAAK,gBAAgB,eAAe;AAAA,IACpC,OAAO;AAAA;AAAA,EAOR,aAAa,GAAG;AAAA,IACf,KAAK,gBAAgB,cAAc;AAAA,IACnC,OAAO;AAAA;AAAA,EAOR,WAAW,GAAG;AAAA,IACb,KAAK,QAAQ,cAAc;AAAA,IAC3B,OAAO;AAAA;AAAA,EAOR,aAAa,GAAG;AAAA,IACf,KAAK,QAAQ,cAAc;AAAA,IAC3B,OAAO;AAAA;AAAA,EAOR,YAAY,GAAG;AAAA,IACd,KAAK,QAAQ,eAAe;AAAA,IAC5B,OAAO;AAAA;AAAA,EAOR,cAAc,GAAG;AAAA,IAChB,KAAK,QAAQ,eAAe;AAAA,IAC5B,OAAO;AAAA;AAAA,EAOR,qBAAqB,CAAC,UAAU;AAAA,IAC/B,KAAK,gBAAgB,sBAAsB,QAAQ;AAAA,IACnD,OAAO;AAAA;AAAA,EAOR,sBAAsB,CAAC,UAAU;AAAA,IAChC,KAAK,gBAAgB,uBAAuB,QAAQ;AAAA,IACpD,OAAO;AAAA;AAAA,EAkBR,QAAQ,CAAC,UAAU;AAAA,IAClB,KAAK,gBAAgB,SAAS,QAAQ;AAAA,IACtC,OAAO;AAAA;AAAA,EAOR,cAAc,CAAC,UAAU;AAAA,IACxB,OAAO,KAAK,gBAAgB,eAAe,QAAQ;AAAA;AAAA,EAEpD,aAAa,CAAC,UAAS;AAAA,IACtB,QAAQ,kBAAkB,gBAAgB,KAAK;AAAA,IAC/C,IAAI,YAAW,OAAO,KAAK,QAAO,EAAE,SAAS,KAAK,CAAC,aAAa;AAAA,MAC/D,IAAI;AAAA,QAAkB,OAAO,GAAG,mBAAmB,KAAK,SAAQ,EAAE;AAAA,MAClE,OAAO,KAAK,SAAQ;AAAA,IACrB;AAAA,IACA,OAAO,CAAC;AAAA;AAAA,EAET,cAAc,CAAC,OAAO,MAAM;AAAA,IAC3B,QAAQ,mBAAmB,iBAAiB,KAAK;AAAA,IACjD,IAAI,QAAQ,CAAC,cAAc;AAAA,MAC1B,IAAI;AAAA,QAAmB,OAAO,GAAG,oBAAoB,KAAK,KAAK,EAAE;AAAA,MACjE,OAAO,KAAK,KAAK;AAAA,IAClB;AAAA,IACA,OAAO,CAAC;AAAA;AAAA,EAOT,iBAAiB,CAAC,IAAI;AAAA,IACrB,MAAM,YAAY,KAAK,cAAc;AAAA,IACrC,IAAI,CAAC;AAAA,MAAW;AAAA,IAChB,OAAO,UAAU,kBAAkB;AAAA;AAAA,EAOpC,eAAe,GAAG;AAAA,IACjB,MAAM,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,kBAAuB;AAAA,IACtF,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,MAAM,UAAU,SAAS,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO;AAAA,IACvE,MAAM,cAAc,CAAC;AAAA,IACrB,WAAW,SAAS,SAAS;AAAA,MAC5B,MAAM,WAAW,MAAM,QAAQ,GAAG;AAAA,MAClC,IAAI,WAAW,GAAG;AAAA,QACjB,MAAM,OAAO,MAAM,MAAM,GAAG,QAAQ;AAAA,QACpC,MAAM,QAAQ,MAAM,MAAM,WAAW,CAAC;AAAA,QACtC,YAAY,KAAK,IAAI;AAAA,QACrB,IAAI,KAAK,gBAAgB;AAAA,UAAO,KAAK,cAAc,QAAQ;AAAA,eACvD,KAAK,cAAc;AAAA,YACtB;AAAA,UACD;AAAA,MACD,EAAO;AAAA,oBAAY,KAAK,KAAK;AAAA,IAC9B;AAAA,IACA,KAAK,gBAAgB,IAAI,IAAI,WAAW;AAAA;AAAA,EAKzC,YAAY,CAAC,cAAc;AAAA,IAC1B,IAAI,KAAK,mBAAmB,cAAc;AAAA,MACzC,MAAM,WAAW,IAAI,IAAI,CAAC,GAAG,KAAK,iBAAiB,GAAG,YAAY,CAAC;AAAA,MACnE,OAAO,MAAM,KAAK,QAAQ;AAAA,IAC3B;AAAA,IACA,OAAO,gBAAgB,KAAK;AAAA;AAAA,EAK7B,oBAAoB,CAAC,aAAa;AAAA,IACjC,IAAI,KAAK,uBAAuB;AAAA,MAAO,OAAO;AAAA,IAC9C,IAAI,KAAK,uBAAuB;AAAA,MAAQ,OAAO;AAAA,IAC/C,OAAO,KAAK,mBAAmB,SAAS,WAAW;AAAA;AAAA,EAKpD,0BAA0B,CAAC,aAAa,UAAU,QAAQ;AAAA,IACzD,IAAI,CAAC,KAAK;AAAA,MAAe,OAAO;AAAA,IAChC,MAAM,kBAAkB,KAAK,aAAa,MAAM;AAAA,IAChD,IAAI,CAAC,mBAAmB,gBAAgB,WAAW;AAAA,MAAG,OAAO,KAAK,qBAAqB,WAAW;AAAA,IAClG,IAAI,qBAAqB;AAAA,IACzB,WAAW,aAAa,iBAAiB;AAAA,MACxC,MAAM,cAAc,KAAK,cAAc;AAAA,MACvC,IAAI,CAAC;AAAA,QAAa;AAAA,MAClB,qBAAqB;AAAA,MACrB,IAAI,YAAY,YAAY;AAAA,QAAO;AAAA,MACnC,IAAI,KAAK,iBAAiB,CAAC,KAAK,cAAc,IAAI,SAAS;AAAA,QAAG;AAAA,MAC9D,IAAI,YAAY,OAAO;AAAA,QACtB,MAAM,qBAAqB,iBAAiB,YAAY;AAAA,QACxD,IAAI,iBAAiB,YAAY;AAAA,UAAoB;AAAA,MACtD;AAAA,MACA,IAAI,YAAY,WAAW,SAAS,WAAW;AAAA,QAAG,OAAO;AAAA,IAC1D;AAAA,IACA,IAAI,CAAC;AAAA,MAAoB,OAAO,KAAK,qBAAqB,WAAW;AAAA,IACrE,OAAO;AAAA;AAAA,EAER,cAAc,CAAC,WAAW,CAAC,GAAG;AAAA,IAC7B,QAAQ,WAAW,KAAK;AAAA,IACxB,IAAI,UAAU,OAAO,SAAS,OAAO;AAAA,MAAU,SAAS,KAAK,GAAG,UAAU,SAAS;AAAA;AAAA,EAEpF,UAAU,GAAG,UAAU,SAAS,CAAC,GAAG,WAAW,MAAM,KAAK,oBAAU,MAAM,SAAS,QAAQ;AAAA,IAC1F,MAAM,aAAa,aAAY,OAAO,WAAU,KAAK,eAAe,WAAW;AAAA,IAC/E,IAAI;AAAA,IACJ,IAAI,KAAK,oBAAoB,KAAK,aAAY,MAAM;AAAA,MACnD,MAAM,gBAAgB,kBAAkB,UAAU;AAAA,MAClD,IAAI,cAAc;AAAA,QAAQ,KAAK,mBAAmB,cAAc,QAAQ,SAAS;AAAA,MACjF,QAAQ,UAAU,cAAc,qBAAqB,cAAc,QAAQ;AAAA,MAC3E,IAAI;AAAA,QAAW,KAAK,2BAA2B,SAAS;AAAA,MACxD,mBAAmB;AAAA,IACpB,EAAO;AAAA,yBAAmB;AAAA,IAC1B,IAAI,iBAAiB;AAAA,IACrB,IAAI,UAAU;AAAA,MACb,MAAM,iBAAiB,kBAAkB,QAAQ;AAAA,MACjD,WAAW,eAAe;AAAA,MAC1B,iBAAiB,eAAe;AAAA,IACjC;AAAA,IACA,IAAI;AAAA,MAAgB,KAAK,mBAAmB,gBAAgB,UAAU;AAAA,IACtE,IAAI,WAAW,iBAAiB,QAAQ,IAAI;AAAA,MAAO,OAAO,KAAK,wBAAwB,UAAU,QAAQ,kBAAkB,UAAU,KAAK,UAAS,MAAM;AAAA,IACzJ,KAAK,YAAY,UAAU,QAAQ,kBAAkB,UAAU,KAAK,UAAS,MAAM;AAAA;AAAA,OAM9E,wBAAuB,CAAC,UAAU,QAAQ,aAAa,UAAU,KAAK,UAAS,QAAQ;AAAA,IAC5F,IAAI,mBAAmB;AAAA,IACvB,IAAI,UAAU;AAAA,MACb,MAAM,iBAAiB,MAAM,qBAAqB,QAAQ;AAAA,MAC1D,mBAAmB,eAAe;AAAA,MAClC,IAAI,eAAe;AAAA,QAAQ,KAAK,mBAAmB,eAAe,QAAQ,UAAU;AAAA,IACrF;AAAA,IACA,KAAK,YAAY,UAAU,QAAQ,aAAa,kBAAkB,KAAK,UAAS,MAAM;AAAA;AAAA,EAMvF,kBAAkB,CAAC,UAAU,QAAQ;AAAA,IACpC,IAAI,KAAK,qBAAqB;AAAA,MAC7B,WAAW,KAAK;AAAA,QAAU,QAAQ,MAAM,uCAAuC,eAAe,EAAE,SAAS,EAAE,KAAK;AAAA,MAChH;AAAA,IACD;AAAA,IACA,KAAK,sBAAsB;AAAA,IAC3B,IAAI;AAAA,MACH,WAAW,WAAW,UAAU;AAAA,QAC/B,MAAM,eAAe,QAAQ,iBAAiB,QAAQ,QAAQ,MAAM,UAAU,OAAO,QAAQ,KAAK;AAAA,QAClG,KAAK,YAAY,SAAW,OAAO,CAAC,yCAAyC,eAAe,QAAQ,SAAS,cAAc,GAAG,CAAC,GAAG,MAAM,QAAQ,iBAAiB,QAAQ,QAAQ,QAAa,WAAG,CAAC,CAAC;AAAA,MACpM;AAAA,cACC;AAAA,MACD,KAAK,sBAAsB;AAAA;AAAA;AAAA,EAO7B,0BAA0B,CAAC,MAAM;AAAA,IAChC,IAAI,KAAK,qBAAqB;AAAA,MAC7B,WAAW,OAAO;AAAA,QAAM,QAAQ,MAAM,mEAAmE,yCAAyC;AAAA,MAClJ;AAAA,IACD;AAAA,IACA,KAAK,sBAAsB;AAAA,IAC3B,IAAI;AAAA,MACH,WAAW,OAAO;AAAA,QAAM,KAAK,YAAY,SAAW,OAAO,CAAC,mEAAmE,yCAAyC,GAAG,CAAC,GAAG,MAAW,WAAG,CAAC,CAAC;AAAA,cAC9L;AAAA,MACD,KAAK,sBAAsB;AAAA;AAAA;AAAA,EAO7B,WAAW,CAAC,UAAU,QAAQ,aAAa,UAAU,KAAK,UAAS,SAAS,MAAM;AAAA,IACjF,QAAQ,iBAAiB,sBAAsB,aAAa,kBAAkB,mBAAmB,mBAAmB,KAAK;AAAA,IACzH,IAAI,aAAa,CAAC,CAAC,aAAa,cAAc,QAAQ,aAAY,OAAO,OAAO,KAAK,QAAO,EAAE,SAAS,IAAI,KAAK,eAAe,eAAe;AAAA,IAC9I,IAAI,IAAI,CAAC;AAAA,IACT,IAAI;AAAA,MAAY,IAAI,oBAAoB,qBAAqB,mBAAmB;AAAA,QAC/E,MAAM,uBAAuB,KAAK,cAAc,WAAW,EAAE;AAAA,QAC7D,MAAM,kBAAkB,KAAK,eAAe,QAAQ,EAAE;AAAA,QACtD,IAAI,GAAG,mBAAmB;AAAA,aACtB;AAAA,aACA;AAAA,QACJ,EAAE;AAAA,MACH,EAAO;AAAA,YAAI;AAAA,aACP,KAAK,cAAc,WAAW;AAAA,aAC9B,KAAK,eAAe,QAAQ;AAAA,QAChC;AAAA,IACA,IAAI,KAAK;AAAA,MACR,MAAM,kBAAkB,kBAAkB,gBAAgB,GAAG,IAAI;AAAA,MACjE,IAAI,wBAAwB,YAAY;AAAA,QAAmB,IAAI,IAAI;AAAA,UAAoB,EAAE,mBAAmB,kBAAkB;AAAA,QACzH;AAAA,cAAI;AAAA,eACL;AAAA,aACF,oBAAoB,GAAG,iBAAiB,gBAAgB;AAAA,UAC1D;AAAA,MACK,SAAI,wBAAwB,CAAC,YAAY;AAAA,QAAmB,IAAI;AAAA,aACjE;AAAA,WACF,oBAAoB,GAAG,iBAAiB,gBAAgB;AAAA,QAC1D;AAAA,MACK;AAAA,YAAI;AAAA,aACL;AAAA,WACF,iBAAiB;AAAA,QACnB;AAAA,MACA,aAAa;AAAA,IACd;AAAA,IACA,IAAI,KAAK,cAAc,WAAW,mBAAqB,eAAe,GAAG;AAAA,MACxE,IAAI,KAAK,cAAc,mBAAmB;AAAA,QACzC,MAAM,aAAa,IAAS;AAAA,QAC5B;AAAA,QACA,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,MACV,GAAG,IAAI;AAAA,MACP,IAAI,KAAK,CAAC;AAAA,QAAY,aAAa;AAAA,IACpC;AAAA,IACA,IAAI,KAAK,cAAc,WAAW,mBAAqB,kBAAkB;AAAA,MAAG,SAAS,KAAK,cAAc,sBAAsB;AAAA,QAC7H,UAAU,CAAC,GAAG,MAAM;AAAA,QACpB;AAAA,MACD,GAAG,IAAI;AAAA,IACP,IAAI,KAAK,cAAc,WAAW,mBAAqB,iBAAiB;AAAA,MAAG,WAAW,KAAK,cAAc,qBAAqB;AAAA,QAC7H,MAAM,aAAa,IAAS;AAAA,QAC5B;AAAA,QACA,UAAU,CAAC,GAAG,MAAM;AAAA,QACpB,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,MACV,GAAG,IAAI;AAAA,IACP,MAAM,kBAAkB,KAAK,aAAa,MAAM,KAAU;AAAA,IAC1D,IAAI,KAAK,uBAAuB;AAAA,MAC/B,MAAM,oBAAoB,KAAK,QAAQ,UAAU,OAAO,CAAC,cAAc;AAAA,QACtE,IAAI,CAAC,UAAU;AAAA,UAAS,OAAO;AAAA,QAC/B,IAAI,CAAC,KAAK,2BAA2B,UAAU,IAAI,UAAU,MAAM;AAAA,UAAG,OAAO;AAAA,QAC7E,OAAO;AAAA,OACP,EAAE,IAAI,OAAO,cAAc;AAAA,QAC3B,MAAM,kBAAkB;AAAA,QACxB,IAAI,KAAK,cAAc,WAAW,mBAAqB,kBAAkB,GAAG;AAAA,UAC3E,IAAI,CAAC,KAAK,cAAc,sBAAsB;AAAA,YAC7C,UAAU,CAAC,GAAG,MAAM;AAAA,YACpB,MAAM,aAAa,IAAS;AAAA,YAC5B,UAAU;AAAA,YACV,aAAa,UAAU;AAAA,YACvB,OAAO;AAAA,YACP;AAAA,YACA,SAAS;AAAA,YACT,QAAQ;AAAA,UACT,GAAG,IAAI;AAAA,YAAG;AAAA,QACX;AAAA,QACA,OAAO,UAAU,cAAc;AAAA,UAC9B,UAAU;AAAA,UACV,UAAU,CAAC,GAAG,MAAM;AAAA,UACpB,MAAM,aAAa,IAAS;AAAA,UAC5B,SAAS;AAAA,UACT,OAAO;AAAA,UACP;AAAA,UACA,SAAS;AAAA,UACT,QAAQ;AAAA,QACT,CAAC;AAAA,OACD;AAAA,MACD,QAAQ,IAAI,iBAAiB,EAAE,MAAM,CAAC,SAAQ;AAAA,QAC7C,IAAI,KAAK,QAAQ;AAAA,UAAc,QAAQ,MAAM,0CAA0C,IAAG;AAAA,OAC1F;AAAA,IACF,EAAO;AAAA,MACN,IAAI,CAAC,KAAK,iBAAiB;AAAA,QAAS;AAAA,MACpC,IAAI,CAAC,KAAK,2BAA2B,KAAK,gBAAgB,IAAI,UAAU,MAAM;AAAA,QAAG;AAAA,MACjF,IAAI,KAAK,cAAc,WAAW,mBAAqB,kBAAkB,GAAG;AAAA,QAC3E,IAAI,CAAC,KAAK,cAAc,sBAAsB;AAAA,UAC7C,UAAU,CAAC,GAAG,MAAM;AAAA,UACpB,MAAM,aAAa,IAAS;AAAA,UAC5B;AAAA,UACA,aAAa,KAAK,gBAAgB;AAAA,UAClC,OAAO;AAAA,UACP;AAAA,UACA,SAAS;AAAA,UACT,QAAQ;AAAA,QACT,GAAG,IAAI;AAAA,UAAG;AAAA,MACX;AAAA,MACA,KAAK,gBAAgB,cAAc;AAAA,QAClC;AAAA,QACA,UAAU,CAAC,GAAG,MAAM;AAAA,QACpB,MAAM,aAAa,IAAS;AAAA,QAC5B,SAAS;AAAA,QACT,OAAO;AAAA,QACP;AAAA,QACA,SAAS;AAAA,QACT,QAAQ;AAAA,MACT,CAAC;AAAA;AAAA;AAGJ;AAQA,IAAI,iBAAiB,MAAM;AAAA,EAC1B,KAAK,IAAI,WAAW;AAAA,EACpB,KAAK,IAAI,WAAW;AAAA,EACpB,IAAI,IAAI,WAAW;AAAA,EACnB,KAAK,IAAI,WAAW;AAAA,EACpB,IAAI,IAAI,WAAW;AAAA,EACnB,KAAK,IAAI,WAAW;AAAA,EACpB,aAAa,GAAG;AAAA,IACf,OAAO;AAAA;AAAA,EAER,cAAc,GAAG;AAAA,IAChB,OAAO;AAAA;AAAA,EAER,YAAY,CAAC,WAAW;AAAA,IACvB,OAAO;AAAA;AAAA,EAER,SAAS,CAAC,QAAQ;AAAA,IACjB,OAAO;AAAA;AAAA,EAER,SAAS,CAAC,QAAQ;AAAA,IACjB,OAAO;AAAA;AAET;AAUA,IAAI,eAAe,MAAM;AAAA,EACxB,iBAAiB,IAAI;AAAA,EACrB,qBAAqB,IAAI;AAAA,EACzB,sBAAsB,IAAI;AAAA,EAC1B,IAAI,IAAI,WAAW;AAAA,EACnB,IAAI,IAAI,WAAW;AAAA,EACnB,KAAK,IAAI,WAAW;AAAA,EACpB,KAAK,IAAI,WAAW;AAAA,EACpB,KAAK,IAAI,WAAW;AAAA,EACpB,KAAK,IAAI,WAAW;AAAA,EACpB,GAAG,CAAC,WAAW;AAAA,EACf,iBAAiB,CAAC,KAAK;AAAA,EACvB,SAAS,CAAC,QAAQ,OAAO;AAAA,EACzB,YAAY,CAAC,WAAW,WAAW;AAAA,EACnC,UAAU,CAAC,UAAU;AAAA,EACrB,YAAY,CAAC,KAAK;AAAA,EAClB,YAAY,CAAC,KAAK;AAAA,EAClB,aAAa,CAAC,KAAK;AAAA,EACnB,UAAU,CAAC,SAAS;AAAA,IACnB,OAAO;AAAA;AAAA,EAER,SAAS,CAAC,QAAQ;AAAA,IACjB,OAAO;AAAA;AAAA,EAER,QAAQ,CAAC,OAAO,SAAS;AAAA,IACxB,OAAO;AAAA;AAAA,EAER,WAAW,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA;AAAA,EAER,WAAW,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA;AAAA,EAER,YAAY,CAAC,OAAO;AAAA,IACnB,OAAO;AAAA;AAAA,EAER,aAAa,CAAC,OAAO,QAAQ;AAAA,IAC5B,OAAO;AAAA;AAAA,EAER,eAAe,CAAC,SAAS;AAAA,IACxB,OAAO;AAAA;AAAA,EAER,SAAS,GAAG;AAAA,IACX,OAAO,CAAC;AAAA;AAAA,EAET,WAAW,CAAC,UAAU;AAAA,IACrB,OAAO;AAAA;AAAA,EAER,SAAS,CAAC,QAAQ;AAAA,IACjB,OAAO,KAAK,eAAe,UAAU,MAAM;AAAA;AAAA,EAE5C,YAAY,CAAC,WAAW;AAAA,IACvB,OAAO,KAAK,eAAe,aAAa,SAAS;AAAA;AAAA,EAElD,UAAU,CAAC,UAAU;AAAA,IACpB,OAAO,CAAC;AAAA;AAAA,EAET,YAAY,CAAC,OAAO;AAAA,IACnB,OAAO;AAAA;AAAA,EAER,aAAa,GAAG;AAAA,IACf,OAAO;AAAA;AAAA,EAER,cAAc,GAAG;AAAA,IAChB,OAAO;AAAA;AAAA,EAER,KAAK,GAAG;AAAA,IACP,OAAO;AAAA;AAAA,EAER,WAAW,GAAG;AAAA,IACb,OAAO;AAAA;AAAA,EAER,aAAa,GAAG;AAAA,IACf,OAAO;AAAA;AAAA,EAER,YAAY,GAAG;AAAA,IACd,OAAO;AAAA;AAAA,EAER,cAAc,GAAG;AAAA,IAChB,OAAO;AAAA;AAAA,EAER,mBAAmB,CAAC,aAAa;AAAA,IAChC,OAAO;AAAA;AAAA,EAER,YAAY,CAAC,aAAa;AAAA,IACzB,OAAO;AAAA;AAAA,EAER,eAAe,CAAC,KAAK;AAAA,IACpB,OAAO;AAAA;AAAA,EAER,gBAAgB,CAAC,UAAU;AAAA,IAC1B,OAAO;AAAA;AAAA,EAER,kBAAkB,CAAC,iBAAiB;AAAA,IACnC,OAAO;AAAA;AAAA,EAER,iBAAiB,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,EAEb,mBAAmB,CAAC,kBAAkB;AAAA,IACrC,OAAO;AAAA;AAAA,EAER,kBAAkB,GAAG;AAAA,IACpB,OAAO,KAAK;AAAA;AAAA,EAEb,SAAS,GAAG;AAAA,IACX,OAAO,CAAC;AAAA;AAAA,EAKT,iBAAiB,CAAC,gBAAgB;AAAA,IACjC,KAAK,iBAAiB;AAAA;AAAA,EAEvB,qBAAqB,CAAC,WAAW;AAAA,IAChC,OAAO;AAAA;AAAA,EAER,sBAAsB,CAAC,WAAW;AAAA,IACjC,OAAO;AAAA;AAAA,EAER,QAAQ,CAAC,WAAW;AAAA,IACnB,OAAO;AAAA;AAAA,EAER,cAAc,CAAC,WAAW;AAAA,IACzB,OAAO;AAAA;AAAA,EAKR,iBAAiB,GAAG;AAAA,IACnB,OAAO,KAAK;AAAA;AAAA,EAKb,mBAAmB,GAAG;AAAA,IACrB,KAAK,iBAAiB,IAAI;AAAA;AAE5B;AAqBA,IAAM,gBAAgB;AAAA,EACrB,kBAAkB,CAAC;AAAA,EACnB,eAAe,CAAC;AAAA,EAChB,oBAAoB,CAAC;AACtB;AA8BA,IAAI,aAAa,MAAM;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,WAAW,CAAC,kBAAkB;AAAA,IAC7B,KAAK,MAAM;AAAA,IACX,KAAK,WAAW,CAAC;AAAA,IACjB,KAAK,mBAAmB;AAAA,IACxB,KAAK,cAAc;AAAA,IACnB,KAAK,gBAAgB,iBAAiB;AAAA,IACtC,IAAI,cAAc,mBAAmB,SAAS;AAAA,MAAG,cAAc,mBAAmB,QAAQ,CAAC,UAAU;AAAA,QACpG,IAAI,MAAM;AAAA,UAAa,MAAM,YAAY,MAAM,gBAAgB;AAAA,OAC/D;AAAA;AAAA,EAOF,YAAY,CAAC,UAAU;AAAA,IACtB,QAAQ,eAAe,oBAAoB,WAAW,qBAAqB;AAAA,IAC3E,IAAI,CAAC,UAAU;AAAA,MACd,IAAI;AAAA,QAAc,QAAQ,MAAM,gEAAgE;AAAA,MAChG,OAAO;AAAA,IACR;AAAA,IACA,IAAI,OAAO;AAAA,IACX,IAAI,cAAc,WAAW,mBAAqB,gBAAgB,GAAG;AAAA,MACpE,OAAO,cAAc,oBAAoB,UAAU,KAAK,gBAAgB;AAAA,MACxE,IAAI,CAAC,MAAM;AAAA,QACV,IAAI;AAAA,UAAc,QAAQ,MAAM,sEAAsE;AAAA,QACtG,OAAO;AAAA,MACR;AAAA,IACD;AAAA,IACA,KAAK,WAAW;AAAA,SACZ,KAAK;AAAA,SACL;AAAA,IACJ;AAAA,IACA,KAAK,cAAc;AAAA,IACnB,OAAO;AAAA;AAAA,EAOR,SAAS,CAAC,OAAO;AAAA,IAChB,KAAK,MAAM;AAAA,IACX,OAAO;AAAA;AAAA,EAOR,SAAS,CAAC,OAAO;AAAA,IAChB,MAAM,YAAY,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IACvD,IAAI,KAAK,SAAS;AAAA,MACjB,MAAM,WAAW,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,GAAG,SAAS,CAAC;AAAA,MACxD,KAAK,UAAU,MAAM,KAAK,QAAQ;AAAA,IACnC,EAAO;AAAA,WAAK,UAAU,CAAC,GAAG,SAAS;AAAA,IACnC,OAAO;AAAA;AAAA,EAKR,IAAI,IAAI,UAAU;AAAA,IACjB,IAAI,CAAC,KAAK,iBAAiB,eAAe,SAAW,IAAI;AAAA,MAAG;AAAA,IAC5D,KAAK,iBAAiB,eAAe,QAAQ;AAAA,IAC7C,OAAO,KAAK,UAAU,SAAW,MAAM,QAAQ;AAAA;AAAA,EAKhD,IAAI,IAAI,UAAU;AAAA,IACjB,IAAI,CAAC,KAAK,iBAAiB,eAAe,SAAW,IAAI;AAAA,MAAG;AAAA,IAC5D,KAAK,iBAAiB,eAAe,QAAQ;AAAA,IAC7C,OAAO,KAAK,UAAU,SAAW,MAAM,QAAQ;AAAA;AAAA,EAKhD,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,iBAAiB,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC7D,KAAK,iBAAiB,eAAe,QAAQ;AAAA,IAC7C,OAAO,KAAK,UAAU,SAAW,OAAO,QAAQ;AAAA;AAAA,EAQjD,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,iBAAiB,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC7D,KAAK,iBAAiB,eAAe,QAAQ;AAAA,IAC7C,OAAO,KAAK,UAAU,SAAW,OAAO,QAAQ;AAAA;AAAA,EAQjD,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,iBAAiB,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC7D,KAAK,iBAAiB,eAAe,QAAQ;AAAA,IAC7C,OAAO,KAAK,UAAU,SAAW,OAAO,QAAQ;AAAA;AAAA,EAQjD,KAAK,IAAI,UAAU;AAAA,IAClB,IAAI,CAAC,KAAK,iBAAiB,eAAe,SAAW,KAAK;AAAA,MAAG;AAAA,IAC7D,KAAK,iBAAiB,eAAe,QAAQ;AAAA,IAC7C,OAAO,KAAK,UAAU,SAAW,OAAO,QAAQ;AAAA;AAAA,EAKjD,cAAc,GAAG;AAAA,IAChB,KAAK,iBAAiB,eAAe;AAAA,IACrC,OAAO;AAAA;AAAA,EAKR,aAAa,GAAG;AAAA,IACf,KAAK,iBAAiB,cAAc;AAAA,IACpC,OAAO;AAAA;AAAA,EAER,SAAS,CAAC,UAAU,QAAQ;AAAA,IAC3B,QAAQ,iBAAiB,KAAK,iBAAiB;AAAA,IAC/C,MAAM,UAAU,eAAe,QAAQ,KAAK;AAAA,IAC5C,OAAO,KAAK,iBAAiB,WAAW;AAAA,MACvC;AAAA,MACA;AAAA,MACA,UAAU,UAAU,KAAK,WAAW;AAAA,MACpC,KAAK,KAAK;AAAA,MACV,QAAQ,KAAK;AAAA,IACd,CAAC;AAAA;AAEH;;;AC38CA,IAAM,mBAAmB,OAAO,YAAY;AAE5C,SAAS,cAAc,CAAC,QAAQ,KAAK,OAAO;AAAA,EAC3C,OAAO,eAAe,QAAQ,KAAK;AAAA,IAClC;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,EACf,CAAC;AAAA;AAGF,SAAS,SAAS,CAAC,OAAO;AAAA,EACzB,IAAI,UAAU,WAAW;AAAA,IACxB,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,UAAU,MAAM;AAAA,IACnB,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,OAAO,UAAU,YAAY,OAAO,UAAU,WAAW;AAAA,IAC5D,OAAO,OAAO,KAAK;AAAA,EACpB;AAAA,EAEA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,OAAO,GAAG;AAAA,EACX;AAAA,EAEA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,OAAO,MAAM,SAAS;AAAA,EACvB;AAAA,EAEA,IAAI,OAAO,UAAU,YAAY;AAAA,IAChC,OAAO,YAAY,MAAM,OAAO,IAAI,MAAM,SAAS;AAAA,EACpD;AAAA,EAGA,IAAI,iBAAiB,OAAO;AAAA,IAC3B,IAAI;AAAA,MACH,OAAO,OAAO,KAAK;AAAA,MAClB,MAAM;AAAA,MACP,OAAO;AAAA;AAAA,EAET;AAAA,EAEA,IAAI;AAAA,IACH,OAAO,KAAK,UAAU,KAAK;AAAA,IAC1B,MAAM;AAAA,IACP,IAAI;AAAA,MACH,OAAO,OAAO,KAAK;AAAA,MAClB,MAAM;AAAA,MACP,OAAO;AAAA;AAAA;AAAA;AAAA;AAKV,MAAqB,iBAAiB,MAAM;AAAA,EAC3C,WAAW,CAAC,SAAQ,YAAY,aAAa,UAAS,CAAC,GAAG;AAAA,IAEzD,IAAI,SAAS,WAAW,KAAK,GAAG;AAAA,MAC/B,OAAO;AAAA,IACR;AAAA,IAEA,IAAI,iBAAiB,OAAO;AAAA,MAC3B,MAAM,IAAI,UAAU,4EAA4E;AAAA,IACjG;AAAA,IAEA,MAAM,oBAAoB,UAAU,KAAK,GAAG;AAAA,IAE5C,IAAI,eAAe,OAAO;AAAA,MAGzB,OAAO,eAAe,MAAM,WAAW,SAAS;AAAA,IACjD;AAAA,IAEA,eAAe,MAAM,QAAQ,UAAU;AAAA,IACvC,eAAe,MAAM,kBAAkB,IAAI;AAAA,IAC3C,eAAe,MAAM,cAAc,IAAI;AAAA,IACvC,eAAe,MAAM,SAAS,KAAK;AAAA;AAAA,SAG7B,UAAU,CAAC,OAAO;AAAA,IACxB,OAAO,QAAQ,sBAAsB;AAAA;AAAA,SAG/B,eAAe,CAAC,UAAU,YAAY;AAAA,IAC5C,IAAI;AAAA,MACH,MAAM,SAAS,SAAS,GAAG,UAAU;AAAA,MAGrC,IAAI,UAAU,OAAO,OAAO,SAAS,YAAY;AAAA,QAChD,QAAQ,YAAY;AAAA,UACnB,IAAI;AAAA,YACH,OAAO,MAAM;AAAA,YACZ,OAAO,OAAO;AAAA,YAEf,IAAI,iBAAiB,OAAO;AAAA,cAC3B,MAAM;AAAA,YACP;AAAA,YAEA,MAAM,IAAI,SAAS,KAAK;AAAA;AAAA,WAEvB;AAAA,MACJ;AAAA,MAEA,OAAO;AAAA,MACN,OAAO,OAAO;AAAA,MAGf,IAAI,iBAAiB,OAAO;AAAA,QAC3B,MAAM;AAAA,MACP;AAAA,MAGA,MAAM,IAAI,SAAS,KAAK;AAAA;AAAA;AAAA,SAInB,GAAG,CAAC,UAAU;AAAA,IACpB,OAAO,SAAS,gBAAgB,UAAU,CAAC,CAAC;AAAA;AAAA,SAGtC,IAAI,CAAC,UAAU;AAAA,IACrB,OAAO,IAAI,eAAe,SAAS,gBAAgB,UAAU,UAAU;AAAA;AAAA,UAIhE,OAAO,YAAY,CAAC,UAAU;AAAA,IACrC,OAAO,SAAS,WAAW,QAAQ;AAAA;AAErC;;;ACtIA,IAAM,OAAO;AAAA,EAEZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA,WAAW;AAAA,EAIX,WAAW;AAAA,EACX,WAAW;AACZ,EAEE,OAAO,OAAO,EACd,IAAI,iBAAe,CAAC,YAAY,MAAM,WAAW,CAAC;AAE7C,IAAM,oBAAoB,IAAI,IAAI,IAAI;AACtC,IAAM,iBAAiB,IAAI;;;ACrBlC,IAAM,kBAAkB;AAAA,EACvB;AAAA,IACC,UAAU;AAAA,IACV,YAAY;AAAA,EACb;AAAA,EACA;AAAA,IACC,UAAU;AAAA,IACV,YAAY;AAAA,EACb;AAAA,EACA;AAAA,IACC,UAAU;AAAA,IACV,YAAY;AAAA,EACb;AAAA,EACA;AAAA,IACC,UAAU;AAAA,IACV,YAAY;AAAA,EACb;AAAA,EACA;AAAA,IACC,UAAU;AAAA,IACV,YAAY;AAAA,EACb;AAAA,EACA;AAAA,IACC,UAAU;AAAA,IACV,YAAY;AAAA,EACb;AACD;AAEA,IAAM,kBAAkB,IAAI;AAE5B,IAAM,SAAS,UAAQ;AAAA,EACtB,gBAAgB,IAAI,IAAI;AAAA,EACxB,MAAM,OAAO,KAAK,OAAO;AAAA,EACzB,gBAAgB,OAAO,IAAI;AAAA,EAC3B,OAAO;AAAA;AAGR,IAAM,WAAW,UAAQ;AAAA,EACxB,IAAI,SAAS,YAAY;AAAA,IACxB,OAAO,IAAI;AAAA,EACZ;AAAA,EAEA,MAAM,UAAU,eAAe,IAAI,IAAI;AAAA,EACvC,IAAI,SAAS;AAAA,IACZ,OAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,MAAM,mBAAmB,kBAAkB,IAAI,IAAI,KAAK;AAAA,EACxD,OAAO,qBAAqB,iBACzB,IAAI,iBAAiB,CAAC,CAAC,IACvB,IAAI;AAAA;AAGR,IAAM,kBAAkB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,MACK;AAAA,EACL,IAAI,CAAC,IAAI;AAAA,IACR,IAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,MACxB,KAAK,CAAC;AAAA,IACP,EAAO,SAAI,CAAC,aAAa,YAAY,IAAI,GAAG;AAAA,MAC3C,KAAK,SAAS,KAAK,IAAI;AAAA,IACxB,EAAO;AAAA,MACN,KAAK,CAAC;AAAA;AAAA,EAER;AAAA,EAEA,KAAK,IAAI,IAAI;AAAA,EAEb,IAAI,SAAS,UAAU;AAAA,IACtB,KAAK,OAAO,IAAI;AAAA,IAChB,OAAO;AAAA,EACR;AAAA,EAEA,IAAI,aAAa,OAAO,KAAK,WAAW,cAAc,CAAC,gBAAgB,IAAI,IAAI,GAAG;AAAA,IACjF,KAAK,OAAO,IAAI;AAAA,IAChB,OAAO,OAAO,IAAI;AAAA,EACnB;AAAA,EAEA,MAAM,0BAA0B,WAAS,gBAAgB;AAAA,IACxD,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,OAAO,QAAQ;AAAA,IACf;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EAED,WAAW,OAAO,OAAO,KAAK,IAAI,GAAG;AAAA,IACpC,MAAM,QAAQ,KAAK;AAAA,IAEnB,IAAI,SAAS,iBAAiB,cAAc,MAAM,YAAY,SAAS,UAAU;AAAA,MAChF,GAAG,OAAO,YAAY,oBAAoB;AAAA,MAC1C;AAAA,IACD;AAAA,IAEA,IAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,MAAM,SAAS,YAAY;AAAA,MACpF,GAAG,OAAO,YAAY,oBAAoB;AAAA,MAC1C;AAAA,IACD;AAAA,IAEA,IAAI,OAAO,UAAU,YAAY;AAAA,MAChC,IAAI,CAAC,WAAW;AAAA,QACf,GAAG,OAAO;AAAA,MACX;AAAA,MAEA;AAAA,IACD;AAAA,IAEA,IAAI,aAAa,OAAO,UAAU,UAAU;AAAA,MAC3C,GAAG,OAAO,GAAG;AAAA,MACb;AAAA,IACD;AAAA,IAEA,IAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AAAA,MAExC,IAAI;AAAA,QACH,GAAG,OAAO;AAAA,QACT,MAAM;AAAA,MAER;AAAA,IACD;AAAA,IAEA,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG;AAAA,MACrB,GAAG,OAAO,wBAAwB,KAAK;AAAA,MACvC;AAAA,IACD;AAAA,IAEA,GAAG,OAAO;AAAA,EACX;AAAA,EAEA,IAAI,aAAa,cAAc,OAAO;AAAA,IACrC,aAAY,UAAU,gBAAe,iBAAiB;AAAA,MACrD,MAAM,QAAQ,KAAK;AAAA,MACnB,IAAI,UAAU,aAAa,UAAU,MAAM;AAAA,QAC1C;AAAA,MACD;AAAA,MAEA,MAAM,aAAa,OAAO,yBAAyB,IAAI,QAAQ;AAAA,MAC/D,IAAI,YAAY,iBAAiB,OAAO;AAAA,QACvC;AAAA,MACD;AAAA,MAEA,IAAI,iBAAiB;AAAA,MACrB,IAAI,OAAO,UAAU,UAAU;AAAA,QAC9B,iBAAiB,KAAK,IAAI,KAAK,IAC5B,eACA,wBAAwB,KAAK;AAAA,MACjC;AAAA,MAEA,OAAO,eAAe,IAAI,UAAU;AAAA,QACnC,OAAO;AAAA,QACP,YAAY,mBAAmB;AAAA,QAC/B,cAAc;AAAA,QACd,UAAU;AAAA,MACX,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EAEA,KAAK,OAAO,IAAI;AAAA,EAChB,OAAO;AAAA;AAGD,SAAS,cAAc,CAAC,OAAO,UAAU,CAAC,GAAG;AAAA,EACnD;AAAA,IACC,WAAW,OAAO;AAAA,IAClB,YAAY;AAAA,MACT;AAAA,EAEJ,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAAA,IAChD,OAAO,gBAAgB;AAAA,MACtB,MAAM;AAAA,MACN,MAAM,IAAI;AAAA,MACV,iBAAiB;AAAA,MACjB;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA,WAAW;AAAA,IACZ,CAAC;AAAA,EACF;AAAA,EAGA,IAAI,OAAO,UAAU,YAAY;AAAA,IAChC,QAAQ;AAAA,EACT;AAAA,EAEA,OAAO,gBAAgB;AAAA,IACtB,MAAM,IAAI,SAAS,KAAK;AAAA,IACxB,MAAM,IAAI;AAAA,IACV,iBAAiB;AAAA,IACjB;AAAA,IACA,OAAO;AAAA,IACP;AAAA,IACA,WAAW;AAAA,EACZ,CAAC;AAAA;AAwBK,SAAS,WAAW,CAAC,OAAO;AAAA,EAClC,OAAO,QAAQ,KAAK,KAChB,OAAO,UAAU,YACjB,OAAO,MAAM,SAAS,YACtB,OAAO,MAAM,YAAY,YACzB,OAAO,MAAM,UAAU;AAAA;;;ACxOrB,IAAM,kBAAkB;AAAA,EAC3B,OAAO,CAAC,GAAG,CAAC;AAAA,EACZ,MAAM,CAAC,GAAG,EAAE;AAAA,EACZ,KAAK,CAAC,GAAG,EAAE;AAAA,EACX,QAAQ,CAAC,GAAG,EAAE;AAAA,EACd,WAAW,CAAC,GAAG,EAAE;AAAA,EACjB,UAAU,CAAC,IAAI,EAAE;AAAA,EACjB,SAAS,CAAC,GAAG,EAAE;AAAA,EACf,QAAQ,CAAC,GAAG,EAAE;AAAA,EACd,eAAe,CAAC,GAAG,EAAE;AAAA,EACrB,OAAO,CAAC,IAAI,EAAE;AAAA,EACd,KAAK,CAAC,IAAI,EAAE;AAAA,EACZ,OAAO,CAAC,IAAI,EAAE;AAAA,EACd,QAAQ,CAAC,IAAI,EAAE;AAAA,EACf,MAAM,CAAC,IAAI,EAAE;AAAA,EACb,SAAS,CAAC,IAAI,EAAE;AAAA,EAChB,MAAM,CAAC,IAAI,EAAE;AAAA,EACb,OAAO,CAAC,IAAI,EAAE;AAAA,EACd,aAAa,CAAC,IAAI,EAAE;AAAA,EACpB,WAAW,CAAC,IAAI,EAAE;AAAA,EAClB,aAAa,CAAC,IAAI,EAAE;AAAA,EACpB,cAAc,CAAC,IAAI,EAAE;AAAA,EACrB,YAAY,CAAC,IAAI,EAAE;AAAA,EACnB,eAAe,CAAC,IAAI,EAAE;AAAA,EACtB,YAAY,CAAC,IAAI,EAAE;AAAA,EACnB,aAAa,CAAC,IAAI,EAAE;AAAA,EACpB,SAAS,CAAC,IAAI,EAAE;AAAA,EAChB,OAAO,CAAC,IAAI,EAAE;AAAA,EACd,SAAS,CAAC,IAAI,EAAE;AAAA,EAChB,UAAU,CAAC,IAAI,EAAE;AAAA,EACjB,QAAQ,CAAC,IAAI,EAAE;AAAA,EACf,WAAW,CAAC,IAAI,EAAE;AAAA,EAClB,QAAQ,CAAC,IAAI,EAAE;AAAA,EACf,SAAS,CAAC,IAAI,EAAE;AAAA,EAChB,eAAe,CAAC,KAAK,EAAE;AAAA,EACvB,aAAa,CAAC,KAAK,EAAE;AAAA,EACrB,eAAe,CAAC,KAAK,EAAE;AAAA,EACvB,gBAAgB,CAAC,KAAK,EAAE;AAAA,EACxB,cAAc,CAAC,KAAK,EAAE;AAAA,EACtB,iBAAiB,CAAC,KAAK,EAAE;AAAA,EACzB,cAAc,CAAC,KAAK,EAAE;AAAA,EACtB,eAAe,CAAC,KAAK,EAAE;AAC3B;;;ACzCO,SAAS,cAAc,CAAC,UAAU,UAAU,QAAQ,uBAAuB,OAAO;AAAA,EACrF,MAAM,iBAAiB,OAAO,QAAQ;AAAA,EACtC,MAAM,gBAAgB,CAAC,kBAAkB,SAAS,QAAU,KAAK,MAAM,wBAA0B,KAAK;AAAA,EACtG,MAAM,YAAY,CAAC,OAAO,UAAU;AAAA,IAChC,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU;AAAA,MAC5C,OAAO,cAAc,OAAO,gBAAgB,MAAM;AAAA,IACtD,EACK,SAAI,SAAS,QAAQ,MAAM,QAAQ,KAAK,GAAG;AAAA,MAC5C,OAAO,MAAM,OAAO,CAAC,WAAW,cAAc,UAAU,WAAW,SAAS,GAAG,KAAK;AAAA,IACxF,EACK;AAAA,MACD,IAAI,SAAS,QAAQ,MAAM,MAAM,KAAK,MAAM,MAAM;AAAA,QAC9C,OAAO,UAAU,OAAO,MAAM,MAAM,KAAK,EAAE;AAAA,MAC/C,EACK,SAAI,SAAS,QAAQ,MAAM,QAAQ,MAAM;AAAA,QAC1C,OAAO,UAAU,OAAO,MAAM,IAAI;AAAA,MACtC,EACK;AAAA,QACD,OAAO;AAAA;AAAA;AAAA;AAAA,EAInB,MAAM,eAAe;AAAA,EACrB,OAAO,eAAe,QAAQ,cAAc,CAAC,GAAG,gBAAgB;AAAA,IAC5D,MAAM,QAAQ,OAAO,gBAAgB,OAAO,OAAO,OAAO,YAAY,IAAI,uBAAuB,KAAK;AAAA,IACtG,OAAO,SAAS,kBACV,UAAU,OAAO,UAAU,kBAAkB,gBAAgB,YAAY,IAAI,cAAc,IAAI,gBAAgB,KAAK,IACpH;AAAA,GACT;AAAA;;;AC7BE,SAAS,oBAAoB,CAAC,OAAO,SAAS,GAAG,YAAY,GAAG;AAAA,EACnE,IAAI,SAAS,QAAQ,MAAM,KAAK,GAAG;AAAA,IAC/B,OAAO;AAAA,EACX;AAAA,EACA,QAAQ,SAAS,OAAO,QAAQ,YAAY;AAAA,EAC5C,OAAO,WAAW,IACZ,SAAS,OACL,OACA,QAAQ,KACJ,MAAM,QACN,MAAM,SAAS,IACvB,SAAS,OACL,QACA,QAAQ,KACJ,OAAO,QACP,QAAQ,MACJ,MAAM,QACN,MAAM,SAAS;AAAA;;;ACjB9B,SAAS,WAAW,CAAC,KAAK;AAAA,EAC7B,OAAO;AAAA,IACH,MAAM,IAAI;AAAA,IACV,UAAU,IAAI;AAAA,IACd,UAAU,IAAI;AAAA,IACd,UAAU,IAAI;AAAA,IACd,MAAM,IAAI;AAAA,IACV,UAAU,IAAI;AAAA,IACd,MAAM,IAAI;AAAA,IACV,UAAU,IAAI;AAAA,IACd,QAAQ,IAAI;AAAA,IACZ,cAAc,CAAC,GAAG,IAAI,YAAY,EAAE,IAAI,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE;AAAA,IAC1E,MAAM,IAAI;AAAA,IACV,QAAQ,IAAI;AAAA,EAChB;AAAA;;;ACdJ;AACA,sBAAS;AACT;AAEA,IAAe;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,IAAM,OAAO;AAAA,EACT,SAAS;AAAA,EACT,gBAAgB,SAAS;AAAA,EACzB,UAAU,WAAW,SAAS,IAAI;AACtC;AACO,SAAS,OAAO,CAAC,YAAY,cAAc,iBAAiB,+BAA+B,MAAM,aAAa;AAAA,EACjH,OAAO,OAAO,OAAO,CAAC,GAAG,MAAM;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,MAAM,IAAI;AAAA,IACV;AAAA,IACA;AAAA,IACA,MAAM,CAAC,gCAAgC,oBAAoB,eAAe,IAAI;AAAA,EAClF,CAAC;AAAA;AAEE,SAAS,mBAAmB,CAAC,iBAAiB,QAAQ,MAAM,GAAG;AAAA,EAClE,OAAO,sBAAsB,OAAO,OAAO,MAAM;AAAA,CAAI,GAAG,OAAO,CAAC,aAAa,SAAS,SAAS,SAAS,CAAC,IAAI,gBAAgB;AAAA;AAE1H,SAAS,aAAa,CAAC,OAAO;AAAA,EACjC,OAAO,OAAO,OAAO,MAAM;AAAA,CAAI,GAAG,OAAO,CAAC,QAAQ,SAAS;AAAA,IACvD,IAAI,KAAK,SAAS,SAAS,GAAG;AAAA,MAC1B,OAAO,KAAK,sBAAsB,IAAI,CAAC;AAAA,IAC3C;AAAA,IACA,OAAO;AAAA,KACR,CAAC,CAAC;AAAA;AAET,SAAS,qBAAqB,CAAC,MAAM;AAAA,EACjC,MAAM,aAAa;AAAA,IACf,cAAc;AAAA,IACd,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,QAAQ;AAAA,EACZ;AAAA,EACA,IAAI,QAAQ,QAAQ,KAAK,SAAS,SAAS,GAAG;AAAA,IAC1C,OAAO,KAAK,QAAQ,eAAe,EAAE;AAAA,IACrC,MAAM,iBAAiB,KAAK,MAAM,IAAI;AAAA,IACtC,MAAM,eAAe,MAAM,MAAM,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,IAAI,KAAK;AAAA,IACjF,MAAM,YAAY,cAAc,SAAS,GAAG,IAAI,cAAc,QAAQ,WAAW,EAAE,GAAG,QAAQ,QAAQ,IAAI,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI;AAAA,IAC/H,MAAM,aAAa,WAAW,IAAI;AAAA,IAClC,MAAM,WAAW,WAAW,IAAI;AAAA,IAChC,MAAM,WAAW,WAAW,IAAI;AAAA,IAChC,MAAM,mBAAmB,cAAc,GAAG,YAAY,UAAU;AAAA,IAChE,MAAM,WAAW,UAAU,MAAM,GAAG,GAAG,IAAI;AAAA,IAC3C,MAAM,mBAAmB,GAAG,YAAY;AAAA,IACxC,IAAI,YAAY,QAAQ,SAAS,SAAS,GAAG;AAAA,MACzC,WAAW,eAAe;AAAA,MAC1B,WAAW,WAAW;AAAA,MACtB,WAAW,mBAAmB;AAAA,MAC9B,WAAW,aAAa;AAAA,MACxB,WAAW,WAAW;AAAA,MACtB,WAAW,WAAW;AAAA,MACtB,WAAW,mBAAmB;AAAA,MAC9B,WAAW,SAAS,iBAAiB,MAAM,OAAO,iBAAiB,KAAK;AAAA,IAC5E;AAAA,EACJ;AAAA,EACA,OAAO;AAAA;AAEJ,SAAS,OAAO,CAAC,GAAG;AAAA,EACvB,OAAO,OAAO,iBAAiB,OAAO,MAAM,cAAc,CAAC,IAAI,aAAa;AAAA;AAEzE,SAAS,kBAAkB,CAAC,YAAY,UAAU;AAAA,EACrD,OAAO,WAAW,OAAO,CAAC,QAAQ,QAAQ;AAAA,IACtC,QAAQ,GAAG,IAAI,OAAO,OAAO,KAAK,qBAAqB,KAAK,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK,GAAG;AAAA,IAC7F,OAAO;AAAA,KACR,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AAAA;AAExB,SAAS,oBAAoB,CAAC,OAAO,UAAU;AAAA,EAClD,MAAM,gBAAgB,cAAc,KAAK,EAAE,IAAI,CAAC,eAAe;AAAA,IAC3D,OAAO,eAAe,UAAU,SAAS,0BAA0B,KAAK,WAAW,GAAG,IAAI;AAAA,GAC7F;AAAA,EACD,MAAM,yBAAyB;AAAA,IAC3B,WAAW,IAAI,MAAM;AAAA,IACrB,cAAc,OAAO,oBAAoB,KAAK,EACzC,OAAO,CAAC,QAAQ,QAAQ;AAAA,MACzB,IAAI,QAAQ,SAAS;AAAA,QACjB,OAAO,KAAK,MAAM,IAAI;AAAA,MAC1B;AAAA,MACA,OAAO;AAAA,OACR,CAAC,CAAC,EACA,KAAK,IAAI;AAAA,IACd,YAAY,cAAc,KAAK;AAAA,CAAI;AAAA,EACvC;AAAA,EACA,OAAO,eAAe,UAAU,SAAS,qBAAqB,sBAAsB;AAAA;AAEjF,SAAS,kBAAkB,CAAC,eAAe,SAAS,WAAW,UAAU;AAAA,EAC5E,MAAM,gBAAgB,UAAU,SAAS,KAAK,QAAQ,SAAS,IAAI;AAAA,IAAO,MAAM,UAAU,KAAK;AAAA,CAAI;AAAA,EACnG,SAAS,qBAAqB,SAAS,SAAS;AAAA,EAChD,QAAQ,IAAI,gBAAgB,kBAAkB,SAAS,sBAAsB,GAAG,OAAO,IAAI,YAAY;AAAA;AAEpG,SAAS,aAAa,CAAC,MAAM;AAAA,EAChC,QAAQ,IAAI,uBAAuB,IAAI,CAAC;AAAA,EACxC,SAAS,sBAAsB,CAAC,KAAK;AAAA,IACjC,MAAM,QAAQ,IAAI;AAAA,IAClB,OAAO,KAAK,UAAU,KAAK,CAAC,KAAK,UAAU;AAAA,MACvC,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAAA,QAC7C,IAAI,MAAM,IAAI,KAAK,GAAG;AAAA,UAClB,OAAO;AAAA,QACX;AAAA,QACA,MAAM,IAAI,KAAK;AAAA,MACnB;AAAA,MACA,IAAI,OAAO,UAAU,UAAU;AAAA,QAC3B,OAAO,GAAG;AAAA,MACd;AAAA,MACA,IAAI,OAAO,UAAU,aAAa;AAAA,QAC9B,OAAO;AAAA,MACX;AAAA,MACA,OAAO;AAAA,KACV;AAAA;AAAA;AAGF,SAAS,QAAQ,CAAC,KAAK;AAAA,EAC1B,OAAO,OAAO,SAAS,GAAG;AAAA;;AC5HvB,MAAM,WAAW;AAAA,EACpB,WAAW,CAAC,UAAU,QAAQ,kBAAkB,GAAG;AAAA,IAC/C,KAAK,SAAS;AAAA,IACd,KAAK,kBAAkB;AAAA,IACvB,KAAK,UAAU;AAAA,IACf,KAAK,WAAW;AAAA,MACZ,MAAM,UAAU,QAAQ;AAAA,MACxB,MAAM,UAAU;AAAA,MAChB,aAAa,UAAU;AAAA,MACvB,UAAU,UAAU,YAAY;AAAA,MAChC,oBAAoB,UAAU;AAAA,MAC9B,8BAA8B,UAAU,gCAAgC;AAAA,MACxE,mBAAmB,UAAU,qBACzB;AAAA,MACJ,qBAAqB,UAAU,uBAAuB;AAAA;AAAA;AAAA;AAAA,MACtD,0BAA0B,UAAU,4BAA4B;AAAA;AAAA,MAChE,iCAAiC,UAAU,mCAAmC;AAAA,MAC9E,gCAAgC,UAAU,kCAAkC;AAAA,MAC5E,iBAAiB,UAAU,mBAAmB;AAAA,MAC9C,mBAAmB,UAAU,qBAAqB;AAAA,MAClD,iBAAiB,UAAU,mBAAmB;AAAA,QAC1C,cAAc;AAAA,UACV,KAAK,CAAC,QAAQ,SAAS,iBAAiB,KAAK;AAAA,UAC7C,OAAO,CAAC,QAAQ,OAAO;AAAA,UACvB,OAAO,CAAC,QAAQ,aAAa;AAAA,UAC7B,OAAO,CAAC,QAAQ,OAAO;AAAA,UACvB,MAAM,CAAC,QAAQ,MAAM;AAAA,UACrB,MAAM,CAAC,QAAQ,QAAQ;AAAA,UACvB,OAAO,CAAC,QAAQ,KAAK;AAAA,UACrB,OAAO,CAAC,QAAQ,WAAW;AAAA,QAC/B;AAAA,QACA,YAAY;AAAA,QACZ,kBAAkB;AAAA,QAClB,MAAM,CAAC,SAAS,MAAM;AAAA,QACtB,yBAAyB,CAAC,SAAS,MAAM;AAAA,QACzC,yBAAyB,CAAC,SAAS,MAAM;AAAA,QACzC,WAAW,CAAC,QAAQ,eAAe,aAAa;AAAA,QAChD,UAAU,CAAC,QAAQ;AAAA,QACnB,kBAAkB;AAAA,MACtB;AAAA,MACA,sBAAsB,UAAU,wBAAwB;AAAA,QACpD,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,MACX;AAAA,MACA,cAAc,UAAU,gBAAgB;AAAA,MACxC,iBAAiB,UAAU,mBAAmB;AAAA,MAC9C,kBAAkB,UAAU,oBAAoB,CAAC,UAAU;AAAA,MAC3D,iCAAiC,UAAU,mCAAmC;AAAA,MAC9E,iBAAiB,UAAU;AAAA,MAC3B,QAAQ,CAAC,GAAI,UAAU,UAAU,CAAC,CAAE;AAAA,MACpC,oBAAoB,CAAC,GAAI,UAAU,sBAAsB,CAAC,CAAE;AAAA,MAC5D,WAAW;AAAA,QACP,MAAM,UAAU,WAAW;AAAA,QAC3B,UAAU,UAAU,WAAW;AAAA,QAC/B,SAAS,UAAU,WAAW;AAAA,QAC9B,iBAAiB,UAAU,WAAW;AAAA,QACtC,YAAY,UAAU,WAAW;AAAA,QACjC,cAAc,UAAU,WAAW;AAAA,QACnC,oBAAoB,UAAU,WAAW;AAAA,QACzC,eAAe,UAAU,WAAW;AAAA,MACxC;AAAA,IACJ;AAAA;AAAA,EAEJ,GAAG,CAAC,YAAY,iBAAiB,MAAM;AAAA,IACnC,IAAI,aAAa,KAAK,SAAS,UAAU;AAAA,MACrC;AAAA,IACJ;AAAA,IACA,MAAM,UAAU,CAAC,GAAG,KAAK,SAAS,QAAQ,GAAG,IAAI;AAAA,IACjD,MAAM,aAAa,KAAK,SAAS,WAAW,QAAQ,OAC9C,KAAK,SAAS,WAAW,KAAK,OAAO,IACrC,KAAK,SAAS,oBAAoB,QAAQ,KAAK,SAAS,iBAAiB,SAAS,IAC9E,KAAK,MAAM,OAAO,IAClB;AAAA,IACV,MAAM,aAAa,KAAK,UAAU,OAAO,KAAK,mCAAmC,KAAK,MAAM,IAAI;AAAA,IAChG,MAAM,SAAS,KAAK,SAAS,WAAW,YAAY,OAAO,KAAK,SAAS,WAAW,SAAS,YAAY,UAAU,IAAI,KAAK,UAAU,YAAY,UAAU;AAAA,IAC5J,MAAM,iBAAiB,KAAK,SAAS,WAAW,WAAW,OACrD,KAAK,SAAS,WAAW,QAAQ,QAAQ,YAAY,YAAY,IACjE,KAAK,iBAAiB,QAAQ,YAAY,YAAY;AAAA,IAC5D,IAAI;AAAA,IACJ,IAAI,yBAAyB;AAAA,IAC7B,IAAI,KAAK,SAAS,WAAW,cAAc,MAAM;AAAA,MAC7C,gBAAgB,KAAK,SAAS,WAAW,WAAW,iBAAiB,KAAK,SAAS,aAAa;AAAA,IACpG;AAAA,IACA,IAAI,KAAK,SAAS,WAAW,gBAAgB,MAAM;AAAA,MAC/C,yBAAyB,KAAK,SAAS,WAAW,aAAa,YAAY,KAAK,QAAQ;AAAA,IAC5F;AAAA,IACA,IAAI,KAAK,SAAS,SAAS,UAAU;AAAA,MACjC,gBAAgB,iBAAiB,KAAK,wBAAwB,iBAAiB,KAAK,SAAS,aAAa;AAAA,MAC1G,yBAAyB,0BAA0B,KAAK,QAAQ,mBAAmB,YAAY,KAAK,QAAQ;AAAA,IAChH;AAAA,IACA,IAAI,iBAAiB,QAAQ,0BAA0B,MAAM;AAAA,MACzD,KAAK,SAAS,WAAW,sBAAsB,OACzC,KAAK,SAAS,WAAW,mBAAmB,eAAe,uBAAuB,MAAM,uBAAuB,QAAQ,KAAK,QAAQ,IACpI,KAAK,QAAQ,mBAAmB,eAAe,uBAAuB,MAAM,uBAAuB,QAAQ,KAAK,QAAQ;AAAA,IAClI,EACK;AAAA,MACD,KAAK,SAAS,WAAW,iBAAiB,OACpC,KAAK,SAAS,WAAW,cAAc,cAAc,IACrD,KAAK,SAAS,SAAS,YACnB,KAAK,QAAQ,cAAc,cAAc;AAAA;AAAA,IAGvD,IAAI,KAAK,SAAS,sBAAsB,QAAQ,KAAK,SAAS,mBAAmB,SAAS,GAAG;AAAA,MACzF,KAAK,SAAS,mBAAmB,QAAQ,CAAC,oBAAoB;AAAA,QAC1D,gBAAgB,cAAc;AAAA,OACjC;AAAA,IACL;AAAA,IACA,OAAO;AAAA;AAAA,EAEX,eAAe,CAAC,iBAAiB;AAAA,IAC7B,KAAK,SAAS,mBAAmB,KAAK,eAAe;AAAA;AAAA,EAEzD,YAAY,CAAC,UAAU,QAAQ;AAAA,IAC3B,MAAM,oBAAoB;AAAA,SACnB,KAAK;AAAA,SACL;AAAA,MACH,aAAa,KAAK,UAAU,eAAe,QAAQ,KAAK,UAAU,QAAQ,OACpE,CAAC,GAAG,KAAK,SAAS,aAAa,KAAK,SAAS,IAAI,IACjD,KAAK,UAAU,QAAQ,OACnB,CAAC,KAAK,SAAS,IAAI,IACnB;AAAA,MACV,QAAQ,CAAC,GAAG,KAAK,SAAS,QAAQ,GAAI,UAAU,UAAU,CAAC,CAAE;AAAA,IACjE;AAAA,IACA,MAAM,YAAY,IAAI,KAAK,YAAY,mBAAmB,UAAU,KAAK,QAAQ,KAAK,eAAe;AAAA,IACrG,OAAO;AAAA;AAAA,EAEX,KAAK,CAAC,MAAM;AAAA,IACR,MAAM,mBAAmB,KAAK,SAAS,oCAAoC,OAAO,KAAK,SAAS,mBAAmB,KAAK,SAAS,iBAAiB,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC;AAAA,IAChL,OAAO,MAAM,IAAI,CAAC,QAAQ;AAAA,MACtB,OAAO,KAAK,mCAAmC,KAAK,gBAAgB;AAAA,KACvE;AAAA;AAAA,EAEL,kCAAkC,CAAC,QAAQ,MAAM,OAAO,CAAC,GAAG;AAAA,IACxD,IAAI,KAAK,SAAS,MAAM,GAAG;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,IAAI,OAAO,WAAW,YAAY,WAAW,MAAM;AAAA,MAC/C,KAAK,KAAK,MAAM;AAAA,IACpB;AAAA,IACA,IAAI,KAAK,QAAQ,QAAQ,MAAM,KAAK,KAAK,QAAQ,SAAS,MAAM,GAAG;AAAA,MAC/D,OAAO;AAAA,IACX,EACK,SAAI,kBAAkB,KAAK;AAAA,MAC5B,OAAO,IAAI,IAAI,MAAM;AAAA,IACzB,EACK,SAAI,kBAAkB,KAAK;AAAA,MAC5B,OAAO,IAAI,IAAI,MAAM;AAAA,IACzB,EACK,SAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,MAC5B,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,mCAAmC,MAAM,MAAM,IAAI,CAAC;AAAA,IACzF,EACK,SAAI,kBAAkB,MAAM;AAAA,MAC7B,OAAO,IAAI,KAAK,OAAO,QAAQ,CAAC;AAAA,IACpC,EACK,SAAI,kBAAkB,KAAK;AAAA,MAC5B,OAAO,YAAY,MAAM;AAAA,IAC7B,EACK,SAAI,WAAW,QAAQ,OAAO,WAAW,UAAU;AAAA,MACpD,MAAM,aAAa,KAAK,QAAQ,QAAQ,MAAM,IAAI,KAAK,YAAY,MAAM,IAAI,OAAO,OAAO,OAAO,eAAe,MAAM,CAAC;AAAA,MACxH,OAAO,OAAO,oBAAoB,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;AAAA,QAC1D,EAAE,QAAQ,KAAK,SAAS,KAAK,UAAU,oCAAoC,OAAO,OAAO,KAAK,YAAY,CAAC,IACrG,KAAK,SAAS,mBACb,MAAM;AAAA,UACL,IAAI;AAAA,YACA,OAAO,KAAK,mCAAmC,OAAO,OAAO,MAAM,IAAI;AAAA,YAE3E,OAAO,GAAG;AAAA,YACN,OAAO;AAAA;AAAA,WAEZ;AAAA,QACP,OAAO;AAAA,SACR,UAAU;AAAA,IACjB,EACK;AAAA,MACD,IAAI,OAAO,WAAW,UAAU;AAAA,QAC5B,IAAI,iBAAiB;AAAA,QACrB,WAAW,SAAS,KAAK,UAAU,mBAAmB,CAAC,GAAG;AAAA,UACtD,iBAAiB,eAAe,QAAQ,OAAO,KAAK,UAAU,mBAAmB,EAAE;AAAA,QACvF;AAAA,QACA,OAAO;AAAA,MACX;AAAA,MACA,OAAO;AAAA;AAAA;AAAA,EAGf,kCAAkC,CAAC,QAAQ,OAAO,CAAC,GAAG;AAAA,IAClD,IAAI,KAAK,gBAAgB,MAAM,KAAK,KAAK,SAAS,MAAM,GAAG;AAAA,MACvD,OAAO,KAAK,YAAY,MAAM;AAAA,IAClC;AAAA,IACA,IAAI,KAAK,gBAAgB,MAAM,GAAG;AAAA,MAC9B,KAAK,KAAK,MAAM;AAAA,IACpB;AAAA,IACA,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,MACvB,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,mCAAmC,MAAM,IAAI,CAAC;AAAA,IACnF,EACK,SAAI,kBAAkB,MAAM;AAAA,MAC7B,OAAO,IAAI,KAAK,OAAO,QAAQ,CAAC;AAAA,IACpC,EACK,SAAI,KAAK,SAAS,MAAM,GAAG;AAAA,MAC5B,OAAO,OAAO,oBAAoB,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;AAAA,QAC1D,MAAM,aAAa,OAAO,yBAAyB,QAAQ,IAAI;AAAA,QAC/D,IAAI,YAAY;AAAA,UACZ,OAAO,eAAe,GAAG,MAAM,UAAU;AAAA,UACzC,MAAM,QAAQ,OAAO;AAAA,UACrB,EAAE,QAAQ,OAAO,UAAU,aAAa,MAAM,IAAI,KAAK,mCAAmC,OAAO,IAAI;AAAA,QACzG;AAAA,QACA,OAAO;AAAA,SACR,OAAO,OAAO,OAAO,eAAe,MAAM,CAAC,CAAC;AAAA,IACnD,EACK;AAAA,MACD,OAAO;AAAA;AAAA;AAAA,EAGf,eAAe,CAAC,OAAO;AAAA,IACnB,OAAO,OAAO,UAAU,YAAY,UAAU;AAAA;AAAA,EAElD,QAAQ,CAAC,OAAO;AAAA,IACZ,OAAO,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,KAAK,UAAU;AAAA;AAAA,EAE3E,WAAW,CAAC,QAAQ;AAAA,IAChB,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,MACvB,OAAO,CAAC,GAAG,MAAM;AAAA,IACrB,EACK;AAAA,MACD,OAAO,KAAK,OAAO;AAAA;AAAA;AAAA,EAG3B,SAAS,CAAC,MAAM,eAAe,CAAC,GAAG;AAAA,IAC/B,OAAO,MAAM,IAAI,CAAC,QAAS,KAAK,QAAQ,QAAQ,GAAG,IAAI,KAAK,eAAe,GAAG,IAAI,GAAI;AAAA,IACtF,IAAI,KAAK,SAAS,sBAAsB,MAAM;AAAA,MAC1C,IAAI,KAAK,WAAW,KAAK,CAAC,MAAM,QAAQ,KAAK,EAAE,KAAK,KAAK,QAAQ,SAAS,KAAK,EAAE,MAAM,QAAQ,EAAE,KAAK,cAAc,OAAO;AAAA,QACvH,eAAe,OAAO,KAAK,OAAO,YAAY,KAAK,MAAM,OAAO,KAAK,KAAK,OAAO,aAAa,IAAI,EAAE,GAAG,KAAK,OAAO,aAAa;AAAA,MACpI,EACK;AAAA,QACD,eAAe,KAAK,iBAAiB,KAAK;AAAA;AAAA,IAElD,EACK;AAAA,MACD,eAAe;AAAA,WACR;AAAA,SACF,KAAK,SAAS,qBAAqB;AAAA,MACxC;AAAA;AAAA,IAEJ,OAAO;AAAA;AAAA,EAEX,WAAW,CAAC,OAAO;AAAA,IACf,MAAM,SAAS,IAAI,MAAM;AAAA,IACzB,OAAO,oBAAoB,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAAA,MAC/C,OAAO,OAAO,MAAM;AAAA,KACvB;AAAA,IACD,OAAO;AAAA;AAAA,EAEX,cAAc,CAAC,OAAO;AAAA,IAClB,OAAO;AAAA,MACH,aAAa;AAAA,MACb,MAAM,MAAM,QAAQ;AAAA,MACpB,SAAS,MAAM;AAAA,MACf,OAAO,KAAK,QAAQ,cAAc,KAAK;AAAA,IAC3C;AAAA;AAAA,EAEJ,gBAAgB,CAAC,QAAQ,YAAY,cAAc;AAAA,IAC/C,OAAO;AAAA,SACA;AAAA,OACF,KAAK,SAAS,eAAe,KAAK,QAAQ,QAAQ,YAAY,cAAc,KAAK,iBAAiB,KAAK,SAAS,8BAA8B,KAAK,SAAS,MAAM,KAAK,SAAS,WAAW;AAAA,IAChM;AAAA;AAAA,EAEJ,uBAAuB,CAAC,YAAY;AAAA,IAChC,IAAI,cAAc,MAAM;AAAA,MACpB,OAAO;AAAA,IACX;AAAA,IACA,IAAI,WAAW,KAAK,SAAS;AAAA,IAC7B,MAAM,oBAAoB,CAAC;AAAA,IAC3B,IAAI,SAAS,SAAS,oDAAoD,GAAG;AAAA,MACzE,WAAW,SAAS,QAAQ,sDAAsD,gBAAgB;AAAA,IACtG,EACK;AAAA,MACD,IAAI,KAAK,SAAS,sBAAsB,OAAO;AAAA,QAC3C,kBAAkB,UAAU,YAAY,MAAM,eAAe,KAAK;AAAA,QAClE,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,YAAY,GAAG,GAAG,CAAC;AAAA,QACpF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,WAAW,GAAG,CAAC;AAAA,QAChF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,YAAY,GAAG,CAAC;AAAA,QACjF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,cAAc,GAAG,CAAC;AAAA,QACnF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,cAAc,GAAG,CAAC;AAAA,QACnF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,mBAAmB,GAAG,CAAC;AAAA,MAC5F,EACK;AAAA,QACD,kBAAkB,UAAU,YAAY,MAAM,YAAY,KAAK;AAAA,QAC/D,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,SAAS,GAAG,GAAG,CAAC;AAAA,QACjF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,QAAQ,GAAG,CAAC;AAAA,QAC7E,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,SAAS,GAAG,CAAC;AAAA,QAC9E,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,WAAW,GAAG,CAAC;AAAA,QAChF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,WAAW,GAAG,CAAC;AAAA,QAChF,kBAAkB,QAAQ,qBAAqB,YAAY,MAAM,gBAAgB,GAAG,CAAC;AAAA;AAAA;AAAA,IAG7F,MAAM,yBAAyB,KAAK,SAAS,sBAAsB,QAAQ,YAAY,OAAO,IAAI,KAAK,YAAY,MAAM,QAAQ,IAAI,YAAY,MAAM,kBAAkB,IAAI,KAAK;AAAA,IAClL,kBAAkB,eAAe,wBAAwB,YAAY;AAAA,IACrE,kBAAkB,gBAAgB,wBAAwB,YAAY,EAAE,QAAQ,KAAK,GAAG,EAAE,QAAQ,KAAK,EAAE;AAAA,IACzG,kBAAkB,kBAAkB,YAAY;AAAA,IAChD,kBAAkB,sBAAsB,YAAY,MAAM,oBAAoB;AAAA,IAC9E,kBAAkB,sBAAsB,YAAY,MAAM,oBAAoB;AAAA,IAC9E,kBAAkB,kBAAkB,YAAY,MAAM,gBAAgB;AAAA,IACtE,IAAI,oBAAoB,KAAK,SAAS,aAAa,KAAK,KAAK,SAAS,+BAA+B;AAAA,IACrG,oBAAoB,qBAAqB,QAAQ,YAAY,QAAQ,OAAO,oBAAoB,KAAK,SAAS,kCAAkC;AAAA,IAChJ,kBAAkB,UAAU,YAAY,QAAQ,QAAQ,qBAAqB,QAAQ,qBAAqB,MAAM,YAAY,OAAa;AAAA,IACzI,kBAAkB,6BACd,kBAAkB,QAAQ,SAAS,IAAI,KAAK,SAAS,iCAAiC,kBAAkB,UAAU;AAAA,IACtH,kBAAkB,6BACd,kBAAkB,QAAQ,SAAS,IAAI,kBAAkB,UAAU,KAAK,SAAS,iCAAiC;AAAA,IACtH,IAAI,KAAK,SAAS,WAAW,mBAAmB,MAAM;AAAA,MAClD,KAAK,SAAS,WAAW,gBAAgB,YAAY,iBAAiB;AAAA,IAC1E;AAAA,IACA,OAAO,eAAe,KAAK,UAAU,UAAU,iBAAiB;AAAA;AAExE;;;AC7TO,MAAM,eAAe,WAAW;AAAA,EACnC,WAAW,CAAC,UAAU,QAAQ;AAAA,IAC1B,MAAM,YAAY,OAAO,WAAW,eAAe,OAAO,aAAa;AAAA,IACvE,MAAM,uBAAuB,YAAY,OAAO,WAAW,aAAa,OAAO,QAAQ,aAAa,OAAO,IAAI,SAAS,SAAS,OAAO,IAAI;AAAA,IAC5I,MAAM,WAAW,YAAY,iCAAiC,KAAK,UAAU,SAAS,IAAI;AAAA,IAC1F,WAAW,YAAY,CAAC;AAAA,IACxB,SAAS,kBAAkB,SAAS,mBAAmB,aAAa,CAAC,uBAAuB,QAAQ,SAAS;AAAA,IAC7G,MAAM,UAAU,QAAQ,WAAW,IAAI,CAAC;AAAA;AAAA,EAE5C,GAAG,CAAC,YAAY,iBAAiB,MAAM;AAAA,IACnC,OAAO,MAAM,IAAI,YAAY,cAAc,GAAG,IAAI;AAAA;AAAA,EAEtD,KAAK,IAAI,MAAM;AAAA,IACX,OAAO,MAAM,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA;AAAA,EAExC,KAAK,IAAI,MAAM;AAAA,IACX,OAAO,MAAM,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA;AAAA,EAExC,KAAK,IAAI,MAAM;AAAA,IACX,OAAO,MAAM,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA;AAAA,EAExC,IAAI,IAAI,MAAM;AAAA,IACV,OAAO,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI;AAAA;AAAA,EAEvC,IAAI,IAAI,MAAM;AAAA,IACV,OAAO,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI;AAAA;AAAA,EAEvC,KAAK,IAAI,MAAM;AAAA,IACX,OAAO,MAAM,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA;AAAA,EAExC,KAAK,IAAI,MAAM;AAAA,IACX,OAAO,MAAM,IAAI,GAAG,SAAS,GAAG,IAAI;AAAA;AAAA,EAExC,YAAY,CAAC,UAAU,QAAQ;AAAA,IAC3B,OAAO,MAAM,aAAa,UAAU,MAAM;AAAA;AAElD;;;AChCA,IAAM,cAAc,IAAI,OAAO;AAAA,EAC9B,MAAuD;AAAA,EACvD,iBAAiB;AAAA,EACjB,UAAU,QAAQ,IAAI,cAAc,UAAU,IAAI;AACnD,CAAC;AAED,IAAM,aAAa,IAAI,SAAS;AAAA,EAC/B,WAAW,CAAC,IAAI,eAAe,EAAE,IAAI,SAAS,QAAQ,YAAY,CAAC,CAAC;AAAA,EACpE,SAAS,CAAC,oBAAoB,CAAC;AAAA,EAC/B,iBAAiB;AAClB,CAAC;AAiBD,IAAI,QAAQ,IAAI,cAAc,SAAS;AAAA,EACtC,WAAW,SAAS,MAAM;AAC3B;;;AnB5BO,IAAM,gCAAgC;AACtC,IAAM,qBAAqB;AAE3B,IAAM,kBAAkB,CAAC,eAAe,cAAc;AACtD,IAAM,yBAAyB;AAAA,EACrC,GAAG;AAAA,EACH;AACD;AACO,IAAM,gBAAgB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AACO,IAAM,eAAe;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAsBA,IAAM,kBAAkB,IAAI,IAAI;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAOM,SAAS,gBAAgB,CAAC,OAAuB;AAAA,EACvD,IAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAAA,IAC5B,MAAM,IAAI,MAAM,kCAAkC;AAAA,EACnD;AAAA,EACA,IAAI,OAAO,GAAG,OAAO,EAAE,GAAG;AAAA,IACzB,OAAO;AAAA,EACR;AAAA,EACA,MAAM,WAAW,OAAO,KAAK,EAAE,YAAY;AAAA,EAC3C,IAAI,CAAC,SAAS,SAAS,GAAG,GAAG;AAAA,IAC5B,OAAO;AAAA,EACR;AAAA,EACA,OAAO,cAAc,KAAK,eAAe,OAAO,SAAS,MAAM,GAAG;AAAA,EAClE,MAAM,WAAW,OAAO,SAAS,cAAc,EAAE;AAAA,EACjD,MAAM,WAAW,YAAY,WAAW,GAAG;AAAA,EAC3C,MAAM,WAAW,WAAW,YAAY,MAAM,CAAC,IAAI;AAAA,EACnD,OAAO,UAAU,KAAK,WAAW,MAAM,SAAS,MAAM,GAAG;AAAA,EACzD,MAAM,SAAS,GAAG,UAAU;AAAA,EAC5B,MAAM,eAAe,QAAQ,SAAS;AAAA,EACtC,IAAI;AAAA,EACJ,IAAI,gBAAgB,GAAG;AAAA,IACtB,SAAS,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI;AAAA,EAC3C,EAAO,SAAI,gBAAgB,OAAO,QAAQ;AAAA,IACzC,SAAS,GAAG,SAAS,IAAI,OAAO,eAAe,OAAO,MAAM;AAAA,EAC7D,EAAO;AAAA,IACN,SAAS,GAAG,OAAO,MAAM,GAAG,YAAY,KAAK,OAAO,MAAM,YAAY;AAAA;AAAA,EAEvE,OAAO,WAAW,IAAI,WAAW;AAAA;AAKlC,SAAS,cAAc,CACtB,OACA,OACA,MACA,eACO;AAAA,EACP,IAAI,UAAU,MAAM;AAAA,IACnB,KAAK,MAAM;AAAA,IACX;AAAA,EACD;AAAA,EACA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,KAAK,KAAK,UAAU,KAAK,CAAC;AAAA,IAC1B;AAAA,EACD;AAAA,EACA,IAAI,OAAO,UAAU,WAAW;AAAA,IAC/B,KAAK,QAAQ,SAAS,OAAO;AAAA,IAC7B;AAAA,EACD;AAAA,EACA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,KAAK,iBAAiB,KAAK,CAAC;AAAA,IAC5B;AAAA,EACD;AAAA,EACA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,KAAK,MAAM,SAAS,EAAE,CAAC;AAAA,IACvB;AAAA,EACD;AAAA,EACA,IAAI,iBAAiB,MAAM;AAAA,IAC1B,IAAI,OAAO,MAAM,MAAM,QAAQ,CAAC,GAAG;AAAA,MAClC,MAAM,IAAI,MAAM,oCAAoC;AAAA,IACrD;AAAA,IACA,KAAK,MAAM,QAAQ,EAAE,SAAS,EAAE,CAAC;AAAA,IACjC;AAAA,EACD;AAAA,EACA,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACzB,IAAI,MAAM,IAAI,KAAK;AAAA,MAAG,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACxE,MAAM,IAAI,KAAK;AAAA,IACf,KAAK,GAAG;AAAA,IACR,SAAS,QAAQ,EAAG,QAAQ,MAAM,QAAQ,SAAS,GAAG;AAAA,MACrD,IAAI,QAAQ;AAAA,QAAG,KAAK,GAAG;AAAA,MACvB,MAAM,QAAQ,MAAM;AAAA,MACpB,IAAI,UAAU;AAAA,QAAW,KAAK,MAAM;AAAA,MAC/B;AAAA,uBAAe,OAAO,OAAO,MAAM,aAAa;AAAA,IACtD;AAAA,IACA,KAAK,GAAG;AAAA,IACR,MAAM,OAAO,KAAK;AAAA,IAClB;AAAA,EACD;AAAA,EACA,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,IAAI,MAAM,IAAI,KAAK;AAAA,MAAG,MAAM,IAAI,MAAM,kCAAkC;AAAA,IACxE,MAAM,IAAI,KAAK;AAAA,IACf,MAAM,UAAU,OAAO,QAAQ,KAAgC,EAC7D,OACA,EAAE,KAAK,WACN,UAAU,cAAc,CAAC,iBAAiB,CAAC,gBAAgB,IAAI,GAAG,EACpE,EACC,KAAK,EAAE,QAAQ,WAAW,KAAK,cAAc,KAAK,CAAC;AAAA,IACrD,KAAK,GAAG;AAAA,IACR,SAAS,QAAQ,EAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,MACvD,IAAI,QAAQ;AAAA,QAAG,KAAK,GAAG;AAAA,MACvB,OAAO,KAAK,SAAS,QAAQ;AAAA,MAC7B,KAAK,KAAK,UAAU,GAAG,CAAC;AAAA,MACxB,KAAK,GAAG;AAAA,MACR,eAAe,OAAO,OAAO,MAAM,aAAa;AAAA,IACjD;AAAA,IACA,KAAK,GAAG;AAAA,IACR,MAAM,OAAO,KAAK;AAAA,IAClB;AAAA,EACD;AAAA,EACA,MAAM,IAAI,MAAM,qCAAqC,OAAO,OAAO;AAAA;AAG7D,SAAS,kBAAkB,CAAC,OAAwB;AAAA,EAC1D,MAAM,SAAmB,CAAC;AAAA,EAC1B,eAAe,OAAO,IAAI,KAAO,CAAC,UAAU,OAAO,KAAK,KAAK,GAAG,KAAK;AAAA,EACrE,OAAO,OAAO,KAAK,EAAE;AAAA;AAGf,SAAS,eAAe,CAAC,OAAwB;AAAA,EACvD,MAAM,OAAO,WAAW,QAAQ;AAAA,EAChC,IAAI,UAAU;AAAA,EACd,eACC,OACA,IAAI,KACJ,CAAC,UAAU;AAAA,IACV,WAAW;AAAA,IACX,IAAI,QAAQ,UAAU,KAAK,MAAM;AAAA,MAChC,KAAK,OAAO,OAAO;AAAA,MACnB,UAAU;AAAA,IACX;AAAA,KAED,IACD;AAAA,EACA,IAAI;AAAA,IAAS,KAAK,OAAO,OAAO;AAAA,EAChC,OAAO,KAAK,OAAO,KAAK;AAAA;AAGlB,SAAS,oBAAoB,CAAC,OAAgB,OAAuB;AAAA,EAC3E,IAAI;AAAA,EACJ,IAAI,iBAAiB,MAAM;AAAA,IAC1B,YAAY,MAAM,QAAQ;AAAA,EAC3B,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,IACrC,YAAY;AAAA,EACb,EAAO,SAAI,OAAO,UAAU,YAAY,QAAQ,KAAK,MAAM,KAAK,CAAC,GAAG;AAAA,IACnE,YAAY,OAAO,MAAM,KAAK,CAAC;AAAA,EAChC,EAAO,SAAI,OAAO,UAAU,UAAU;AAAA,IACrC,YAAY,KAAK,MAAM,KAAK;AAAA,EAC7B,EAAO;AAAA,IACN,YAAY,OAAO;AAAA;AAAA,EAEpB,IAAI,CAAC,OAAO,cAAc,SAAS,KAAK,YAAY,GAAG;AAAA,IACtD,MAAM,IAAI,MAAM,GAAG,oDAAoD;AAAA,EACxE;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,oBAAoB,CAAC,UAAqC;AAAA,EAClE,IAAI,CAAE,uBAA6C,SAAS,SAAQ,MAAM,GAAG;AAAA,IAC5E,MAAM,IAAI,MAAM,+BAA+B,SAAQ,QAAQ;AAAA,EAChE;AAAA,EACA,IAAI,CAAE,cAAoC,SAAS,SAAQ,IAAI,GAAG;AAAA,IACjE,MAAM,IAAI,MAAM,6BAA6B,SAAQ,MAAM;AAAA,EAC5D;AAAA,EACA,IAAI,CAAE,aAAmC,SAAS,SAAQ,UAAU,GAAG;AAAA,IACtE,MAAM,IAAI,MAAM,4BAA4B,SAAQ,YAAY;AAAA,EACjE;AAAA,EACA,YAAY,OAAO,UAAU;AAAA,IAC5B,CAAC,iBAAiB,SAAQ,YAAY;AAAA,IACtC,CAAC,qBAAqB,SAAQ,eAAe;AAAA,IAC7C,CAAC,YAAY,SAAQ,QAAQ;AAAA,IAC7B,CAAC,UAAU,SAAQ,MAAM;AAAA,IACzB,CAAC,YAAY,SAAQ,QAAQ;AAAA,EAC9B,GAAY;AAAA,IACX,IAAI,CAAC,MAAM,KAAK;AAAA,MAAG,MAAM,IAAI,MAAM,GAAG,yBAAyB;AAAA,EAChE;AAAA;AA6CM,SAAS,iBAAiB,CAChC,UACA,YAC0B;AAAA,EAC1B,qBAAqB,QAAO;AAAA,EAC5B,OAAO;AAAA,IACN,QAAQ,SAAQ;AAAA,IAChB,eAAe,SAAQ;AAAA,IACvB,mBAAmB,SAAQ;AAAA,IAC3B,UAAU,SAAQ,SAAS,KAAK,EAAE,YAAY;AAAA,IAC9C,QAAQ,SAAQ,OAAO,KAAK;AAAA,IAC5B,cACC,SAAQ,aAAa,KAAK,KAAK,SAAQ,OAAO,KAAK,EAAE,QAAQ,KAAK,GAAG;AAAA,IACtE,eAAe,SAAQ,cAAc,KAAK,KAAK,SAAQ,OAAO,KAAK;AAAA,IACnE,YAAY,SAAQ;AAAA,IACpB,MAAM,SAAQ;AAAA,IACd,UAAU,SAAQ;AAAA,IAClB,aAAa,SAAQ;AAAA,IACrB,gBAAgB,WAAW;AAAA,IAC3B,kBAAkB,WAAW;AAAA,IAC7B,gBAAgB,WAAW;AAAA,IAC3B,mBAAmB,WAAW;AAAA,IAC9B,gBAAgB,SAAQ;AAAA,IACxB,oBAAoB,SAAQ;AAAA,IAC5B,cAAc,WAAW;AAAA,IACzB,qBAAqB,SAAQ,qBAAqB,IAAI;AAAA,EACvD;AAAA;;;AoB5SD,uBAAS;;;ACAT,SAAS,gBAAiB,CAAC,OAAO;AAAA,EAChC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,WAAW,CAAC;AAAA,IAE/B,IAAI,QAAQ,SAAU,QAAQ,OAAQ;AAAA,MACpC,IAAI,MAAM,MAAM,SAAS,GAAG;AAAA,QAC1B,OAAO;AAAA,MACT;AAAA,MACA,MAAM,OAAO,MAAM,WAAW,IAAI,CAAC;AAAA,MACnC,IAAI,EAAE,QAAQ,SAAU,QAAQ,QAAS;AAAA,QACvC,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,EAAO,SAAI,QAAQ,SAAU,QAAQ,OAAQ;AAAA,MAC3C,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAGT,SAAwB,YAAa,CAAC,QAAQ,OAAO,IAAI,KAAO;AAAA,EAC9D,IAAI,OAAO,WAAW,YAAY,MAAM,MAAM,GAAG;AAAA,IAC/C,MAAM,IAAI,MAAM,oBAAoB;AAAA,EACtC;AAAA,EAEA,IAAI,OAAO,WAAW,YAAY,CAAC,SAAS,MAAM,GAAG;AAAA,IACnD,MAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAAA,EAEA,IAAI,OAAO,WAAW,YAAY,iBAAiB,MAAM,GAAG;AAAA,IAC1D,MAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAAA,EAEA,IAAI,WAAW,QAAQ,OAAO,WAAW,UAAU;AAAA,IACjD,OAAO,KAAK,UAAU,MAAM;AAAA,EAC9B;AAAA,EAEA,IAAI,OAAO,OAAO,WAAW,YAAY;AAAA,IACvC,IAAI,KAAK,IAAI,MAAM,GAAG;AAAA,MACpB,MAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAAA,IACA,KAAK,IAAI,MAAM;AAAA,IACf,MAAM,UAAS,aAAa,OAAO,OAAO,GAAG,IAAI;AAAA,IACjD,KAAK,OAAO,MAAM;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,KAAK,IAAI,MAAM,GAAG;AAAA,IACpB,MAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAAA,EACA,KAAK,IAAI,MAAM;AAAA,EAEf,IAAI;AAAA,EACJ,IAAI,MAAM,QAAQ,MAAM,GAAG;AAAA,IACzB,MAAM,SAAS,OAAO,IAAI,CAAC,OAAO;AAAA,MAChC,MAAM,QAAQ,OAAO,aAAa,OAAO,OAAO,WAAW,OAAO;AAAA,MAClE,OAAO,aAAa,OAAO,IAAI;AAAA,KAChC;AAAA,IACD,SAAS,IAAI,OAAO,KAAK,GAAG;AAAA,EAC9B,EAAO;AAAA,IACL,MAAM,QAAQ,CAAC;AAAA,IACf,WAAW,OAAO,OAAO,KAAK,MAAM,EAAE,KAAK,GAAG;AAAA,MAC5C,IAAI,OAAO,SAAS,aAAa,OAAO,OAAO,SAAS,UAAU;AAAA,QAChE;AAAA,MACF;AAAA,MACA,MAAM,KAAK,GAAG,aAAa,GAAG,KAAK,aAAa,OAAO,MAAM,IAAI,GAAG;AAAA,IACtE;AAAA,IACA,SAAS,IAAI,MAAM,KAAK,GAAG;AAAA;AAAA,EAG7B,KAAK,OAAO,MAAM;AAAA,EAClB,OAAO;AAAA;;;AD/DF,SAAS,eAAe,CAAC,OAAwB;AAAA,EACvD,MAAM,WAAW,aAAa,KAAK;AAAA,EACnC,IAAI,aAAa,WAAW;AAAA,IAC3B,MAAM,IAAI,UAAU,6CAA6C;AAAA,EAClE;AAAA,EACA,OAAO;AAAA;AAGD,SAAS,SAAS,CAAC,OAAwB;AAAA,EACjD,OAAO,YAAW,QAAQ,EACxB,OAAO,gBAAgB,KAAK,GAAG,MAAM,EACrC,OAAO,KAAK;AAAA;AAGR,SAAS,gBAAmD,CAClE,WACA,aAC6C;AAAA,EAC7C,OAAO,OAAO,YACb,OAAO,QAAQ,SAAQ,EAAE,OAAO,EAAE,SAAS,QAAQ,WAAW,CAC/D;AAAA;AAIM,SAAS,cAAiD,CAChE,WACA,aACS;AAAA,EACT,OAAO,UAAU,iBAAiB,WAAU,WAAW,CAAC;AAAA;AAGlD,SAAS,oBAAuD,CACtE,WACA,aACO;AAAA,EACP,MAAM,WAAW,UAAS,OAAO,WAAW;AAAA,EAC5C,IACC,OAAO,aAAa,YACpB,aAAa,eAAe,WAAU,WAAW,GAChD;AAAA,IACD,MAAM,IAAI,MACT,GAAG,OAAO,WAAW,4CACtB;AAAA,EACD;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AE5CM,IAAM,uBACZ;AACM,IAAM,qBACZ;AACM,IAAM,oBAAoB;AAC1B,IAAM,wBACZ;AAED;AAAA,EACC,eAAe;AAAA,KACZ;AAAA,IACA;AACJ,IACC,wBAAwB,cAAc,wBACtC,UAAU,uBAAuB,MAAM,gCACtC;AAAA,EACD,MAAM,IAAI,MAAM,qDAAqD;AACtE;AAEO,IAAM,oBAAoB,OAAO,OAAO;AAAA,KAC3C;AAAA,EACH,WAAW;AAAA,EACX,eAAe;AAChB,CAAC;AAED;AAAA,EACC,eAAe;AAAA,KACZ;AAAA,IACA;AACJ,IACC,sBAAsB,cAAc,sBACpC,UAAU,qBAAqB,MAAM,8BACpC;AAAA,EACD,MAAM,IAAI,MAAM,mDAAmD;AACpE;AAEO,IAAM,kBAAkB,OAAO,OAAO;AAAA,KACzC;AAAA,EACH,WAAW;AAAA,EACX,eAAe;AAChB,CAAC;AAEM,IAAM,+BAA+B,OAAO,OAAO;AAAA,EACzD,WAAW;AAAA,EACX,eAAe,UAAU,wBAAwB,cAAc;AAChE,CAAC;AAEM,IAAM,mCAAmC,OAAO,OAAO;AAAA,EAC7D,WAAW;AAAA,EACX,eAAe,UAAU,wBAAwB,kBAAkB;AACpE,CAAC;AAOM,SAAS,4BAA4B,CAC3C,QACO;AAAA,EACP,IAAI,eAAe,QAAQ,eAAe,MAAM,OAAO,eAAe;AAAA,IACrE,MAAM,IAAI,MAAM,sDAAsD;AAAA,EACvE;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AvBjDM,IAAM,6BAA6B,uBAAkB;AACrD,IAAM,2BAA2B,8BAAwB;AACzD,IAAM,8BAA8B,iCAA2B;AAC/D,IAAM,8BAA8B,iCAA2B;AAyJ/D,IAAM,0BAA0B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAAA;AAqBO,MAAM,uCAAuC,MAAM;AAAA,EAE/C;AAAA,EADV,WAAW,CACD,eACT,SACC;AAAA,IACD,MAAM,OAAO;AAAA,IAHJ;AAAA,IAIT,KAAK,OAAO;AAAA;AAEd;AAEA,SAAS,iBAAiB,CAAC,QAAkD;AAAA,EAC5E,QAAQ,UAAU,CAAC,GACjB,IACA,CAAC,UACA,GAAG,MAAM,gBAAgB,OAAO,MAAM,WAAW,cACnD,EACC,KAAK,IAAI;AAAA;AAGZ,SAAS,KAAQ,CAChB,UACA,UACW;AAAA,EACX,OAAO;AAAA,IACN,MAAM,CAAC,OAAmB;AAAA,MACzB,IAAI,CAAC,SAAS,KAAK,GAAG;AAAA,QACrB,MAAM,IAAI,MACT,kCAAkC,kBAAkB,SAAS,MAAM,GACpE;AAAA,MACD;AAAA,MACA,WAAW,KAAU;AAAA,MACrB,OAAO;AAAA;AAAA,IAER,EAAE,CAAC,OAA4B;AAAA,MAC9B,IAAI,CAAC,SAAS,KAAK;AAAA,QAAG,OAAO;AAAA,MAC7B,IAAI;AAAA,QACH,WAAW,KAAU;AAAA,QACrB,OAAO;AAAA,QACN,MAAM;AAAA,QACP,OAAO;AAAA;AAAA;AAAA,EAGV;AAAA;AAGD,SAAS,gBAAgB,CAAC,OAAe,OAAuB;AAAA,EAC/D,MAAM,SAAS,KAAK,MAAM,KAAK;AAAA,EAC/B,IACC,CAAC,OAAO,cAAc,MAAM,KAC5B,IAAI,KAAK,MAAM,EAAE,YAAY,MAAM,OAClC;AAAA,IACD,MAAM,IAAI,MAAM,GAAG,4CAA4C;AAAA,EAChE;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,wBAAwB,CAChC,UACA,OACO;AAAA,EACP,IACC,iBAAiB,SAAS,QAAQ,GAAG,cAAc,KACnD,iBAAiB,SAAS,UAAU,GAAG,gBAAgB,GACtD;AAAA,IACD,MAAM,IAAI,MAAM,GAAG,gDAAgD;AAAA,EACpE;AAAA;AAGD,IAAM,MAAM,IAAI,qBAAQ,EAAE,WAAW,MAAM,QAAQ,KAAK,CAAC;AACzD,IAAI,UAAU,gCAA0B;AACxC,IAAI,UAAU,gCAA0B;AACxC,IAAM,wBAAwB,IAAI,QAAQ,6BAAuB;AACjE,IAAM,2BAA2B,IAAI,UAAU,2BAA2B;AAC1E,IAAM,2BAA2B,IAAI,UAAU,2BAA2B;AAC1E,IAAM,0BAA0B,IAAI,QAAQ,sBAAiB;AAC7D,IAAI,CAAC,4BAA4B,CAAC,0BAA0B;AAAA,EAC3D,MAAM,IAAI,MAAM,iDAAiD;AAClE;AAEO,IAAM,qBAAqB,MACjC,uBACA,CAAC,UAAU;AAAA,EACV,qBAAqB,OAAO,cAAc;AAAA,EAC1C,IAAI,WAAW;AAAA,EACf,MAAM,YAAY,IAAI;AAAA,EACtB,YAAY,OAAO,WAAW,MAAM,QAAQ,QAAQ,GAAG;AAAA,IACtD,MAAM,KAAK,iBACV,OAAO,WACP,WAAW,kBACZ;AAAA,IACA,IAAI,MAAM;AAAA,MACT,MAAM,IAAI,MAAM,oDAAoD;AAAA,IACrE,IAAI,UAAU,IAAI,OAAO,SAAS;AAAA,MACjC,MAAM,IAAI,MAAM,0CAA0C;AAAA,IAC3D,UAAU,IAAI,OAAO,SAAS;AAAA,IAC9B,WAAW;AAAA,EACZ;AAAA,CAEF;AAEO,IAAM,wBAAwB,MACpC,0BACA,CAAC,cAAc;AAAA,EACd,qBAAqB,WAAW,kBAAkB;AAAA,EAClD,UAAU,oBAAoB,QAAQ,CAAC,UAAU,UAAU;AAAA,IAC1D,yBAAyB,UAAU,uBAAuB,QAAQ;AAAA,GAClE;AAAA,EACD,UAAU,mBAAmB,QAAQ,CAAC,UAAU,UAAU;AAAA,IACzD,yBAAyB,UAAU,sBAAsB,QAAQ;AAAA,GACjE;AAAA,EACD,UAAU,QAAQ,QAAQ,CAAC,QAAQ,UAAU;AAAA,IAC5C,yBAAyB,OAAO,UAAU,WAAW,iBAAiB;AAAA,GACtE;AAAA,EACD,IACC,UAAU,mBAAmB,aAC7B,UAAU,mBAAmB,WAAW,GACvC;AAAA,IACD,MAAM,IAAI,MAAM,qDAAqD;AAAA,EACtE;AAAA,CAEF;AAEA,SAAS,uBAAuB,CAC/B,SAC0B;AAAA,EAC1B,OAAO,OAAO,YACb,OAAO,QAAQ,OAAO,EAAE,OACvB,EAAE,SACD,QAAQ,gBACR,QAAQ,+BACR,QAAQ,aACV,CACD;AAAA;AAGM,SAAS,uBAAuB,CACtC,SAOS;AAAA,EACT,OAAO,UAAU,wBAAwB,OAA+B,CAAC;AAAA;AAGnE,IAAM,wBAAwB,MACpC,0BACA,CAAC,YAAY;AAAA,EACZ,yBAAyB,QAAQ,QAAQ,QAAQ;AAAA,EACjD,IACC,wBAAwB,OAAO,MAAM,QAAQ,2BAC5C;AAAA,IACD,MAAM,IAAI,MACT,mEACD;AAAA,EACD;AAAA,EACA,qBAAqB,SAAS,YAAY;AAAA,CAE5C;AAEA,SAAS,6BAA6B,CACrC,SAGC;AAAA,EACD,OAAO;AAAA,IACN,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,IAChB,OAAO,QAAQ;AAAA,IACf,mBAAmB,QAAQ;AAAA,IAC3B,uBAAuB,QAAQ,eAAe;AAAA,IAC9C,iBAAiB,QAAQ;AAAA,IACzB,eAAe,QAAQ;AAAA,IACvB,2BAA2B,QAAQ;AAAA,IACnC,QAAQ,QAAQ;AAAA,EACjB;AAAA;AAGM,IAAM,uBAAuB;AAAA,EACnC,MAAM,CAAC,OAA+C;AAAA,IACrD,IAAI,CAAC,wBAAwB,KAAK,GAAG;AAAA,MACpC,MAAM,IAAI,MACT,kCAAkC,kBAAkB,wBAAwB,MAAM,GACnF;AAAA,IACD;AAAA,IACA,MAAM,UAAU;AAAA,IAChB,sBAAsB,OAAO,QAAQ,iBAAiB;AAAA,IACtD,yBAAyB,QAAQ,QAAQ,QAAQ;AAAA,IACjD,IAAI,QAAQ,oBAAoB,6BAA6B,OAAO,GAAG;AAAA,MACtE,MAAM,IAAI,MACT,0DACD;AAAA,IACD;AAAA,IACA,IACC,QAAQ,aAAa,kBAAkB,cACtC,kBAAkB,aACnB,QAAQ,aAAa,kBAAkB,kBACtC,kBAAkB,iBACnB,QAAQ,aAAa,gBAAgB,cACpC,gBAAgB,aACjB,QAAQ,aAAa,gBAAgB,kBACpC,gBAAgB,eAChB;AAAA,MACD,MAAM,IAAI,+BACT,iCACA,0EACD;AAAA,IACD;AAAA,IACA,IACC,QAAQ,eAAe,aACtB,QAAQ,kBAAkB,eAAe,YAC1C,QAAQ,eAAe,iBACtB,QAAQ,kBAAkB,eAAe,gBAC1C,QAAQ,eAAe,gBACtB,QAAQ,kBAAkB,eAAe,aACzC;AAAA,MACD,MAAM,IAAI,MACT,mEACD;AAAA,IACD;AAAA,IACA,IACC,UAAU,QAAQ,KAAK,MAAM,UAAU,QAAQ,kBAAkB,KAAK,GACrE;AAAA,MACD,MAAM,IAAI,MAAM,gDAAgD;AAAA,IACjE;AAAA,IACA,IACC,UAAU,QAAQ,eAAe,MACjC,UAAU,QAAQ,kBAAkB,eAAe,GAClD;AAAA,MACD,MAAM,IAAI,MACT,0DACD;AAAA,IACD;AAAA,IACA,IAAI,QAAQ,kBAAkB,QAAQ,kBAAkB,eAAe;AAAA,MACtE,MAAM,IAAI,MAAM,wDAAwD;AAAA,IACzE;AAAA,IACA,OAAO,EAAE,MAAM,QAAQ;AAAA;AAAA,EAExB,EAAE,CAAC,OAA8C;AAAA,IAChD,IAAI;AAAA,MACH,KAAK,OAAO,KAAK;AAAA,MACjB,OAAO;AAAA,MACN,MAAM;AAAA,MACP,OAAO;AAAA;AAAA;AAGV;AAEO,SAAS,qBAAqB,CACpC,OACoB;AAAA,EACpB,OAAO,mBAAmB,OAAO;AAAA,OAC7B;AAAA,IACH,cAAc,eAAe,OAAO,cAAc;AAAA,EACnD,CAAC;AAAA;AAGK,SAAS,wBAAwB,CACvC,WACuB;AAAA,EACvB,OAAO,sBAAsB,OAAO;AAAA,OAChC;AAAA,IACH,kBAAkB,eAAe,WAAW,kBAAkB;AAAA,EAC/D,CAAC;AAAA;AAGK,IAAM,kCACZ;AACM,IAAM,oCACZ;AACM,IAAM,2BAA2B;AACjC,IAAM,gCACZ;AACM,IAAM,mCACZ;AAED,IAAM,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AACxC,IAAM,SAAS,EAAE,OAAO,EAAE,MAAM,gBAAgB;AAChD,IAAM,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,OAAO,gBAAgB;AAEvE,IAAM,wBAAwB,EACnC,OAAO;AAAA,EACP,eAAe,EAAE,QAAQ,+BAA+B;AAAA,EACxD,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,gBAAgB,EACd,OAAO;AAAA,IACP,UAAU,EAAE,QAAQ,eAAe;AAAA,IACnC,wBAAwB,EAAE,MAAM,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE;AAAA,EACxD,CAAC,EACA,OAAO;AAAA,EACT,OAAO,EACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,IACb,cAAc;AAAA,IACd,YAAY,EAAE,KAAK,CAAC,QAAQ,QAAQ,QAAQ,CAAC;AAAA,IAC7C,MAAM,EAAE,QAAQ,WAAW;AAAA,EAC5B,CAAC,EACA,OAAO;AAAA,EACT,QAAQ,EACN,OAAO,EAAE,aAAa,aAAa,WAAW,YAAY,CAAC,EAC3D,OAAO,EACP,OAAO,GAAG,aAAa,gBAAgB,YAAY,aAAa;AAAA,IAChE,SAAS;AAAA,EACV,CAAC;AAAA,EACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,kBAAkB,EAAE,KAAK;AAAA,IACxB;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,wBAAwB,EAAE,MAAM,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,GAAO;AAAA,EAC/D,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,QAAU;AAAA,EAChE,cAAc,EAAE,KAAK,CAAC,wBAAwB,WAAW,CAAC;AAAA,EAC1D,SAAS,EACP,OAAO;AAAA,IACP,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAM;AAAA,IAC5C,UAAU,EACR,OAAO,EACP,IAAI,EACJ,IAAI,CAAC,EACL,IAAI,MAAM,OAAO,OAAO,IAAI;AAAA,IAC9B,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAa;AAAA,IAClD,eAAe,EACb,OAAO,EACP,IAAI,EACJ,IAAI,CAAC,EACL,IAAI,KAAK,KAAK,KAAK,IAAK;AAAA,IAC1B,uBAAuB,EACrB,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,IAAI,IAAI,KAAK,KAAK,KAAK,IAAK;AAAA,EAC/B,CAAC,EACA,OAAO;AAAA,EACT,iBAAiB,EACf,OAAO;AAAA,IACP,aAAa,EAAE,QAAQ,uBAAuB;AAAA,IAC9C,gBAAgB,SAAS,SAAS;AAAA,IAClC,wBAAwB;AAAA,IACxB,mBAAmB,EAAE,QAAQ,0BAA0B;AAAA,EACxD,CAAC,EACA,OAAO;AACV,CAAC,EACA,OAAO,EACP,YAAY,CAAC,SAAS,aAAY;AAAA,EAClC,MAAM,UAAU,QAAQ;AAAA,EACxB,SAAS,QAAQ,EAAG,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AAAA,IACvD,MAAM,SAAS,QAAQ;AAAA,IACvB,IACC,SAAS,QAAQ,OAAO,eACxB,UAAU,QAAQ,OAAO,WACxB;AAAA,MACD,SAAQ,SAAS;AAAA,QAChB,MAAM;AAAA,QACN,MAAM,CAAC,0BAA0B,KAAK;AAAA,QACtC,SAAS;AAAA,MACV,CAAC;AAAA,IACF;AAAA,IACA,IAAI,QAAQ,KAAK,UAAW,QAAQ,QAAQ,IAAe;AAAA,MAC1D,SAAQ,SAAS;AAAA,QAChB,MAAM;AAAA,QACN,MAAM,CAAC,0BAA0B,KAAK;AAAA,QACtC,SAAS;AAAA,MACV,CAAC;AAAA,IACF;AAAA,EACD;AAAA,CACA;AAsBK,SAAS,0BAA0B,CAAC,OAGP;AAAA,EACnC,QAAQ,SAAS,qBAAqB,OAAO,MAAM,OAAO;AAAA,EAC1D,MAAM,gBAAgB,mBAAmB,OAAO,MAAM,aAAa;AAAA,EACnE,IACC,cAAc,aAAa,KAAK,eAAe,YAC/C,cAAc,iBAAiB,KAAK,eAAe,gBACnD,cAAc,QAAQ,WAAW,KAAK,eAAe,aACpD;AAAA,IACD,MAAM,IAAI,MAAM,yDAAyD;AAAA,EAC1E;AAAA,EACA,MAAM,cAAc,iBAAiB,KAAK,OAAO,UAAU,iBAAiB;AAAA,EAC5E,MAAM,YAAY,iBAAiB,KAAK,OAAO,QAAQ,eAAe;AAAA,EACtE,MAAM,yBAAyB,cAAc,QAAQ,IAAI,CAAC,QAAQ,UAAU;AAAA,IAC3E,MAAM,eAAe,iBACpB,OAAO,WACP,0BAA0B,kBAC3B;AAAA,IACA,IAAI,eAAe,eAAe,gBAAgB,WAAW;AAAA,MAC5D,MAAM,IAAI,MAAM,iDAAiD;AAAA,IAClE;AAAA,IACA,OAAO;AAAA,GACP;AAAA,EACD,MAAM,oBAAoB,kBAAkB,SAAS,KACpD,CAAC,YACA,QAAQ,aAAa,KAAK,MAAM,YAChC,QAAQ,gBAAgB,KAAK,MAAM,eACnC,QAAQ,SAAS,KAAK,MAAM,QAC5B,QAAQ,2BAA2B,KAAK,MAAM,YAChD;AAAA,EACA,OAAO;AAAA,IACN,eAAe;AAAA,IACf,WAAW,KAAK;AAAA,IAChB,gBAAgB,KAAK;AAAA,IACrB,gBAAgB;AAAA,MACf,UAAU;AAAA,MACV,wBAAwB;AAAA,QACvB,kBAAkB,eAAe;AAAA,MAClC;AAAA,IACD;AAAA,IACA,OAAO;AAAA,MACN,UAAU,KAAK,MAAM;AAAA,MACrB,aAAa,KAAK,MAAM;AAAA,MACxB,cACC,mBAAmB,mBAAmB,KAAK,MAAM;AAAA,MAClD,YAAY,KAAK,MAAM;AAAA,MACvB,MAAM,KAAK,MAAM;AAAA,IAClB;AAAA,IACA,QAAQ,EAAE,aAAa,UAAU;AAAA,IACjC,OAAO,KAAK;AAAA,IACZ,kBAAkB,KAAK;AAAA,IACvB;AAAA,IACA,mBAAmB,KAAK,gBAAgB;AAAA,IACxC,cAAc,KAAK;AAAA,IACnB,SAAS;AAAA,MACR,UAAU,gBAAgB,OAAO;AAAA,MACjC,UAAU,gBAAgB,OAAO;AAAA,MACjC,SAAS,gBAAgB,OAAO;AAAA,MAChC,eAAe,gBAAgB,OAAO;AAAA,MACtC,uBAAuB,KAAK,IAC3B,gBAAgB,OAAO,0BACvB,kBAAkB,mBAAmB,0BACtC;AAAA,IACD;AAAA,IACA,iBAAiB;AAAA,MAChB,aAAa;AAAA,MACb,wBAAwB;AAAA,MACxB,mBAAmB;AAAA,IACpB;AAAA,IACA,WAAW,KAAK;AAAA,IAChB,QAAQ,KAAK;AAAA,IACb,gBAAgB,KAAK;AAAA,IACrB;AAAA,IACA,kBAAkB,KAAK;AAAA,IACvB,yBAAyB,KAAK;AAAA,IAC9B,aAAa,KAAK;AAAA,IAClB,2BAA2B,KAAK;AAAA,IAChC;AAAA,EACD;AAAA;AAQM,SAAS,sBAAsB,CACrC,SAG4B;AAAA,EAC5B;AAAA,IACC,WAAW;AAAA,IACX,gBAAgB;AAAA,OACb;AAAA,MACA;AAAA,EACJ,OAAO;AAAA;AAgBD,SAAS,4BAA4B,CAAC,SAA0B;AAAA,EACtE,IAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,IAC5C,MAAM,IAAI,UAAU,oCAAoC;AAAA,EACzD;AAAA,EACA,IAAI,eAAe,SAAS;AAAA,IAC3B,OAAO,UACN,8BACC,OAGD,CACD;AAAA,EACD;AAAA,EACA,OAAO,gBACN,uBACC,OAGD,CACD;AAAA;AAwCD,IAAM,+BAA+B,EACnC,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACpC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AACpC,CAAC,EACA,OAAO;AAoDF,IAAM,yBAAsD,EACjE,OAAO;AAAA,EACP,eAAe,EAAE,QAAQ,iCAAiC;AAAA,EAC1D,WAAW;AAAA,EACX,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ,EAAE,QAAQ,SAAS;AAAA,EAC3B,QAAQ,EAAE,QAAQ,wBAAwB;AAAA,EAC1C,UAAU,EAAE,QAAQ,eAAe;AAAA,EACnC,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY,EAAE,KAAK,CAAC,QAAQ,QAAQ,QAAQ,CAAC;AAAA,EAC7C,MAAM,EAAE,QAAQ,WAAW;AAAA,EAC3B,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,kBAAkB,EAAE,KAAK;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,wBAAwB;AAAA,EACxB,mBAAmB,EAAE,QAAQ,0BAA0B;AAAA,EACvD,sBAAsB;AAAA,EACtB,yBAAyB;AAAA,EACzB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc,EAAE,QAAQ,IAAI;AAAA,EAC5B,kBAAkB,EAAE,QAAQ,IAAI;AAAA,EAChC,gBAAgB,EAAE,MAAM,4BAA4B,EAAE,IAAI,CAAC,EAAE,IAAI,GAAM;AAAA,EACvE,oBAAoB;AACrB,CAAC,EACA,OAAO,EACP,OAAO,GAAG,WAAW,kBAAkB,YAAY,aAAa;AAAA,EAChE,SAAS;AACV,CAAC;;;AwBx1BK,MAAM,iCAAiC,MAAM;AAAA,EAC1C;AAAA,EAET,WAAW,CAAC,QAAgB;AAAA,IAC3B,MAAM,gCAAgC,QAAQ;AAAA,IAC9C,KAAK,OAAO;AAAA,IACZ,KAAK,SAAS;AAAA;AAEhB;AAUA,SAAS,aAAa,CACrB,OAC8B;AAAA,EAC9B,IAAI,UAAU;AAAA,IAAW;AAAA,EACzB,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,IAAI,OAAO,cAAc,KAAK,KAAK,SAAS;AAAA,MAAG,OAAO;AAAA,IACtD,MAAM,IAAI,yBACT,yCACD;AAAA,EACD;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,CAAC,QAAQ,KAAK,KAAK,GAAG;AAAA,IACtD,MAAM,IAAI,yBACT,yCACD;AAAA,EACD;AAAA,EACA,MAAM,SAAS,OAAO,KAAK;AAAA,EAC3B,IAAI,SAAS,uBAA6B;AAAA,IACzC,MAAM,IAAI,yBAAyB,yBAAyB;AAAA,EAC7D;AAAA,EACA,OAAO,OAAO,SAAS,EAAE;AAAA;AAG1B,SAAS,YAAY,CACpB,MACA,QACA,YACe;AAAA,EACf,IAAI,OAAO,WAAW,GAAG;AAAA,IACxB,MAAM,IAAI,yBAAyB,GAAG,sBAAsB;AAAA,EAC7D;AAAA,EACA,MAAM,WAAW,OAAO,MAAM,GAAG,UAAU;AAAA,EAC3C,SAAS,QAAQ,EAAG,QAAQ,SAAS,QAAQ,SAAS,GAAG;AAAA,IACxD,MAAM,QAAQ,SAAS;AAAA,IACvB,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,SAAS,QAAQ;AAAA,IACvB,IACC,CAAC,MAAM,QAAQ,KAAK,KACpB,MAAM,SAAS,KACf,UAAU,aACV,WAAW,aACX,CAAC,OAAO,SAAS,KAAK,KACtB,CAAC,OAAO,SAAS,MAAM,KACvB,SAAS,KACT,UAAU,GACT;AAAA,MACD,MAAM,IAAI,yBACT,GAAG,cAAc,qDAClB;AAAA,IACD;AAAA,IACA,IAAI,QAAQ,GAAG;AAAA,MACd,MAAM,WAAW,SAAS,QAAQ,KAAK;AAAA,MACvC,IACC,aAAa,cACZ,SAAS,QAAQ,SAAS,WAAW,SAAS,WAC9C;AAAA,QACD,MAAM,IAAI,yBACT,GAAG,gCAAgC,SAAS,QAAQ,eAAe,aACpE;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO,SAAS,IAAI,EAAE,OAAO,aAAa;AAAA,IACzC;AAAA,IACA;AAAA,EACD,EAAE;AAAA;AAGH,SAAS,eAAe,CAAC,OAAgD;AAAA,EACxE,MAAM,QAAQ,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG;AAAA,EACvC,WAAW,QAAQ,OAAO;AAAA,IACzB,IAAI,CAAC,OAAO,SAAS,IAAI,KAAK,QAAQ,KAAK,CAAC,OAAO,UAAU,IAAI,GAAG;AAAA,MACnE,MAAM,IAAI,yBACT,yDACD;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK;AAAA;AAG9D,SAAS,WAAW,CAAC,KAAuD;AAAA,EAC3E,OAAO,KAAK,KAAK,yBAAyB,gBAAgB,GAAG,EAAE;AAAA;AAGhE,SAAS,oBAAoB,CAC5B,UACA,YACA,OAU0B;AAAA,EAC1B,OAAO;AAAA,OACH,kBAAkB,UAAS,UAAU;AAAA,IACxC,gBAAgB,MAAM;AAAA,IACtB,kBAAkB,MAAM;AAAA,IACxB,aAAa,MAAM;AAAA,IACnB,mBAAmB,MAAM;AAAA,IACzB,YAAY;AAAA,IACZ,aAAa,MAAM;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,kCAAkC;AAAA,EACnC;AAAA;AAGM,SAAS,2BAA2B,CAAC,OASjB;AAAA,EAC1B,IACC,CAAC,OAAO,cAAc,MAAM,UAAU,KACtC,MAAM,cAAc,KACpB,MAAM,aAAa,KAClB;AAAA,IACD,MAAM,IAAI,yBACT,kDACD;AAAA,EACD;AAAA,EACA,IAAI,MAAM,QAAQ,SAAS,aAAa;AAAA,IACvC,MAAM,IAAI,yBAAyB,uCAAuC;AAAA,EAC3E;AAAA,EACA,IAAI,MAAM,qBAAqB,2BAA2B;AAAA,IACzD,MAAM,IAAI,yBACT,kEACD;AAAA,EACD;AAAA,EAEA,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,cAAc,qBACb,MAAM,SAAS,WACf,gBACD;AAAA,IACA,iBAAiB,qBAChB,MAAM,SAAS,mBACf,kBACD;AAAA,IACC,OAAO,OAAO;AAAA,IACf,MAAM,IAAI,yBACT,iBAAiB,QAAQ,MAAM,UAAU,mBAC1C;AAAA;AAAA,EAED,IAAI,iBAAiB,aAAa;AAAA,IACjC,MAAM,IAAI,yBACT,8CACD;AAAA,EACD;AAAA,EAEA,MAAM,OAAO,aAAa,OAAO,MAAM,SAAS,MAAM,MAAM,UAAU;AAAA,EACtE,MAAM,OAAO,aAAa,OAAO,MAAM,SAAS,MAAM,MAAM,UAAU;AAAA,EACtE,MAAM,UAAU,KAAK;AAAA,EACrB,MAAM,UAAU,KAAK;AAAA,EACrB,IAAI,QAAQ,SAAS,QAAQ,OAAO;AAAA,IACnC,MAAM,IAAI,yBAAyB,2BAA2B;AAAA,EAC/D;AAAA,EACA,MAAM,WAAW,cAAc,MAAM,SAAS,QAAQ;AAAA,EACtD,MAAM,YAAY,QAAQ,QAAQ,QAAQ,SAAS;AAAA,EACnD,MAAM,SAAS,QAAQ,QAAQ,QAAQ;AAAA,EACvC,MAAM,YAAa,SAAS,WAAY;AAAA,EACxC,MAAM,aAAa,gBAAgB;AAAA,IAClC,UAAU,MAAM,QAAQ,SAAS,KAAK,EAAE,YAAY;AAAA,IACpD,cAAc,MAAM,QAAQ,OAAO,KAAK,EAAE,QAAQ,KAAK,GAAG;AAAA,IAC1D,gBAAgB;AAAA,IAChB;AAAA,IACA,aAAa,MAAM;AAAA,IACnB;AAAA,IACA;AAAA,IACA,gBAAgB,MAAM,QAAQ;AAAA,EAC/B,CAAC;AAAA,EACD,MAAM,SAAS,qBAAqB,MAAM,SAAS,MAAM,YAAY;AAAA,IACpE;AAAA,IACA;AAAA,IACA,YAAY,MAAM;AAAA,IAClB;AAAA,IACA;AAAA,IACA,kBAAkB,MAAM,oBAAoB;AAAA,EAC7C,CAAC;AAAA,EAED,MAAM,SACL;AAAA,IACC,CAAC,OAAO,IAAI;AAAA,IACZ,CAAC,OAAO,IAAI;AAAA,EACb,EACC,QAAQ,EAAE,MAAM,gBACjB,WAAW,IAAI,GAAG,OAAO,UAAU,eAAe;AAAA,IACjD,MAAM,MAAM,YAAY;AAAA,SACpB;AAAA,MACH;AAAA,MACA,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,UAAU,QAAQ;AAAA,MAClB,WAAW;AAAA,MACX,qBAAqB,KAAK,KAAK,QAAQ,YAAY,QAAQ,IAAI;AAAA,IAChE,CAAC;AAAA,IACD,OAAO,EAAE,OAAO,qCAAqC,IAAI;AAAA,GACzD,CACF;AAAA,EAEA,MAAM,QAAQ,gBAAgB,MAAM,mBAAmB;AAAA,EACvD,MAAM,WAAW,MAAM,IAAI,CAAC,SAAS;AAAA,IACpC,MAAM,eAAe,QAAQ,SAAS,IAAI,OAAO;AAAA,IACjD,OAAO,KACL,OAAO,GAAG,YAAY,SAAS,YAAY,EAC3C,OAAO,CAAC,OAAO,aAAa,MAAM,QAAQ,CAAC;AAAA,GAC7C;AAAA,EACD,MAAM,WAAW,MAAM,IAAI,CAAC,SAAS;AAAA,IACpC,MAAM,eAAe,QAAQ,SAAS,IAAI,OAAO;AAAA,IACjD,OAAO,KACL,OAAO,GAAG,YAAY,SAAS,YAAY,EAC3C,OAAO,CAAC,OAAO,aAAa,MAAM,QAAQ,CAAC;AAAA,GAC7C;AAAA,EACD,MAAM,aAAa,YAAY;AAAA,OAC3B;AAAA,IACH,UAAU,QAAQ;AAAA,IAClB,UAAU,QAAQ;AAAA,IAClB,iBAAiB,QAAQ;AAAA,IACzB,iBAAiB,QAAQ;AAAA,IACzB,WAAW;AAAA,IACX;AAAA,IACA,YAAY;AAAA,IACZ,cAAc,iBAAiB;AAAA,IAC/B,iBAAiB,KAAK;AAAA,IACtB,iBAAiB,KAAK;AAAA,IACtB,uBAAuB;AAAA,IACvB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,EACpB,CAAC;AAAA,EAED,OAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,IACN;AAAA,EACD;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/QM,IAAM,0BAA0B;AAChC,IAAM,2BAA2B,IAAI,OAAO;AAEnD,SAAS,eAAe,CAAC,OAAwB;AAAA,EAChD,OAAO,IAAI,YAAY,EAAE,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA;AAGjD,SAAS,qBAAqB,CAAC,OAMjB;AAAA,EACpB,MAAM,UAAU,MAAM,WAAW;AAAA,EACjC,MAAM,WAAW,MAAM,YAAY;AAAA,EACnC,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,OAAO,MAAM,MAAM;AAAA,IAC7B,MAAM,QAAQ,OAAO,IAAI,IAAI,KAAK,KAAK,CAAC;AAAA,IACxC,MAAM,KAAK,GAAG;AAAA,IACd,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,EAC5B;AAAA,EACA,MAAM,UAA4B,CAAC;AAAA,EACnC,WAAW,SAAS,CAAC,GAAG,OAAO,KAAK,CAAC,EAAE,KAAK,GAAG;AAAA,IAC9C,MAAM,OAAO,OAAO,IAAI,KAAK;AAAA,IAC7B,IAAI,QAA8B,CAAC;AAAA,IACnC,IAAI,aAAa;AAAA,IACjB,IAAI,UAAU;AAAA,IACd,MAAM,QAAQ,MAAM;AAAA,MACnB,IAAI,MAAM,WAAW;AAAA,QAAG;AAAA,MACxB,MAAM,UAAU,gBAAgB;AAAA,QAC/B,mBAAmB,MAAM;AAAA,QACzB;AAAA,QACA,eAAe;AAAA,QACf,MAAM;AAAA,MACP,CAAC;AAAA,MACD,QAAQ,KAAK;AAAA,QACZ,QAAQ;AAAA,QACR,eAAe,MAAM;AAAA,QACrB,UAAU;AAAA,QACV,MAAM;AAAA,MACP,CAAC;AAAA,MACD,WAAW;AAAA,MACX,QAAQ,CAAC;AAAA,MACT,aAAa;AAAA;AAAA,IAEd,WAAW,OAAO,MAAM;AAAA,MACvB,MAAM,QAAQ,gBAAgB,GAAG;AAAA,MACjC,IAAI,QAAQ,UAAU;AAAA,QACrB,MAAM,IAAI,MAAM,mCAAmC,OAAO;AAAA,MAC3D;AAAA,MACA,IAAI,MAAM,UAAU,WAAW,aAAa,QAAQ;AAAA,QAAU,MAAM;AAAA,MACpE,MAAM,KAAK,GAAG;AAAA,MACd,cAAc;AAAA,IACf;AAAA,IACA,MAAM;AAAA,EACP;AAAA,EACA,OAAO;AAAA;;;AChER,uBAAS;;;ACET,IAAI,KAAK;AAAT,IAAsB,KAAK;AAA3B,IAAuC,MAAM;AAA7C,IAA0D,MAAM;AAAhE,IAA+F,MAAM;AACrG,IAAI,MAAM,QAAS,CAAC,GAAG,GAAG,GAAG;AAAA,EACzB,IAAI,GAAG,UAAU;AAAA,IACb,OAAO,GAAG,UAAU,MAAM,KAAK,GAAG,GAAG,CAAC;AAAA,EAC1C,IAAI,KAAK,QAAQ,IAAI;AAAA,IACjB,IAAI;AAAA,EACR,IAAI,KAAK,QAAQ,IAAI,EAAE;AAAA,IACnB,IAAI,EAAE;AAAA,EACV,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AAAA,EACpB,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC;AAAA,EACtB,OAAO;AAAA;AAEX,IAAI,OAAO,QAAS,CAAC,GAAG,GAAG,GAAG,GAAG;AAAA,EAC7B,IAAI,GAAG,UAAU;AAAA,IACb,OAAO,GAAG,UAAU,KAAK,KAAK,GAAG,GAAG,GAAG,CAAC;AAAA,EAC5C,IAAI,KAAK,QAAQ,IAAI;AAAA,IACjB,IAAI;AAAA,EACR,IAAI,KAAK,QAAQ,IAAI,EAAE;AAAA,IACnB,IAAI,EAAE;AAAA,EACV,MAAO,IAAI,GAAG,EAAE;AAAA,IACZ,EAAE,KAAK;AAAA,EACX,OAAO;AAAA;AAEX,IAAI,MAAM,QAAS,CAAC,GAAG,GAAG,GAAG,GAAG;AAAA,EAC5B,IAAI,GAAG,UAAU;AAAA,IACb,OAAO,GAAG,UAAU,WAAW,KAAK,GAAG,GAAG,GAAG,CAAC;AAAA,EAClD,IAAI,KAAK,QAAQ,IAAI;AAAA,IACjB,IAAI;AAAA,EACR,IAAI,KAAK,QAAQ,IAAI,EAAE;AAAA,IACnB,IAAI,EAAE;AAAA,EACV,OAAO,IAAI,GAAG;AAAA,IACV,EAAE,OAAO,EAAE;AAAA,EACf;AAAA;AAcJ,IAAI,KAAK;AAAA,EACL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,IAAI,MAAM,QAAS,CAAC,KAAK,KAAK,IAAI;AAAA,EAC9B,IAAI,IAAI,IAAI,MAAM,OAAO,GAAG,IAAI;AAAA,EAChC,EAAE,OAAO;AAAA,EACT,IAAI,MAAM;AAAA,IACN,MAAM,kBAAkB,GAAG,GAAG;AAAA,EAClC,IAAI,CAAC;AAAA,IACD,MAAM;AAAA,EACV,OAAO;AAAA;AAEX,IAAI,KAAK,QAAS,CAAC,GAAG,GAAG,GAAG;AAAA,EACxB,IAAI,IAAI,GAAG,IAAI;AAAA,EACf,MAAO,IAAI,GAAG,EAAE;AAAA,IACZ,KAAK,EAAE,SAAS,KAAK;AAAA,EACzB,OAAO;AAAA;AAEX,IAAI,KAAK,QAAS,CAAC,GAAG,GAAG;AAAA,EAAE,QAAQ,EAAE,KAAM,EAAE,IAAI,MAAM,IAAM,EAAE,IAAI,MAAM,KAAO,EAAE,IAAI,MAAM,QAAS;AAAA;AAErG,IAAI,OAAO,QAAS,CAAC,KAAK,GAAG;AAAA,EACzB,IAAI,KAAK,IAAI,KAAM,IAAI,MAAM,IAAM,IAAI,MAAM;AAAA,EAC7C,IAAI,MAAM,WAAY,IAAI,MAAM,KAAK;AAAA,IAEjC,IAAI,MAAM,IAAI;AAAA,IAEd,IAAI,KAAM,OAAO,IAAK,GAAG,KAAM,OAAO,IAAK,GAAG,KAAK,MAAM,GAAG,MAAM,OAAO;AAAA,IACzE,IAAI,MAAM;AAAA,MACN,IAAI,CAAC;AAAA,IAET,IAAI,KAAK,IAAI;AAAA,IAEb,IAAI,KAAK,MAAM,IAAI,IAAI;AAAA,IAEvB,IAAI,KAAK,GAAG,KAAK,IAAI,EAAE;AAAA,IACvB,MAAM;AAAA,IAEN,IAAI,MAAM,MAAO,KAAK,MAAO;AAAA,IAE7B,IAAI,MAAM,GAAG,KAAK,IAAI,GAAG,KAAM,OAAO,KAAM;AAAA,IAE5C,IAAI,KAAK;AAAA,IACT,IAAI,CAAC,IAAI;AAAA,MAEL,IAAI,KAAK,KAAM,MAAM,IAAI,MAAM;AAAA,MAC/B,KAAK,MAAM,MAAM,MAAM,IAAI,KAAK;AAAA,IACpC;AAAA,IACA,IAAI,KAAK;AAAA,MACL,IAAI,CAAC;AAAA,IACT,IAAI,MAAM,IAAI,IAAI,KAAK,IAAK,OAAO,KAAM,IAAI,IAAI,MAAM,EAAE;AAAA,IACzD,IAAI,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI,KAAK;AAAA,IACjC,OAAO;AAAA,MACH,GAAG,KAAK;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAI,KAAK,KAAK,IAAK,IAAI,IAAI,SAAS,EAAE;AAAA,MACtC,GAAG;AAAA,MACH,GAAG,IAAI,IAAI,IAAI,QAAQ,GAAG,CAAC;AAAA,MAC3B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG,KAAK,IAAI,QAAQ,EAAE;AAAA,IAC1B;AAAA,EACJ,EACK,UAAM,MAAM,IAAM,IAAI,MAAM,OAAQ,UAAW;AAAA,IAEhD,OAAO,GAAG,KAAK,CAAC,IAAI;AAAA,EACxB;AAAA,EACA,IAAI,CAAC;AAAA;AAGT,IAAI,MAAM,QAAS,CAAC,KAAK;AAAA,EACrB,IAAI,OAAO;AAAA,EACX,MAAQ,KAAK,QAAS,KAAK,EAAE;AAAA;AAAA,EAE7B,OAAO,OAAO;AAAA;AAGlB,IAAI,OAAO,QAAS,CAAC,KAAK,IAAI,KAAK;AAAA,EAE/B,IAAI,QAAQ,MAAM,KAAK;AAAA,EAEvB,IAAI,MAAM,IAAI,MAAM,MAAM;AAAA,EAC1B,IAAI,KAAK;AAAA,IACL,IAAI,CAAC;AAAA,EAET,IAAI,KAAK,KAAK;AAAA,EAEd,IAAI,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK;AAAA,EAEhD,IAAI,MAAM,IAAI,GAAG,OAAO,MAAM,EAAE;AAAA,EAChC,IAAI,OAAO,IAAI,IAAI,KAAK,GAAG,GAAG;AAAA,EAE9B,IAAI,SAAS,IAAI,IAAI,KAAK,GAAG,GAAG;AAAA,EAChC,IAAI,SAAS,IAAI,IAAI,KAAK,KAAK,EAAE;AAAA,EACjC,IAAI,MAAM,OAAO,MAAM;AAAA,EACvB,IAAI,OAAO,IAAI,GAAG,KAAK,KAAK,EAAE;AAAA,EAC9B,IAAI,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE;AAAA,EAChC,OAAO,MAAM,OAAO,QAAQ,GAAG;AAAA,IAC3B,IAAI,OAAO,IAAI,QAAQ,CAAC;AAAA,IACxB,IAAI,MAAM,QAAQ;AAAA,IAElB,IAAI,OAAO,KAAM,OAAO,KAAM;AAAA,IAC9B,IAAI,OAAQ,IAAI,OAAQ,IAAI,MAAM,MAAM,IAAM,IAAI,MAAM,MAAM,QAAS,OAAO,KAAM;AAAA,IAEpF,IAAI,UAAU,KAAK,QAAQ;AAAA,IAE3B,IAAI,MAAM,MAAM,QAAQ;AAAA,IAExB,IAAI,OAAO,MAAM;AAAA,IACjB,IAAI,OAAO;AAAA,MACP,QAAQ,MAAM,MAAM;AAAA,IACnB;AAAA,MACD,QAAQ,OAAO;AAAA,MACf,IAAI,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,IAEf,KAAK,EAAE,OAAO,EAAE;AAAA,IAChB,IAAI,OAAO,IAAI;AAAA,MACX,SAAS;AAAA,MACT,KAAK,EAAE,MAAM;AAAA,IACjB,EAEI;AAAA,eAAS;AAAA,IACb,IAAI,CAAC,KAAK;AAAA,MACN,GAAG;AAAA,QAEC,IAAI,MAAM,QAAQ;AAAA,QAClB,MAAO,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,KAAM;AAAA,QACxD,QAAQ;AAAA,QACR,OAAO;AAAA,MACX,SAAS,MAAM;AAAA,IACnB;AAAA,EACJ;AAAA,EACA,IAAI,MAAM,OAAO;AAAA,IACb,IAAI,CAAC;AAAA,EACT,IAAI,SAAS;AAAA,EAEb,IAAI,SAAS,MAAM,MAAM,MAAM,KAAK;AAAA,EAEpC,IAAI,QAAQ,KAAK;AAAA,EACjB,SAAS,IAAI,EAAG,KAAK,KAAK,EAAE,GAAG;AAAA,IAC3B,IAAI,KAAK,KAAK;AAAA,IACd,IAAI,KAAK,GAAG;AAAA,MACR,OAAO,KAAK,CAAC;AAAA,MACb;AAAA,IACJ;AAAA,IAEA,KAAK,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,MACrB,KAAK,UAAU;AAAA,MACf,GAAG;AAAA,QACC,SAAU,SAAS,QAAS;AAAA,MAChC,SAAS,UAAU;AAAA,IACvB;AAAA,EACJ;AAAA,EAEA,IAAI;AAAA,IACA,IAAI,CAAC;AAAA,EACT,KAAK,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,IAErB,IAAI,KAAK,OAAO,KAAK;AAAA,IAErB,IAAI,KAAK,MAAM,KAAK,KAAK,IAAI,EAAE;AAAA,IAC/B,OAAO,MAAM,MAAM,MAAM;AAAA,EAC7B;AAAA,EACA,OAAO,CAAE,OAAO,KAAM,GAAG;AAAA,IACjB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CAAC;AAAA;AAGT,IAAI,MAAM,QAAS,CAAC,KAAK,IAAI;AAAA,EAEzB,IAAI,IAAI,GAAG,KAAK;AAAA,EAEhB,IAAI,MAAM,IAAI,GAAG,GAAG,GAAG,KAAK,IAAI;AAAA,EAEhC,IAAI,KAAK,IAAI,SAAS,GAAG,GAAG;AAAA,EAE5B,IAAI,KAAK,IAAI,SAAS,KAAK,GAAG;AAAA,EAE9B,IAAI,KAAK,IAAI,IAAI,IAAI,QAAQ,GAAG;AAAA,EAEhC,IAAI,KAAK,KAAK;AAAA,IAEV,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,MAAM,GAAG;AAAA,IACrD,MAAM;AAAA,IACN,IAAI,OAAO,OAAO;AAAA,IAElB,IAAI,KAAK,IAAI;AAAA,IACb,IAAI,CAAC;AAAA,MACD,IAAI,CAAC;AAAA,IAET,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,IAAI,GAAG,OAAO;AAAA,IAG3C,IAAI,QAAQ,EAAE,MAAM,KAAK,IAAI,IAAI,EAAE;AAAA,IACnC,UAAS;AAAA,MACL,QAAQ;AAAA,MACR,IAAI,OAAO;AAAA,QACP;AAAA,MACJ,IAAI,MAAM,QAAQ;AAAA,MAClB,QAAS,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,QAAQ;AAAA,MACzE,GAAG,EAAE,MAAM,IAAI,EAAE;AAAA,MACjB,QAAQ;AAAA,MACR,IAAI,OAAO;AAAA,QACP;AAAA,MACJ,MAAM,QAAQ;AAAA,MACd,QAAS,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,QAAQ;AAAA,MACzE,GAAG,EAAE,MAAM,IAAI,EAAE;AAAA,MACjB,OAAO,IAAI,EAAE;AAAA,MACb,MAAM,IAAI,EAAE;AAAA,MACZ,OAAO,IAAI,EAAE;AAAA,MACb,MAAM,IAAI,EAAE;AAAA,IAChB;AAAA,IACA,IAAI,EAAE,KAAK;AAAA,MACP,IAAI,CAAC;AAAA,EACb,EACK;AAAA,IACD,KAAK,KAAK;AAAA,IACV,MAAO,IAAI,IAAI,KAAK,GAAG;AAAA,MACnB,IAAI,OAAO,IAAI,EAAE;AAAA,MACjB,GAAG,KAAK,QAAQ;AAAA,MAChB,GAAG,IAAI,KAAK,OAAO;AAAA,IACvB;AAAA,IACA,EAAE;AAAA;AAAA,EAGN,IAAI,MAAM;AAAA,EACV,KAAK,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,IACrB,IAAI,KAAK,GAAG;AAAA,IAEZ,IAAI,KAAK;AAAA,MACL,IAAI,CAAC;AAAA,IACT,OAAO,MAAO,KAAM,KAAK;AAAA,EAC7B;AAAA,EAEA,IAAI,KAAK,IAAI,GAAG,IAAI;AAAA,EAEpB,IAAI,KAAK,KAAK;AAAA,EAEd,IAAI,MAAM,KAAK;AAAA,EAEf,IAAI,MAAO,MAAM;AAAA,IACb,IAAI,CAAC;AAAA,EACT,GAAG,QAAQ,IAAI,GAAG,IAAI;AAAA,EACtB,KAAK,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,IACrB,IAAI,KAAK,GAAG;AAAA,IACZ,EAAE,GAAG,GAAG,KAAK,MAAO,KAAK,IAAI;AAAA,EACjC;AAAA,EAEA,IAAI,OAAO,IAAI,GAAG,MAAM,CAAC;AAAA,EAEzB,IAAI,OAAO,KAAK,SAAS,GAAG,EAAE,GAAG,KAAK,KAAK,SAAS,EAAE;AAAA,EACtD,GAAG,MAAM;AAAA,EACT,KAAK,IAAI,GAAI,IAAI,GAAG,EAAE,GAAG;AAAA,IACrB,IAAI,KAAK,GAAG;AAAA,IACZ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG,MAAM,KAAM,KAAK,EAAG;AAAA,EAC5D;AAAA,EACA,IAAI,GAAG,MAAM;AAAA,IACT,IAAI,CAAC;AAAA,EACT,KAAK,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,IACrB,IAAI,OAAO,GAAG;AAAA,IACd,IAAI,MAAM;AAAA,MACN,IAAI,OAAO,GAAG;AAAA,MACd,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,QAAQ,KAAM,KAAK,KAAM;AAAA,IAC5D;AAAA,EACJ;AAAA,EACA,OAAO,CAAC,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP,CAAC;AAAA;AAKT,IAAI,OAAqB,qBAAmB,IAAI,GAAG;AAAA,EAC/C;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AACnF,CAAC,GAAG,GAAG,CAAC,EAAE;AAEV,IAAI,OAAqB,qBAAmB,IAAI,GAAG;AAAA,EAC/C;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAG;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAC9G,CAAC,GAAG,GAAG,CAAC,EAAE;AAEV,IAAI,OAAsB,qBAAmB,IAAI,GAAG;AAAA,EAChD;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AACtD,CAAC,GAAG,GAAG,CAAC,EAAE;AAEV,IAAI,OAAO,QAAS,CAAC,GAAG,GAAG;AAAA,EACvB,IAAI,MAAM,EAAE,QAAQ,KAAK,IAAI,IAAI,GAAG;AAAA,EACpC,SAAS,IAAI,EAAG,IAAI,KAAK,EAAE,GAAG;AAAA,IAC1B,GAAG,KAAK;AAAA,IACR,KAAK,KAAK,EAAE;AAAA,EAChB;AAAA,EACA,OAAO;AAAA;AAGX,IAAI,sBAAqB,IAAI,oBAAmB,IAAI,IAAI;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAU;AAAA,EAAU;AAAA,EAAW;AAAA,EAAW;AAC1D,CAAC,GAAG,QAAQ,GAAG,EAAE;AAEjB,IAAI,uBAAsB,KAAK,KAAK,CAAC;AAErC,IAAI,sBAAqB,IAAI,oBAAmB,IAAI,IAAI;AAAA,EACpD;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AAAA,EAAU;AAAA,EAAU;AAAA,EAAW;AAAA,EAAW;AAAA,EAAW;AACjF,CAAC,GAAG,QAAQ,GAAG,EAAE;AAEjB,IAAI,uBAAsB,KAAK,KAAK,CAAC;AAErC,IAAI,MAAM,QAAS,CAAC,KAAK,KAAK,IAAI;AAAA,EAC9B,IAAI,MAAM,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,MAAM,IAAI,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG;AAAA,EAC1F,IAAI,CAAC;AAAA,IACD,IAAI,CAAC;AAAA,EACT,IAAI,KAAK,GAAG,MAAM,GAAG,GAAG,OAAO,OAAO,KAAK,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI;AAAA,EAClE,MAAO,MAAM,MAAM,IAAI,MAAK;AAAA,IACxB,IAAI,MAAM,OAAO;AAAA,IACjB,IAAI,OAAO,IAAI,OAAQ,IAAI,MAAM,MAAM,IAAM,IAAI,MAAM,MAAM,QAAS,MAAM;AAAA,IAC5E,MAAO,MAAM,MAAO,OAAO;AAAA,IAC3B,IAAI,EAAE,KAAK,GAAG,EAAE;AAAA,IAChB,OAAQ,MAAM,GAAG,EAAE;AAAA,EACvB;AAAA,EACA,IAAI,OAAO,MAAM,IAAI,KAAK;AAAA,IACtB,IAAI,CAAC;AAAA;AAIb,IAAI,OAAO,QAAS,CAAC,KAAK,KAAK,IAAI;AAAA,EAC/B,IAAI,KAAK;AAAA,EACT,IAAI,KAAK,IAAI,QAAQ,MAAO,KAAK,KAAM,GAAG,MAAM,OAAO,GAAG,MAAM,MAAM;AAAA,EACtE,IAAI,IAAI,SAAS,IAAI,MAAM,IAAI,KAAM,IAAI,MAAM,CAAE,GAAG,IAAI,SAAS,GAAG,GAAG,GAAG,EAAE;AAAA,EAC5E,IAAI,IAAI,SAAS,IAAI,MAAM,IAAI,KAAM,IAAI,MAAM,CAAE,GAAG,IAAI,SAAS,KAAK,GAAG,GAAG,EAAE;AAAA,EAC9E,IAAI,IAAI,SAAS,IAAI,MAAM,IAAI,KAAM,IAAI,MAAM,CAAE,GAAG,IAAI,SAAS,KAAK,GAAG,GAAG,EAAE;AAAA,EAC9E,IAAI,IAAI,SAAS,EAAE,GAAG,IAAI,SAAS,GAAG,GAAG,EAAE;AAAA;AAG/C,IAAI,MAAM,QAAS,CAAC,KAAK,IAAI,KAAK;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI,KAAK,GAAG;AAAA,EAEZ,IAAI,KAAK,IAAI,KAAK,QAAS,MAAM,IAAK;AAAA,EACtC,GAAG,IAAI,KAAK;AAAA,EACZ,IAAI,KAAM,MAAM,IAAM,IAAI,KAAK,MAAM,IAAM,IAAI,KAAK,MAAM;AAAA,EAE1D,IAAI,OAAO,MAAM,KAAK;AAAA,EACtB,IAAI,SAAS,GAAG;AAAA,IACZ,IAAI,MAAM,IAAI;AAAA,MACV;AAAA,IACJ,GAAG,IAAI,KAAK;AAAA,IACZ,IAAI,KAAK;AAAA,MACL,KAAK,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,EAAE;AAAA,MACnC,OAAO;AAAA,IACX;AAAA,IACA,OAAO,KAAK,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG;AAAA,EACnC;AAAA,EACA,IAAI,MAAM,IAAI;AAAA,IACV;AAAA,EACJ,IAAI,SAAS,GAAG;AAAA,IACZ,GAAG,IAAI;AAAA,IACP,IAAI,KAAK;AAAA,MACL,IAAI,IAAI,IAAI,SAAS,IAAI,GAAG,GAAG,GAAG,CAAC;AAAA,MACnC,GAAG,KAAK;AAAA,MACR,OAAO;AAAA,IACX;AAAA,IACA,OAAO,IAAI,KAAK,IAAI,GAAG;AAAA,EAC3B;AAAA,EACA,IAAI,SAAS,GAAG;AAAA,IAEZ,IAAI,KAAK,IAAI,KAAK,MAAM,KAAK,GAAG,KAAM,MAAM,IAAK;AAAA,IAEjD,IAAI,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK;AAAA,IACjC,IAAI,MAAM,GAAG;AAAA,MACT,IAAI,KAAK;AAAA,QACL,OAAQ,IAAI,EAAE,OAAO,KAAO,KAAK,KAAO,IAAI,EAAE,OAAO;AAAA,MAErD;AAAA,cAAM,MAAM;AAAA,IACpB,EACK;AAAA,MACD,KAAK;AAAA,MACL,IAAI,KAAK;AAAA,QACL,QAAS,IAAI,EAAE,MAAM,OAAO,GAAI,MAAO,IAAI,OAAO,IAAM,IAAI,EAAE,OAAO;AAAA,MACpE,SAAI,MAAM;AAAA,QACX,OAAQ,IAAI,EAAE,OAAO,KAAO,IAAI,EAAE,MAAM,MAAM,IAAK,MAAO,IAAI,OAAO,IAAM,IAAI,EAAE,OAAO;AAAA,MAExF;AAAA,eAAQ,IAAI,EAAE,OAAO,KAAO,IAAI,EAAE,MAAM,OAAO,IAAK,MAAO,IAAI,OAAO,IAAM,IAAI,EAAE,OAAO,IAAM,IAAI,EAAE,OAAO;AAAA;AAAA,IAEpH,EAAE;AAAA,IAEF,IAAI,MAAM,MAAM,IAAI,SAAS,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC;AAAA,IAE7D,IAAI,MAAM,IAAI,SAAS;AAAA,IACvB,IAAI,OAAO;AAAA,MACP,IAAI,IAAI,IAAI,SAAS,IAAI,MAAM,GAAG,GAAG,GAAG;AAAA,IACvC,SAAI,OAAO;AAAA,MACZ,KAAK,KAAK,IAAI,OAAO,GAAG;AAAA,IACvB;AAAA,MAED,IAAI,KAAK,GAAG;AAAA,MACZ,IAAI,OAAO,GAAG;AAAA,QACV,IAAI,MAAM,IAAI,KAAK,EAAE;AAAA,QAErB,OAAO,MAAM,KAAK,IAAI;AAAA,QACtB,GAAG,IAAI,KAAK,IAAI;AAAA,MACpB,EACK,SAAI,CAAC;AAAA,QACN,IAAI,CAAC;AAAA,OACR,KAAK,OAAO,KAAK,IAAI,SAAS,IAAI,MAAM,GAAG,GAAG,IAAI,SAAS,GAAG,GAAG,EAAE;AAAA;AAAA,IAGxE,IAAI,KAAK,IAAI;AAAA,IACb,IAAI,IAAI;AAAA,MACJ,IAAI,MAAM;AAAA,QACN,MAAM,IAAI,QAAS,IAAI,SAAS,KAAM;AAAA,MACrC,SAAI,KAAK;AAAA,QACV,KAAO,KAAK,OAAQ,IAAK,IAAI;AAAA,MAEjC,IAAI,MAAM,IAAI;AAAA,MACd,IAAI,MAAM;AAAA,QACN,IAAI,CAAC;AAAA,MACT,IAAI,MAAM,CAAC,MAAM,MAAM,IAAI;AAAA,MAC3B,SAAS,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,QACzB,IAAI,KAAM,QAAS,KAAK,KAAK,IAAM;AAAA,QACnC,IAAI,MAAM,GAAG;AAAA,UAET,IAAI,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC;AAAA,UACnC,IAAI,KAAK;AAAA,YACL,GAAG,KAAK,SAAS,GAAG,CAAC;AAAA,YACrB,GAAG,KAAK,SAAS,GAAG,CAAC;AAAA,YACrB,GAAG,IAAI,IAAI,KAAK,QAAQ,GAAG,CAAC;AAAA,YAC5B,GAAG;AAAA,UACP;AAAA,QACJ,EACK,SAAI,MAAM,GAAG;AAAA,UAEd,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;AAAA,QAC7D,EACK,SAAI,MAAM,GAAG;AAAA,UACd,IAAI,CAAC,GAAG;AAAA,YACJ,IAAI,CAAC;AAAA,UACT,IAAI,KAAK,GAAG,EAAE;AAAA,QAClB;AAAA,MACJ;AAAA,MACA,IAAI,KAAK,GAAG,IAAI,KAAK,MAAM,GAAG,IAAI,MAAM,GAAG,IAAI,MAAM,GAAG;AAAA,MACxD,IAAI,KAAK,IAAI,MAAM;AAAA,MACnB,IAAI,CAAC;AAAA,QACD,IAAI,CAAC;AAAA,MACT,IAAI,QAAQ,OAAO,KAAK,IAAI,IAAI,EAAE,IAAI,IAAI,GAAG,MAAM,QAAQ,GAAG,OAAO;AAAA,MACrE,IAAI,OAAQ,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,IAAI,KAAK;AAAA,MAC7E,OAAO,QAAQ,IAAI,MAAM;AAAA,MACzB,IAAI,OAAQ,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,IAAI,KAAK;AAAA,MAC7E,OAAO,QAAQ,IAAI,MAAM;AAAA,MACzB,IAAI,OAAQ,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,IAAI,KAAK;AAAA,MAC7E,KAAK,EAAE,GAAI,EAAE,MAAK;AAAA,QACd,IAAI,MAAM,IAAI,EAAE;AAAA,QAChB,IAAI,OAAO,IAAI,EAAE;AAAA,QACjB,IAAI,MAAM,IAAI,EAAE;AAAA,QAChB,IAAI,OAAO,IAAI,EAAE;AAAA,QACjB,IAAI,MAAM,IAAI,EAAE;AAAA,QAChB,IAAI,OAAO,IAAI,EAAE;AAAA,QACjB,OAAO,QAAQ,QAAQ;AAAA,QACvB,IAAI,MAAM,KAAK;AAAA,QACf,IAAI,MAAM,QAAS,IAAI,OAAQ,IAAI,MAAM,MAAM,IAAM,IAAI,MAAM,MAAM,KAAO,IAAI,MAAM,MAAM,SAAU,OAAO,KAAO,MAAM;AAAA,QAC1H,OAAO,QAAQ,IAAI,SAAS;AAAA,QAC5B,IAAI,KAAK,KAAK,SAAU,IAAI,OAAQ,IAAI,MAAM,MAAM,IAAM,IAAI,MAAM,MAAM,QAAS,OAAO,MAAQ,KAAK,IAAI,QAAQ;AAAA,QACnH,OAAO,QAAQ,IAAI,SAAS;AAAA,QAC5B,IAAI,KAAK,KAAK,SAAU,IAAI,OAAQ,IAAI,MAAM,MAAM,IAAM,IAAI,MAAM,MAAM,QAAS,OAAO,MAAQ,KAAK,IAAI,QAAQ;AAAA,QACnH,OAAO,QAAQ,SAAS;AAAA,QACxB,MAAM,IAAI,EAAE,SAAU,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,QAAQ;AAAA,QACtF,OAAO,QAAQ,SAAS;AAAA,QACxB,MAAM,IAAI,EAAE,SAAU,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,QAAQ;AAAA,QACtF,OAAO,QAAQ,SAAS;AAAA,QACxB,MAAM,IAAI,EAAE,SAAU,IAAI,OAAQ,IAAI,MAAM,MAAM,OAAQ,OAAO,MAAQ,KAAK,QAAQ;AAAA,QACtF,IAAI,MAAM,GAAG;AAAA,UACT,GAAG,EAAE,KAAK,GAAG,EAAE;AAAA,UACf,GAAG,EAAE,KAAK,GAAG,EAAE;AAAA,UACf,GAAG,EAAE,KAAK,OAAO;AAAA,QACrB,EACK;AAAA,UACD,IAAI,MAAM,OAAO,MAAM;AAAA,UACvB,IAAI,KAAK;AAAA,YACL,MAAM,OAAO,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE;AAAA,YACpC,IAAI,MAAM;AAAA,cACN,GAAG,EAAE,KAAK,GAAG,EAAE;AAAA,YACnB,GAAG,EAAE,KAAK,GAAG,EAAE;AAAA,YACf,GAAG,EAAE,KAAK;AAAA,UACd,EAEI;AAAA,kBAAM,GAAG,EAAE;AAAA;AAAA,QAEnB,SAAS,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,UACzB,IAAI,OAAO,KAAK,IAAI,MAAM;AAAA,QAC9B;AAAA,QACA,QAAQ,IAAI,OAAO;AAAA,QACnB,IAAI,OAAO,OAAO;AAAA,QAClB,IAAI,OAAO,GAAG;AAAA,UACV,IAAI,MAAM,CAAC;AAAA,UACX,IAAI,KAAK,GAAG,IAAI;AAAA,UAChB,IAAI,MAAM;AAAA,YACN,MAAM;AAAA,UACV,SAAS,IAAI,EAAG,IAAI,KAAK,EAAE,GAAG;AAAA,YAC1B,IAAI,OAAO,KAAK,GAAG,EAAE,KAAK;AAAA,UAC9B;AAAA,UACA,QAAQ,KAAK,MAAM,KAAK,OAAO;AAAA,QACnC;AAAA,QACA,SAAS,IAAI,EAAG,IAAI,IAAI,EAAE,GAAG;AAAA,UACzB,IAAI,OAAO,KAAK,IAAI,OAAO;AAAA,QAC/B;AAAA,QACA,QAAQ;AAAA,MACZ;AAAA,MACA,IAAI,QAAQ,KAAK;AAAA,QACb,OAAO,MAAM,IAAI,QAAQ;AAAA,UACrB,IAAI,UAAU,IAAI;AAAA,QACtB;AAAA,MACJ,EAEI;AAAA,eAAO,IAAI;AAAA,MACf,IAAI;AAAA,QACA,GAAG,KAAK;AAAA,MAER;AAAA,cAAM,IAAI,KAAK,GAAG,IAAI;AAAA,IAC9B,EACK,SAAI,KAAK;AAAA,MACV,GAAG,KAAK;AAAA,MACR,IAAI,KAAK;AAAA,QACL,SAAS,IAAI,EAAG,IAAI,KAAK,EAAE,GAAG;AAAA,UAC1B,IAAI,KAAK,IAAI,MAAM;AAAA,QACvB;AAAA,MACJ;AAAA,IACJ,EACK,SAAI;AAAA,MACL,MAAM,IAAI,KAAK,GAAG;AAAA,IACtB,GAAG,IAAI;AAAA,IACP,OAAO;AAAA,EACX;AAAA,EACA,IAAI,CAAC;AAAA;AAGT,IAAI,MAAM,QAAS,CAAC,MAAM,IAAI;AAAA,EAC1B,IAAI,KAAK,UAAU;AAAA,IACf,OAAO,KAAK;AAAA,EAChB,IAAI,MAAM,IAAI,GAAG,EAAE;AAAA,EACnB,SAAS,IAAI,GAAG,IAAI,EAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAAA,IACzC,IAAI,MAAM,KAAK;AAAA,IACf,IAAI,IAAI,KAAK,CAAC;AAAA,IACd,KAAK,IAAI;AAAA,EACb;AAAA,EACA,OAAO;AAAA;AAWJ,SAAS,UAAU,CAAC,KAAK,KAAK;AAAA,EACjC,IAAI,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAAA,EACtB,IAAI,KAAK,GAAG,KAAK;AAAA,EACjB,MAAO,IAAI,UAAS;AAAA,IAChB,IAAI,KAAK,KAAK,KAAK,MAAM,GAAG;AAAA,IAC5B,IAAI,OAAO,MAAM,UAAU;AAAA,MACvB,IAAI,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,IAAI,GAAG,EAAE,UAAU,GAAG,GAAG;AAAA,UACrB,KAAK,KAAK,MAAM,GAAG,CAAC;AAAA,UACpB,MAAM,GAAG;AAAA,QACb;AAAA,MACJ,EACK;AAAA,QACD,KAAK,KAAK,GAAG;AAAA,QACb,GAAG,IAAI;AAAA;AAAA,MAEX,MAAO,CAAC,GAAG,KAAI;AAAA,QACX,IAAI,MAAM,IAAI,KAAK,IAAI,GAAG;AAAA,QAC1B,IAAI,CAAC;AAAA,UACD,IAAI,CAAC;AAAA,QACT,IAAI;AAAA,UACA,GAAG,IAAI,GAAG;AAAA,QACT;AAAA,UACD,KAAK,KAAK,GAAG;AAAA,UACb,MAAM,IAAI;AAAA,UACV,IAAI,GAAG,GAAG,GAAG,IAAI,MAAM;AAAA,UACvB,GAAG,EAAE,IAAI,KAAK,GAAG,EAAE,SAAS,IAAI,MAAM;AAAA;AAAA,MAE9C;AAAA,MACA,KAAK,GAAG,IAAK,GAAG,IAAI;AAAA,IACxB,EAEI;AAAA,WAAK;AAAA,IACT,MAAM,IAAI,SAAS,EAAE;AAAA,EACzB;AAAA,EACA,OAAO,IAAI,MAAM,EAAE;AAAA;;;ACtoBhB,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,YAAY;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,YAAY;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,8BAA8B;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACxFO,SAAS,YAAY,CAAC,QAAQ;AAAA,EACnC,MAAM,QAAQ,SAAS,MAAM;AAAA,EAE7B,IAAI,MAAM,SAAS,GAAG;AAAA,IACpB,OAAO,EAAE,MAAM,SAAS,aAAa,aAAa,QAAQ,KAAK,EAAE;AAAA,EACnE,EAAO,SAAI,MAAM,SAAS,GAAG;AAAA,IAC3B,OAAO,EAAE,MAAM,cAAc,aAAa,SAAS,QAAQ,KAAK,EAAE;AAAA,EACpE,EAAO,SAAI,MAAM,SAAS,GAAG;AAAA,IAC3B,OAAO,EAAE,MAAM,WAAW,aAAa,YAAY,QAAQ,KAAK,EAAE;AAAA,EACpE,EAAO,SAAI,MAAM,SAAS,GAAG;AAAA,IAC3B,MAAM,SAAS,CAAC;AAAA,IAChB,SAAS,IAAI,EAAG,IAAI,MAAM,OAAO,KAAK;AAAA,MACpC,OAAO,KAAK,aAAa,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,IACpD;AAAA,IACA,OAAO,EAAE,MAAM,cAAc,aAAa,OAAO;AAAA,EACnD,EAAO,SAAI,MAAM,SAAS,GAAG;AAAA,IAC3B,MAAM,QAAQ,CAAC;AAAA,IACf,SAAS,IAAI,EAAG,IAAI,MAAM,OAAO,KAAK;AAAA,MACpC,MAAM,KAAK,SAAS,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,IAC/C;AAAA,IACA,OAAO,EAAE,MAAM,mBAAmB,aAAa,MAAM;AAAA,EACvD,EAAO,SAAI,MAAM,SAAS,GAAG;AAAA,IAC3B,MAAM,WAAW,CAAC;AAAA,IAClB,SAAS,IAAI,EAAG,IAAI,MAAM,OAAO,KAAK;AAAA,MACpC,SAAS,KAAK,YAAY,QAAQ,SAAS,MAAM,CAAC,CAAC;AAAA,IACrD;AAAA,IACA,OAAO,EAAE,MAAM,gBAAgB,aAAa,SAAS;AAAA,EACvD,EAAO,SAAI,MAAM,SAAS,GAAG;AAAA,IAC3B,MAAM,aAAa,CAAC;AAAA,IACpB,SAAS,IAAI,EAAG,IAAI,MAAM,OAAO,KAAK;AAAA,MACpC,WAAW,KAAK,aAAa,MAAM,CAAC;AAAA,IACtC;AAAA,IACA,OAAO,EAAE,MAAM,sBAAsB,WAAW;AAAA,EAClD,EAAO;AAAA,IACL,MAAM,IAAI,MAAM,8BAA8B,MAAM,MAAM;AAAA;AAAA;AAU9D,SAAS,QAAQ,CAAC,QAAQ;AAAA,EACxB,QAAQ,SAAS;AAAA,EACjB,MAAM,eAAe,KAAK,SAAS,OAAO,QAAQ,MAAM;AAAA,EACxD,MAAM,UAAU,KAAK,UAAU,OAAO,QAAQ,YAAY;AAAA,EAC1D,OAAO,UAAU;AAAA,EAEjB,MAAM,OAAO,UAAU;AAAA,EACvB,MAAM,QAAQ,KAAK,MAAM,UAAU,IAAI;AAAA,EAEvC,IAAI,QAAQ;AAAA,EACZ,IAAI,OAAO,KAAK,QAAQ,GAAG;AAAA,IACzB,QAAQ,KAAK,UAAU,OAAO,QAAQ,YAAY;AAAA,IAClD,OAAO,UAAU;AAAA,EACnB;AAAA,EAGA,IAAI,MAAM;AAAA,EACV,IAAI;AAAA,IAAO;AAAA,EACX,IAAI,UAAU;AAAA,IAAG;AAAA,EAEjB,OAAO,EAAE,cAAc,MAAM,KAAK,MAAM;AAAA;AAQ1C,SAAS,YAAY,CAAC,QAAQ,OAAO;AAAA,EACnC,MAAM,SAAS,CAAC;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,MAAM,KAAK,KAAK;AAAA,IAClC,MAAM,QAAQ,OAAO,KAAK,WAAW,OAAO,QAAQ,MAAM,YAAY;AAAA,IACtE,OAAO,UAAU;AAAA,IACjB,OAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;AAQT,SAAS,QAAQ,CAAC,QAAQ,OAAO;AAAA,EAC/B,MAAM,SAAS,CAAC;AAAA,EAChB,SAAS,IAAI,EAAG,IAAI,MAAM,OAAO,KAAK;AAAA,IACpC,OAAO,KAAK,aAAa,QAAQ,KAAK,CAAC;AAAA,EACzC;AAAA,EACA,OAAO;AAAA;AAQT,SAAS,WAAW,CAAC,QAAQ,OAAO;AAAA,EAClC,QAAQ,SAAS;AAAA,EACjB,MAAM,QAAQ,CAAC;AAAA,EACf,SAAS,IAAI,EAAG,IAAI,MAAM,OAAO,KAAK;AAAA,IACpC,MAAM,QAAQ,KAAK,UAAU,OAAO,QAAQ,MAAM,YAAY;AAAA,IAC9D,OAAO,UAAU;AAAA,IACjB,MAAM,KAAK,SAAS,QAAQ,KAAK,OAAO,MAAM,CAAC,CAAC;AAAA,EAClD;AAAA,EACA,OAAO;AAAA;;;AC5GT,IAAM,UAAU,IAAI;AAMb,IAAM,kBAAkB;AAAA,EAC7B,yBAAyB,CAAC,QAAQ;AAAA,IAChC,OAAO,IAAI,KAAK,OAAO,MAAM,CAAC;AAAA;AAAA,EAEhC,yBAAyB,CAAC,QAAQ;AAAA,IAChC,OAAO,IAAI,KAAK,OAAO,SAAS,KAAK,CAAC;AAAA;AAAA,EAExC,wBAAwB,CAAC,OAAO;AAAA,IAC9B,OAAO,IAAI,KAAK,OAAO,QAAQ,QAAQ,CAAC;AAAA;AAAA,EAE1C,YAAY,CAAC,MAAM;AAAA,IACjB,OAAO,IAAI,KAAK,OAAO,QAAQ;AAAA;AAAA,EAEjC,eAAe,CAAC,OAAO;AAAA,IACrB,OAAO,SAAS,QAAQ,OAAO,KAAK;AAAA;AAAA,EAEtC,aAAa,CAAC,OAAO;AAAA,IACnB,OAAO,SAAS,KAAK,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA;AAAA,EAElD,iBAAiB,CAAC,OAAO;AAAA,IACvB,OAAO,SAAS,aAAa,EAAE,MAAM,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAC;AAAA;AAAA,EAElH,kBAAkB,CAAC,OAAO;AAAA,IACxB,OAAO,SAAS,aAAa,EAAE,MAAM,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAC;AAAA;AAAA,EAElH,aAAa,CAAC,OAAO;AAAA,IACnB,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,MAAM,MAAM,MAAM,KAAK,OAAO,OAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,IAC3E,OAAO,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,MAAM,GAAG,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE;AAAA;AAEhI;AAWO,SAAS,qBAAqB,CAAC,MAAM,YAAY,UAAU,eAAe;AAAA,EAC/E,IAAI,cAAc,SAAS,SAAS,aAAa,GAAG;AAAA,IAClD,IAAI,SAAS;AAAA,IACb,IAAI,gBAAgB,cAAc,EAAE,sBAAsB,aAAa;AAAA,MAErE,SAAS,IAAI,WAAW,YAAY,KAAK,MAAM;AAAA,IACjD;AAAA,IACA,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,MACpC,OAAO,KAAK,WAAW,KAAK;AAAA,IAC9B;AAAA,IACA,OAAO;AAAA,EACT,EAAO;AAAA,IACL,OAAO,QAAQ,MAAM,aAAa;AAAA;AAAA;AAW/B,SAAS,OAAO,CAAC,MAAM,eAAe;AAAA,EAC3C,QAAQ,SAAS,SAAS,OAAO,MAAM,eAAe;AAAA,EACtD,QAAQ,MAAM,gBAAgB,OAAO,cAAc,UAAU;AAAA,EAC7D,MAAM,WAAW,QAAQ,oBAAoB;AAAA,EAG7C,MAAM,YAAY,YAAY,KAAK,OAAK,EAAE,QAAQ,cAAc,SAAS,SAAS;AAAA,EAClF,IAAI,aAAa,SAAS,gBAAgB,UAAU,UAAU,OAAO,SAAS,UAAU;AAAA,IACtF,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,WAAW;AAAA,IACvB,MAAM,QAAQ,QAAQ,SAAS;AAAA,IAC/B,MAAM,SAAS,MAAM,CAAC;AAAA,IACtB,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM;AAAA,IACjC,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,MACnC,IAAI,KAAK,cAAc,YAAY;AAAA,QACjC,IAAI,KAAK,aAAa,KAAK,EAAE,IAAI;AAAA,MACnC,EAAO;AAAA,QACL,IAAI,KAAK,OAAO,KAAK,EAAE,IAAI;AAAA;AAAA,IAE/B;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,CAAC,SAAS,SAAS,SAAS;AAAA,IAC9B,OAAO,MAAM,KAAK,IAAI,EAAE,IAAI,OAAK,QAAQ,yBAAyB,gBAAgB,CAAC,CAAC,CAAC;AAAA,EACvF;AAAA,EACA,IAAI,UAAU,QAAQ;AAAA,IACpB,OAAO,MAAM,KAAK,IAAI,EAAE,IAAI,OAAK,QAAQ,aAAa,CAAC,CAAC;AAAA,EAC1D;AAAA,EACA,IAAI,UAAU,oBAAoB;AAAA,IAChC,OAAO,MAAM,KAAK,IAAI,EAAE,IAAI,OAAK,QAAQ,0BAA0B,CAAC,CAAC;AAAA,EACvE;AAAA,EACA,IAAI,UAAU,oBAAoB;AAAA,IAChC,OAAO,MAAM,KAAK,IAAI,EAAE,IAAI,OAAK,QAAQ,0BAA0B,CAAC,CAAC;AAAA,EACvE;AAAA,EACA,IAAI,UAAU,QAAQ;AAAA,IACpB,OAAO,KAAK,IAAI,OAAK,QAAQ,cAAc,CAAC,CAAC;AAAA,EAC/C;AAAA,EACA,IAAI,UAAU,QAAQ;AAAA,IACpB,MAAM,IAAI,MAAM,4BAA4B;AAAA,EAC9C;AAAA,EACA,IAAI,UAAU,YAAY;AAAA,IACxB,MAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAAA,EACA,IAAI,OAAO,SAAS,YAAY;AAAA,IAC9B,OAAO,KAAK,IAAI,OAAK,QAAQ,kBAAkB,CAAC,CAAC;AAAA,EACnD;AAAA,EACA,IAAI,OAAO,SAAS,aAAa;AAAA,IAC/B,OAAO,KAAK,IAAI,OAAK,QAAQ,mBAAmB,CAAC,CAAC;AAAA,EACpD;AAAA,EACA,IAAI,OAAO,SAAS,QAAQ;AAAA,IAC1B,OAAO,KAAK,IAAI,OAAK,QAAQ,cAAc,CAAC,CAAC;AAAA,EAC/C;AAAA,EACA,IAAI,UAAU,UAAU,OAAO,SAAS,YAAY,QAAQ,SAAS,cAAc;AAAA,IACjF,OAAO,KAAK,IAAI,OAAK,QAAQ,gBAAgB,CAAC,CAAC;AAAA,EACjD;AAAA,EACA,IAAI,UAAU,aAAa,OAAO,SAAS,aAAa,MAAM,aAAa,MAAM,CAAC,MAAM,UAAU;AAAA,IAChG,IAAI,gBAAgB;AAAA,MAAe,OAAO,IAAI,eAAe,KAAK,QAAQ,KAAK,YAAY,KAAK,MAAM;AAAA,IACtG,MAAM,MAAM,WAAW,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,eAAe,KAAK,MAAM;AAAA,IAC9E,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ;AAAA,MAAK,IAAI,KAAK,KAAK;AAAA,IACnD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,aAAa,OAAO,SAAS,aAAa,MAAM,aAAa,MAAM,CAAC,MAAM,UAAU;AAAA,IAChG,IAAI,gBAAgB;AAAA,MAAY,OAAO,IAAI,YAAY,KAAK,QAAQ,KAAK,YAAY,KAAK,MAAM;AAAA,IAChG,MAAM,MAAM,WAAW,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,YAAY,KAAK,MAAM;AAAA,IAC3E,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,MACnC,IAAI,KAAK,KAAK,KAAK,IAAI,aAAa,KAAK,KAAK,KAAK;AAAA,IACrD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,SAAS,WAAW;AAAA,IAC7B,OAAO,MAAM,KAAK,IAAI,EAAE,IAAI,YAAY;AAAA,EAC1C;AAAA,EACA,IAAI,OAAO,SAAS,aAAa;AAAA,IAC/B,QAAQ,SAAS;AAAA,IAEjB,IAAI,SAAS,QAAQ;AAAA,IACrB,IAAI,SAAS;AAAA,MAAU,SAAS,QAAQ;AAAA,IACxC,IAAI,SAAS;AAAA,MAAS,SAAS,QAAQ;AAAA,IACvC,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM;AAAA,IACjC,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,MACnC,IAAI,KAAK,OAAO,KAAK,EAAE;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAOF,SAAS,YAAY,CAAC,OAAO;AAAA,EAClC,IAAI,CAAC,MAAM;AAAA,IAAQ,OAAO;AAAA,EAE1B,IAAI,QAAQ;AAAA,EACZ,WAAW,QAAQ,OAAO;AAAA,IACxB,QAAQ,QAAQ,OAAO,OAAO,IAAI;AAAA,EACpC;AAAA,EAGA,MAAM,OAAO,MAAM,SAAS;AAAA,EAC5B,IAAI,SAAS,MAAM,OAAO,OAAO,CAAC,GAAG;AAAA,IACnC,SAAS,MAAM,OAAO,IAAI;AAAA,EAC5B;AAAA,EAEA,OAAO,OAAO,KAAK;AAAA;AAQrB,SAAS,eAAe,CAAC,OAAO;AAAA,EAC9B,MAAM,QAAQ,SAAS,OAAO;AAAA,EAC9B,MAAM,OAAO,QAAQ;AAAA,EACrB,OAAO,OAAO,kBAAkB;AAAA;AAO3B,SAAS,YAAY,CAAC,OAAO;AAAA,EAClC,IAAI,CAAC;AAAA,IAAO;AAAA,EACZ,MAAM,QAAQ,MAAM,MAAM,IAAI,MAAM;AAAA,EACpC,MAAM,OAAO,SAAS,KAAK,KAAK;AAAA,EAChC,MAAM,MAAM,SAAS,KAAK;AAAA,EAC1B,MAAM,OAAO,QAAQ;AAAA,EACrB,IAAI,QAAQ;AAAA,IAAG,OAAO,OAAO,KAAK,OAAO,OAAO;AAAA,EAChD,IAAI,QAAQ;AAAA,IAAM,OAAO,OAAO,MAAM,OAAO;AAAA,EAC7C,OAAO,OAAO,MAAM,MAAM,OAAO,IAAI,OAAO;AAAA;;;ACxM9C,SAAS,UAAU,CAAC,QAAQ,WAAW,MAAM;AAAA,EAC3C,MAAM,UAAU,OAAO;AAAA,EACvB,MAAM,WAAW,CAAC;AAAA,EAClB,IAAI,QAAQ;AAAA,EAGZ,IAAI,QAAQ,cAAc;AAAA,IACxB,OAAO,SAAS,SAAS,QAAQ,cAAc;AAAA,MAC7C,MAAM,eAAe,OAAO,YAAY;AAAA,MACxC,MAAM,QAAQ,WAAW,QAAQ,YAAY,OAAO,CAAC,GAAG,MAAM,aAAa,IAAI,CAAC;AAAA,MAChF,SAAS,MAAM;AAAA,MACf,SAAS,KAAK,KAAK;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,OAAO,SAAS,UAAU,KAAK;AAAA;AAUnC,SAAS,aAAa,CAAC,QAAQ,MAAM;AAAA,EAC1C,IAAI,OAAO,WAAW,QAAQ,GAAG,CAAC,CAAC;AAAA,EACnC,MAAM,OAAO,CAAC,IAAI;AAAA,EAClB,WAAW,QAAQ,MAAM;AAAA,IACvB,MAAM,QAAQ,KAAK,SAAS,KAAK,YAAS,OAAM,QAAQ,SAAS,IAAI;AAAA,IACrE,IAAI,CAAC;AAAA,MAAO,MAAM,IAAI,MAAM,qCAAqC,MAAM;AAAA,IACvE,KAAK,KAAK,KAAK;AAAA,IACf,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AASF,SAAS,kBAAkB,CAAC,aAAY;AAAA,EAE7C,MAAM,UAAU,CAAC;AAAA,EAEjB,SAAS,QAAQ,CAAC,MAAM;AAAA,IACtB,IAAI,KAAK,SAAS,QAAQ;AAAA,MACxB,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,SAAS,KAAK;AAAA,MAChB;AAAA,IACF,EAAO;AAAA,MACL,QAAQ,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA;AAAA;AAAA,EAGpC,SAAS,WAAU;AAAA,EACnB,OAAO;AAAA;AASF,SAAS,qBAAqB,CAAC,YAAY;AAAA,EAChD,IAAI,WAAW;AAAA,EACf,aAAa,aAAa,YAAY;AAAA,IACpC,IAAI,QAAQ,oBAAoB,YAAY;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AASF,SAAS,qBAAqB,CAAC,YAAY;AAAA,EAChD,IAAI,WAAW;AAAA,EACf,aAAa,aAAa,WAAW,MAAM,CAAC,GAAG;AAAA,IAC7C,IAAI,QAAQ,oBAAoB,YAAY;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AASF,SAAS,UAAU,CAAC,QAAQ;AAAA,EACjC,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,IAAI,OAAO,QAAQ,mBAAmB;AAAA,IAAQ,OAAO;AAAA,EACrD,IAAI,OAAO,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAEvC,MAAM,aAAa,OAAO,SAAS;AAAA,EACnC,IAAI,WAAW,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAC3C,IAAI,WAAW,QAAQ,oBAAoB;AAAA,IAAY,OAAO;AAAA,EAE9D,OAAO;AAAA;AASF,SAAS,SAAS,CAAC,QAAQ;AAAA,EAChC,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EACpB,IAAI,OAAO,QAAQ,mBAAmB;AAAA,IAAO,OAAO;AAAA,EACpD,IAAI,OAAO,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAEvC,MAAM,aAAa,OAAO,SAAS;AAAA,EACnC,IAAI,WAAW,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EAC7C,IAAI,WAAW,QAAQ,oBAAoB;AAAA,IAAY,OAAO;AAAA,EAE9D,MAAM,WAAW,WAAW,SAAS,KAAK,WAAS,MAAM,QAAQ,SAAS,KAAK;AAAA,EAC/E,IAAI,UAAU,QAAQ,oBAAoB;AAAA,IAAY,OAAO;AAAA,EAE7D,MAAM,aAAa,WAAW,SAAS,KAAK,WAAS,MAAM,QAAQ,SAAS,OAAO;AAAA,EACnF,IAAI,YAAY,QAAQ,oBAAoB;AAAA,IAAY,OAAO;AAAA,EAE/D,OAAO;AAAA;AASF,SAAS,YAAY,CAAC,YAAY;AAAA,EACvC,IAAI,WAAW,WAAW;AAAA,IAAG,OAAO;AAAA,EACpC,SAAS,UAAU;AAAA,EACnB,IAAI,OAAO,QAAQ,oBAAoB;AAAA,IAAY,OAAO;AAAA,EAC1D,IAAI,OAAO,SAAS;AAAA,IAAQ,OAAO;AAAA,EACnC,OAAO;AAAA;;;ACpJT,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,MAAM;AACZ,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,OAAO;AACb,IAAM,SAAS;AAQR,SAAS,2BAA2B,CAAC,QAAQ;AAAA,EAElD,MAAM,QAAQ,CAAC;AAAA,EACf,IAAI,MAAM;AAAA,EAEV,OAAO,OAAO,SAAS,OAAO,KAAK,YAAY;AAAA,IAE7C,MAAM,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,IACjD,MAAM,OAAO,OAAO;AAAA,IACpB,IAAI,SAAS;AAAA,MAAM;AAAA,IACnB,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,QAAQ,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7C,MAAM,SAAS,SAAS,YAAY,QAAQ,IAAI;AAAA,EAClD;AAAA,EAEA,OAAO;AAAA;AAUT,SAAS,WAAW,CAAC,QAAQ,MAAM;AAAA,EACjC,QAAQ;AAAA,SACH;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO,OAAO,KAAK,QAAQ,OAAO,QAAQ;AAAA,SACvC;AAAA,SACA;AAAA,MACH,OAAO,WAAW,MAAM;AAAA,SACrB;AAAA,MACH,OAAO,iBAAiB,MAAM;AAAA,SAC3B,QAAQ;AAAA,MACX,MAAM,QAAQ,OAAO,KAAK,WAAW,OAAO,QAAQ,IAAI;AAAA,MACxD,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK,QAAQ;AAAA,MACX,MAAM,eAAe,WAAW,MAAM;AAAA,MACtC,MAAM,WAAW,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,YAAY;AAAA,MACxG,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK,MAAM;AAAA,MACT,MAAM,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,MACjD,MAAM,WAAW,OAAO;AAAA,MACxB,IAAI,WAAW,QAAQ;AAAA,MACvB,IAAI,aAAa,IAAI;AAAA,QACnB,WAAW,WAAW,MAAM;AAAA,MAC9B;AAAA,MACA,MAAM,WAAW,aAAa,QAAQ,aAAa;AAAA,MACnD,MAAM,SAAS,IAAI,MAAM,QAAQ;AAAA,MACjC,SAAS,IAAI,EAAG,IAAI,UAAU,KAAK;AAAA,QACjC,OAAO,KAAK,WAAW,YAAY,QAAQ,IAAI,MAAM,IAAI,YAAY,QAAQ,QAAQ;AAAA,MACvF;AAAA,MACA,OAAO;AAAA,IACT;AAAA,SACK;AAAA,MAEH,OAAO,4BAA4B,MAAM;AAAA;AAAA,MAGzC,MAAM,IAAI,MAAM,0BAA0B,MAAM;AAAA;AAAA;AAU7C,SAAS,UAAU,CAAC,QAAQ;AAAA,EACjC,IAAI,SAAS;AAAA,EACb,IAAI,QAAQ;AAAA,EACZ,OAAO,MAAM;AAAA,IAEX,MAAM,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,IACjD,WAAW,OAAO,QAAS;AAAA,IAC3B,IAAI,EAAE,OAAO,MAAO;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAAA;AASF,SAAS,aAAa,CAAC,QAAQ;AAAA,EAC7B,IAAI,SAAS;AAAA,EACb,IAAI,QAAQ;AAAA,EACZ,OAAO,MAAM;AAAA,IACX,MAAM,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,IACjD,UAAU,OAAO,OAAO,GAAI,KAAK;AAAA,IACjC,IAAI,EAAE,OAAO,MAAO;AAAA,MAClB,OAAO;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACX;AAAA;AAUK,SAAS,UAAU,CAAC,QAAQ;AAAA,EACjC,MAAM,SAAS,WAAW,MAAM;AAAA,EAChC,OAAO,WAAW,IAAI,EAAE,SAAS;AAAA;AAS5B,SAAS,gBAAgB,CAAC,QAAQ;AAAA,EACvC,MAAM,SAAS,cAAc,MAAM;AAAA,EACnC,OAAO,UAAU,KAAK,EAAE,SAAS;AAAA;;;ACrJ5B,SAAS,cAAc,CAAC,QAAQ,oBAAoB;AAAA,EAGzD,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,MAAM,oBAAoB,KAAK,GAAG,UAAU,QAAQ,KAAK,GAAG;AAAA,EAClE,MAAM,kBAAkB,OAAO,KAAK,MAAM,GAAG,GAAG,YAAY,CAAC;AAAA,EAC7D,YAAY,MAAM,WAAW,OAAO,QAAQ,cAAc,GAAG;AAAA,IAC3D,IAAI,OAAO,aAAa;AAAA,MAAO;AAAA,IAE/B,MAAM,OAAO,OAAO,UAAU,cAAc,cAAc;AAAA,IAC1D,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO,KAAK,MAAM;AAAA,IAC/C,MAAM,MAAM,KAAK,GAAG,GAAG,aAAa,GAAG,KAAK,SAAS,MAAM;AAAA,IAE3D,QAAQ,IAAI,MAAM,EAAE,MAAM,IAAI,CAAC;AAAA,EACjC;AAAA,EAIA,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,KAAK;AAAA,IACtC,QAAQ,cAAc,MAAM,cAAc,SAAS,OAAO;AAAA,IAC1D,IAAI,cAAc;AAAA,MAChB,KAAK;AAAA,MACL;AAAA,IACF;AAAA,IACA,IAAI,SAAS,gBAAgB,CAAC,cAAc;AAAA,MAC1C,OAAO,GAAG,eAAe,QAAQ,IAAI,IAAI;AAAA,IAC3C;AAAA,EACF;AAAA;;;ACtBK,IAAM,0BAA0B,KAAK;AAE5C,IAAM,WAAU,IAAI;AACpB,SAAS,MAAM,CAA2B,OAAO;AAAA,EAC/C,OAAO,SAAS,SAAQ,OAAO,KAAK;AAAA;AA2BtC,eAAsB,oBAAoB,CAAC,eAAe,SAAS,mBAAmB,yBAAyB,aAAa,SAAS,CAAC,GAAG;AAAA,EACvI,IAAI,CAAC,eAAe,EAAE,YAAY,cAAc;AAAA,IAAI,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAGlG,MAAM,eAAe,KAAK,IAAI,GAAG,YAAY,aAAa,gBAAgB;AAAA,EAC1E,MAAM,eAAe,MAAM,YAAY,MAAM,cAAc,YAAY,UAAU;AAAA,EAGjF,MAAM,aAAa,IAAI,SAAS,YAAY;AAAA,EAC5C,IAAI,WAAW,UAAU,aAAa,aAAa,GAAG,IAAI,MAAM,WAAY;AAAA,IAC1E,MAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAAA,EAIA,MAAM,iBAAiB,WAAW,UAAU,aAAa,aAAa,GAAG,IAAI;AAAA,EAC7E,IAAI,iBAAiB,YAAY,aAAa,GAAG;AAAA,IAC/C,MAAM,IAAI,MAAM,2BAA2B,2CAA2C,YAAY,aAAa,GAAG;AAAA,EACpH;AAAA,EAGA,IAAI,iBAAiB,IAAI,kBAAkB;AAAA,IAEzC,MAAM,iBAAiB,YAAY,aAAa,iBAAiB;AAAA,IACjE,MAAM,iBAAiB,MAAM,YAAY,MAAM,gBAAgB,YAAY;AAAA,IAE3E,MAAM,iBAAiB,IAAI,YAAY,iBAAiB,CAAC;AAAA,IACzD,MAAM,eAAe,IAAI,WAAW,cAAc;AAAA,IAClD,aAAa,IAAI,IAAI,WAAW,cAAc,CAAC;AAAA,IAC/C,aAAa,IAAI,IAAI,WAAW,YAAY,GAAG,eAAe,cAAc;AAAA,IAC5E,OAAO,gBAAgB,gBAAgB,EAAE,SAAS,WAAW,CAAC;AAAA,EAChE,EAAO;AAAA,IAEL,OAAO,gBAAgB,cAAc,EAAE,SAAS,WAAW,CAAC;AAAA;AAAA;AAWzD,SAAS,eAAe,CAAC,eAAe,SAAS,aAAa,SAAS,CAAC,GAAG;AAAA,EAChF,IAAI,EAAE,uBAAuB;AAAA,IAAc,MAAM,IAAI,MAAM,8BAA8B;AAAA,EACzF,MAAM,OAAO,IAAI,SAAS,WAAW;AAAA,EAGrC,UAAU,KAAK,oBAAoB,QAAQ;AAAA,EAG3C,IAAI,KAAK,aAAa,GAAG;AAAA,IACvB,MAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAAA,EACA,IAAI,KAAK,UAAU,KAAK,aAAa,GAAG,IAAI,MAAM,WAAY;AAAA,IAC5D,MAAM,IAAI,MAAM,uCAAuC;AAAA,EACzD;AAAA,EAIA,MAAM,uBAAuB,KAAK,aAAa;AAAA,EAC/C,MAAM,iBAAiB,KAAK,UAAU,sBAAsB,IAAI;AAAA,EAChE,IAAI,iBAAiB,KAAK,aAAa,GAAG;AAAA,IAExC,MAAM,IAAI,MAAM,2BAA2B,2CAA2C,KAAK,aAAa,GAAG;AAAA,EAC7G;AAAA,EAEA,MAAM,iBAAiB,uBAAuB;AAAA,EAC9C,MAAM,SAAS,EAAE,MAAM,QAAQ,eAAe;AAAA,EAC9C,MAAM,WAAW,4BAA4B,MAAM;AAAA,EAGnD,MAAM,UAAU,SAAS;AAAA,EAEzB,MAAM,SAAS,SAAS,QAAQ,IAAI,CAAoB,WAAW;AAAA,IACjE,MAAM,aAAa,MAAM;AAAA,IACzB,aAAa,MAAM;AAAA,IACnB,iBAAiB,qBAAqB,MAAM;AAAA,IAC5C,MAAM,OAAO,MAAM,OAAO;AAAA,IAC1B,cAAc,MAAM;AAAA,IACpB,gBAAgB,eAAe,MAAM;AAAA,IACrC,OAAO,MAAM;AAAA,IACb,WAAW,MAAM;AAAA,IACjB,UAAU,MAAM;AAAA,IAChB,cAAc,YAAY,MAAM,QAAQ;AAAA,EAC1C,EAAE;AAAA,EAEF,MAAM,eAAe,OAAO,OAAO,OAAK,EAAE,IAAI;AAAA,EAC9C,MAAM,WAAW,SAAS;AAAA,EAC1B,MAAM,aAAa,SAAS,QAAQ,IAAI,CAAoB,cAAc;AAAA,IACxE,SAAS,SAAS,QAAQ,IAAI,CAAoB,QAA8B,iBAAiB;AAAA,MAC/F,WAAW,OAAO,OAAO,OAAO;AAAA,MAChC,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO,WAAW;AAAA,QAC3B,MAAM,aAAa,OAAO,QAAQ;AAAA,QAClC,WAAW,OAAO,QAAQ,SAAS,IAAI,CAAuB,MAAM,UAAU,EAAE;AAAA,QAChF,gBAAgB,OAAO,QAAQ,QAAQ,IAAI,MAAM;AAAA,QACjD,OAAO,kBAAkB,OAAO,QAAQ;AAAA,QACxC,YAAY,OAAO,QAAQ;AAAA,QAC3B,yBAAyB,OAAO,QAAQ;AAAA,QACxC,uBAAuB,OAAO,QAAQ;AAAA,QACtC,oBAAoB,OAAO,QAAQ,SAAS,IAAI,CAAoB,QAAQ;AAAA,UAC1E,KAAK,OAAO,GAAG,OAAO;AAAA,UACtB,OAAO,OAAO,GAAG,OAAO;AAAA,QAC1B,EAAE;AAAA,QACF,kBAAkB,OAAO,QAAQ;AAAA,QACjC,mBAAmB,OAAO,QAAQ;AAAA,QAClC,wBAAwB,OAAO,QAAQ;AAAA,QACvC,YAAY,aAAa,OAAO,QAAQ,UAAU,aAAa,cAAc,OAAO;AAAA,QACpF,gBAAgB,OAAO,QAAQ,UAAU,IAAI,CAAoB,kBAAkB;AAAA,UACjF,WAAW,UAAU,aAAa;AAAA,UAClC,UAAU,UAAU,aAAa;AAAA,UACjC,OAAO,aAAa;AAAA,QACtB,EAAE;AAAA,QACF,qBAAqB,OAAO,QAAQ;AAAA,QACpC,qBAAqB,OAAO,QAAQ;AAAA,QACpC,iBAAiB,OAAO,QAAQ,YAAY;AAAA,UAC1C,iCAAiC,OAAO,QAAQ,SAAS;AAAA,UACzD,4BAA4B,OAAO,QAAQ,SAAS;AAAA,UACpD,4BAA4B,OAAO,QAAQ,SAAS;AAAA,QACtD;AAAA,QACA,uBAAuB,OAAO,QAAQ,YAAY;AAAA,UAChD,MAAM,OAAO,QAAQ,SAAS,WAAW;AAAA,YACvC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,YACtC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,YACtC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,YACtC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,YACtC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,YACtC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,YACtC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,YACtC,MAAM,OAAO,QAAQ,SAAS,QAAQ;AAAA,UACxC;AAAA,UACA,kBAAkB,OAAO,QAAQ,SAAS;AAAA,QAC5C;AAAA,MACF;AAAA,MACA,qBAAqB,OAAO;AAAA,MAC5B,qBAAqB,OAAO;AAAA,MAC5B,qBAAqB,OAAO;AAAA,MAC5B,qBAAqB,OAAO;AAAA,MAC5B,iBAAiB,OAAO;AAAA,MACxB,2BAA2B,OAAO;AAAA,IACpC,EAAE;AAAA,IACF,iBAAiB,SAAS;AAAA,IAC1B,UAAU,SAAS;AAAA,IACnB,iBAAiB,SAAS,SAAS,IAAI,CAAoB,mBAAmB;AAAA,MAC5E,YAAY,cAAc;AAAA,MAC1B,YAAY,cAAc;AAAA,MAC1B,aAAa,cAAc;AAAA,IAC7B,EAAE;AAAA,IACF,aAAa,SAAS;AAAA,IACtB,uBAAuB,SAAS;AAAA,IAChC,SAAS,SAAS;AAAA,EACpB,EAAE;AAAA,EAEF,MAAM,qBAAqB,SAAS,SAAS,IAAI,CAAoB,QAAQ;AAAA,IAC3E,KAAK,OAAO,GAAG,OAAO;AAAA,IACtB,OAAO,OAAO,GAAG,OAAO;AAAA,EAC1B,EAAE;AAAA,EACF,MAAM,aAAa,OAAO,SAAS,OAAO;AAAA,EAE1C,IAAI,YAAY;AAAA,IACd,eAAe,QAAQ,kBAAkB;AAAA,EAC3C;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,EACnB;AAAA;AASK,SAAS,aAAa,GAAG,UAAU;AAAA,EACxC,OAAO,cAAc,QAAQ,CAAC,CAAC,EAAE;AAAA;AAOnC,SAAS,WAAW,CAAC,cAAa;AAAA,EAChC,IAAI,cAAa;AAAA,IAAS,OAAO,EAAE,MAAM,SAAS;AAAA,EAClD,IAAI,cAAa;AAAA,IAAS,OAAO,EAAE,MAAM,MAAM;AAAA,EAC/C,IAAI,cAAa;AAAA,IAAS,OAAO,EAAE,MAAM,OAAO;AAAA,EAChD,IAAI,cAAa;AAAA,IAAS,OAAO,EAAE,MAAM,OAAO;AAAA,EAChD,IAAI,cAAa;AAAA,IAAS,OAAO;AAAA,MAC/B,MAAM;AAAA,MACN,OAAO,aAAY,QAAQ;AAAA,MAC3B,WAAW,aAAY,QAAQ;AAAA,IACjC;AAAA,EACA,IAAI,cAAa;AAAA,IAAS,OAAO,EAAE,MAAM,OAAO;AAAA,EAChD,IAAI,cAAa;AAAA,IAAS,OAAO;AAAA,MAC/B,MAAM;AAAA,MACN,iBAAiB,aAAY,QAAQ;AAAA,MACrC,MAAM,SAAS,aAAY,QAAQ,OAAO;AAAA,IAC5C;AAAA,EACA,IAAI,cAAa;AAAA,IAAS,OAAO;AAAA,MAC/B,MAAM;AAAA,MACN,iBAAiB,aAAY,QAAQ;AAAA,MACrC,MAAM,SAAS,aAAY,QAAQ,OAAO;AAAA,IAC5C;AAAA,EACA,IAAI,cAAa;AAAA,IAAU,OAAO;AAAA,MAChC,MAAM;AAAA,MACN,UAAU,aAAY,SAAS;AAAA,MAC/B,UAAU,aAAY,SAAS;AAAA,IACjC;AAAA,EACA,IAAI,cAAa;AAAA,IAAU,OAAO,EAAE,MAAM,OAAO;AAAA,EACjD,IAAI,cAAa;AAAA,IAAU,OAAO,EAAE,MAAM,OAAO;AAAA,EACjD,IAAI,cAAa;AAAA,IAAU,OAAO,EAAE,MAAM,OAAO;AAAA,EACjD,IAAI,cAAa;AAAA,IAAU,OAAO,EAAE,MAAM,OAAO;AAAA,EACjD,IAAI,cAAa;AAAA,IAAU,OAAO,EAAE,MAAM,UAAU;AAAA,EACpD,IAAI,cAAa;AAAA,IAAU,OAAO;AAAA,MAChC,MAAM;AAAA,MACN,uBAAuB,aAAY,SAAS;AAAA,IAC9C;AAAA,EACA,IAAI,cAAa;AAAA,IAAU,OAAO;AAAA,MAChC,MAAM;AAAA,MACN,KAAK,OAAO,aAAY,SAAS,OAAO;AAAA,IAC1C;AAAA,EACA,IAAI,cAAa;AAAA,IAAU,OAAO;AAAA,MAChC,MAAM;AAAA,MACN,KAAK,OAAO,aAAY,SAAS,OAAO;AAAA,MACxC,WAAW,4BAA4B,aAAY,SAAS;AAAA,IAC9D;AAAA,EACA,OAAO;AAAA;AAOT,SAAS,QAAQ,CAAC,MAAM;AAAA,EACtB,IAAI,KAAK;AAAA,IAAS,OAAO;AAAA,EACzB,IAAI,KAAK;AAAA,IAAS,OAAO;AAAA,EACzB,IAAI,KAAK;AAAA,IAAS,OAAO;AAAA,EACzB,MAAM,IAAI,MAAM,4BAA4B;AAAA;AAW9C,SAAS,YAAY,CAAC,OAAO,QAAQ,SAAS;AAAA,EAC5C,OAAO,SAAS;AAAA,IACd,KAAK,gBAAgB,MAAM,SAAS,QAAQ,OAAO;AAAA,IACnD,KAAK,gBAAgB,MAAM,SAAS,QAAQ,OAAO;AAAA,IACnD,YAAY,MAAM;AAAA,IAClB,gBAAgB,MAAM;AAAA,IACtB,WAAW,gBAAgB,MAAM,SAAS,QAAQ,OAAO;AAAA,IACzD,WAAW,gBAAgB,MAAM,SAAS,QAAQ,OAAO;AAAA,IACzD,oBAAoB,MAAM;AAAA,IAC1B,oBAAoB,MAAM;AAAA,EAC5B;AAAA;AASK,SAAS,eAAe,CAAC,OAAO,QAAQ,SAAS;AAAA,EACtD,QAAQ,MAAM,gBAAgB,iBAAiB;AAAA,EAC/C,IAAI,UAAU;AAAA,IAAW,OAAO;AAAA,EAChC,IAAI,SAAS;AAAA,IAAW,OAAO,MAAM,OAAO;AAAA,EAC5C,IAAI,SAAS;AAAA,IAAc,OAAO,QAAQ,gBAAgB,KAAK;AAAA,EAC/D,MAAM,OAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EAC1E,IAAI,SAAS,WAAW,KAAK,eAAe;AAAA,IAAG,OAAO,KAAK,WAAW,GAAG,IAAI;AAAA,EAC7E,IAAI,SAAS,YAAY,KAAK,eAAe;AAAA,IAAG,OAAO,KAAK,WAAW,GAAG,IAAI;AAAA,EAC9E,IAAI,SAAS,WAAW,mBAAmB,aAAa,KAAK,eAAe,GAAG;AAAA,IAC7E,OAAO,KAAK,SAAS,GAAG,IAAI,IAAI,MAAM,EAAE,OAAO,SAAS;AAAA,EAC1D;AAAA,EACA,IAAI,SAAS,WAAW,mBAAmB,aAAa,KAAK,eAAe,GAAG;AAAA,IAC7E,OAAO,OAAO,KAAK,YAAY,GAAG,IAAI,CAAC,IAAI,MAAM,EAAE,OAAO,SAAS;AAAA,EACrE;AAAA,EACA,IAAI,SAAS,WAAW,mBAAmB;AAAA,IAAQ,OAAO,QAAQ,aAAa,KAAK,SAAS,GAAG,IAAI,CAAC;AAAA,EACrG,IAAI,SAAS,WAAW,mBAAmB;AAAA,IAAoB,OAAO,QAAQ,0BAA0B,KAAK,YAAY,GAAG,IAAI,CAAC;AAAA,EACjI,IAAI,SAAS,WAAW,mBAAmB;AAAA,IAAoB,OAAO,QAAQ,0BAA0B,KAAK,YAAY,GAAG,IAAI,CAAC;AAAA,EACjI,IAAI,SAAS,WAAW,cAAc,SAAS,eAAe,cAAc,SAAS;AAAA,IAAS,OAAO,QAAQ,yBAAyB,KAAK,YAAY,GAAG,IAAI,CAAC;AAAA,EAC/J,IAAI,SAAS,WAAW,cAAc,SAAS,eAAe,cAAc,SAAS;AAAA,IAAU,OAAO,QAAQ,0BAA0B,KAAK,YAAY,GAAG,IAAI,CAAC;AAAA,EACjK,IAAI,SAAS,WAAW,cAAc,SAAS;AAAA,IAAa,OAAO,QAAQ,0BAA0B,KAAK,YAAY,GAAG,IAAI,CAAC;AAAA,EAC9H,MAAM,WAAW,gBAAgB,WAAW,OAAO,KACjD,cAAc,SAAS,aAAa,CAAC,aAAa;AAAA,EACpD,IAAI,SAAS,WAAW,YAAY,KAAK,eAAe;AAAA,IAAG,OAAO,KAAK,UAAU,GAAG,IAAI;AAAA,EACxF,IAAI,SAAS,WAAW,YAAY,KAAK,eAAe;AAAA,IAAG,OAAO,KAAK,aAAa,GAAG,IAAI;AAAA,EAC3F,IAAI,SAAS,WAAW,KAAK,eAAe;AAAA,IAAG,OAAO,KAAK,SAAS,GAAG,IAAI;AAAA,EAC3E,IAAI,SAAS,WAAW,KAAK,eAAe;AAAA,IAAG,OAAO,KAAK,YAAY,GAAG,IAAI;AAAA,EAC9E,IAAI,mBAAmB;AAAA,IAAW,OAAO,aAAa,KAAK,IAAI,MAAM,EAAE,OAAO,SAAS;AAAA,EACvF,IAAI,cAAc,SAAS;AAAA,IAAW,OAAO,aAAa,KAAK;AAAA,EAC/D,IAAI,cAAc,SAAS;AAAA,IAAQ,OAAO,QAAQ,cAAc,KAAK;AAAA,EACrE,IAAI,SAAS;AAAA,IAAwB,OAAO;AAAA,EAE5C,OAAO;AAAA;;;AC5UF,SAAS,eAAe,CAAC,QAAQ,QAAQ,UAAU,WAAW;AAAA,EACnE,UAAU,KAAK,oBAAoB,QAAQ;AAAA,EAE3C,MAAM,SAAS,4BAA4B,MAAM;AAAA,EACjD,OAAO;AAAA,IACL,YAAY,OAAO;AAAA,IACnB,YAAY,OAAO,QAAQ,IAAI,CAAoB,MAAM,gBAAgB,GAAG,QAAQ,OAAO,CAAC;AAAA,IAC5F,YAAY,OAAO,QAAQ,IAAI,CAAoB,MAAM,gBAAgB,GAAG,QAAQ,OAAO,CAAC;AAAA,IAC5F,gBAAgB,eAAe,OAAO;AAAA,IACtC,aAAa,OAAO;AAAA,IACpB,6BAA6B,OAAO;AAAA,IACpC,6BAA6B,OAAO;AAAA,EACtC;AAAA;AAOK,SAAS,eAAe,CAAC,QAAQ;AAAA,EACtC,MAAM,SAAS,4BAA4B,MAAM;AAAA,EACjD,OAAO;AAAA,IAEL,gBAAgB,OAAO,QAAQ,IAAI,UAAQ;AAAA,MACzC,QAAQ,IAAI;AAAA,MACZ,sBAAsB,IAAI;AAAA,MAC1B,iBAAiB,IAAI;AAAA,IACvB,EAAE;AAAA,IACF,iCAAiC,OAAO;AAAA,EAC1C;AAAA;;;ACzCF,IAAM,OAAO;AACb,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,SAAS;AACf,IAAM,SAAS;AAOf,SAAS,MAAM,CAAC,GAAG,GAAG;AAAA,EACpB,QAAQ,KAAK,IAAI,KAAK,MAAM,KAAK;AAAA;AAQnC,SAAS,KAAK,CAAC,KAAK,KAAK;AAAA,EACvB,MAAM,MAAM,MAAM,SAAS;AAAA,EAC3B,MAAM,OAAO,KAAK,GAAG;AAAA,EACrB,OAAO,MAAM,SAAS;AAAA;AAQxB,SAAS,UAAU,CAAC,KAAK,KAAK;AAAA,EAC5B,OAAO,MAAM,IAAI,GAAG;AAAA,EACpB,OAAO,MAAM,SAAS,SAAS;AAAA;AAU1B,SAAS,QAAQ,CAAC,OAAO,OAAO,IAAI;AAAA,EACzC,MAAM,OAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EAC1E,MAAM,MAAM,MAAM;AAAA,EAClB,IAAI,SAAS;AAAA,EACb,IAAI;AAAA,EAEJ,IAAI,OAAO,IAAI;AAAA,IACb,IAAI,KAAK,OAAO,SAAS,SAAS;AAAA,IAClC,IAAI,KAAK,OAAO,SAAS;AAAA,IACzB,IAAI,KAAK;AAAA,IACT,IAAI,KAAK,OAAO,SAAS;AAAA,IAEzB,OAAO,SAAS,MAAM,KAAK;AAAA,MACzB,KAAK,MAAM,IAAI,KAAK,aAAa,QAAQ,IAAI,CAAC;AAAA,MAAG,UAAU;AAAA,MAC3D,KAAK,MAAM,IAAI,KAAK,aAAa,QAAQ,IAAI,CAAC;AAAA,MAAG,UAAU;AAAA,MAC3D,KAAK,MAAM,IAAI,KAAK,aAAa,QAAQ,IAAI,CAAC;AAAA,MAAG,UAAU;AAAA,MAC3D,KAAK,MAAM,IAAI,KAAK,aAAa,QAAQ,IAAI,CAAC;AAAA,MAAG,UAAU;AAAA,IAC7D;AAAA,IAEA,MAAM,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI;AAAA,IAC5E,MAAM,WAAW,KAAK,EAAE;AAAA,IACxB,MAAM,WAAW,KAAK,EAAE;AAAA,IACxB,MAAM,WAAW,KAAK,EAAE;AAAA,IACxB,MAAM,WAAW,KAAK,EAAE;AAAA,EAC1B,EAAO;AAAA,IACL,MAAM,OAAO,SAAS;AAAA;AAAA,EAGxB,MAAM,MAAM,OAAO,GAAG,IAAI;AAAA,EAE1B,OAAO,SAAS,KAAK,KAAK;AAAA,IACxB,OAAO,MAAM,IAAI,KAAK,aAAa,QAAQ,IAAI,CAAC;AAAA,IAChD,MAAM,OAAO,KAAK,GAAG,IAAI,SAAS,SAAS;AAAA,IAC3C,UAAU;AAAA,EACZ;AAAA,EAEA,IAAI,SAAS,KAAK,KAAK;AAAA,IACrB,OAAO,OAAO,KAAK,UAAU,QAAQ,IAAI,CAAC,IAAI,SAAS;AAAA,IACvD,MAAM,OAAO,KAAK,GAAG,IAAI,SAAS,SAAS;AAAA,IAC3C,UAAU;AAAA,EACZ;AAAA,EAEA,OAAO,SAAS,KAAK;AAAA,IACnB,OAAO,OAAO,KAAK,SAAS,MAAM,CAAC,IAAI,SAAS;AAAA,IAChD,MAAM,OAAO,KAAK,GAAG,IAAI,SAAS;AAAA,IAClC,UAAU;AAAA,EACZ;AAAA,EAEA,OAAO,OAAO;AAAA,EACd,MAAM,MAAM,SAAS;AAAA,EACrB,OAAO,OAAO;AAAA,EACd,MAAM,MAAM,SAAS;AAAA,EACrB,OAAO,OAAO;AAAA,EACd,OAAO;AAAA;;;ACxFT,IAAM,cAAc,IAAI;AAExB,IAAM,OAAO,IAAI,YAAY;AAAA,EAC3B;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AAAA,EACpC;AAAA,EAAY;AAAA,EAAY;AAAA,EAAY;AACtC,CAAC;AASD,SAAS,UAAU,CAAC,MAAM,WAAW;AAAA,EACnC,OAAO,QAAQ,QAAQ,OAAO,OAAO,SAAS,KAAK,GAAG;AAAA;AASxD,SAAS,SAAS,CAAC,MAAM;AAAA,EACvB,MAAM,IAAI,IAAI,YAAY,CAAC;AAAA,EAC3B,MAAM,MAAM,OAAO,OAAO,WAAW,IAAI;AAAA,EACzC,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,IAC1B,EAAE,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,EAAE,MAAM;AAAA,EAC3C;AAAA,EACA,OAAO;AAAA;AAyBF,SAAS,YAAY,CAAC,QAAQ,MAAM;AAAA,EACzC,MAAM,SAAS,WAAW,MAAM,OAAO,UAAU,CAAC,KAAK;AAAA,EACvD,MAAM,IAAI,UAAU,IAAI;AAAA,EACxB,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,IAC1B,KAAK,OAAO,SAAS,KAAK,EAAE,QAAQ;AAAA,MAAG,OAAO;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;AAWF,SAAS,eAAe,CAAC,QAAQ;AAAA,EACtC,MAAM,SAAS,4BAA4B,MAAM;AAAA,EACjD,MAAM,WAAW,OAAO;AAAA,EACxB,IAAI,OAAO,aAAa,YAAY,YAAY,KAAK,WAAW,OAAO;AAAA,IAAG;AAAA,EAE1E,IAAI,CAAC,OAAO,SAAS;AAAA,IAAS;AAAA,EAC9B,IAAI,CAAC,OAAO,SAAS;AAAA,IAAS;AAAA,EAC9B,IAAI,CAAC,OAAO,SAAS;AAAA,IAAS;AAAA,EAE9B,QAAQ,MAAM,WAAW;AAAA,EACzB,IAAI,SAAS,WAAW,KAAK,YAAY;AAAA,IACvC,MAAM,IAAI,MAAM,wCAAwC,wBAAwB,KAAK,aAAa,QAAQ;AAAA,EAC5G;AAAA,EAEA,MAAM,SAAS,IAAI,YAAY,YAAY,CAAC;AAAA,EAC5C,SAAS,IAAI,EAAG,IAAI,OAAO,QAAQ,KAAK;AAAA,IACtC,OAAO,KAAK,KAAK,UAAU,SAAS,IAAI,GAAG,IAAI;AAAA,EACjD;AAAA,EACA,OAAO,SAAS,SAAS;AAAA,EACzB,OAAO,EAAE,UAAU,OAAO;AAAA;AAcrB,SAAS,gBAAgB,CAAC,OAAO,SAAS;AAAA,EAC/C,IAAI,UAAU,QAAQ,UAAU;AAAA,IAAW;AAAA,EAC3C,QAAQ,MAAM,gBAAgB,iBAAiB;AAAA,EAE/C,IAAI,SAAS,WAAW;AAAA,IACtB,IAAI,OAAO,UAAU;AAAA,MAAW;AAAA,IAChC,OAAO,SAAS,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AAAA,EACjD;AAAA,EAEA,IAAI,SAAS,SAAS;AAAA,IACpB,IAAI,OAAO,UAAU;AAAA,MAAU;AAAA,IAC/B,MAAM,MAAM,IAAI,YAAY,CAAC;AAAA,IAC7B,IAAI,SAAS,GAAG,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA,IAC3C,OAAO,SAAS,IAAI,WAAW,GAAG,CAAC;AAAA,EACrC;AAAA,EAEA,IAAI,SAAS,UAAU;AAAA,IACrB,IAAI,OAAO,UAAU;AAAA,MAAU;AAAA,IAC/B,MAAM,MAAM,IAAI,YAAY,CAAC;AAAA,IAC7B,IAAI,SAAS,GAAG,EAAE,WAAW,GAAG,OAAO,IAAI;AAAA,IAC3C,OAAO,SAAS,IAAI,WAAW,GAAG,CAAC;AAAA,EACrC;AAAA,EAEA,IAAI,SAAS,SAAS;AAAA,IACpB,IAAI,mBAAmB,UAAU,mBAAmB,aAAa,mBAAmB;AAAA,MAAe;AAAA,IACnG,IAAI,cAAc,SAAS,UAAU,cAAc,SAAS,UAAU,cAAc,SAAS;AAAA,MAAW;AAAA,IACxG,IAAI,OAAO,UAAU,YAAY,CAAC,OAAO,UAAU,KAAK;AAAA,MAAG;AAAA,IAC3D,MAAM,MAAM,IAAI,YAAY,CAAC;AAAA,IAC7B,IAAI,SAAS,GAAG,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI;AAAA,IAC7C,OAAO,SAAS,IAAI,WAAW,GAAG,CAAC;AAAA,EACrC;AAAA,EAEA,IAAI,SAAS,SAAS;AAAA,IACpB,IAAI,mBAAmB,sBAAsB,mBAAmB;AAAA,MAAoB;AAAA,IACpF,IAAI,mBAAmB,iBAAiB,mBAAmB;AAAA,MAAW;AAAA,IACtE,IAAI,cAAc,SAAS,eAAe,cAAc,SAAS,UAAU,cAAc,SAAS;AAAA,MAAW;AAAA,IAC7G,IAAI;AAAA,IACJ,IAAI,OAAO,UAAU;AAAA,MAAU,WAAW;AAAA,IACrC,SAAI,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK;AAAA,MAAG,WAAW,OAAO,KAAK;AAAA,IACrF;AAAA;AAAA,IACL,MAAM,MAAM,IAAI,YAAY,CAAC;AAAA,IAC7B,IAAI,SAAS,GAAG,EAAE,aAAa,GAAG,OAAO,QAAQ,IAAI,QAAQ,GAAG,IAAI;AAAA,IACpE,OAAO,SAAS,IAAI,WAAW,GAAG,CAAC;AAAA,EACrC;AAAA,EAEA,IAAI,SAAS,cAAc;AAAA,IACzB,IAAI,mBAAmB,UAAU,mBAAmB,UAAU,mBAAmB;AAAA,MAAW;AAAA,IAC5F,IAAI,cAAc,SAAS,UAAU,cAAc,SAAS,UAAU,cAAc,SAAS;AAAA,MAAW;AAAA,IACxG,IAAI,cAAc,SAAS,cAAc,cAAc,SAAS;AAAA,MAAa;AAAA,IAC7E,IAAI,OAAO,UAAU;AAAA,MAAU,OAAO,SAAS,YAAY,OAAO,KAAK,CAAC;AAAA,IACxE,IAAI,iBAAiB;AAAA,MAAY,OAAO,SAAS,KAAK;AAAA,IACtD;AAAA,EACF;AAAA,EAEA,IAAI,SAAS,wBAAwB;AAAA,IACnC,IAAI,mBAAmB,aAAa,mBAAmB;AAAA,MAAY;AAAA,IACnE,IAAI,cAAc,SAAS,aAAa,cAAc,SAAS,UAAU,cAAc,SAAS;AAAA,MAAW;AAAA,IAC3G,IAAI,cAAc,SAAS,cAAc,cAAc,SAAS;AAAA,MAAa;AAAA,IAC7E,IAAI,iBAAiB;AAAA,MAAY,OAAO,SAAS,KAAK;AAAA,IACtD;AAAA,EACF;AAAA,EAGA;AAAA;AAWK,SAAS,oBAAoB,CAAC,QAAQ;AAAA,EAE3C,MAAM,MAAM,IAAI;AAAA,EAChB,kBAAkB,QAAQ,GAAG;AAAA,EAC7B,OAAO;AAAA;AAOT,SAAS,iBAAiB,CAAC,QAAQ,KAAK;AAAA,EACtC,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAClD,WAAW,OAAO,OAAO;AAAA,MAAM,kBAAkB,KAAK,GAAG;AAAA,IACzD;AAAA,EACF;AAAA,EACA,IAAI,SAAS,UAAU,MAAM,QAAQ,OAAO,GAAG,GAAG;AAAA,IAChD,WAAW,OAAO,OAAO;AAAA,MAAK,kBAAkB,KAAK,GAAG;AAAA,IACxD;AAAA,EACF;AAAA,EAEA,IAAI,UAAU;AAAA,IAAQ;AAAA,EACtB,YAAY,OAAO,cAAc,OAAO,QAAQ,MAAM,GAAG;AAAA,IACvD,IAAI,MAAM,WAAW,GAAG;AAAA,MAAG;AAAA,IAC3B,IAAI,OAAO,cAAc,YAAY,cAAc,QAAQ,CAAC,MAAM,QAAQ,SAAS,GAAG;AAAA,MACpF,IAAI,SAAS,aAAa,SAAS;AAAA,QAAW,IAAI,IAAI,KAAK;AAAA,IAC7D,EAAO;AAAA,MAEL,IAAI,IAAI,KAAK;AAAA;AAAA,EAEjB;AAAA;;;ACzLK,SAAS,MAAM,CAAC,KAAK,KAAK;AAAA,EAC/B,MAAM,QAAQ;AAAA,EACd,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK,OAAO;AAAA,IAC1C,IAAI,KAAK,GAAG,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC;AAAA,EACrC;AAAA;AAWK,SAAS,MAAM,CAAC,GAAG,GAAG,SAAS,MAAM;AAAA,EAE1C,IAAI,SAAS,MAAM,IAAI,KAAK;AAAA,IAAG,OAAO;AAAA,EACtC,IAAI,CAAC,KAAK,CAAC,KAAK,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA,IAAU,OAAO;AAAA,EAEvE,IAAI,aAAa,cAAc,aAAa,YAAY;AAAA,IACtD,IAAI,EAAE,WAAW,EAAE;AAAA,MAAQ,OAAO;AAAA,IAClC,SAAS,IAAI,EAAG,IAAI,EAAE,QAAQ,KAAK;AAAA,MACjC,IAAI,EAAE,OAAO,EAAE;AAAA,QAAI,OAAO;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,aAAa,QAAQ,aAAa,MAAM;AAAA,IAC1C,OAAO,aAAa,QAAQ,aAAa,QAAQ,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAAA,EAC7E;AAAA,EACA,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;AAAA,IACxC,IAAI,EAAE,WAAW,EAAE;AAAA,MAAQ,OAAO;AAAA,IAClC,SAAS,IAAI,EAAG,IAAI,EAAE,QAAQ,KAAK;AAAA,MACjC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM;AAAA,QAAG,OAAO;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAQ,OAAO,KAAK,CAAC;AAAA,EAC3B,IAAI,MAAM,WAAW,OAAO,KAAK,CAAC,EAAE;AAAA,IAAQ,OAAO;AAAA,EACnD,WAAW,KAAK,OAAO;AAAA,IACrB,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM;AAAA,MAAG,OAAO;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AA2MF,SAAS,OAAO,CAAC,QAAQ;AAAA,EAC9B,IAAI,CAAC;AAAA,IAAQ,OAAO,CAAC;AAAA,EACrB,IAAI,OAAO,WAAW;AAAA,IAAG,OAAO,OAAO;AAAA,EAEvC,MAAM,SAAS,CAAC;AAAA,EAChB,WAAW,SAAS,QAAQ;AAAA,IAC1B,OAAO,QAAQ,KAAK;AAAA,EACtB;AAAA,EACA,OAAO;AAAA;;;AC5RT,IAAM,UAAU,IAAI;AAQb,SAAS,oBAAoB,CAAC,QAAQ;AAAA,EAC3C,IAAI,CAAC;AAAA,IAAQ,OAAO,CAAC;AAAA,EAErB,MAAM,QAAQ,CAAC;AAAA,EACf,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAClD,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,oBAAoB,CAAC;AAAA,EACzD,EAAO,SAAI,SAAS,UAAU,MAAM,QAAQ,OAAO,GAAG,GAAG;AAAA,IACvD,MAAM,KAAK,GAAG,OAAO,IAAI,QAAQ,oBAAoB,CAAC;AAAA,EACxD,EAAO,SAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IACzD,MAAM,KAAK,GAAG,OAAO,KAAK,QAAQ,oBAAoB,CAAC;AAAA,EACzD,EAAO;AAAA,IACL,MAAM,KAAK,GAAG,OAAO,KAAK,MAAM,CAAC;AAAA;AAAA,EAEnC,OAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC;AAAA;AASpB,SAAS,sBAAsB,CAAC,QAAQ;AAAA,EAC7C,OAAO,CAAC,GAAG,IAAI,IAAI,qBAAqB,MAAM,EAAE,IAAI,UAAQ,KAAK,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC;AAAA;AAW3E,SAAS,WAAW,CAAC,QAAQ,QAAQ,SAAS,MAAM;AAAA,EACzD,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAClD,OAAO,OAAO,KAAK,MAAM,cAAY,YAAY,QAAQ,UAAU,MAAM,CAAC;AAAA,EAC5E;AAAA,EACA,IAAI,SAAS,UAAU,MAAM,QAAQ,OAAO,GAAG,GAAG;AAAA,IAChD,OAAO,OAAO,IAAI,KAAK,cAAY,YAAY,QAAQ,UAAU,MAAM,CAAC;AAAA,EAC1E;AAAA,EACA,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAClD,OAAO,CAAC,OAAO,KAAK,KAAK,cAAY,YAAY,QAAQ,UAAU,MAAM,CAAC;AAAA,EAC5E;AAAA,EAEA,OAAO,OAAO,QAAQ,MAAM,EAAE,MAAM,EAAE,OAAO,eAAe;AAAA,IAC1D,MAAM,QAAQ,QAAQ,QAAQ,KAAK;AAAA,IAGnC,IAAI,OAAO,cAAc,YAAY,cAAc,QAAQ,MAAM,QAAQ,SAAS,GAAG;AAAA,MACnF,OAAO,OAAO,OAAO,WAAW,MAAM;AAAA,IACxC;AAAA,IAEA,OAAO,OAAO,QAAQ,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,YAAY;AAAA,MACnE,IAAI,aAAa;AAAA,QAAO,OAAO,UAAU,QAAQ,UAAU,aAAa,QAAQ;AAAA,MAChF,IAAI,aAAa;AAAA,QAAQ,OAAO,UAAU,QAAQ,UAAU,aAAa,SAAS;AAAA,MAClF,IAAI,aAAa;AAAA,QAAO,OAAO,UAAU,QAAQ,UAAU,aAAa,QAAQ;AAAA,MAChF,IAAI,aAAa;AAAA,QAAQ,OAAO,UAAU,QAAQ,UAAU,aAAa,SAAS;AAAA,MAClF,IAAI,aAAa;AAAA,QAAO,OAAO,OAAO,OAAO,QAAQ,MAAM;AAAA,MAC3D,IAAI,aAAa;AAAA,QAAO,OAAO,CAAC,OAAO,OAAO,QAAQ,MAAM;AAAA,MAC5D,IAAI,aAAa;AAAA,QAAO,OAAO,MAAM,QAAQ,MAAM,KAAK,UAAU,OAAO,QAAQ,MAAM;AAAA,MACvF,IAAI,aAAa;AAAA,QAAQ,OAAO,MAAM,QAAQ,MAAM,KAAK,CAAC,UAAU,OAAO,QAAQ,MAAM;AAAA,MACzF,IAAI,aAAa;AAAA,QAAQ,OAAO,CAAC,YAAY,GAAG,QAAQ,MAAM,GAAG,GAAG,QAAQ,OAAO,GAAG,MAAM;AAAA,MAC5F,OAAO;AAAA,KACR;AAAA,GACF;AAAA;AAWH,SAAS,SAAS,CAAC,OAAO,SAAS,QAAQ;AAAA,EACzC,OAAO,QAAQ,KAAK,YAClB,OAAO,OAAO,QAAQ,MAAM,KAC5B,MAAM,QAAQ,KAAK,KAAK,MAAM,KAAK,aAAW,OAAO,SAAS,QAAQ,MAAM,CAAC,CAAC;AAAA;AAiB3E,SAAS,eAAe,GAAG,UAAU,iBAAiB,QAAQ,SAAS,MAAM,cAAc,kBAAkB;AAAA,EAClH,IAAI,CAAC;AAAA,IAAQ,OAAO;AAAA,EAGpB,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAElD,OAAO,OAAO,KAAK,KAAK,eAAa,gBAAgB,EAAE,UAAU,iBAAiB,QAAQ,WAAW,QAAQ,cAAc,eAAe,CAAC,CAAC;AAAA,EAC9I;AAAA,EACA,IAAI,SAAS,UAAU,MAAM,QAAQ,OAAO,GAAG,GAAG;AAAA,IAEhD,OAAO,OAAO,IAAI,MAAM,eAAa,gBAAgB,EAAE,UAAU,iBAAiB,QAAQ,WAAW,QAAQ,cAAc,eAAe,CAAC,CAAC;AAAA,EAC9I;AAAA,EACA,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAGlD,OAAO;AAAA,EACT;AAAA,EAGA,YAAY,OAAO,cAAc,OAAO,QAAQ,MAAM,GAAG;AAAA,IAEvD,MAAM,cAAc,gBAAgB,QAAQ,KAAK;AAAA,IACjD,IAAI,gBAAgB;AAAA,MAAI;AAAA,IAExB,MAAM,QAAQ,SAAS,QAAQ,aAAa,WAAW;AAAA,IACvD,QAAQ,KAAK,KAAK,WAAW,WAAW,YAAY,cAAc,SAAS,CAAC;AAAA,IAC5E,MAAM,SAAS,cAAc,YAAY,YAAY;AAAA,IACrD,MAAM,SAAS,cAAc,YAAY,YAAY;AAAA,IACrD,MAAM,YAAY,WAAW,aAAa,WAAW;AAAA,IAErD,MAAM,QAAQ,eAAe;AAAA,IAC7B,MAAM,UAAU,iBAAiB;AAAA,IACjC,MAAM,gBAAgB,YAAY,EAAE,OAAO,KAAK,GAAG,EAAE,OAAO,UAAU,GAAG,MAAM,MAC5E,cAAc,aAAa,YAAY;AAAA,IAE1C,IAAI,aAAa,CAAC,iBAAiB,aAAa,WAAW,QAAQ,QAAQ,QAAQ,OAAO,GAAG;AAAA,MAC3F,OAAO;AAAA,IACT;AAAA,IAGA,YAAY,UAAU,WAAW,OAAO,QAAQ,aAAa,CAAC,CAAC,GAAG;AAAA,MAEhE,IAAI,SAAS,SAAS;AAAA,QACpB,IAAI,aAAa,OAAO;AAAA,UACtB,MAAM,OAAO,iBAAiB,QAAQ,OAAO;AAAA,UAC7C,IAAI,SAAS,aAAa,CAAC,aAAa,MAAM,QAAQ,IAAI;AAAA,YAAG,OAAO;AAAA,QACtE;AAAA,QACA,IAAI,aAAa,SAAS,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,GAAG;AAAA,UACpE,IAAI,YAAY;AAAA,UAChB,WAAW,KAAK,QAAQ;AAAA,YACtB,MAAM,IAAI,iBAAiB,GAAG,OAAO;AAAA,YACrC,IAAI,MAAM,aAAa,aAAa,MAAM,QAAQ,CAAC,GAAG;AAAA,cACpD,YAAY;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AAAA,UACA,IAAI;AAAA,YAAW,OAAO;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAcT,SAAS,YAAY,CAAC,WAAW,QAAQ,QAAQ,QAAQ,SAAS;AAAA,EAChE,IAAI,WAAW,aAAa,WAAW;AAAA,IAAW,OAAO;AAAA,EACzD,MAAM,gBAAgB,SAAS,SAAS,WAAW,SAAS,SAAS,YAAY,SAAS,cAAc,SAAS;AAAA,EACjH,YAAY,UAAU,WAAW,OAAO,QAAQ,aAAa,CAAC,CAAC,GAAG;AAAA,IAChE,MAAM,gBAAgB,qBAAqB,QAAQ,QAAQ,QAAQ,OAAO;AAAA,IAC1E,MAAM,gBAAgB,qBAAqB,QAAQ,QAAQ,QAAQ,OAAO;AAAA,IAK1E,MAAM,eAAe,kBAAkB,cAAc,kBAAkB;AAAA,IACvE,MAAM,0BAA0B,CAAC,iBAAiB,SAAS,SAAS,gBAClE,OAAO,WAAW,YAAY,CAAC,GAAG,MAAM,EAAE,MAAM,eAAa,UAAU,WAAW,CAAC,KAAK,GAAI;AAAA,IAC9F,IAAI,aAAa,SAAS,2BAA2B,kBAAkB,aAAa,iBAAiB;AAAA,MAAG,OAAO;AAAA,IAC/G,IAAI,aAAa,UAAU,2BAA2B,kBAAkB,aAAa,gBAAgB;AAAA,MAAG,OAAO;AAAA,IAC/G,IAAI,aAAa,SAAS,2BAA2B,kBAAkB,aAAa,iBAAiB;AAAA,MAAG,OAAO;AAAA,IAC/G,IAAI,aAAa,UAAU,2BAA2B,kBAAkB,aAAa,gBAAgB;AAAA,MAAG,OAAO;AAAA,IAC/G,IAAI,aAAa,OAAO;AAAA,MACtB,MAAM,sBAAsB,qBAAqB,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MAChF,MAAM,sBAAsB,qBAAqB,QAAQ,QAAQ,QAAQ,OAAO;AAAA,MAChF,IAAI,wBAAwB,aAAa,sBAAsB,KAC3D,wBAAwB,aAAa,sBAAsB;AAAA,QAAG,OAAO;AAAA,IAC3E;AAAA,IACA,IAAI,aAAa,SAAS,CAAC,iBAAiB,OAAO,QAAQ,QAAQ,MAAM,KAAK,OAAO,QAAQ,QAAQ,MAAM;AAAA,MAAG,OAAO;AAAA,IACrH,IAAI,aAAa,SAAS,MAAM,QAAQ,MAAM,KAAK,OAAO,MAAM,WAAS;AAAA,MACvE,MAAM,qBAAqB,qBAAqB,OAAO,QAAQ,QAAQ,OAAO;AAAA,MAC9E,MAAM,qBAAqB,qBAAqB,OAAO,QAAQ,QAAQ,OAAO;AAAA,MAC9E,OAAO,uBAAuB,aAAa,qBAAqB,KAC9D,uBAAuB,aAAa,qBAAqB;AAAA,KAC5D;AAAA,MAAG,OAAO;AAAA,IACX,IAAI,aAAa,UAAU,CAAC,iBAAiB,MAAM,QAAQ,MAAM,KAAK,OAAO,QAAQ,QAAQ,MAAM,KAAK,OAAO,KAAK,WAAS,OAAO,QAAQ,OAAO,MAAM,CAAC;AAAA,MAAG,OAAO;AAAA,EACtK;AAAA,EACA,OAAO;AAAA;AAaT,SAAS,oBAAoB,CAAC,GAAG,GAAG,QAAQ,SAAS;AAAA,EAGnD,IAAI,SAAS,SAAS,cAAc;AAAA,IAClC,IAAI,OAAO,MAAM,YAAY,OAAO,MAAM;AAAA,MAAU;AAAA,IACpD,OAAO,aAAa,QAAQ,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC,CAAC;AAAA,EAC1D;AAAA,EACA,IAAI,aAAa,cAAc,aAAa,YAAY;AAAA,IACtD,IAAI,EAAE,aAAa,eAAe,EAAE,aAAa;AAAA,MAAa;AAAA,IAC9D,OAAO,aAAa,GAAG,CAAC;AAAA,EAC1B;AAAA,EACA,IAAI,IAAI;AAAA,IAAG,OAAO;AAAA,EAClB,IAAI,IAAI;AAAA,IAAG,OAAO;AAAA,EAClB,IAAI,OAAO,GAAG,GAAG,MAAM;AAAA,IAAG,OAAO;AAAA,EACjC;AAAA;AAQF,SAAS,YAAY,CAAC,GAAG,GAAG;AAAA,EAC1B,MAAM,SAAS,KAAK,IAAI,EAAE,QAAQ,EAAE,MAAM;AAAA,EAC1C,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,IAC/B,IAAI,EAAE,KAAK,EAAE;AAAA,MAAI,OAAO;AAAA,IACxB,IAAI,EAAE,KAAK,EAAE;AAAA,MAAI,OAAO;AAAA,EAC1B;AAAA,EACA,IAAI,EAAE,SAAS,EAAE;AAAA,IAAQ,OAAO;AAAA,EAChC,IAAI,EAAE,SAAS,EAAE;AAAA,IAAQ,OAAO;AAAA,EAChC,OAAO;AAAA;AAUT,SAAS,WAAW,CAAC,WAAW,QAAQ;AAAA,EACtC,OAAO,YAAY,EAAE,OAAO,KAAK,GAAG,EAAE,OAAO,UAAU,GAAG,MAAM;AAAA;AAkB3D,SAAS,gBAAgB,CAAC,QAAQ,aAAa,WAAW,SAAS,MAAM;AAAA,EAC9E,IAAI,CAAC;AAAA,IAAQ;AAAA,EACb,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAElD,IAAI;AAAA,IACJ,WAAW,aAAa,OAAO,MAAM;AAAA,MACnC,SAAS,gBAAgB,QAAQ,iBAAiB,WAAW,aAAa,WAAW,MAAM,CAAC;AAAA,IAC9F;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,SAAS,UAAU,MAAM,QAAQ,OAAO,GAAG,GAAG;AAAA,IAEhD,IAAI,SAAS,CAAC;AAAA,IACd,WAAW,aAAa,OAAO,KAAK;AAAA,MAClC,MAAM,YAAY,iBAAiB,WAAW,aAAa,WAAW,MAAM;AAAA,MAE5E,IAAI,CAAC;AAAA,QAAW;AAAA,MAChB,SAAS,YAAY,QAAQ,SAAS;AAAA,IACxC;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAElD;AAAA,EACF;AAAA,EAIA,IAAI;AAAA,EACJ,YAAY,OAAO,cAAc,OAAO,QAAQ,MAAM,GAAG;AAAA,IACvD,MAAM,QAAQ,YAAY;AAAA,IAC1B,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,MAAM,eAAe,YAAY,WAAW,MAAM;AAAA,IAElD,MAAM,OAAO,CAAC;AAAA,IACd,SAAS,IAAI,EAAG,IAAI,MAAM,WAAW,QAAQ,KAAK;AAAA,MAChD,MAAM,QAAQ,MAAM,WAAW;AAAA,MAC/B,MAAM,MAAM,IAAI,IAAI,MAAM,WAAW,SAAS,MAAM,WAAW,IAAI,KAAK;AAAA,MACxE,MAAM,YAAY,MAAM,aAAa;AAAA,MAGrC,MAAM,gBAAgB,iBAAiB,cAAc,aAAa,YAAY;AAAA,MAC9E,MAAM,OAAO,CAAC,MAAM,UAAU,MAAM,CAAC,iBACnC,aAAa,WAAW,MAAM,UAAU,IAAI,MAAM,UAAU,IAAI,QAAQ,MAAM,OAAO;AAAA,MACvF,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,OAAO,KAAK,KAAK,SAAS;AAAA,QAChC,IAAI,QAAQ,KAAK,OAAO;AAAA,UAAO,KAAK,KAAK;AAAA,QACpC;AAAA,eAAK,KAAK,CAAC,OAAO,GAAG,CAAC;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,SAAS,gBAAgB,QAAQ,IAAI;AAAA,EACvC;AAAA,EACA,OAAO;AAAA;AAUF,SAAS,eAAe,CAAC,GAAG,GAAG;AAAA,EACpC,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EACf,IAAI,CAAC;AAAA,IAAG,OAAO;AAAA,EAEf,MAAM,MAAM,CAAC;AAAA,EACb,IAAI,IAAI;AAAA,EACR,IAAI,IAAI;AAAA,EACR,OAAO,IAAI,EAAE,UAAU,IAAI,EAAE,QAAQ;AAAA,IACnC,MAAM,QAAQ,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;AAAA,IACvC,MAAM,MAAM,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;AAAA,IACrC,IAAI,QAAQ;AAAA,MAAK,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC;AAAA,IACtC,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG;AAAA,MAAI;AAAA,IAClB;AAAA;AAAA,EACP;AAAA,EACA,OAAO;AAAA;AAUF,SAAS,WAAW,CAAC,GAAG,GAAG;AAAA,EAEhC,MAAM,MAAM,CAAC;AAAA,EACb,IAAI,IAAI;AAAA,EACR,IAAI,IAAI;AAAA,EACR,OAAO,IAAI,EAAE,UAAU,IAAI,EAAE,QAAQ;AAAA,IACnC,MAAM,OAAO,KAAK,EAAE,UAAU,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;AAAA,IAC9E,MAAM,OAAO,IAAI,IAAI,SAAS;AAAA,IAC9B,IAAI,QAAQ,KAAK,MAAM,KAAK;AAAA,MAAI,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;AAAA,IAC9D;AAAA,UAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;AAAA,EAClC;AAAA,EACA,OAAO;AAAA;AAUT,SAAS,OAAO,CAAC,QAAQ,MAAM;AAAA,EAC7B,IAAI,QAAQ;AAAA,EACZ,WAAW,QAAQ,KAAK,MAAM,GAAG,GAAG;AAAA,IAClC,QAAQ,QAAQ;AAAA,EAClB;AAAA,EACA,OAAO;AAAA;;;ACxYT,IAAM,WAAW,KAAK;AASf,SAAS,WAAW,GAAG,UAAU,WAAW,GAAG,SAAS,UAAU,SAAS,QAAQ,eAAe,MAAM,iBAAiB,OAAO,qBAAqB,gBAAgB,mBAAmB,wBAAwB;AAAA,EACrN,IAAI,CAAC;AAAA,IAAU,MAAM,IAAI,MAAM,+BAA+B;AAAA,EAE9D,MAAM,SAAS,CAAC;AAAA,EAEhB,MAAM,UAAU,CAAC;AAAA,EAEjB,MAAM,UAAU,CAAC;AAAA,EACjB,MAAM,cAAa,cAAc,QAAQ;AAAA,EACzC,MAAM,kBAAkB,mBAAmB,WAAU;AAAA,EACrD,MAAM,iBAAiB,SAAS;AAAA,OAC3B,uBAAuB,WAAU;AAAA,OACjC;AAAA,EACL,IAAI;AAAA,EAGJ,IAAI,aAAa;AAAA,EACjB,IAAI,QAAQ;AAAA,EACZ,WAAW,YAAY,SAAS,YAAY;AAAA,IAC1C,MAAM,YAAY,OAAO,SAAS,QAAQ;AAAA,IAC1C,MAAM,WAAW,aAAa;AAAA,IAC9B,MAAM,eAAe,sBAAsB;AAAA,IAE3C,IAAI,YAAY,KAAK,WAAW,YAAY,aAAa,UAAU,CAAC,gBAAgB,EAAE,UAAU,iBAAiB,QAAQ,QAAQ,cAAc,cAAc,gBAAgB,eAAe,CAAC,GAAG;AAAA,MAC9L,MAAM,cAAc,KAAK,IAAI,WAAW,YAAY,CAAC;AAAA,MACrD,MAAM,YAAY,KAAK,IAAI,SAAS,YAAY,SAAS;AAAA,MAIzD,MAAM,aAAa,oBAAoB;AAAA,MACvC,MAAM,gBAAgB,uBAAuB;AAAA,MAE7C,IAAI,YAAY,aACZ,WACC,IAAI,EAAE,OAAO,SAAS;AAAA,QAErB,MAAM,QAAQ,CAAC,KAAK,IAAI,OAAO,WAAW,GAAG,KAAK,IAAI,KAAK,SAAS,CAAC;AAAA,QACrE,OAAO;AAAA,OACR,EACA,OAAO,EAAE,OAAO,SAAS,QAAQ,GAAG,IACrC,CAAC,CAAC,aAAa,SAAS,CAAC;AAAA,MAI7B,IAAI,UAAU,SAAS,GAAG;AAAA,QACxB,MAAM,WAAW,SAAS,QAAQ,MAAM,WAAS;AAAA,UAC/C,MAAM,aAAa,MAAM,WAAW,eAAe;AAAA,UACnD,MAAM,aAAa,MAAM,WAAW,eAAe,KAAK,GAAG;AAAA,UAC3D,IAAI,WAAW,cAAc,CAAC,QAAQ,SAAS,UAAU;AAAA,YAAG,OAAO;AAAA,UACnE,OAAO,CAAC,EAAE,MAAM,uBAAuB,MAAM,wBAAwB,CAAC,EAAE,cAAc,gBAAgB;AAAA,SACvG;AAAA,QACD,IAAI,CAAC,UAAU;AAAA,UACb,YAAY,CAAC,CAAC,UAAU,GAAG,IAAI,UAAU,UAAU,SAAS,GAAG,EAAE,CAAC;AAAA,QACpE,EAAO;AAAA,UACL,YAAY,8BAA8B,WAAW,UAAU,SAAS,aAAa;AAAA;AAAA,MAEzF;AAAA,MAEA,IAAI,UAAU,QAAQ;AAAA,QAEpB,MAAM,SAAS,CAAC;AAAA,QAEhB,MAAM,WAAW,UAAU,SAAS,KAClC,UAAU,GAAG,KAAK,KAAK,UAAU,GAAG,KAAK;AAAA,QAE3C,WAAW,SAAS,SAAS,SAAS;AAAA,UACpC,MAAM,QAAO,MAAM;AAAA,UACnB,IAAI,MAAM;AAAA,YAAW,MAAM,IAAI,MAAM,iCAAiC;AAAA,UACtE,IAAI,CAAC;AAAA,YAAM,MAAM,IAAI,MAAM,sCAAsC;AAAA,UAEjE,IAAI,CAAC,WAAW,QAAQ,SAAS,MAAK,eAAe,EAAE,GAAG;AAAA,YAExD,MAAM,eAAe,MAAK,0BAA0B,MAAK;AAAA,YACzD,MAAM,YAAY,OAAO,YAAY;AAAA,YACrC,MAAM,UAAU,OAAO,eAAe,MAAK,qBAAqB;AAAA,YAChE,MAAM,qBAAqB,gBAAgB,MAAK,eAAe,KAAK,GAAG;AAAA,YAEvE,IAAI,sBAAsB,UAAU;AAAA,cAElC,OAAO,KAAK;AAAA,gBACV,gBAAgB;AAAA,gBAChB,eAAe;AAAA,gBACf,OAAO,EAAE,WAAW,QAAQ;AAAA,cAC9B,CAAC;AAAA,YACH,EAAO,UAAK,kBAAkB,eAAe,MAAM,uBAAuB,MAAM,uBAAuB,UAAU;AAAA,cAC/G,MAAM,mBAAmB,OAAO,MAAM,mBAAmB;AAAA,cACzD,OAAO,KAAK;AAAA,gBACV,gBAAgB;AAAA,gBAChB,aAAa;AAAA,kBACX,WAAW;AAAA,kBACX,SAAS,mBAAmB,MAAM;AAAA,gBACpC;AAAA,gBACA,OAAO,EAAE,WAAW,QAAQ;AAAA,cAC9B,CAAC;AAAA,YACH,EAAO;AAAA,cACL,OAAO,KAAK;AAAA,gBACV,gBAAgB;AAAA,gBAChB,OAAO,EAAE,WAAW,QAAQ;AAAA,cAC9B,CAAC;AAAA;AAAA,UAGL;AAAA,QACF;AAAA,QAEA,YAAY,UAAU,WAAW,WAAW;AAAA,UAC1C,OAAO,KAAK,EAAE,QAAQ,UAAU,YAAY,WAAW,aAAa,UAAU,WAAW,OAAO,CAAC;AAAA,QACnG;AAAA,QAIA,IAAI;AAAA,QACJ,WAAW,SAAS,QAAQ;AAAA,UAC1B,IAAI,mBAAmB,OAAO,CAE9B,EAAO,SAAI,iBAAiB,OAAO;AAAA,YACjC,QAAQ,KAAK,MAAM,WAAW;AAAA,UAChC,EAAO;AAAA,YACL,QAAQ,UAAU;AAAA,YAClB,IAAI,SAAS;AAAA,cACX,QAAQ,KAAK,KAAK;AAAA,YACpB,EAAO,SAAI,OAAO,MAAM,UAAU,IAAI,aAAa,UAAU;AAAA,cAE3D,IAAI,UAAU,MAAM;AAAA,YACtB,EAAO;AAAA,cAEL,IAAI;AAAA,gBAAK,QAAQ,KAAK,GAAG;AAAA,cACzB,MAAM,KAAK,MAAM;AAAA;AAAA;AAAA,QAGvB;AAAA,QACA,IAAI;AAAA,UAAK,QAAQ,KAAK,GAAG;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,aAAa;AAAA,IACb;AAAA,EACF;AAAA,EACA,IAAI,CAAC,SAAS,MAAM;AAAA,IAAG,SAAS;AAAA,EAChC,QAAQ,KAAK,GAAG,OAAO;AAAA,EAEvB,OAAO,EAAE,UAAU,UAAU,QAAQ,SAAS,SAAS,OAAO;AAAA;AAahE,SAAS,6BAA6B,CAAC,QAAQ,UAAU,SAAS,eAAe;AAAA,EAC/E,MAAM,sBAAsB,SAAS,QAClC,OAAO,WAAS,CAAC,WAAW,QAAQ,SAAS,MAAM,WAAW,eAAe,MAAM,EAAE,CAAC,EACtF,IAAI,WAAS,gBAAgB,MAAM,WAAW,eAAe,KAAK,GAAG,KAAK,GAAG;AAAA,EAGhF,MAAM,SAAS,CAAC;AAAA,EAChB,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,OAAO,OAAO,OAAO,SAAS;AAAA,IACpC,MAAM,eAAe,QAAQ,oBAAoB,KAAK,WAAS;AAAA,MAC7D,IAAI,CAAC;AAAA,QAAO,OAAO;AAAA,MACnB,MAAM,YAAY,cAAc,MAAM,OAAO,OAAO,SAAS,QAAQ,CAAC;AAAA,MACtE,MAAM,aAAa,cAAc,OAAO,OAAO,OAAO,SAAS,QAAQ,CAAC;AAAA,MACxE,OAAO,UAAU,MAAM,WAAW,MAAM,WAAW,MAAM,UAAU;AAAA,KACpE;AAAA,IACD,IAAI,QAAQ;AAAA,MAAc,KAAK,KAAK,MAAM;AAAA,IACrC;AAAA,aAAO,KAAK,CAAC,GAAG,KAAK,CAAC;AAAA,EAC7B;AAAA,EACA,OAAO;AAAA;AAYT,SAAS,aAAa,EAAE,YAAY,WAAW,OAAO,WAAW;AAAA,EAC/D,IAAI,QAAQ;AAAA,EACZ,IAAI,OAAO;AAAA,EACX,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,YAAY,OAAO,MAAM,GAAG,eAAe;AAAA,IACjD,MAAM,UAAU,IAAI,IAAI,MAAM,SAAS,OAAO,MAAM,IAAI,GAAG,eAAe,IAAI;AAAA,IAC9E,IAAI,UAAU,cAAc,YAAY,UAAU;AAAA,MAChD,QAAQ,KAAK,IAAI,OAAO,CAAC;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO,CAAC,OAAO,IAAI;AAAA;AAiBrB,eAAsB,oBAAoB,GAAG,MAAM,UAAU,QAAQ,eAAe,QAAQ;AAAA,EAC1F,MAAM,SAAS,SAAS,WAAW,IAAI,OAAkD,CAAC,EAAE;AAAA,EAC5F,MAAM,eAAe,qBAAqB,MAAM;AAAA,EAChD,IAAI,aAAa,SAAS;AAAA,IAAG,OAAO;AAAA,EACpC,MAAM,kBAAkB,mBAAmB,cAAc,QAAQ,CAAC;AAAA,EAGlE,MAAM,QAAQ,CAAC;AAAA,EACf,SAAS,WAAW,QAAQ,CAAC,UAAU,UAAU;AAAA,IAC/C,IAAI,gBAAgB,EAAE,UAAU,iBAAiB,QAAQ,QAAQ,aAAa,CAAC;AAAA,MAAG;AAAA,IAClF,WAAW,WAAW,cAAc;AAAA,MAClC,MAAM,YAAY,gBAAgB,QAAQ,OAAO;AAAA,MACjD,IAAI,cAAc;AAAA,QAAI;AAAA,MACtB,MAAM,QAAO,SAAS,QAAQ,YAAY;AAAA,MAC1C,IAAI,CAAC,OAAM,uBAAuB,CAAC,MAAK;AAAA,QAAqB;AAAA,MAC7D,MAAM,QAAQ,OAAO,MAAK,mBAAmB;AAAA,MAC7C,MAAM,MAAM,QAAQ,MAAK;AAAA,MACzB,MAAM,MAAM,YAAY;AAAA,QACtB,MAAM,SAAS,MAAM,KAAK,MAAM,OAAO,GAAG;AAAA,QAC1C,MAAM,QAAQ,gBAAgB,EAAE,MAAM,IAAI,SAAS,MAAM,GAAG,QAAQ,EAAE,CAAC;AAAA,QACvE,IAAI;AAAA,UAAO,OAAO,OAAO,WAAW;AAAA,SACnC,CAAC;AAAA,IACN;AAAA,GACD;AAAA,EAED,IAAI,MAAM;AAAA,IAAQ,MAAM,QAAQ,IAAI,KAAK;AAAA,EACzC,OAAO;AAAA;AA6BT,eAAsB,mBAAmB,GAAG,MAAM,UAAU,QAAQ,eAAe,MAAM,WAAW,GAAG,SAAS,UAAU,SAAS,qBAAqB,gBAAgB,WAAW;AAAA,EAEjL,MAAM,oBAAoB,SAAS,WAAW,IAAI,MAAG;AAAA,IAAG;AAAA,GAAS;AAAA,EACjE,MAAM,uBAAuB,SAAS,WAAW,IAAI,OAAqD,CAAC,EAAE;AAAA,EAC7G,IAAI,UAAU,UAAU,UAAU,MAAM,QAAQ,OAAO,IAAI,GAAG;AAAA,IAC5D,OAAO,EAAE,mBAAmB,qBAAqB;AAAA,EACnD;AAAA,EACA,MAAM,gBAAgB,qBAAqB,MAAM;AAAA,EACjD,IAAI,CAAC,cAAc;AAAA,IAAQ,OAAO,EAAE,mBAAmB,qBAAqB;AAAA,EAC5E,MAAM,cAAa,cAAc,QAAQ;AAAA,EACzC,MAAM,kBAAkB,mBAAmB,WAAU;AAAA,EACrD,MAAM,iBAAiB;AAAA,OAClB,uBAAuB,WAAU;AAAA,OACjC;AAAA,EACL;AAAA,EAGA,MAAM,cAAc,CAAC;AAAA,EAErB,MAAM,aAAa,CAAC;AAAA,EAEpB,MAAM,kBAAkB,CAAC;AAAA,EACzB,IAAI,aAAa;AAAA,EACjB,SAAS,WAAW,QAAQ,CAAC,UAAU,UAAU;AAAA,IAC/C,MAAM,YAAY,OAAO,SAAS,QAAQ;AAAA,IAC1C,MAAM,WAAW,aAAa;AAAA,IAC9B,MAAM,WAAW,YAAY,KAAK,WAAW,YAAY,aAAa;AAAA,IACtE,aAAa;AAAA,IACb,IAAI,CAAC;AAAA,MAAU;AAAA,IACf,IAAI,gBAAgB,EAAE,UAAU,iBAAiB,QAAQ,QAAQ,cAAc,cAAc,sBAAsB,QAAQ,gBAAgB,eAAe,CAAC;AAAA,MAAG;AAAA,IAG9J,MAAM,cAAc,CAAC;AAAA,IACrB,IAAI,kBAAkB;AAAA,IACtB,MAAM,uBAAuB,IAAI;AAAA,IACjC,IAAI,iBAAiB;AAAA,IACrB,WAAW,cAAc,eAAe;AAAA,MACtC,MAAM,YAAY,gBAAgB,QAAQ,UAAU;AAAA,MACpD,IAAI,cAAc;AAAA,QAAI;AAAA,MACtB,MAAM,QAAQ,SAAS,QAAQ;AAAA,MAC/B,MAAM,QAAO,OAAO;AAAA,MACpB,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,IAAI,CAAC,MAAM,uBAAuB,CAAC,MAAM;AAAA,QAAqB;AAAA,MAC9D,IAAI,CAAC,MAAM,uBAAuB,CAAC,MAAM;AAAA,QAAqB;AAAA,MAC9D,MAAM,UAAU,eAAe;AAAA,MAC/B,IAAI,CAAC;AAAA,QAAS;AAAA,MACd,iBAAiB;AAAA,MACjB,qBAAqB,IAAI,UAAU;AAAA,MACnC,MAAM,mBAAmB,OAAO,MAAM,mBAAmB;AAAA,MACzD,MAAM,mBAAmB,OAAO,MAAM,mBAAmB;AAAA,MACzD,MAAM,iBAAiB,mBAAmB,MAAM;AAAA,MAChD,MAAM,iBAAiB,mBAAmB,MAAM;AAAA,MAChD,YAAY,KACV,EAAE,WAAW,kBAAkB,SAAS,eAAe,GACvD,EAAE,WAAW,kBAAkB,SAAS,eAAe,CACzD;AAAA,MACA;AAAA,MACA,WAAW,KAAK,OAAM,mBAAkB;AAAA,QACtC,OAAO,mBAAmB,qBAAqB,MAAM,QAAQ,IAAI;AAAA,UAC/D,eAAe,MAAM,kBAAkB,cAAc;AAAA,UACrD,eAAe,MAAM,kBAAkB,cAAc;AAAA,QACvD,CAAC;AAAA,QACD,MAAM,cAAc,gBAAgB,EAAE,MAAM,IAAI,SAAS,iBAAiB,GAAG,QAAQ,EAAE,GAAG,SAAS,OAAO;AAAA,QAC1G,MAAM,cAAc,gBAAgB,EAAE,MAAM,IAAI,SAAS,iBAAiB,GAAG,QAAQ,EAAE,CAAC;AAAA,QACxF,qBAAqB,OAAO,cAAc,YAAY;AAAA,QACtD,YAAY,cAAc;AAAA,UACxB,WAAW,YAAY;AAAA,UACvB,WAAW,YAAY;AAAA,UACvB,WAAW,YAAY;AAAA,UACvB,YAAY,YAAY;AAAA,UACxB,YAAY,YAAY,eAAe,IAAI,UAAQ,OAAO,KAAK,eAAe,CAAC;AAAA,UAC/E;AAAA,QACF;AAAA,OACD;AAAA,IACH;AAAA,IAIA,IAAI,gBAAgB;AAAA,MAClB,WAAW,SAAS,SAAS,SAAS;AAAA,QACpC,MAAM,QAAO,MAAM;AAAA,QACnB,IAAI,CAAC;AAAA,UAAM;AAAA,QACX,MAAM,aAAa,MAAK,eAAe;AAAA,QACvC,MAAM,aAAa,MAAK,eAAe,KAAK,GAAG;AAAA,QAC/C,IAAI,WAAW,CAAC,QAAQ,SAAS,UAAU;AAAA,UAAG;AAAA,QAC9C,IAAI,qBAAqB,IAAI,UAAU;AAAA,UAAG;AAAA,QAC1C,IAAI,CAAC,MAAM,uBAAuB,CAAC,MAAM;AAAA,UAAqB;AAAA,QAC9D,qBAAqB,IAAI,UAAU;AAAA,QACnC,MAAM,mBAAmB,OAAO,MAAM,mBAAmB;AAAA,QACzD,MAAM,iBAAiB,mBAAmB,MAAM;AAAA,QAChD,YAAY,KAAK,EAAE,WAAW,kBAAkB,SAAS,eAAe,CAAC;AAAA,QACzE;AAAA,QACA,WAAW,KAAK,OAAM,mBAAkB;AAAA,UACtC,MAAM,oBAAoB,MAAM,eAAe,MAAM,kBAAkB,cAAc;AAAA,UACrF,MAAM,cAAc,gBAAgB,EAAE,MAAM,IAAI,SAAS,iBAAiB,GAAG,QAAQ,EAAE,CAAC;AAAA,UACxF,qBAAqB,OAAO,cAAc,YAAY;AAAA,SACvD;AAAA,MACH;AAAA,IACF;AAAA,IACA,IAAI,iBAAiB;AAAA,MACnB,gBAAgB,KAAK,EAAE,OAAO,WAAW,YAAY,CAAC;AAAA,IACxD;AAAA,GACD;AAAA,EAED,IAAI,WAAW,QAAQ;AAAA,IACrB,MAAM,iBAAiB,oBAAoB,MAAM,EAAE,SAAS,mBAAmB,WAAW,EAAE,CAAC;AAAA,IAC7F,MAAM,QAAQ,IAAI,WAAW,IAAI,UAAQ,KAAK,cAAc,CAAC,CAAC;AAAA,IAC9D,aAAa,OAAO,WAAW,iBAAiB,iBAAiB;AAAA,MAC/D,kBAAkB,SAAS,iBAAiB,QAAQ,aAAa,WAAW,YAAY;AAAA,IAC1F;AAAA,EACF;AAAA,EACA,OAAO,EAAE,mBAAmB,qBAAqB;AAAA;AASnD,SAAS,kBAAkB,CAAC,QAAQ;AAAA,EAClC,MAAM,SAAS,OACZ,IAAI,YAAU,KAAK,MAAM,EAAE,EAC3B,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO;AAAA,EAEpE,MAAM,SAAS,CAAC;AAAA,EAChB,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,OAAO,OAAO,OAAO,SAAS;AAAA,IACpC,IAAI,QAAQ,MAAM,aAAa,KAAK,SAAS;AAAA,MAC3C,KAAK,UAAU,KAAK,IAAI,KAAK,SAAS,MAAM,OAAO;AAAA,IACrD,EAAO;AAAA,MACL,OAAO,KAAK,KAAK;AAAA;AAAA,EAErB;AAAA,EACA,OAAO;AAAA;AAST,SAAS,sBAAsB,CAAC,aAAY;AAAA,EAE1C,MAAM,WAAW,CAAC;AAAA,EAElB,SAAS,QAAQ,CAAC,MAAM;AAAA,IACtB,IAAI,KAAK,SAAS,QAAQ;AAAA,MACxB,WAAW,SAAS,KAAK;AAAA,QAAU,SAAS,KAAK;AAAA,IACnD,EAAO;AAAA,MACL,SAAS,KAAK,KAAK,KAAK,GAAG,KAAK,KAAK;AAAA;AAAA;AAAA,EAGzC,SAAS,WAAU;AAAA,EACnB,OAAO;AAAA;AAUF,SAAS,mBAAmB,CAAC,QAAQ,WAAW;AAAA,EAErD,MAAM,WAAW,QAAQ,IAAI,GAAG,WAAW,cAAc,KAAK,MAAM,WAAW,OAAO,CAAC;AAAA,EACvF,OAAO;AAAA,IACL,YAAY,KAAK;AAAA,IACjB,KAAK,CAAC,OAAO,MAAM,KAAK,YAAY;AAAA,MAElC,MAAM,QAAQ,QAAQ,UAAU,GAAG,WAAW,cAAc,aAAa,SAAS,OAAO,OAAO;AAAA,MAChG,IAAI,QAAQ,GAAG;AAAA,QAEb,OAAO,KAAK,MAAM,OAAO,GAAG;AAAA,MAC9B;AAAA,MACA,IAAI,QAAQ,OAAO,cAAc,SAAS,QAAQ,OAAO,YAAY,KAAK;AAAA,QAExE,MAAM,cAAc,QAAQ,QAAQ,OAAO;AAAA,QAC3C,MAAM,YAAY,MAAM,QAAQ,OAAO;AAAA,QACvC,IAAI,SAAS,kBAAkB,SAAS;AAAA,UACtC,OAAO,SAAS,OAAO,KAAK,YAAU,OAAO,MAAM,aAAa,SAAS,CAAC;AAAA,QAC5E,EAAO;AAAA,UACL,OAAO,SAAS,OAAO,MAAM,aAAa,SAAS;AAAA;AAAA,MAEvD,EAAO;AAAA,QACL,OAAO,SAAS;AAAA;AAAA;AAAA,EAGtB;AAAA;;;ACtdF,IAAM,WAAU,IAAI;AAEpB,IAAM,gBAAgB,IAAI;AASnB,SAAS,mBAAmB,CAAC,OAAO,UAAU,iBAAiB;AAAA,EACpE,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxB,OAAO,MAAM,IAAI,WAAS,oBAAoB,OAAO,OAAO,CAAC;AAAA,EAC/D;AAAA,EACA,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAEtC,IAAI,cAAc,OAAO;AAAA,IACvB,MAAM,WAAW,qBAAqB,MAAM,QAAQ;AAAA,IAGpD,MAAM,iBAAiB,MAAM,eAAe,iBAAiB,MAAM,aAAa,UAAU,OAAO;AAAA,IAGjG,MAAM,cAAc,MAAM,SAAS,YAAY,WAAW,MAAM,KAAK,GAAG,UAAU,OAAO;AAAA,IAGzF,IAAI,kBAAkB,aAAa;AAAA,MACjC,OAAO,KAAK,gBAAgB,eAAe;AAAA,IAC7C;AAAA,IACA,OAAO,kBAAkB;AAAA,EAC3B;AAAA,EAEA,OAAO;AAAA;AAWT,SAAS,gBAAgB,CAAC,YAAY,UAAU,SAAS;AAAA,EACvD,IAAI,sBAAsB;AAAA,IAAM,OAAO;AAAA,EAGvC,IAAI,cAAc,OAAO,eAAe,YAAY,CAAC,MAAM,QAAQ,UAAU,KAAK,EAAE,sBAAsB,aAAa;AAAA,IACrH,IAAI,iBAAiB,cAAc,WAAW,gBAAgB,QAAQ,WAAW,gBAAgB,WAAW;AAAA,MAC1G,OAAO,iBAAiB,WAAW,aAAa,UAAU,OAAO;AAAA,IACnE;AAAA,IACA,IAAI,WAAW,cAAc,WAAW,iBAAiB,YAAY;AAAA,MACnE,OAAO,YAAY,WAAW,WAAW,KAAK,GAAG,UAAU,OAAO;AAAA,IACpE;AAAA,IACA,IAAI,iBAAiB,cAAc,WAAW,YAAY;AAAA,MAExD,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,SAAS,CAAC;AAAA,IAChB,YAAY,KAAK,UAAU,OAAO,QAAQ,UAAU,GAAG;AAAA,MACrD,IAAI,CAAC,SAAS,WAAW,SAAS,GAAG;AAAA,QAAG;AAAA,MACxC,OAAO,OAAO,iBAAiB,OAAO,UAAU,OAAO;AAAA,IACzD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,sBAAsB,YAAY;AAAA,IACpC,OAAO,YAAY,WAAW,UAAU,GAAG,UAAU,OAAO;AAAA,EAC9D;AAAA,EAGA,IAAI,MAAM,QAAQ,UAAU,GAAG;AAAA,IAC7B,OAAO,WAAW,IAAI,aAAW,iBAAiB,SAAS,UAAU,OAAO,CAAC;AAAA,EAC/E;AAAA,EAEA,OAAO;AAAA;AAOT,SAAS,UAAU,CAAC,OAAO;AAAA,EACzB,OAAO,EAAE,MAAM,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU,GAAG,QAAQ,EAAE;AAAA;AAS3F,SAAS,oBAAoB,CAAC,OAAO;AAAA,EACnC,IAAI,cAAc,cAAc,IAAI,MAAM,MAAM;AAAA,EAChD,IAAI,CAAC,aAAa;AAAA,IAChB,cAAc,IAAI;AAAA,IAClB,cAAc,IAAI,MAAM,QAAQ,WAAW;AAAA,EAC7C;AAAA,EACA,MAAM,MAAM,GAAG,MAAM,cAAc,MAAM;AAAA,EACzC,MAAM,SAAS,YAAY,IAAI,GAAG;AAAA,EAClC,IAAI;AAAA,IAAQ,OAAO;AAAA,EAEnB,MAAM,SAAS,WAAW,KAAK;AAAA,EAC/B,MAAM,SAAS,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,EACnD,MAAM,UAAU,SAAS;AAAA,EACzB,IAAI,YAAY;AAAA,IAAG,MAAM,IAAI,MAAM,iDAAiD,SAAS;AAAA,EAC7F,MAAM,UAAU,UAAU,IAAI,OAAS;AAAA,EACvC,MAAM,cAAc,UAAU,IAAI,KAAO;AAAA,EAEzC,MAAM,iBAAiB,aAAa,QAAQ,UAAU;AAAA,EAEtD,MAAM,UAAU,IAAI,MAAM,iBAAiB,CAAC;AAAA,EAC5C,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK;AAAA,IACvC,QAAQ,KAAK,aAAa,QAAQ,UAAU;AAAA,EAC9C;AAAA,EAEA,MAAM,OAAO,OAAO;AAAA,EACpB,MAAM,aAAa,IAAI,MAAM,cAAc;AAAA,EAC3C,SAAS,IAAI,EAAG,IAAI,gBAAgB,KAAK;AAAA,IACvC,MAAM,QAAQ,QAAQ;AAAA,IACtB,MAAM,MAAM,QAAQ,IAAI;AAAA,IACxB,MAAM,WAAW,IAAI,WAAW,MAAM,QAAQ,MAAM,aAAa,OAAO,OAAO,MAAM,KAAK;AAAA,IAC1F,WAAW,KAAK,SAAQ,OAAO,QAAQ;AAAA,EACzC;AAAA,EAEA,MAAM,WAAW,EAAE,YAAY,OAAO;AAAA,EACtC,YAAY,IAAI,KAAK,QAAQ;AAAA,EAC7B,OAAO;AAAA;AAQT,SAAS,YAAY,CAAC,QAAQ,WAAW;AAAA,EACvC,IAAI,QAAQ;AAAA,EACZ,SAAS,IAAI,EAAG,IAAI,WAAW,KAAK;AAAA,IAClC,SAAS,OAAO,KAAK,SAAS,OAAO,SAAS,CAAC,KAAK,IAAI;AAAA,EAC1D;AAAA,EACA,OAAO,UAAU;AAAA,EACjB,OAAO;AAAA;AAST,SAAS,WAAW,CAAC,QAAQ,UAAU,SAAS;AAAA,EAC9C,MAAM,WAAW,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,EACrD,MAAM,YAAY,WAAW;AAAA,EAC7B,MAAM,SAAS,YAAY;AAAA,EAC3B,IAAI,cAAc;AAAA,IAAG,OAAO,qBAAqB,QAAQ,QAAQ,OAAO;AAAA,EACxE,IAAI,cAAc;AAAA,IAAG,OAAO,kBAAkB,QAAQ,QAAQ,UAAU,OAAO;AAAA,EAC/E,IAAI,cAAc;AAAA,IAAG,OAAO,iBAAiB,QAAQ,QAAQ,UAAU,OAAO;AAAA,EAE9E,MAAM,QAAQ,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,MAAM;AAAA,EAC/F,OAAO,UAAU;AAAA,EACjB,OAAO,SAAQ,OAAO,KAAK;AAAA;AAS7B,SAAS,oBAAoB,CAAC,QAAQ,QAAQ,SAAS;AAAA,EACrD,QAAQ;AAAA,SACH;AAAA,MAAG,OAAO;AAAA,SACV;AAAA,MAAG,OAAO;AAAA,SACV;AAAA,MAAG,OAAO;AAAA,SACV,GAAG;AAAA,MACN,MAAM,QAAQ,OAAO,KAAK,QAAQ,OAAO,MAAM;AAAA,MAC/C,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK,GAAG;AAAA,MACN,MAAM,QAAQ,OAAO,KAAK,SAAS,OAAO,QAAQ,IAAI;AAAA,MACtD,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK,GAAG;AAAA,MACN,MAAM,QAAQ,OAAO,KAAK,SAAS,OAAO,QAAQ,IAAI;AAAA,MACtD,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK,GAAG;AAAA,MACN,MAAM,QAAQ,OAAO,KAAK,YAAY,OAAO,QAAQ,IAAI;AAAA,MACzD,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK,GAAG;AAAA,MACN,MAAM,QAAQ,OAAO,KAAK,WAAW,OAAO,QAAQ,IAAI;AAAA,MACxD,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK;AAAA,MACH,OAAO,mBAAmB,QAAQ,CAAC;AAAA,SAChC;AAAA,MACH,OAAO,mBAAmB,QAAQ,CAAC;AAAA,SAChC;AAAA,MACH,OAAO,mBAAmB,QAAQ,EAAE;AAAA,SACjC,IAAI;AAAA,MACP,MAAM,QAAQ,OAAO,KAAK,SAAS,OAAO,QAAQ,IAAI;AAAA,MACtD,OAAO,UAAU;AAAA,MACjB,OAAO,QAAQ,aAAa,KAAK;AAAA,IACnC;AAAA,SACK;AAAA,SACA,IAAI;AAAA,MACP,MAAM,QAAQ,OAAO,KAAK,YAAY,OAAO,QAAQ,IAAI;AAAA,MACzD,OAAO,UAAU;AAAA,MACjB,OAAO,QAAQ,0BAA0B,KAAK;AAAA,IAChD;AAAA,SACK,IAAI;AAAA,MACP,MAAM,QAAQ,OAAO,KAAK,WAAW,OAAO,QAAQ,IAAI;AAAA,MACxD,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK;AAAA,MACH,OAAO,kBAAkB,MAAM;AAAA,SAC5B,IAAI;AAAA,MACP,MAAM,QAAQ,kBAAkB,MAAM;AAAA,MACtC,OAAO,SAAQ,OAAO,KAAK;AAAA,IAC7B;AAAA,SACK,IAAI;AAAA,MAEP,MAAM,QAAQ,OAAO,KAAK,YAAY,OAAO,QAAQ,IAAI;AAAA,MACzD,OAAO,UAAU;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,SACK;AAAA,SACA,IAAI;AAAA,MACP,MAAM,QAAQ,OAAO,KAAK,YAAY,OAAO,QAAQ,IAAI;AAAA,MACzD,OAAO,UAAU;AAAA,MACjB,OAAO,QAAQ,yBAAyB,KAAK;AAAA,IAC/C;AAAA,SACK,IAAI;AAAA,MACP,MAAM,QAAQ,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,EAAE;AAAA,MAC3F,OAAO,UAAU;AAAA,MACjB,MAAM,MAAM,MAAM,KAAK,OAAO,OAAK,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,MAC3E,OAAO,GAAG,IAAI,MAAM,GAAG,CAAC,KAAK,IAAI,MAAM,GAAG,EAAE,KAAK,IAAI,MAAM,IAAI,EAAE,KAAK,IAAI,MAAM,IAAI,EAAE,KAAK,IAAI,MAAM,EAAE;AAAA,IACzG;AAAA;AAAA,MAEE,MAAM,IAAI,MAAM,+CAA+C,QAAQ;AAAA;AAAA;AAW3E,SAAS,iBAAiB,CAAC,QAAQ,QAAQ,UAAU,SAAS;AAAA,EAC5D,MAAM,eAAe,SAAS,KAAO;AAAA,EACrC,MAAM,WAAW,UAAU,IAAI,KAAO;AAAA,EACtC,MAAM,UAAU,UAAU,IAAI;AAAA,EAC9B,MAAM,cAAc,UAAU,aAAa,QAAQ,CAAC,IAAI,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,EAG5F,MAAM,WAAW,IAAI,MAAM,WAAW;AAAA,EACtC,SAAS,IAAI,EAAG,IAAI,aAAa,KAAK;AAAA,IACpC,SAAS,KAAK,aAAa,QAAQ,OAAO;AAAA,EAC5C;AAAA,EAEA,MAAM,UAAU,IAAI,MAAM,cAAc,CAAC;AAAA,EACzC,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK;AAAA,IACvC,QAAQ,KAAK,aAAa,QAAQ,WAAW;AAAA,EAC/C;AAAA,EAGA,MAAM,MAAM,CAAC;AAAA,EACb,SAAS,IAAI,EAAG,IAAI,aAAa,KAAK;AAAA,IACpC,MAAM,MAAM,SAAS,WAAW,SAAS;AAAA,IAEzC,MAAM,cAAc;AAAA,MAClB,MAAM,OAAO;AAAA,MACb,QAAQ,OAAO,SAAS,QAAQ;AAAA,IAClC;AAAA,IACA,IAAI,OAAO,YAAY,aAAa,UAAU,OAAO;AAAA,EACvD;AAAA,EACA,OAAO,UAAU,QAAQ,QAAQ,SAAS;AAAA,EAC1C,OAAO;AAAA;AAUT,SAAS,gBAAgB,CAAC,QAAQ,QAAQ,UAAU,SAAS;AAAA,EAC3D,MAAM,kBAAkB,SAAS;AAAA,EACjC,MAAM,UAAU,UAAU,IAAI;AAAA,EAC9B,MAAM,cAAc,kBAAkB;AAAA,EACtC,MAAM,cAAc,aAAa,QAAQ,UAAU,IAAI,CAAC;AAAA,EAExD,MAAM,UAAU,IAAI,MAAM,cAAc,CAAC;AAAA,EACzC,SAAS,IAAI,EAAG,IAAI,QAAQ,QAAQ,KAAK;AAAA,IACvC,QAAQ,KAAK,aAAa,QAAQ,WAAW;AAAA,EAC/C;AAAA,EAEA,MAAM,cAAc,OAAO;AAAA,EAC3B,MAAM,SAAS,IAAI,MAAM,WAAW;AAAA,EACpC,SAAS,IAAI,EAAG,IAAI,aAAa,KAAK;AAAA,IACpC,MAAM,cAAc;AAAA,MAClB,MAAM,OAAO;AAAA,MACb,QAAQ,cAAc,QAAQ;AAAA,IAChC;AAAA,IACA,OAAO,KAAK,YAAY,aAAa,UAAU,OAAO;AAAA,EACxD;AAAA,EACA,OAAO,SAAS,cAAc,QAAQ,QAAQ,SAAS;AAAA,EACvD,OAAO;AAAA;AAQT,SAAS,kBAAkB,CAAC,QAAQ,OAAO;AAAA,EACzC,MAAM,QAAQ,OAAO,KAAK,SAAS,OAAO,MAAM;AAAA,EAChD,OAAO,UAAU;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI,UAAU,GAAG;AAAA,IACf,WAAW,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ,IAAI,CAAC;AAAA,IAC3D,OAAO,UAAU;AAAA,EACnB,EAAO,SAAI,UAAU,GAAG;AAAA,IACtB,WAAW,OAAO,KAAK,YAAY,OAAO,QAAQ,IAAI;AAAA,IACtD,OAAO,UAAU;AAAA,EACnB,EAAO;AAAA,IACL,MAAM,MAAM,OAAO,KAAK,aAAa,OAAO,QAAQ,IAAI;AAAA,IACxD,MAAM,OAAO,OAAO,KAAK,YAAY,OAAO,SAAS,GAAG,IAAI;AAAA,IAC5D,WAAW,QAAQ,MAAM;AAAA,IACzB,OAAO,UAAU;AAAA;AAAA,EAGnB,OAAO,OAAO,QAAQ,IAAI,MAAM,CAAC;AAAA;AAOnC,SAAS,iBAAiB,CAAC,QAAQ;AAAA,EACjC,MAAM,SAAS,OAAO,KAAK,UAAU,OAAO,QAAQ,IAAI;AAAA,EACxD,OAAO,UAAU;AAAA,EACjB,MAAM,QAAQ,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,MAAM;AAAA,EAC/F,OAAO,UAAU;AAAA,EACjB,OAAO;AAAA;;;AC9VF,SAAS,aAAa,CAAC,QAAQ,kBAAkB,kBAAkB,QAAQ,YAAY;AAAA,EAC5F,MAAM,qBAAqB,sBAAsB,UAAU;AAAA,EAE3D,IAAI,CAAC,kBAAkB,UAAU,CAAC,iBAAiB,QAAQ;AAAA,IACzD,IAAI,CAAC,sBAAsB,CAAC,OAAO;AAAA,MAAQ,OAAO;AAAA,IAClD,mBAAmB,IAAI,MAAM,OAAO,MAAM,EAAE,KAAK,kBAAkB;AAAA,EACrE;AAAA,EACA,MAAM,IAAI,kBAAkB,UAAU,iBAAiB;AAAA,EACvD,MAAM,iBAAiB,WAAW,IAAI,GAAG,cAAc,QAAQ,eAAe;AAAA,EAC9E,IAAI,aAAa;AAAA,EAGjB,MAAM,iBAAiB,CAAC,MAAM;AAAA,EAC9B,IAAI,mBAAmB;AAAA,EACvB,IAAI,eAAe;AAAA,EACnB,IAAI,kBAAkB;AAAA,EACtB,IAAI,kBAAkB;AAAA,EAEtB,IAAI,iBAAiB,IAAI;AAAA,IAEvB,OAAO,eAAe,eAAe,SAAS,KAAK,kBAAkB,iBAAiB,IAAI;AAAA,MACxF;AAAA,MACA,IAAI,eAAe,kBAAkB,YAAY;AAAA,QAE/C,mBAAmB,iBAAiB,GAAG,EAAE;AAAA,QACzC,eAAe,KAAK,gBAAgB;AAAA,QACpC;AAAA,MACF;AAAA,MACA,IAAI,eAAe,kBAAkB;AAAA,QAAY;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,SAAS,IAAI,EAAG,IAAI,GAAG,KAAK;AAAA,IAE1B,MAAM,MAAM,kBAAkB,SAAS,iBAAiB,KAAK;AAAA,IAC7D,MAAM,MAAM,iBAAiB;AAAA,IAG7B,OAAO,iBAAiB,MAAM,mBAAmB,eAAe,kBAAkB,aAAa;AAAA,MAC7F,IAAI,eAAe,kBAAkB,YAAY;AAAA,QAC/C,eAAe,IAAI;AAAA,QACnB;AAAA,MACF;AAAA,MACA,IAAI,eAAe,kBAAkB;AAAA,QAAY;AAAA,MACjD;AAAA,IACF;AAAA,IAEA,mBAAmB,eAAe,GAAG,EAAE;AAAA,IAGvC,QACG,eAAe,eAAe,SAAS,KAAK,eAAe,eAAe,OAAO,gBACjF,kBAAkB,OAAO,eAAe,eAAe,OAAO,aAC/D;AAAA,MACA;AAAA,MACA,IAAI,eAAe,kBAAkB,YAAY;AAAA,QAE/C,MAAM,UAAU,CAAC;AAAA,QACjB,iBAAiB,KAAK,OAAO;AAAA,QAC7B,mBAAmB;AAAA,QACnB,eAAe,KAAK,OAAO;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,IAAI,eAAe,kBAAkB;AAAA,QAAY;AAAA,IACnD;AAAA,IAGA,IAAI,QAAQ,oBAAoB;AAAA,MAE9B,iBAAiB,KAAK,OAAO,aAAa;AAAA,IAC5C,EAAO,SAAI,iBAAiB,eAAe,SAAS,GAAG;AAAA,MACrD,iBAAiB,KAAK,IAAI;AAAA,IAC5B,EAAO;AAAA,MACL,iBAAiB,KAAK,CAAC,CAAC;AAAA;AAAA,EAE5B;AAAA,EAGA,IAAI,CAAC,OAAO,QAAQ;AAAA,IAElB,SAAS,IAAI,EAAG,IAAI,oBAAoB,KAAK;AAAA,MAE3C,MAAM,UAAU,CAAC;AAAA,MACjB,iBAAiB,KAAK,OAAO;AAAA,MAC7B,mBAAmB;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAWF,SAAS,cAAc,CAAC,eAAe,QAAQ,SAAS,QAAQ,GAAG;AAAA,EACxE,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;AAAA,EACjC,MAAM,WAAW,OAAO,QAAQ,oBAAoB;AAAA,EACpD,MAAM,YAAY,WAAW,QAAQ,IAAI;AAAA,EAEzC,IAAI,WAAW,MAAM,GAAG;AAAA,IACtB,IAAI,UAAU,OAAO,SAAS;AAAA,IAC9B,IAAI,WAAW;AAAA,IACf,IAAI,QAAQ,SAAS,WAAW,GAAG;AAAA,MACjC,UAAU,QAAQ,SAAS;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,eAAe,eAAe,SAAS,SAAS,QAAQ;AAAA,IAExD,MAAM,YAAY,QAAQ,KAAK,KAAK,GAAG;AAAA,IACvC,MAAM,SAAS,cAAc,IAAI,SAAS;AAAA,IAC1C,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,MAAM,oCAAoC;AAAA,IACjE,IAAI;AAAA,MAAU,eAAe,QAAQ,KAAK;AAAA,IAC1C,cAAc,IAAI,MAAM,MAAM;AAAA,IAC9B,cAAc,OAAO,SAAS;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,IAAI,UAAU,MAAM,GAAG;AAAA,IACrB,MAAM,UAAU,OAAO,SAAS,GAAG,QAAQ;AAAA,IAG3C,eAAe,eAAe,OAAO,SAAS,GAAG,SAAS,IAAI,SAAS,YAAY,CAAC;AAAA,IACpF,eAAe,eAAe,OAAO,SAAS,GAAG,SAAS,IAAI,SAAS,YAAY,CAAC;AAAA,IAEpF,MAAM,OAAO,cAAc,IAAI,GAAG,QAAQ,aAAa;AAAA,IACvD,MAAM,SAAS,cAAc,IAAI,GAAG,QAAQ,eAAe;AAAA,IAE3D,IAAI,CAAC;AAAA,MAAM,MAAM,IAAI,MAAM,iCAAiC;AAAA,IAC5D,IAAI,CAAC;AAAA,MAAQ,MAAM,IAAI,MAAM,mCAAmC;AAAA,IAChE,IAAI,KAAK,WAAW,OAAO,QAAQ;AAAA,MACjC,MAAM,IAAI,MAAM,8CAA8C;AAAA,IAChE;AAAA,IAEA,MAAM,MAAM,aAAa,MAAM,QAAQ,SAAS;AAAA,IAChD,IAAI;AAAA,MAAU,eAAe,KAAK,KAAK;AAAA,IAEvC,cAAc,OAAO,GAAG,QAAQ,aAAa;AAAA,IAC7C,cAAc,OAAO,GAAG,QAAQ,eAAe;AAAA,IAC/C,cAAc,IAAI,MAAM,GAAG;AAAA,IAC3B;AAAA,EACF;AAAA,EAGA,IAAI,OAAO,SAAS,QAAQ;AAAA,IAE1B,MAAM,cAAc,OAAO,QAAQ,oBAAoB,aAAa,QAAQ,QAAQ;AAAA,IAEpF,MAAM,SAAS,CAAC;AAAA,IAChB,WAAW,SAAS,OAAO,UAAU;AAAA,MACnC,eAAe,eAAe,OAAO,SAAS,WAAW;AAAA,MACzD,MAAM,YAAY,cAAc,IAAI,MAAM,KAAK,KAAK,GAAG,CAAC;AAAA,MACxD,IAAI,CAAC;AAAA,QAAW,MAAM,IAAI,MAAM,mCAAmC;AAAA,MACnE,OAAO,MAAM,QAAQ,QAAQ;AAAA,IAC/B;AAAA,IAEA,WAAW,SAAS,OAAO,UAAU;AAAA,MACnC,cAAc,OAAO,MAAM,KAAK,KAAK,GAAG,CAAC;AAAA,IAC3C;AAAA,IAGA,IAAI,WAAW,aAAa,QAAQ,WAAW;AAAA,IAC/C,IAAI,OAAO,QAAQ,cAAc,SAAS,WAAW;AAAA,MACnD,WAAW,oBAAoB,UAAU,OAAO;AAAA,IAClD;AAAA,IACA,IAAI;AAAA,MAAU,eAAe,UAAU,KAAK;AAAA,IAC5C,cAAc,IAAI,MAAM,QAAQ;AAAA,EAClC;AAAA;AAQF,SAAS,cAAc,CAAC,KAAK,OAAO;AAAA,EAClC,SAAS,IAAI,EAAG,IAAI,IAAI,QAAQ,KAAK;AAAA,IACnC,IAAI,OAAO;AAAA,MACT,eAAe,IAAI,IAAI,QAAQ,CAAC;AAAA,IAClC,EAAO;AAAA,MACL,IAAI,KAAK,IAAI,GAAG;AAAA;AAAA,EAEpB;AAAA;AASF,SAAS,YAAY,CAAC,MAAM,QAAQ,OAAO;AAAA,EACzC,MAAM,MAAM,CAAC;AAAA,EACb,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK;AAAA,IACpC,IAAI,OAAO;AAAA,MACT,IAAI,KAAK,aAAa,KAAK,IAAI,OAAO,IAAI,QAAQ,CAAC,CAAC;AAAA,IACtD,EAAO;AAAA,MACL,IAAI,KAAK,IAAI;AAAA,QAEX,MAAM,MAAM,CAAC;AAAA,QACb,SAAS,IAAI,EAAG,IAAI,KAAK,GAAG,QAAQ,KAAK;AAAA,UACvC,MAAM,QAAQ,OAAO,GAAG;AAAA,UACxB,IAAI,KAAK,GAAG,MAAM,UAAU,YAAY,OAAO;AAAA,QACjD;AAAA,QACA,IAAI,KAAK,GAAG;AAAA,MACd,EAAO;AAAA,QACL,IAAI,KAAK,SAAS;AAAA;AAAA;AAAA,EAGxB;AAAA,EACA,OAAO;AAAA;AAUT,SAAS,YAAY,CAAC,QAAQ,OAAO;AAAA,EACnC,MAAM,OAAO,OAAO,KAAK,MAAM;AAAA,EAC/B,MAAM,SAAS,OAAO,KAAK,KAAK;AAAA,EAChC,MAAM,MAAM,CAAC;AAAA,EACb,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,IAE/B,MAAM,MAAM,CAAC;AAAA,IACb,WAAW,OAAO,MAAM;AAAA,MACtB,IAAI,OAAO,KAAK,WAAW;AAAA,QAAQ,MAAM,IAAI,MAAM,8BAA8B;AAAA,MACjF,IAAI,OAAO,OAAO,KAAK;AAAA,IACzB;AAAA,IACA,IAAI,OAAO;AAAA,MACT,IAAI,KAAK,aAAa,KAAK,QAAQ,CAAC,CAAC;AAAA,IACvC,EAAO;AAAA,MACL,IAAI,KAAK,GAAG;AAAA;AAAA,EAEhB;AAAA,EACA,OAAO;AAAA;;;ACpPF,SAAS,iBAAiB,CAAC,QAAQ,OAAO,QAAQ;AAAA,EACvD,MAAM,QAAQ,kBAAkB;AAAA,EAChC,MAAM,YAAY,WAAW,MAAM;AAAA,EACnC,MAAM,oBAAoB,WAAW,MAAM;AAAA,EAC3C,WAAW,MAAM;AAAA,EACjB,IAAI,QAAQ,iBAAiB,MAAM;AAAA,EACnC,IAAI,cAAc;AAAA,EAClB,OAAO,iBAAiB,QAAQ,OAAO,KAAK,IAAI;AAAA,EAEhD,MAAM,qBAAqB,YAAY;AAAA,EAEvC,OAAO,cAAc,OAAO;AAAA,IAE1B,MAAM,WAAW,iBAAiB,MAAM;AAAA,IACxC,MAAM,YAAY,IAAI,WAAW,iBAAiB;AAAA,IAClD,SAAS,IAAI,EAAG,IAAI,mBAAmB,KAAK;AAAA,MAC1C,UAAU,KAAK,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,IACrD;AAAA,IAEA,SAAS,IAAI,EAAG,IAAI,qBAAqB,cAAc,OAAO,KAAK;AAAA,MAEjE,MAAM,WAAW,OAAO,UAAU,EAAE;AAAA,MACpC,IAAI,UAAU;AAAA,QACZ,IAAI,aAAa;AAAA,QACjB,IAAI,iBAAiB;AAAA,QACrB,MAAM,QAAQ,MAAM,YAAY;AAAA,QAChC,OAAO,kBAAkB,cAAc,OAAO;AAAA,UAC5C,IAAI,OAAO,OAAO,OAAO,KAAK,SAAS,OAAO,MAAM,CAAC,KAAK,aAAa;AAAA,UACvE,cAAc;AAAA,UACd,OAAO,cAAc,GAAG;AAAA,YACtB,cAAc;AAAA,YACd,OAAO;AAAA,YACP,IAAI,YAAY;AAAA,cACd,QAAQ,OAAO,OAAO,KAAK,SAAS,OAAO,MAAM,CAAC,KAAK,WAAW,aAAa;AAAA,YACjF;AAAA,UACF;AAAA,UACA,MAAM,QAAQ,WAAW;AAAA,UACzB,SAAS;AAAA,UACT,OAAO,iBAAiB,QAAQ,OAAO,KAAK,IAAI;AAAA,UAChD;AAAA,QACF;AAAA,QACA,IAAI,gBAAgB;AAAA,UAElB,OAAO,UAAU,KAAK,MAAM,iBAAiB,OAAO,QAAQ,IAAI,OAAO,UAAU,KAAK,CAAC;AAAA,QACzF;AAAA,MACF,EAAO;AAAA,QACL,SAAS,IAAI,EAAG,IAAI,sBAAsB,cAAc,OAAO,KAAK;AAAA,UAClE,SAAS;AAAA,UACT,OAAO,iBAAiB,QAAQ,OAAO,KAAK,IAAI;AAAA,QAClD;AAAA;AAAA,IAEJ;AAAA,EACF;AAAA;AAQK,SAAS,oBAAoB,CAAC,QAAQ,OAAO,QAAQ;AAAA,EAC1D,MAAM,UAAU,IAAI,WAAW,KAAK;AAAA,EACpC,kBAAkB,QAAQ,OAAO,OAAO;AAAA,EACxC,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,OAAO,KAAK,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,QAAQ,EAAE;AAAA,IACjG,OAAO,UAAU,QAAQ;AAAA,EAC3B;AAAA;AAQK,SAAS,cAAc,CAAC,QAAQ,OAAO,QAAQ;AAAA,EACpD,MAAM,aAAa,IAAI,WAAW,KAAK;AAAA,EACvC,kBAAkB,QAAQ,OAAO,UAAU;AAAA,EAC3C,MAAM,aAAa,IAAI,WAAW,KAAK;AAAA,EACvC,kBAAkB,QAAQ,OAAO,UAAU;AAAA,EAE3C,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,MAAM,SAAS,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,WAAW,EAAE;AAAA,IACvG,IAAI,WAAW,IAAI;AAAA,MAEjB,OAAO,KAAK,IAAI,WAAW,WAAW,KAAK,WAAW,EAAE;AAAA,MACxD,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,SAAS,GAAG,WAAW,EAAE,CAAC;AAAA,MACtD,OAAO,GAAG,IAAI,QAAQ,WAAW,EAAE;AAAA,IACrC,EAAO;AAAA,MACL,OAAO,KAAK;AAAA;AAAA,IAEd,OAAO,UAAU,WAAW;AAAA,EAC9B;AAAA;;;ACtFK,SAAS,sBAAsB,CAAC,QAAQ,OAAO,QAAQ,QAAQ;AAAA,EACpE,IAAI,WAAW,WAAW;AAAA,IACxB,SAAS,OAAO,KAAK,UAAU,OAAO,QAAQ,IAAI;AAAA,IAClD,OAAO,UAAU;AAAA,EACnB;AAAA,EACA,MAAM,cAAc,OAAO;AAAA,EAC3B,IAAI,OAAO;AAAA,EACX,OAAO,OAAO,OAAO,QAAQ;AAAA,IAC3B,MAAM,SAAS,WAAW,MAAM;AAAA,IAChC,IAAI,SAAS,GAAG;AAAA,MAEd,OAAO,cAAc,QAAQ,QAAQ,OAAO,QAAQ,IAAI;AAAA,IAC1D,EAAO;AAAA,MAEL,MAAM,QAAQ,WAAW;AAAA,MACzB,QAAQ,QAAQ,OAAO,OAAO,QAAQ,IAAI;AAAA,MAC1C,QAAQ;AAAA;AAAA,EAEZ;AAAA,EACA,OAAO,SAAS,cAAc;AAAA;AAYhC,SAAS,OAAO,CAAC,QAAQ,OAAO,UAAU,QAAQ,MAAM;AAAA,EACtD,MAAM,QAAQ,WAAW,KAAK;AAAA,EAC9B,IAAI,QAAQ;AAAA,EACZ,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,SAAS,OAAO,KAAK,SAAS,OAAO,QAAQ,MAAM,KAAK;AAAA,EAC1D;AAAA,EAIA,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA;AAcF,SAAS,aAAa,CAAC,QAAQ,QAAQ,UAAU,QAAQ,MAAM;AAAA,EAC7D,IAAI,QAAQ,UAAU,KAAK;AAAA,EAC3B,MAAM,QAAQ,KAAK,YAAY;AAAA,EAE/B,IAAI,OAAO;AAAA,EACX,IAAI,OAAO,SAAS,OAAO,KAAK,YAAY;AAAA,IAC1C,OAAO,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,EAC7C,EAAO,SAAI,MAAM;AAAA,IAEf,MAAM,IAAI,MAAM,0BAA0B,OAAO,qBAAqB;AAAA,EACxE;AAAA,EACA,IAAI,OAAO;AAAA,EACX,IAAI,QAAQ;AAAA,EAGZ,OAAO,OAAO;AAAA,IAEZ,IAAI,QAAQ,GAAG;AAAA,MACb,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,EAAO,SAAI,OAAO,QAAQ,UAAU;AAAA,MAElC,QAAQ,OAAO,KAAK,SAAS,OAAO,MAAM,KAAK;AAAA,MAC/C,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,EAAO;AAAA,MACL,IAAI,OAAO,OAAO,QAAQ;AAAA,QAExB,OAAO,UAAU,QAAQ,QAAQ;AAAA,MACnC;AAAA,MACA;AAAA,MACA,SAAS;AAAA;AAAA,EAEb;AAAA,EAEA,OAAO;AAAA;AAUF,SAAS,eAAe,CAAC,QAAQ,OAAO,MAAM,YAAY;AAAA,EAC/D,MAAM,QAAQ,UAAU,MAAM,UAAU;AAAA,EACxC,MAAM,QAAQ,IAAI,WAAW,QAAQ,KAAK;AAAA,EAC1C,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,MAC9B,MAAM,IAAI,QAAQ,KAAK,OAAO,KAAK,SAAS,OAAO,QAAQ;AAAA,IAC7D;AAAA,EACF;AAAA,EAEA,IAAI,SAAS;AAAA,IAAS,OAAO,IAAI,aAAa,MAAM,MAAM;AAAA,EACrD,SAAI,SAAS;AAAA,IAAU,OAAO,IAAI,aAAa,MAAM,MAAM;AAAA,EAC3D,SAAI,SAAS;AAAA,IAAS,OAAO,IAAI,WAAW,MAAM,MAAM;AAAA,EACxD,SAAI,SAAS;AAAA,IAAS,OAAO,IAAI,cAAc,MAAM,MAAM;AAAA,EAC3D,SAAI,SAAS,wBAAwB;AAAA,IAExC,MAAM,QAAQ,IAAI,MAAM,KAAK;AAAA,IAC7B,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,MAC9B,MAAM,KAAK,MAAM,SAAS,IAAI,QAAQ,IAAI,KAAK,KAAK;AAAA,IACtD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,MAAM,+CAA+C,MAAM;AAAA;AAQvE,SAAS,SAAS,CAAC,MAAM,YAAY;AAAA,EACnC,QAAQ;AAAA,SACH;AAAA,SACA;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,SACA;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,IAAI,CAAC;AAAA,QAAY,MAAM,IAAI,MAAM,uCAAuC;AAAA,MACxE,OAAO;AAAA;AAAA,MAEP,MAAM,IAAI,MAAM,6BAA6B,MAAM;AAAA;AAAA;;;ACtJhD,SAAS,SAAS,CAAC,QAAQ,MAAM,OAAO,aAAa;AAAA,EAC1D,IAAI,UAAU;AAAA,IAAG,OAAO,CAAC;AAAA,EACzB,IAAI,SAAS,WAAW;AAAA,IACtB,OAAO,iBAAiB,QAAQ,KAAK;AAAA,EACvC,EAAO,SAAI,SAAS,SAAS;AAAA,IAC3B,OAAO,eAAe,QAAQ,KAAK;AAAA,EACrC,EAAO,SAAI,SAAS,SAAS;AAAA,IAC3B,OAAO,eAAe,QAAQ,KAAK;AAAA,EACrC,EAAO,SAAI,SAAS,SAAS;AAAA,IAC3B,OAAO,eAAe,QAAQ,KAAK;AAAA,EACrC,EAAO,SAAI,SAAS,SAAS;AAAA,IAC3B,OAAO,eAAe,QAAQ,KAAK;AAAA,EACrC,EAAO,SAAI,SAAS,UAAU;AAAA,IAC5B,OAAO,gBAAgB,QAAQ,KAAK;AAAA,EACtC,EAAO,SAAI,SAAS,cAAc;AAAA,IAChC,OAAO,mBAAmB,QAAQ,KAAK;AAAA,EACzC,EAAO,SAAI,SAAS,wBAAwB;AAAA,IAC1C,IAAI,CAAC;AAAA,MAAa,MAAM,IAAI,MAAM,8BAA8B;AAAA,IAChE,OAAO,wBAAwB,QAAQ,OAAO,WAAW;AAAA,EAC3D,EAAO;AAAA,IACL,MAAM,IAAI,MAAM,2BAA2B,MAAM;AAAA;AAAA;AAWrD,SAAS,gBAAgB,CAAC,QAAQ,OAAO;AAAA,EACvC,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA,EAC9B,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,MAAM,aAAa,OAAO,UAAU,IAAI,IAAI;AAAA,IAC5C,MAAM,YAAY,IAAI;AAAA,IACtB,MAAM,OAAO,OAAO,KAAK,SAAS,UAAU;AAAA,IAC5C,OAAO,MAAM,OAAO,KAAK,eAAe;AAAA,EAC1C;AAAA,EACA,OAAO,UAAU,KAAK,KAAK,QAAQ,CAAC;AAAA,EACpC,OAAO;AAAA;AAUT,SAAS,cAAc,CAAC,QAAQ,OAAO;AAAA,EACrC,MAAM,UAAU,OAAO,KAAK,aAAa,OAAO,UAAU,IACtD,IAAI,WAAW,MAAM,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,QAAQ,CAAC,CAAC,IAC3F,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,KAAK;AAAA,EACpF,OAAO,UAAU,QAAQ;AAAA,EACzB,OAAO;AAAA;AAUT,SAAS,cAAc,CAAC,QAAQ,OAAO;AAAA,EACrC,MAAM,UAAU,OAAO,KAAK,aAAa,OAAO,UAAU,IACtD,IAAI,cAAc,MAAM,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,QAAQ,CAAC,CAAC,IAC9F,IAAI,cAAc,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,KAAK;AAAA,EACvF,OAAO,UAAU,QAAQ;AAAA,EACzB,OAAO;AAAA;AAUT,SAAS,cAAc,CAAC,QAAQ,OAAO;AAAA,EACrC,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA,EAC9B,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,MAAM,MAAM,OAAO,KAAK,YAAY,OAAO,SAAS,IAAI,IAAI,IAAI;AAAA,IAChE,MAAM,OAAO,OAAO,KAAK,SAAS,OAAO,SAAS,IAAI,KAAK,GAAG,IAAI;AAAA,IAClE,OAAO,KAAK,OAAO,IAAI,KAAK,MAAM;AAAA,EACpC;AAAA,EACA,OAAO,UAAU,QAAQ;AAAA,EACzB,OAAO;AAAA;AAUT,SAAS,cAAc,CAAC,QAAQ,OAAO;AAAA,EACrC,MAAM,UAAU,OAAO,KAAK,aAAa,OAAO,UAAU,IACtD,IAAI,aAAa,MAAM,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,QAAQ,CAAC,CAAC,IAC7F,IAAI,aAAa,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,KAAK;AAAA,EACtF,OAAO,UAAU,QAAQ;AAAA,EACzB,OAAO;AAAA;AAUT,SAAS,eAAe,CAAC,QAAQ,OAAO;AAAA,EACtC,MAAM,UAAU,OAAO,KAAK,aAAa,OAAO,UAAU,IACtD,IAAI,aAAa,MAAM,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,QAAQ,CAAC,CAAC,IAC7F,IAAI,aAAa,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,KAAK;AAAA,EACtF,OAAO,UAAU,QAAQ;AAAA,EACzB,OAAO;AAAA;AAUT,SAAS,kBAAkB,CAAC,QAAQ,OAAO;AAAA,EACzC,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA,EAC9B,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,MAAM,SAAS,OAAO,KAAK,UAAU,OAAO,QAAQ,IAAI;AAAA,IACxD,OAAO,UAAU;AAAA,IACjB,OAAO,KAAK,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,MAAM;AAAA,IAC7F,OAAO,UAAU;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;AAWT,SAAS,uBAAuB,CAAC,QAAQ,OAAO,aAAa;AAAA,EAE3D,MAAM,SAAS,IAAI,MAAM,KAAK;AAAA,EAC9B,SAAS,IAAI,EAAG,IAAI,OAAO,KAAK;AAAA,IAC9B,OAAO,KAAK,IAAI,WAAW,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,WAAW;AAAA,IAClG,OAAO,UAAU;AAAA,EACnB;AAAA,EACA,OAAO;AAAA;AAYT,SAAS,KAAK,CAAC,QAAQ,QAAQ,MAAM;AAAA,EACnC,MAAM,UAAU,IAAI,YAAY,IAAI;AAAA,EACpC,IAAI,WAAW,OAAO,EAAE,IAAI,IAAI,WAAW,QAAQ,QAAQ,IAAI,CAAC;AAAA,EAChE,OAAO;AAAA;;;AC5KT,IAAM,YAAY,CAAC,GAAG,KAAM,OAAQ,UAAU,UAAU;AAWxD,SAAS,SAAS,CAAC,WAAW,SAAS,SAAS,OAAO,QAAQ;AAAA,EAC7D,SAAS,IAAI,EAAG,IAAI,QAAQ,KAAK;AAAA,IAC/B,QAAQ,QAAQ,KAAK,UAAU,UAAU;AAAA,EAC3C;AAAA;AAUK,SAAS,gBAAgB,CAAC,OAAO,QAAQ;AAAA,EAC9C,MAAM,cAAc,MAAM;AAAA,EAC1B,MAAM,eAAe,OAAO;AAAA,EAC5B,IAAI,MAAM;AAAA,EACV,IAAI,SAAS;AAAA,EAGb,OAAO,MAAM,aAAa;AAAA,IACxB,MAAM,IAAI,MAAM;AAAA,IAChB;AAAA,IACA,IAAI,IAAI,KAAK;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI,gBAAgB,OAAO,aAAa;AAAA,IACtC,MAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAAA,EAEA,OAAO,MAAM,aAAa;AAAA,IACxB,MAAM,IAAI,MAAM;AAAA,IAChB,IAAI,MAAM;AAAA,IACV;AAAA,IAEA,IAAI,OAAO,aAAa;AAAA,MACtB,MAAM,IAAI,MAAM,oBAAoB;AAAA,IACtC;AAAA,IAGA,KAAK,IAAI,OAAS,GAAG;AAAA,MAEnB,IAAI,QAAO,MAAM,KAAK;AAAA,MAEtB,IAAI,OAAM,IAAI;AAAA,QACZ,IAAI,MAAM,KAAK,aAAa;AAAA,UAC1B,MAAM,IAAI,MAAM,6CAA6C;AAAA,QAC/D;AAAA,QACA,MAAM,aAAa,OAAM;AAAA,QACzB,OAAM,MAAM,QACP,MAAM,MAAM,MAAM,MAClB,MAAM,MAAM,MAAM,OAClB,MAAM,MAAM,MAAM;AAAA,QACvB,QAAO,OAAM,UAAU,eAAe;AAAA,QACtC,OAAO;AAAA,MACT;AAAA,MACA,IAAI,MAAM,OAAM,aAAa;AAAA,QAC3B,MAAM,IAAI,MAAM,2CAA2C;AAAA,MAC7D;AAAA,MACA,UAAU,OAAO,KAAK,QAAQ,QAAQ,IAAG;AAAA,MACzC,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,EAAO;AAAA,MAEL,IAAI,SAAS;AAAA,MACb,QAAQ,IAAI;AAAA,aACP;AAAA,UAEH,OAAO,MAAM,IAAI,KAAO;AAAA,UACxB,SAAS,MAAM,QAAQ,MAAM,KAAK;AAAA,UAClC;AAAA,UACA;AAAA,aACG;AAAA,UAEH,IAAI,eAAe,MAAM,GAAG;AAAA,YAC1B,MAAM,IAAI,MAAM,2BAA2B;AAAA,UAC7C;AAAA,UACA,OAAO,MAAM,KAAK;AAAA,UAClB,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM;AAAA,UACzC,OAAO;AAAA,UACP;AAAA,aACG;AAAA,UAEH,IAAI,eAAe,MAAM,GAAG;AAAA,YAC1B,MAAM,IAAI,MAAM,2BAA2B;AAAA,UAC7C;AAAA,UACA,OAAO,MAAM,KAAK;AAAA,UAClB,SAAS,MAAM,QACV,MAAM,MAAM,MAAM,MAClB,MAAM,MAAM,MAAM,OAClB,MAAM,MAAM,MAAM;AAAA,UACvB,OAAO;AAAA,UACP;AAAA;AAAA,UAEA;AAAA;AAAA,MAEF,IAAI,WAAW,KAAK,MAAM,MAAM,GAAG;AAAA,QACjC,MAAM,IAAI,MAAM,kBAAkB,cAAc,mBAAmB,aAAa;AAAA,MAClF;AAAA,MACA,IAAI,SAAS,QAAQ;AAAA,QACnB,MAAM,IAAI,MAAM,yCAAyC;AAAA,MAC3D;AAAA,MACA,UAAU,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,GAAG;AAAA,MACtD,UAAU;AAAA;AAAA,EAEd;AAAA,EAEA,IAAI,WAAW;AAAA,IAAc,MAAM,IAAI,MAAM,wBAAwB;AAAA;;;AC3GhE,SAAS,YAAY,CAAC,OAAO,QAAQ,MAAM,SAAS,cAAc;AAAA,EACvE,MAAM,OAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,EAC1E,MAAM,SAAS,EAAE,MAAM,QAAQ,EAAE;AAAA,EAEjC,IAAI;AAAA,EAGJ,MAAM,mBAAmB,qBAAqB,QAAQ,MAAM,UAAU;AAAA,EAEtE,QAAQ,kBAAkB,aAAa,qBAAqB,QAAQ,MAAM,UAAU;AAAA,EAIpF,MAAM,UAAU,KAAK,aAAa;AAAA,EAClC,IAAI,KAAK,aAAa,SAAS;AAAA,IAC7B,WAAW,UAAU,QAAQ,MAAM,SAAS,QAAQ,WAAW;AAAA,EACjE,EAAO,SACL,KAAK,aAAa,sBAClB,KAAK,aAAa,oBAClB,KAAK,aAAa,OAClB;AAAA,IACA,MAAM,WAAW,SAAS,YAAY,IAAI,KAAK,SAAS,OAAO,QAAQ;AAAA,IACvE,IAAI,UAAU;AAAA,MACZ,WAAW,IAAI,MAAM,OAAO;AAAA,MAC5B,IAAI,SAAS,WAAW;AAAA,QACtB,uBAAuB,QAAQ,UAAU,QAAQ;AAAA,QACjD,WAAW,SAAS,IAAI,OAAK,CAAC,CAAC,CAAC;AAAA,MAClC,EAAO;AAAA,QAEL,uBAAuB,QAAQ,UAAU,UAAU,KAAK,aAAa,OAAO,MAAM;AAAA;AAAA,IAEtF,EAAO;AAAA,MACL,WAAW,IAAI,WAAW,OAAO;AAAA;AAAA,EAErC,EAAO,SAAI,KAAK,aAAa,qBAAqB;AAAA,IAChD,WAAW,gBAAgB,QAAQ,SAAS,MAAM,QAAQ,WAAW;AAAA,EACvE,EAAO,SAAI,KAAK,aAAa,uBAAuB;AAAA,IAClD,MAAM,QAAQ,SAAS;AAAA,IACvB,WAAW,QAAQ,IAAI,WAAW,OAAO,IAAI,IAAI,cAAc,OAAO;AAAA,IACtE,kBAAkB,QAAQ,SAAS,QAAQ;AAAA,EAC7C,EAAO,SAAI,KAAK,aAAa,2BAA2B;AAAA,IACtD,WAAW,IAAI,MAAM,OAAO;AAAA,IAC5B,qBAAqB,QAAQ,SAAS,QAAQ;AAAA,EAChD,EAAO;AAAA,IACL,MAAM,IAAI,MAAM,iCAAiC,KAAK,UAAU;AAAA;AAAA,EAGlE,OAAO,EAAE,kBAAkB,kBAAkB,SAAS;AAAA;AASxD,SAAS,oBAAoB,CAAC,QAAQ,MAAM,YAAY;AAAA,EACtD,IAAI,WAAW,SAAS,GAAG;AAAA,IACzB,MAAM,qBAAqB,sBAAsB,UAAU;AAAA,IAC3D,IAAI,oBAAoB;AAAA,MACtB,MAAM,SAAS,IAAI,MAAM,KAAK,UAAU;AAAA,MACxC,uBAAuB,QAAQ,SAAS,kBAAkB,GAAG,MAAM;AAAA,MACnE,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO,CAAC;AAAA;AASV,SAAS,oBAAoB,CAAC,QAAQ,MAAM,YAAY;AAAA,EACtD,MAAM,qBAAqB,sBAAsB,UAAU;AAAA,EAC3D,IAAI,CAAC;AAAA,IAAoB,OAAO,EAAE,kBAAkB,CAAC,GAAG,UAAU,EAAE;AAAA,EAEpE,MAAM,mBAAmB,IAAI,MAAM,KAAK,UAAU;AAAA,EAClD,uBAAuB,QAAQ,SAAS,kBAAkB,GAAG,gBAAgB;AAAA,EAG7E,IAAI,WAAW,KAAK;AAAA,EACpB,WAAW,OAAO,kBAAkB;AAAA,IAClC,IAAI,QAAQ;AAAA,MAAoB;AAAA,EAClC;AAAA,EACA,IAAI,aAAa;AAAA,IAAG,iBAAiB,SAAS;AAAA,EAE9C,OAAO,EAAE,kBAAkB,SAAS;AAAA;AAU/B,SAAS,cAAc,CAAC,iBAAiB,wBAAwB,QAAO,aAAa;AAAA,EAE1F,IAAI;AAAA,EACJ,MAAM,qBAAqB,cAAc;AAAA,EACzC,IAAI,WAAU,gBAAgB;AAAA,IAC5B,OAAO;AAAA,EACT,EAAO,SAAI,oBAAoB;AAAA,IAC7B,OAAO,mBAAmB,iBAAiB,sBAAsB;AAAA,EACnE,EAAO,SAAI,WAAU,UAAU;AAAA,IAC7B,OAAO,IAAI,WAAW,sBAAsB;AAAA,IAC5C,iBAAiB,iBAAiB,IAAI;AAAA,EACxC,EAAO;AAAA,IACL,MAAM,IAAI,MAAM,0CAA0C,QAAO;AAAA;AAAA,EAEnE,IAAI,MAAM,WAAW,wBAAwB;AAAA,IAC3C,MAAM,IAAI,MAAM,oCAAoC,MAAM,gCAAgC,wBAAwB;AAAA,EACpH;AAAA,EACA,OAAO;AAAA;AAYF,SAAS,cAAc,CAAC,iBAAiB,IAAI,eAAe;AAAA,EACjE,MAAM,OAAO,IAAI,SAAS,gBAAgB,QAAQ,gBAAgB,YAAY,gBAAgB,UAAU;AAAA,EACxG,MAAM,SAAS,EAAE,MAAM,QAAQ,EAAE;AAAA,EACjC,QAAQ,MAAM,SAAS,YAAY,eAAO,gBAAgB;AAAA,EAC1D,MAAM,QAAQ,GAAG;AAAA,EACjB,IAAI,CAAC;AAAA,IAAO,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAGtE,MAAM,mBAAmB,uBAAuB,QAAQ,OAAO,UAAU;AAAA,EACzE,OAAO,SAAS,MAAM;AAAA,EAGtB,MAAM,mBAAmB,uBAAuB,QAAQ,OAAO,UAAU;AAAA,EAGzE,MAAM,uBAAuB,GAAG,yBAAyB,MAAM,gCAAgC,MAAM;AAAA,EAErG,IAAI,OAAO,gBAAgB,SAAS,OAAO,MAAM;AAAA,EACjD,IAAI,MAAM,kBAAkB,OAAO;AAAA,IACjC,OAAO,eAAe,MAAM,sBAAsB,QAAO,WAAW;AAAA,EACtE;AAAA,EACA,MAAM,WAAW,IAAI,SAAS,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,EAC3E,MAAM,aAAa,EAAE,MAAM,UAAU,QAAQ,EAAE;AAAA,EAI/C,IAAI;AAAA,EACJ,MAAM,UAAU,MAAM,aAAa,MAAM;AAAA,EACzC,IAAI,MAAM,aAAa,SAAS;AAAA,IAC9B,WAAW,UAAU,YAAY,MAAM,SAAS,QAAQ,WAAW;AAAA,EACrE,EAAO,SAAI,MAAM,aAAa,OAAO;AAAA,IAEnC,WAAW,IAAI,MAAM,OAAO;AAAA,IAC5B,uBAAuB,YAAY,GAAG,QAAQ;AAAA,IAC9C,WAAW,SAAS,IAAI,OAAK,CAAC,CAAC,CAAC;AAAA,EAClC,EAAO,SACL,MAAM,aAAa,sBACnB,MAAM,aAAa,kBACnB;AAAA,IACA,MAAM,WAAW,SAAS,SAAS,WAAW,QAAQ;AAAA,IACtD,WAAW,IAAI,MAAM,OAAO;AAAA,IAC5B,uBAAuB,YAAY,UAAU,UAAU,uBAAuB,CAAC;AAAA,EACjF,EAAO,SAAI,MAAM,aAAa,uBAAuB;AAAA,IACnD,MAAM,QAAQ,SAAS;AAAA,IACvB,WAAW,QAAQ,IAAI,WAAW,OAAO,IAAI,IAAI,cAAc,OAAO;AAAA,IACtE,kBAAkB,YAAY,SAAS,QAAQ;AAAA,EACjD,EAAO,SAAI,MAAM,aAAa,2BAA2B;AAAA,IACvD,WAAW,IAAI,MAAM,OAAO;AAAA,IAC5B,qBAAqB,YAAY,SAAS,QAAQ;AAAA,EACpD,EAAO,SAAI,MAAM,aAAa,oBAAoB;AAAA,IAChD,WAAW,IAAI,MAAM,OAAO;AAAA,IAC5B,eAAe,YAAY,SAAS,QAAQ;AAAA,EAC9C,EAAO,SAAI,MAAM,aAAa,qBAAqB;AAAA,IACjD,WAAW,gBAAgB,YAAY,SAAS,MAAM,QAAQ,WAAW;AAAA,EAC3E,EAAO;AAAA,IACL,MAAM,IAAI,MAAM,iCAAiC,MAAM,UAAU;AAAA;AAAA,EAGnE,OAAO,EAAE,kBAAkB,kBAAkB,SAAS;AAAA;AASxD,SAAS,sBAAsB,CAAC,QAAQ,OAAO,YAAY;AAAA,EACzD,MAAM,qBAAqB,sBAAsB,UAAU;AAAA,EAC3D,IAAI,CAAC;AAAA,IAAoB,OAAO,CAAC;AAAA,EAEjC,MAAM,SAAS,IAAI,MAAM,MAAM,UAAU;AAAA,EACzC,uBAAuB,QAAQ,SAAS,kBAAkB,GAAG,QAAQ,MAAM,6BAA6B;AAAA,EACxG,OAAO;AAAA;AAST,SAAS,sBAAsB,CAAC,QAAQ,OAAO,YAAY;AAAA,EACzD,MAAM,qBAAqB,sBAAsB,UAAU;AAAA,EAC3D,IAAI,oBAAoB;AAAA,IAEtB,MAAM,SAAS,IAAI,MAAM,MAAM,UAAU;AAAA,IACzC,uBAAuB,QAAQ,SAAS,kBAAkB,GAAG,QAAQ,MAAM,6BAA6B;AAAA,IACxG,OAAO;AAAA,EACT;AAAA;AASF,SAAS,QAAQ,CAAC,OAAO;AAAA,EACvB,OAAO,KAAK,KAAK,MAAM,KAAK;AAAA;;;AC/NvB,SAAS,UAAU,CAAC,UAAU,YAAY,aAAa,aAAa,eAAe,QAAQ;AAAA,EAChG,QAAQ,cAAc,eAAe;AAAA,EACrC,MAAM,SAAS,aAAa,UAAU;AAAA,EAEtC,MAAM,SAAS,CAAC;AAAA,EAEhB,IAAI,aAAa;AAAA,EAEjB,IAAI,YAAY;AAAA,EAChB,IAAI,WAAW;AAAA,EACf,IAAI,UAAU;AAAA,EAEd,MAAM,gBAAgB,WAAW,MAAM;AAAA,IACrC,aAAa,OAAO;AAAA,MAClB;AAAA,MACA,YAAY;AAAA,MACZ,UAAU,aAAa,WAAW,UAAU;AAAA,MAC5C,QAAQ,aAAa;AAAA,IACvB,CAAC;AAAA;AAAA,EAGH,OAAO,SAAS,WAAW,YAAY,OAAO,SAAS,OAAO,KAAK,aAAa,GAAG;AAAA,IACjF,IAAI,OAAO,UAAU,OAAO,KAAK,aAAa;AAAA,MAAG;AAAA,IAGjD,MAAM,SAAS,cAAc,MAAM;AAAA,IACnC,IAAI,OAAO,SAAS,mBAAmB;AAAA,MACrC,QAAQ,SAAS,SAAS,QAAQ,QAAQ,eAAe,YAAY,WAAW,CAAC;AAAA,MACjF,IAAI;AAAA,QAAM,aAAa,QAAQ,MAAM,aAAa;AAAA,IACpD,EAAO;AAAA,MACL,MAAM,kBAAkB,WAAW,UAAU;AAAA,MAC7C,MAAM,SAAS,SAAS,QAAQ,QAAQ,eAAe,YAAY,WAAW,cAAc,QAAQ;AAAA,MACpG,IAAI,OAAO,SAAS;AAAA,QAElB,IAAI,CAAC,OAAO,QAAQ;AAAA,UAClB,WAAW,OAAO;AAAA,QACpB;AAAA,QACA,YAAY,OAAO;AAAA,MACrB,EAAO,SAAI,OAAO,QAAQ,cAAc,OAAO,MAAM;AAAA,QAEnD,YAAY,OAAO,KAAK,SAAS;AAAA,MACnC,EAAO,SAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ;AAAA,QAC5C,gBAAgB;AAAA,QAChB,OAAO,KAAK,OAAO,IAAI;AAAA,QACvB,YAAY,OAAO,KAAK;AAAA,QACxB,YAAY,OAAO;AAAA,MACrB;AAAA;AAAA,EAEJ;AAAA,EACA,gBAAgB;AAAA,EAEhB,OAAO,EAAE,MAAM,QAAQ,QAAQ;AAAA;AAc1B,SAAS,QAAQ,CAAC,QAAQ,QAAQ,eAAe,YAAY,eAAe,WAAW;AAAA,EAC5F,QAAQ,MAAM,SAAS,YAAY,eAAO,gBAAgB;AAAA,EAE1D,MAAM,kBAAkB,IAAI,WAC1B,OAAO,KAAK,QAAQ,OAAO,KAAK,aAAa,OAAO,QAAQ,OAAO,oBACrE;AAAA,EACA,OAAO,UAAU,OAAO;AAAA,EAGxB,IAAI,OAAO,SAAS,aAAa;AAAA,IAC/B,MAAM,OAAO,OAAO;AAAA,IACpB,IAAI,CAAC;AAAA,MAAM,MAAM,IAAI,MAAM,uCAAuC;AAAA,IAGlE,IAAI,YAAY,KAAK,cAAc,aAAa,UAAU,GAAG;AAAA,MAC3D,OAAO,EAAE,SAAS,KAAK,WAAW;AAAA,IACpC;AAAA,IAEA,MAAM,OAAO,eAAe,iBAAiB,OAAO,OAAO,sBAAsB,GAAG,QAAO,WAAW;AAAA,IACtG,QAAQ,kBAAkB,kBAAkB,aAAa,aAAa,MAAM,MAAM,aAAa;AAAA,IAI/F,MAAM,SAAS,sBAAsB,UAAU,YAAY,KAAK,UAAU,aAAa;AAAA,IACvF,MAAM,SAAS,MAAM,QAAQ,aAAa,IAAI,gBAAgB,CAAC;AAAA,IAC/D,MAAM,YAAY,cAAc,QAAQ,kBAAkB,kBAAkB,QAAQ,UAAU;AAAA,IAC9F,OAAO,EAAE,SAAS,GAAG,MAAM,UAAU;AAAA,EACvC,EAAO,SAAI,OAAO,SAAS,gBAAgB;AAAA,IACzC,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,CAAC;AAAA,MAAO,MAAM,IAAI,MAAM,0CAA0C;AAAA,IAGtE,IAAI,YAAY,MAAM,UAAU;AAAA,MAC9B,OAAO,EAAE,SAAS,MAAM,WAAW;AAAA,IACrC;AAAA,IAEA,QAAQ,kBAAkB,kBAAkB,aAC1C,eAAe,iBAAiB,QAAQ,aAAa;AAAA,IAGvD,MAAM,SAAS,sBAAsB,UAAU,YAAY,MAAM,UAAU,aAAa;AAAA,IACxF,MAAM,SAAS,MAAM,QAAQ,aAAa,IAAI,gBAAgB,CAAC;AAAA,IAC/D,MAAM,YAAY,cAAc,QAAQ,kBAAkB,kBAAkB,QAAQ,UAAU;AAAA,IAC9F,OAAO,EAAE,SAAS,GAAG,MAAM,UAAU;AAAA,EACvC,EAAO,SAAI,OAAO,SAAS,mBAAmB;AAAA,IAC5C,MAAM,OAAO,OAAO;AAAA,IACpB,IAAI,CAAC;AAAA,MAAM,MAAM,IAAI,MAAM,6CAA6C;AAAA,IAExE,MAAM,OAAO,eACX,iBAAiB,OAAO,OAAO,sBAAsB,GAAG,QAAO,WACjE;AAAA,IAEA,MAAM,UAAS,EAAE,MAAM,IAAI,SAAS,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU,GAAG,QAAQ,EAAE;AAAA,IAC9F,MAAM,YAAY,UAAU,SAAQ,MAAM,KAAK,YAAY,QAAQ,WAAW;AAAA,IAC9E,OAAO,EAAE,SAAS,GAAG,MAAM,UAAU;AAAA,EACvC,EAAO;AAAA,IACL,MAAM,IAAI,MAAM,kCAAkC,OAAO,MAAM;AAAA;AAAA;AAUnE,SAAS,aAAa,CAAC,QAAQ;AAAA,EAC7B,MAAM,SAAS,4BAA4B,MAAM;AAAA,EAGjD,MAAM,OAAO,UAAU,OAAO;AAAA,EAC9B,MAAM,yBAAyB,OAAO;AAAA,EACtC,MAAM,uBAAuB,OAAO;AAAA,EACpC,MAAM,MAAM,OAAO;AAAA,EACnB,MAAM,mBAAmB,OAAO,WAAW;AAAA,IACzC,YAAY,OAAO,QAAQ;AAAA,IAC3B,UAAU,UAAU,OAAO,QAAQ;AAAA,IACnC,2BAA2B,UAAU,OAAO,QAAQ;AAAA,IACpD,2BAA2B,UAAU,OAAO,QAAQ;AAAA,IACpD,YAAY,OAAO,QAAQ,WAAW;AAAA,MACpC,KAAK,OAAO,QAAQ,QAAQ;AAAA,MAC5B,KAAK,OAAO,QAAQ,QAAQ;AAAA,MAC5B,YAAY,OAAO,QAAQ,QAAQ;AAAA,MACnC,gBAAgB,OAAO,QAAQ,QAAQ;AAAA,MACvC,WAAW,OAAO,QAAQ,QAAQ;AAAA,MAClC,WAAW,OAAO,QAAQ,QAAQ;AAAA,IACpC;AAAA,EACF;AAAA,EACA,MAAM,oBAAoB,OAAO;AAAA,EACjC,MAAM,yBAAyB,OAAO,WAAW;AAAA,IAC/C,YAAY,OAAO,QAAQ;AAAA,IAC3B,UAAU,UAAU,OAAO,QAAQ;AAAA,IACnC,WAAW,OAAO,QAAQ;AAAA,EAC5B;AAAA,EACA,MAAM,sBAAsB,OAAO,WAAW;AAAA,IAC5C,YAAY,OAAO,QAAQ;AAAA,IAC3B,WAAW,OAAO,QAAQ;AAAA,IAC1B,UAAU,OAAO,QAAQ;AAAA,IACzB,UAAU,UAAU,OAAO,QAAQ;AAAA,IACnC,+BAA+B,OAAO,QAAQ;AAAA,IAC9C,+BAA+B,OAAO,QAAQ;AAAA,IAC9C,eAAe,OAAO,QAAQ,YAAY,YAAY,OAAO,OAAO,QAAQ;AAAA,IAC5E,YAAY,OAAO,QAAQ;AAAA,EAC7B;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;;ACrLK,SAAS,YAAY,CAAC,WAAW,YAAY,WAAW;AAAA,EAE7D,MAAM,eAAe,CAAC;AAAA,EAGtB,WAAW,SAAS,UAAU,QAAQ;AAAA,IACpC,QAAQ,gBAAgB,iBAAiB,MAAM;AAAA,IAC/C,MAAM,aAAa,cAAc,SAAS,QAAQ,YAAY;AAAA,IAC9D,MAAM,gBAAgB;AAAA,MACpB;AAAA,MACA,SAAS,WAAW,WAAW,SAAS,GAAG;AAAA,MAC3C;AAAA,MACA,SAAS,KAAK,oBAAoB,QAAQ,QAAQ;AAAA,SAC/C;AAAA,SACA,MAAM;AAAA,IACX;AAAA,IACA,QAAQ,WAAW,YAAY,MAAM;AAAA,IAErC,IAAI,mBAAmB,OAAO;AAAA,MAE5B,aAAa,KAAK;AAAA,QAChB;AAAA,QACA,MAAM,kBAAkB,SAAS,WAAW,OAAO,MAAM,eAAe,aAAa;AAAA,MACvF,CAAC;AAAA,IACH,EAAO,SAAI,iBAAiB,OAAO;AAAA,MACjC,aAAa,KAAK;AAAA,QAChB;AAAA,QAEA,MAAM,QAAQ,QAAQ,QAAQ,KAAK,MAAM,MAAM,YAAY,WAAW,MAAM,YAAY,OAAO,CAAC,EAC7F,KAAK,iBAAe;AAAA,UACnB,MAAM,QAAQ,gBAAgB,EAAE,MAAM,IAAI,SAAS,WAAW,GAAG,QAAQ,EAAE,CAAC,EAAE;AAAA,UAC9E,OAAO,kBAAkB,SAAS,WAAW,OAAO,OAAO,aAAa;AAAA,SACzE;AAAA,MACL,CAAC;AAAA,IACH,EAAO;AAAA,MAEL,aAAa,KAAK;AAAA,QAChB;AAAA,QACA,MAAM,QAAQ,QAAQ,QAAQ,KAAK,MAAM,WAAW,OAAO,CAAC,EACzD,KAAK,YAAU;AAAA,UACd,MAAM,SAAS,EAAE,MAAM,IAAI,SAAS,MAAM,GAAG,QAAQ,EAAE;AAAA,UACvD,OAAO,WAAW,QAAQ,WAAW,eAAe,QAAQ,MAAM;AAAA,SACnE;AAAA,MACL,CAAC;AAAA;AAAA,EAEL;AAAA,EAEA,OAAO;AAAA,IACL,YAAY,UAAU;AAAA,IACtB,WAAW,UAAU;AAAA,IACrB,aAAa,UAAU;AAAA,IACvB,WAAW,UAAU;AAAA,IACrB;AAAA,EACF;AAAA;AAcF,eAAe,iBAAiB,CAAC,SAAS,WAAW,OAAO,OAAO,eAAe;AAAA,EAChF,QAAQ,kBAAkB,2BAA2B,MAAM;AAAA,EAC3D,QAAQ,aAAa,cAAc;AAAA,EACnC,MAAM,WAAW,YAAY,MAAM;AAAA,EACnC,IAAI,UAAU;AAAA,EAEd,MAAM,UAAU,0BAA0B,mBAAmB,MAAM,GAAG;AAAA,EACtE,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM;AAAA,IACnB,MAAM,YAAY,OAAO,KAAK,eAAe;AAAA,IAC7C,MAAM,UAAU,IAAI,IAAI,MAAM,SAC1B,OAAO,MAAM,IAAI,GAAG,eAAe,IACnC,UAAU;AAAA,IAEd,IAAI,UAAU,KAAK,UAAU,aAAa;AAAA,MACxC,YAAY,OAAO,KAAK,MAAM;AAAA,MAC9B,UAAU;AAAA,IACZ;AAAA,IACA,IAAI,YAAY,WAAW;AAAA,MACzB,UAAU,OAAO,KAAK,MAAM,IAAI,KAAK;AAAA,IACvC;AAAA,EACF;AAAA,EACA,IAAI,UAAU;AAAA,IAAG,UAAU;AAAA,EAE3B,IAAI;AAAA,EACJ,IAAI,WAAW,SAAS;AAAA,IAGtB,MAAM,aAAa,OAAO,MAAM,GAAG,MAAM,IAAI,MAAM,MAAM;AAAA,IACzD,OAAO,YAAY,cAAc,MAAM,QAAQ,IAAI;AAAA,MACjD,QAAQ,KAAK,MAAM,MAAM,MAAM,WAAW,OAAO,MAAM,GAAG,MAAM,CAAC;AAAA,MACjE,QAAQ,KAAK,MAAM,WAAW,OAAO;AAAA,IACvC,CAAC;AAAA,IAED,MAAM,WAAW,IAAI,WAAW,aAAa,WAAW,UAAU;AAAA,IAClE,SAAS,IAAI,IAAI,WAAW,YAAY,GAAG,UAAU,CAAC;AAAA,IACtD,SAAS,IAAI,IAAI,WAAW,UAAU,GAAG,UAAU;AAAA,IACnD,OAAO,IAAI,SAAS,SAAS,MAAM;AAAA,EACrC,EAAO,SAAI,SAAS;AAAA,IAElB,OAAO,IAAI,SAAS,MAAM,QAAQ,KAAK,MAAM,MAAM,MAAM,WAAW,OAAO,CAAC;AAAA,EAC9E,EAAO;AAAA,IACL,OAAO,IAAI,SAAS,MAAM,QAAQ,KAAK,MAAM,WAAW,OAAO,CAAC;AAAA;AAAA,EAElE,MAAM,SAAS,EAAE,MAAM,QAAQ,EAAE;AAAA,EAEjC,MAAM,oBAAoB,UAAU;AAAA,OAC/B;AAAA,IACH,YAAY,UAAU,aAAa;AAAA,IACnC,aAAa,UAAU,cAAc;AAAA,IACrC,WAAW,UAAU,YAAY;AAAA,EACnC,IAAI;AAAA,EACJ,QAAQ,MAAM,SAAS,kBAAkB,WAAW,QAAQ,mBAAmB,eAAe,QAAQ,MAAM;AAAA,EAC5G,OAAO;AAAA,IACL;AAAA,IACA,SAAS,UAAU;AAAA,EACrB;AAAA;AA6BF,eAAsB,gBAAgB,GAAG,gBAAgB,aAAa,WAAW,SAAS,WAAW;AAAA,EAEnG,MAAM,aAAa,MAAM,QAAQ,IAAI,aAAa,IAAI,YACpD,OAAO,KAAK,KAAK,GAAG,SAAS,YAAY,EAAE,SAAS,MAAM,QAAQ,IAAI,EAAE,EAAE,CAC5E,CAAC;AAAA,EAGD,MAAM,cAAc,YAAY;AAAA,EAChC,IAAI,cAAc,UAAU;AAAA,IAE1B,MAAM,aAAY,MAAM,WAAW;AAAA,IACnC,SAAS,YAAY,EAAG,YAAY,aAAa,aAAa;AAAA,MAG5D,MAAM,UAAU,CAAC;AAAA,MACjB,SAAS,IAAI,EAAG,IAAI,aAAa,QAAQ,KAAK;AAAA,QAC5C,QAAQ,MAAM,YAAY,WAAW;AAAA,QACrC,QAAQ,aAAa,GAAG,aAAa,MAAM,KAAK,cAAc,YAAY;AAAA,MAC5E;AAAA,MACA,WAAU,aAAa;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,sBAAsB,aACzB,IAAI,WAAS,MAAM,aAAa,EAAE,EAClC,OAAO,UAAQ,CAAC,WAAW,QAAQ,SAAS,IAAI,CAAC;AAAA,EACpD,MAAM,cAAc,WAAW;AAAA,EAC/B,MAAM,gBAAgB,YAAY,IAAI,UAAQ,aAAa,UAAU,YAAU,OAAO,aAAa,OAAO,IAAI,CAAC;AAAA,EAG/G,MAAM,YAAY,MAAM,WAAW;AAAA,EACnC,SAAS,YAAY,EAAG,YAAY,aAAa,aAAa;AAAA,IAE5D,MAAM,UAAU,MAAM,aAAa,MAAM;AAAA,IACzC,SAAS,IAAI,EAAG,IAAI,YAAY,QAAQ,KAAK;AAAA,MAC3C,MAAM,SAAS,cAAc;AAAA,MAC7B,IAAI,SAAS;AAAA,QAAG,MAAM,IAAI,MAAM,6BAA6B,YAAY,IAAI;AAAA,MAC7E,QAAQ,MAAM,YAAY,WAAW;AAAA,MACrC,QAAQ,KAAK,KAAK,cAAc,YAAY;AAAA,IAC9C;AAAA,IACA,UAAU,aAAa;AAAA,EACzB;AAAA,EACA,OAAO;AAAA;AAWF,SAAS,aAAa,CAAC,eAAe,aAAY,SAAS;AAAA,EAChE,QAAQ,iBAAiB;AAAA,EACzB,UAAU,KAAK,oBAAoB,QAAQ;AAAA,EAE3C,MAAM,YAAY,CAAC;AAAA,EACnB,WAAW,SAAS,YAAW,UAAU;AAAA,IACvC,IAAI,MAAM,SAAS,QAAQ;AAAA,MACzB,MAAM,eAAe,aAAa,OAAO,YAAU,OAAO,aAAa,OAAO,MAAM,QAAQ,IAAI;AAAA,MAChG,IAAI,CAAC,aAAa;AAAA,QAAQ;AAAA,MAE1B,UAAU,KAAK;AAAA,QACb,cAAc,MAAM;AAAA,QACpB,OAAO,YAAY;AAAA,UAGjB,MAAM,WAAW,MAAM,QAAQ,IAAI,aAAa,IAAI,OAAK,EAAE,IAAI,CAAC;AAAA,UAEhE,MAAM,gBAAgB,IAAI;AAAA,UAC1B,MAAM,YAAY,SAAS,IAAI,GAAG,WAAW,QAAQ,IAAI,CAAC;AAAA,UAC1D,MAAM,UAAU,KAAK,IAAI,GAAG,SAAS,IAAI,YAAU,OAAO,OAAO,CAAC;AAAA,UAClE,MAAM,MAAM,KAAK,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,MAAM,OAAO,UAAU,UAAU,GAAG,MAAM,CAAC;AAAA,UACzF,SAAS,IAAI,EAAG,IAAI,aAAa,QAAQ,KAAK;AAAA,YAG5C,MAAM,QAAQ,UAAU,SAAS,GAAG;AAAA,YACpC,MAAM,SAAS,KAAK,IAAI,GAAG,MAAM,OAAO;AAAA,YACxC,cAAc,IACZ,aAAa,GAAG,aAAa,KAAK,GAAG,GACrC,UAAU,GAAG,MAAM,OAAO,QAAQ,MAAM,CAC1C;AAAA,UACF;AAAA,UAEA,eAAe,eAAe,OAAO,OAAO;AAAA,UAC5C,MAAM,aAAY,cAAc,IAAI,MAAM,QAAQ,IAAI;AAAA,UACtD,IAAI,CAAC;AAAA,YAAW,MAAM,IAAI,MAAM,mCAAmC;AAAA,UACnE,OAAO,EAAE,MAAM,CAAC,UAAS,GAAG,QAAQ;AAAA,WACnC;AAAA,MACL,CAAC;AAAA,IACH,EAAO;AAAA,MAEL,MAAM,cAAc,aAAa,KAAK,YAAU,OAAO,aAAa,OAAO,MAAM,QAAQ,IAAI;AAAA,MAC7F,IAAI;AAAA,QAAa,UAAU,KAAK,WAAW;AAAA;AAAA,EAE/C;AAAA,EACA,OAAO,KAAK,eAAe,cAAc,UAAU;AAAA;;;ACxPrD,eAAsB,WAAW,CAAC,SAAS;AAAA,EAEzC,QAAQ,aAAa,MAAM,qBAAqB,QAAQ,MAAM,OAAO;AAAA,EAErE,QAAQ,WAAW,GAAG,QAAQ,SAAS,SAAS,YAAY,WAAW,QAAQ,eAAe,SAAS;AAAA,EAGvG,IAAI,UAAU,cAAc,UAAU;AAAA,IACpC,MAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AAAA,EAGA,MAAM,gBAAgB,uBAAuB,MAAM;AAAA,EACnD,IAAI,cAAc,QAAQ;AAAA,IACxB,MAAM,gBAAgB,cAAc,QAAQ,QAAQ,EAAE,SAAS,IAAI,OAAK,EAAE,QAAQ,IAAI;AAAA,IACtF,MAAM,iBAAiB,cAAc,OAAO,OAAK,CAAC,cAAc,SAAS,CAAC,CAAC;AAAA,IAC3E,IAAI,eAAe,QAAQ;AAAA,MACzB,MAAM,IAAI,MAAM,qCAAqC,eAAe,KAAK,IAAI,GAAG;AAAA,IAClF;AAAA,EACF;AAAA,EACA,IAAI,cAAc;AAAA,EAClB,IAAI,qBAAqB;AAAA,EACzB,IAAI,WAAW,QAAQ;AAAA,IACrB,MAAM,uBAAuB,cAAc,OAAO,OAAK,CAAC,QAAQ,SAAS,CAAC,CAAC;AAAA,IAC3E,IAAI,qBAAqB,QAAQ;AAAA,MAC/B,cAAc,CAAC,GAAG,SAAS,GAAG,oBAAoB;AAAA,MAClD,qBAAqB;AAAA,IACvB;AAAA,EACF;AAAA,EAGA,IAAI,cAAc,gBAAgB,UAAU,KAAK,SAAS,SAAS,YAAY,IAAI;AAAA,EACnF,cAAc,MAAM,iBAAiB,WAAW;AAAA,EAChD,cAAc,MAAM,gBAAgB,WAAW;AAAA,EAC/C,MAAM,cAAc,iBAAiB,WAAW;AAAA,EAGhD,IAAI,CAAC,cAAc,CAAC,SAAS;AAAA,IAC3B,MAAM,gBAAgB,WAAW;AAAA,IACjC;AAAA,EACF;AAAA,EAGA,MAAM,cAAa,cAAc,QAAQ,QAAQ;AAAA,EACjD,MAAM,YAAY,YAAY,IAAI,SAAO,cAAc,KAAK,aAAY,QAAQ,OAAO,CAAC;AAAA,EAGxF,IAAI,SAAS;AAAA,IACX,WAAW,cAAc,WAAW;AAAA,MAClC,WAAW,eAAe,WAAW,cAAc;AAAA,QACjD,YAAY,KAAK,KAAK,GAAG,MAAM,cAAc;AAAA,UAC3C,IAAI,YAAW,WAAW,aAAa;AAAA,UACvC,WAAW,cAAc,MAAM;AAAA,YAC7B,QAAQ;AAAA,cACN,YAAY,YAAY,aAAa;AAAA,cACrC;AAAA,cACA;AAAA,cACA,QAAQ,YAAW,WAAW;AAAA,YAChC,CAAC;AAAA,YACD,aAAY,WAAW;AAAA,UACzB;AAAA,WACC,MAAM,EAAE;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EAGA,IAAI,YAAY;AAAA,IAEd,MAAM,gBAAgB,SAAS;AAAA,IAG/B,MAAM,OAAO,CAAC;AAAA,IACd,WAAW,cAAc,WAAW;AAAA,MAGlC,MAAM,cAAc,WAAW,eAAe,KAAK,IAAI,WAAW,WAAW,YAAY,CAAC;AAAA,MAC1F,MAAM,YAAY,WAAW,aAAa,KAAK,KAAK,UAAU,YAAY,WAAW,YAAY,WAAW,SAAS;AAAA,MAErH,MAAM,YAAY,cAAc,WAC9B,MAAM,iBAAiB,YAAY,aAAa,WAAW,aAAa,QAAQ,IAChF,MAAM,iBAAiB,YAAY,aAAa,WAAW,SAAS,OAAO;AAAA,MAG7E,IAAI,QAAQ;AAAA,QAEV,WAAW,OAA6C,WAAY;AAAA,UAClE,IAAI,YAAY,KAAK,QAAQ,YAAY,GAAG;AAAA,YAC1C,IAAI,sBAAsB,SAAS;AAAA,cACjC,WAAW,OAAO,eAAe;AAAA,gBAC/B,IAAI,CAAC,QAAQ,SAAS,GAAG;AAAA,kBAAG,OAAO,IAAI;AAAA,cACzC;AAAA,YACF;AAAA,YACA,KAAK,KAAK,GAAG;AAAA,UACf;AAAA,QACF;AAAA,MACF,EAAO;AAAA,QACL,OAAO,MAAM,SAAS;AAAA;AAAA,IAE1B;AAAA,IACA,WAAW,IAAI;AAAA,EACjB,EAAO;AAAA,IAEL,MAAM,gBAAgB,SAAS;AAAA;AAAA;AAWnC,eAAe,eAAe,CAAC,aAAa;AAAA,EAC1C,MAAM,MAAM,YAAY,QAAQ,OAAK,EAAE,aAAa,IAAI,OAAK,EAAE,IAAI,CAAC;AAAA,EACpE,MAAM,UAAU,MAAM,QAAQ,WAAW,GAAG;AAAA,EAC5C,MAAM,SAAS,QAAQ,KAAK,OAAK,EAAE,WAAW,UAAU;AAAA,EACxD,IAAI;AAAA,IAAQ,MAAM,OAAO;AAAA;AAOpB,SAAS,gBAAgB,CAAC,SAAS;AAAA,EACxC,IAAI,CAAC,QAAQ;AAAA,IAAU,MAAM,IAAI,MAAM,2BAA2B;AAAA,EAIlE,MAAM,OAAO,YAAY,OAAO;AAAA,EAChC,QAAQ,OAAO,oBAAoB,QAAQ,MAAM,IAAI;AAAA,EAGrD,OAAO,KAAK,OAAO,IAAI,eAAa,aAAa,SAAS,MAAM,SAAS,CAAC;AAAA;AA2C5E,eAAe,gBAAgB,CAAC,SAAS;AAAA,EACvC,IAAI,CAAC,QAAQ;AAAA,IAAiB,OAAO;AAAA,EACrC,IAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ;AAAA,IAAU,OAAO;AAAA,EACjD,MAAM,cAAa,cAAc,QAAQ,QAAQ;AAAA,EAEjD,MAAM,iBAAiB,CAAC;AAAA,EACxB,WAAW,SAAS,YAAW;AAAA,IAAU,eAAe,MAAM,QAAQ,QAAQ,MAAM;AAAA,EACpF,MAAM,sBAAsB,MAAM,qBAAqB;AAAA,IACrD,MAAM,QAAQ;AAAA,IACd,UAAU,QAAQ;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,cAAc,QAAQ;AAAA,EACxB,CAAC;AAAA,EAED,OAA8C,KAAK,SAAS,qBAAqB,eAAe;AAAA;AAalG,eAAe,eAAe,CAAC,SAAS;AAAA,EACtC,IAAI,CAAC,QAAQ;AAAA,IAAc,OAAO;AAAA,EAClC,IAAI,CAAC,QAAQ,UAAU,CAAC,QAAQ;AAAA,IAAU,OAAO;AAAA,EACjD,QAAQ,mBAAmB,yBAAyB,MAAM,oBAAoB;AAAA,IAC5E,MAAM,QAAQ;AAAA,IACd,UAAU,QAAQ;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,cAAc,QAAQ;AAAA,IACtB,UAAU,QAAQ;AAAA,IAClB,QAAQ,QAAQ;AAAA,IAChB,SAAS,QAAQ;AAAA,IAEjB,qBAAqB,QAAQ;AAAA,IAE7B,gBAAgB,QAAQ;AAAA,IACxB,SAAS,QAAQ;AAAA,EACnB,CAAC;AAAA,EACD,MAAM,cAAc,KAAK,SAAS,mBAAmB,qBAAqB;AAAA,EAC1E,OAAO;AAAA;AAUF,SAAS,kBAAkB,CAAC,SAAS;AAAA,EAC1C,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW;AAAA,IACzC,YAAY;AAAA,SACP;AAAA,MACH,WAAW;AAAA,MACX;AAAA,IACF,CAAC,EAAE,MAAM,MAAM;AAAA,GAChB;AAAA;;AC/PH,IAAM,eAAe;AAAA,EACpB,qCAAqC;AAAA,IACpC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,4CAA4C;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEA,SAAS,eAAe,CAAC,KAGvB;AAAA,EACD,IACC,IAAI,UAAU,uCACd,IAAI,UAAU,4CACb;AAAA,IACD,MAAM,IAAI,MACT,2DACD;AAAA,EACD;AAAA,EACA,MAAM,OAAO,aAAa,IAAI;AAAA,EAC9B,MAAM,WAAW,IAAI,IAAI;AAAA,EACzB,IAAI,OAAO,aAAa,YAAY,CAAC,iBAAiB,KAAK,QAAQ,GAAG;AAAA,IACrE,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAC3D;AAAA,EACA,MAAM,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI;AAAA,EAC7C,IACC,OAAO,KACN,CAAC,UACA,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,UAAU,IACZ,GACC;AAAA,IACD,MAAM,IAAI,MAAM,0CAA0C;AAAA,EAC3D;AAAA,EACA,OAAO;AAAA,IACN,KAAK,GAAG,IAAI,YAAc,KAAK,UAAU,MAAM;AAAA,IAC/C;AAAA,EACD;AAAA;AAGM,SAAS,cAAc,CAAC,MAA6C;AAAA,EAC3E,MAAM,aAAa,KACjB,IAAI,eAAe,EACnB,KAAK,CAAC,MAAM,UACZ,KAAK,QAAQ,MAAM,MAChB,KAAK,SAAS,cAAc,MAAM,QAAQ,IAC1C,KAAK,IAAI,cAAc,MAAM,GAAG,CACpC;AAAA,EACD,OAAO,gBAAgB,UAAU;AAAA;AAGlC,SAAS,mBAAmB,CAC3B,UACA,QACU;AAAA,EACV,IAAI,SAAS,WAAW,OAAO;AAAA,IAAQ,OAAO;AAAA,EAC9C,MAAM,qBAAqB,SACzB,IAAI,eAAe,EACnB,IAAI,GAAG,KAAK,eAAe,GAAG,UAAY,UAAU,EACpD,KAAK;AAAA,EACP,MAAM,mBAAmB,OACvB,IAAI,eAAe,EACnB,IAAI,GAAG,KAAK,eAAe,GAAG,UAAY,UAAU,EACpD,KAAK;AAAA,EACP,OAAO,mBAAmB,MACzB,CAAC,UAAU,UAAU,aAAa,iBAAiB,MACpD;AAAA;AAGD,SAAS,qBAAqB,CAC7B,SACA,MACU;AAAA,EACV,OAAO,KAAK,MACX,GAAG,UACF,IAAI,gBAAgB,QAAQ,SAC5B,IAAI,sBAAsB,QAAQ,oBAClC,IAAI,mBAAmB,QAAQ,gBAAgB,sBACjD;AAAA;AAGD,SAAS,qBAAqB,CAC7B,SACA,MACA,uBACU;AAAA,EACV,MAAM,gBACL,yBACA,KACE,OACA,GAAG,YAAY,UAAU,0CAC1B,EACC,IAAI,GAAG,UAAU,IAAI,cAAc,GAEpC,IAAI,CAAC,UAAU;AAAA,IACf,IACC,OAAO,UAAU,aAChB,OAAO,UAAU,YAAY,CAAC,QAAQ,KAAK,KAAK,IAChD;AAAA,MACD;AAAA,IACD;AAAA,IACA,MAAM,SAAS,OAAO,KAAK;AAAA,IAC3B,OAAO,OAAO,cAAc,MAAM,KAAK,UAAU,IAAI,SAAS;AAAA,GAC9D,EACA,OAAO,CAAC,UAA2B,UAAU,SAAS,EACtD,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK;AAAA,EACpC,OAAO,QAAQ,uBAAuB,MAAM,CAAC,WAAW;AAAA,IACvD,IAAI;AAAA,IACJ,WAAW,cAAc,cAAc;AAAA,MACtC,IAAI,aAAa;AAAA,QAAQ;AAAA,MACzB,QAAQ;AAAA,IACT;AAAA,IACA,OACC,UAAU,aACV,SAAS,SAAS,KAClB,SAAS,SAAS,QAAQ;AAAA,GAE3B;AAAA;AA2BK,SAAS,uBAAuB,CACtC,UAC0B;AAAA,EAC1B,MAAM,0BAA0B,eAAe,SAAS,aAAa;AAAA,EACrE,MAAM,OAAO;AAAA,IACZ;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,cAAc,SAAS;AAAA,IACvB,cAAc,SAAS;AAAA,EACxB;AAAA,EACA,IAAI,CAAC,oBAAoB,SAAS,gBAAgB,SAAS,aAAa,GAAG;AAAA,IAC1E,OAAO;AAAA,SACH;AAAA,MACH,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB;AAAA,EACD;AAAA,EACA,IAAI,SAAS,kBAAkB,GAAG;AAAA,IACjC,OAAO;AAAA,SACH;AAAA,MACH,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB;AAAA,EACD;AAAA,EACA,IACC,SAAS,uBAAuB,SAAS,qBACzC,SAAS,uBAAuB,SAAS,mBACxC;AAAA,IACD,OAAO;AAAA,SACH;AAAA,MACH,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB;AAAA,EACD;AAAA,EACA,IAAI,CAAC,SAAS,cAAc;AAAA,IAC3B,OAAO;AAAA,SACH;AAAA,MACH,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB;AAAA,EACD;AAAA,EACA,IAAI,CAAC,sBAAsB,SAAS,SAAS,SAAS,aAAa,GAAG;AAAA,IACrE,OAAO;AAAA,SACH;AAAA,MACH,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB;AAAA,EACD;AAAA,EACA,IAAI,CAAC,SAAS,oBAAoB;AAAA,IACjC,OAAO;AAAA,SACH;AAAA,MACH,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB;AAAA,EACD;AAAA,EACA,MAAM,mBAAmB,sBACxB,SAAS,SACT,SAAS,eACT,SAAS,qBACV;AAAA,EACA,IAAI,CAAC,kBAAkB;AAAA,IACtB,OAAO;AAAA,SACH;AAAA,MACH,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,kBAAkB;AAAA,IACnB;AAAA,EACD;AAAA,EACA,OAAO;AAAA,OACH;AAAA,IACH,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,kBAAkB;AAAA,EACnB;AAAA;;;AzBlNM,IAAM,gCACZ;AACM,IAAM,wBAAwB;AAC9B,IAAM,+BAA+B;AAAA,EAC3C;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAQ;AACtC;AACO,IAAM,mCAAmC;AACzC,IAAM,8BAA8B;AAEpC,IAAM,iCAAiC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG,6BAA6B,IAC/B,CAAC,cAAc,4BAA4B,cAC5C;AACD;AAUA,IAAM,iCAAiC,KAAK,IAAI,MAAM,GAAG,EAAE;AAC3D,IAAM,UAAU,KAAK,KAAK;AAwBnB,IAAM,6CACZ,OAAO,OAAO;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,mBAAmB,CAAC,wBAAwB;AAAA,EAC5C,gBAAgB,CAAC,sBAAsB;AACxC,CAAC;AAIK,IAAM,yCACZ,OAAO,OAAO;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,mBAAmB,CAAC,wBAAwB;AAAA,EAC5C,gBAAgB,CAAC,wBAAwB,WAAW;AACrD,CAAC;AAKK,IAAM,yCACZ,OAAO,OAAO;AAAA,EACb,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa;AAAA,EACb,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,mBAAmB,CAAC,wBAAwB;AAAA,EAC5C,gBAAgB,CAAC,wBAAwB,WAAW;AACrD,CAAC;AAAA;AAEK,MAAM,2BAA2B,MAAM;AAAA,EAEnC;AAAA,EACA;AAAA,EAFV,WAAW,CACD,QACA,cAEL,CAAC,GACJ;AAAA,IACD,MAAM,kCAAkC,QAAQ;AAAA,IALvC;AAAA,IACA;AAAA,IAKT,KAAK,OAAO;AAAA;AAEd;AAEA,SAAS,qBAAqB,CAC7B,OACA,QACA,uBACA,cACqB;AAAA,EACrB,OAAO,IAAI,mBACV,iBAAiB,qBAAqB,MAAM,SAAS,QACrD;AAAA,OACK,iBAAiB,qBAAqB,MAAM,cAAc,CAAC;AAAA,IAC/D,yBAAyB;AAAA,IACzB,eAAe;AAAA,EAChB,CACD;AAAA;AAGD,IAAM,+BAA+B;AACrC,IAAM,qCAAqC,IAAI,IAAI;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,SAAS,gCAAgC,CACxC,OACA,cACA,UACqB;AAAA,EACrB,OAAO,IAAI,mBAAmB,MAAM,QAAQ;AAAA,OACxC,MAAM;AAAA,OACL,WAAW,EAAE,yBAAyB,SAAS,IAAI,CAAC;AAAA,IACxD,eAAe;AAAA,IACf,aAAa;AAAA,EACd,CAAC;AAAA;AA8CF,SAAS,cAAc,CAAC,OAAgD;AAAA,EACvE,OAAO,IAAI,YAAY,EAAE,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA;AAGxD,eAAe,4BAA4B,CAC1C,MACA,QACkB;AAAA,EAClB,IAAI,UAAU;AAAA,EACd,IAAI,QAA2C,CAAC;AAAA,EAChD,IAAI,aAAa;AAAA,EACjB,MAAM,QAAQ,YAAY;AAAA,IACzB,IAAI,MAAM,WAAW;AAAA,MAAG;AAAA,IACxB,MAAM,KAAK,WAAW,KAAK;AAAA,IAC3B,WAAW,MAAM;AAAA,IACjB,QAAQ,CAAC;AAAA,IACT,aAAa;AAAA;AAAA,EAEd,WAAW,SAAS,QAAQ;AAAA,IAC3B,MAAM,QAAQ,eAAe,KAAK;AAAA,IAClC,IAAI,QAAQ,6BAA6B;AAAA,MACxC,MAAM,IAAI,mBAAmB,6BAA6B;AAAA,IAC3D;AAAA,IACA,IACC,MAAM,UAAU,oCAChB,aAAa,QAAQ,6BACpB;AAAA,MACD,MAAM,MAAM;AAAA,IACb;AAAA,IACA,MAAM,KAAK,KAAK;AAAA,IAChB,cAAc;AAAA,EACf;AAAA,EACA,MAAM,MAAM;AAAA,EACZ,OAAO;AAAA;AAGD,SAAS,0BAA0B,CACzC,SACA,WAAsD,CAAC,GACtB;AAAA,EACjC,IACC,QAAQ,eAAe,aAAa,mBACpC,QAAQ,MAAM,SAAS,eACvB,QAAQ,MAAM,SAAS,KAAK,EAAE,YAAY,MAAM,QAC/C;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,UAAU,SAAS,KACxB,CAAC,cACA,UAAU,aAAa,QAAQ,MAAM,SAAS,KAAK,EAAE,YAAY,KACjE,UAAU,gBAAgB,QAAQ,MAAM,eACxC,UAAU,iBAAiB,QAAQ,MAAM,gBACzC,UAAU,eAAe,QAAQ,MAAM,cACvC,UAAU,kBAAkB,SAAS,QAAQ,gBAAyB,KACtE,UAAU,eAAe,SAAS,QAAQ,YAAqB,KAC/D,QAAQ,OAAO,eAAe,UAAU,kBACxC,QAAQ,SAAS,UAAU,QAC7B;AAAA,EACA,IAAI,CAAC;AAAA,IAAS;AAAA,EACd,OAAO;AAAA,IACN,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,oBAAoB,QAAQ;AAAA,IAC5B,gBAAgB,QAAQ;AAAA,EACzB;AAAA;AAGD,SAAS,WAAW,CAAC,QAAgD;AAAA,EACpE,MAAM,OAAO,IAAI,KAAK,MAAM;AAAA,EAC5B,OAAO;AAAA,IACN,MAAM,GAAG,KAAK,eAAe,KAAK,OAAO,KAAK,YAAY,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,KAAK,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,IAC9H,MAAM,OAAO,KAAK,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG;AAAA,EACjD;AAAA;AAGM,SAAS,6BAA6B,CAC5C,SACA,oBACA,gBACW;AAAA,EACX,IAAI,QAAQ,iBAAiB,aAAa;AAAA,IACzC,MAAM,QAAQ,IAAI;AAAA,IAClB,WAAW,gBAAgB,QAAQ,wBAAwB;AAAA,MAC1D,MAAM,YACL,KAAK,MACJ,KAAK,IAAI,GAAG,eAAe,QAAQ,QAAQ,qBAAqB,IAC/D,OACF,IAAI;AAAA,MACL,MAAM,WAAW,KAAK,MAAM,eAAe,OAAO,IAAI;AAAA,MACtD,SAAS,SAAS,UAAW,UAAU,UAAU,UAAU,SAAS;AAAA,QACnE,MAAM,IAAI,MAAM;AAAA,MACjB;AAAA,IACD;AAAA,IACA,OAAO,CAAC,GAAG,KAAK,EACd,KAAK,CAAC,MAAM,UAAU,OAAO,KAAK,EAClC,IAAI,CAAC,WAAW;AAAA,MAChB,MAAM,MAAM,YAAY,MAAM;AAAA,MAC9B,OAAO,GAAG,sBAAsB,IAAI,QAAQ,IAAI,QAAQ;AAAA,KACxD;AAAA,EACH;AAAA,EACA,OAAO,oCACN,SACA,oBACA,cACD;AAAA;AAGM,SAAS,mCAAmC,CAClD,SACA,oBACA,gBACW;AAAA,EACX,MAAM,YACL,KAAK,OACH,QAAQ,OAAO,cAAc,QAAQ,QAAQ,yBAC7C,OACF,IAAI;AAAA,EACL,MAAM,UAAoB,CAAC;AAAA,EAC3B,SACK,SAAS,KAAK,IAAI,GAAG,SAAS,EAClC,SAAS,QAAQ,OAAO,WACxB,UAAU,SACT;AAAA,IACD,MAAM,MAAM,YAAY,MAAM;AAAA,IAC9B,QAAQ,KACP,GAAG,sBAAsB,IAAI,QAAQ,IAAI,QAAQ,sCAClD;AAAA,EACD;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,0BAA0B,CAClC,SACA,cACU;AAAA,EACV,QAAQ,QAAQ,kBAAkB,mBAAmB,CAAC,GAAG,KAAK,CAAC,WAAW;AAAA,IACzE,MAAM,eAAe,KAAK,MAAM,OAAO,WAAW;AAAA,IAClD,OACC,OAAO,cAAc,YAAY,KACjC,gBAAgB,gBAChB,eAAe,gBAAgB,QAAQ;AAAA,GAExC;AAAA;AAGK,SAAS,0BAA0B,CACzC,SACkC;AAAA,EAClC,IAAI,QAAQ,iBAAiB;AAAA,IAAa,OAAO;AAAA,EACjD,MAAM,yBAAyB,QAAQ,uBAAuB,OAC7D,CAAC,iBAAiB,CAAC,2BAA2B,SAAS,YAAY,CACpE;AAAA,EACA,IAAI,uBAAuB,WAAW,GAAG;AAAA,IACxC,MAAM,IAAI,mBAAmB,0CAA0C;AAAA,EACxE;AAAA,EACA,OAAO,KAAK,SAAS,uBAAuB;AAAA;AAG7C,SAAS,cAAc,CACtB,OACA,OACA,WAAW,OACU;AAAA,EACrB,IAAI,UAAU,QAAQ,UAAU,WAAW;AAAA,IAC1C,IAAI;AAAA,MAAU,MAAM,IAAI,mBAAmB,UAAU,eAAe;AAAA,IACpE;AAAA,EACD;AAAA,EACA,MAAM,WAAW,OAAO,KAAK;AAAA,EAC7B,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG;AAAA,IAC5B,MAAM,IAAI,mBAAmB,UAAU,eAAe;AAAA,EACvD;AAAA,EACA,MAAM,SAAS,OAAO,QAAQ;AAAA,EAC9B,IAAI,SAAS,uBAA6B;AAAA,IACzC,MAAM,IAAI,mBAAmB,UAAU,sBAAsB;AAAA,EAC9D;AAAA,EACA,OAAO,OAAO,SAAS,EAAE;AAAA;AAG1B,SAAS,YAAW,CACnB,OACA,OACS;AAAA,EACT,MAAM,WAAW,OAAO,KAAK;AAAA,EAC7B,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG;AAAA,IAC5B,MAAM,IAAI,mBAAmB,UAAU,eAAe;AAAA,EACvD;AAAA,EACA,MAAM,MAAM,OAAO,QAAQ;AAAA,EAC3B,MAAM,eAAe,UAAU,kBAAkB,MAAM,WAAa;AAAA,EACpE,IAAI,eAAe,OAAO,OAAO,gBAAgB,GAAG;AAAA,IACnD,MAAM,IAAI,mBAAmB,UAAU,cAAc;AAAA,EACtD;AAAA,EACA,OAAO,OAAO,YAAY;AAAA;AAG3B,SAAS,OAAO,CAAC,OAAe,OAAe,WAA4B;AAAA,EAC1E,IAAI,CAAC,6BAA6B,KAAK,KAAK,GAAG;AAAA,IAC9C,MAAM,IAAI,mBAAmB,UAAU,eAAe;AAAA,EACvD;AAAA,EACA,MAAM,SAAS,OAAO,KAAK;AAAA,EAC3B,IAAI,CAAC,OAAO,SAAS,MAAM,MAAM,YAAY,SAAS,IAAI,UAAU,IAAI;AAAA,IACvE,MAAM,IAAI,mBAAmB,UAAU,eAAe;AAAA,EACvD;AAAA,EACA,OAAO;AAAA;AAGR,SAAS,YAAY,CACpB,SACA,KAIC;AAAA,EACD,IAAI,IAAI,WAAW,QAAQ,MAAM,cAAc;AAAA,IAC9C,MAAM,IAAI,mBAAmB,wBAAwB;AAAA,EACtD;AAAA,EACA,IAAI,IAAI,eAAe,cAAc,IAAI,eAAe,UAAU;AAAA,IACjE,MAAM,IAAI,mBAAmB,2BAA2B;AAAA,EACzD;AAAA,EACA,IAAI,IAAI,SAAS,SAAS,IAAI,SAAS,OAAO;AAAA,IAC7C,MAAM,IAAI,mBAAmB,qBAAqB;AAAA,EACnD;AAAA,EACA,QAAQ,IAAI,OAAO,SAAS,KAAK;AAAA,EACjC,QAAQ,IAAI,UAAU,YAAY,IAAI;AAAA,EACtC,IAAI,CAAC,iBAAiB,KAAK,IAAI,uBAAuB,GAAG;AAAA,IACxD,MAAM,IAAI,mBAAmB,gCAAgC;AAAA,EAC9D;AAAA,EACA,MAAM,cAAc,aAAY,IAAI,YAAY,YAAY;AAAA,EAC5D,MAAM,iBAAiB,aAAY,IAAI,eAAe,eAAe;AAAA,EACrE,IAAI,iBAAiB,aAAa;AAAA,IACjC,MAAM,IAAI,mBAAmB,mCAAmC;AAAA,EACjE;AAAA,EACA,OAAO,KAAK,KAAK,aAAa,eAAe;AAAA;AAG9C,SAAS,QAAQ,CAChB,KACA,SACS;AAAA,EACT,MAAM,WACL,IAAI,eAAe,aAChB,QAAQ,qBAAqB,sCAC5B,eAAe,IAAI,iBAAiB,mBAAmB,IAAI,IAC3D,eAAe,IAAI,gBAAgB,kBAAkB,IAAI,IAC1D,eAAe,IAAI,iBAAiB,mBAAmB,IAAI;AAAA,EAC/D,OAAO;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ;AAAA,IACA,IAAI;AAAA,EACL,EAAE,KAAK,MAAQ;AAAA;AAGhB,SAAS,MAAM,CAAC,OAA6D;AAAA,EAC5E,OAAO,UAAU,QAAQ,UAAU;AAAA;AAGpC,SAAS,gBAAgB,CACxB,KACA,SACS;AAAA,EACT,IAAI,QAAQ,sBAAsB,0BAA0B;AAAA,IAC3D,IAAI,OAAO,IAAI,cAAc,MAAM,MAAM;AAAA,MACxC,MAAM,IAAI,mBAAmB,yCAAyC;AAAA,IACvE;AAAA,IACA,IAAI,CAAC,OAAO,IAAI,eAAe,KAAK,CAAC,OAAO,IAAI,oBAAoB,GAAG;AAAA,MACtE,MAAM,IAAI,mBAAmB,0BAA0B;AAAA,IACxD;AAAA,IACA,OAAO,eACN,IAAI,iBACJ,mBACA,IACD;AAAA,EACD;AAAA,EACA,OAAO,eAAe,IAAI,gBAAgB,kBAAkB,IAAI;AAAA;AAajE,SAAS,UAAU,CAClB,QACA,MACa;AAAA,EACb,OAAO,CAAC,GAAG,OAAO,QAAQ,CAAC,EACzB,IAAI,EAAE,OAAO,cAAc,CAAC,OAAO,KAAK,GAAG,QAAQ,CAAC,EACpD,KAAK,CAAC,MAAM,UACZ,SAAS,QACL,MAAM,KAAiB,KAAK,KAC5B,KAAK,KAAiB,MAAM,EACjC;AAAA;AAGF,SAAS,SAAS,CACjB,OACA,MACO;AAAA,EACP,WAAW,OAAO,MAAM;AAAA,IACvB,MAAM,SAAS,IAAI,SAAS,QAAQ,MAAM,OAAO,MAAM;AAAA,IACvD,MAAM,WAAW,QAAQ,IAAI,UAAU,YAAY,IAAI;AAAA,IACvD,IAAI,aAAa;AAAA,MAAG,OAAO,OAAO,IAAI,KAAK;AAAA,IACtC;AAAA,aAAO,IAAI,IAAI,OAAO,QAAQ;AAAA,EACpC;AAAA;AAAA;AAGD,MAAM,2BAA2B;AAAA,EA0Bd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EA5BD;AAAA,EACA,UAAwC,CAAC;AAAA,EACzC,oBAIZ,CAAC;AAAA,EACW,iBAIZ,CAAC;AAAA,EACW,eAKZ,CAAC;AAAA,EACW,oBAAuD,CAAC;AAAA,EACjE,4BAA4B;AAAA,EAC5B,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EAER,WAAW,CACO,SACA,SACA,UACA,UAAkD,CAAC,GACnE;AAAA,IAJgB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEjB,KAAK,UAAU,CAAC,GAAG,QAAQ,sBAAsB;AAAA;AAAA,EAGlD,IAAI,CAAC,WAAuD;AAAA,IAC3D,WAAW,SAAS,KAAK,YAAY,SAAS,GAAG;AAAA,MAChD,IAAI,CAAC,KAAK,aAAa,KAAK;AAAA,QAAG;AAAA,IAChC;AAAA;AAAA,OAGK,sBAAqB,CAC1B,WACA,MACA,iBACgB;AAAA,IAChB,WAAW,SAAS,KAAK,YAAY,SAAS,GAAG;AAAA,MAChD,IAAI,CAAC,KAAK,aAAa,KAAK;AAAA,QAAG;AAAA,MAC/B,IAAI,KAAK,kBAAkB,UAAU,kCAAkC;AAAA,QACtE,MAAM,UAAS,KAAK,uBAAuB;AAAA,QAC3C,MAAM,UAAU,MAAM,6BAA6B,MAAM,OAAM;AAAA,QAC/D,gBAAgB,OAAO;AAAA,MACxB;AAAA,IACD;AAAA,IACA,MAAM,SAAS,KAAK,uBAAuB;AAAA,IAC3C,IAAI,OAAO,SAAS,GAAG;AAAA,MACtB,MAAM,UAAU,MAAM,6BAA6B,MAAM,MAAM;AAAA,MAC/D,gBAAgB,OAAO;AAAA,IACxB;AAAA;AAAA,EAGO,WAAW,CAClB,WAC2C;AAAA,IAC3C,MAAM,kBAAkB,IAAI;AAAA,IAC5B,WAAW,OAAO,WAAW;AAAA,MAC5B,MAAM,WAAW,gBAAgB,IAAI,IAAI,uBAAuB;AAAA,MAChE,gBAAgB,IAAI,IAAI,yBAAyB;AAAA,QAChD,UAAU,IAAI;AAAA,QACd,WAAW;AAAA,UACV,GAAG,IAAI,IAAI;AAAA,YACV,GAAI,UAAU,aAAa,CAAC;AAAA,YAC5B,IAAI;AAAA,UACL,CAAC;AAAA,QACF,EAAE,KAAK;AAAA,QACP,eAAe;AAAA,QACf,aAAa;AAAA,MACd,CAAC;AAAA,IACF;AAAA,IACA,WAAW,UAAU,gBAAgB,OAAO,GAAG;AAAA,MAC9C,KAAK,QAAQ,EAAE,MAAM,4BAA4B,OAAO,CAAC;AAAA,MACzD,IAAI,OAAO,UAAU,SAAS,GAAG;AAAA,QAChC,KAAK,QAAQ;AAAA,UACZ,MAAM;AAAA,UACN,QAAQ,KAAK,QAAQ,aAAa,KAAK;AAAA,UACvC,0BAA0B,KAAK,QAAQ,MAAM,KAAK,WAAW;AAAA,QAC9D,CAAC;AAAA,MACF;AAAA,IACD;AAAA,IACA,MAAM,OAAO,UACX,IAAI,CAAC,KAAK,WAAW;AAAA,SAClB,aAAa,KAAK,SAAS,GAAG;AAAA,MACjC,eAAe;AAAA,IAChB,EAAE,EACD,KACA,CAAC,MAAM,UACN,KAAK,cAAc,MAAM,eACzB,KAAK,gBAAgB,MAAM,aAC7B;AAAA,IACD,MAAM,SAAmD,CAAC;AAAA,IAC1D,WAAW,OAAO,MAAM;AAAA,MACvB,MAAM,UAAU,OAAO,GAAG,EAAE;AAAA,MAC5B,IACC,CAAC,WACD,SACC,QAAQ,IACR,KAAK,OACN,MAAM,SAAS,KAAK,KAAK,OAAO,GAC/B;AAAA,QACD,OAAO,KAAK,CAAC,GAAG,CAAC;AAAA,MAClB,EAAO;AAAA,QACN,QAAQ,KAAK,GAAG;AAAA;AAAA,IAElB;AAAA,IACA,OAAO;AAAA;AAAA,EAGA,YAAY,CAAC,OAAmD;AAAA,IACvE,MAAM,QAAQ,MAAM;AAAA,IACpB,KAAK,aAAa,MAAM,WAAW;AAAA,IACnC,IACC,KAAK,QAAQ,4BACb,MAAM,eAAe,KAAK,QAAQ,OAAO,WACxC;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,IACC,KAAK,QAAQ,4BACb,CAAC,KAAK,6BACN,MAAM,eAAe,KAAK,QAAQ,OAAO,eACzC,KAAK,OACJ;AAAA,MACD,KAAK,0BAA0B,gBAAgB;AAAA,IAChD;AAAA,IACA,IACC,KAAK,eAAe,KAAK,QAAQ,UACjC,CAAC,KAAK,QAAQ,0BACb;AAAA,MACD,OAAO;AAAA,IACR;AAAA,IACA,IAAI,MAAM,eAAe;AAAA,MAAY,KAAK,cAAc,KAAK;AAAA,IACxD,SAAI,KAAK;AAAA,MAAO,KAAK,YAAY,KAAK;AAAA,IAC3C,IACC,KAAK,QAAQ,4BACb,KAAK,SACL,MAAM,eAAe,KAAK,QAAQ,OAAO,eACzC,MAAM,cAAc,KAAK,QAAQ,OAAO,WACvC;AAAA,MACD,KAAK,0BACJ,KAAK,4BAA4B,WAAW,gBAC7C;AAAA,IACD;AAAA,IACA,OAAO;AAAA;AAAA,EAGR,sBAAsB,GAAsC;AAAA,IAC3D,OAAO,KAAK,kBAAkB,OAAO,GAAG,KAAK,kBAAkB,MAAM;AAAA;AAAA,EAG9D,yBAAyB,CAChC,WACO;AAAA,IACP,MAAM,QAAQ,KAAK;AAAA,IACnB,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,MAAM,OAAO,WAAW,MAAM,MAAM,KAAK,EAAE,MAAM,GAAG,KAAK,QAAQ,KAAK;AAAA,IACtE,MAAM,OAAO,WAAW,MAAM,MAAM,KAAK,EAAE,MAAM,GAAG,KAAK,QAAQ,KAAK;AAAA,IACtE,IAAI,KAAK,WAAW,KAAK,KAAK,WAAW,GAAG;AAAA,MAC3C,MAAM,IAAI,mBAAmB,mBAAmB;AAAA,IACjD;AAAA,IACA,IAAK,KAAK,KAAK,MAAkB,KAAK,KAAK,IAAe;AAAA,MACzD,MAAM,IAAI,mBAAmB,wBAAwB;AAAA,IACtD;AAAA,IACA,KAAK,kBAAkB,KAAK;AAAA,MAC3B;AAAA,MACA,cAAc,MAAM;AAAA,MACpB,cAAc,MAAM;AAAA,MACpB,gBAAgB,MAAM;AAAA,MACtB,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA,uBAAuB,MAAM;AAAA,MAC7B,uBAAuB,MAAM;AAAA,IAC9B,CAAC;AAAA,IACD,KAAK,4BAA4B;AAAA;AAAA,EAG1B,OAAO,CAAC,aAA8C;AAAA,IAC7D,IAAI;AAAA,MACH,KAAK,UAAU,QAAQ,WAAW;AAAA,MACjC,MAAM;AAAA;AAAA,EAKD,cAAc,CAAC,OAAwC;AAAA,IAC9D,OAAO;AAAA,MACN,UAAU,MAAM;AAAA,MAChB,WAAW,CAAC,MAAM,qBAAqB;AAAA,MACvC,eAAe;AAAA,MACf,aAAa;AAAA,IACd;AAAA;AAAA,EAGD,MAAM,GAAiC;AAAA,IACtC,KAAK,aAAa,OAAO,iBAAiB;AAAA,IAC1C,IAAI,KAAK,eAAe,SAAS,GAAG;AAAA,MACnC,MAAM,IAAI,mBACT,KAAK,aAAa,SAAS,IACxB,qBACA,KAAK,eAAe,KAAK,CAAC,WAAW,OAAO,cAAc,SAAS,IAClE,yCACA,0BACJ;AAAA,WACI,KAAK,uBAAuB;AAAA,WAC5B,KAAK,wBAAwB;AAAA,MACjC,CACD;AAAA,IACD;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,EAGb,uBAAuB,GAAsC;AAAA,IAC5D,KAAK,OAAO;AAAA,IACZ,IAAI,KAAK,aAAa,SAAS,GAAG;AAAA,MACjC,MAAM,IAAI,mBAAmB,oBAAoB;AAAA,WAC7C,KAAK,uBAAuB;AAAA,MAChC,CAAC;AAAA,IACF;AAAA,IACA,IAAI,CAAC,KAAK,6BAA6B,KAAK,OAAO;AAAA,MAClD,KAAK,0BAA0B,gBAAgB;AAAA,IAChD;AAAA,IACA,IAAI,CAAC,KAAK,2BAA2B;AAAA,MACpC,MAAM,IAAI,mBAAmB,wBAAwB;AAAA,IACtD;AAAA,IACA,OAAO,KAAK;AAAA;AAAA,OAGP,8BAA6B,CAClC,MACA,iBACgB;AAAA,IAChB,KAAK,wBAAwB;AAAA,IAC7B,MAAM,SAAS,KAAK,uBAAuB;AAAA,IAC3C,IAAI,OAAO,SAAS,GAAG;AAAA,MACtB,MAAM,UAAU,MAAM,6BAA6B,MAAM,MAAM;AAAA,MAC/D,gBAAgB,OAAO;AAAA,IACxB;AAAA;AAAA,EAGO,uBAAuB,GAA8C;AAAA,IAC5E,IAAI,KAAK,eAAe,WAAW;AAAA,MAAG,OAAO,CAAC;AAAA,IAC9C,MAAM,QAAQ,KACZ,eAAe;AAAA,IACjB,MAAM,OAAO,KAAK,eAAe,GAChC,EACD;AAAA,IACA,MAAM,eAAe,KAAK,eAAe,QAAQ,CAAC,WACjD,OAAO,cAAc,YAAY,CAAC,IAAI,CAAC,OAAO,SAAS,CACxD;AAAA,IACA,MAAM,eAAe;AAAA,MACpB,GAAG,IAAI,IACN,KAAK,eAAe,IAAI,CAAC,WACxB,IAAI,KAAK,OAAO,YAAY,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE,CACxD,CACD;AAAA,IACD,EAAE,KAAK,GAAG;AAAA,IACV,MAAM,gBAAgB,OAAO,YAC5B,6BAA6B,IAAI,CAAC,cAAc;AAAA,MAC/C,4BAA4B;AAAA,MAC5B,KAAK,kBAAkB,OACtB,CAAC,gBACA,YAAY,iBAAiB,aAC7B,YAAY,gBAAgB,YAAY,gBACvC,YAAY,aAAwB,SACvC,EAAE;AAAA,IACH,CAAC,CACF;AAAA,IACA,OAAO;AAAA,MACN,gBAAgB,MAAM;AAAA,SAClB,MAAM,iBAAiB,YACxB,CAAC,IACD,EAAE,gBAAgB,MAAM,aAAa;AAAA,SACpC,MAAM,cAAc,YACrB,CAAC,IACD,EAAE,aAAa,MAAM,UAAU;AAAA,MAClC,uBAAuB,KAAK,QAAQ;AAAA,MACpC,sBAAsB,KAAK,eAAe;AAAA,MAC1C,sBAAsB,KAAK,QAAQ;AAAA,MACnC,8BAA8B,MAAM;AAAA,MACpC,6BAA6B,KAAK;AAAA,SAC9B,aAAa,WAAW,IACzB,CAAC,IACD,EAAE,0BAA0B,KAAK,IAAI,GAAG,YAAY,EAAE;AAAA,MACzD,0BAA0B;AAAA,MAC1B,oBAAoB,KAAK,kBAAkB;AAAA,MAC3C,yBAAyB,KAAK,kBAAkB,OAC/C,CAAC,gBAAgB,YAAY,iBAAiB,SAC/C,EAAE;AAAA,MACF,2BAA2B,KAAK,kBAAkB,OACjD,CAAC,gBACA,YAAY,iBAAiB,aAC7B,YAAY,eAAe,YAAY,YACzC,EAAE;AAAA,SACC;AAAA,IACJ;AAAA;AAAA,EAGO,sBAAsB,GAA8C;AAAA,IAC3E,IAAI,KAAK,aAAa,WAAW;AAAA,MAAG,OAAO,CAAC;AAAA,IAC5C,MAAM,QAAQ,KAAK,aAAa;AAAA,IAChC,MAAM,OAAO,KAAK,aAAa,GAAG,EAAE;AAAA,IACpC,OAAO;AAAA,MACN,eAAe,MAAM;AAAA,MACrB,4BAA4B,MAAM;AAAA,MAClC,4BAA4B,MAAM;AAAA,MAClC,yBAAyB,MAAM;AAAA,MAC/B,oBAAoB,KAAK,aAAa;AAAA,MACtC,kCAAkC,MAAM;AAAA,MACxC,iCAAiC,KAAK;AAAA,IACvC;AAAA;AAAA,EAGO,YAAY,CAAC,iBAA+B;AAAA,IACnD,OACC,KAAK,cAAc,KAAK,QAAQ,UAC/B,KAAK,QAAQ,KAAK,eAA0B,iBAC5C;AAAA,MACD,KAAK,OAAO,KAAK,QAAQ,KAAK,YAAsB;AAAA,MACpD,KAAK,eAAe;AAAA,IACrB;AAAA;AAAA,EAGO,MAAM,CAAC,cAA4B;AAAA,IAC1C,MAAM,QAAQ,KAAK;AAAA,IACnB,KAAK,kBAAkB,KAAK;AAAA,MAC3B;AAAA,SACI,QACD;AAAA,QACA,cAAc,MAAM;AAAA,QACpB,WAAW,KAAK,IAAI,eAAe,MAAM,YAAY;AAAA,MACtD,IACC,CAAC;AAAA,IACL,CAAC;AAAA,IACD,IACC,CAAC,SACD,MAAM,eAAe,gBACrB,eAAe,MAAM,eAAe,KAAK,QAAQ,mBAChD;AAAA,MACD,KAAK,QAAQ;AAAA,QACZ,MAAM;AAAA,QACN,gBAAgB;AAAA,QAChB,gBAAgB,OAAO,gBAAgB;AAAA,QACvC,QAAQ,QAAQ,KAAK,IAAI,eAAe,MAAM,YAAY,IAAI;AAAA,QAC9D,QAAQ,CAAC,QACN,eACA,MAAM,eAAe,eACpB,WACA;AAAA,QACJ,QAAQ,QAAQ,KAAK,eAAe,KAAK,IAAI;AAAA,MAC9C,CAAC;AAAA,MACD,KAAK,eAAe,KAAK;AAAA,QACxB;AAAA,WACI,QACD;AAAA,UACA,cAAc,MAAM;AAAA,UACpB,WAAW,KAAK,IAAI,eAAe,MAAM,YAAY;AAAA,QACtD,IACC,CAAC;AAAA,MACL,CAAC;AAAA,MACD;AAAA,IACD;AAAA,IACA,KAAK,QAAQ;AAAA,MACZ,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,gBAAgB,MAAM;AAAA,MACtB,QAAQ,eAAe,MAAM;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ,KAAK,eAAe,KAAK;AAAA,IAClC,CAAC;AAAA,IACD,MAAM,OAAO,WAAW,MAAM,MAAM,KAAK,EAAE,MAAM,GAAG,KAAK,QAAQ,KAAK;AAAA,IACtE,MAAM,OAAO,WAAW,MAAM,MAAM,KAAK,EAAE,MAAM,GAAG,KAAK,QAAQ,KAAK;AAAA,IACtE,IAAI,KAAK,WAAW,KAAK,KAAK,WAAW,GAAG;AAAA,MAC3C,MAAM,IAAI,mBAAmB,mBAAmB;AAAA,IACjD;AAAA,IACA,IAAK,KAAK,KAAK,MAAkB,KAAK,KAAK,IAAe;AAAA,MACzD,MAAM,IAAI,mBAAmB,wBAAwB;AAAA,IACtD;AAAA,IACA,KAAK,QAAQ,KAAK;AAAA,MACjB;AAAA,MACA,cAAc,MAAM;AAAA,MACpB,gBAAgB,MAAM;AAAA,MACtB,UAAU,MAAM;AAAA,MAChB;AAAA,MACA;AAAA,MACA,uBAAuB,MAAM;AAAA,MAC7B,uBAAuB,MAAM;AAAA,IAC9B,CAAC;AAAA;AAAA,EAGM,aAAa,CAAC,OAAgD;AAAA,IACrE,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,aAAa,KAAK,UAAU,aAAa,KAAK,aAAa,SAAS;AAAA,IAC1E,MAAM,WAAW,iBAAiB,OAAO,KAAK,OAAO;AAAA,IACrD,IAAI,MAAM,KAAK,CAAC,QAAQ,iBAAiB,KAAK,KAAK,OAAO,MAAM,QAAQ,GAAG;AAAA,MAC1E,MAAM,IAAI,mBAAmB,0BAA0B;AAAA,IACxD;AAAA,IACA,IACC,KAAK,QAAQ,sBAAsB,oBACnC,KAAK,0BAA0B,aAC/B,OAAO,QAAQ,IAAI,KAAK,uBACvB;AAAA,MACD,MAAM,IAAI,mBAAmB,8BAA8B;AAAA,IAC5D;AAAA,IACA,KAAK,QAAQ;AAAA,MACZ,MAAM,IAAI;AAAA,MACV,MAAM,IAAI;AAAA,MACV;AAAA,MACA,cAAc,MAAM;AAAA,MACpB,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC;AAAA,MAClE,uBAAuB,MAAM;AAAA,MAC7B,uBAAuB,MAAM;AAAA,IAC9B;AAAA,IACA,UAAU,KAAK,OAAO,KAAK;AAAA,IAC3B,KAAK,wBAAwB,OAAO,QAAQ;AAAA,IAC5C,KAAK,QAAQ;AAAA,MACZ,MAAM,aAAa,aAAa;AAAA,MAChC,QAAQ;AAAA,QACP,eAAe,MAAM;AAAA,QACrB;AAAA,QACA,iBAAiB,MAAM;AAAA,QACvB,iBAAiB,MAAM;AAAA,MACxB;AAAA,IACD,CAAC;AAAA;AAAA,EAGM,WAAW,CAAC,OAAgD;AAAA,IACnE,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,QAAQ,KAAK;AAAA,IACnB,MAAM,wBAAwB,KAAK;AAAA,IACnC,MAAM,cAAc,OACnB,eAAe,MAAM,iBAAiB,mBAAmB,IAAI,CAC9D;AAAA,IACA,IAAI,KAAK,QAAQ,sBAAsB,0BAA0B;AAAA,MAChE,IACC,CAAC,OAAO,MAAM,eAAe,KAC7B,CAAC,OAAO,MAAM,oBAAoB,GACjC;AAAA,QACD,MAAM,IAAI,mBAAmB,wBAAwB;AAAA,MACtD;AAAA,MACA,MAAM,WAAW,eAChB,MAAM,gBACN,kBACA,IACD;AAAA,MACA,IACC,MAAM,KACL,CAAC,QACA,CAAC,OAAO,IAAI,eAAe,KAC3B,CAAC,OAAO,IAAI,oBAAoB,KAChC,eAAe,IAAI,iBAAiB,mBAAmB,IAAI,MAC1D,YAAY,SAAS,KACtB,eAAe,IAAI,gBAAgB,kBAAkB,IAAI,MACxD,QACH,GACC;AAAA,QACD,MAAM,IAAI,mBAAmB,wBAAwB;AAAA,MACtD;AAAA,MACA,IAAI,OAAO,QAAQ,MAAM,uBAAuB;AAAA,QAC/C,KAAK,QAAQ;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,YACT,mBAAmB,sBAAsB,SAAS;AAAA,YAClD,mBAAmB;AAAA,YACnB,gBAAgB,YAAY,SAAS;AAAA,YACrC,eAAe,MAAM;AAAA,UACtB;AAAA,UACA,QAAQ;AAAA,YACP,UAAU,MAAM;AAAA,YAChB,WAAW,CAAC,MAAM,uBAAuB;AAAA,YACzC,eAAe;AAAA,YACf,aAAa;AAAA,UACd;AAAA,QACD,CAAC;AAAA,QACD,KAAK,QAAQ;AAAA,UACZ,MAAM;AAAA,UACN,eAAe,MAAM;AAAA,UACrB,QAAQ;AAAA,QACT,CAAC;AAAA,QACD,KAAK,aAAa,KAAK;AAAA,UACtB,aAAa,MAAM;AAAA,UACnB,0BAA0B,sBAAsB,SAAS;AAAA,UACzD,0BAA0B;AAAA,UAC1B,uBAAuB,YAAY,SAAS;AAAA,QAC7C,CAAC;AAAA,QACD,KAAK,QAAQ;AAAA,QACb,KAAK,wBAAwB;AAAA,QAC7B;AAAA,MACD;AAAA,IACD,EAAO;AAAA,MACN,MAAM,cAAc,OACnB,eACC,MAAM,iBACN,mBACA,IACD,CACD;AAAA,MACA,MAAM,WAAW,eAChB,MAAM,sBACN,sBACD;AAAA,MACA,IACC,MAAM,KACL,CAAC,QACA,eAAe,IAAI,iBAAiB,mBAAmB,IAAI,MAC1D,YAAY,SAAS,KACtB,eAAe,IAAI,iBAAiB,mBAAmB,IAAI,MAC1D,YAAY,SAAS,KACtB,eAAe,IAAI,sBAAsB,sBAAsB,MAC9D,QACH,GACC;AAAA,QACD,MAAM,IAAI,mBAAmB,wBAAwB;AAAA,MACtD;AAAA,MACA,MAAM,WAAW,wBAAwB;AAAA,MACzC,IACC,cAAc,YACd,cAAc,YACb,aAAa,aAAa,OAAO,QAAQ,MAAM,uBAC/C;AAAA,QACD,MAAM,IAAI,mBAAmB,kBAAkB;AAAA,MAChD;AAAA;AAAA,IAED,UAAU,OAAO,KAAK;AAAA,IACtB,MAAM,WAAW,YAAY,SAAS;AAAA,IACtC,MAAM,eAAe,MAAM;AAAA,IAC3B,MAAM,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC;AAAA,IACzE,MAAM,wBAAwB,MAAM;AAAA,IACpC,MAAM,wBAAwB,MAAM;AAAA,IACpC,KAAK,wBAAwB;AAAA;AAE/B;AAEO,SAAS,kCAAkC,CACjD,SACA,WACA,UAA0C,4CAC1C,UAC+B;AAAA,EAC/B,MAAM,gBAAgB,IAAI,2BACzB,SACA,SACA,QACD;AAAA,EACA,cAAc,KAAK,SAAS;AAAA,EAC5B,OAAO,cAAc,OAAO;AAAA;AA+B7B,SAAS,WAAW,CAAC,OAA2B;AAAA,EAC/C,OAAO,YAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAAA;AAGvD,eAAsB,0BAA0B,CAC/C,OACqC;AAAA,EACrC,MAAM,UAAU,WAAW,KAAK;AAAA,EAChC,MAAM,SAAS,QAAQ,OAAO,MAC7B,QAAQ,YACR,QAAQ,aAAa,QAAQ,UAC9B;AAAA,EACA,OAAO,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAAA;AAa3C,SAAS,gBAAgB,CACxB,OACA,QAC4B;AAAA,EAC5B,OAAO;AAAA,IACN,eAAe,MAAM;AAAA,IACrB,YAAY,MAAM;AAAA,IAClB,kBAAkB,MAAM;AAAA,IAMxB,QAAQ,MAAM;AAAA,IACd,YAAY,MAAM;AAAA,IAClB,iBAAiB,MAAM;AAAA,IAMvB,iBAAiB,MAAM;AAAA,IAMvB,sBAAsB,MAAM;AAAA,IAM5B,gBAAgB,MAAM;AAAA,IAMtB,MAAM,MAAM;AAAA,IACZ,OAAO,MAAM;AAAA,IACb,UAAU,MAAM;AAAA,IAChB,aAAa,MAAM;AAAA,IAMnB,yBAAyB,OAAO;AAAA,IAChC,yBAAyB,OAAO;AAAA,EACjC;AAAA;AAGD,eAAe,iBAAiB,CAC/B,UACA,gBACsB;AAAA,EACtB,IAAI,CAAC,SAAS;AAAA,IAAM,OAAO,IAAI;AAAA,EAC/B,MAAM,SAAS,SAAS,KAAK,UAAU;AAAA,EACvC,MAAM,SAAuB,CAAC;AAAA,EAC9B,IAAI,QAAQ;AAAA,EACZ,OAAO,MAAM;AAAA,IACZ,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,IAC1C,IAAI;AAAA,MAAM;AAAA,IACV,SAAS,MAAM;AAAA,IACf,IAAI,QAAQ,gBAAgB;AAAA,MAC3B,MAAM,OAAO,OAAO;AAAA,MACpB,MAAM,IAAI,mBAAmB,2BAA2B;AAAA,IACzD;AAAA,IACA,OAAO,KAAK,KAAK;AAAA,EAClB;AAAA,EACA,MAAM,QAAQ,IAAI,WAAW,KAAK;AAAA,EAClC,IAAI,SAAS;AAAA,EACb,WAAW,SAAS,QAAQ;AAAA,IAC3B,MAAM,IAAI,OAAO,MAAM;AAAA,IACvB,UAAU,MAAM;AAAA,EACjB;AAAA,EACA,OAAO;AAAA;AAAA;AAGD,MAAM,qBAAqB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEjB,WAAW,CAAC,UAAuC,CAAC,GAAG;AAAA,IACtD,KAAK,UAAU,QAAQ,WAAW;AAAA,IAClC,KAAK,UAAU,QAAQ,SAAS;AAAA,IAChC,KAAK,QAAQ,QAAQ,SAAS,KAAK;AAAA,IACnC,KAAK,SAAS,QAAQ,UAAU;AAAA,IAChC,KAAK,WAAW,QAAQ,YAAY,CAAC;AAAA,IACrC,KAAK,WAAW,QAAQ;AAAA,IACxB,KAAK,wBAAwB,QAAQ;AAAA,IACrC,KAAK,2BAA2B,QAAQ,0BAA0B;AAAA;AAAA,EAG3D,OAAO,CAAC,aAA8C;AAAA,IAC7D,IAAI;AAAA,MACH,KAAK,UAAU,QAAQ,WAAW;AAAA,MACjC,MAAM;AAAA;AAAA,EAKT,aAAa,CACZ,SACiC;AAAA,IACjC,OAAO,2BAA2B,SAAS,KAAK,QAAQ;AAAA;AAAA,EAGjD,WAAW,CAClB,SACA,YAC6C;AAAA,IAC7C,OAAO,KAAK,SAAS,KACpB,CAAC,cACA,UAAU,aAAa,QAAQ,MAAM,SAAS,KAAK,EAAE,YAAY,KACjE,UAAU,gBAAgB,QAAQ,MAAM,eACxC,UAAU,iBAAiB,QAAQ,MAAM,gBACzC,UAAU,eAAe,QAAQ,MAAM,cACvC,UAAU,uBAAuB,WAAW,kBAC9C;AAAA;AAAA,EAGO,UAAU,CACjB,SACA,YACiC;AAAA,IACjC,MAAM,UAAU,KAAK,YAAY,SAAS,UAAU;AAAA,IACpD,IAAI,CAAC,SAAS;AAAA,MACb,MAAM,IAAI,mBAAmB,+BAA+B;AAAA,IAC7D;AAAA,IACA,OAAO;AAAA;AAAA,OAGF,gBAAe,CAAC,oBAA+C;AAAA,IACpE,IAAI,CAAC,eAAe,KAAK,kBAAkB,GAAG;AAAA,MAC7C,MAAM,IAAI,mBAAmB,mCAAmC;AAAA,IACjE;AAAA,IACA,MAAM,WAAW,IAAI,IAAI,YAAY,KAAK,OAAO;AAAA,IACjD,SAAS,aAAa,IAAI,YAAY,kBAAkB;AAAA,IACxD,SAAS,aAAa,IAAI,aAAa,WAAW;AAAA,IAClD,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,WAAW,MAAM,KAAK,QAAQ,QAAQ;AAAA,MACrC,MAAM;AAAA,MACP,MAAM,IAAI,mBAAmB,yBAAyB;AAAA;AAAA,IAEvD,IAAI,CAAC,SAAS,IAAI;AAAA,MACjB,MAAM,IAAI,mBAAmB,yBAAyB;AAAA,IACvD;AAAA,IACA,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,OAAO,MAAM,SAAS,KAAK;AAAA,MAC1B,MAAM;AAAA,MACP,MAAM,IAAI,mBAAmB,mCAAmC;AAAA;AAAA,IAEjE,MAAM,SAAS;AAAA,IACf,IACC,CAAC,QACD,OAAO,SAAS,YAChB,MAAM,QAAQ,IAAI,KAClB,OAAO,OAAO,QAAQ,EAAE,YAAY,MAAM,sBAC1C,OAAO,OAAO,SAAS,EAAE,YAAY,MAAM,eAC3C,CAAC,MAAM,QAAQ,OAAO,OAAO,KAC7B,CAAC,OAAO,QAAQ,MACf,CAAC,WAAW,OAAO,WAAW,YAAY,gBAAgB,KAAK,MAAM,CACtE,GACC;AAAA,MACD,MAAM,IAAI,mBAAmB,mCAAmC;AAAA,IACjE;AAAA,IACA,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,OAAmB,CAAC,EAAE,KAAK;AAAA;AAAA,OAGhD,QAAO,CACZ,SACA,YACA,YACsD;AAAA,IACtD,IAAI,qBAAqB;AAAA,IACzB,IAAI;AAAA,MACH,MAAM,SAAS,MAAM,KAAK,gBACzB,SACA,YACA,YACA,CAAC,UAAU;AAAA,QACV,sBAAsB;AAAA,OAExB;AAAA,MACA,OAAO;AAAA,MACN,OAAO,OAAO;AAAA,MACf,IAAI,KAAK,uBAAuB;AAAA,QAC/B,MAAM,SACL,iBAAiB,qBACd,MAAM,SACN;AAAA,QACJ,MAAM,KAAK,sBACT,MAAM,EAAE,QAAQ,mBAAmB,CAAC,EACpC,MAAM,MAAM,EAAE;AAAA,MACjB;AAAA,MACA,MAAM;AAAA;AAAA;AAAA,OAIM,gBAAe,CAC5B,SACA,YACA,YACA,qBACsD;AAAA,IACtD,MAAM,UAAU,KAAK,YAAY,SAAS,UAAU;AAAA,IACpD,MAAM,SACL,cAAc,OAAO,eAAe,WAChC,WAAoC,SACrC;AAAA,IACJ,IAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AAAA,MACtD,MAAM,IAAI,mBAAmB,qBAAqB;AAAA,IACnD;AAAA,IACA,IACC,KAAK,6BACJ,SAAS,sBAAsB,4BAC/B,QAAQ,UAAU,MAClB;AAAA,MACD,MAAM,IAAI,mBAAmB,+BAA+B;AAAA,IAC7D;AAAA,IACA,MAAM,QAAQ,KAAK,wBAChB,oCACA,SACA,WAAW,oBACX,WAAW,cACZ,IACC,8BACA,SACA,WAAW,oBACX,WAAW,cACZ;AAAA,IACF,IAAI,MAAM,SAAS,QAAQ,QAAQ,UAAU;AAAA,MAC5C,MAAM,IAAI,mBAAmB,2BAA2B;AAAA,IACzD;AAAA,IACA,MAAM,UAAU,KAAK,MAAM;AAAA,IAC3B,MAAM,gBAAgB,MAAM,KAAK,QAAQ,GAAG,KAAK,qBAAqB;AAAA,MACrE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,oBAAoB,aAAa,OAAO;AAAA,IACpE,CAAC;AAAA,IACD,IAAI,CAAC,cAAc;AAAA,MAAI,MAAM,IAAI,mBAAmB,qBAAqB;AAAA,IACzE,MAAM,YAAa,MAAM,cAAc,KAAK;AAAA,IAC5C,IAAI,OAAO,UAAU,cAAc,YAAY,CAAC,UAAU,WAAW;AAAA,MACpE,MAAM,IAAI,mBAAmB,sBAAsB;AAAA,IACpD;AAAA,IAEA,IAAI,aAAa;AAAA,IACjB,IAAI,YAAY;AAAA,IAChB,IAAI,wBAAwB;AAAA,IAC5B,MAAM,UAAoC,CAAC;AAAA,IAC3C,MAAM,OAAoC,CAAC;AAAA,IAC3C,MAAM,gBACL,SAAS,sBAAsB,2BAC5B,IAAI,2BAA2B,SAAS,SAAS,KAAK,UAAU;AAAA,MAChE,0BAA0B,KAAK;AAAA,IAChC,CAAC,IACA;AAAA,IACJ,MAAM,eAAe,YAAW,QAAQ;AAAA,IACxC,IAAI,mBAAmB;AAAA,IACvB,aAAa,OAAO,GAAG;AAAA,IACvB,WAAW,QAAQ,OAAO;AAAA,MACzB,MAAM,WAAW,IAAI,IAAI,aAAa,KAAK,OAAO;AAAA,MAClD,SAAS,aAAa,IAAI,QAAQ,IAAI;AAAA,MACtC,IAAI;AAAA,MAMJ,IAAI;AAAA,MACJ,SACK,UAAU,EACd,WAAW,8BACX,WAAW,GACV;AAAA,QACD,IAAI,KAAK,MAAM,IAAI,UAAU,QAAQ,QAAQ,eAAe;AAAA,UAC3D,MAAM,IAAI,mBAAmB,8BAA8B;AAAA,QAC5D;AAAA,QACA,IAAI;AAAA,UACH,IAAI;AAAA,UACJ,IAAI;AAAA,YACH,WAAW,MAAM,KAAK,QAAQ,UAAU;AAAA,cACvC,SAAS,EAAE,eAAe,UAAU,UAAU,YAAY;AAAA,YAC3D,CAAC;AAAA,YACA,OAAO,OAAO;AAAA,YACf,MAAM,sBACL,OACA,kCACA,MACA,SACD;AAAA;AAAA,UAED,IAAI,CAAC,SAAS,IAAI;AAAA,YACjB,MAAM,sBACL,IAAI,mBAAmB,wBAAwB,GAC/C,0BACA,MACA,SACD;AAAA,UACD;AAAA,UACA,MAAM,gBAAgB,OAAO,SAAS,QAAQ,IAAI,gBAAgB,CAAC;AAAA,UACnE,IACC,OAAO,SAAS,aAAa,KAC7B,aAAa,gBAAgB,QAAQ,QAAQ,UAC5C;AAAA,YACD,MAAM,IAAI,mBAAmB,2BAA2B;AAAA,UACzD;AAAA,UACA,IAAI;AAAA,UACJ,IAAI;AAAA,YACH,QAAQ,MAAM,kBACb,UACA,QAAQ,QAAQ,WAAW,UAC5B;AAAA,YACC,OAAO,OAAO;AAAA,YACf,MAAM,sBACL,OACA,+BACA,MACA,MACD;AAAA;AAAA,UAED,cAAc,MAAM;AAAA,UACpB,IAAI,aAAa,QAAQ,QAAQ,UAAU;AAAA,YAC1C,MAAM,IAAI,mBAAmB,2BAA2B;AAAA,UACzD;AAAA,UACA,MAAM,WAAW,YAAY,KAAK;AAAA,UAClC,IAAI,oBAAoB,qBAAqB,UAAU;AAAA,YACtD,KAAK,QAAQ;AAAA,cACZ,MAAM;AAAA,cACN,QAAQ;AAAA,gBACP,UAAU;AAAA,gBACV,WAAW,CAAC,kBAAkB,QAAQ,EAAE,KAAK;AAAA,gBAC7C,eAAe;AAAA,gBACf,aAAa;AAAA,cACd;AAAA,cACA,0BAA0B,QAAQ;AAAA,YACnC,CAAC;AAAA,YACD,MAAM,IAAI,mBAAmB,qCAAqC;AAAA,cACjE,yBAAyB;AAAA,cACzB,eAAe;AAAA,cACf,eAAe;AAAA,cACf,aAAa;AAAA,YACd,CAAC;AAAA,UACF;AAAA,UACA,mBAAmB;AAAA,UACnB,IAAI;AAAA,UACJ,IAAI;AAAA,YACH,UAAU,MAAM,KAAK,OAAO,KAAK;AAAA,YAChC,OAAO,OAAO;AAAA,YACf,MAAM,sBACL,OACA,iCACA,MACA,QACD;AAAA;AAAA,UAED,IAAI,YAAY,QAAQ,SAAS,QAAQ,QAAQ,SAAS;AAAA,YACzD,MAAM,IAAI,mBAAmB,0BAA0B;AAAA,UACxD;AAAA,UACA,MAAM,SAAS;AAAA,YACd,UAAU;AAAA,YACV;AAAA,YACA,OAAO,MAAM;AAAA,YACb,MAAM,QAAQ;AAAA,UACf;AAAA,UACA,MAAM,aAA0C,CAAC;AAAA,UACjD,IAAI;AAAA,YACH,WAAW,cAAc,SAAS;AAAA,cACjC,MAAM,SAAS,iBAAiB,YAAY,MAAM;AAAA,cAClD,aAAa,SAAS,MAAM;AAAA,cAC5B,WAAW,KAAK,MAAM;AAAA,YACvB;AAAA,YACC,OAAO,OAAO;AAAA,YACf,MAAM,sBACL,OACA,qCACA,MACA,UACD;AAAA;AAAA,UAED,WAAW,EAAE,QAAQ,WAAW;AAAA,UAChC;AAAA,UACC,OAAO,OAAO;AAAA,UACf,MAAM,UACL,iBAAiB,qBACd,QACA,sBACA,OACA,kCACA,MACA,SACD;AAAA,UACH,IACC,CAAC,mCAAmC,IAAI,QAAQ,MAAM,KACtD,YAAY,8BACX;AAAA,YACD,MAAM,YAAY,gCACjB,mCAAmC,IAAI,QAAQ,MAAM,IACnD,iCACA,SACA,SACA,gBACD,IACC;AAAA,UACJ;AAAA;AAAA,MAEF;AAAA,MACA,IAAI,CAAC,UAAU;AAAA,QACd,MAAM,IAAI,mBAAmB,wCAAwC;AAAA,MACtE;AAAA,MACA,aAAa,SAAS,OAAO;AAAA,MAC7B,QAAQ,KAAK,SAAS,MAAM;AAAA,MAC5B,WAAW,UAAU,SAAS,YAAY;AAAA,QACzC,aAAa,OAAO,mBAAmB,KAAK,GAAG;AAAA,QAC/C,aAAa,OAAO,mBAAmB,MAAM,CAAC;AAAA,QAC9C,mBAAmB;AAAA,MACpB;AAAA,MACA,IAAI,iBAAiB,KAAK,uBAAuB;AAAA,QAChD,MAAM,cAAc,sBACnB,SAAS,YACT,KAAK,uBACL,CAAC,YAAY;AAAA,UACZ,yBAAyB;AAAA,UACzB,oBAAoB,OAAO;AAAA,SAE7B;AAAA,MACD,EAAO,SAAI,eAAe;AAAA,QACzB,cAAc,KAAK,SAAS,UAAU;AAAA,MACvC,EAAO;AAAA,QACN,KAAK,KAAK,GAAG,SAAS,UAAU;AAAA;AAAA,IAElC;AAAA,IACA,IAAI,KAAK,MAAM,IAAI,UAAU,QAAQ,QAAQ,eAAe;AAAA,MAC3D,MAAM,IAAI,mBAAmB,8BAA8B;AAAA,IAC5D;AAAA,IACA,aAAa,OAAO,GAAG;AAAA,IACvB,MAAM,qBAAqB,eAAe,OAAO;AAAA,IACjD,IAAI;AAAA,IACJ,IAAI,KAAK,yBAAyB,eAAe;AAAA,MAChD,MAAM,cAAc,8BACnB,KAAK,uBACL,CAAC,YAAY;AAAA,QACZ,yBAAyB;AAAA,QACzB,oBAAoB,OAAO;AAAA,OAE7B;AAAA,IACD,EAAO,SAAI,KAAK,0BAA0B;AAAA,MACzC,oBAAoB,eAAe,wBAAwB;AAAA,IAC5D;AAAA,IACA,IAAI,KAAK,uBAAuB;AAAA,MAC/B,MAAM,KAAK,sBAAsB,SAAS;AAAA,QACzC,0BAA0B;AAAA,QAC1B,iBAAiB;AAAA,QACjB,YAAY;AAAA,MACb,CAAC;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,SACI,qBAAqB,CAAC,KAAK,wBAC5B,EAAE,kBAAkB,IACpB,CAAC;AAAA,MACJ,sBAAsB,aAAa,OAAO,KAAK;AAAA,IAChD;AAAA;AAAA,OAGK,UAAS,CACd,SACA,YACA,SACA,iBAC8B;AAAA,IAC9B,MAAM,UAAU,KAAK,WAAW,SAAS,UAAU;AAAA,IACnD,MAAM,UAAU,QAAQ,qBACpB,QAAQ,qBACT,mCACA,SACA,QAAQ,MACR,OACD;AAAA,IACF,MAAM,WAAgC;AAAA,MACrC,QAAQ;AAAA,MACR,cAAc;AAAA,MACd;AAAA,MACA,UAAU,QAAQ,MAAM;AAAA,MACxB,QAAQ,QAAQ,MAAM;AAAA,MACtB,aAAa,QAAQ,MAAM;AAAA,MAC3B,cAAc,QAAQ,MAAM;AAAA,MAC5B,WAAW,QAAQ,MAAM;AAAA,MACzB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,oBAAoB;AAAA,IACrB;AAAA,IACA,MAAM,OAAO,QAAQ,QAAQ,CAAC,WAAW;AAAA,MACxC,MAAM,aAAyB;AAAA,QAC9B,cAAc,gBAAgB;AAAA,UAC7B,mBAAmB;AAAA,UACnB,yBAAyB,OAAO;AAAA,UAChC,yBAAyB,OAAO;AAAA,UAChC,gBAAgB,OAAO;AAAA,UACvB,gBAAgB,OAAO;AAAA,QACxB,CAAC;AAAA,QACD,iBAAiB;AAAA,QACjB,aAAa,OAAO;AAAA,QACpB,iBAAiB;AAAA,UAChB,yBAAyB,OAAO;AAAA,UAChC,yBAAyB,OAAO;AAAA,QACjC;AAAA,QACA,aAAa,OAAO;AAAA,QACpB,gBAAgB,OAAO;AAAA,QACvB,mBAAmB;AAAA,MACpB;AAAA,MACA,IAAI;AAAA,MACJ,IAAI;AAAA,QACH,YAAY,4BAA4B;AAAA,UACvC;AAAA,UACA;AAAA,UACA,YAAY,QAAQ;AAAA,UACpB,kBAAkB,QAAQ;AAAA,UAC1B,UAAU;AAAA,YACT,MAAM,OAAO;AAAA,YACb,MAAM,OAAO;AAAA,YACb,WAAW,OAAO;AAAA,YAClB,mBAAmB,OAAO;AAAA,YAC1B,UAAU,QAAQ,MAAM;AAAA,YACxB,QAAQ,QAAQ,MAAM;AAAA,YACtB,YAAY,QAAQ;AAAA,YACpB,UAAU,OAAO;AAAA,UAClB;AAAA,QACD,CAAC;AAAA,QACA,OAAO,OAAO;AAAA,QACf,MAAM,cAAc;AAAA,UACnB,gBAAgB,OAAO;AAAA,UACvB,gBAAgB,OAAO;AAAA,UACvB,yBAAyB,OAAO;AAAA,UAChC,eAAe;AAAA,QAChB;AAAA,QACA,IAAI,iBAAiB,0BAA0B;AAAA,UAC9C,MAAM,IAAI,mBAAmB,+BAA+B;AAAA,eACxD;AAAA,YACH,mBAAmB,MAAM;AAAA,UAC1B,CAAC;AAAA,QACF;AAAA,QACA,MAAM,IAAI,mBACT,kCACA,WACD;AAAA;AAAA,MAED,OAAO,CAAC,GAAG,UAAU,QAAQ,UAAU,OAAO;AAAA,KAC9C;AAAA,IACD,OAAO;AAAA,MACN;AAAA,MACA,SAAS,QAAQ;AAAA,MACjB;AAAA,MACA,sBAAsB,QAAQ;AAAA,MAC9B,yBAAyB,eAAe,IAAI;AAAA,IAC7C;AAAA;AAEF;;;A0BrqDA,qBAAqB,mCAAsB,eAAe;AAEnD,IAAM,yBAAyB,OAAO,OAAO,iCAAoB;AACjE,IAAM,4BAA4B,uBAAuB;AACzD,IAAM,gCACZ;AAQD,IAAI,gCAA8C,0BAA0B;AAAA,EAC3E,MAAM,IAAI,MAAM,8CAA8C;AAC/D;AACO,IAAM,6BAA6B,OAAO,OAAO;AAAA,EACvD,aAAa;AAAA,EACb,SAAS;AACV,CAAC;AACM,IAAM,8BAA8B,OAAO,OAAO;AAAA,EACxD,OAAO,OAAO;AAAA,IACb,WAAW,oDAAiB;AAAA,IAC5B,eAAe,UAAU,mDAAgB;AAAA,EAC1C,CAAC;AAAA,EACD,OAAO,OAAO;AAAA,IACb,WAAW,2DAAuB;AAAA,IAClC,eAAe,UAAU,0DAAsB;AAAA,EAChD,CAAC;AACF,CAAC;;;AC1CD,SAAS,aAAa,CACrB,MACA,OACU;AAAA,EACV,OACC,KAAK,cAAc,MAAM,aACzB,KAAK,kBAAkB,MAAM;AAAA;AAIxB,SAAS,sCAAsC,CACrD,SACU;AAAA,EACV,MAAM,qBACL,QAAQ,sBAAsB,gCAC3B,yBACA;AAAA,EACJ,OACC,cACC,QAAQ,mBAAmB,mBAC3B,kBACD,KACA,cACC,QAAQ,mBAAmB,iBAC3B,eACD,KACA,cACC,QAAQ,mBAAmB,gBAC3B,4BACD,KACA,cACC,QAAQ,mBAAmB,oBAC3B,gCACD;AAAA;AAIK,SAAS,kBAAkB,CAAC,SAAyC;AAAA,EAC3E,OAAO,gBAAgB,OAAO;AAAA;AAG/B,SAAS,8BAA8B,CACtC,QACA,oBACmB;AAAA,EACnB,OAAO,uBAAuB,MAAM;AAAA,OAChC;AAAA,IACH,WAAW,mBAAmB,MAAM;AAAA,IACpC;AAAA,EACD,CAAC;AAAA;AAkBK,SAAS,wBAAwB,CACvC,SACA,oBAC0C;AAAA,EAC1C,IAAI,eAAe,SAAS;AAAA,IAC3B;AAAA,MACC,YAAY;AAAA,MACZ,2BAA2B;AAAA,SACxB;AAAA,QACA;AAAA,IACJ,MAAM,4BACL,wBAAwB,oBAAoB;AAAA,IAC7C,MAAM,UAAU,KAAK,sBAAsB,0BAA0B;AAAA,IACrE,OAAO,sBAAsB,OAAO;AAAA,SAChC;AAAA,MACH,YAAY,eAAe,SAAS,YAAY;AAAA,IACjD,CAAC;AAAA,EACF;AAAA,EACA,IAAI,uBAAuB,WAAW;AAAA,IACrC,MAAM,IAAI,UAAU,sDAAsD;AAAA,EAC3E;AAAA,EACA,OAAO,+BAA+B,SAAS,kBAAkB;AAAA;AAG3D,SAAS,4BAA4B,CAC3C,cACqB;AAAA,EACrB,IAAI,eAAe,cAAc;AAAA,IAChC,MAAM,WAAU,sBAAsB,OAAO,YAAY;AAAA,IACzD,OAAO;AAAA,MACN,OAAO;AAAA,MACP,KAAK;AAAA,QACJ,QAAQ,SAAQ;AAAA,QAChB,gBAAgB,SAAQ;AAAA,QACxB,aAAa,SAAQ;AAAA,QACrB,eAAe;AAAA,QACf,wBAAwB,SAAQ;AAAA,QAChC,YAAY,SAAQ;AAAA,QACpB,2BAA2B,SAAQ;AAAA,QACnC,YAAY,SAAQ;AAAA,QACpB,iBAAiB,SAAQ;AAAA,QACzB,QAAQ;AAAA,QACR,mBAAmB,SAAQ;AAAA,QAC3B,UAAU,SAAQ;AAAA,QAClB,iBAAiB,SAAQ;AAAA,QACzB,UAAU,SAAQ,MAAM;AAAA,QACxB,cAAc,SAAQ,MAAM;AAAA,QAC5B,YAAY,SAAQ,MAAM;AAAA,QAC1B,MAAM,SAAQ,MAAM;AAAA,QACpB,iBAAiB,KAAK,MAAM,SAAQ,OAAO,QAAQ;AAAA,QACnD,eAAe,KAAK,MAAM,SAAQ,OAAO,MAAM;AAAA,QAC/C,aAAa,SAAQ;AAAA,QACrB,mBAAmB,SAAQ;AAAA,QAC3B,gBAAgB;AAAA,QAChB,yBAAyB,SAAQ,iBAAiB;AAAA,QAClD,oBAAoB;AAAA,QACpB,sBAAsB,gBAAgB,SAAQ,eAAe;AAAA,QAC7D,kBAAkB,SAAQ;AAAA,QAC1B,sBACC,SAAQ,mBAAmB,kBAAkB;AAAA,QAC9C,0BACC,SAAQ,mBAAmB,kBAAkB;AAAA,QAC9C,oBACC,SAAQ,mBAAmB,gBAAgB;AAAA,QAC5C,wBACC,SAAQ,mBAAmB,gBAAgB;AAAA,QAC5C,mBAAmB,SAAQ,mBAAmB,eAAe;AAAA,QAC7D,uBACC,SAAQ,mBAAmB,eAAe;AAAA,QAC3C,uBACC,SAAQ,mBAAmB,mBAAmB;AAAA,QAC/C,2BACC,SAAQ,mBAAmB,mBAAmB;AAAA,QAC/C,wBAAwB,SAAQ;AAAA,QAChC,2BAA2B,SAAQ;AAAA,QACnC,eAAe,SAAQ;AAAA,QACvB,eAAe,SAAQ;AAAA,QACvB,eAAe;AAAA,QACf,mBAAmB;AAAA,QACnB,sBAAsB,gBAAgB,SAAQ,eAAe;AAAA,QAC7D,cAAc,gBAAgB,QAAO;AAAA,QACrC,sBAAsB,KAAK,MAAM,SAAQ,WAAW;AAAA,MACrD;AAAA,IACD;AAAA,EACD;AAAA,EACA,MAAM,UAAU,uBAAuB,MAAM,YAAY;AAAA,EACzD,IACC,mBACC,OAAO,YACN,OAAO,QAAQ,OAAO,EAAE,OACvB,EAAE,SAAS,QAAQ,eAAe,QAAQ,oBAC3C,CACD,CACD,MAAM,QAAQ,WACb;AAAA,IACD,MAAM,IAAI,MAAM,qCAAqC;AAAA,EACtD;AAAA,EACA,OAAO;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,MACJ,QAAQ,QAAQ;AAAA,MAChB,eAAe;AAAA,MACf,wBAAwB,QAAQ;AAAA,MAChC,YAAY,QAAQ;AAAA,MACpB,YAAY,QAAQ;AAAA,MACpB,iBAAiB,QAAQ;AAAA,MACzB,QAAQ,QAAQ;AAAA,MAChB,mBAAmB,QAAQ;AAAA,MAC3B,UAAU,QAAQ;AAAA,MAClB,iBAAiB,QAAQ;AAAA,MACzB,UAAU,QAAQ;AAAA,MAClB,cAAc,QAAQ;AAAA,MACtB,YAAY,QAAQ;AAAA,MACpB,MAAM,QAAQ;AAAA,MACd,iBAAiB,QAAQ;AAAA,MACzB,eAAe,QAAQ;AAAA,MACvB,aAAa,QAAQ;AAAA,MACrB,mBAAmB,QAAQ;AAAA,MAC3B,gBAAgB,QAAQ;AAAA,MACxB,oBAAoB,QAAQ;AAAA,MAC5B,wBAAwB,QAAQ;AAAA,MAChC,2BAA2B,QAAQ;AAAA,MACnC,eAAe,QAAQ;AAAA,MACvB,eAAe,QAAQ;AAAA,MACvB,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,sBAAsB,KAAK,UAAU,QAAQ,cAAc;AAAA,MAC3D,sBAAsB,QAAQ;AAAA,IAC/B;AAAA,EACD;AAAA;AAGM,SAAS,8BAA8B,CAC7C,KAC0C;AAAA,EAC1C,IAAI,OAAO,IAAI,iBAAiB,YAAY,IAAI,aAAa,SAAS,GAAG;AAAA,IACxE,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,SAAS,KAAK,MAAM,IAAI,YAAY;AAAA,MACnC,MAAM;AAAA,MACP,MAAM,IAAI,MAAM,mCAAmC;AAAA;AAAA,IAEpD,MAAM,WAAU,sBAAsB,OAAO,MAAM;AAAA,IACnD,IACC,SAAQ,eAAe,IAAI,cAC3B,SAAQ,8BAA8B,IAAI,2BACzC;AAAA,MACD,MAAM,IAAI,MAAM,6CAA6C;AAAA,IAC9D;AAAA,IACA,OAAO;AAAA,EACR;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACH,iBAAiB,KAAK,MAAM,OAAO,IAAI,oBAAoB,CAAC;AAAA,IAC3D,MAAM;AAAA,IACP,MAAM,IAAI,MAAM,2CAA2C;AAAA;AAAA,EAE5D,MAAM,UAAU,uBAAuB,MAAM;AAAA,IAC5C,eAAe,IAAI;AAAA,IACnB,WAAW,IAAI;AAAA,IACf,WAAW,IAAI;AAAA,IACf,gBAAgB,IAAI;AAAA,IACpB,QAAQ,IAAI;AAAA,IACZ,QAAQ,IAAI;AAAA,IACZ,UAAU,IAAI;AAAA,IACd,gBAAgB,IAAI;AAAA,IACpB,iBAAiB,IAAI;AAAA,IACrB,UAAU,IAAI;AAAA,IACd,aAAa,IAAI;AAAA,IACjB,YAAY,IAAI;AAAA,IAChB,MAAM,IAAI;AAAA,IACV,aAAa,IAAI;AAAA,IACjB,WAAW,IAAI;AAAA,IACf,OAAO,IAAI;AAAA,IACX,kBAAkB,IAAI;AAAA,IACtB,wBAAwB,IAAI;AAAA,IAC5B,mBAAmB,IAAI;AAAA,IACvB,sBAAsB,IAAI;AAAA,IAC1B,yBAAyB,IAAI;AAAA,IAC7B,cAAc,IAAI;AAAA,IAClB,cAAc,IAAI;AAAA,IAClB,cAAc,IAAI,kBAAkB;AAAA,IACpC,kBAAkB,IAAI,sBAAsB;AAAA,IAC5C;AAAA,IACA,oBAAoB,IAAI;AAAA,EACzB,CAAC;AAAA,EACD;AAAA,IACC;AAAA,IACA,oBAAoB;AAAA,OACjB;AAAA,MACA;AAAA,EACJ,IAAI,mBAAmB,MAAM,MAAM,WAAW;AAAA,IAC7C,MAAM,IAAI,MAAM,qCAAqC;AAAA,EACtD;AAAA,EACA,OAAO;AAAA;;;AC7QR,IAAM,YAAY;AAClB,IAAM,YAAY;AAClB,IAAM,UAAU;AAChB,IAAM,kBAAkB;AACxB,IAAM,uBAAuB;AAC7B,IAAM,WAAW;AACjB,IAAM,kBAAkB,IAAI,OAAO,EAAE;AACrC,IAAM,QAAQ;AAAA,EACb,UAAU;AAAA,EACV,cAAc;AAAA,EACd,aAAa;AAAA,EACb,MAAM;AACP;AACA,IAAM,UAAS;AAAA,EACd,UAAU;AAAA,EACV,QAAQ;AACT;AACA,IAAM,iBAAiB;AAAA,EACtB,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,wBAAwB;AACzB;AAEA,IAAM,gBAAgB,sBAAsB;AAAA,EAC3C,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS,CAAC,EAAE,WAAW,UAAU,WAAW,2BAA2B,CAAC;AACzE,CAAC;AAED,IAAM,mBAAmB,yBAAyB;AAAA,EACjD,WAAW;AAAA,EACX;AAAA,EACA,gBAAgB;AAAA,IACf,UAAU,cAAc;AAAA,IACxB,cAAc,cAAc;AAAA,IAC5B,aAAa,cAAc,QAAQ;AAAA,EACpC;AAAA,EACA,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,qBAAqB,CAAC,OAAM;AAAA,EAC5B,oBAAoB,CAAC;AAAA,EACrB,YAAY,CAAC,QAAQ;AAAA,EACrB,SAAS,CAAC;AAAA,EACV,iBAAiB,CAAC;AAAA,EAClB,aAAa,CAAC;AAAA,EACd,yBAAyB,CAAC;AAAA,EAC1B,aAAa;AACd,CAAC;AAED,IAAM,iBAAiB;AAAA,EACtB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,QAAQ,EAAE,aAAa,cAAc,SAAS,sBAAsB;AAAA,EACpE,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,IACf,WAAW;AAAA,IACX,UAAU,cAAc;AAAA,IACxB,WAAW;AAAA,IACX,cAAc,cAAc;AAAA,IAC5B,aAAa,cAAc,QAAQ;AAAA,EACpC;AAAA,EACA,mBAAmB;AAAA,EACnB,2BAA2B;AAAA,IAC1B,WAAW;AAAA,IACX,eAAe,IAAI,OAAO,EAAE;AAAA,EAC7B;AAAA,EACA,cAAc;AAAA,IACb,mBAAmB;AAAA,MAClB,WAAW,kBAAkB;AAAA,MAC7B,eAAe,kBAAkB;AAAA,IAClC;AAAA,IACA,iBAAiB;AAAA,MAChB,WAAW,gBAAgB;AAAA,MAC3B,eAAe,gBAAgB;AAAA,IAChC;AAAA,EACD;AAAA,EACA,6BAA6B;AAC9B;AAEA,IAAM,UAAU;AAAA,KACZ;AAAA,EACH,iBAAiB,6BAA6B,cAAc;AAC7D;AAEA,IAAM,mBAAmB,yBAAyB;AAAA,EACjD,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY,QAAQ;AAAA,EACpB,iBAAiB,QAAQ;AAAA,EACzB,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,oBAAoB;AAAA,IACnB,mBAAmB,QAAQ,aAAa;AAAA,IACxC,iBAAiB,QAAQ,aAAa;AAAA,IACtC,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,EACrB;AAAA,EACA,mBAAmB;AAAA,EACnB;AAAA,EACA;AAAA,EACA,OAAO,QAAQ;AAAA,EACf,mBAAmB,QAAQ;AAAA,EAC3B,kBAAkB,QAAQ;AAAA,EAC1B,iBAAiB;AAAA,EACjB,kBAAkB,iBAAiB;AAAA,EACnC,wBAAwB,IAAI,OAAO,EAAE;AAAA,EACrC,2BAA2B,IAAI,OAAO,EAAE;AAAA,EACxC,eAAe,IAAI,OAAO,EAAE;AAAA,EAC5B,eAAe,IAAI,OAAO,EAAE;AAAA,EAC5B,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,IAChB;AAAA,MACC,UAAU;AAAA,MACV,UAAU,IAAI,OAAO,EAAE;AAAA,MACvB,OAAO;AAAA,MACP,MAAM;AAAA,IACP;AAAA,EACD;AACD,CAAC;AAED,IAAM,oBAAoB,yBAAyB;AAAA,EAClD,WAAW;AAAA,EACX;AAAA,EACA,gBAAgB,iBAAiB;AAAA,EACjC,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,qBAAqB,CAAC,OAAM;AAAA,EAC5B,oBAAoB;AAAA,IACnB;AAAA,SACI;AAAA,MACH,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,IACjB;AAAA,EACD;AAAA,EACA,YAAY,CAAC,QAAQ;AAAA,EACrB,SAAS;AAAA,IACR;AAAA,MACC,mBAAmB;AAAA,MACnB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,eAAe;AAAA,QACd,wBAAwB;AAAA,QACxB,OAAO;AAAA,QACP,YAAY,iBAAiB;AAAA,QAC7B,2BAA2B,iBAAiB;AAAA,MAC7C;AAAA,IACD;AAAA,EACD;AAAA,EACA,iBAAiB;AAAA,IAChB;AAAA,MACC,mBAAmB;AAAA,MACnB,gBAAgB,IAAI,OAAO,EAAE;AAAA,MAC7B,aAAa,IAAI,OAAO,EAAE;AAAA,MAC1B,aAAa;AAAA,MACb,6BAA6B,IAAI,OAAO,EAAE;AAAA,MAC1C,cAAc;AAAA,QACb,gBAAgB;AAAA,QAChB,wBAAwB;AAAA,QACxB,YAAY,iBAAiB;AAAA,MAC9B;AAAA,IACD;AAAA,EACD;AAAA,EACA,aAAa,CAAC,iBAAiB,UAAU;AAAA,EACzC,yBAAyB,CAAC,oBAAoB;AAAA,EAC9C,aAAa;AACd,CAAC;AAED,IAAM,gBAAgB;AAAA,EACrB,UAAU,CAAC,MAAM,MAAM,KAAK;AAAA,EAC5B,SAAS,CAAC,OAAO,oBAAoB,GAAG,iCAAM,KAAK,KAAK;AAAA,EACxD,QAAQ;AAAA;AACT;AAEO,IAAM,uBAAuB,OAAO,OAAO;AAAA,EACjD,YAAY;AAAA,EACZ,WAAW;AAAA,IACV,gBAAgB;AAAA,IAChB,mBAAmB;AAAA,IACnB;AAAA,IACA,mBAAmB;AAAA,EACpB;AAAA,EACA,YAAY;AAAA,IACX,iBAAiB,QAAQ;AAAA,IACzB,cAAc,cAAc;AAAA,IAC5B,0BAA0B,iBAAiB;AAAA,IAC3C,kBAAkB,kBAAkB;AAAA,IACpC,2BAA2B,iBAAiB;AAAA,IAC5C,YAAY,iBAAiB;AAAA,IAC7B,0BAA0B,kBAAkB;AAAA,IAC5C,wBAAwB,gBAAgB;AAAA,EACzC;AAAA,EACA,iBAAiB;AAAA,EACjB,QAAQ,EAAE,wBAAwB,UAAU,aAAa,EAAE;AAC5D,CAAC;;;ACjOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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",
|
|
197
|
+
"debugId": "ED803CDCA797310664756E2164756E21",
|
|
193
198
|
"names": []
|
|
194
199
|
}
|